Skip to main content

Opinionated, report-first CLI for single-cell and multi-omics analysis. Sane defaults baked in, defensible deliverables out.

Project description

scellrun

CI License: MIT

scellrun lowers the bar to running a defensible single-cell analysis. One command, a publication-quality report. You don't need to learn scanpy first.

# 1. one-time: a clean Python environment so scellrun's deps don't collide with anything else on your machine
conda create -n scellrun python=3.11 -y
conda activate scellrun

# 2. install
pip install scellrun

# 3. run
scellrun scrna qc data.h5ad     # → HTML report you can open in a browser

Don't have a .h5ad? Cellranger output works directly:

scellrun scrna convert path/to/cellranger_outs -o data.h5ad
scellrun scrna qc data.h5ad

Want a Chinese report? Add --lang zh.

Status: v0.1.0, early alpha. APIs will change without warning. Don't pin against a tag yet.

Who this is for

  • A clinician or rotating student looking at scRNA-seq data for the first time
  • A postdoc on a deadline who doesn't want to write QC boilerplate
  • A bioinformatics core that needs every project to look the same in a report
  • An LLM coding agent that should reach for a real tool instead of re-deriving thresholds

If you already have your own pipeline, you don't need scellrun. If you don't, or you're tired of re-litigating the same decisions every project, this is for you.

Why this exists

Tools like scanpy, pyDESeq2, decoupler, SCENIC and nf-core are excellent and intentionally unopinionated. Every new project re-litigates the same decisions:

  • Which mt% threshold? Doublet filter before or after batch correction?
  • The composite score correlates with disease — Spearman ρ on each of 18 clinical features, or one well-chosen dichotomy?
  • What does the QC report actually need to look like for a reviewer to stop asking?

scellrun answers these once, in code, by encoding the working practice of a clinician + bioinformatics team. Defaults aren't "neutral" — they're a real position, made for real reasons, with the rationale rendered into every report.

You can override anything. But if you don't override, you get a defensible analysis on day one.

Where this fits

Tool What it is
Anthropic scientific skills Prompt scaffolds that teach an LLM how to call scanpy etc.
Bioconda recipes Packaging
nf-core pipelines General-purpose, infrastructure-heavy, vendor-neutral workflows
scellrun An opinionated, report-first CLI optimized for low barrier to entry

v0.1 scope

  • scellrun scrna qc <h5ad> — single-cell QC (mt%, ribo%, hb%, n_genes, doublets) with defensible thresholds. Outputs an HTML report with rationale text, a per-cell CSV, and an annotated qc.h5ad ready for the v0.2 integration step. Cells are flagged (obs.scellrun_qc_pass), never silently dropped.

That's it. See ROADMAP.md for v0.2-v0.5 (integrate, markers, annotate, multi-stage report) and the planned scellrun run --steps ... pipeline mode.

Install

For users — clean conda env (recommended)

conda create -n scellrun python=3.11 -y
conda activate scellrun
pip install scellrun

If you don't have conda, miniconda takes about 2 minutes to install. Or use uv for a faster venv:

uv venv .scellrun-env && source .scellrun-env/bin/activate
uv pip install scellrun

Either way, scellrun ends up in its own environment — your other Python projects (an old scanpy, Seurat-via-rpy2, etc.) won't be touched.

For contributors — editable from source

git clone https://github.com/drstrangerujn/scellrun.git
cd scellrun
conda create -n scellrun-dev python=3.11 -y && conda activate scellrun-dev
pip install -e ".[dev]"
pytest -q          # 25 tests should pass

Profiles

Different tissue domains have different defaults. v0.1 ships two profiles:

  • default — fresh-tissue 10x v3 chemistry, joint-tissue-aware mt% ceiling
  • joint-disease — tighter hb% for avascular cartilage; ships the Fan 2024 chondrocyte 11-subtype panel + 15-group broad celltype panel for v0.4 annotation
scellrun profiles list
scellrun profiles show joint-disease   # prints thresholds + panels

Adding a profile = one Python file under src/scellrun/profiles/. If your community has working practice, contribute a profile.

For LLM agents

skills/scellrun/SKILL.md is a portable instruction document that teaches Claude Code, Hermes, Codex, or any markdown-aware agent harness when and how to invoke scellrun. Install it by symlinking into your agent's skills directory — see skills/README.md for one-liner install commands per agent.

License

MIT — see LICENSE.

Acknowledgements

Defaults reflect the working practice of a clinician + bioinformatics team that has shipped these analyses for the OARSI / MSK community. The R "AIO" pipeline that prefigured scellrun's design is documented in ROADMAP.md.

Built with assistance from Claude (Anthropic).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scellrun-0.3.0.tar.gz (41.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scellrun-0.3.0-py3-none-any.whl (40.5 kB view details)

Uploaded Python 3

File details

Details for the file scellrun-0.3.0.tar.gz.

File metadata

  • Download URL: scellrun-0.3.0.tar.gz
  • Upload date:
  • Size: 41.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for scellrun-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8382370699044f457a9b057aa7e9995ca1fd835444b55640059f19dbf597cbba
MD5 3fe89c683f21a18aaaf7ac3812bf7fd7
BLAKE2b-256 c084f3a703df8d7f3322266bbdc94af7e0f5bbe33b0f89ab528fd045644ac1d6

See more details on using hashes here.

File details

Details for the file scellrun-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: scellrun-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 40.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for scellrun-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0d0e1c960ae6fb355f2efe913609f4bb8f0ef2458a9d002b340ea37f58b05646
MD5 646d3a3810a9e54861e6746a6d85764f
BLAKE2b-256 772354500d892e945743a5b3c3b3ed20215f7ec09e09c4b32af94d1bce0cde2c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page