技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
etetoolkit【数据与研究】ETE (Environment for Tree Exploration) toolkit for phylogenetic and hierarchical tree analysis; use it when you need to parse/manipulate Newick/NHX trees, detect duplication/speciation events, integrate NCBI taxonomy, and render publication-quality figures.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
ete3 (recommended: >=3.1.0)PyQt5 (e.g., >=5.15)python3-pyqt5.qtsvg on Debian/Ubuntu)The following example is designed to be runnable end-to-end (it uses an in-memory Newick string and does not require external files).
# pip install ete3
from ete3 import Tree, TreeStyle, NodeStyle
# 1) Load a tree (Newick)
nw = "((A:0.1,B:0.2)90:0.3,(C:0.2,D:0.4)70:0.1);"
t = Tree(nw, format=1)
# 2) Basic stats
print("Leaves:", len(t))
print("Total nodes:", sum(1 for _ in t.traverse()))
# 3) Midpoint rooting
mid = t.get_midpoint_outgroup()
t.set_outgroup(mid)
# 4) Prune to taxa of interest (preserve branch lengths)
t.prune(["A", "C", "D"], preserve_branch_length=True)
# 5) Style nodes (color internal nodes by support)
ts = TreeStyle()
ts.show_leaf_name = True
ts.show_branch_support = True
for n in t.traverse():
st = NodeStyle()
if n.is_leaf():
st["fgcolor"] = "blue"
st["size"] = 8
else:
# ETE stores internal support in n.support when present
st["fgcolor"] = "darkgreen" if getattr(n, "support", 0) >= 80 else "red"
st["size"] = 5
n.set_style(st)
# 6) Render (PDF/SVG/PNG supported depending on your environment)
t.render("example_tree.pdf", tree_style=ts)
print("Wrote: example_tree.pdf")
ETE uses a format integer to control how node attributes are interpreted when reading/writing Newick. Common patterns:
format=0: flexible default (often includes branch lengths)format=1: includes internal node namesformat=2: includes support/bootstrap valuesformat=5: internal node names + branch lengthsformat=8: name + distance + support (maximal common usage)format=9: leaf names onlyformat=100: topology onlyExample:
from ete3 import Tree
t = Tree("tree.nw", format=1)
t.write(outfile="out.nw", format=5)
NHX is used to store custom per-node features. When writing, specify which features to serialize:
t.write(outfile="tree.nhx", features=["taxid", "habitat", "lineage"])
get_midpoint_outgroup() to select an outgroup that balances path lengths.preserve_branch_length=True to avoid distorting distances in phylogenetic contexts.For gene trees, PhyloTree supports event labeling on internal nodes (commonly:
evoltype == "D" for duplicationevoltype == "S" for speciation)A typical workflow is:
Tree.robinson_foulds(other_tree) returns:
rf: RF distance (number of differing bipartitions)max_rf: maximum possible RF given shared leavesNormalized RF is typically computed as rf / max_rf (when max_rf > 0).