跳转至

细菌基因组分析(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: 如何评估基因组组装质量?

参考答案:

评估基因组组装质量主要从三个维度:

  1. 连续性:用QUAST评估。看N50(越大越好,说明组装越连续)、contig数量(越少越好)、总长度(应接近预期基因组大小)、最大contig长度。N50是最重要的指标,比如细菌基因组N50达到几百kb以上说明组装质量不错。

  2. 完整性:用BUSCO评估。BUSCO用一组保守的单拷贝直系同源基因来检测基因组完整度。Complete比例越高越好,一般大于95%说明基因组比较完整。如果Duplicated很高,可能有污染或者误组装。

  3. 准确性:如果有参考基因组,可以用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质量。它的原理是:

  1. 首先确定MAG可能属于哪个系统发育谱系(lineage)
  2. 该谱系有一组应该存在且只有一个拷贝的标记基因
  3. 完整度(Completeness):找到的标记基因占预期标记基因的比例。如果90%的标记基因都找到了,完整度就是90%
  4. 污染度(Contamination):出现多拷贝的标记基因比例。单拷贝基因出现了2份,说明可能混入了其他微生物的序列

按照MIMAG标准: - 高质量MAG:完整度 > 90%,污染度 < 5% - 中等质量MAG:完整度 ≥ 50%,污染度 < 10% - 低质量MAG:完整度 < 50%

新版的CheckM2用了机器学习方法,速度更快、准确性更高,推荐使用。


★ Q7: 你在百迈客做细菌基因组项目时的流程?

参考答案:

在百迈客做细菌基因组项目,一般的标准分析流程是:

  1. 数据质控:用fastp对原始数据去接头、过滤低质量reads
  2. 基因组组装
  3. 如果只有二代数据,用SPAdes组装
  4. 如果有二代+三代数据,用Unicycler做混合组装,争取得到完成图
  5. 组装评估:用QUAST看N50、contig数等连续性指标
  6. 基因预测和注释:用Prokka做快速注释,得到基因预测结果、CDS、tRNA、rRNA等
  7. 物种鉴定:用fastANI做ANI分析,与模式菌株比较确认物种
  8. 功能注释:用eggNOG-mapper做综合注释(COG/KEGG/GO),根据需求用ABRicate做耐药/毒力注释
  9. 比较基因组:如果有多个菌株,用Panaroo做泛基因组分析,用核心基因建进化树
  10. 变异分析:如果需要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%以上的物种还没有基因组代表,说明微生物多样性的探索还远未饱和"