Skip to content

STELLAR

Single-cell Transcriptomic Exploration with LanceDB and Atlas Retrieval.

STELLAR turns a .h5ad or a Seurat .rds into a deployable, interactive web atlas for single-cell / single-nucleus RNA-seq data: UMAP, gene expression, differential expression, hdWGCNA modules, CellChat networks, Milo abundance, enrichment, and an optional AI chat with PubMed lookup. Storage is LanceDB (gene-major matrix) + DuckDB (metadata + derived tables); serving is FastAPI + a pre-built React SPA whose tabs are gated at runtime by your stellar.yaml.

Status — 1.0.0 / Beta

First public release. The package was carved out of a production deployment (~3 M cells × ~25 k genes) and generalised so any single-cell project can use it.

Install

pip install stellar-atlas              # core only — UMAP + expression
pip install 'stellar-atlas[de]'        # add the DE module
pip install 'stellar-atlas[full]'      # everything

What's in 1.0.0

  • Core — h5ad → gene-major LanceDB + DuckDB; pydantic-validated stellar.yaml; pre-built React SPA whose nav is gated by enabled modules at runtime.
  • Six analysis modules — all opt-in, each one ingest + routes + SPA tab + copilot tools:
  • DE — precomputed differential expression viewer.
  • hdWGCNA — co-expression modules + hub-gene network.
  • CellChat — pathway × source × target signaling.
  • Milo — neighborhood differential abundance.
  • Enrichment — live EnrichR.
  • Copilot — Claude-backed chat with composable tool surface + optional PubMed lookup.
  • Seurat .rds input support — point stellar.yaml at a .rds; STELLAR auto-converts via R + SeuratDisk (or sceasy) on first ingest, caches the result. See Recipes → From a Seurat object.
  • CLIstellar {init, ingest, serve, build-frontend, deploy, doctor}. Reference at CLI.
  • Configurable copilotmodules.copilot.model (e.g. claude-sonnet-4-7 for cost-sensitive deploys) and modules.copilot.anthropic_api_key_env (project-specific env var name) are honored.
  • Per-module Claude dispatch is wired — every module's claude_dispatch(stores) returns real callables and claude_system_prompt() contributes a module-scoped prompt fragment. The copilot is live, not just advertised.
  • 122 passing tests — smoke, M1 e2e, module-by-module ingest → routes → Arrow, doctor, copilot agent loop, Seurat IO.

Next reads

Pick the path that matches your situation: