A library for working with phylogenetic and population genetic data.
v0.27.0
placement/function/functions.cpp File Reference

Detailed Description

Implementation of the Placement Functions.

Definition in file placement/function/functions.cpp.

#include "genesis/placement/function/functions.hpp"
#include "genesis/placement/function/helper.hpp"
#include "genesis/placement/function/operators.hpp"
#include "genesis/tree/common_tree/distances.hpp"
#include "genesis/tree/common_tree/functions.hpp"
#include "genesis/tree/function/distances.hpp"
#include "genesis/tree/function/functions.hpp"
#include "genesis/tree/function/operators.hpp"
#include "genesis/utils/core/algorithm.hpp"
#include "genesis/utils/core/std.hpp"
#include <algorithm>
#include <cassert>
#include <cmath>
#include <exception>
#include <regex>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>

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::placement
 

Functions

void adjust_branch_lengths (Sample &sample, tree::Tree const &source)
 Take the branch lengths of the source Tree and use them as the new branch lengths of the sample. More...
 
std::unordered_set< std::string > all_pquery_names (Sample const &sample)
 Return a set of all unique PqueryNames of the Pqueries of the given sample. More...
 
std::vector< int > closest_leaf_depth_histogram (Sample const &smp)
 Return a histogram representing how many placements have which depth with respect to their closest leaf node. More...
 
std::vector< int > closest_leaf_distance_histogram (Sample const &smp, const double min, const double max, const int bins=10)
 Returns a histogram counting the number of placements that have a certain distance to their closest leaf node, divided into equally large intervals between a min and a max distance. More...
 
std::vector< int > closest_leaf_distance_histogram_auto (Sample const &smp, double &min, double &max, const int bins=10)
 Returns the same type of histogram as closest_leaf_distance_histogram(), but automatically determines the needed boundaries. More...
 
std::vector< double > closest_leaf_weight_distribution (Sample const &sample)
 
void collect_duplicate_pqueries (Sample &smp)
 Find all Pqueries that share a common name and combine them into a single Pquery containing all their collective PqueryPlacements and PqueryNames. More...
 
void copy_pqueries (Sample const &source, Sample &target)
 Copy all Pqueries from the source Sample (left parameter) to the target Sample (right parameter). More...
 
void filter_max_pendant_length (Pquery &pquery, double threshold)
 Remove all PqueryPlacements that have a pendant_length above the given threshold. More...
 
void filter_max_pendant_length (Sample &sample, double threshold)
 Remove all PqueryPlacements that have a pendant_length above the given threshold from all Pqueries of the Sample. More...
 
void filter_min_accumulated_weight (Pquery &pquery, double threshold=0.99)
 Remove the PqueryPlacements with the lowest like_weight_ratio, while keeping the accumulated weight (sum of all remaining like_weight_ratios) above a given threshold. More...
 
void filter_min_accumulated_weight (Sample &smp, double threshold=0.99)
 Remove the PqueryPlacements with the lowest like_weight_ratio, while keeping the accumulated weight (sum of all remaining like_weight_ratios) above a given threshold. More...
 
void filter_min_pendant_length (Pquery &pquery, double threshold)
 Remove all PqueryPlacements that have a pendant_length below the given threshold. More...
 
void filter_min_pendant_length (Sample &sample, double threshold)
 Remove all PqueryPlacements that have a pendant_length below the given threshold from all Pqueries of the Sample. More...
 
void filter_min_weight_threshold (Pquery &pquery, double threshold=0.01)
 Remove all PqueryPlacements that have a like_weight_ratio below the given threshold. More...
 
void filter_min_weight_threshold (Sample &smp, double threshold=0.01)
 Remove all PqueryPlacements that have a like_weight_ratio below the given threshold from all Pqueries of the Sample. More...
 
void filter_n_max_weight_placements (Pquery &pquery, size_t n=1)
 Remove all PqueryPlacements but the n most likely ones from the Pquery. More...
 
void filter_n_max_weight_placements (Sample &smp, size_t n=1)
 Remove all PqueryPlacements but the n most likely ones from all Pqueries in the Sample. More...
 
template<typename F >
void filter_pqueries_by_name_ (Sample &smp, F predicate, bool remove_empty_pqueries)
 
