MultiQC 概述:是什么、为什么需要、应用场景与优势
什么是 MultiQC?
我个人觉得,MultiQC 是生信领域里最“解渴”的工具之一。它不干分析活,而是把 FastQC、BWA、GATK、HISAT2 等一堆质控工具的输出,自动解析、汇总,最后吐出一份整合报告。
直白点说:你跑完 100 个样本,每个样本有 5 个工具的日志文件。手工看?看得眼花。MultiQC 一行命令,就把这些散落的 json、txt、html 全收起来,生成一个带交互图表的页面。
它的核心逻辑就两个:
- 自动识别:根据文件内容判断来自哪个工具(无需人工指定)
- 模块化解析:每个工具对应一个 Python 模块,解析、提取关键指标
举个最简单的运行例子:
multiqc .
它就会扫描当前目录下所有常见的质控报告文件,输出一个 multiqc_report.html。嗯,就是这么简单。
为什么需要 MultiQC?
你想想看,一个标准的 RNA-seq 流程下来,会产生多少日志?FastQC 每个样本两个文件(R1/R2),STAR 的统计,featureCounts 的 summary,还有 Picard 的 duplication metrics… 加起来几十个文件。人工翻?我以前做过一次,翻了 30 个样本,花了半天,还漏了一个样本的 adapter 污染。
核心痛点有三个:
- 信息碎片化:每个工具的报告格式不同,没法统一对比
- 无法批量对比:想看所有样本的测序质量分布?手工复制粘贴?太慢
- 可重复性差:手工汇总步骤没法脚本化,换个数据集就得重新点鼠标
MultiQC 恰好解决这些问题。它不止是“合并”,而是主动做标准化:把不同工具的同类型指标(比如 reads 总数、GC 含量、比对率)对齐到同一张表格里,让你一眼看出哪个样本异常。
我曾经接过一个项目,客户给了 200 个外显子样本的 FastQC 结果。刚开始想用 Excel 手动拉,发现根本不可行。最后写了个简单的 MultiQC 命令,十分钟出报告。客户直接说“这才是专业干活的节奏”。
MultiQC 的应用场景
MultiQC 几乎覆盖了所有 NGS 分析流程的质控环节。我按分析类型列一下常用工具组合:
| 应用场景 | 常用工具 | MultiQC 模块 |
|---|---|---|
| 全基因组/外显子测序 | FastQC, BWA, GATK, Picard, Samtools | fastqc, bwa, picard, samtools, gatk |
| RNA-seq 差异表达 | FastQC, STAR, RSEM, featureCounts | fastqc, star, rsem, featurecounts |
| ChIP-seq/ATAC-seq | FastQC, Bowtie2, MACS2, deepTools | fastqc, bowtie2, macs2, deeptools |
| 单细胞 RNA-seq | Cell Ranger, STARsolo, Kallisto-bustools | cellranger, starsolo, kallisto |
| 宏基因组 | Kraken2, Bracken, MetaPhlAn | kraken, bracken, metaphlan |
除了这些,MultiQC 还能处理 Cutadapt、Trimmomatic、HISAT2、Salmon 等几十种工具。你只要把工具的输出文件放在同一个目录下,它就能自动识别。注意,有些工具的日志需要保持默认扩展名或特定目录结构,否则可能漏掉。我之前遇到过用户把 *.fastqc.html 改名后 MultiQC 没识别,结果排查了半天——其实就是文件后缀被改了。
multiqc -l 列出支持的模块和对应的搜索模式。如果某个工具不在列表里,可以自己写一个自定义模块,MultiQC 提供了插件接口。
MultiQC 的优势
说白了,它把“质控报告生成”这件事从手工劳动变成了自动化流水线。我总结几个关键优势:
- 一键聚合:一条命令搞定几十个样本的汇总,节省大量时间
- 报告交互:输出是带图表的 HTML,可以展开、筛选、导出 SVG/PNG
- 模块可扩展:官方自带 100+ 模块,社区还在不断贡献新模块
- 输出格式灵活:除了 HTML,还支持 JSON、CSV、PDF(通过 wkhtmltopdf)
- 与流程集成:可以嵌入 Snakemake、Nextflow、CWL 等工作流,实现自动化质控
记得有一次,我需要给一个大型合作项目交付 500 个样本的质控报告。如果手工做,至少需要一周。用 MultiQC 写完一个 Snakemake rule 后,半个小时就生成了一套带交互图的 HTML 报告。对方拿到后直接说“你们这流程真干净”。
--ignore 参数排除无关文件。
另外,MultiQC 的报告展示方面也有独到之处。它会自动判断数据量,如果样本太多(比如 >50),会默认使用“散点图”代替“箱线图”来避免重叠。这个细节很贴心。
我做了这个 SVG 流程图,把 MultiQC 的工作原理和输出一目了然地画出来:
看完这张图你应该就清楚了:输入是各种工具的原始输出文件,MultiQC 内部分模块解析,最后输出一份结构清晰、可视化的报告。整个过程不需要写一行代码。
总结一下本章的核心:MultiQC 是一个“聚合型”质控工具,它本身不做数据分析,而是解决了多个工具报告之间的信息孤岛问题。接下来的章节,我会带你从安装、配置、模块选择,一直讲到如何写自定义模块、嵌入流程、以及性能调优。每一步我都会结合实际项目中的坑和技巧来展开。