MultiQC 简介与质控报告概述

为什么需要 MultiQC?

做生物信息分析,第一步往往是质控。你跑完测序下机,拿到一堆 FASTQ 文件。然后你会用 FastQC 逐个检查,再手动打开几十个 HTML 报告,一个个翻。我当时带一个 RNA‑seq 项目,36 个样本,每个样本两个端。72 个 FastQC 报告,我一个下午都在点鼠标。说实话,看得眼花。

后来我从同事那听说了 MultiQC。它的核心逻辑很简单:把多个质控工具的输出汇总成一个报告。你不需要再一个个点开看了。它会自动扫描当前目录下的质控结果文件,然后拼成一个漂亮的 HTML 页面。

一句话总结:MultiQC = 质控报告聚合器。让你从几十个文件中解放出来。

我个人觉得,MultiQC 最重要的价值不是节省那几分钟,而是让“全局对比”变得可行。你可以在同一个页面里快速发现哪些样本的 GC 含量异常,哪些样本的接头污染严重。这种横向比较,在单独看每个报告时很难做到。

MultiQC 的优势

它的优势我归纳成三点,你想想看:

  • 支持的工具多:FastQC、FastQ_Screen、Kraken、STAR、Bowtie2、Salmon、Picard……官方列了超过 60 种。你常用的基本都有。
  • 输出灵活:生成 HTML 交互报告,也可以导出 PDF 或静态图片。我在团队汇报时,直接拿生成的 HTML 挂在 wiki 上,同事点开就能看。
  • 扩展性强:你可以写自定义插件。后面几章我们会重点讲这个——这也是本课程的核心。

说白了,MultiQC 就是把碎片化的质控信息“拧成一股绳”。

质控报告在生物信息学中的重要性

质控报告不只是“看个心里有数”。它直接决定分析结果是否可信。我遇到过一件事:有个项目比对率特别低,开始以为是参考基因组版本不对。后来我用 MultiQC 汇总了 FastQC 和 FastQ_Screen 的报告,发现样本中存在大量 phiX 污染——测序时 spike‑in 的对照没去除干净。如果没有全局质控报告,这种问题很难一眼看出来。

质控报告的核心作用:

  • 发现批次效应(比如不同测序 lane 的 GC 分布差异)
  • 识别样本异常(低质量、污染、重复率过高)
  • 为下游分析提供过滤阈值依据
  • 存档与可复现性(好的质控报告能让别人重现你的分析流程)
注意:不要只看均值。单个样本的指标可能全部正常,但把几十个样本放在一起,你才能发现某个样本的 GC 分布偏离了整体趋势。MultiQC 的横向比较能力就在这里。

我个人习惯是:每次跑完分析流程,第一件事就是运行 MultiQC 看看整体质量。如果报告里没有明显异常,我再继续往下走。这步不能省。

MultiQC 的常用场景

我列几个最常见的:

场景涉及工具MultiQC 做了什么
RNA‑seq 原始数据质控FastQC, FastQ_Screen, Trimmomatic汇总碱基质量、接头污染、GC 分布
比对后质控STAR, Bowtie2, BWA汇总比对率、唯一比对比例、剪接位点特征
变异检测统计Picard, GATK汇总覆盖深度、变异数量、转换/颠换比
宏基因组分类Kraken, Bracken汇总物种组成、分类丰度

你可能会问:那 MultiQC 是不是只能用于这些工具的输出?其实不是。它有一个通用的日志解析模块,只要你输出的是标准格式(比如 JSON、YAML、TSV),它基本都能处理。我曾在项目中用它聚合自定义的质控脚本输出。

快速上手:一行命令看效果

假设你已经有 FastQC 的结果,输出在当前目录的 fastqc_data/ 下。运行:

multiqc fastqc_data/

它会自动生成 multiqc_report.html。打开后,左边是样本列表,右边是各种统计图。你可以点击某个样本,高亮它。这就是 MultiQC 的默认体验。

小技巧:如果在集群上运行,记得指定 --outdir,否则报告会生成在当前工作目录。我以前因为这个把报告混在原始数据里,找了好半天。

MultiQC 的工作流程

下面的 SVG 图展示了 MultiQC 的核心逻辑:输入多个工具的结果文件,经过解析和聚合,输出一个统一的交互式报告。

MultiQC 工作流程示意图 FastQC 结果 FastQ_Screen 结果 STAR 比对日志 Picard 统计 其他工具输出 MultiQC 搜索 → 解析 → 聚合 生成统计与图表 HTML 交互报告 PDF / 静态图 JSON 数据导出 所有输入文件格式自动识别,无需手动设置

从上图可以看出,MultiQC 就像是一个“数据汇流排”。它不关心你运行的是哪个工具,只要输出格式符合规范,它就能识别并提取关键指标。我在实际项目中,经常把 Trimmomatic 的日志、Kraken 的报告和 Qualimap 的结果放在一起跑 MultiQC,一张报告就能覆盖从原始数据到物种分类的全程质控。

一点避坑经验

我曾经犯过的一个错误:MultiQC 默认会在当前目录递归搜索。如果你的分析流程生成很多中间文件,它可能会把一些不相关的日志也扫进来,导致报告里出现重复或错误的数据。现在我习惯用 --ignore 参数排除某些文件夹:

multiqc . --ignore old_runs/ --ignore logs/

另外要注意版本问题。同一个工具的不同版本,输出格式可能略有差异。比如 FastQC 0.11.5 和 0.11.9 的 zip 文件内部结构不同。MultiQC 会尝试兼容,但偶尔会有解析失败的情况。遇到时,检查一下 MultiQC 的版本是不是最新的,或者看看 release notes 里有没有相关的修复。

我的建议:在项目开始时,先确定 MultiQC 和所有质控工具的版本。锁定版本号写入环境文档。这样可以避免几个月后重跑分析时发现报告对不上。

说到这,你应该对 MultiQC 有了基本认识。它不是一个复杂的工具,但用好了能大幅提升质控效率。接下来的章节,我们会一步步教你如何定制它的模板,让报告更符合你的项目风格。