A library for working with phylogenetic and population genetic data.
v0.32.0
tree/function/operators.hpp File Reference

Detailed Description

Tree operator functions.

Definition in file tree/function/operators.hpp.

#include "genesis/tree/tree.hpp"
#include <cassert>
#include <functional>
#include <iosfwd>
#include <memory>
#include <typeinfo>

Go to the source code of this file.

Namespaces

 genesis
 Container namespace for all symbols of genesis in order to keep them separate when used as a library.
 
 genesis::tree
 

Functions

bool belongs_to (Subtree const &subt, Tree const &tree)
 Return whether the Subtree belongs to the Tree, i.e., whether its link is owned by the Tree. More...
 
bool belongs_to (Tree const &tree, Subtree const &subt)
 Return whether the Subtree belongs to the Tree, i.e., whether its link is owned by the Tree. More...
 
bool belongs_to (Tree const &tree, TreeEdge const &edge)
 Return whether the TreeEdge belongs to the Tree, i.e., whether it is owned by the Tree. More...
 
bool belongs_to (Tree const &tree, TreeLink const &link)
 Return whether the TreeLink belongs to the Tree, i.e., whether it is owned by the Tree. More...
 
bool belongs_to (Tree const &tree, TreeNode const &node)
 Return whether the TreeNode belongs to the Tree, i.e., whether it is owned by the Tree. More...
 
bool belongs_to (TreeEdge const &edge, Tree const &tree)
 Return whether the TreeEdge belongs to the Tree, i.e., whether it is owned by the Tree. More...
 
bool belongs_to (TreeLink const &link, Tree const &tree)
 Return whether the TreeLink belongs to the Tree, i.e., whether it is owned by the Tree. More...
 
bool belongs_to (TreeNode const &node, Tree const &tree)
 Return whether the TreeNode belongs to the Tree, i.e., whether it is owned by the Tree. More...
 
Tree convert (Tree const &source, std::function< std::unique_ptr< BaseNodeData >(BaseNodeData const &node_data)> node_data_converter, std::function< std::unique_ptr< BaseEdgeData >(BaseEdgeData const &edge_data)> edge_data_converter)
 Create a tree with the same topology as the source tree, while converting its data. More...
 
TreeEdge * edge_between (TreeNode &lhs, TreeNode &rhs)
 Return the TreeEdge between two TreeNode&s, if they are neighbours, or nullptr otherwise. More...
 
TreeEdge const * edge_between (TreeNode const &lhs, TreeNode const &rhs)
 Return the TreeEdge between two TreeNode&s, if they are neighbours, or nullptr otherwise. More...
 
bool equal (std::vector< Tree > const &trees, std::function< bool(TreeNode const &, TreeNode const &) > node_comparator, std::function< bool(TreeEdge const &, TreeEdge const &) > edge_comparator)
 Compare all trees for equality given binary comparator functionals for their nodes and edges. More...
 
bool equal (Tree const &lhs, Tree const &rhs, std::function< bool(TreeNode const &, TreeNode const &) > node_comparator, std::function< bool(TreeEdge const &, TreeEdge const &) > edge_comparator)
 Compare two trees for equality given binary comparator functionals for their nodes and edges. More...
 
bool identical_topology (std::vector< Tree > const &trees, bool identical_indices=true)
 Return whether all trees have an identical topology. More...
 
bool identical_topology (Tree const &lhs, Tree const &rhs, bool identical_indices=true)
 Return whether both trees have an identical topology. More...
 
std::string print_gist (Tree const &tree, long items)
 
std::string print_info (Tree const &tree)
 
std::string print_info (TreeEdge const &edge)
 
std::string print_info (TreeLink const &link)
 
std::string print_info (TreeNode const &node)
 
template<class NodeDataType , class EdgeDataType >
bool tree_data_is (Tree const &tree, bool allow_null=false)
 Check whether the data of the nodes and edges of the Tree are exactly of the specified data types. More...
 
template<class NodeDataType , class EdgeDataType >
bool tree_data_is_derived_from (Tree const &tree, bool allow_null=false)
 Check whether the data of the nodes and edges of the Tree are derived from the specified data types. More...
 
bool validate_topology (Tree const &tree)
 Validate that all internal pointers of the Tree elements (TreeLinks, TreeNodes, TreeEdges) to each other are correct and that some other invariants are met. More...