k-dense-ai/scientific-agent-skills/bulk-rnaseq
Claude Code and agent skill by k-dense-ai/scientific-agent-skills
- community
Checking that the SKILL.md file is still in the repository.
Prepares bulk RNA-seq FASTQ, Salmon, STAR or featureCounts output for gene-level differential expression. Covers nf-core/rnaseq and standalone quantification, biological replication, strandedness, reference provenance, validated count assembly and a PyDESeq2 handoff. Use for FASTQ-to-counts analysis, nf-core/rnaseq configuration, STAR/Salmon quantification, or building a counts matrix for DESeq2. For single-cell data use scanpy; for statistical fitting alone use pydeseq2.
Install
npx vskill@latest install k-dense-ai/scientific-agent-skills/bulk-rnaseqSKILL.md
Bulk RNA-seq
Overview
This skill prepares bulk RNA-seq reads and quantification output for a reproducible gene-level comparison. It owns sample validation, reads-to-counts recipes, and the count/metadata handoff; downstream statistical fitting and enrichment remain in their specialist skills.
"Defensible" means three things, applied throughout:
- Reproducible — pinned pipeline/tool versions, containers where possible, recorded parameters, fixed random seeds.
- Quality-gated — QC is inspected and acted on before, during, and after quantification, not skipped.
- Statistically sound — adequate replication, a design that matches the biology, counts handled correctly, and FDR-controlled testing.
The pipeline is: FastQC/trim → align/quant (STAR/Salmon) → counts → DE (pydeseq2) → enrichment (pathway-enrichment) → figures.
When to Use This Skill
Use this skill when the user wants to:
- Go from FASTQ files (or a sequencing run) to differentially expressed genes and pathways.
- Run or configure
nf-core/rnaseq, or align/quantify with STAR, Salmon, or featureCounts. - Turn Salmon/STAR/featureCounts output into a counts matrix ready for DESeq2/PyDESeq2.
- Design or sanity-check a bulk RNA-seq experiment (replicates, batch, strandedness) before committing compute.
- Scope an end-to-end RNA-seq analysis and decide which tools and skills to chain.
This is bulk RNA-seq (samples = biological specimens). For single-cell/nuclei data use scanpy; for the DE statistics alone use pydeseq2; for enrichment alone use pathway-enrichment.
The Pipeline at a Glance
Two Upstream Paths — Pick One
The reads → counts stage can be run two ways. Both produce gene-level counts, but STAR/featureCounts and Salmon/tximport do not generally give identical or interchangeable values: assignment rules, multimapping, and effective-length corrections differ. Choose one quantification route for the entire comparison.
| Use Path A — `nf-core/rnaseq` when… | Use Path B — standalone tools when… | |
|---|---|---|
| You want the field-standard, audited, citable pipeline with one command | You have a few samples and want to learn/inspect each step | |
| Many samples, or you'll scale to HPC/cloud | No Nextflow/containers available, or a constrained environment | |
| Reproducibility and a full MultiQC report matter most | You need a non-standard step the pipeline doesn't expose | |
| → Drive it through the `nextflow` skill | → Follow references/upstream-manual.md |
When unsure, prefer Path A: nf-core/rnaseq already wires together FastQC → trimming → STAR/Salmon → quantification → tximport → MultiQC with sensible, reviewed defaults, which is the most defensible option. Path B exists for transparency and constrained setups.
Both paths converge on a gene-level counts matrix. Preserve whether counts are raw or length-scaled, the transcript-to-gene mapping release, and any offsets. Length-scaled counts must not receive a second transcript-length correction.
Setup
Reviewed against nf-core/rnaseq 3.27.0, STAR 2.7.11b documentation, Salmon 2.8.0, pytximport 0.13.0 and PyDESeq2 0.5.4. The bundled Python bridge and a tiny Salmon index/quant run were executed; the full Nextflow/STAR/trimming recipes are illustrative, not an end-to-end validation. Salmon 2.x cannot read older C++ indexes: rebuild them. The bridge's length-scaled Salmon route is for full-length bulk RNA-seq; 3′ counting assays need original counts without transcript-length correction.
Record the exact versions you use (pipeline revision, tool versions, reference genome + annotation release) — they belong in the methods section and make the analysis reproducible.
Version 2.0 makes STAR strandedness explicit and rejects ambiguous samples, gene sets, transcript mappings and fractional featureCounts data that older bridge versions accepted.
Quick Start
Path A — nf-core/rnaseq (recommended)
nf-core/rnaseq runs tximport internally, so gene counts come out already merged — no bridge script needed. Use results/star_salmon/salmon.merged.gene_counts_length_scaled.tsv for DE. Samplesheet format, aligner choice, and outputs: references/upstream-nfcore.md. For engine/HPC/cloud/container detail, use the `nextflow` skill.
Path B — standalone STAR/Salmon (abbreviated)
Full recipes (FastQC, fastp/Trim Galore, STAR index+align+--quantMode GeneCounts, Salmon decoy-aware index, featureCounts, strandedness): references/upstream-manual.md.
Counts → DE → enrichment (both paths)
Stage-by-Stage Workflow
Work top to bottom. Each stage names the skill or file that owns the detail. Don't skip the design/QC stages — they are where bulk RNA-seq studies most often go wrong.
- Design & sample sheet. Confirm ≥3 biological replicates per group, identify batch/confounders, and choose the comparison(s). Build the samplesheet and validate it with
scripts/validate_samplesheet.py. Rationale and rules:references/design-and-qc.md. - Raw-read QC. FastQC per file; aggregate with MultiQC. Check per-base quality, adapter content, duplication, and over-representation. Thresholds:
references/design-and-qc.md. - Trimming. Remove adapters and low-quality tails (via
fastporTrim Galore). Re-run FastQC to confirm. Recipes:references/upstream-manual.md(Path A does this for you). - Align / quantify. STAR (genome alignment +
--quantMode GeneCounts) and/or Salmon (decoy-aware selective alignment). Determine strandedness — the wrong convention can silently discard most assigned reads. Detail:references/upstream-manual.md; pipeline params:references/upstream-nfcore.md. - Build the counts matrix. Turn quant output into a gene × sample integer matrix and a metadata template (
scripts/build_counts_matrix.py). The estimated-count and gene-ID-mapping nuances live inreferences/counts-and-handoff.md. - Differential expression → `pydeseq2` skill. Load
counts.csv+metadata.csv, set the design (e.g.~batch + condition), check full rank and residual degrees of freedom, fit, and test an explicit contrast (e.g. treated versus control) with FDR control. Inspect the PCA and p-value histogram as QC. - Enrichment → `pathway-enrichment` skill. For GSEA, rank the full gene list by the DESeq2
stat; for ORA, pass the thresholded hit list (padj < 0.05, optionally |log2FC| > 1). Match identifiers to the selected library; retain an auditable mapping and an assay-specific ORA background. - Figures → `scientific-visualization` skill. Volcano, MA, sample-distance heatmap, PCA, and enrichment dotplots, plus the MultiQC report for the QC narrative.
The counts → DE bridge (the key glue)
This is the one stage with no upstream/downstream skill, so this skill owns it. scripts/build_counts_matrix.py converts quant output into exactly what pydeseq2 expects:
- Salmon (
--from salmon): aggregates per-samplequant.sfto gene level withpytximportusingcounts_from_abundance="length_scaled_tpm"(an offset-free choice for full-length gene-level DE), needs atx2genemap. - STAR (
--from star): reads eachReadsPerGene.out.tab, selecting the column for your--strandedness(unstranded/forward/reverse). - featureCounts (
--from featurecounts): parses the combinedfeatureCountsmatrix.
It writes counts.csv (genes × samples, integers), counts_provenance.json (input hashes, import mode and sample order), and metadata_template.csv (one row per sample) for you to fill in. Salmon/RSEM counts are estimates (non-integer); they are rounded to integers because PyDESeq2 requires integer counts — see references/counts-and-handoff.md for why this is acceptable with length_scaled_tpm and how it differs from the offset-based DESeq2+tximport route. That reference also covers identifier mapping (when required by the selected enrichment library) and the exact orientation PyDESeq2 wants.
Common Pitfalls
These cause most wrong or irreproducible bulk RNA-seq results:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/bulk-rnaseq/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/k-dense-ai/scientific-agent-skills/bulk-rnaseq)