Skip to main content
skill CX Codex GP ChatGPT official · OpenAI

scrna-seq-qc — Codex skill: what it does, how to install

Guides quality control, doublet removal, and cell annotation for scRNA-seq and snRNA-seq data. It helps Codex configure data-driven filters and clean AnnData objects.

Install into Codex · Skills CLI (Vercel) All methods and platforms ↓
npx skills add openai/plugins --skill scrna-seq-qc -a codex
Open on GitHub

What scrna-seq-qc does

This skill establishes an auditable QC workflow for single-cell and single-nucleus RNA sequencing datasets. Instead of relying on hardcoded cutoffs, it derives thresholds directly from observed metric distributions. Standard filtering focuses strictly on detected genes, total counts, and mitochondrial read fractions.

Doublet detection runs through scDblFinder per technical batch. The skill forbids skipping doublet calling or silently swapping the caller. For dimensionality reduction, it chooses between Scanpy PCA for simpler runs and scVI for multi-donor integration. Cell annotation relies on Allen Brain Atlas tools like MapMyCells, cell_type_mapper, or curated marker panels.

Large runs stay memory-efficient by keeping matrices sparse and using backed AnnData views. Without raw counts preserved in the input object, downstream provenance breaks. Outputs include a filtered .h5ad file, threshold justification plots, and a parameter manifest.

What it helps with

  • derive dataset-specific QC thresholds for scRNA-seq samples
  • identify cell doublets per batch using scDblFinder
  • decide between standard PCA and scVI batch integration
  • assign cell types using MapMyCells or canonical markers
  • generate global and subsetted UMAP visualizations

Example prompts for the agent

  • Inspect QC distributions in sample.h5ad and select cell filtering thresholds
  • Run scDblFinder on each capture channel and flag predicted doublets
  • Train an scVI model for batch integration and plot coarse UMAP embeddings

How to install scrna-seq-qc

1Skills CLI (Vercel)

npx skills add openai/plugins --skill scrna-seq-qc -a codex

2Manually: put the files in place

.agents/skills/scrna-seq-qc/SKILL.md

For all projects use ~/.agents/skills/

Step by step, with commands for each platform: Codex skills: how to install, where they live, how to call them

Questions about scrna-seq-qc

How to install scrna-seq-qc in Codex?

Run npx skills add openai/plugins --skill scrna-seq-qc in your terminal. You can also specify the target agent with npx skills add openai/plugins --skill scrna-seq-qc -a codex.

What does scrna-seq-qc do?

It guides scRNA-seq and snRNA-seq processing workflows. The skill standardizes cell filtering, doublet detection, latent space integration, and cell annotation.

Why does this skill require scDblFinder?

The workflow enforces scDblFinder for channel-aware doublet scoring. It prohibits silently falling back to alternative callers unless an environment issue is explicitly approved.

Source text

SKILL.md · MIT
---
name: scrna-seq-qc
description: Process, quality-control, annotate, and visualize single-cell or single-nucleus RNA-seq datasets across tissues and species. Use when Codex needs to build, adapt, or review a general scRNA-seq QC pipeline; choose dataset-appropriate cell-level filters from QC distributions; run required scDblFinder-based doublet and ambient-RNA filtering; annotate cells with matched references or marker-based fallbacks; or generate global and per-group UMAP visualizations for large scRNA-seq datasets.
---

# scRNA-seq QC

## Start Here

Read `references/qc-annotation-umap-heuristics.md` before picking thresholds, annotation backends, or UMAP feature-selection rules.

Confirm what inputs exist before writing code:

- An AnnData object or equivalent with raw counts preserved.
- Per-sample, per-batch, or per-channel metadata, because QC and doublet detection should respect technical partitions.
- Organism, tissue, assay type, chemistry, and whether the data are whole-cell or single-nucleus.
- Whether a matched cell atlas or label-transfer reference exists for the tissue and species.

