sc-count
Default scRNA counting route. Turn FASTQ or existing Cell Ranger, STARsolo, SimpleAF / Alevin-fry, or kb-python outputs into a downstream-ready standardized AnnData.
Files1
View on GitHubSKILL.mdSkills/singlecell/scrna/sc-count/SKILL.md
GitHub🧬 Single-Cell Counting
You are SC Count, a specialized OmicsClaw agent for converting scRNA-seq FASTQ input into standardized count matrices and a downstream-ready AnnData.
Why This Exists
- Without it: users must run Cell Ranger or STARsolo manually, then convert outputs again before starting OmicsClaw downstream skills.
- With it: one wrapper produces a standardized
h5ad, basic count QC figures, and preserves backend artifacts. - Why OmicsClaw: it narrows the public surface to mainstream 10x-oriented inputs while wiring the result directly into the existing AnnData-first single-cell workflow.
Core Capabilities
- Four counting backends: Cell Ranger, STARsolo, SimpleAF / Alevin-fry, and kb-python.
- Direct import path: can also standardize existing backend output directories without rerunning them.
- Stable downstream contract: writes
processed.h5adwithlayers['counts']and OmicsClaw input-contract metadata. - Standard output layer: barcode-rank and count-distribution figures plus machine-readable tables.
- Reproducibility layer: writes
README.md,report.md,result.json, and rerun commands.
Input Formats
| Format | Extension | Required Fields / Structure | Example |
|---|---|---|---|
| FASTQ directory | directory | one or more 10x-style FASTQs, optionally multiple samples | fastqs/ |
| FASTQ file | .fastq.gz |
one mate file plus --read2 for paired input |
PBMC_R1.fastq.gz |
| Cell Ranger output | directory | contains outs/filtered_feature_bc_matrix* |
sample_count/ |
| STARsolo output | directory | contains Solo.out/Gene/filtered/ |
starsolo_pbmc/ |
| Demo | n/a | --demo flag |
built-in PBMC example |
Data / State Requirements
| Requirement | Where it should exist | Why it matters |
|---|---|---|
| Raw FASTQs or existing count output | input path | counting requires raw reads or a backend output directory to import |
| Backend reference | --reference |
required for real backend runs |
| 10x chemistry contract | --chemistry, --whitelist |
required for STARsolo barcode/UMI parsing |
| Transcript-to-gene map | --t2g |
required for kb-python runs |
Beginner Setup Hint
If the user is missing reference assets, guide them to either:
- pass explicit local paths such as
--reference,--whitelist, or--t2g - or place files under:
resources/singlecell/references/cellranger/resources/singlecell/references/starsolo/resources/singlecell/references/simpleaf/resources/singlecell/references/kb/resources/singlecell/references/whitelists/
Download guidance:
- Cell Ranger reference: official 10x reference release pages
- STARsolo: build a STAR genome directory from a matching FASTA / GTF
- STARsolo whitelist: official 10x Cell Ranger barcode files such as
3M-february-2018.txt - kb-python: keep both the kallisto index and the matching
t2g
Workflow
- Load: detect whether the input is FASTQ or an existing count-output directory.
- Validate: enforce one chosen sample and backend-specific requirements.
- Run method: launch the selected backend when needed, or import existing outputs directly.
- Persist results: load the filtered matrix, standardize it into the OmicsClaw AnnData contract, and preserve backend artifact paths.
- Visualize / summarize: generate barcode-rank and count-distribution plots plus summary tables.
- Report: write
README.md,report.md,result.json, and the reproducibility bundle.
CLI Reference
oc run sc-count --input fastqs/ --method cellranger --reference /path/to/refdata-gex-GRCh38-2020-A --output results/
oc run sc-count --input fastqs/ --method starsolo --reference /path/to/star_index --chemistry 10xv3 --whitelist /path/to/3M-february-2018.txt --output results/
oc run sc-count --input fastqs/ --method simpleaf --reference /path/to/simpleaf_index --chemistry 10xv3 --output results/
oc run sc-count --input fastqs/ --method kb_python --reference /path/to/kallisto.idx --t2g /path/to/t2g.txt --chemistry 10xv3 --output results/
oc run sc-count --input sample_count/ --method cellranger --output results/
python skills/singlecell/scrna/sc-count/sc_count.py --demo --output /tmp/sc_count_demo
Example Queries
- "把这些单细胞 FASTQ 先跑成 count matrix"
- "用 Cell Ranger 跑 10x 数据然后直接转 h5ad"
- "用 STARsolo 产出能接 OmicsClaw 的 adata"
- "用 simpleaf 跑 10x FASTQ 然后直接转 h5ad"
- "把 kb-python 的输出接到后面的 scRNA 技能"
Algorithm / Methodology
Cell Ranger Path
- FASTQ grouping: infer one target sample from the input path.
- Run Cell Ranger: execute
cellranger countwith--nosecondaryand BAM output kept on. - Import filtered matrix: load the filtered feature-barcode matrix into AnnData.
- Standardize output: create
layers['counts'], stabilize names, and record OmicsClaw input-contract metadata.
STARsolo Path
- FASTQ grouping: infer one target sample from the input path.
- Run STARsolo: execute a 10x-oriented
CB_UMI_Simplewrapper with EmptyDrops-style cell calling. - Import filtered matrix: load
Solo.out/Gene/filtered. - Standardize output: create
layers['counts']and record the same OmicsClaw contract as the Cell Ranger path.
SimpleAF / Alevin-fry Path
- FASTQ grouping or import: infer one sample or import an existing simpleaf output.
- Run backend: execute
simpleaf quantwhen needed. - Import result: read an existing H5AD or matrix output.
- Standardize output: create the same OmicsClaw count handoff contract.
kb-python Path
- FASTQ grouping or import: infer one sample or import an existing kb output.
- Run backend: execute
kb countwhen needed. - Import result: read an existing H5AD or matrix output.
- Standardize output: create the same OmicsClaw count handoff contract.
Key parameters:
| Parameter | Default | Description |
|---|---|---|
--method |
cellranger |
choose Cell Ranger, STARsolo, SimpleAF / Alevin-fry, or kb-python |
--reference |
none | backend reference directory or index path |
--t2g |
none | transcript-to-gene map for kb-python |
--sample |
none | choose one sample from a multi-sample FASTQ directory |
--threads |
8 |
thread count for backend execution |
--chemistry |
auto |
Cell Ranger auto-detects; STARsolo requires explicit supported chemistry |
--whitelist |
none | STARsolo barcode whitelist file |
Current OmicsClaw behavior: all non-Cell Ranger methods are intentionally scoped to mainstream 10x-style droplet geometry first. Complex custom chemistries remain deferred.
Visualization Contract
- Python standard gallery: barcode-rank and count-distribution plots.
- Figure-ready exports: count summary and per-barcode tables under
figure_data/. - Gallery manifest:
figures/manifest.jsonrecords the standard counting gallery.
Output Structure
output_directory/
├── README.md
├── report.md
├── result.json
├── processed.h5ad
├── figures/
│ ├── barcode_rank.png
│ └── count_distributions.png
│ ├── count_complexity_scatter.png
│ └── manifest.json
├── tables/
│ ├── count_summary.csv
│ ├── barcode_metrics.csv
│ └── backend_summary.csv
├── figure_data/
│ ├── manifest.json
│ ├── count_summary.csv
│ └── barcode_metrics.csv
├── artifacts/
│ ├── cellranger/
│ ├── starsolo/
│ ├── simpleaf/
│ └── kb_python/
└── reproducibility/
├── analysis_notebook.ipynb
├── commands.sh
└── requirements.txt
Reproducibility Contract
- The filtered count matrix is always converted into the OmicsClaw AnnData input contract.
- Backend-specific raw outputs remain preserved under
artifacts/for methods such as CellBender or RNA-velocity preparation.
Knowledge Companions
knowledge_base/knowhows/KH-sc-count-guardrails.md: short execution guardrails for import-vs-run decisions and backend boundaries.knowledge_base/skill-guides/singlecell/sc-count.md: longer operator guide for count-method choice and downstream hand-off.
Dependencies
Required:
- Python 3
scanpy,anndata,pandas,numpy
Optional but method-specific:
cellrangerSTARsimpleafkb
Environment Management
- Python extras:
pip install -e ".[singlecell-upstream]"
- External tools that OmicsClaw does not auto-install:
cellrangerSTARsimpleafkb
Recommended user guidance:
- Do not auto-install counting backends during a normal run.
- If a backend binary is missing, prompt the user to install it explicitly in the active environment or module system.
- Reference files are also user-managed resources; OmicsClaw should guide users to
resources/singlecell/references/...or accept explicit local paths, but should not silently download large references during execution.
CLI Parameters
| Flag | Type | Default | Description | Validation |
|---|---|---|---|---|
--input |
str | None | FASTQ path or existing Cell Ranger / STARsolo output directory | Required unless --demo |
--output |
str | — | Output directory | Required |
--demo |
flag | off | Run with built-in demo data | — |
--method |
str | cellranger |
Counting backend | Choices: cellranger, starsolo, simpleaf, kb_python |
--reference |
str | None | Backend reference path (Cell Ranger transcriptome, STAR genome dir, simpleaf index, or kallisto index) | Required for real backend runs |
--t2g |
str | None | Transcript-to-gene map for kb-python runs | Required for kb_python method |
--sample |
str | None | Choose one sample from a multi-sample FASTQ directory | — |
--read2 |
str | None | Explicit mate FASTQ when --input points to one file |
— |
--threads |
int | 8 | Backend thread count | — |
--chemistry |
str | auto |
Chemistry hint; STARsolo supports 10xv2, 10xv3, 10xv4; Cell Ranger auto-detects |
— |
--whitelist |
str | None | STARsolo barcode whitelist file | Strongly recommended for STARsolo real runs |
--r-enhanced |
flag | off | Accepted for CLI consistency; no R Enhanced plots for this skill | No-op |
R Enhanced Plots
This skill has no R Enhanced plots. The --r-enhanced flag is accepted for CLI consistency but produces no additional output.
Special Requirements
Reference Files
Each backend requires its own reference assets. OmicsClaw does not download references automatically.
| Backend | --reference points to |
Also needs |
|---|---|---|
cellranger |
Cell Ranger transcriptome dir (e.g., refdata-gex-GRCh38-2020-A) |
— |
starsolo |
STAR genome directory (built from FASTA + GTF) | --whitelist (10x barcode list), --chemistry |
simpleaf |
simpleaf index directory | --chemistry |
kb_python |
kallisto index file (.idx) |
--t2g (transcript-to-gene map), --chemistry |
Place reference assets under resources/singlecell/references/<backend>/ for auto-detection, or pass explicit paths via --reference.
Direct Import (No Re-run)
If a Cell Ranger or STARsolo run has already completed, pass the existing output directory as --input and omit --reference. The wrapper imports the filtered matrix directly without re-running the backend.
# Cell Ranger — run from FASTQ
python omicsclaw.py run sc-count \
--input fastqs/ --method cellranger \
--reference /path/to/refdata-gex-GRCh38-2020-A \
--output results/
# STARsolo — run from FASTQ
python omicsclaw.py run sc-count \
--input fastqs/ --method starsolo \
--reference /path/to/star_index \
--chemistry 10xv3 \
--whitelist /path/to/3M-february-2018.txt \
--output results/
# kb-python — run from FASTQ
python omicsclaw.py run sc-count \
--input fastqs/ --method kb_python \
--reference /path/to/kallisto.idx \
--t2g /path/to/t2g.txt \
--chemistry 10xv3 \
--output results/
# Import existing Cell Ranger output
python omicsclaw.py run sc-count \
--input sample_count/ --method cellranger \
--output results/
Workflow Position
- Optional upstream step:
sc-fastq-qcfor read-level quality assessment before counting - Usual next step:
sc-qcfor quality assessment, orsc-multi-countif merging multiple samples