第3章 测序数据质量控制(FASTQC)
拿到RNA-seq数据后第一件事是什么?不是急着比对,不是找差异基因。你得先看看数据质量过不过关。这步要是省了,后面所有分析都可能白做。
我见过不少新手,兴冲冲跑完流程,结果发现大部分reads都是低质量的。浪费时间不说,还得重头再来。所以啊,质量控制这步,咱们得认真对待。
为什么非做质量控制不可?
测序仪不是完美的机器。它会出错。碱基识别错误、接头污染、PCR重复、序列偏差……这些问题都会混在原始数据里。你不把它们揪出来,下游分析就会被污染。
说白了,质量控制就是给你的数据做个体检。看看它有没有“健康问题”。
千万别跳过这一步。我曾经因为赶时间,直接拿原始FASTQ文件跑比对。结果一看比对率只有60%。折腾了好几天,才发现是测序接头没去除干净。白白浪费了宝贵时间。
FASTQC能告诉我们什么?
FASTQC是行业标准工具。它读入FASTQ文件,生成一份详细的质量报告。报告里有十几个指标,其中几个是关键中的关键。
我按重要程度排个序,你重点关注这些:
| 指标模块 | 它检查什么 | 翻车信号 |
|---|---|---|
| Per base quality | 每个碱基位置的质量分布 | 尾部质量暴跌 |
| Per sequence GC content | 每条序列的GC含量分布 | 出现双峰或异常偏移 |
| Adapter content | 接头序列残留比例 | 尾部出现接头 |
| Overrepresented sequences | 异常高丰度的序列 | 单个序列占比 > 1% |
| Per base N content | 无法识别的碱基比例 | 某一位置N比例飙升 |
| Sequence duplication levels | 序列重复程度 | 重复率异常高 |
怎么读懂FASTQC报告?
报告用红黄绿三种颜色做标记:绿色代表通过,黄色代表警告,红色代表失败。听起来简单对吧?但要注意,红色不一定是死刑。有些情况需要结合实验背景判断。
看碱基质量分布
报告第一页就是Per base sequence quality。它画了一个箱线图。横轴是碱基位置,纵轴是Phred质量分数。我一般这样看:
- 前10个碱基质量偏低?正常。测序仪启动不稳定,常见现象。
- 尾部质量掉到Q20以下?有问题。建议截断处理。
- 整体都在Q30以上?漂亮。这批数据很干净。
我个人习惯,RNA-seq数据最低接受标准是:read平均质量 > Q30,且低质量碱基占比 < 10%。低于这个标准的,必须做过滤。
看GC含量分布
这个指标特别有意思。理论上,随机打断的RNA片段GC含量应该接近正态分布,均值在物种基因组GC含量附近。人类是41%左右。
如果你看到双峰分布,或者明显偏离预期值,要警惕了。我遇到过一种情况:GC含量分布出现两个峰,查了半天才发现是样品被微生物污染了。那批细胞的RNA提取时混入了细菌RNA。双峰就是这么来的。
看接头和重复序列
接头污染主要来自文库构建时接头没洗干净。在报告里看Adapter Content模块,如果某一端接头比例超过5%,就必须去除。
重复序列这块要注意区分:RNA-seq里高表达基因本来就会产生大量相同的reads。这和DNA-seq里的PCR重复不一样。所以我一般不严格过滤RNA-seq的重复序列,除非重复率飙到80%以上。
怎么跑FASTQC?
其实就一行命令的事:
fastqc sample_R1.fastq.gz sample_R2.fastq.gz -o qc_output/
跑完后每个样本会生成一个.html文件和一个.zip文件。打开html文件就能看到报告。
建议项目开始时就设好输出目录。我习惯把所有QC报告集中放在一个文件夹里,方便批量审核。
拿到报告后怎么做决策?
报告不是用来看的,是用来做决策的。我整理了一个简单的判断流程,你对照着来:
情况一:全部绿色
直接进入下一步分析。别浪费时间。
情况二:部分黄色警告
看看是哪个模块。如果是尾部质量偏低,用工具做trimming。我常用Trimmomatic或cutadapt:
cutadapt -q 20 -m 50 -j 8 \
-a AGATCGGAAGAGC \
-A AGATCGGAAGAGC \
-o trimmed_R1.fastq.gz \
-p trimmed_R2.fastq.gz \
sample_R1.fastq.gz sample_R2.fastq.gz
这个命令的意思是:去除质量低于Q20的碱基,丢弃长度小于50bp的reads,同时去掉接头序列。
情况三:大量红色失败
先别急着处理。检查原始数据是否完整,测序参数是否正确。如果确认没问题,那这批数据可能真的有问题。我建议重新和测序公司沟通,要求补测或重测。
有一次我的项目三分之一样本都标红了。我没直接跑分析,而是拿了几条reads用BLAST比对。结果发现是测序时标签搞混了,把其他物种的DNA当成RNA-seq来做了。所以说,遇到大面积失败,先溯源,别盲目过滤。
质量控制的核心逻辑
我把整个质控流程画成了一张图。你看一眼就明白了:
几个实战经验
做多了QC报告,你会有直觉。看到某个模块变黄,你大概就知道是哪一步出了问题。这里分享几个我踩过的坑:
- 双端测序的R1和R2质量要分别看。有时候R1很好,R2很差,这是正常的。但差距过大就不对了。
- 接头去除后要重新跑一次FASTQC。确保接头确实被去掉了。别偷懒。
- 多样本项目一定要批量看报告。我习惯写个简单的汇总脚本:
multiqc qc_output/ -o multiqc_report/
MultiQC会把你所有样本的FASTQC报告合并成一张汇总报表。一眼就能看出哪些样本有问题。强烈推荐。
记住一句话
质量控制不是为了追求完美,而是为了了解你的数据到底什么水平。知道了,你才能做出正确的判断。哪些样本能用,哪些需要处理,哪些干脆放弃。
你想想看,后边差异分析做得再漂亮,如果前边数据就是一团糟,那不成了垃圾进垃圾出?