Codar
下载

RNA-seq 比对与表达定量

RNA-seq 上游分析把 FASTQ 读段变成可供统计的表达矩阵,包含读段质控、比对或伪比对、计数三个环节。路线一是用 STAR 或 HISAT2 比对到参考基因组,再用 featureCounts 按 GTF 计数,产生的 BAM 还能用于可变剪接、融合检测和 IGV 查看;路线二是用 Salmon 或 kallisto 对转录组做伪比对定量,速度快、资源占用低,再用 tximport 汇总到基因。最终产出原始计数矩阵和 TPM 矩阵,前者用于差异分析,后者用于展示。

什么时候用

  • 拿到测序公司返回的 FASTQ,需要自己生成计数矩阵
  • 从 SRA 下载公共原始数据,用统一流程重新定量以便与自有数据合并
  • 需要 BAM 文件做可变剪接、融合基因检测或 IGV 查看
  • 需要转录本水平的定量,用于异构体使用分析
  • 排查测序公司结果异常,如比对率低、链方向设置错误

不适合的情况

  • 没有参考基因组的非模式物种:应先从头组装转录组,再在组装结果上定量
  • 长读长转录组(Iso-Seq、Nanopore):应使用长读长比对和专用定量工具
  • 小 RNA 测序:读段短、需去接头后按 miRNA 注释计数,流程不同

需要准备的数据

FASTQ 文件
单端或双端 .fastq.gz,双端 R1、R2 成对且读段顺序一致;记录读长和测序平台
参考基因组 FASTA
与注释同一来源和版本,如 Ensembl 或 GENCODE 的 GRCh38,染色体命名须与 GTF 一致
GTF 注释文件
决定计数单位和基因 ID 体系,版本号写入方法部分,后续富集和注释都依赖它
文库信息
是否链特异、链方向(如 dUTP 法)、polyA 富集还是去 rRNA,直接决定计数参数

分析步骤

  1. 1

    读段质控与修剪

    用 FastQC 和 MultiQC 检查碱基质量、接头含量和 GC 分布,接头明显时用 fastp 或 Trim Galore 修剪。RNA-seq 重复率偏高、前十几个碱基组成波动属于正常现象,细节见测序数据质控页。

  2. 2

    构建索引

    STAR 建索引时同时提供 GTF,sjdbOverhang 设为读长减 1,人类基因组建索引通常需要约 32 GB 内存;HISAT2 内存需求低得多。Salmon 建议把基因组序列作为 decoy 加入索引,减少错误分配。

  3. 3

    比对或伪比对

    STAR 加 --quantMode GeneCounts 可顺带输出基因计数;Salmon 用 -l A 自动推断文库类型。STAR 的 Log.final.out 中,人和小鼠常规文库唯一比对率经验上多在 70% 以上。

  4. 4

    判断链特异性

    用 RSeQC 的 infer_experiment.py,或比较 STAR ReadsPerGene.out.tab 第 3、4 列总数:一列远大于另一列为链特异文库,两列接近为非链特异。

  5. 5

    基因计数

    featureCounts 用 -s 指定链方向(0 不区分、1 正向、2 反向),双端数据加 -p。.summary 中 Assigned 比例低而 Unassigned_NoFeatures 高,多半是链方向或注释不匹配。

  6. 6

    汇总与归一化

    合并为基因 × 样本整数计数矩阵;Salmon 结果用 tximport 按转录本到基因的对应表汇总。另计算 TPM 用于作图。用 MultiQC 汇总各步指标,作为方法描述和补充材料。

关键参数与决策

链方向参数

featureCounts 的 -s、HTSeq-count 的 --stranded、Salmon 的 libType 须与文库一致。dUTP 法文库通常对应 -s 2,设错会使计数损失大半。

多重比对读段

featureCounts 默认不计多重比对读段,加 -M 才计入(可配合 --fraction 平均分配)。基因水平差异分析一般保持默认;研究重复元件或高度同源的基因家族时需要专门方法。

sjdbOverhang

STAR 建索引时理想值为读长减 1,读长不一时取最大读长减 1。默认值 100 对多数读长都能正常工作,但读长与之相差很大时,按实际读长重建索引更稳妥。

计数特征与 ID

featureCounts 默认 -t exon、-g gene_id,按外显子计数后汇总到基因。GENCODE 的 gene_id 带版本号后缀(如 .12),与其他数据合并前通常要去掉。

Salmon 偏好校正

建议加 --gcBias 和 --seqBias,分别校正片段 GC 含量偏好和读段起始序列偏好,双端数据中 GC 校正更有效。新版本 Salmon 默认使用选择性比对模式。

