宏基因组全流程 — 面试与复习¶
核心知识点速查表¶
| 知识点 | 说明 |
|---|---|
| 4. 面试常问点 | 见对应章节 |
| 5. 易错/易混淆点 | 见对应章节 |
| 6. 补充知识 | 见对应章节 |
| 快速复习卡片 | 见对应章节 |
| 🔄 最新版本动态(2026年4月更新) | 见对应章节 |
4. 面试常问点¶
★ 宏基因组分析的基本流程是什么?¶
参考答案(结合实习经历):
在生信公司实习期间,我参与了多个宏基因组项目的分析。基本流程如下:
首先是数据校验,用md5sum验证下机数据的完整性;然后用FastQC和MultiQC做质量评估,查看碱基质量、GC含量、接头残留等指标;接着用fastp做质量控制,去除接头序列和低质量reads;之后用Bowtie2将clean reads比对到人类参考基因组GRCh38进行去宿主,用samtools提取未比对上的微生物reads;再用Kraken2做物种分类注释,配合Bracken进行种水平丰度重估计;如果需要功能注释,会用HUMAnN3分析代谢通路;最后是多样性分析,包括Alpha多样性(Shannon、Simpson指数等)和Beta多样性(Bray-Curtis距离、PCoA等)。
在个人项目中,我还独立搭建了一个肠道宏基因组分析流程,从FastQC到多样性分析全流程自动化,通过shell脚本串联各个步骤。
★ 为什么要去宿主?不去会怎样?¶
参考答案:
去宿主是宏基因组分析中非常关键的一步。宏基因组测序的目标是微生物DNA,但样本采集时不可避免会混入宿主DNA,比如人肠道样本中可能含有10-50%的人源序列。
如果不去宿主,会造成几个问题: 1. 浪费计算资源:大量人源reads参与后续分析,既耗时又无意义 2. 干扰物种注释:人源序列可能被Kraken2错误地分类为微生物,产生假阳性结果 3. 影响丰度估计:分母(总reads数)被人源序列稀释,导致微生物真实丰度被低估 4. 功能注释污染:人类基因的功能信息混入微生物功能分析
我们一般用Bowtie2的
--very-sensitive模式将reads比对到人类参考基因组GRCh38,然后用samtools提取双端都没比对上的reads对(flag 12),这些就是微生物reads。选择very-sensitive模式是因为去宿主时我们宁可多去一些也不要漏掉。
★ Kraken2的confidence参数怎么选?0.05和0.2有什么区别?¶
参考答案:
Kraken2的
--confidence参数控制物种分类的严格程度,取值范围0到1。它的含义是:一条read被分类到某个物种时,支持该分类的k-mer比例必须达到这个阈值。0.05(常用推荐值):比较宽松,只要有5%以上的k-mer支持就接受分类。这样做的好处是灵敏度高,能检测到更多低丰度物种,但可能有一些假阳性。适合探索性分析和常规宏基因组分析。
0.2(较严格):需要20%以上的k-mer支持,大幅减少假阳性,但会丢失一些低丰度物种或与近缘物种k-mer共享较多的species。适合需要高精度的发表级分析。
实际选择时要根据项目需求:如果是初步探索、想尽可能全面地了解群落组成,用0.05;如果是准备发文章、需要高可信度,可以用0.1或0.2。在生信公司的项目中,我们一般用0.05作为默认值,如果客户对假阳性敏感会适当提高。
需要注意的是,调高confidence不会改善Kraken2数据库本身的局限性,比如数据库中没有的物种无论confidence设多少都检测不到。
★ fastp的主要质控参数有哪些?你怎么设置的?¶
参考答案:
fastp是我们做宏基因组质控的主要工具,主要参数和该常用设置如下:
接头去除:开启
--detect_adapter_for_pe自动检测PE数据接头,也可以用--adapter_sequence手动指定Illumina TruSeq接头序列碱基质量过滤:
--qualified_quality_phred 20表示质量值低于Q20的碱基被视为不合格(Q20对应1%的错误率);--unqualified_percent_limit 40表示一条read中不合格碱基超过40%就整条丢弃长度过滤:
--length_required 50,处理后短于50bp的read丢弃,因为太短的read比对效率低且容易产生假阳性滑窗修剪:
--cut_front和--cut_tail开启首尾滑窗修剪,配合--cut_window_size 4和--cut_mean_quality 20,在读取的5'端和3'端用4bp滑窗检测,平均质量低于20就切掉N碱基过滤:
--n_base_limit 5,含N碱基超过5个的read丢弃碱基纠错:
--correction利用PE reads重叠区域进行碱基校正一般经过这些参数处理后,reads保留率在90%以上就算正常。fastp还自带HTML报告,可以直观看到质控前后的效果对比。
★ 如何判断测序数据质量好不好?(FastQC报告解读)¶
参考答案:
拿到FastQC报告后,我会重点关注以下几个模块:
Per base sequence quality(最重要):看每个位置的碱基质量分布箱线图。正常情况下Q值应该在20以上,Q30以上的碱基占比应该超过85%。如果3'端质量急剧下降,说明需要做trimming
Adapter content:看接头残留情况。如果曲线明显上升,说明有接头污染,质控时需要去接头
Per sequence GC content:看GC含量分布是否接近正态分布。如果出现多峰或严重偏移,可能有其他物种DNA污染
Sequence length distribution:正常的原始数据应该集中在固定长度(如150bp)。如果分布不均一可能有问题
Overrepresented sequences:如果有大量高频重复序列,可能是接头残留或rRNA污染
Per base sequence content:前几个位置ATCG比例有波动是正常的(random primer导致),但后面应该趋于稳定
总体判断标准:Q20>95%、Q30>85%、接头含量<5%、GC分布正常、无大量重复序列,就认为数据质量是好的。如果是多个样本,我会用MultiQC汇总查看,方便横向比较发现异常样本。
★ reads保留率多少算正常?¶
参考答案:
reads保留率需要分两个阶段看:
fastp质控后:正常保留率应该在90%以上。如果低于85%,说明原始数据质量较差,可能测序出了问题,需要跟测序公司沟通。保留率过低也可能是质控参数设置过严导致的
去宿主后:这个取决于样本类型。人肠道样本一般保留70-99%,因为采样部位和方法不同,人源DNA含量差异很大(粪便样本人源含量通常较低,活检组织样本人源含量高)。土壤、水体等环境样本去宿主后保留率通常>95%,因为基本没有宿主DNA
在实际工作中,如果fastp后保留率低于85%或去宿主后保留率异常低(如人肠道样本低于50%),我会回头检查原始数据质量或参数设置,必要时联系测序公司确认是否需要重测。
★ 宏基因组和16S扩增子的区别?¶
参考答案:
这是两种不同的微生物群落研究方法,主要区别如下:
对比维度 宏基因组(Metagenomics) 16S扩增子(16S Amplicon) 测序对象 样本中所有DNA(全基因组) 仅16S rRNA基因的特定区域(如V3-V4) 信息量 基因组+功能信息 仅物种分类信息 分辨率 可达种甚至菌株水平 通常到属水平,种水平不太可靠 功能分析 可以做(HUMAnN3等) 只能做预测(PICRUSt2,不够准确) 成本 较高(需要大量测序数据) 较低(测序量小) 分析复杂度 较高(计算资源需求大) 较低(分析流程相对简单) 覆盖范围 细菌、古菌、真菌、病毒等 主要是细菌和古菌(16S基因特异) 偏好性 偏好小(直接测全基因组) 受引物偏好影响(不同引物扩增效率不同) 常用工具 Kraken2, HUMAnN3, MEGAHIT等 QIIME2, DADA2, mothur等 常见数据量 每样本5-20G 每样本5-10万条reads 简单总结:16S像是"人口普查"——知道有哪些微生物;宏基因组像是"全面调查"——不仅知道有谁,还知道它们在做什么。
在生信公司实习时,两种方法的项目我都做过。16S项目主要是用QIIME2做OTU聚类和多样性分析;宏基因组项目流程更复杂,但获得的信息更丰富。客户预算有限时推荐16S,需要功能信息或高分辨率分类时推荐宏基因组。
★ Kraken2和MetaPhlAn的区别?(加分题)¶
参考答案:
对比 Kraken2 MetaPhlAn 原理 k-mer精确匹配 clade-specific marker gene比对 数据库 全基因组(RefSeq) 标记基因 速度 非常快 较慢 内存需求 较大(标准库约70GB) 较小(几GB) 灵敏度 高(但假阳性较多) 较低(但精确度高) 丰度估计 需配合Bracken 自带丰度估计 适用场景 快速筛查、大规模样本 精确定量、小样本深入分析
★ 组装(Assembly)在宏基因组中的作用是什么?(加分题)¶
参考答案:
宏基因组分析有两条路线: 1. 基于reads的分析(read-based):直接用reads做物种注释和功能注释,如Kraken2、HUMAnN3 2. 基于组装的分析(assembly-based):先将reads拼接成更长的contigs,再做基因预测和注释
组装常用工具如 MEGAHIT 或 metaSPAdes,组装后可以用 Prodigal 做基因预测,再用 eggNOG-mapper 或 DIAMOND 做功能注释。
组装的优势:得到更完整的基因序列,功能注释更准确;可以做binning(分箱)获得MAGs(Metagenome-Assembled Genomes),即直接从宏基因组数据中恢复单个微生物的基因组。
组装的劣势:低丰度物种可能组装不出来;嵌合体contigs(chimeric contigs)问题;计算资源需求大。
5. 易错/易混淆点¶
⚠️ 1. Kraken2和Bracken的区别¶
易混淆点: 初学者常把两者混为一谈,或者只用Kraken2不用Bracken。
正确理解: - Kraken2 是分类器(classifier):将每条read分配到一个分类单元,但很多reads只能到属甚至更高层级 - Bracken 是丰度估计器(abundance estimator):在Kraken2结果基础上,用贝叶斯算法把高层级reads重新分配到种水平 - 两者是配合使用的关系:先Kraken2分类,再Bracken估计丰度 - 如果只用Kraken2,种水平的丰度会严重低估(因为大量reads停留在属及以上层级)
⚠️ 2. 去宿主前后reads数变化的解读¶
易错点: 看到去宿主后reads大幅减少就认为"数据不好"。
正确理解: - 人肠道样本的宿主比例变异很大(5-50%),粪便样本通常人源含量较低,但活检或灌洗液样本可能很高 - 去宿主后reads减少不一定是坏事,反而说明成功去除了大量人源污染 - 需要关注的是去宿主后剩余的微生物reads数量是否足够做后续分析(通常需要至少几百万条) - 如果去宿主后保留率极低(如<30%),才需要考虑是否采样有问题
⚠️ 3. fastp的--qualified_quality_phred含义¶
易混淆点: 误以为 --qualified_quality_phred 20 表示"所有低于Q20的碱基都直接去掉"。
正确理解: - 这个参数定义的是"什么叫不合格碱基"的阈值,低于Q20的碱基被标记为不合格 - 但仅仅标记为不合格不会直接丢弃,还要看 --unqualified_percent_limit - 只有当一条read中不合格碱基的比例超过了 --unqualified_percent_limit(默认40%),这条read才会被丢弃 - 真正负责"切掉低质量碱基"的是 --cut_front、--cut_tail 等滑窗参数 - 理解三者关系:qualified_quality_phred 定义"什么是低质量";unqualified_percent_limit 决定"低质量碱基太多时丢弃整条read";cut_front/cut_tail 负责"修剪掉末端的低质量区域"
⚠️ 4. 数据库版本不一致的影响¶
易错点: 不同样本或不同时间的分析使用了不同版本的数据库(如Kraken2标准库),然后把结果直接合并比较。
正确理解: - 数据库更新会增加或修改物种分类信息,不同版本数据库的注释结果不具有直接可比性 - 同一批项目的所有样本必须使用完全相同版本的数据库 - 建议在项目开始时记录数据库版本和下载日期 - 发表文章时必须注明使用的数据库版本(如 "Kraken2 standard database, 2023-06-05 release") - 如果需要重分析历史数据,应该用新数据库对所有样本重新分析,而不是只分析新样本
⚠️ 5. SE和PE数据处理差异¶
易混淆点: 用PE数据的参数和命令直接处理SE数据,或者反过来。
正确理解: - PE(Paired-End):一条DNA片段从两端分别测序,产生R1和R2两个文件 - SE(Single-End):只从一端测序,产生一个文件 - fastp处理SE数据不需要 -I/-O 参数和 --detect_adapter_for_pe - Bowtie2处理SE数据用 -U 参数而不是 -1/-2 - samtools提取未比对reads时,SE数据用 -f 4 而不是 -f 12 - Kraken2处理SE数据不需要 --paired 参数 - 宏基因组分析绝大多数情况是PE数据,SE在宏基因组中很少用
⚠️ 6. 比对率 ≠ 分类率¶
易混淆点: 混淆 Bowtie2 的比对率和 Kraken2 的分类率。
正确理解: - Bowtie2比对率:reads比对到宿主参考基因组的比例 → 这个越高,说明宿主污染越严重 - Kraken2分类率:reads被成功分类到物种的比例 → 这个越高,说明数据库覆盖越好 - 两者完全不同的概念,不要混淆 - Kraken2分类率通常在50-80%,有20-50%的reads无法分类是正常的(数据库不可能覆盖所有微生物)
⚠️ 7. --confidence 不等于准确率¶
易混淆点: 以为设置 --confidence 0.95 就能保证95%的准确率。
正确理解: - confidence 是指支持某分类的k-mer占该read所有k-mer的比例阈值 - 它是一个过滤标准,不是准确率的保证 - 设太高(如0.5以上)会导致大量reads变为"未分类",可能丢失有价值的信息 - 准确率还受数据库质量、物种相似度等因素影响 - 选择合适的confidence需要在灵敏度和精确度之间权衡
⚠️ 8. 多样性分析中丰度表的标准化¶
易混淆点: 直接用原始reads计数做多样性分析,不做标准化。
正确理解: - 不同样本的测序深度(总reads数)可能差异很大 - 不做标准化,测序深度高的样本会天然显示更高的物种丰富度 - Alpha多样性分析前通常需要做稀释(rarefaction)或标准化 - Beta多样性分析中,Bray-Curtis距离自带相对丰度标准化,但最好还是先将计数转为相对丰度 - 不同的标准化方法(rarefaction、TSS、CSS、TMM等)可能导致不同结果,需要根据具体情况选择
6. 补充知识¶
6.1 常见文件格式¶
| 格式 | 后缀 | 内容 | 用途 |
|---|---|---|---|
| FASTQ | .fq / .fastq | reads序列 + 质量值 | 原始/清洗后的测序数据 |
| FASTA | .fa / .fasta | 序列(无质量值) | 参考基因组、组装结果 |
| SAM | .sam | 序列比对结果(文本) | 比对信息,可读 |
| BAM | .bam | 序列比对结果(二进制) | SAM的压缩版,常用 |
| GFF/GTF | .gff / .gtf | 基因注释信息 | 基因坐标、功能注释 |
| TSV/CSV | .tsv / .csv | 表格数据 | 丰度表、统计结果 |
| BIOM | .biom | 生物观测矩阵 | QIIME2等工具的标准格式 |
6.2 质量值(Phred Quality Score)换算¶
| Phred值 | 错误率 | 准确率 | 含义 |
|---|---|---|---|
| Q10 | 10% | 90% | 每10个碱基有1个错误 |
| Q20 | 1% | 99% | 每100个碱基有1个错误 |
| Q30 | 0.1% | 99.9% | 每1000个碱基有1个错误 |
| Q40 | 0.01% | 99.99% | 每10000个碱基有1个错误 |
计算公式:Q = -10 * log10(P),其中P是错误概率
6.3 常用Linux命令速查¶
# 查看fastq文件的reads数(每4行一条read)
zcat sample.fq.gz | wc -l | awk '{print $1/4}'
# 查看fastq文件前几条reads
zcat sample.fq.gz | head -12 # 查看前3条reads(每条4行)
# 统计文件大小
du -sh *.fq.gz
# 后台运行并记录日志
nohup bash pipeline.sh > pipeline.log 2>&1 &
# 查看后台任务
jobs -l
# 查看磁盘空间(分析前确认空间足够)
df -h
# 统计某个物种在Kraken2 report中的丰度
grep "Escherichia coli" sample_kraken2.report
6.4 分析流程时间和资源参考¶
| 步骤 | 单样本时间(PE150,10G数据) | 内存需求 | 磁盘需求 |
|---|---|---|---|
| FastQC | 5-10分钟 | 1GB | 很小 |
| fastp | 5-15分钟 | 2-4GB | 与输入相当 |
| Bowtie2建索引 | 1-2小时(一次性) | 8GB+ | ~10GB |
| Bowtie2比对去宿主 | 30-60分钟 | 4-8GB | 中间文件较大 |
| Kraken2 | 10-30分钟 | 50-70GB(标准库) | 较小 |
| Bracken | 1-2分钟 | 很小 | 很小 |
| HUMAnN3 | 2-6小时 | 16GB+ | 较大 |
注意:Kraken2标准数据库需要大量内存(约70GB),这是宏基因组分析中对服务器配置要求最高的步骤之一。内存不足时可以使用MiniKraken数据库(约8GB)。
快速复习卡片¶
流程口诀:
校(md5校验)→ 评(FastQC评估)→ 控(fastp质控)→ 去(Bowtie2去宿主)→ 分(Kraken2分类)→ 功(功能注释)→ 多(多样性分析)
关键数字:
- Q20 > 95%, Q30 > 85%
- fastp保留率 > 90%
- Kraken2 confidence: 0.05(常规)/ 0.2(严格)
- 去宿主用 --very-sensitive
- samtools -f 12(PE双端未比对)
- Bracken -r 150 -l S -t 10
🔄 最新版本动态(2026年4月更新)¶
| 工具 | 最新版本 | 关键更新 |
|---|---|---|
| Kraken2 | v2.17.0 | 新增PrackenDB数据库(2026.01),支持多NCBI数据库同时分类,FASTA/Q解析器换用kseq大幅加速 |
| Kraken2数据库 | PrackenDB (2025.10) | 包含所有NCBI参考组装(GenBank+RefSeq)的细菌/古菌/原生生物/真菌,加人基因组和病毒 |
| Bracken | 配合Kraken2 | Standard-8/PlusPF-8/PlusPFP-8预构建数据库仅需~8GB内存 |
| fastp | v1.3.3 | 2024年从v0.x跳到v1.x大版本,仍是最主流的质控工具 |
📌 面试加分:提到Kraken2最新版v2.17.0和PrackenDB,说明你关注工具更新。Standard-8数据库只需8GB内存,适合内存有限的服务器。
最后更新:2026-04-27 适用岗位:生物信息分析工程师 关联知识库:02_微生物多样性分析.md、03_功能注释数据库.md