系统发育树构建 — IQ-TREE 最大似然法¶
一句话概述:IQ-TREE 是目前最主流的最大似然法建树软件,内置 ModelFinder 自动选模型 + UFBoot 超快自展检验,一条命令完成从模型选择到建树的全流程。
核心知识点速查表¶
| 概念 | 白话解释 |
|---|---|
| 最大似然法(ML) | 找一棵树,使得观察到当前序列的概率最大 |
| 替代模型 | 描述碱基/氨基酸如何互相变化的数学模型(如 GTR+G) |
| ModelFinder | IQ-TREE 内置的模型选择工具,比 jModelTest 快 10~100 倍 |
| UFBoot | 超快自展检验,比 RAxML 快 10~40 倍,评估分支可信度 |
| SH-aLRT | 另一种快速分支支持度检验,与 UFBoot 互补 |
| 分区模型 | 不同基因/区域用不同进化模型(如 gene1 用 GTR,gene2 用 HKY) |
| gCF/sCF | 基因/位点一致性因子,衡量基因树与物种树的一致程度 |
| IQ-TREE 3 | 2026 年发布的最新大版本(Wong et al., 2026),支持更复杂的进化模型 |
一、为什么选 IQ-TREE?(白话版)¶
建系统发育树有三大方法: 1. 距离法(如 Neighbor-Joining):快但粗糙,像用尺子量远近 2. 最大简约法(如 PAUP):找变化最少的树,但假设太简单 3. 最大似然法(如 IQ-TREE、RAxML):用概率模型算最合理的树,目前最主流*
IQ-TREE 的优势:一条命令搞定模型选择 + 建树 + 支持度评估,速度快、精度高、使用简单。
二、分析流程¶
整体流程¶
第 1 步:安装¶
# 方法1:conda安装(推荐)
conda install -c bioconda iqtree # 安装最新版
# 方法2:下载预编译二进制
wget https://github.com/iqtree/iqtree2/releases/download/v2.3.6/iqtree-2.3.6-Linux-intel.tar.gz
tar -xzf iqtree-2.3.6-Linux-intel.tar.gz # 解压
export PATH=$PATH:$(pwd)/iqtree-2.3.6-Linux-intel/bin # 添加到PATH
# 验证安装
iqtree2 --version # 查看版本
第 2 步:序列比对(前置步骤)¶
# IQ-TREE 需要已比对好的多序列比对(MSA)作为输入
# 常用比对工具:MAFFT、MUSCLE、ClustalW
# 用 MAFFT 做多序列比对(推荐)
mafft --auto input.fasta > aligned.fasta # 自动选择算法比对
# 检查比对质量(用 TrimAl 修剪低质量区域)
trimal -in aligned.fasta \ # 输入比对文件
-out trimmed.fasta \ # 输出修剪后的文件
-automated1 # 自动选择修剪策略
第 3 步:一条命令建树(最简用法)¶
# 最简单的用法:自动选模型 + 建树 + 1000次UFBoot
iqtree2 -s trimmed.fasta \ # 输入比对文件(-s = sequence)
-m MFP \ # ModelFinder Plus(自动选最佳模型)
-bb 1000 \ # 1000次UFBoot超快自展检验
-alrt 1000 \ # 1000次SH-aLRT检验(推荐与UFBoot一起用)
-nt AUTO \ # 自动检测并使用最优线程数
-pre output_tree # 输出文件前缀
# 输出文件说明:
# output_tree.iqtree — 主报告(包含模型参数、树评分等)
# output_tree.treefile — 最佳树(Newick格式,可直接可视化)
# output_tree.contree — 带支持度的一致树
# output_tree.log — 运行日志
# output_tree.model.gz — 模型选择结果
# output_tree.splits.nex — Nexus格式的分支信息
第 4 步:理解输出结果¶
# 查看选中的模型
grep "Best-fit model" output_tree.iqtree
# 例如:Best-fit model: GTR+F+I+G4 chosen according to BIC
# GTR = General Time Reversible(最通用的DNA替代模型)
# +F = 使用经验碱基频率
# +I = 包含不变位点比例
# +G4 = Gamma分布(4个类别)模拟位点间速率变异
# 查看树的对数似然值
grep "Log-likelihood" output_tree.iqtree
# 值越大(越不负)说明树越好
# 查看UFBoot支持度解读
# UFBoot >= 95% → 强支持(相当于传统bootstrap的95%)
# SH-aLRT >= 80% → 分支可信
# 建议标准:UFBoot >= 95% AND SH-aLRT >= 80%
第 5 步:蛋白质序列建树¶
# 蛋白质序列的用法类似,IQ-TREE 自动检测序列类型
iqtree2 -s protein_aligned.fasta \ # 蛋白质比对文件
-m MFP \ # 自动选蛋白质模型(如 LG+G4, WAG+I+G4)
-bb 1000 \
-alrt 1000 \
-nt AUTO
# 也可以指定蛋白质序列类型
iqtree2 -s protein.fasta -st AA -m MFP -bb 1000 -alrt 1000
# -st AA 表示氨基酸序列(默认自动检测)
第 6 步:分区模型(多基因联合建树)¶
# 当有多个基因/区域时,每个区域可能有不同的进化速率和模型
# 需要准备分区文件
# 分区文件格式(partition.nex):
cat << 'EOF' > partition.nex
#nexus
begin sets;
charset gene1 = 1-500; /* 第1到500位是gene1 */
charset gene2 = 501-1200; /* 第501到1200位是gene2 */
charset gene3 = 1201-1800; /* 第1201到1800位是gene3 */
charpartition mymodel =
gene1: gene1,
gene2: gene2,
gene3: gene3;
end;
EOF
# 运行分区模型建树
iqtree2 -s concatenated.fasta \ # 拼接后的序列文件
-p partition.nex \ # 分区文件(-p = partition)
-m MFP \ # 每个分区自动选模型
-bb 1000 \
-alrt 1000 \
-nt AUTO
# 高级:按密码子位置分区(对编码序列很有用)
cat << 'EOF' > codon_partition.nex
#nexus
begin sets;
charset codon1 = 1-1500\3; /* 密码子第1位:1,4,7,...1498 */
charset codon2 = 2-1500\3; /* 密码子第2位:2,5,8,...1499 */
charset codon3 = 3-1500\3; /* 密码子第3位:3,6,9,...1500 */
end;
EOF
第 7 步:可视化¶
# 方法1:FigTree(GUI工具)
# 下载 FigTree,直接打开 .treefile 文件
# 方法2:用 R 的 ggtree 包
cat << 'EOF' > plot_tree.R
library(ggtree) # 加载ggtree包
library(treeio) # 加载treeio包
# 读取带支持度的树
tree <- read.tree("output_tree.contree") # 读取一致树
# 基本树形图
p <- ggtree(tree) + # 画树
geom_tiplab(size=2) + # 添加末端标签
geom_nodelab(aes(label=label), # 添加节点支持度
size=2, hjust=-0.2) +
theme_tree2() + # 添加刻度
ggtitle("ML Phylogenetic Tree (IQ-TREE)") # 标题
ggsave("phylogenetic_tree.pdf", p, # 保存为PDF
width=10, height=15)
EOF
Rscript plot_tree.R
# 方法3:iTOL在线可视化
# 1. 访问 https://itol.embl.de/
# 2. 上传 .treefile 文件
# 3. 在线编辑颜色、标注、分支样式等
# 4. 导出为PDF/SVG
三、高级功能¶
3.1 一致性因子(Concordance Factors)¶
# 先建单基因树
iqtree2 -S partition.nex \ # -S 表示每个分区独立建树
--prefix loci_trees # 输出前缀
# 计算 gCF(基因一致性因子)和 sCF(位点一致性因子)
iqtree2 -t output_tree.treefile \ # 物种树
--gcf loci_trees.treefile \ # 单基因树集合
-s concatenated.fasta \ # 序列文件
--scf 100 \ # 采样100个四分组计算sCF
--prefix concord # 输出前缀
# gCF = 支持该分支的基因树比例
# sCF = 支持该分支的信息位点比例
# gCF/sCF 低 + UFBoot 高 → 可能存在不完全谱系分选(ILS)
3.2 拓扑检验¶
# AU test(约似乎无偏检验)比较不同树拓扑
iqtree2 -s trimmed.fasta \
-z candidate_trees.txt \ # 候选树集合(每行一棵树,Newick格式)
-m GTR+G4 \ # 指定模型
-n 0 \ # 不搜索新树
-zb 10000 \ # 10000次RELL重抽样
-au # 执行AU test
# 结果在 .iqtree 文件中查看
# p-AU > 0.05 的树不能被拒绝
四、常见报错与解决¶
| 报错信息 | 原因 | 解决方法 |
|---|---|---|
Alignment has X sequences but 0 sites | 比对文件格式错误 | 检查文件格式(FASTA/PHYLIP/NEXUS) |
ERROR: No parsimony-informative sites | 序列太保守,没有变异位点 | 检查序列质量和比对结果 |
WARNING: Number of threads seems too big | 线程数超过位点数 | 减少线程数或用 -nt AUTO |
checkpoint file exists | 之前的运行有残留 | 删除 .ckp.gz 文件或换前缀 |
Estimated memory: XXX GB | 内存需求大 | 减少序列数或使用 -mem 限制 |
| UFBoot 值全是 100% | 序列太长或太相似 | 正常现象,但要注意过拟合 |
| 树的拓扑与已知关系矛盾 | 长枝吸引或模型选择不当 | 尝试不同模型,检查长枝效应 |
五、面试高频问题¶
Q1:IQ-TREE 和 RAxML 的区别?
两者都是 ML 建树软件。IQ-TREE 内置 ModelFinder(自动选模型),UFBoot 更快更准确。RAxML 在超大数据集上可能更快(RAxML-NG),但需要预先指定模型。近年论文中 IQ-TREE 使用率已超过 RAxML。
Q2:UFBoot 和传统 bootstrap 的区别?
传统 bootstrap 对每次重抽样都重新搜索最优树(很慢),UFBoot 用 RELL 近似(快 10~40 倍),且 UFBoot 的偏差更小。UFBoot 95% 的含义约等于传统 bootstrap 的 95%。
Q3:什么是 BIC,为什么用 BIC 选模型?
BIC(贝叶斯信息准则)= -2ln(L) + k·ln(n),同时考虑似然值和模型复杂度。相比 AIC,BIC 更惩罚复杂模型,倾向于选择更简单的模型,减少过拟合风险。
Q4:gCF 低但 UFBoot 高说明什么?
说明该分支在联合数据中有强支持,但单个基因间存在冲突。可能原因是不完全谱系分选(ILS)、基因流、或基因树估计误差。这是一个重要的进化信号,不是建树的错误。
六、速查表¶
# === IQ-TREE 速查 ===
# 标准建树(最常用)
iqtree2 -s aligned.fasta -m MFP -bb 1000 -alrt 1000 -nt AUTO
# 蛋白质建树
iqtree2 -s protein.fasta -st AA -m MFP -bb 1000 -alrt 1000
# 分区模型建树
iqtree2 -s concat.fasta -p partition.nex -m MFP -bb 1000
# 密码子模型建树
iqtree2 -s coding.fasta -st CODON -m MFP -bb 1000
# 一致性因子
iqtree2 -S partition.nex --prefix loci
iqtree2 -t species.tree --gcf loci.treefile -s concat.fasta --scf 100
# 拓扑检验
iqtree2 -s aligned.fasta -z trees.txt -n 0 -zb 10000 -au
# 常用参数速记:
# -s 序列文件
# -m 模型(MFP=自动选择)
# -bb UFBoot次数
# -alrt SH-aLRT次数
# -nt 线程数(AUTO自动)
# -p 分区文件
# -st 序列类型(DNA/AA/CODON)
# -pre 输出前缀
参考资料:IQ-TREE 2 (Minh et al. 2020, MBE)、IQ-TREE 3 Manual (2025)、ggtree R包、iTOL在线工具