|
A library for working with phylogenetic and population genetic data.
v0.32.0
|
|
Go to the documentation of this file. 1 #ifndef GENESIS_TREE_FUNCTION_MANIPULATION_H_
2 #define GENESIS_TREE_FUNCTION_MANIPULATION_H_
80 template<
class NodeDataType = CommonNodeData,
class EdgeDataType = CommonEdgeData >
84 for(
size_t i = 0; i < tree.node_count(); ++i ) {
85 tree.node_at(i).reset_data( NodeDataType::create() );
87 for(
size_t i = 0; i < tree.edge_count(); ++i ) {
88 tree.edge_at(i).reset_data( EdgeDataType::create() );
131 TreeNode&
add_new_node( Tree& tree, TreeNode& target_node );
175 TreeEdge& target_edge,
176 std::function<
void( TreeEdge& target_edge, TreeEdge& new_edge )> adjust_edges = {}
214 TreeEdge& target_edge,
215 std::function<
void( TreeEdge& target_edge, TreeEdge& new_edge )> adjust_edges = {}
235 void delete_node( Tree& tree, TreeNode& target_node );
261 TreeNode& target_node,
262 std::function<
void( TreeEdge& remaining_edge, TreeEdge& deleted_edge )> adjust_edges = {}
292 TreeEdge& target_edge,
293 std::function<
void( TreeNode& remaining_node, TreeNode& deleted_node )> adjust_nodes = {}
334 TreeEdge& target_edge,
335 std::function<
void( TreeEdge& target_edge, TreeEdge& new_edge )> adjust_edges = {}
353 std::function<
void( TreeEdge& target_edge, TreeEdge& new_edge )> adjust_edges = {}
367 std::function<
void( TreeEdge& remaining_edge, TreeEdge& deleted_edge )> adjust_edges = {}
431 #endif // include guard
void delete_zero_branch_length_edges(Tree &tree, bool include_leaf_edges)
Delete (contract) all branches of a CommonTree that have branch length zero.
TreeNode & add_new_node(Tree &tree, TreeNode &target_node)
Add a new Node as a leaf to an existing Node.
TreeNode & add_new_leaf_node(Tree &tree, TreeEdge &target_edge, std::function< void(TreeEdge &target_edge, TreeEdge &new_edge)> adjust_edges)
Add a new Node as a leaf to an existing Edge, by also adding a new Node in the middle of that Edge.
void change_rooting(Tree &tree, TreeLink &at_link)
"Reroot" the Tree at the given TreeLink.
void ladderize(Tree &tree, LadderizeOrder order)
Ladderize a Tree, that is, order its subtrees by size.
Class for representing phylogenetic trees.
void make_unrooted(Tree &tree, std::function< void(TreeEdge &remaining_edge, TreeEdge &deleted_edge)> adjust_edges)
Unroot a Tree.
Container namespace for all symbols of genesis in order to keep them separate when used as a library.
void delete_edge(Tree &tree, TreeEdge &target_edge, std::function< void(TreeNode &remaining_node, TreeNode &deleted_node)> adjust_nodes)
Delete a TreeEdge from a Tree, that is, contract the two TreeNodes at its ends into one TreeNode.
Tree minimal_tree_topology()
Create a minimal Tree that can be used with manipulation functions such as add_new_node() or add_new_...
void delete_node(Tree &tree, TreeNode &target_node)
Delete a TreeNode from a Tree.
void delete_subtree(Tree &tree, Subtree const &subtree)
Delete a complete Subtree from a Tree.
Tree minimal_tree()
Create a minimal Tree that can be used with manipulation functions such as add_new_node() or add_new_...
void delete_leaf_node(Tree &tree, TreeNode &target_node)
Delete a leaf TreeNode.
void delete_linear_node(Tree &tree, TreeNode &target_node, std::function< void(TreeEdge &remaining_edge, TreeEdge &deleted_edge)> adjust_edges)
Delete a "linear" TreeNode from a Tree, that is, a node with two neighbours.
TreeNode & make_rooted(Tree &tree, TreeEdge &target_edge, std::function< void(TreeEdge &target_edge, TreeEdge &new_edge)> adjust_edges)
Root a Tree at a given TreeEdge.