A toolkit for working with phylogenetic data.
v0.18.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
function/tree_set.hpp
Go to the documentation of this file.
1 #ifndef GENESIS_TREE_FUNCTION_TREE_SET_H_
2 #define GENESIS_TREE_FUNCTION_TREE_SET_H_
3 
4 /*
5  Genesis - A toolkit for working with phylogenetic data.
6  Copyright (C) 2014-2017 Lucas Czech
7 
8  This program is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 3 of the License, or
11  (at your option) any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program. If not, see <http://www.gnu.org/licenses/>.
20 
21  Contact:
22  Lucas Czech <lucas.czech@h-its.org>
23  Exelixis Lab, Heidelberg Institute for Theoretical Studies
24  Schloss-Wolfsbrunnenweg 35, D-69118 Heidelberg, Germany
25 */
26 
34 #include <functional>
35 
36 namespace genesis {
37 namespace tree {
38 
39 // =================================================================================================
40 // Forward Declarations
41 // =================================================================================================
42 
43 class Tree;
44 class TreeNode;
45 class TreeEdge;
46 class TreeSet;
47 
48 // =================================================================================================
49 // Tree Set Functions
50 // =================================================================================================
51 
52 Tree * find_tree ( TreeSet & tset, std::string const& name);
53 Tree const* find_tree ( TreeSet const& tset, std::string const& name);
54 
55 Tree average_branch_length_tree( TreeSet const& tset );
56 
57 // =================================================================================================
58 // Comparators
59 // =================================================================================================
60 
61 bool all_equal(
62  TreeSet const& tset,
63  std::function<bool( TreeNode const&, TreeNode const& )> node_comparator,
64  std::function<bool( TreeEdge const&, TreeEdge const& )> edge_comparator
65 );
66 
67 // bool all_equal( TreeSet const& tset );
68 
69 bool all_identical_topology( TreeSet const& tset );
70 
71 } // namespace tree
72 } // namespace genesis
73 
74 #endif // include guard
Tree average_branch_length_tree(TreeSet const &tset)
Return a Tree where the branch lengths are the average of the Trees in the TreeSet, given that they all have the same topology.
Tree * find_tree(TreeSet &tset, std::string const &name)
Get the first Tree in a TreeSet that is stored with a given name, or nullptr if not found...
bool all_identical_topology(TreeSet const &tset)
Compare whether all Trees in a TreeSet are equal using their default comparision operators for nodes ...
bool all_equal(TreeSet const &tset, std::function< bool(TreeNode const &, TreeNode const &)> node_comparator, std::function< bool(TreeEdge const &, TreeEdge const &)> edge_comparator)
Compare whether all Trees in a TreeSet are equal using a given comparator functional.