SRAgent mines SRA into a 502-million-cell atlas, lifting perturbation classification 23.9%

2026-09-18

SRAgent mines public 10x SRA data into scBaseCount (502M cells, 27 species). State embeddings trained on it beat a CELLxGENE twin by 23.9% on perturbation classification.

What problem this solves

Public single-cell atlases such as CZ CELLxGENE (123 million cells) and the Human Cell Atlas (65 million) are assembled from contributed, pre-processed datasets. Expert labels stay, but most of the NIH Sequence Read Archive sits unused: metadata is messy, and turning raw reads into count matrices is expensive. Mixing studies also imports pipeline choices as if they were biology.

Virtual cell models need scale, species coverage, and one processing recipe. Manual SRA curation does not get there.

Method

Arc Institute split the work into two pipelines.

SRAgent is a hierarchy of ReAct agents built with LangGraph. A single agent could not handle the tool load, so a supervisor farms work to specialists that call Entrez (eSearch, eSummary, eFetch, eLink), scrape NCBI pages, query SRA BigQuery, and map free-text tissue to Uberon and disease to MONDO. Only each specialist's final answer goes back to the supervisor, which keeps the token budget down. Jobs run on GCP Cloud Run, about 80 seconds per experiment, peaking at 300 datasets per hour.

Identified 10x libraries go to scRecounter, a Nextflow pipeline that aligns with STARsolo. The first million reads are tested against barcode whitelists for 5', 3' v2, 3' v3, and Multiome GEX; libraries under 30% valid barcodes are dropped. 3' v1 is not covered. Each SRX yields 15 count matrices: exon-only, exon plus intron, CellRanger-like hybrids, Velocyto spliced/unspliced, plus unique, uniform, and EM multi-mapping. Single-cell and single-nucleus data, coding and non-coding genes, and RNA velocity all come from one alignment.

Cell types are not expert-curated. Human cells are embedded with State and classified by tissue-specific logistic models trained on Tabula Sapiens, using SRAgent tissue labels. After filters, about 166 million human cells received 143 predicted types.

Results

SRAgent processed 208,939 SRX records and tagged 105,343 as 10x. Adding 6,059 extra CELLxGENE samples brings the target list to 111,402; 61,381 have been reprocessed. The repository holds over 502 million cells across 27 organisms and 75 tissues, averaging 6,052 UMIs per cell, against about 123 million in CELLxGENE and 65 million in HCA. The paper estimates 13.2×10^12 tokens at about $17,000, versus 3,482 human hours at one dataset per minute. Screening with the agent before barcode detection is estimated to save more than 0.5 million CPU hours. STARsolo mapped 13.8×10^12 reads.

The catalog is also a census of the field: 3' libraries are 77% of cells; human 60%, mouse 32%; cancers and oncology 30.7% of human plus mouse cells; infectious-disease cells jumped from 7.7% in 2020 to 33.7% in 2021, then fell to 5.9% in 2022. Depth per cell has barely moved; extra sequencer throughput went into more cells.

After uniform processing, technical factors (chemistry, cell versus nucleus, sample ID) have silhouette scores at or below tissue type, and lower relative to tissue than in un-harmonized CELLxGENE. On four shared studies with both cell and nucleus data, tissue separates better on the first two principal components. PanglaoDB markers also reappear among differentially expressed genes of the predicted types, at rates competitive with Tabula Sapiens.

The harder test is a 100M-parameter State Embedding model (108M trainable; 8-layer transformer, dimension 1024). Statebsc trained on 214 million filtered human cells from scBaseCount; Statecxg on 134 million CELLxGENE cells. Both used 19,790 protein-coding genes and 100,000 optimizer steps, with Tabula Sapiens held out. Cell-type probes on Tabula Sapiens sit near 90% for both. Finer phenotypes pull apart:

TaskStatebsc vs Statecxg
COVID infection status+2.24% accuracy
CRISPRi perturbation group (4 cell lines, 2,024 essential genes)+23.9% accuracy
Reconstructed DEGs+10.2% AUROC, +17.2% AUPRC

Why it matters

This is pretraining corpus for virtual cell models, not another browse-and-click atlas. Matrices, SRAgent, and scRecounter are public. For anyone training a single-cell foundation model, swapping CELLxGENE for this dump shows up on fine phenotypes (perturbation, infection). Genome-wide intronic counts also make RNA velocity tractable at atlas scale.

The agent loop is the piece that travels: $17,000 to scan 200k experiments is cheap enough to keep running as SRA grows.

The gain sits on subtle states. Coarse cell type is already 90% either way. Routine clustering and marker work will not feel a 23.9% jump.

Limitations

The authors flag several gaps. Cell-type labels may still need human or community correction. Perturbation and donor fields are missing from SRA metadata. Disease tags come from study abstracts and can land on healthy controls. The current release is 10x on Illumina only; other chemistries, multi-ome, spatial assays, and protected datasets are out.

A few results sit on thinner ice. Only 61,381 of 111,402 target SRX records are in, so "largest" is a moving snapshot. Leukocytes dominate almost every tissue, a sampling bias the atlas inherits. SRAgent could not reliably name 10x chemistry; scRecounter's barcode trial did that job. Many experiments do not map to a single Uberon term. Organism errors include xenografts, because SRA allows one organism value. The classifier assumes one tissue per SRX.

The +23.9% perturbation number has no absolute accuracy next to it, and no ablation that splits "more cells" from "cleaner processing." Both models trained for 100,000 steps, so the 214M set sees each cell less often than the 134M set. Which side that favors is not obvious.

Terms

Source

What people are saying

All paper explainers