Preserve provenance in the output: package versions, thresholds, threshold-justification plots, counts removed or flagged at each filter, annotation backend and reference, marker-gene selection heuristic, and any manual cluster exclusions.

## Workflow

1. Choose QC thresholds from the data, not from a fixed template.
   - Plot detected genes, total UMIs, mitochondrial fraction, and any tissue-specific nuisance signals overall and by batch.
   - Inspect all available QC metrics, but default filtering should use only the standard metrics: detected genes, total counts, and `percent.mt`.
   - Pick thresholds from the observed distributions and expected biology.
   - Save a plot with threshold lines and record why each threshold is appropriate for this dataset.
   - If another metric looks important enough to filter on, flag it as a dataset-specific issue, explain why, and consult the user before adding that extra filter.
   - Keep QC plots legible: do not overload a single panel with too many batches or categories when faceting, splitting, or summary views would communicate the result more clearly.

2. Run cell-level QC.
   - Remove or flag obvious low-quality barcodes using the chosen thresholds on detected genes, total counts, and `percent.mt`.
   - Use `scDblFinder` for doublet detection. Run it per batch or capture channel, and split very large batches before doublet calling.
   - Do not skip doublet calling or silently substitute another method. If `scDblFinder` cannot run in the environment, surface the blocker explicitly or get user approval before using a different caller.
   - Compute ambient-RNA style metrics and use them for filtering when the dataset and workflow support it.
   - Compute any other informative QC metrics when feasible, but do not turn those additional nonstandard metrics into hard filters without explicit user approval unless the user already asked for a stricter policy.
   - Prefer adding a `passes_QC` column instead of physically dropping cells when downstream provenance matters.

3. Build a latent space and inspect residual artifacts.
   - Decide whether `scVI` is warranted for this dataset and use case before training it.
   - Prefer a standard PCA/Scanpy workflow for smaller, simpler datasets with limited batch structure or when a conventional embedding answers the question cleanly.
   - Prefer `scVI` when integration across batches, donors, chemistries, or related datasets is important, or when the dataset is large and noisy enough that a learned latent space is likely to help.
   - Record why `scVI` or a conventional PCA workflow was chosen for this dataset.
   - Cluster and inspect low-quality, mixed-marker, or ambiguous clusters before downstream visualization.
   - Remove or flag artifact clusters only with explicit evidence, and record the rationale.

4. Annotate cells.
   - If a suitable Allen Brain Cell Atlas reference exists and the dataset is a compatible brain tissue and species, use MapMyCells or `cell_type_mapper`.
   - If no suitable Allen reference exists, use the closest matched reference for tissue, species, assay, and chemistry with an appropriate mapping tool.
   - If no reliable reference exists, annotate conservatively from canonical markers and cluster-level markers. Assign coarse labels first and leave uncertain clusters as unknown or ambiguous rather than overlabeling them.
   - Persist annotation confidence or probability fields when available, together with at least one coarse and one fine label.

5. Choose a general marker panel for global UMAP.
   - Do not rely on a perturbation-specific or brain-only marker panel.
   - Start from HVGs selected in a batch-aware way.
   - Add genes that distinguish major coarse compartments or high-confidence labels, for example top markers per coarse cluster or class.
   - Exclude nuisance-dominated genes if they swamp the embedding unless the biology requires them.
   - Document how the panel was chosen.

6. Generate UMAP visualizations.
   - For a global UMAP, use the learned latent space or the chosen informative marker panel, depending on which better matches the analytical goal and runtime constraints.
   - For per-group UMAPs, subset by a stable coarse label and use the latent representation unless there is a strong reason to rebuild on expression features.
   - Keep plotting separate from filtering so visualization choices do not mutate the core analysis object.
   - Make every plot legible. Use a reasonable number of categories per panel, prefer coarse labels on overview plots, and split or facet figures when fine labels, batches, or neighborhoods would otherwise make the figure unreadable.

