SuperAPI AI 工具集

etetoolkit

数据与分析

查看项目

更新于 10-16 04:03

技能介绍

用途

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 保留分支长度。
  • 关于具体收费、价格、平台支持范围、效果指标等信息,资料中暂未提供。