2. 原始测序数据QC:FastQ质量评估、接头污染检测、碱基分布检查
拿到测序仪下机的数据,第一件事就是打开 FastQ 文件看一眼。这个环节说白了就是给你的数据做个体检——质量行不行、有没有混入接头、碱基分布是不是正常。我见过不少新手直接跳过去跑流程,结果跑出来全是垃圾比对。嗯,一步一步来,先把原始数据的脉把好。
FastQ 文件长什么样?
FastQ 是测序最通用的原始数据格式,每四条记录一条序列。我刚开始接触的时候老记不住哪些行是啥,后来记住「标题、序列、+、质量」四个一组就好了。
@SEQ_ID
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
+
!''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>>CCCCCCC65
第二行是碱基序列,第四行是质量字符。质量字符对应一个数值(Phred 质量分),数值越高代表测错的概率越低。换算公式很简单:Q = -10 * log10(P),比如 Q30 表示错误率 0.1%。实际项目中 Q30 占比低于 80% 的样本我一般会打个问号,得看看是不是测序批次出了问题。
质量评估指标:别只看平均值
跑个 fastqc 是最常见的做法。我个人习惯在项目开始前写个批量脚本把每个样本的 FastQC 报告都生成一遍,然后统一提取关键指标。
| 指标 | 正常范围 | 警告阈值 | 失败阈值 |
|---|---|---|---|
| Per base sequence quality | Q30比例 > 80% | Q30 < 80% | Q30 < 60% |
| Per sequence quality scores | 均分 > 30 | 均分 < 30 | 均分 < 25 |
| GC content | 理论值 ±5% | 超出±10% | 超出±20% |
| N content | < 1% | > 1% | > 5% |
| Adapter contamination | < 0.5% | 0.5% ~ 5% | > 5% |
你想想看,如果某个窗口的碱基质量突然掉到 Q20 以下,那很可能就是测序反应不稳定或者文库有气泡。我在一个肿瘤项目里遇到过整条 lane 的前 10 个 cycle 质量都很好,但从第 11 cycle 开始直线下降——后来发现是试剂上机前冻融次数太多。这种细节不做逐个窗口的检查根本发现不了。
multiqc 把所有 FastQC 报告聚合在一起看,一眼就能看出哪个样本异常。命令极简:
multiqc .
自动扫描当前目录所有 fastqc* 文件夹生成汇总报告。
接头污染检测:最常见的坑之一
接头污染说白了就是测序读了不该读的片段。建库时需要加接头,如果片段长度太短或者测序读长太长,就会读到接头序列。我刚开始做空间转录组时,有一次批量处理数据,发现比对率只有 20%,排查了两天才意识到是接头没去干净。
FastQC 的 "Overrepresented sequences" 模块会标注常见的接头类型,比如 Illumina 的 TruSeq 接头、Nextera 接头。但你也要注意——空间转录组有些定制化接头,FastQC 可能认不出来。这时候我一般会手动跑 cutadapt 看接头计数。
cutadapt --action=none -a AGATCGGAAGAGCACACGTCTGAACTCCAGTCA \
-a AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT \
../data/sample_R1.fastq.gz -o /dev/null | grep "Reads with adapters"
这个命令不实际剪切,只统计含接头的 reads 比例。如果比例超过 2%,我就得考虑用 trim_galore 或者 fastp 做自动化切除。
碱基分布检查:ATCG 平衡了吗?
理想的测序数据里,每个位置 A、T、C、G 的比例应该接近 25%。如果某个位置的碱基比例严重偏离,比如全是 A 或者全是 T,那有可能是 PCR bias 或者文库扩增不均匀。空间转录组的 poly-A 捕获策略会导致 3' 端 A 比率偏高,这是正常的,但前端就应该分布均匀。
我一般会从 FastQC 的 "Per base sequence content" 图来识别异常。正常情况下四种颜色的线应该是平行且接近的,如果某条线突然飞上去,那个位置大概率有问题。
另一个容易被忽略的是 N 含量。N 表示测序仪无法判读的碱基,正常应低于 1%。如果某个窗口 N 比例高于 5%,那测序肯定出了大问题。我曾在一次芯片清洗后数据全篇 N——后来查明是流动槽没洗干净,残留的荧光信号干扰了碱基判读。
一张图看懂原始测序 QC 流程
我把整个原始测序数据 QC 的检查项和决策流画成了下面的结构图,你对照着自己的数据一步步走就行。
这张图的核心逻辑是:从原始 FastQ 出发,并行做质量评估、接头检测和碱基分布检查,三项都通过才能放行。我在实际项目中还会加一道手动复核:比如 Q30 明明挺高但 GC 含量明显偏离的,我仍然会标记为待审——防止自动化工具的盲区。
Q30 不过重测序,接头污染需修剪,GC 偏移查文库,N 太多直接扔。
综合 QC 报告:怎么判断能不能用?
有时候所有单项指标都在警示线边缘,比如 Q30 = 78% 略低于 80%,接头比例 = 0.6% 略超 0.5%。这种灰色地带怎么办?我的做法是:
- 看看是单端质量差还是两端都差。空间转录组常用双端测序,如果只是 R2 质量稍低,一般可以接受。
- 和同批次其他样本对比。如果所有样本都是同样的问题,可能是批次效应而非个别异常,可以继续但要记录。
- 保守起见,先做轻度修剪(比如切除两端质量差的碱基)再重新评估。
我曾经在一个大项目里遇到过整批 96 个样本的接头比例都在 10% 左右,当时团队想直接全扔。我建议用 fastp 做一把批量修剪,结果修剪后接头比例降到 0.3%,数据完全能用。所以说,质控的目的是发现问题并解决问题,而不是机械地丢弃数据。
fastp -i in.R1.fastq.gz -I in.R2.fastq.gz -o out.R1.fastq.gz -O out.R2.fastq.gz --detect_adapter_for_pe 就能自动检测并裁剪双端接头。配合 multiqc 统揽全局,效率翻倍。