常见错误

  • 基因组与 GTF 来源不一致:UCSC 写作 chr1,Ensembl 写作 1,混用时 featureCounts 几乎全判为 Unassigned。
  • HTSeq-count 不显式设置 --stranded:它的默认值按链特异处理,非链特异文库会丢失约一半读段,而且程序不会报错。
  • 按 DNA-seq 的习惯去 PCR 重复:高表达基因天然产生大量起点相同的读段,没有 UMI 时去重会压低高表达基因的计数。
  • 双端数据按单端计数:featureCounts 不加 -p 时一个片段被计为两条读段,计数虚增,跨两个基因的片段还会被重复分配。
  • 直接合并不同研究的 FPKM:注释版本和计数规则不同,数值不可比;合并公共数据应从 FASTQ 用同一流程重新定量。
  • 不记录参考版本:GRCh37 与 GRCh38 坐标不同,后续与变异、峰或剪接位点比较时会出现系统性错位,难以追查。

结果怎么看

MultiQC 汇总报告

集中看各样本总读段数、唯一比对率、Assigned 比例和重复率。某样本在多项指标上同时离群,是后续剔除或在差异分析中标注的依据,单项略低通常不需处理。

STAR Log.final.out

关注唯一比对率、多重比对比例和 unmapped: too short 比例。too short 比例高常见于接头未去除、读段被过度修剪或物种不符;多重比对比例高提示 rRNA 残留较多。

featureCounts summary

NoFeatures 类高提示链方向或注释问题;Ambiguity 类高提示重叠基因多或链方向设为不区分;MultiMapping 类高提示 rRNA 或重复序列多。

基因体覆盖度

用 RSeQC 的 geneBody_coverage 看读段沿基因 5′ 到 3′ 的分布。理想情况较为均匀;明显偏向 3′ 端提示 RNA 降解,在 FFPE 样本中常见,差异分析时需考虑这一偏差。

计数矩阵与 TPM 矩阵

计数矩阵为整数,供 DESeq2、edgeR 使用;TPM 每个样本总和为一百万,适合作图和样本内基因比较。两种矩阵的基因 ID 体系和顺序应一致,并注明注释版本。

和相近方法怎么选

STAR 与 HISAT2

两者都是能识别剪接的基因组比对器。STAR 速度快、剪接位点检出灵敏,可直接输出基因计数和嵌合比对(融合检测依赖它),但内存需求高;HISAT2 内存占用小,适合普通工作站。需要做融合检测时优先 STAR。

基因组比对与 Salmon、kallisto

Salmon、kallisto 不产生基因组 BAM,速度快很多,并能按概率把多重比对读段分配到转录本,只需表达定量时很合适。需要看覆盖度、发现新剪接位点、检测融合或 RNA 变异时,仍需基因组比对。

TPM、FPKM 与原始计数

FPKM 先按测序深度再按长度归一化,各样本总和不固定;TPM 先按长度再按深度,各样本总和相同,样本间比较更合理。两者都不能作为差异分析输入,差异分析用原始计数,由工具内部做标准化。

featureCounts 与 HTSeq-count

两者都按 GTF 计数。featureCounts 速度快很多,支持多线程,一次处理多个 BAM 并输出统计摘要;HTSeq-count 规则直观但较慢。两者的默认链方向设置不同,切换工具时要重新核对。

常见问题

TPM 和 FPKM 有什么区别,用哪个?

做样本间展示优先 TPM,因为每个样本的 TPM 总和相同,FPKM 总和会随样本组成变化。但 TPM 只校正了深度和长度,不能消除组成偏差,差异分析仍要用原始计数。

RNA-seq 比对率多少算正常?

人和小鼠常规 polyA 文库在 STAR 中的唯一比对率经验上多在 70% 以上。偏低时依次检查:物种和基因组是否正确、接头是否去除、rRNA 比例、是否有细菌或支原体污染,可用 FastQ Screen 抽查污染来源。

featureCounts 的 -s 应该设 0、1 还是 2?

最直接的办法是实测:用 -s 1 和 -s 2 分别跑一个样本,Assigned 比例明显更高的就是正确方向;如果两者接近、都约为 -s 0 的一半,则是非链特异文库,应设 0。

没有服务器能做 RNA-seq 上游分析吗?

可以。Salmon 和 kallisto 对内存要求低,普通电脑通常即可完成人类样本定量;HISAT2 可下载官方预建索引后比对。STAR 建人类索引需要约 32 GB 内存,样本多时更适合放在服务器上批量运行。

Salmon 的结果怎么用于 DESeq2?

用 tximport 读取各样本的 quant.sf,并提供转录本到基因的对应表(tx2gene),汇总为基因水平后用 DESeqDataSetFromTximport 导入。DESeq2 会利用平均转录本长度作偏移,校正样本间的长度差异。

在 Codar 里怎么做

Codar 先读取 FASTQ 做质量评估;与你确认参考基因组和注释版本、文库链方向和定量路线后,执行读段比对与表达定量,生成基因计数矩阵和 TPM 矩阵。交付质控汇总、比对与计数统计、表达矩阵和可复现脚本。人类样本建索引内存需求高,专业版可通过远程 SSH 在服务器上运行。

可以这样提问
我有 12 个人类双端链特异 RNA-seq 的 FASTQ,请先做质控,再用 GRCh38 比对,输出 featureCounts 计数矩阵和 TPM
了解转录组学插件