跳转至

宏基因组全流程 — 面试与复习

核心知识点速查表

知识点说明
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是我们做宏基因组质控的主要工具,主要参数和该常用设置如下:

  1. 接头去除:开启 --detect_adapter_for_pe 自动检测PE数据接头,也可以用 --adapter_sequence 手动指定Illumina TruSeq接头序列

  2. 碱基质量过滤--qualified_quality_phred 20 表示质量值低于Q20的碱基被视为不合格(Q20对应1%的错误率);--unqualified_percent_limit 40 表示一条read中不合格碱基超过40%就整条丢弃

  3. 长度过滤--length_required 50,处理后短于50bp的read丢弃,因为太短的read比对效率低且容易产生假阳性

  4. 滑窗修剪--cut_front--cut_tail 开启首尾滑窗修剪,配合 --cut_window_size 4--cut_mean_quality 20,在读取的5'端和3'端用4bp滑窗检测,平均质量低于20就切掉

  5. N碱基过滤--n_base_limit 5,含N碱基超过5个的read丢弃

  6. 碱基纠错--correction 利用PE reads重叠区域进行碱基校正

一般经过这些参数处理后,reads保留率在90%以上就算正常。fastp还自带HTML报告,可以直观看到质控前后的效果对比。


★ 如何判断测序数据质量好不好?(FastQC报告解读)

参考答案:

拿到FastQC报告后,我会重点关注以下几个模块:

  1. Per base sequence quality(最重要):看每个位置的碱基质量分布箱线图。正常情况下Q值应该在20以上,Q30以上的碱基占比应该超过85%。如果3'端质量急剧下降,说明需要做trimming

  2. Adapter content:看接头残留情况。如果曲线明显上升,说明有接头污染,质控时需要去接头

  3. Per sequence GC content:看GC含量分布是否接近正态分布。如果出现多峰或严重偏移,可能有其他物种DNA污染

  4. Sequence length distribution:正常的原始数据应该集中在固定长度(如150bp)。如果分布不均一可能有问题

  5. Overrepresented sequences:如果有大量高频重复序列,可能是接头残留或rRNA污染

  6. Per base sequence content:前几个位置ATCG比例有波动是正常的(random primer导致),但后面应该趋于稳定

总体判断标准:Q20>95%、Q30>85%、接头含量<5%、GC分布正常、无大量重复序列,就认为数据质量是好的。如果是多个样本,我会用MultiQC汇总查看,方便横向比较发现异常样本。


★ reads保留率多少算正常?

参考答案:

reads保留率需要分两个阶段看:

  1. fastp质控后:正常保留率应该在90%以上。如果低于85%,说明原始数据质量较差,可能测序出了问题,需要跟测序公司沟通。保留率过低也可能是质控参数设置过严导致的

  2. 去宿主后:这个取决于样本类型。人肠道样本一般保留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的区别?(加分题)

参考答案:

对比Kraken2MetaPhlAn
原理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 / .fastqreads序列 + 质量值原始/清洗后的测序数据
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值错误率准确率含义
Q1010%90%每10个碱基有1个错误
Q201%99%每100个碱基有1个错误
Q300.1%99.9%每1000个碱基有1个错误
Q400.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数据)内存需求磁盘需求
FastQC5-10分钟1GB很小
fastp5-15分钟2-4GB与输入相当
Bowtie2建索引1-2小时(一次性)8GB+~10GB
Bowtie2比对去宿主30-60分钟4-8GB中间文件较大
Kraken210-30分钟50-70GB(标准库)较小
Bracken1-2分钟很小很小
HUMAnN32-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月更新)

工具最新版本关键更新
Kraken2v2.17.0新增PrackenDB数据库(2026.01),支持多NCBI数据库同时分类,FASTA/Q解析器换用kseq大幅加速
Kraken2数据库PrackenDB (2025.10)包含所有NCBI参考组装(GenBank+RefSeq)的细菌/古菌/原生生物/真菌,加人基因组和病毒
Bracken配合Kraken2Standard-8/PlusPF-8/PlusPFP-8预构建数据库仅需~8GB内存
fastpv1.3.32024年从v0.x跳到v1.x大版本,仍是最主流的质控工具

📌 面试加分:提到Kraken2最新版v2.17.0和PrackenDB,说明你关注工具更新。Standard-8数据库只需8GB内存,适合内存有限的服务器。


最后更新:2026-04-27 适用岗位:生物信息分析工程师 关联知识库:02_微生物多样性分析.md、03_功能注释数据库.md