ETE 系统发育树工具包
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/etetoolkit。
技能介绍
要解决什么问题
系统发育学、聚类分析和系统基因组学里,你经常要在 Newick / NHX / PhyloXML 等格式之间搬树、定根修剪、算拓扑距离,还要把基因树和 FASTA 比对对齐,推断复制与物种形成事件,并给节点挂上 NCBI 分类信息。手工脚本容易在格式细节、遍历顺序和大树内存上踩坑;出图若只用栅格图,也很难满足论文对矢量图的要求。
技能如何工作
ETE(Tree Exploration Environment)把树当作一等对象来处理,核心能力可以分成几条线:
- 树 I/O 与拓扑:读写多种 Newick 变体与 NHX 自定义特征;前序/后序/层序遍历;修剪、定根、折叠节点、解析多歧分支;Robinson–Foulds 距离与划分差异。
- 系统发育(
PhyloTree):关联多序列比对;从基因名提取物种;用物种重叠或树协调检测复制/物种形成;识别直系/旁系同源,并按复制事件拆分基因家族。 - NCBI 分类:首次使用
NCBITaxa会本地缓存 taxonomy(约 300MB);taxid 与学名互转、谱系检索、构建连接指定物种的分类树,并注释已有树。 - 可视化与聚类:矩形/圆形布局,PNG/PDF/SVG;
NodeStyle与 Faces 做节点样式与热图等;ClusterTree把叶节点与数值矩阵挂钩,配合轮廓系数等指标。
仓库里还提到 scripts/tree_operations.py、scripts/quick_visualize.py 以及 references/ 下的 API、工作流与可视化文档,适合按任务查具体用法。
适用边界与注意点
- 首次 NCBI 分类需要联网下载数据库;失败时可按文档重建
~/.etetoolkit/taxa.sqlite。 - 超大树(例如叶节点 >1 万)应用
iter_*等迭代方式,避免一次性列表展开占满内存。 tree.render()/tree.show()依赖 Qt 时,需在系统层补齐图形依赖,否则交互预览会报错。- 系统发育分析里修剪树时,文档建议
preserve_branch_length=True,避免分支长度被无意改掉。
使用场景
- 从多份基因树 Newick 出发,关联 FASTA 比对并检测复制/物种形成以整理直系同源集合
- 对一批未定根或含多歧分支的树做定根、修剪与格式统一,再计算 Robinson–Foulds 距离做拓扑对比
- 用 NCBI taxid 或学名给现有物种树补全谱系信息,并生成连接指定类群的分类树
- 把层次聚类得到的树状图与表达/特征矩阵绑定,在树旁用热图与轮廓系数检查分群质量
适合人员
- 做比较基因组学、需要从基因树协调结果里稳定划分直系/旁系同源的研究人员
- 维护演化分析流程、频繁读写 Newick/NHX 并批量预处理树文件的生物信息工程师
- 撰写系统发育论文、要把树图做成可编辑矢量图并统一节点样式与注释的演化生物学者
- 做转录组或表型聚类、希望把层次聚类树与数值矩阵一起展示和验证的数据分析人员