mcpField
B
bulk-rnaseq

bulk-rnaseq

github.com/k-dense-ai数据与数据库55.1k1.4k 次安装2 天前更新
代码仓库

关于 bulk-rnaseq

Bulk RNA-seq 是面向研究人员的流程技能,用于从批量测序数据准备可复现的基因水平比较。它涵盖样本验证、质量检查、定量流程,以及向下游差异表达和富集分析移交计数矩阵与元数据。

主要功能

  1. 01验证样本表和实验设计
  2. 02指导质控、剪切与定量
  3. 03支持 nf-core 和独立流程
  4. 04构建基因水平计数矩阵及元数据
  5. 05保留来源信息和分析参数

适用场景

  1. 01规划重复数和批次校正比较
  2. 02准备 FASTQ 数据进行基因分析
  3. 03将 Salmon 或 STAR 输出转换为计数
  4. 04向差异表达及富集技能移交结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill bulk-rnaseq

安装后在 Claude Code 中输入/bulk-rnaseq确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
counts-and-handoff.md
design-and-qc.md
upstream-manual.md
upstream-nfcore.md
scripts/
_tabular.py
build_counts_matrix.py
validate_samplesheet.py

详细介绍

Bulk RNA-seq

概述

本技能为可复现的基因水平比较准备 bulk RNA-seq 读段和定量输出。它负责样本验证、reads-to-counts 配方,以及计数/元数据交接;下游的统计拟合与富集仍由各自的专门技能负责。

“站得住脚”意味着三点,并贯穿始终:

  • 可复现 — 固定流水线/工具版本,尽可能使用容器,记录参数,固定随机种子。
  • 质量把关 — 在定量之前、期间和之后检查 QC 并采取行动,而不是跳过。
  • 统计上可靠 — 足够的重复、与生物学问题匹配的设计、正确处理计数,以及 FDR 控制的检验。

流水线为:FastQC/trim → align/quant (STAR/Salmon) → counts → DE (pydeseq2) → enrichment (pathway-enrichment) → figures。

何时使用本技能

在用户希望执行以下操作时使用本技能:

  • 从 FASTQ 文件(或一次测序运行)得到差异表达基因和通路。
  • 运行或配置 nf-core/rnaseq,或用 STAR、Salmon 或 featureCounts 进行比对/定量。
  • 将 Salmon/STAR/featureCounts 输出转换为可供 DESeq2/PyDESeq2 使用的计数矩阵。
  • 在投入计算资源之前,设计或检查 bulk RNA-seq 实验(重复、批次、链特异性)。
  • 界定端到端 RNA-seq 分析的范围,并决定串联哪些工具和技能。

这是 bulk RNA-seq(样本 = 生物标本)。对于单细胞/细胞核数据,使用 scanpy;仅做 DE 统计时使用 pydeseq2;仅做富集时使用 pathway-enrichment。

流水线一览

flowchart TD
    fastq["Raw FASTQ + samplesheet"] --> qc["FastQC + MultiQC"]
    qc --> trim["Trim: fastp / Trim Galore"]
    trim --> align["Align + quant: STAR and/or Salmon"]
    align --> counts["Gene-level counts matrix"]
    counts --> de["Differential expression"]
    de --> enrich["Pathway / GSEA enrichment"]
    de --> fig["Figures"]
    enrich --> fig
    nfcore["nf-core/rnaseq via nextflow skill"] -.->|"path A"| align
    manual["Standalone recipes (this skill)"] -.->|"path B"| align
    bridge["build_counts_matrix.py (this skill)"] -.-> counts
    pydeseq2skill["pydeseq2 skill"] -.-> de
    pwskill["pathway-enrichment skill"] -.-> enrich
    vizskill["scientific-visualization skill"] -.-> fig

两条上游路径 — 选择一条

reads → counts 阶段可以用两种方式运行。两者都会产生基因水平计数, 但 STAR/featureCounts 与 Salmon/tximport 通常不会给出完全相同或 可互换的值:分配规则、多重比对和有效长度校正各不相同。整个比较中应 选择一种定量路线。

