Bulk RNA-seq 是一个端到端的批量 RNA-seq 差异表达分析编排技能,覆盖从原始测序读数到富集通路与图表的完整流程。它本身是一个路由器,而非重新实现:大多数阶段已有专用技能,本技能负责按正确顺序连接它们,填补原始读数到基因水平计数矩阵之间的空白,并强制执行决定最终结果是否可信的设计与质控决策。
【用途】 当用户希望从 FASTQ 文件(或一次测序运行)得到差异表达基因与通路;运行或配置 nf-core/rnaseq,或使用 STAR、Salmon、featureCounts 进行比对/定量;将 Salmon/STAR/featureCounts 输出转换为可供 DESeq2/PyDESeq2 使用的计数矩阵;在投入计算前设计或检查批量 RNA-seq 实验(重复数、批次、链特异性);或规划端到端 RNA-seq 分析并决定串联哪些工具与技能时,可使用本技能。本技能针对批量 RNA-seq(样本为生物标本)。单细胞/单核数据应使用 scanpy;仅做差异表达统计使用 pydeseq2;仅做富集使用 pathway-enrichment。
【主要能力】 流程为:FastQC/修剪 → 比对/定量(STAR/Salmon)→ 计数 → 差异表达(pydeseq2)→ 富集(pathway-enrichment)→ 图表。
读数到计数阶段有两条上游路径,二者产生等效的基因计数,需根据情境选择其一并保持一致:
- 路径 A — nf-core/rnaseq:适合希望使用领域标准、经过审计、可引用的单命令流程;样本多或需扩展到 HPC/云;可复现性与完整 MultiQC 报告最重要。通过 nextflow 技能驱动。
- 路径 B — 独立工具:适合样本少、希望学习/检查每一步;没有 Nextflow/容器或环境受限;需要流程未暴露的非标准步骤。参考 references/upstream-manual.md。 不确定时优先路径 A。两条路径都汇聚到基因水平计数矩阵,之后工作流完全相同。
本技能拥有计数到差异表达之间的桥接阶段:scripts/build_counts_matrix.py 将定量输出转换为 pydeseq2 所需格式。支持 Salmon(--from salmon,使用 pytximport 以 counts_from_abundance="length_scaled_tpm" 聚合到基因水平,需要 tx2gene 映射)、STAR(--from star,读取 ReadsPerGene.out.tab 并按 --strandedness 选择列)、featureCounts(--from featurecounts,解析合并矩阵)。输出 counts.csv(基因×样本,整数)和 metadata_template.csv。
【使用方式】 安装本技能的粘合部分:uv pip install pytximport pandas。下游技能自行安装依赖:pydeseq2 技能安装 pydeseq2;pathway-enrichment 技能安装 gseapy gprofiler-official。路径 A 只需 Nextflow 与容器引擎;路径 B 通过 bioconda 安装并固定版本,例如:conda create -n rnaseq -c bioconda -c conda-forge fastqc fastp trim-galore "star=2.7.11b" "salmon=1.10.3" subread multiqc。需记录所用确切版本(流程修订、工具版本、参考基因组与注释版本)。
路径 A 快速开始:先用 python scripts/validate_samplesheet.py --samplesheet samplesheet.csv 验证样本表;用 nextflow run nf-core/rnaseq -r 3.26.0 -profile test,docker --outdir test_results 做冒烟测试;真实运行:nextflow run nf-core/rnaseq -r 3.26.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 做差异表达。
路径 B 快速开始(简略):fastqc 做原始读数质控;fastp 修剪接头/低质量;salmon quant 逐样本定量。完整配方见 references/upstream-manual.md。
计数到差异表达再到富集(两条路径通用):路径 B 先用 python scripts/build_counts_matrix.py --from salmon --quant-dir quant/ --tx2gene tx2gene.tsv --output-dir counts/ 组装计数矩阵与元数据模板;然后交给 pydeseq2(counts.csv + metadata.csv → 差异表达表)、pathway-enrichment(按 stat 排序做 GSEA,或按 padj+|LFC| 命中列表做 ORA)、scientific-visualization/matplotlib(火山图、MA 图、热图、PCA、富集点图)。
【分阶段工作流】 自上而下执行,不要跳过设计与质控阶段:
- 设计与样本表:确认每组≥3 个生物学重复,识别批次/混杂因素,选择比较组,构建样本表并用 scripts/validate_samplesheet.py 验证。
- 原始读数质控:逐文件 FastQC,用 MultiQC 汇总,检查每碱基质量、接头含量、重复、过表达序列。
- 修剪:用 fastp 或 Trim Galore 去除接头与低质量尾部,重跑 FastQC 确认。
- 比对/定量:STAR(基因组比对 + --quantMode GeneCounts)和/或 Salmon(转录本准映射,decoy-aware)。确定链特异性。
- 构建计数矩阵:用 scripts/build_counts_matrix.py 将定量输出转为基因×样本整数矩阵与元数据模板。
- 差异表达:交给 pydeseq2 技能,加载 counts.csv + metadata.csv,设定设计(如 ~batch + condition),拟合并以 FDR 控制检验,检查 PCA 与 p 值直方图。
- 富集:交给 pathway-enrichment 技能,GSEA 按 DESeq2 stat 排序全基因列表,ORA 传阈值化命中列表(padj < 0.05,可选 |log2FC| > 1),先映射基因 ID 到符号。
- 图表:交给 scientific-visualization 技能,绘制火山图、MA 图、样本距离热图、PCA、富集点图,并附 MultiQC 报告。
【适用场景】 从 FASTQ 到差异表达基因与通路的完整分析;配置 nf-core/rnaseq;使用 STAR/Salmon/featureCounts 比对定量;将定量输出转为 DESeq2/PyDESeq2 计数矩阵;批量 RNA-seq 实验设计检查;端到端分析规划与工具串联。
【限制与常见陷阱】
- 重复数过少:每组<3 个生物学重复几乎没有功效且离散度估计不稳定,更多重复优于更深测序。
- 批次与条件混杂:若处理组与对照组在不同日期/泳道处理,效应不可恢复;应随机化并建模已知批次。
- 链特异性错误:选错 STAR 列或 featureCounts -s/Salmon 文库类型会静默丢弃约一半读数;使用 Salmon -l A 或推断链特异性并验证分配读数比例。
- 向 DESeq2 输入 TPM/FPKM:DESeq2 需要原始(或长度缩放)计数,绝不能用 TPM/FPKM/归一化值。
- 非整数计数:PyDESeq2 要求整数,Salmon 估计值需四舍五入(桥接脚本会处理)。
- 富集时基因 ID 不匹配:DESeq2 输出常为 Ensembl ID,而 Enrichr/MSigDB 需要符号,需先映射。
- 跳过定量后质控:信任差异表达前务必查看 PCA 与样本距离热图。
- 跨样本混用比对器:所有样本须用同一工具、版本、参考与参数。
- 版本未固定:"latest" 流程/基因组使结果不可复现,需固定 -r、工具版本与基因组/注释版本。
【与其他技能的集成】 上游执行:nextflow(运行 nf-core/rnaseq,路径 A;HPC/云/容器)。参考数据/基因 ID:gget、database-lookup、biopython/pysam。差异表达:pydeseq2。富集:pathway-enrichment。图表与报告:scientific-visualization、matplotlib、seaborn;scientific-writing。相关但不同:scanpy(单细胞)、statistical-analysis(多重检验深度)。
【参考文件】 references/upstream-nfcore.md(路径 A)、references/upstream-manual.md(路径 B)、references/counts-and-handoff.md(计数交接)、references/design-and-qc.md(设计与质控)。
【资源】 nf-core/rnaseq: https://nf-co.re/rnaseq · STAR: https://github.com/alexdobin/STAR · Salmon: https://salmon.readthedocs.io · fastp: https://github.com/OpenGene/fastp · Trim Galore: https://github.com/FelixKrueger/TrimGalore · MultiQC: https://multiqc.info · pytximport: https://pytximport.complextissue.com · featureCounts (Subread): https://subread.sourceforge.net。方法背景:Love et al. 2014 (DESeq2) DOI 10.1186/s13059-014-0550-8;Soneson et al. 2015 (tximport) DOI 10.12688/f1000research.7563.2。