7. Scale to large datasets without copying.
   - Keep matrices sparse whenever possible.
   - Avoid densifying whole matrices.
   - Avoid whole-object copies of AnnData or Seurat objects; use views, backed mode, chunked operations, and per-batch or per-group manifests instead.
   - When crossing Python and R boundaries, pass only the subset and metadata required for the step.
   - Write checkpoints after major stages so failures do not require restarting from raw ingest.

## Deliverables

When implementing a pipeline, produce an auditable output set:

- Filtered `.h5ad` or equivalent object with raw counts preserved and QC or annotation fields in metadata.
- QC summary table with input cells, cells removed or flagged by each filter, final cells, and per-batch summaries.
- Threshold-justification plots for detected genes, UMIs, mitochondrial fraction, plus any additional QC metric that was inspected; clearly separate metrics that informed review from metrics that actually drove filtering.
- Parameter manifest with thresholds, package versions, annotation backend and reference, marker-panel heuristic, and any manual exclusions.
- UMAP coordinates and plots for global and per-group views when requested, with category counts and panel layouts chosen so the figures remain legible.

## Embedded Runner

For 10x-style matrix bundles, a local runner is available:

```bash
python plugins/ngs-analysis/scripts/run_scrnaseq_post_count_qc.py --input-dir path/to/scrna_bundle
```

The input directory should contain `matrix/`, `manifest.tsv`, and `dataset_metadata.json`, unless explicit paths are supplied. Treat the runner as an auditable analysis surface: its marker-based fallback is PBMC-oriented when no matched reference is provided, so tissue-specific annotation and integration choices still require review.

The runner writes `visualizations/index.html` for portable artifact review, `summary.md` plus `provenance/analysis_status.json` for explicit completeness/blocker reporting, and auto-launches a localhost Marimo review app recorded in `notebooks/marimo_server.json`. It also writes `notebooks/scrna_qc_review.marimo.py` as a notebook backup over the generated PNG/CSV/H5AD outputs. Treat the notebook and review app as review layers, not as the source of truth; the run envelope and generated artifacts remain canonical.

## Resources

- `references/qc-annotation-umap-heuristics.md`: Threshold-selection heuristics, annotation fallback strategy, general marker-panel selection rules, and large-dataset memory practices.

© OpenAI · MIT · openai/plugins

Similar skills

All skills for Science and research →

From the same set528

The whole set →
twilio-whatsapp-send-message A reference for sending WhatsApp messages through Twilio: the 24-hour window, templates, sandbox testing and delivery errors. CX Codex GP ChatGPT 2installs twilio-messaging-webhooks Handles inbound Twilio messages and tracks delivery status callbacks across SMS, MMS, WhatsApp, and RCS. Helps agents configure secure webhook routes and reply with TwiML. CX Codex GP ChatGPT 2installs shopify-pos-ui Generates Preact components and extensions for Shopify retail point-of-sale systems. Helps developers scaffold modules through the CLI and validate code against UI targets. CX Codex GP ChatGPT 2installs plugin-eval This skill reviews local skills and plugins, explains their scores, and plans the next run. Use it for token measurements or starter benchmarks. CX Codex GP ChatGPT 2installs ngs-scrna-seq This skill takes single-cell or single-nucleus RNA-seq from FASTQ to a count matrix, then hands QC and clustering to an embedded skill. CX Codex GP ChatGPT 2installs ngs-epigenomics-peaks Routes ATAC-seq, ChIP-seq, CUT&RUN and CUT&Tag work to the right pipeline: QC, alignment, signal tracks, peak calling, consensus and differential peaks. CX Codex GP ChatGPT 2installs ngs-dna-variant-calling Dispatches WGS, WES, and targeted DNA variant analysis to specialized skills. Plans pipelines with nf-core/sarek, GATK4, DeepVariant, or bcftools. CX Codex GP ChatGPT 2installs ngs-dna-umi-panel-variants Plan or run targeted DNA panel analysis with UMIs, consensus reads and low-frequency variant calling. Useful when molecular evidence and panel-specific QC matter. CX Codex GP ChatGPT 2installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor