2. 宏基因组数据获取与质量控制
宏基因组分析的第一步,说白了就是拿到可靠的数据。我见过不少项目,前期分析结果乱七八糟,最后追根溯源,问题都出在原始数据质量上。这一章,咱们就聊聊怎么把数据拿到手,并且确保它干净、可用。
2.1 数据从哪里来?公共数据库与本地测序
宏基因组数据的来源,无非两种:
- 公共数据库:像 NCBI 的 SRA、欧洲的 ENA,还有国内的 GSA。我自己最常用 NCBI SRA,数据全,但下载速度有时让人抓狂。
- 本地测序数据:自己送样给测序公司,拿回来的一般是 FASTQ 文件。这种情况,质量控制的责任完全在自己手里。
对于公共数据,我建议优先用 SRA Toolkit 里的 prefetch 配合 fasterq-dump 来下载。为啥?因为 prefetch 可以断点续传,网络不稳定时特别管用。
# 下载 SRA 文件
prefetch SRR12345678
# 转为 FASTQ 格式
fasterq-dump --split-files SRR12345678
小经验:我第一次下载 SRA 数据时,傻乎乎用 fastq-dump,慢得要命。后来换成 fasterq-dump,速度直接提升好几倍。这工具默认会用多线程,省时间。
2.2 质量控制的核心:你到底在查什么?
质量控制,说白了就是给你的数据做一次全面体检。主要查这几项:
- 碱基质量:每个碱基的测序准确度够不够高?
- GC 含量:宏基因组样本的 GC 分布通常比较均匀,如果出现异常峰值,可能有污染。
- 接头污染:测序时留下的引物或接头序列,必须去掉。
- 重复序列:PCR 扩增导致的重复,反而可能影响下游分析。
检查工具我推荐 FastQC,简单粗暴。运行它只需要一行命令:
fastqc sample_R1.fastq sample_R2.fastq -o ./qc_reports
它会生成一个 HTML 报告,我用 Chrome 打开,扫一遍那十几个模块,重点关注“Per base sequence quality”和“Adapter Content”。
2.3 清洗数据:用什么工具?怎么配参数?
质量检查完,就该动手清理了。我常用的工具有两个:
- Trimmomatic:老牌工具,参数灵活,适合双端测序。
- KneadData:专门为宏基因组设计,内置了去除宿主 DNA 的流程。
我个人习惯用 Trimmomatic 做基础清洗。它的参数看着多,其实核心就几个:
java -jar trimmomatic-0.39.jar PE \
sample_R1.fastq sample_R2.fastq \
sample_R1_clean.fastq sample_R1_unpaired.fastq \
sample_R2_clean.fastq sample_R2_unpaired.fastq \
ILLUMINACLIP:adapters.fa:2:30:10 \
LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:36
这里解释一下参数的关键点:ILLUMINACLIP 去接头,SLIDINGWINDOW:4:15 切掉低质量区域,MINLEN:36 扔掉太短的序列。你想想看,如果不设 MINLEN,一堆几碱基的垃圾序列会拉低后续分析的准确度。
如果样本来自宿主组织(比如肠道内容物),我用 KneadData 进一步去除宿主 DNA:
kneaddata \
--input1 sample_R1_clean.fastq \
--input2 sample_R2_clean.fastq \
--reference-db /path/to/human_genome \
--output ./kneaddata_output \
--trimmomatic /path/to/trimmomatic-0.39.jar
2.4 质量控制的完整流程:一张图说清楚
下面这张 SVG 图,把整个流程串起来了。从原始数据到最终可用于分析的高质量序列,每个环节都不可或缺。
这条流程,我在实际项目里跑了不下几十次。每次拿到新数据,我都会按这个步骤走一遍,心里才踏实。
2.5 质量控制的关键指标与决策门限
清洗之后,到底什么样的数据算“干净”?我整理了一个表格,你对照着看:
| 指标 | 理想范围 | 警戒线 | 建议操作 |
|---|---|---|---|
| Q20 比例 | > 90% | < 80% | 重新评估测序质量或重做 |
| Q30 比例 | > 85% | < 70% | 加大清洗力度 |
| GC 含量 | 40% – 60% | 偏离 > 10% | 检查是否有污染 |
| 序列长度分布 | 集中在预期长度 | 出现大量短序列 | 调整 MINLEN 参数 |
| 宿主污染比例 | < 5% | > 15% | 检查数据库或重做去宿主步骤 |
记住,这些门限不是死的。比如粪便样本,宿主污染低到 1% 也不是不可能;而组织样本,10% 也可能是正常的。具体问题具体分析。
2.6 几个常见坑,我都替你踩过
- 坑一:只做 FastQC,不做 MultiQC。 几十个样本逐一打开报告,眼睛都看花。用 MultiQC 汇总,效率翻倍。
- 坑二:清洗参数照搬别人的。 不同测序平台、不同试剂,数据特点不一样。我在一个项目里碰到超低质量的 reads,Trimmomatic 的 SLIDINGWINDOW 窗口设成 4:5 才管用。自己多试几个参数组合。
- 坑三:忽略双端数据的配对关系。 清洗后一定要确保 R1 和 R2 的 reads 数量一致,否则后续组装会崩溃。用
repair.sh这类工具修一下。 - 坑四:去宿主数据库选错。 用人类参考基因组时,注意 GRCh38 和 GRCh37 差异不小。我建议用 GRCh38 的最新版本,准确性更高。
嗯,这些坑说起来都是血泪史。但你只要记住,数据质量是宏基因组分析的基石,再怎么强调都不过分。