第3章 原始数据质控:FastQC质量评估、MultiQC汇总报告解读

拿到测序公司返回的原始数据,第一步该干嘛?我个人习惯——先跑一遍FastQC,看看这批数据到底什么水平。你别急着往下游分析,这一步没做好,后面全是坑。

说白了,原始质控就是给数据“体检”。你得知道每个样本的碱基质量、GC含量、接头污染、重复序列等等。MultiQC则是把这些体检报告汇总成一张总表,方便横向对比。好,咱们一步步来。

3.1 FastQC 快速上手

FastQC 的使用很简单。直接命令行运行就行:

fastqc sample_R1.fastq.gz sample_R2.fastq.gz -o ./qc_output

它会生成两个.html文件和两个.zip文件。.html是可视化报告,.zip是数据文件,后续MultiQC要用到。

你可以批量跑所有样本:

fastqc *.fastq.gz -o ./qc_output

如果样本特别多(我碰上过一次上千个样本),建议用 -t 参数开多线程:

fastqc -t 8 *.fastq.gz -o ./qc_output

嗯,这里有个坑。FastQC 默认只分析前10万条序列,如果你的数据质量分布不均匀,最好用 --noextract 保留原始压缩包,然后在 MultiQC 里指定更完整的分析方式。不过大部分情况直接跑就够了。

3.2 看懂 FastQC 报告的 11 项指标

FastQC 报告分三个区:绿色(通过)、黄色(警告)、红色(失败)。我个人经验:不要太迷信颜色,具体数值和分布形状才是关键。

我们来逐个拆解:

模块考察内容常见翻车点
Basic Statistics总序列数、序列长度、%GCGC含量异常提示污染或建库偏差
Per base sequence quality每个碱基位置的Q值箱线图末尾质量下降是常态,但前端若低于Q20则需truncate
Per sequence quality scores所有序列的平均Q值分布如果出现双峰,可能混了不同批次数据
Per base sequence content每个位置A/T/G/C比例前10bp若出现明显偏差,可能是随机引物或接头残留
Per sequence GC contentGC含量的实际 vs 理论分布GC分布偏离正态曲线,大概率有外源DNA污染
Per base N content每个位置N碱基比例若超过5%说明测序质量极差,建议弃该位置
Sequence Length Distribution序列长度是否一致宏基因组常出现可变长度,但过长/过短的尖峰指示异常
Sequence Duplication Levels重复序列比例宏基因组重复比例不应过高,PCR过度扩增时会呈现
Overrepresented sequences过量代表的序列(通常为接头)黄色:轻微接头污染;红色:强烈建议去接头
Adapter Content接头含量随位置变化若从某位置开始接头比例持续上升,必须trim
Kmer Content短序列模体偏差宏基因组中偶尔出现,若显著则考虑PCR偏倚
我曾经踩过的大坑:遇到一批数据,Per base sequence quality 只给黄色警告,我觉得问题不大,结果下游物种注释全是低质量reads虚假比对。后来重新跑质控,把末端 Q<20 的碱基切掉,注释结果立马干净很多。记住:黄色不等于安全,必须结合后续分析需求判断。

3.3 用命令行解读:不打开浏览器也能看

有时候命令行跑在服务器上,没法打开html。可以用 unzip 把 .zip 解压,然后用 cat 看 summary.txt:

unzip sample_R1_fastqc.zip -d fastqc_tmp
cat fastqc_tmp/sample_R1_fastqc/summary.txt

输出类似:

PASS    Per base sequence quality        sample_R1.fastq.gz
WARN    Per sequence GC content          sample_R1.fastq.gz
FAIL    Adapter Content                  sample_R1.fastq.gz

这样一眼能扫到哪项挂了。我常用这招批量检查失败样本。

3.4 MultiQC 汇总报告:告别逐个翻页

几十个样本挨个点开FastQC报告很痛苦。MultiQC 就是把所有 FastQC 结果合并,生成一份交互式总报告。

安装很简单:

pip install multiqc

运行:

multiqc ./qc_output/ -o ./multiqc_report

最终得到 multiqc_report.html,打开后有多项图表:

  • Sequence Quality Histograms:所有样本的碱基质量分布,一眼看出哪些样本质量差。
  • Per Sequence GC Content:GC曲线叠加图,异常样本单独成峰。
  • FastQC Filtered Reads:统计每个样本通过/警告/失败的数量。
  • Adapter Content:接头污染严重的样本会被高亮。
一个小技巧:MultiQC 里点击任何一张图都能查看具体样本名和数值,适合做“数据质量周报”。我经常把这张图贴在PPT里给老板汇报,省去翻原始报告的时间。

3.5 基于 MultiQC 报告制定质控策略

看懂报告后,下一步就是决定切哪里、去哪些样本。我总结了一个决策树:

快速决策框架:
1. 若 Per base quality 前 10bp 低于 Q20 → 切除前 10bp 或更多。
2. 若 Adapter Content 红色 → 用 fastp 或 Trimmomatic 自动检测并去除接头。
3. 若 Overrepresented sequences 红色且比对数据库找不到 → 可能是接头 dimer,需要调整文库制备手法。
4. 若 GC content 出现双峰 → 可能混入宿主或工程菌,考虑用去宿主软件(如 BBDuk)。
5. 若 Sequence Duplication 异常高(>50%) → 可能是 PCR 过度扩增,建议提高测序深度或重新建库。

我个人一般用 fastp 一站式解决:

fastp -i R1.fastq.gz -I R2.fastq.gz \
      -o clean_R1.fastq.gz -O clean_R2.fastq.gz \
      --detect_adapter_for_pe \
      --qualified_quality_phred 20 \
      --mean_quality 25 \
      --cut_front 10 \
      --cut_tail 3

这个命令做了接头检测、质量过滤、前后端切除。跑完再用 FastQC+MultiQC 看一遍,直到所有样本都达标。

3.6 质控流程图:从原始数据到干净数据

下面这张图概括了整条质控路径:

原始数据质控流程 原始 FASTQ 文件 FastQC 逐个样本评估 MultiQC 汇总报告 质量通过 → 干净数据 质量不合格 → 参数调整 说明:若 MultiQC 发现大量样本不合格,需调整质控参数(如剪切长度、质量阈值)重新运行
我个人习惯:跑完质控后,我会把 MultiQC 报告里的“序列质量箱线图”截图放进实验记录本,顺便把失败的样本 list 保存为 .csv。这样下次能追溯哪些样本需要重新测序。

3.7 常见问题与避坑

  • FastQC 报告看起来全绿,但MultiQC 却显示大片黄色? 因为MultiQC用的阈值更严格,也可能因为某个模块在单个样本上不明显,但汇总时被放大。建议以MultiQC为准。
  • 接头检测失败,自己写正则去除? 别自己写。fastp 或 Trimmomatic 内置了 Illumina 全系列接头序列,用它们就够了。
  • 我遇到过Q值很好但GC含量异常的情况。 最后发现是样本中混了λ噬菌体DNA(实验室常用的spike-in)。建议使用 fastq-screen 检测污染源。
  • MultiQC 报告里的 General Statistics 表格怎么用? 我通常看 "%GC" 和 "Total Sequences" 两列,如果某个样本 GC% 偏离群体超过5%,我会标记为可疑样本。

好,做完这一步,你的数据就干净了。接下来就可以放心地做序列比对或组装了。