Releases: PierreBarrat/TreeTools.jl
Releases · PierreBarrat/TreeTools.jl
v0.8.0
TreeTools v0.8.0
Breaking: API cleanup
- Reduced namespace footprint: many functions demoted from
exporttopublic(node2tree,prunesubtree!,binarize!,ladderize!,check_tree,arecompatible,iscompatible,delete_branches!,print_tree_ascii,share_labels,divtime,distance_matrix) newickis now exported as the primary function to get a Newick string;write_newick(tree)is deprecated in its favour- All
@deprecateentries centralized inTreeTools.jl - New deprecations:
divtime→distance,POT/POTleaves→traversal(tree, :postorder),write_newick(tree)→newick(tree) - Removed dead code:
parse_bootstrapstub,__subtree_prune_regraft!
New features
diameter: O(n) tree diameter function using a post-order recursive passgraftnode!: loop detection via asafe=true/falsekwarg; previously grafting a node onto one of its own descendants would silently corrupt the tree
Bug fixes
delete_null_branches!: was calling theTreeNode-leveldelete_branches!instead of theTree-level one, leaving stale entries inlnodes— nodes appeared deleted from the structure but were still visible vianodes(tree)
Documentation
- Completed
modifying_the_tree.md: delete, graft, insert, and rooting sections with doctests - Added
delete_null_branches!section with regression doctest - Added
diameteranddistance_matrixtouseful_functions.md
CI
- Minimum Julia version lowered from 1.12 to 1.11 (actual minimum based on stdlib compat entries)
- CI matrix now covers Julia 1.11, 1.12, and nightly (nightly allowed to fail)
Merged pull requests:
- Minor refactor (#56) (@PierreBarrat)
Closed issues:
- Upgrade ResumableFunctions to v1 (#52)
v0.7.5
TreeTools v0.7.5
v0.7.4
TreeTools v0.7.4
v0.7.3
TreeTools v0.7.3
Merged pull requests:
- fix root_like_model! in the case of models with a polytomy at root (#55) (@PierreBarrat)
v0.7.2
TreeTools v0.7.2
Merged pull requests:
- add ArgCheck to deps - remove most @Assert - require positive branch len (#53) (@PierreBarrat)
- created submodule - implemented basic birth_death - write tests (#54) (@PierreBarrat)