用途
ETE(Environment for Tree Exploration)是一个用于系统发育树和层次树分析的工具包。它面向系统发育基因组学研究和聚类分析,提供树的读取与写出、操作、分析与可视化能力,并可整合生物学数据库信息。
主要能力
1. 树的操作与分析
- 树 I/O:支持读取和写出 Newick、NHX、PhyloXML、NeXML 格式。
- 遍历方式:支持前序(preorder)、后序(postorder)、层序(levelorder)遍历。
- 拓扑修改:修剪(prune)、重定根(root)、折叠节点、解析多分支(polytomy)。
- 距离计算:计算分支长度和节点间的拓扑距离。
- 树比较:计算 Robinson-Foulds 距离并识别拓扑差异。
提供了脚本 scripts/tree_operations.py 用于命令行操作,例如:
# Display tree statistics
python scripts/tree_operations.py stats tree.nw
# Convert format
python scripts/tree_operations.py convert tree.nw output.nw --in-format 0 --out-format 1
# Reroot tree
python scripts/tree_operations.py reroot tree.nw rooted.nw --midpoint
# Prune to specific taxa
python scripts/tree_operations.py prune tree.nw pruned.nw --keep-taxa "sp1,sp2,sp3"
# Show ASCII visualization
python scripts/tree_operations.py ascii tree.nw
2. 系统发育分析
通过 PhyloTree 对基因树进行进化事件检测:
- 序列比对整合:将树与多序列比对(FASTA、Phylip)关联。
- 物种命名:从基因名中自动或自定义提取物种名。
- 进化事件:使用物种重叠(Species Overlap)或树调和(tree reconciliation)检测复制与物种形成事件。
- 直系同源检测:基于进化事件识别 orthologs 和 paralogs。
- 基因家族分析:按复制事件拆分树,折叠谱系特异性扩张。
3. NCBI 分类学整合
- 数据库访问:自动下载并本地缓存 NCBI 分类学数据(约 300MB)。
- TaxID/名称转换:在分类学 ID 与学名之间转换。
- 谱系获取:获取完整的进化谱系。
- 分类学树构建:构建连接指定分类单元的系统树。
- 树注释:自动为树添加分类学信息。
4. 树可视化
- 输出格式:PNG(栅格)、PDF、SVG(矢量),适合出版物使用。
- 布局模式:矩形和圆形树布局。
- 交互式 GUI:支持缩放、平移和搜索。
- 自定义样式:NodeStyle 控制节点外观(颜色、形状、大小)。
- Faces:向节点添加图形元素(文本、图像、图表、热图)。
- 布局函数:根据节点属性动态设置样式。
提供了脚本 scripts/quick_visualize.py,例如:
# Basic visualization
python scripts/quick_visualize.py tree.nw output.pdf
# Circular layout with custom styling
python scripts/quick_visualize.py tree.nw output.pdf --mode c --color-by-support
# High-resolution PNG
python scripts/quick_visualize.py tree.nw output.png --width 1200 --height 800 --units px --dpi 300
# Custom title and styling
python scripts/quick_visualize.py tree.nw output.pdf --title "Species Phylogeny" --show-support
5. 聚类分析
- ClusterTree:用于聚类树状图的专用类。
- 数据矩阵关联:将树叶连接到数值特征。
- 聚类指标:轮廓系数(Silhouette coefficient)、Dunn 指数、簇间/簇内距离。
- 验证:使用不同距离度量检验聚类质量。
- 热图可视化:在树旁显示数据矩阵。
6. 树比较
- Robinson-Foulds 距离:用于树比较的标准指标。
- 归一化 RF:尺度不变的距离(0.0 到 1.0)。
- 分区分析:识别独有和共享的二分区。
- 共识树:分析多棵树的支撑度。
- 批量比较:对多棵树进行两两比较。
使用方式
安装:
# Basic installation
uv pip install ete3
# With external dependencies for rendering (optional but recommended)
# On macOS:
brew install qt@5
# On Ubuntu/Debian:
sudo apt-get install python3-pyqt5 python3-pyqt5.qtsvg
# For full features including GUI
uv pip install ete3[gui]
首次使用 NCBITaxa 时会自动下载 NCBI 分类学数据库(约 300MB)到 ~/.etetoolkit/taxa.sqlite,仅发生一次:
from ete3 import NCBITaxa
ncbi = NCBITaxa() # Downloads database on first run
更新分类学数据库:
ncbi.update_taxonomy_database() # Download latest NCBI data
参考文档位于 references/ 目录,包括:api_reference.md(完整 API 文档)、workflows.md(按任务组织的工作流模式)、visualization.md(可视化指南)。
适用场景
- 系统发育基因组学流程:从基因树到直系同源识别,结合分类学注释并导出直系同源组。
- 树预处理与格式转换:批量转换格式、中点定根、修剪到目标分类单元、统计信息。
- 发表级图件制作:自定义分支颜色、支撑值标注、矢量输出(PDF/SVG)。
- 自动化树分析:批量处理目录中的树文件,标准化定根、解析多分支、过滤低支撑分支。
限制与注意事项
- 处理极大树(超过 10,000 个叶节点)时,建议使用迭代器(如
tree.iter_leaves())而非一次性加载全部叶节点(如tree.get_leaves())以降低内存占用。 tree.render()或tree.show()出现 Qt 相关错误时,需安装系统依赖(macOS:brew install qt@5;Ubuntu/Debian:sudo apt-get install python3-pyqt5 python3-pyqt5.qtsvg)。- NCBI 分类学数据库下载失败或损坏时,可调用
ncbi.update_taxonomy_database()重新下载。 - 修剪树时如用于系统发育分析,建议使用
preserve_branch_length=True保留分支长度。 - 关于具体收费、价格、平台支持范围、效果指标等信息,资料中暂未提供。