在以下情况使用 路径 A — nf-core/rnaseq…在以下情况使用 路径 B — 独立工具…
你想要领域标准、经过审计、可引用的流水线,并且只需一条命令你只有少量样本,想学习/检查每一步
样本很多,或者你要扩展到 HPC/云没有可用的 Nextflow/容器,或环境受限
可复现性和完整的 MultiQC 报告最重要你需要流水线未暴露的非标准步骤
→ 通过 nextflow 技能驱动它→ 遵循 references/upstream-manual.md

拿不准时,优先选择 路径 A:nf-core/rnaseq 已经用合理且经过审查的默认值把 FastQC → trimming → STAR/Salmon → quantification → tximport → MultiQC 串联起来,这是最站得住脚的选择。路径 B 的存在是为了透明性和受限环境。

两条路径最终都会汇聚到 基因水平计数矩阵。保留计数是原始计数还是 长度缩放计数、转录本到基因的映射版本,以及任何偏移量。 长度缩放计数不得再次接受转录本长度校正。

安装

# This skill's glue (bridge + handoffs) — Python
uv pip install "pytximport==0.13.0" pandas numpy

# Downstream skills install their own deps:
#   pydeseq2 skill           -> uv pip install pydeseq2
#   pathway-enrichment skill -> uv pip install gseapy gprofiler-official

# Path A (nf-core): only Nextflow + a container engine are needed — see the `nextflow` skill.

# Path B (standalone tools): install via bioconda. Pin versions for reproducibility.
conda create -n rnaseq -c conda-forge -c bioconda --strict-channel-priority \
  fastqc fastp trim-galore "star=2.7.11b" "salmon=2.8.0" subread multiqc

已对照 nf-core/rnaseq 3.27.0、STAR 2.7.11b 文档、Salmon 2.8.0、 pytximport 0.13.0 和 PyDESeq2 0.5.4 审查。已执行捆绑的 Python 桥接以及一次 小型 Salmon 索引/定量运行;完整的 Nextflow/STAR/trimming 配方是示例性的, 并非端到端验证。Salmon 2.x 无法读取较旧的 C++ 索引:请重建它们。 桥接的长度缩放 Salmon 路线适用于全长 bulk RNA-seq;3′ 计数 测定需要原始计数,且不进行转录本长度校正。

记录你使用的确切版本(流水线修订版、工具版本、参考基因组 + 注释版本)——它们属于方法部分,并使分析可复现。

版本 2.0 明确了 STAR 链特异性,并拒绝旧版桥接所接受的 模糊样本、基因集、转录本映射和分数型 featureCounts 数据。

快速开始

路径 A — nf-core/rnaseq(推荐)
# 0. Validate the samplesheet first (catches the most common failures early)
python scripts/validate_samplesheet.py --samplesheet samplesheet.csv --nfcore

# 1. Smoke-test the environment with tiny bundled data
nextflow run nf-core/rnaseq -r 3.27.0 -profile test,docker --outdir test_results

# 2. Real run: pin the revision, pick an aligner, pass a samplesheet + reference
nextflow run nf-core/rnaseq -r 3.27.0 \
  -profile docker \
  --input samplesheet.csv \
  --genome GRCh38 \
  --aligner star_salmon \
  --outdir results \
  -resume

nf-core/rnaseq 内部运行 tximport,因此基因计数输出时已经合并——无需桥接脚本。使用 results/star_salmon/salmon.merged.gene_counts_length_scaled.tsv 进行 DE。样本表格式、比对器选择及输出:references/upstream-nfcore.md。关于引擎/HPC/云/容器细节,请使用 nextflow 技能。

