端到端 bulk RNA-seq 编排器:从原始 FASTQ 经质控修剪、比对定量生成基因计数矩阵,再衔接差异表达、通路富集与出版级绘图。支持 nf-core 与 STAR/Salmon 两条路径,含实验设计与 QC 门控;单细胞数据请改用 scanpy。
批量 RNA-seq
概述
此技能编排一个完整、可辩护的批量 RNA-seq 差异表达研究,从原始测序 reads 到富集通路和图表。它是一个路由器,而不是重新实现:大多数阶段已经有了专门的技能,此技能以正确的顺序连接它们,填补一个真正的空白(原始 reads → 基因水平计数矩阵),并强制执行决定最终结果可信度的设计和质控决策。
"可辩护"意味着三件事,贯穿始终:
- 可重复 — 固定的管道/工具版本,尽可能使用容器,记录参数,固定随机种子。
- 有质控门控 — 质控在定量之前、期间和之后都被检查和采取行动,而不是跳过。
- 统计合理 — 充分的重复、与生物学匹配的设计、正确处理计数,以及 FDR 控制的检验。
管道是:FastQC/修剪 → 比对/定量 (STAR/Salmon) → 计数 → DE (pydeseq2) → 富集 (pathway-enrichment) → 图表。
何时使用此技能
当用户想要以下操作时使用此技能:
- 从 FASTQ 文件(或测序运行)到差异表达基因和通路。
- 运行或配置
nf-core/rnaseq,或使用 STAR、Salmon 或 featureCounts 进行比对/定量。 - 将 Salmon/STAR/featureCounts 输出转换为可供 DESeq2/PyDESeq2 使用的计数矩阵。
- 在提交计算之前,设计或检查批量 RNA-seq 实验(重复、批次、链方向性)。
- 规划端到端 RNA-seq 分析并决定链接哪些工具和技能。
这是批量 RNA-seq(样本 = 生物样本)。对于单细胞/细胞核数据使用 scanpy;仅用于 DE 统计使用 pydeseq2;仅用于富集使用 pathway-enrichment。
管道概览
flowchart TD
fastq["原始 FASTQ + 样本表"] --> qc["FastQC + MultiQC"]
qc --> trim["修剪:fastp / Trim Galore"]
trim --> align["比对 + 定量:STAR 和/或 Salmon"]
align --> counts["基因水平计数矩阵"]
counts --> de["差异表达"]
de --> enrich["通路 / GSEA 富集"]
de --> fig["图表"]
enrich --> fig
nfcore["通过 nextflow 技能的 nf-core/rnaseq"] -.->|"路径 A"| align
manual["独立配方(本技能)"] -.->|"路径 B"| align
bridge["build_counts_matrix.py(本技能)"] -.-> counts
pydeseq2skill["pydeseq2 技能"] -.-> de
pwskill["pathway-enrichment 技能"] -.-> enrich
vizskill["scientific-visualization 技能"] -.-> fig两条上游路径 — 选择一条
reads → 计数阶段可以通过两种方式运行。它们产生等效的基因计数;根据上下文选择,然后保持在该路径上。
| 当…时使用路径 A — `nf-core/rnaseq` | 当…时使用路径 B — 独立工具 |
|------------------------------------------|----------------------------------|
| 您想要一个领域标准的、经过审计的、可引用的管道,一键运行 | 您有几个样本想要学习/检查每个步骤 |
| 多个样本,或将扩展到 HPC/云 | 没有 Nextflow/容器可用,或环境受限 |
| 可重复性和完整的 MultiQC 报告最重要 | 您需要管道未公开的非标准步骤 |
| → 通过 `nextflow` 技能驱动 | → 遵循 references/upstream-manual.md |
不确定时,优先选择路径 A:nf-core/rnaseq 已经将 FastQC → 修剪 → STAR/Salmon → 定量 → tximport → MultiQC 用合理、经过审查的默认值连接起来,这是最可辩护的选项。路径 B 存在是为了透明度和受限设置。
两条路径都收敛到基因水平计数矩阵,之后工作流程相同。
设置
# 此技能的粘合剂(桥接 + 交接)— Python
uv pip install pytximport pandas
# 下游技能安装自己的依赖:
# pydeseq2 技能 -> uv pip install pydeseq2
# pathway-enrichment 技能 -> uv pip install gseapy gprofiler-official
# 路径 A (nf-core):只需要 Nextflow + 容器引擎 — 见 `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 — nf-core/rnaseq(推荐)
0. 首先验证样本表(及早发现最常见的失败)
python scripts/validate_samplesheet.py --samplesheet samplesheet.csv
1. 用小型捆绑数据对环境进行冒烟测试
nextflow run nf-core/rnaseq -r 3.26.0 -profile test,docker --outdir test_results
2. 实际运行:固定修订版,选择比对器,传递样本表 + 参考
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,因此基因计数已经**合并**输出 — 不需要桥接脚本。对 DE 使用 `results/star_salmon/salmon.merged.gene_counts_length_scaled.tsv`。样本表格式、比选择和输出:`references/upstream-nfcore.md`。有关引擎/HPC/云/容器详情,使用 **`nextflow`** 技能。
### 路径 B — 独立 STAR/Salmon(简略)
fastqc -o qc/ reads/*.fastq.gz # 1. 质控原始 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. 修剪接头/低质量
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. 定量(每个样本)
完整配方(FastQC、fastp/Trim Galore、STAR 索引+比对+`--quantMode GeneCounts`、Salmon 解码感知索引、featureCounts、链方向性):`references/upstream-manual.md`。
### 计数 → DE → 富集(两条路径)
仅路径 B:组装基因 x 样本计数矩阵 + PyDESeq2 的元数据模板
python scripts/build_counts_matrix.py --from salmon \
--quant-dir quant/ --tx2gene tx2gene.tsv --output-dir counts/
然后交接(见专门的技能):
pydeseq2: counts.csv + metadata.csv -> DE 表 (log2FC, padj, stat)
pathway-enrichment: 按 stat 排序 (GSEA) 或 padj+|LFC| 命中列表 (ORA)
scientific-visualization / matplotlib: 火山图、MA 图、热图、PCA、富集点图
## 逐阶段工作流程
自上而下工作。每个阶段命名拥有详情的技能或文件。不要跳过设计/质控阶段 — 批量 RNA-seq 研究最容易在那里出错。
1. **设计 & 样本表。** 确认每组≥3 个生物重复,识别批次/混杂因素,选择比较。构建样本表并用 `scripts/validate_samplesheet.py` 验证。原理和规则:`references/design-and-qc.md`。
2. **原始 reads 质控。** 每个文件运行 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`),拟合,用 FDR 控制检验。作为质控检查 PCA 和 p 值直方图。
7. **富集 → `pathway-enrichment` 技能。** 对于 GSEA,按 DESeq2 `stat` 对*完整*基因列表排序;对于 ORA,传递阈值化命中列表(padj < 0.05,可选 |log2FC| > 1)。首先将基因 ID 映射到符号。
8. **图表 → `scientific-visualization` 技能。** 火山图、MA 图、样本距离热图、PCA 和富集点图,加上 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`(无链/正向/反向)选择列。
- **featureCounts**(`--from featurecounts`):解析组合的 `featureCounts` 矩阵。
它写入 `counts.csv`(基因 × 样本,整数)和 `metadata_template.csv`(每样本一行)供您填写。**Salmon/RSEM 计数是估计值(非整数);它们被四舍五入为整数**,因为 PyDESeq2 需要整数计数 — 见 `references/counts-and-handoff.md` 了解为什么使用 `length_scaled_tpm` 是可接受的,以及它与基于偏移量的 DESeq2+tximport 路由的区别。该参考还涵盖 Ensembl→符号映射(富集前需要)和 PyDESeq2 期望的确切方向。
## 常见陷阱
这些导致大多数错误或不可重复的批量 RNA-seq 结果:
1. **重复太少。** 每组 <3 个生物重复几乎没有功效和不稳定的离散估计。更多重复胜过更深测序。
2. **批次和条件混淆。** 如果每个处理样本在不同于对照样本的日期/泳道上处理,效果无法恢复。随机化,并建模已知批次(`~batch + condition`)。见 `references/design-and-qc.md`。
3. **错误的链方向性。** 选择错误的 STAR 列或 featureCounts `-s`/Salmon 库类型会静默丢弃约一半的 reads。使用 Salmon `-l A` 或推断链方向性,并验证分配 reads 的比例。
4. **将 TPM/FPKM 喂给 DESeq2。** DESeq2 需要原始(或长度缩放)**计数**,而不是 TPM/FPKM/归一化值。桥接处理这个问题。
5. **非整数计数。** PyDESeq2 需要整数;四舍五入 Salmon 估计值(桥接这样做)。
6. **富集的基因 ID 不匹配。** DESeq2 输出通常是 Ensembl ID;Enrichr/MSigDB 期望符号。在 `pathway-enrichment` 之前映射 ID,否则"没有显著结果"。
7. **跳过定量后质控。** 在信任 DE 之前,始终查看 PCA 和样本距离热图 — 它们揭示标签混淆、异常值和隐藏批次。
8. **混合比对器跨样本。** 使用相同的工具、版本、参考和参数对每个样本进行定量。
9. **未固定版本。** "最新"管道/基因组使结果不可重复;固定 `-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:样本表格式、`--aligner`/`--pseudo_aligner` 选择、关键参数、`salmon.merged.gene_counts*.tsv` 输出、MultiQC,以及交给 `pydeseq2` 的内容。
- `references/upstream-manual.md` — 路径 B:FastQC、fastp/Trim Galore、STAR 基因组索引 + 比对 + `--quantMode GeneCounts`、Salmon 解码感知索引 + `quant`、featureCounts,以及如何确定链方向性。
- `references/counts-and-handoff.md` — 将定量输出转换为 PyDESeq2 就绪的 `counts.csv`/`metadata.csv`(pytximport、STAR 列选择、featureCounts)、整数/估计计数的细微差别、Ensembl→符号映射,以及 DE→富集排序/命中列表配方。
- `references/design-and-qc.md` — 实验设计(重复、批次、混杂、设计公式)和质控指标解释(比对率、重复、rRNA、复杂度、PCA/异常值)— 可辩护管道的支柱。
## 资源
- 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兼容工具
站内相关工具
数据来源:claude-scientific-skills(MIT 许可) | 查看上游来源
上游项目:K-Dense-AI/scientific-agent-skills / claude-scientific-skills | 收录时间:2026-08-20 | 更新:2026-08-20
本页面内容基于上游开源许可项目整理,仅供学习参考。AI铺子不对第三方内容承担责任, 详情请参阅免责声明。