长读测序宏基因组分析¶
一句话说明¶
用 Nanopore 或 PacBio 长读测序来分析环境/肠道微生物群落,相比短读测序能组装出更完整的微生物基因组(MAG),还能直接检测甲基化修饰。
核心知识点¶
1. 为什么宏基因组要用长读¶
- 组装更完整:短读组装宏基因组碎片多(几千个 contig),长读能拼出完整环状基因组(白话:短读像拼1000片拼图,长读像拼50片大块拼图)
- 物种分辨率更高:长读能区分近缘菌株(白话:短读分不清表兄弟,长读能看出谁是谁)
- 直接检测修饰:ONT 可以直接检测 DNA 甲基化(5mC, 6mA),不需要额外处理
- 全长基因检测:耐药基因、毒力因子可以获得完整序列
2. 主要测序平台对比¶
| 特性 | ONT (Nanopore) | PacBio HiFi |
|---|---|---|
| 读长 | 1-100+ kb | 10-25 kb |
| 准确率 | ~98% (Q20+) | >99.9% |
| 通量 | 高(PromethION) | 中等 |
| 甲基化 | 直接检测 | 需要额外分析 |
| 成本 | 较低 | 较高 |
| 宏基因组常用 | 是 | 越来越多 |
3. 分析流程¶
- 质控 → 组装 → binning → MAG质量评估 → 物种注释 → 功能注释
- 关键工具链:Filtlong → Flye/metaFlye → MetaBAT2 → CheckM2 → GTDB-Tk → eggNOG-mapper
4. 长读 vs 短读宏基因组¶
- 长读组装的 MAG 完整性更高(N50 更大,contig 数更少)
- 长读在低丰度物种检测上有优势
- 混合组装(hybrid assembly)效果最佳:长读搭骨架 + 短读纠错
实战代码¶
# === 长读宏基因组完整分析流程 ===
# 1. 质控:过滤低质量和短读段
filtlong --min_length 1000 \ # 最短保留1kb
--keep_percent 95 \ # 保留质量前95%的读段
raw_reads.fastq.gz > filtered.fq # 输出过滤后的数据
# 2. 使用 metaFlye 进行宏基因组组装
flye --nano-hq filtered.fq \ # nano-hq 用于Q20+数据
--out-dir assembly_out \ # 输出目录
--meta \ # 宏基因组模式(关键参数!)
--threads 32 # 使用32线程
# 3. 用 minimap2 将读段比对回组装结果
minimap2 -ax map-ont \ # ONT比对模式
assembly_out/assembly.fasta \ # 组装结果作为参考
filtered.fq | \ # 输入过滤后的读段
samtools sort -o mapped.bam # 排序生成BAM
samtools index mapped.bam # 建立BAM索引
# 4. MetaBAT2 进行 binning(分箱)
jgi_summarize_bam_contig_depths \ # 计算每个contig的覆盖深度
--outputDepth depth.txt \ # 输出深度文件
mapped.bam # 输入BAM文件
metabat2 -i assembly_out/assembly.fasta \ # 输入组装序列
-a depth.txt \ # 输入深度信息
-o bins/bin \ # 输出bin前缀
-m 1500 # 最短contig长度1.5kb
# 5. CheckM2 评估 MAG 质量
checkm2 predict \ # 预测模式
--input bins/ \ # bin文件目录
--output-directory checkm2_out \ # 输出目录
-x fa \ # bin文件扩展名
--threads 16 # 线程数
# 6. GTDB-Tk 物种分类注释
gtdbtk classify_wf \ # 分类工作流
--genome_dir bins/ \ # bin文件目录
--out_dir gtdbtk_out \ # 输出目录
-x fa \ # 文件扩展名
--cpus 32 # CPU数
# 解析 CheckM2 结果,筛选高质量 MAG
import pandas as pd # 数据处理库
# 读取 CheckM2 质量报告
df = pd.read_csv("checkm2_out/quality_report.tsv", sep="\t")
# MIMAG 标准筛选
high_quality = df[
(df["Completeness"] >= 90) & # 完整性 >= 90%
(df["Contamination"] <= 5) # 污染率 <= 5%
]
medium_quality = df[
(df["Completeness"] >= 50) & # 完整性 >= 50%
(df["Contamination"] <= 10) # 污染率 <= 10%
]
print(f"高质量 MAG: {len(high_quality)}") # 打印高质量MAG数
print(f"中质量 MAG: {len(medium_quality)}") # 打印中质量MAG数
面试常问点¶
★ 长读测序做宏基因组有什么优势?¶
参考答案:三个核心优势:(1) 组装更完整,能拼出完整环状基因组,减少碎片化;(2) 能跨越重复序列区域(如 rRNA 操纵子),解决短读组装的"断裂点"问题;(3) ONT 还能直接检测 DNA 甲基化,一次测序获得基因组和表观信息。缺点是成本较高、原始错误率较高,实际项目中常与短读数据混合使用。
★ metaFlye 的 --meta 参数为什么重要?¶
参考答案:--meta 开启宏基因组模式。普通模式假设所有读段来自同一个基因组,而宏基因组中有成百上千个物种,覆盖度差异巨大(高丰度菌可能100x,低丰度菌可能2x)。--meta 模式会自适应处理不同覆盖度的 contig,不会把低丰度物种当噪音丢掉。
★ 长读宏基因组 binning 和短读有什么不同?¶
参考答案:长读组装的 contig 更长更少,binning 精度通常更高。但长读数据的覆盖度波动可能更大,所以有些专门为长读优化的 binning 工具(如 SemiBin2 支持长读模式)。另外,长读组装可能直接产生完整基因组,有时不需要 binning 就能得到单个物种的完整序列。
速查卡片¶
| 问题 | 答案 |
|---|---|
| 长读宏基因组组装工具 | metaFlye(最常用) |
| 质控工具 | Filtlong / NanoPlot / chopper |
| binning 工具 | MetaBAT2, SemiBin2 |
| MAG 质量评估 | CheckM2 |
| 物种注释 | GTDB-Tk |
| 高质量 MAG 标准 | 完整性 >=90%, 污染 <=5% |
| 混合组装工具 | OPERA-MS, Unicycler |
| ONT 甲基化检测 | Dorado + modkit |
| 典型数据量 | 10-50 Gb per sample |
| 最低读长过滤 | 通常 1-5 kb |