路径 B — 独立 STAR/Salmon(简略)
mkdir -p qc/
fastqc -o qc/ reads/*.fastq.gz                      # 1. QC raw reads
fastp -i s1_R1.fq.gz -I s1_R2.fq.gz \
      -o s1_R1.trim.fq.gz -O s1_R2.trim.fq.gz \
      --thread 4 -j s1.fastp.json                   # 2. Trim adapters/low-quality
salmon quant -i salmon_index -l A \
      -1 s1_R1.trim.fq.gz -2 s1_R2.trim.fq.gz \
      --gcBias --seqBias -p 8 -o quant/s1            # 3. Quantify (per sample)

完整配方(FastQC、fastp/Trim Galore、STAR 索引+比对+--quantMode GeneCounts、Salmon 诱饵感知索引、featureCounts、链特异性):references/upstream-manual.md。

计数 → DE → 富集(两条路径)
# Path B only: assemble a gene x sample counts matrix + metadata template for PyDESeq2
python scripts/build_counts_matrix.py --from salmon \
  --quant-dir quant/ --tx2gene tx2gene.tsv --output-dir counts/

# Then hand off (see the dedicated skills):
#   pydeseq2:           counts.csv + metadata.csv -> DE table (log2FC, padj, stat)
#   pathway-enrichment: rank by `stat` (GSEA) or padj+|LFC| hit list (ORA)
#   scientific-visualization / matplotlib: volcano, MA, heatmap, PCA, enrichment dotplot

逐阶段工作流

从上到下依次操作。每个阶段都标明了负责细节的技能或文件。不要跳过设计/QC 阶段——它们正是 bulk RNA-seq 研究最常出错的地方。

  1. 设计与样本表。 确认每组 ≥3 个生物学重复,识别批次/混杂因素,并选择比较组。构建样本表并用 scripts/validate_samplesheet.py 验证。原理与规则:references/design-and-qc.md。
  2. 原始读段 QC。 对每个文件运行 FastQC;用 MultiQC 汇总。检查逐碱基质量、接头含量、重复率及过度代表性序列。阈值:references/design-and-qc.md。
  3. 修剪。 去除接头和低质量尾部(通过 fastp 或 Trim Galore)。重新运行 FastQC 确认。配方:references/upstream-manual.md(路径 A 会自动为你完成此步骤)。
  4. 比对/定量。 STAR(基因组比对 + --quantMode GeneCounts)和/或 Salmon(诱饵感知选择性比对)。确定链特异性——错误的约定可能会静默丢弃大部分已分配的读段。详情:references/upstream-manual.md;流程参数:references/upstream-nfcore.md。
  5. 构建计数矩阵。 将定量输出转换为基因 × 样本整数矩阵和元数据模板(scripts/build_counts_matrix.py)。估计计数和基因 ID 映射的细微之处详见 references/counts-and-handoff.md。
  6. 差异表达 → pydeseq2 技能。 加载 counts.csv + metadata.csv,设置设计公式(例如 ~batch + condition),检查满秩和残差自由度,拟合,并测试明确的对比(例如处理组 vs 对照组),同时控制 FDR。检查 PCA 和 p 值直方图作为 QC。
  7. 富集 → pathway-enrichment 技能。 对于 GSEA,按 DESeq2 stat 对完整基因列表排序;对于 ORA,传入阈值化的命中列表(padj < 0.05,可选 |log2FC| > 1)。将标识符匹配到所选库;保留可审计的映射和特定检测的 ORA 背景。
  8. 图表 → scientific-visualization 技能。 火山图、MA 图、样本距离热图、PCA 和富集点图,以及用于 QC 叙述的 MultiQC 报告。

计数 → DE 桥接(关键衔接环节)

这是唯一一个没有上游/下游技能的阶段,因此由本技能负责。scripts/build_counts_matrix.py 将定量输出转换为 pydeseq2 所需的格式:

  • Salmon(--from salmon):使用 pytximport 将每个样本的 quant.sf 聚合到基因水平,采用 counts_from_abundance="length_scaled_tpm"(适用于全长基因水平 DE 的无偏移量选择),需要 tx2gene 映射表。
  • STAR(--from star):读取每个 ReadsPerGene.out.tab,根据 --strandedness(unstranded/forward/reverse)选择对应列。
  • featureCounts(--from featurecounts):解析合并后的 featureCounts 矩阵。

它会写入 count.csv(基因 × 样本,整数)、counts_provenance.json(输入哈希、导入模式和样本顺序)以及 metadata_template.csv(每样本一行)供你填写。Salmon/RSEM 计数是估算值(非整数);它们会被四舍五入为整数,因为 PyDESeq2 要求整数计数 —— 关于为何在 length_scaled_tpm 下这是可接受的,以及它与基于偏移量的 DESeq2+tximport 路线有何不同,请参见 references/counts-and-handoff.md。该参考文档还涵盖了标识符映射(当所选富集库需要时)以及 PyDESeq2 所需的确切方向。

常见陷阱

以下是导致大多数错误或不可复现的 bulk RNA-seq 结果的原因:

  1. 重复数太少。 根据预期变异性和效应量来规划生物学重复;每组三个只是起点,并不保证统计效力。技术泳道不会增加生物学样本量。
  2. 批次与条件混杂。 如果每个处理样本与对照样本在不同的日期/泳道处理,效应将无法恢复。请随机化,并对已知批次建模(~batch + condition)。参见 references/design-and-qc.md。
  3. 链特异性方向错误。 选择错误的 STAR 列或 featureCounts -s/Salmon 文库类型可能会丢弃大部分已比对读段;不存在普遍 50% 的损失。使用 Salmon -l A 或推断链特异性,并验证已比对读段的比例。
  4. 将 TPM/FPKM 输入 DESeq2。 DESeq2 需要原始(或长度缩放)计数,绝不能用 TPM/FPKM/归一化值。桥接脚本会处理这一点。
  5. 非整数计数。 桥接脚本仅对长度缩放的 Salmon 估算值进行四舍五入;它会拒绝 featureCounts 的小数值而不是截断它们。其 Salmon 路线适用于全长测定,而非 3′ 标签计数。
  6. 基因 ID 与富集分析不匹配。 将基因 ID 与所选生物体和基因集版本匹配。许多 GMT 库使用基因符号;g:Profiler 可以直接接受 Ensembl ID。不要静默折叠模糊映射。
  7. 跳过定量后 QC。 在信任 DE 之前,务必查看 PCA 和样本距离热图 —— 它们能揭示标签互换、离群值和隐藏批次。
  8. 跨样本混用比对工具。 使用相同的工具、版本、参考和参数对每个样本进行定量。
  9. 未固定版本。 "latest" 流程/基因组会导致结果不可复现;请固定 -r、工具版本以及基因组/注释版本。

与其他技能的集成

  • 上游执行: nextflow(运行 nf-core/rnaseq,路径 A;HPC/云/容器)。
  • 参考数据 / 基因 ID: gget(gget ref 获取基因组+GTF,gget info/gget search 用于 ID 映射),database-lookup(Ensembl/NCBI),biopython/pysam(FASTA/BAM 处理)。
  • 差异表达: pydeseq2(本技能将计数交给的 DE 引擎)。
  • 富集: pathway-enrichment(ORA + GSEA;其 scripts/run_enrichment.py 直接读取 DESeq2 结果 CSV)。
  • 图表与报告: scientific-visualization、matplotlib、seaborn;scientific-writing 用于方法/结果叙述。
  • 相关但不同: scanpy(单细胞),statistical-analysis(多重检验深度)。

参考文件

当你需要深入了解时,请阅读相关文件——每个文件都是自包含的:

  • references/upstream-nfcore.md — 路径 A:samplesheet 格式、--aligner/--pseudo_aligner 选择、关键参数、salmon.merged.gene_counts*.tsv 输出、MultiQC,以及要交给 pydeseq2 的内容。
  • references/upstream-manual.md — 路径 B:FastQC、fastp/Trim Galore、STAR 基因组索引 + 比对 + --quantMode GeneCounts、Salmon decoy-aware 索引 + quant、featureCounts,以及如何确定链特异性。
  • references/counts-and-handoff.md — 将定量输出转换为可供 PyDESeq2 使用的 counts.csv/metadata.csv(pytximport、STAR 列选择、featureCounts)、整数计数/估计计数的细微差别、Ensembl→symbol 映射,以及 DE→富集 rank/命中列表配方。
  • references/design-and-qc.md — 实验设计(重复、批次、混杂、设计公式)和 QC 指标解读(比对率、重复、rRNA、复杂度、PCA/离群值)——可辩护流程的骨干。

资源

引用 Scientific Agent Skills

本 skill 是 K-Dense 的 Scientific Agent Skills 的一部分。如果它对一篇 手稿、报告、演示或代码发布有实质性贡献,请将该论文添加到参考文献或 软件部分,并告知用户你已这样做:

Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065

始终引用当前版本。DOI 和 https://arxiv.org/abs/2609.00065 会解析到 最新 arXiv 版本,因此绝不要附加诸如 v1 之类的版本后缀。当网络访问 可用时,在撰写参考文献前获取 https://arxiv.org/abs/2609.00065(或 http://export.arxiv.org/api/query?id_list=2609.00065),并从该记录中获取 作者列表、年份和版本。如果该记录列出了期刊参考文献 或出版商 DOI,请改为引用已发表版本。

评论

支持 Markdown