void filter_pqueries_differing_names (Sample &sample_1, Sample &sample_2, bool remove_empty_name_pqueries=true)
 Remove all PqueryNames from the two Samples that occur in both of them. More...
 
void filter_pqueries_intersecting_names (Sample &sample_1, Sample &sample_2, bool remove_empty_name_pqueries=true)
 Remove all PqueryNames from the two Samples that are unique to each of them. More...
 
void filter_pqueries_keeping_names (Sample &smp, std::string const &regex, bool remove_empty_name_pqueries=true)
 Remove all PqueryNames which do not match the given regex. More...
 
void filter_pqueries_keeping_names (Sample &smp, std::unordered_set< std::string > const &keep_list, bool remove_empty_name_pqueries=true)
 Remove all PqueryNames which do not occur in the given keep_list. More...
 
void filter_pqueries_removing_names (Sample &smp, std::string const &regex, bool remove_empty_name_pqueries=true)
 Remove all PqueryNames which match the given regex. More...
 
void filter_pqueries_removing_names (Sample &smp, std::unordered_set< std::string > const &remove_list, bool remove_empty_name_pqueries=true)
 Remove all PqueryNames which occur in the given remove_list. More...
 
Pquery * find_pquery (Sample &smp, std::string const &name)
 Return the first Pquery that has a particular name, or nullptr of none has. More...
 
Pquery const * find_pquery (Sample const &smp, std::string const &name)
 Return the first Pquery that has a particular name, or nullptr of none has. More...
 
bool has_name (Pquery const &pquery, std::string const &name)
 Return true iff the given Pquery contains a particular name. More...
 
bool has_name (Sample const &smp, std::string const &name)
 Return true iff the given Sample contains a Pquery with a particular name, i.e., a PqueryName whose name member equals the given name. More...
 
void merge_duplicate_names (Pquery &pquery)
 Merge all PqueryNames that have the same name property into one, while adding up their multiplicity. More...
 
void merge_duplicate_names (Sample &smp)
 Call merge_duplicate_names() for each Pquery of the Sample. More...
 
void merge_duplicate_placements (Pquery &pquery)
 Merge all PqueryPlacements of a Pquery that are on the same TreeEdge into one averaged PqueryPlacement. More...
 
void merge_duplicate_placements (Sample &smp)
 Call merge_duplicate_placements( Pquery& ) for each Pquery of a Sample. More...
 
void merge_duplicates (Sample &smp)
 Look for Pqueries with the same name and merge them. More...
 
void normalize_weight_ratios (Pquery &pquery)
 Recalculate the like_weight_ratio of the PqueryPlacement&s of a Pquery, so that their sum is 1.0, while maintaining their ratio to each other. More...
 
void normalize_weight_ratios (Sample &smp)
 Recalculate the like_weight_ratio of the PqueryPlacement&s of each Pquery in the Sample, so that their sum is 1.0, while maintaining their ratio to each other. More...
 
std::pair< PlacementTreeEdge const *, size_t > placement_count_max_edge (Sample const &smp)
 Get the number of placements on the edge with the most placements, and a pointer to this edge. More...
 
std::pair< PlacementTreeEdge const *, double > placement_mass_max_edge (Sample const &smp)
 Get the summed mass of the placements on the heaviest edge, measured by their like_weight_ratio, and a pointer to this edge. More...
 
size_t remove_empty_name_pqueries (Sample &sample)
 Remove all Pqueries from the Sample that have no PqueryNames. More...
 
size_t remove_empty_placement_pqueries (Sample &sample)
 Remove all Pqueries from the Sample that have no PqueryPlacements. More...
 
void scale_all_branch_lengths (Sample &smp, double factor=1.0)
 Scale all branch lengths of the Tree and the position of the PqueryPlacements by a given factor. More...
 
void sort_placements_by_weight (Pquery &pquery)
 Sort the PqueryPlacements of a Pquery by their like_weight_ratio, in descending order (most likely first). More...
 
void sort_placements_by_weight (Sample &smp)
 Sort the PqueryPlacements of all Pqueries by their like_weight_ratio, in descending order (most likely first). More...
 
size_t total_name_count (Sample const &smp)
 Get the total number of PqueryNames in all Pqueries of the given Sample. More...
 
size_t total_placement_count (Sample const &smp)
 Get the total number of PqueryPlacements in all Pqueries of the given Sample. More...