FastQC 基本使用:命令行参数与输入输出
好,咱们现在正式开始上手 FastQC。你装好之后,第一件事就是看看它怎么跑起来。说白了,FastQC 就是个命令行工具,但你别被「命令行」三个字吓到。它的用法极其简单,我甚至觉得它是生信工具里最容易上手的一个。
你只要给它一个文件,它就能输出一份报告。就这么简单。
但简单归简单,里面有几个细节,我用这么多年还是经常碰到有人踩坑。今天咱们把命令行参数、输入输出格式捋清楚,后面你跑起来会特别顺手。
最基本的运行方式
咱们从最简单的命令开始。假设你有一个 FASTQ 文件,叫 sample_1.fq.gz,你想看它的质量怎么样,直接敲:
fastqc sample_1.fq.gz
嗯,就这一行。FastQC 会自动识别文件格式,跑完以后会在当前目录下生成一个 .html 报告文件和一个 .zip 的压缩包。我记得刚入行那会儿,看到一堆 .zip 还纳闷为啥要打包,后来才明白,里面藏着原始数据图表,做批量处理时特别有用。
你可能会问:「那我要处理多个文件呢?」
简单,直接在后面列出来就行。我个人习惯用通配符 *,比如:
fastqc sample_1.fq.gz sample_2.fq.gz sample_3.fq.gz
或者:
fastqc *.fq.gz
这样所有 .fq.gz 结尾的文件都会一起跑。但如果文件很多,比如上百个,我建议你悠着点,最好用 --threads 参数,不然你的电脑会卡到怀疑人生。
注意输入文件格式
FastQC 支持的输入格式包括 .fastq、.fq、.fastq.gz、.fq.gz,还有 .bam 和 .sam 文件。但通常我们分析的是 FASTQ 格式。如果你给了它一个 .txt 或者别的文件,它会直接报错退出。我在项目中遇到过有人把 .csv 重命名为 .fastq 扔进去,结果 FastQC 死活不认,还以为是 bug……
常用命令行参数
下面这张表是我平时最常用的几个参数。你不需要背,用的时候回来查一下就行。
| 参数 | 说明 | 我的用法 |
|---|---|---|
-o / --outdir |
指定输出目录 | 我自己一定用,不然文件散落一地 |
-t / --threads |
线程数,多文件时加速 | 设成 CPU 核心数减 1,留一个给系统 |
--nogroup |
不合并碱基位置分组 | 做单碱基精度分析时用,但报告会更长 |
--extract |
解压 zip 文件 | 有时候我需要直接读里面的 txt 数据 |
-q / --quiet |
静默模式,不输出进度 | 跑批量脚本时加上,否则日志会刷屏 |
具体怎么用?我给你个实际例子。假设你有 4 个文件,放在 raw_data/ 目录下,你想把报告输出到 qc_reports/,同时用 4 个线程跑:
fastqc raw_data/*.fq.gz -o qc_reports/ --threads 4
看,是不是很直观?我觉得这个命令你在实际项目里会经常用到,可以直接把它存成一个小脚本。
一个小技巧
如果你在服务器上跑,记得加上 --quiet 参数。否则每个文件跑的时候都打印一大串进度,你会被日志淹死的。尤其是跑几百个文件的时候,那个输出量……嗯,我经历过。
输出文件长什么样
跑完 FastQC 之后,你会得到两个东西:一个 .html 文件和一个同名的 .zip 文件。比如输入文件是 sample_1.fastq.gz,输出就是:
sample_1_fastqc.html
sample_1_fastqc.zip
.html 文件就是你用浏览器打开看的报告,里面全是图表和评价。而 .zip 文件里,其实藏着每个模块的原始数据和图表。如果你要做二次分析或者写脚本处理数据,解压 .zip 文件之后,你会看到一个 fastqc_data.txt,里面所有数据都是以制表符分隔的文本。
我刚才说过,用 --extract 可以让 FastQC 自动解压 .zip,省得你手动解。比如:
fastqc sample_1.fq.gz --extract
跑完后目录下直接多了一个 sample_1_fastqc/ 文件夹,里面就是解压好的内容。
核心输出文件清单
xxxx_fastqc.html—— 可视化报告,用浏览器打开看xxxx_fastqc.zip—— 包含所有原始数据xxxx_fastqc/fastqc_data.txt—— 模块汇总数据,适合脚本读取xxxx_fastqc/summary.txt—— 每个模块的 PASS/WARN/FAIL 一览
知识结构图:FastQC 运行流程
下面这张图概括了 FastQC 从输入到输出的完整流程。你看一眼,就能把刚才讲的零散知识点串起来。
关于 zip 文件的用途
很多人只关心 .html 报告,但我建议你也重视 .zip 文件。尤其是当你要做批量质控报告汇总时,可以直接写 Python 或 R 脚本去读 fastqc_data.txt,把几百个样本的指标提取出来画一张图,效率极高。我以前做过一个自动化质控看板,底层全是用 zipfile 模块解析这些 .zip 文件。
遇到问题怎么办?
好,最后说几个我经常见到的报错和解决方法。
- 找不到命令:如果你敲
fastqc提示 command not found,那说明 FastQC 没有加到PATH里。要么用完整路径运行,要么重新安装一次。我个人习惯把它放在/usr/local/bin/下,省心。 - 内存不足:如果文件特别大,比如单个 FASTQ 文件超过 10 GB,FastQC 可能会跑得非常慢甚至崩溃。这时候可以先用
head -n 400000截取前 10 万条序列来快速预览,或者用--quiet省点资源。 - 输出目录不存在:FastQC 不会自动创建
--outdir指定的目录。你必须自己先mkdir建好,否则它会报错。嗯,这个坑我踩过不止一次。
跑通一次后,你会发现 FastQC 其实很听话。你给它什么,它给你什么,清清楚楚。接下来,我们就要进入正题了——怎么读懂那些花花绿绿的图表,怎么判断数据是「好」还是「坏」。