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”。

小技巧:如果样本数量多,别一个一个看报告。用 MultiQC 把结果汇总成一个页面,效率高得多。

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
避坑指南:我曾经在去除宿主序列时,用了错误版本的参考基因组。结果呢?宿主污染根本没清干净,后续的物种注释里全是人的 reads。那滋味,别提多难受了。所以,参考数据库一定要核对版本和物种。

2.4 质量控制的完整流程:一张图说清楚

下面这张 SVG 图,把整个流程串起来了。从原始数据到最终可用于分析的高质量序列,每个环节都不可或缺。

宏基因组数据获取与质量控制流程 原始数据获取(SRA/本地) 质量评估(FastQC + MultiQC) 基础清洗(Trimmomatic) 去除宿主污染(KneadData) 高质量序列(Clean Reads)

这条流程,我在实际项目里跑了不下几十次。每次拿到新数据,我都会按这个步骤走一遍,心里才踏实。

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 的最新版本,准确性更高。

嗯,这些坑说起来都是血泪史。但你只要记住,数据质量是宏基因组分析的基石,再怎么强调都不过分。