返回Skills库

批量 RNA-seq

MIT
📊 数据知识
K-Dense-AI

端到端 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 |

不确定时,优先选择路径 Anf-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 CodeOpenClawHermes Agent

数据来源:claude-scientific-skillsMIT 许可) | 查看上游来源

上游项目:K-Dense-AI/scientific-agent-skills / claude-scientific-skills | 收录时间:2026-08-20 | 更新:2026-08-20

本页面内容基于上游开源许可项目整理,仅供学习参考。AI铺子不对第三方内容承担责任, 详情请参阅免责声明