PIASO is a Python and Rust toolkit for single-cell omics — scRNA-seq, scATAC-seq and spatial transcriptomics — covering the analysis from raw counts through to the figures in a paper. Performance-critical routines are implemented in Rust; pre-compiled wheels ship for Linux, macOS (Intel and Apple Silicon) and Windows, so there is nothing to build.
import piaso, cosg
piaso.tl.infog(adata, n_top_genes=3000) # normalize + select
piaso.tl.runSVD(adata, layer="infog", n_components=50, key_added="X_svd")
piaso.tl.neighbors(adata, use_rep="X_svd"); piaso.tl.leiden(adata)
piaso.tl.umap(adata, use_rep="X_svd")
cosg.cosg(adata, groupby="leiden") # marker genes
piaso.pl.embedding(adata, color="leiden")That whole workflow runs on a plain pip install piaso-tools — no scanpy
required.
- You have a single-cell dataset and want an analysis, not a toolchain. Reading, QC, normalization, dimensionality reduction, clustering, marker genes, annotation and plotting are one package with one set of conventions.
- Your data outgrew memory. The same function calls run on an
AnnDatain RAM or stream from a cytome file on disk, where peak memory is set by the batch size instead of the cell count. Validated to several million cells. - You care what the figure looks like. The plotting suite and
piaso.settingsare built for publication figures rather than for quick looks. - You work with a coding agent. The API is published in an agent-readable form (see below), so the agent works from the current signatures.
If you only need one method, the pieces are usable on their own — cosg for
markers, cytome for storage.
PIASO is the analysis layer of a small set of packages that fit together, and each is useful alone:
| PIASO | analysis: normalization, dimensionality reduction, clustering, annotation, plotting |
| cytome | a single-file format for single-cell multi-omics; what PIASO streams from |
| COSG | fast, accurate marker gene and marker region identification |
| PIASO-data | genome references and tutorial datasets, fetched and cached on demand |
| PIASO-for-agents | the ecosystem in a form coding agents can read |
| LARIS · Emergene | spatial ligand–receptor analysis · per-cell differential analysis across conditions |
piaso.org — tutorials, API reference and release notes.
Install from PyPI (stable release):
pip install piaso-toolsThis also installs cytome, the on-disk
dataset format PIASO reads and writes. Nothing extra to install to work with
.cytome files.
Install from bioconda (stable release):
conda install -c conda-forge -c bioconda piasoInstall from GitHub (latest development version):
pip install git+https://github.com/genecell/PIASO.gitPIASO-for-agents makes the
PIASO ecosystem available to coding agents from one canonical knowledge base,
generating Claude skills, Cursor rules, AGENTS.md, llms.txt, and an MCP
server. Useful if you work in Claude Code, Cursor, Copilot, Codex, Windsurf,
Cline, or Aider and want the agent to know the current API rather than guess it.
Any model with web access can be pointed straight at:
https://piaso.org/llms.txt
https://piaso.org/llms-full.txt
Issues and pull requests are welcome at
github.com/genecell/PIASO. Bug
reports are most useful with the output of piaso.__version__ and a minimal
example.
If PIASO is useful for your research, please consider citing Wu, S.J., Dai, M. et al. Pyramidal neurons proportionately alter cortical interneuron subtypes. Nature (2026). https://doi.org/10.1038/s41586-025-09996-8
Min Dai dai@broadinstitute.org