细菌基因组分析(Bacterial Genome Analysis)¶
面试方向:宏基因组/16S/细菌基因组 | 结合百迈客实习经历
1. 一句话概述¶
细菌基因组分析涵盖从测序组装、基因预测到比较基因组学的完整流程,是揭示细菌遗传特征、进化关系和功能潜力的核心手段。
2. 核心知识点¶
2.1 测序技术对比(面试高频)¶
| 对比项 | 二代测序 (Illumina) | 三代测序 (PacBio HiFi) | 三代测序 (Oxford Nanopore) |
|---|---|---|---|
| 读长 | 短读长 (150-300 bp) | 长读长 (10-25 kb HiFi) | 超长读长 (数kb-数Mb) |
| 准确率 | 高 (>99.9%, Q30+) | 高 (>99.9% HiFi模式) | 中等 (~95-99%,近年改善) |
| 通量 | 极高 (数百Gb/run) | 中等 (数十Gb/cell) | 中低 (数Gb-数十Gb) |
| 单碱基成本 | 低 | 中等 | 中低 |
| 建库成本 | 低 | 高(需特殊文库) | 低(建库简单) |
| GC偏好性 | 高/低GC区有偏差 | 较小 | 较小 |
| 错误类型 | 替换错误为主 | 随机插入/缺失 | 插入/缺失为主 |
| 运行时间 | 1-3天 | 数小时-1天 | 实时,分钟级出数据 |
| 适用场景 | SNP分析、宏基因组、定量 | 完成图组装、结构变异 | 完成图组装、实时测序、现场检测 |
| 常见平台 | NovaSeq, MiSeq, NextSeq | Sequel IIe, Revio | MinION, PromethION, Flongle |
二代 vs 三代的核心区别(面试精简版)¶
二代 (Illumina):
优点: 准确率高、通量大、成本低
缺点: 读长短(150bp)、难以跨越重复区、难得完成图
适用: SNP分析、定量(RNA-seq/16S)、宏基因组
三代 (PacBio/Nanopore):
优点: 读长长(>10kb)、可跨越重复区、可直接检测甲基化
缺点: 成本高、通量较低、Nanopore准确率仍不如Illumina
适用: 完成图组装、结构变异检测、表观修饰
2.2 基因组组装¶
组装策略总览¶
| 策略 | 使用数据 | 代表工具 | 特点 |
|---|---|---|---|
| 二代组装 | 仅Illumina短读长 | SPAdes, MEGAHIT | 碎片多,得到draft genome |
| 三代组装 | 仅PacBio/Nanopore长读长 | Canu, Flye, Hifiasm | 连续性好,可能有碱基错误 |
| 混合组装 | 二代+三代联合 | Unicycler, Trycycler | 兼顾连续性和准确性,推荐 |
二代组装工具¶
| 工具 | 算法 | 适用 | 特点 |
|---|---|---|---|
| SPAdes | de Bruijn graph (多k-mer) | 单菌基因组(isolate) | 自动多k-mer迭代,质量高 |
| MEGAHIT | de Bruijn graph (succinct) | 宏基因组 | 内存占用小,速度快 |
| Velvet | de Bruijn graph | 小基因组 | 早期工具,已较少用 |
关键概念:de Bruijn图 将reads切成k-mer,通过k-mer之间的重叠关系构建图,再从图中找路径还原基因组。不同的k值会得到不同结果,SPAdes会自动尝试多个k值再合并。
三代组装工具¶
| 工具 | 适用数据 | 特点 |
|---|---|---|
| Canu | PacBio CLR / Nanopore | 经典工具,纠错→修剪→组装三步 |
| Flye | PacBio / Nanopore | 速度快,repeat graph方法 |
| Hifiasm | PacBio HiFi | 专为HiFi数据设计,质量极高 |
| wtdbg2 | PacBio / Nanopore | 速度极快,但可能需要polish |
混合组装¶
| 工具 | 策略 | 说明 |
|---|---|---|
| Unicycler | 先SPAdes短读组装→长读桥接 | 细菌基因组推荐,可输出环形图 |
| Trycycler | 多轮三代组装取共识 | 适合追求高质量完成图 |
组装后打磨(Polishing)¶
| 场景 | 工具 | 说明 |
|---|---|---|
| 三代组装 + 二代纠错 | Pilon, Polypolish | 用Illumina reads纠正三代组装的碱基错误 |
| Nanopore组装自纠错 | Medaka | Nanopore官方纠错工具 |
| PacBio组装自纠错 | Arrow/gcpp | PacBio官方工具 |
2.3 组装质量评估¶
评估工具对比¶
| 工具 | 评估内容 | 核心指标 | 适用 |
|---|---|---|---|
| QUAST | 组装连续性 | N50, L50, 总长度, contig数 | 所有组装 |
| BUSCO | 基因完整性 | Complete/Fragmented/Missing % | 基因组完整度 |
| CheckM | 基因组质量(MAG) | Completeness + Contamination | 宏基因组分箱 |
| CheckM2 | CheckM升级版 | 同上,更快更准 | MAG质量评估 |
核心指标详解¶
N50(面试必知)¶
定义:将所有contig按长度从大到小排列,累加长度达到总长度50%时
对应的那条contig的长度就是N50。
示例:
Contigs (sorted): 100kb, 80kb, 50kb, 30kb, 20kb, 10kb, 5kb, 5kb
总长度 = 300kb
50% = 150kb
累加: 100 + 80 = 180kb > 150kb
→ N50 = 80kb(第二条contig的长度)
N50越大 = 组装越连续 = 质量越好
BUSCO评估¶
BUSCO用一组保守的单拷贝直系同源基因来评估基因组完整度:
- Complete (C): 完整找到的基因 → 越高越好(>95%)
- Fragmented (F): 部分找到的 → 越低越好
- Missing (M): 完全缺失的 → 越低越好(<5%)
- Duplicated (D): 重复出现的 → 单菌应很低,高说明可能有污染
2.4 ANI分析(Average Nucleotide Identity,平均核苷酸一致性)¶
核心概念¶
| 项目 | 说明 |
|---|---|
| 定义 | 两个基因组之间直系同源区域的平均核苷酸序列一致性 |
| 用途 | 细菌物种界定的金标准 |
| 阈值 | 95-96% ANI = 同一物种(对应传统的 70% DDH) |
| 原理 | 将query基因组切成1020bp片段,比对到reference基因组,计算匹配片段的平均一致性 |
ANI物种界定标准¶
ANI ≥ 95-96% → 同一物种 (same species)
ANI 80-95% → 同一属,不同种 (same genus, different species)
ANI < 80% → 不同属或更远 (different genus)
注意:95% 是最常用的阈值,有些文献用 96%
ANI相关工具¶
| 工具 | 速度 | 方法 | 适用 |
|---|---|---|---|
| fastANI | 极快 | Mash/MinHash近似 | 大规模比较推荐 |
| pyani | 中等 | ANIb (BLAST) / ANIm (MUMmer) | 精确ANI计算 |
| OrthoANI | 中等 | 双向BLAST | 经典方法 |
| skani | 极快 | Sparse chaining | 更新更快的替代方案 |
ANI vs DDH vs AAI 对比(面试常考)¶
| 方法 | 全称 | 比较层面 | 同种阈值 | 备注 |
|---|---|---|---|---|
| ANI | Average Nucleotide Identity | 核苷酸水平 | 95-96% | 当前金标准 |
| DDH | DNA-DNA Hybridization | DNA杂交实验 | 70% | 传统金标准,实验费时 |
| AAI | Average Amino acid Identity | 氨基酸水平 | ~65% | 适合远缘比较 |
关系:ANI 95% ≈ DDH 70%。ANI已经取代DDH成为实际操作中的物种界定标准,因为ANI是计算方法,不需要做湿实验。
2.5 Binning(宏基因组分箱)¶
核心概念¶
什么是 Binning?
从宏基因组的混合组装结果中,将来自同一微生物的contigs聚在一起,
重建单个微生物的基因组 → 称为 MAG (Metagenome-Assembled Genome)
为什么要做 Binning?
宏基因组组装得到的是成千上万条混合contigs,
不知道哪些contig属于同一个微生物。
Binning就是"分拣"这些contigs,还原各个微生物的基因组。
Binning 原理¶
Binning 主要依据两个信号:
| 信号 | 英文 | 原理 |
|---|---|---|
| 序列组成 | Sequence composition | 同一物种的contigs有相似的GC含量和四核苷酸频率(tetranucleotide frequency) |
| 覆盖度 | Coverage/Abundance | 同一物种的contigs在同一样本中有相似的测序覆盖深度 |
Binning 工具¶
| 工具 | 特点 | 方法 |
|---|---|---|
| MetaBAT2 | 最常用,效果好 | 序列组成 + 覆盖度 |
| MaxBin2 | 经典工具 | 序列组成 + 覆盖度 + 标记基因 |
| CONCOCT | 基于高斯混合模型 | 序列组成 + 多样本覆盖度 |
| VAMB | 深度学习方法 | 变分自编码器 + 覆盖度 |
| SemiBin2 | 半监督深度学习 | 预训练模型 + 覆盖度 |
Bin整合(推荐)¶
| 工具 | 功能 |
|---|---|
| DAS Tool | 整合多个binning工具的结果,选出最优bin集合 |
| MetaWRAP | 整合binning + 精化(refinement) + 评估 |
最佳实践:同时用MetaBAT2 + MaxBin2 + CONCOCT三个工具做binning,再用DAS Tool整合,比单一工具效果好。
MAG 质量标准(MIMAG标准)¶
| 质量等级 | Completeness(完整度) | Contamination(污染度) | 其他要求 |
|---|---|---|---|
| High-quality | > 90% | < 5% | 有23S/16S/5S rRNA + 至少18个tRNA |
| Medium-quality | ≥ 50% | < 10% | — |
| Low-quality | < 50% | < 10% | — |
2.6 基因预测与注释¶
基因预测工具¶
| 工具 | 适用 | 特点 |
|---|---|---|
| Prodigal | 原核生物基因预测 | 最常用,ab initio预测 |
| Prokka | 原核基因组快速注释 | 整合Prodigal + 多库注释一步完成 |
| PGAP | NCBI基因组注释流程 | NCBI官方,提交GenBank必用 |
| DFAST | 快速基因组注释 | 日本DDBJ开发,在线可用 |
| MetaGeneMark | 宏基因组基因预测 | 适合短contig和混合物种 |
Prokka注释流程¶
Prokka的工作流程:
1. Prodigal → 预测ORF(开放阅读框)
2. Aragorn → 预测tRNA
3. Barrnap → 预测rRNA
4. BLAST/HMMER → 与多个数据库比对注释功能
- UniProtKB/Swiss-Prot
- Pfam
- TIGRFAMs
- COG
输出文件:
.gff → 基因注释文件(GFF3格式)
.gbk → GenBank格式
.faa → 蛋白质序列
.ffn → 核苷酸CDS序列
.fna → 输入序列(contigs)
.tsv → 基因功能表格
.txt → 注释统计摘要
2.7 比较基因组学¶
核心基因组(Core Genome) vs 泛基因组(Pan-genome)¶
泛基因组 (Pan-genome): 一组菌株中所有基因的总和
= Core genome + Accessory genome + Unique genes
核心基因组 (Core genome):
所有菌株都共有的基因 → 维持基本生命活动
附属基因组 (Accessory/Dispensable genome):
部分菌株共有的基因 → 环境适应、毒力、耐药等
特有基因 (Unique/Strain-specific genes):
仅存在于单个菌株的基因 → 菌株特异性特征
比较基因组工具¶
| 工具 | 功能 | 特点 |
|---|---|---|
| Roary | Pan-genome分析 | 经典工具,速度快 |
| Panaroo | Pan-genome分析 | 比Roary更准确,能纠正注释错误 |
| OrthoFinder | 直系同源基因鉴定 | 更全面的直系同源分析 |
| PIRATE | Pan-genome分析 | 支持阈值范围内的基因家族聚类 |
2.8 变异检测¶
SNP/InDel检测¶
| 概念 | 英文 | 说明 |
|---|---|---|
| SNP | Single Nucleotide Polymorphism | 单个碱基变异 |
| InDel | Insertion/Deletion | 小片段插入或缺失 |
| SV | Structural Variation | 大片段结构变异(>50bp) |
| CNV | Copy Number Variation | 拷贝数变异 |
变异检测工具¶
| 工具 | 功能 | 特点 |
|---|---|---|
| Snippy | SNP/InDel检测 | 细菌基因组最常用,一步完成 |
| GATK | SNP/InDel检测 | 人类基因组金标准,可用于细菌 |
| BCFtools | 变异calling | 经典工具套件 |
| Gubbins | 重组区检测 | 去除重组区后提取核心SNP |
基于核心SNP的进化分析¶
流程:
1. 所有菌株 reads → 比对到参考基因组 (Snippy)
2. 提取核心SNP (snippy-core)
3. 去除重组区 (Gubbins,可选)
4. 用核心SNP构建进化树 (IQ-TREE/RAxML/FastTree)
5. 可视化 (iTOL/FigTree/ggtree)
2.9 完成图(Complete Genome) vs 草图(Draft Genome)¶
| 对比项 | 完成图 (Complete) | 草图 (Draft) |
|---|---|---|
| 组装状态 | 完整环形染色体 + 所有质粒 | 多个contigs/scaffolds |
| gap | 无gap | 有gap |
| 重复区 | 完全解析 | 重复区可能塌缩/缺失 |
| 测序要求 | 通常需要三代长读长 | 二代即可 |
| 成本 | 高 | 低 |
| 应用 | 参考基因组、精确分析 | 一般比较基因组 |
| 数量 | 较少 | 大量 |
完成图标准:
- 每条染色体完整环形闭合(circular)
- 所有质粒完整
- 无gap
- 通常需要:三代长读长 + 二代纠错
草图分级(NCBI标准):
- Scaffold: contigs之间有gap但有顺序关系
- Contig: 只有contigs,无顺序信息
3. 实战命令¶
3.1 SPAdes 组装¶
# ============================================================
# SPAdes: 细菌基因组de novo组装(二代数据)
# 适用:单菌基因组(isolate genome)
# ============================================================
# ---- 标准组装 ----
spades.py \
-1 sample_R1.fastq.gz \ # 正向reads(PE150)
-2 sample_R2.fastq.gz \ # 反向reads(PE150)
-o spades_output/ \ # 输出目录
--careful \ # 减少错配(mismatch),更保守
-t 16 \ # 使用16个CPU线程
-m 64 # 最大内存64GB
# ---- 输出文件 ----
# spades_output/
# scaffolds.fasta ← 主要结果(scaffolds)
# contigs.fasta ← contigs(未scaffold的版本)
# assembly_graph.gfa ← 组装图
# ---- 混合组装(二代+三代) ----
spades.py \
-1 illumina_R1.fastq.gz \ # Illumina正向reads
-2 illumina_R2.fastq.gz \ # Illumina反向reads
--nanopore nanopore_reads.fastq.gz \ # Nanopore长读长数据
-o hybrid_spades/ \ # 输出目录
-t 16 -m 64
# ---- 宏基因组模式 ----
spades.py \
--meta \ # 宏基因组模式(metaSPAdes)
-1 meta_R1.fastq.gz \
-2 meta_R2.fastq.gz \
-o metaspades_output/ \
-t 32 -m 128 # 宏基因组需要更多资源
3.2 QUAST 组装质量评估¶
# ============================================================
# QUAST: 组装质量评估(连续性指标)
# ============================================================
# ---- 无参考基因组评估 ----
quast \
scaffolds.fasta \ # 输入:组装结果
-o quast_output/ \ # 输出目录
-t 8 \ # 线程数
--min-contig 500 # 最小contig长度阈值(默认500bp)
# ---- 有参考基因组评估(更多指标) ----
quast \
scaffolds.fasta \ # 输入:组装结果
-r reference.fasta \ # 参考基因组
-g reference.gff \ # 参考基因组注释(可选)
-o quast_ref_output/ \
-t 8
# ---- 关键输出指标说明 ----
# report.txt / report.html 包含:
# # contigs (>= 500bp) 组装得到的contig数量
# Total length 组装总长度(应接近预期基因组大小)
# Largest contig 最长contig长度
# N50 N50值(越大越好)
# L50 达到50%总长需要的最少contig数(越小越好)
# GC (%) GC含量(应符合目标物种)
# # N's per 100 kbp 每100kb中N的数量(gap指标)
3.3 fastANI 使用¶
# ============================================================
# fastANI: 快速计算平均核苷酸一致性(ANI)
# ============================================================
# ---- 一对一比较 ----
fastANI \
-q query.fasta \ # 查询基因组
-r reference.fasta \ # 参考基因组
-o ani_result.txt # 输出文件
# 输出格式:query \t reference \t ANI值 \t 匹配片段数 \t 总片段数
# 示例:query.fasta reference.fasta 97.5432 850 900
# ---- 一对多比较 ----
# 先创建参考基因组列表
ls /path/to/references/*.fasta > ref_list.txt
fastANI \
-q query.fasta \ # 查询基因组
--rl ref_list.txt \ # 参考基因组列表文件
-o ani_one_vs_many.txt \ # 输出
-t 16 # 线程数
# ---- 多对多比较(全部两两比较) ----
ls /path/to/genomes/*.fasta > genome_list.txt
fastANI \
--ql genome_list.txt \ # 查询基因组列表
--rl genome_list.txt \ # 参考基因组列表
-o ani_all_vs_all.txt \ # 全部两两ANI结果
-t 32 \ # 线程数
--matrix # 输出距离矩阵(可用于聚类/画热图)
3.4 MetaBAT2 Binning 流程¶
# ============================================================
# MetaBAT2: 宏基因组分箱(Binning)
# 将混合组装的contigs按来源分成各个基因组(bin/MAG)
# ============================================================
# ---- Step 1: 将reads比对回contigs(计算覆盖度) ----
# 建立索引
bowtie2-build contigs.fasta contigs_index # 为contigs建立Bowtie2索引
# 比对reads到contigs
bowtie2 \
-x contigs_index \ # 索引前缀
-1 sample_R1.fastq.gz \ # 正向reads
-2 sample_R2.fastq.gz \ # 反向reads
-S sample.sam \ # 输出SAM文件
--threads 16 # 线程数
# SAM转BAM并排序
samtools sort \
-@ 16 \ # 16个排序线程
-o sample_sorted.bam \ # 输出排序后的BAM
sample.sam # 输入SAM
# 建立BAM索引
samtools index sample_sorted.bam # 生成 .bam.bai 索引文件
# ---- Step 2: 计算contig覆盖深度 ----
jgi_summarize_bam_contig_depths \
--outputDepth depth.txt \ # 输出覆盖深度文件
sample_sorted.bam # 输入BAM文件(可多个样本)
# ---- Step 3: 运行MetaBAT2分箱 ----
metabat2 \
-i contigs.fasta \ # 输入:组装contigs
-a depth.txt \ # 覆盖深度信息
-o bins/bin \ # 输出目录和前缀
-m 1500 \ # 最小contig长度(默认2500,可调低)
-t 16 # 线程数
# 输出:bins/bin.1.fa, bins/bin.2.fa, ... 每个文件是一个MAG
3.5 CheckM 质量评估¶
# ============================================================
# CheckM: 评估MAG(分箱基因组)的质量
# 通过单拷贝标记基因评估完整度和污染度
# ============================================================
# ---- CheckM1 经典用法 ----
checkm lineage_wf \
bins/ \ # 输入:包含MAG文件的目录
checkm_output/ \ # 输出目录
-x fa \ # MAG文件扩展名(.fa/.fasta/.fna)
-t 16 \ # 线程数
--tab_table \ # 输出为tab分隔表格
-f checkm_results.tsv # 输出文件名
# ---- CheckM2(推荐,更快更准) ----
checkm2 predict \
--input bins/ \ # 输入MAG目录
--output-directory checkm2_output/ \ # 输出目录
-x .fa \ # 文件扩展名
--threads 16 # 线程数
# ---- 输出解读 ----
# 关键列:
# Completeness(%) 完整度 → 越高越好,>50%为medium,>90%为high
# Contamination(%) 污染度 → 越低越好,<5%为高质量,<10%可接受
# Strain heterogeneity(%) 菌株异质性 → 高值说明混了近缘菌株
# MIMAG标准:
# High-quality: 完整度 > 90%, 污染度 < 5%
# Medium-quality: 完整度 >= 50%, 污染度 < 10%
# Low-quality: 完整度 < 50%
3.6 Prokka 基因注释¶
# ============================================================
# Prokka: 原核基因组快速注释
# 一步完成基因预测+功能注释
# ============================================================
prokka \
scaffolds.fasta \ # 输入:组装基因组
--outdir prokka_output/ \ # 输出目录
--prefix sample_name \ # 输出文件前缀(如菌株名)
--kingdom Bacteria \ # 物种界:Bacteria/Archaea
--genus Escherichia \ # 属名(可选,提高注释准确性)
--species coli \ # 种名(可选)
--strain K12 \ # 菌株名(可选)
--cpus 16 \ # CPU线程数
--mincontiglen 200 \ # 最小contig长度(短于此的跳过)
--evalue 1e-06 \ # E-value阈值
--rfam # 额外搜索Rfam数据库(ncRNA注释)
# ---- 输出文件 ----
# sample_name.gff → 通用注释格式(可用于下游分析)
# sample_name.gbk → GenBank格式
# sample_name.faa → 蛋白质序列 → 用于功能注释(eggNOG-mapper等)
# sample_name.ffn → 基因核苷酸序列
# sample_name.tsv → 基因功能简表
# sample_name.txt → 统计摘要(CDS数、tRNA数、rRNA数等)
3.7 Snippy 变异检测¶
# ============================================================
# Snippy: 细菌基因组SNP/InDel变异检测
# ============================================================
# ---- 单样本变异检测 ----
snippy \
--cpus 16 \ # CPU线程数
--outdir snippy_sample1/ \ # 输出目录
--ref reference.gbk \ # 参考基因组(GenBank或FASTA格式)
--R1 sample1_R1.fastq.gz \ # 正向reads
--R2 sample1_R2.fastq.gz # 反向reads
# ---- 多样本核心SNP提取 ----
# 先对每个样本分别运行snippy,然后:
snippy-core \
--ref reference.gbk \ # 参考基因组
snippy_sample1/ \ # 样本1的snippy结果目录
snippy_sample2/ \
snippy_sample3/ # 可以添加更多样本
# 输出:
# core.aln → 核心SNP多序列比对(可直接建树)
# core.vcf → VCF格式变异列表
# core.txt → 变异统计
# core.tab → 变异位点详情
# ---- 用核心SNP建进化树 ----
# 方法1: IQ-TREE(推荐,自动选模型)
iqtree \
-s core.aln \ # 输入:核心SNP比对
-m GTR+G \ # 核酸替换模型(或用 -m TEST 自动选)
-bb 1000 \ # Bootstrap 1000次
-nt AUTO # 自动决定线程数
# 方法2: FastTree(速度快,大数据集用)
FastTree -gtr -nt core.aln > core.tree # GTR模型,核苷酸数据
3.8 Unicycler 混合组装¶
# ============================================================
# Unicycler: 细菌基因组混合组装(二代+三代)
# 推荐用于追求完成图的细菌基因组项目
# ============================================================
unicycler \
-1 illumina_R1.fastq.gz \ # Illumina正向reads
-2 illumina_R2.fastq.gz \ # Illumina反向reads
-l nanopore_reads.fastq.gz \ # Nanopore/PacBio长读长数据
-o unicycler_output/ \ # 输出目录
-t 16 \ # 线程数
--mode normal # 组装模式:conservative/normal/bold
# 输出:
# assembly.fasta ← 组装结果
# assembly.gfa ← 组装图(可用Bandage可视化)
#
# 特色:
# - 输出中 "circular=true" 表示环形序列(完整染色体或质粒)
# - 自动识别质粒
3.9 Roary/Panaroo 泛基因组分析¶
# ============================================================
# Panaroo: 泛基因组分析(比Roary更准确)
# 输入:多个菌株的GFF注释文件(Prokka输出)
# ============================================================
# ---- Step 1: 用Prokka注释所有菌株 ----
# 对每个菌株分别运行Prokka(参见3.6)
# ---- Step 2: 运行Panaroo ----
panaroo \
-i strain1.gff strain2.gff strain3.gff \ # 输入:所有菌株的GFF文件
-o panaroo_output/ \ # 输出目录
--clean-mode strict \ # 清理模式:strict/moderate/sensitive
-t 16 \ # 线程数
-a core \ # 输出核心基因比对(用于建树)
--core_threshold 0.99 # 核心基因阈值(99%菌株共有)
# ---- 输出文件 ----
# gene_presence_absence.csv → 基因存在/缺失矩阵
# summary_statistics.txt → 泛基因组统计
# core_gene_alignment.aln → 核心基因比对(可用于建树)
# pan_genome_reference.fa → 泛基因组参考序列
# ---- Step 3: 用核心基因比对建进化树 ----
iqtree \
-s panaroo_output/core_gene_alignment.aln \
-m GTR+G -bb 1000 -nt AUTO
4. 面试常问点¶
★ Q1: 二代和三代测序的区别?各自优缺点?¶
参考答案:
二代和三代测序最大的区别在于读长和测序原理。
二代测序(Illumina)用的是边合成边测序(SBS)的方法,读长短,一般150bp,但准确率很高(Q30以上),通量也大,一次测序能产出几百Gb数据,成本低。缺点是读长太短,遇到重复区域没法跨越,所以二代组装很难得到完成图。
三代测序分PacBio和Nanopore两个平台。PacBio的HiFi模式可以产出10-25kb的高准确率长读长。Nanopore读长可以达到几十甚至上百kb,而且仪器小巧(MinION只有U盘大小),可以现场快速测序。三代的优点是读长长,可以跨越重复区,有助于得到完成图。缺点是成本相对高,通量较低。
在百迈客做细菌基因组项目时,如果客户要完成图,通常用二代+三代混合测序,先用三代得到连续的长片段组装,再用二代数据纠正碱基错误。如果只是做一般的比较基因组分析,二代数据就够用了。
★ Q2: 什么是ANI?物种界定的标准是什么?¶
参考答案:
ANI是Average Nucleotide Identity(平均核苷酸一致性),用来衡量两个基因组之间有多相似。具体做法是把query基因组切成约1000bp的小片段,和reference基因组比对,计算所有匹配片段的平均核苷酸一致性。
物种界定的标准是 ANI ≥ 95-96%,认为是同一个物种。这个阈值对应传统的DDH(DNA-DNA杂交)70%的物种界定标准。ANI的优点是纯计算方法,不需要做湿实验,而且结果可重复,已经取代DDH成为当前物种界定的金标准。
常用工具是fastANI,速度非常快,适合大规模的基因组两两比较。在做细菌基因组项目时,我们通常用fastANI把新测的菌株和数据库中的模式菌株做ANI比较,确定它属于哪个物种,或者判断是不是新种。
★ Q3: 什么是binning?为什么要做?¶
参考答案:
Binning就是宏基因组分箱,目的是从宏基因组的混合组装结果中,把来自同一个微生物的contigs聚在一起,重建单个微生物的基因组,得到的结果叫MAG(Metagenome-Assembled Genome)。
为什么要做binning呢?因为宏基因组是对整个微生物群落进行测序,组装出来的contigs是来自成百上千个不同微生物的混合物。如果不做分箱,我们只能在基因水平分析功能,无法把功能和具体的微生物对应起来。做了binning之后,我们就可以知道"哪个微生物有什么功能"。
Binning主要依据两个信号:一是序列组成,同一个物种的contigs有相似的GC含量和四核苷酸频率;二是覆盖度,同一物种的contigs在同一样本中覆盖深度相似。
工具方面,最常用的是MetaBAT2,还有MaxBin2和CONCOCT。最佳实践是用多个工具分别分箱,然后用DAS Tool整合结果,这样比单一工具效果好。分箱后用CheckM评估MAG质量,看完整度和污染度。
★ Q4: 如何评估基因组组装质量?¶
参考答案:
评估基因组组装质量主要从三个维度:
连续性:用QUAST评估。看N50(越大越好,说明组装越连续)、contig数量(越少越好)、总长度(应接近预期基因组大小)、最大contig长度。N50是最重要的指标,比如细菌基因组N50达到几百kb以上说明组装质量不错。
完整性:用BUSCO评估。BUSCO用一组保守的单拷贝直系同源基因来检测基因组完整度。Complete比例越高越好,一般大于95%说明基因组比较完整。如果Duplicated很高,可能有污染或者误组装。
准确性:如果有参考基因组,可以用QUAST的-r参数比较。看错配率(mismatches per 100kb)和错误组装数(misassemblies)。
对于MAG(宏基因组分箱基因组),还要用CheckM看完整度和污染度。MIMAG标准中,高质量MAG要求完整度>90%、污染度<5%。
★ Q5: 完成图(complete genome)和草图(draft genome)的区别?¶
参考答案:
完成图是指基因组组装成完整的环形染色体(细菌染色体是环形的),没有gap,所有的重复区域都解析清楚了,质粒也是完整的。完成图是最高质量的基因组,可以作为参考基因组使用。
草图则是由多个contigs或scaffolds组成,中间有gap,重复区域可能塌缩或缺失。草图是目前最常见的基因组形式,因为成本低。
为什么二代组装很难得到完成图?因为细菌基因组中有很多重复区域(比如多拷贝的rRNA操纵子,通常5-7个拷贝,每个约5kb),而二代测序的读长只有150bp,根本跨不过这些重复区。重复区域在de Bruijn图中会形成环或分支,导致组装断裂。
要得到完成图,通常需要三代测序的长读长数据来跨越重复区。推荐的方案是用Unicycler做混合组装(二代+三代),或者用Flye/Canu做三代组装再用Pilon纠错。
★ Q6: CheckM怎么评估MAG质量?¶
参考答案:
CheckM通过检测单拷贝标记基因(single-copy marker genes)来评估MAG质量。它的原理是:
- 首先确定MAG可能属于哪个系统发育谱系(lineage)
- 该谱系有一组应该存在且只有一个拷贝的标记基因
- 完整度(Completeness):找到的标记基因占预期标记基因的比例。如果90%的标记基因都找到了,完整度就是90%
- 污染度(Contamination):出现多拷贝的标记基因比例。单拷贝基因出现了2份,说明可能混入了其他微生物的序列
按照MIMAG标准: - 高质量MAG:完整度 > 90%,污染度 < 5% - 中等质量MAG:完整度 ≥ 50%,污染度 < 10% - 低质量MAG:完整度 < 50%
新版的CheckM2用了机器学习方法,速度更快、准确性更高,推荐使用。
★ Q7: 你在百迈客做细菌基因组项目时的流程?¶
参考答案:
在百迈客做细菌基因组项目,一般的标准分析流程是:
- 数据质控:用fastp对原始数据去接头、过滤低质量reads
- 基因组组装:
- 如果只有二代数据,用SPAdes组装
- 如果有二代+三代数据,用Unicycler做混合组装,争取得到完成图
- 组装评估:用QUAST看N50、contig数等连续性指标
- 基因预测和注释:用Prokka做快速注释,得到基因预测结果、CDS、tRNA、rRNA等
- 物种鉴定:用fastANI做ANI分析,与模式菌株比较确认物种
- 功能注释:用eggNOG-mapper做综合注释(COG/KEGG/GO),根据需求用ABRicate做耐药/毒力注释
- 比较基因组:如果有多个菌株,用Panaroo做泛基因组分析,用核心基因建进化树
- 变异分析:如果需要SNP分析,用Snippy检测变异,提取核心SNP建树
整个流程会在公司的内部pipeline中自动化运行,但我需要理解每一步的参数含义和结果解读,以便和客户沟通。
5. 易错/易混淆点¶
5.1 ANI vs AAI vs DDH¶
| 方法 | 比较层面 | 同种阈值 | 优缺点 |
|---|---|---|---|
| ANI | 核苷酸 | 95-96% | 当前金标准,计算方法,可重复 |
| AAI | 氨基酸 | ~65% | 适合远缘比较(不同属甚至不同科) |
| DDH | DNA杂交(实验) | 70% | 传统金标准,但费时、不可重复 |
关键区别:ANI和AAI都是计算方法,DDH是实验方法。ANI适合近缘比较(种水平),AAI适合远缘比较(属/科水平)。
5.2 MAG vs SAG vs Isolate Genome¶
| 类型 | 全称 | 来源 | 特点 |
|---|---|---|---|
| MAG | Metagenome-Assembled Genome | 宏基因组分箱 | 可能不完整/有污染,来自未培养微生物 |
| SAG | Single-cell Amplified Genome | 单细胞测序 | 覆盖度不均匀,扩增偏好 |
| Isolate Genome | 分离培养基因组 | 纯培养菌株 | 质量最高,但很多菌不可培养 |
面试要点:MAG的优势是可以获取不可培养微生物的基因组(99%的环境微生物无法培养),但质量不如纯培养基因组。
5.3 Contig vs Scaffold vs Chromosome¶
Contig (重叠群):
连续的、无gap的序列
← 直接从reads组装得到
Scaffold (支架):
多个contigs按顺序排列,中间用N填充gap
← 利用mate-pair/Hi-C等信息连接contigs
Chromosome (染色体):
完整的、环形闭合的基因组序列
← 完成图级别,无gap
示意:
[====contig1====]---NNN---[===contig2===]---NNN---[====contig3====]
连续序列 gap 连续序列 gap 连续序列
|<─────────────── scaffold ────────────────────────────────────>|
5.4 N50的含义和计算¶
N50 不是"第50条contig的长度",也不是"平均长度"!
N50的正确定义:
1. 将所有contigs按长度从大到小排列
2. 从最长的开始累加长度
3. 当累加长度 ≥ 总长度的50%时
4. 对应那条contig的长度就是N50
特点:
- N50越大 → 组装越好(连续性高)
- N50受最大几条contig影响大
- L50:达到50%总长所需的最少contig数(越少越好)
常见误解:
× N50是中位数长度 → 错!
× N50是平均长度 → 错!
× N50越大基因组越大 → 错!N50反映连续性,不是基因组大小
5.5 二代组装为什么很难得到完成图¶
核心原因:读长短 + 重复区域
细菌基因组中的重复区域:
- rRNA操纵子:5-7个拷贝,每个约5kb
- IS元件(插入序列):多拷贝,0.7-2.5kb
- 转座子
- 噬菌体序列
当重复区域长度 > 读长时:
reads无法跨越重复区 → 组装图中产生分支/环 → contig在重复区边界断裂
解决方案:
1. 三代长读长可以直接跨越重复区
2. 二代+三代混合组装(Unicycler)
3. Hi-C辅助scaffolding
5.6 SPAdes vs MEGAHIT 选择¶
| SPAdes | MEGAHIT | |
|---|---|---|
| 适用 | 单菌基因组 | 宏基因组 |
| 内存 | 较大 | 小(succinct de Bruijn图) |
| 速度 | 较慢 | 快 |
| 质量 | 单菌组装质量更高 | 宏基因组组装效果好 |
| k-mer | 自动多k-mer迭代 | 也支持多k-mer |
| 宏基因组 | 有metaSPAdes模式 | 原生支持 |
面试记忆:单菌用SPAdes,宏基因组用MEGAHIT。
5.7 Prokka vs Prodigal¶
| Prokka | Prodigal | |
|---|---|---|
| 本质 | 完整注释流程 | 仅基因预测工具 |
| 功能 | 基因预测 + 功能注释 + RNA预测 | 仅预测ORF |
| 输出 | GFF/GBK/FAA/FFN等全套 | GFF + FAA + FFN |
| 关系 | Prokka内部调用Prodigal做基因预测 | 被Prokka调用 |
类比:Prodigal是发动机,Prokka是整辆车。
6. 细菌基因组分析完整流程图¶
原始测序数据(Illumina / PacBio / Nanopore)
↓
质控(fastp / NanoPlot / NanoFilt)
↓
基因组组装
├── 二代:SPAdes
├── 三代:Flye / Canu / Hifiasm
└── 混合:Unicycler
↓
组装评估(QUAST + BUSCO)
↓
组装后打磨(三代用Pilon/Medaka纠错)
↓
物种鉴定
├── ANI分析(fastANI)
├── 16S rRNA比对
└── GTDB-Tk分类
↓
基因预测与注释
├── Prokka(快速注释)
├── PGAP(NCBI提交)
└── eggNOG-mapper(功能注释)
↓
下游分析(根据项目需求)
├── 比较基因组(Panaroo泛基因组)
├── SNP/进化分析(Snippy + IQ-TREE)
├── 耐药基因分析(ABRicate/RGI)
├── 毒力因子分析(ABRicate + VFDB)
└── 基因组岛/噬菌体预测(IslandViewer/PHASTER)
若为宏基因组:
组装(MEGAHIT) → Binning(MetaBAT2) → MAG质量评估(CheckM)
↓
同上游分析流程
7. 面试加分点¶
7.1 GTDB-Tk(新一代分类工具)¶
| 特征 | 说明 |
|---|---|
| 全称 | Genome Taxonomy Database Toolkit |
| 作用 | 基于基因组的标准化分类 |
| 方法 | 120个细菌标记基因 + ANI + 系统发育 |
| 优势 | 统一分类标准,解决16S和传统分类的不一致 |
| 场景 | MAG的物种分类注释 |
7.2 百迈客实习中的细菌基因组经验总结¶
在百迈客做细菌基因组项目的经验: 1. 大部分项目是二代测序的草图基因组,用SPAdes组装,Prokka注释 2. 追求完成图的项目会加三代测序,用Unicycler混合组装 3. 比较基因组项目需要多菌株的泛基因组分析(Panaroo)和进化树构建 4. 临床相关项目会加耐药基因和毒力因子分析 5. 质量评估贯穿始终:QUAST看组装、CheckM看MAG、BUSCO看完整性
7.3 常见细菌基因组大小参考¶
| 物种 | 基因组大小 | GC% | 基因数 |
|---|---|---|---|
| E. coli K-12 | ~4.6 Mb | ~50% | ~4,300 |
| S. aureus | ~2.8 Mb | ~33% | ~2,600 |
| B. subtilis | ~4.2 Mb | ~43% | ~4,200 |
| M. tuberculosis | ~4.4 Mb | ~65% | ~4,000 |
| P. aeruginosa | ~6.3 Mb | ~66% | ~5,600 |
面试时如果被问到"你组装的基因组大约多大",可以参考上表判断是否合理。
8. 名词中英对照速查¶
| 中文 | 英文 | 缩写 |
|---|---|---|
| 平均核苷酸一致性 | Average Nucleotide Identity | ANI |
| 宏基因组组装基因组 | Metagenome-Assembled Genome | MAG |
| 泛基因组 | Pan-genome | — |
| 核心基因组 | Core genome | — |
| 开放阅读框 | Open Reading Frame | ORF |
| 单核苷酸多态性 | Single Nucleotide Polymorphism | SNP |
| 从头组装 | de novo assembly | — |
| 重叠群 | Contig | — |
| 支架 | Scaffold | — |
| 完成图 | Complete genome | — |
| 草图 | Draft genome | — |
| 覆盖深度 | Coverage / Sequencing depth | — |
| 分箱 | Binning | — |
| 完整度 | Completeness | — |
| 污染度 | Contamination | — |
| 基因预测 | Gene prediction / Gene calling | — |
| 功能注释 | Functional annotation | — |
| 比较基因组学 | Comparative genomics | — |
| 进化树 | Phylogenetic tree | — |
🔄 最新版本动态(2026年4月更新)¶
| 工具 | 最新版本 | 关键更新 |
|---|---|---|
| CheckM2 | v1.1.0 | ML模型重训练,修复DIAMOND注释不一致问题,新数据库不向下兼容旧版本 |
| GTDB | R11-RS232 | 901,341个基因组,2026年4月发布 |
| GTDB-Tk | v2.6.1 (v2.7.0含skani) | v2.7.0将数据库从198GB压缩至98GB |
| fastANI | 持续维护 | 仍是ANI计算最快的工具 |
⚠️ 注意:CheckM2 v1.1.0的模型和数据库与v1.0.2不兼容,需要创建全新conda环境。GTDB R226开始使用CheckM2 v1.0.2的质量评分替代CheckM1,部分物种因质量评分变化而被重新分类。
📌 面试加分: - "CheckM2是基于机器学习的MAG质量评估工具,不依赖特定谱系的标记基因集,对Patescibacteria等基因组缩减的类群也能准确评估" - "GTDB最新版R11已经有90万+基因组,但95%以上的物种还没有基因组代表,说明微生物多样性的探索还远未饱和"