phylonetwork package¶
phylonetwork module¶
Main module of the package. Defines classes and methods for working with phylogenetic trees and networks.
-
class
phylonetwork.NetworkShape(*args, **kwargs)¶ Bases:
networkx.classes.digraph.DiGraphClass for unlabeled phylogenetic networks/trees.
In this class we only consider properties that depend on the topology of the network, without a labeling.
We implicitly assume:
- There is a single root
-
new_node()¶ Creates a node as a string of the form
_nwith unique n, and returns it
-
new_reticulation_node()¶ Creates a node as a string of the form
#nwith unique n, and returns it
-
is_leaf(u)¶ Tests if u is a leaf of the network
-
leaves¶ The set of all leaves of the network
-
interior_nodes¶ The set of all interior (not leaves) nodes of the network
-
is_reticulation(u)¶ Tests if node u is a reticulation (indeg >= 2)
-
reticulations¶ The set of all reticulations
-
is_tree_node(u)¶ Tests if node u is a tree node (indeg <= 1)
-
tree_nodes¶ The set of all tree nodes
-
is_root(u)¶ Tests if u is a root
-
roots¶ The set of all roots of the network
-
root¶ Root of the network. Raises exception if no root or >1 roots
-
is_elementary(u)¶ Tests if u is elementary
-
elementary_nodes¶ The set of elementary nodes
-
bottom_to_top_nodes¶ List of nodes ordered from bottom to top (last node is the root)
-
top_to_bottom_nodes¶ List of nodes ordered from top to bottom (first node is the root)
-
depths¶ Dict associating each node to its depth (distance to root)
-
heights¶ Dict associating each node to its height (max. distance to a leaf)
-
clear_cache()¶ Clears the cache of all computed properties
-
remove_node_and_reconnect(u, clear_cache=False)¶ Removes node u and connects each of its parents to each of its children
-
remove_elementary_nodes()¶ Removes all elementary nodes of the network
-
make_elementary_node(u, v)¶ Adds an elementary node between u and v. Returns the added node.
-
level()¶ Returns the level of the network
-
class
phylonetwork.PhylogeneticNetwork(eNewick=None, sequence=None, mu_repr=None, **kwargs)¶ Bases:
phylonetwork.NetworkShapeClass for (labeled) phylogenetic networks.
We assume:
- All leaves are labeled
- Internal nodes _may_ be labeled
- All labels are different
It can be given by their eNewick, its reduction sequence (for orchard networks), or its mu_repr (for tree-child networks). If none of those are given, it will be created empty.
The (e)Newick features implemented are:
- Reticulation events [CRV08]
- Additional data on nodes and arcs. Format:
[&node_metadata]:[&arc_metadata]arc_length
-
delta(coords, total)¶ Creates a vector with 1 in the coords specified and 0 elsewhere.
-
labeling_dict¶ Dict that maps nodes to labels
-
taxa¶ Set of labels used for nodes
-
ordered_taxa¶ Ordered list of taxa
-
cached_taxa¶ Set of cached labels of taxa.
-
ordered_cached_taxa¶ Set of cached labels of taxa.
-
set_cached_taxa(taxa)¶ Sets the default cached_taxa.
-
clear_cached_taxa()¶ Clears the cached taxa to remove from extend mu-data.
-
is_labeled(u)¶ Tests if u is labeled
-
label(u)¶ Returns the label of u (or None if it is not labeled)
-
labeled_nodes¶ Set of all labeled nodes
-
unlabeled_nodes¶ Set of all unlabeled nodes
-
lookup_label_dict¶ Dict that maps each label to the corresponding node
-
node_with_label(taxon)¶ Returns the node label by taxon (or None if no such label)
-
is_unlabeled_elementary_or_leaf(u)¶ Tests if u is elementary (not labeled and (d_in,d_out)=(1,1),(0,1) or (1,0)
-
eNewick()¶ Returns the eNewick representation of the network.
-
mu_dict¶ Dict that maps each node to its mu-vector
-
mu(u)¶ Returns the mu-vector of u
-
emu_dict¶ Dict that maps each node to its extended mu-vector
-
emu_representation¶ Dict corresponding to the extended mu-data (no reticulations).
-
emu(u)¶ Returns the extended mu-vector of u
-
cluster_dict¶ Dict that maps each node to its cluster
-
cluster(u)¶ Returns the cluster of u
-
nested_label_dict¶ Dict that maps each node to its nested label representation
-
nested_label(u)¶ Returns the nested label representation of u
-
remove_taxa(taxa, prune_network=True)¶ Removes the given taxa from the network and, if prune_network, eliminates elementary nodes
-
topological_restriction(taxa)¶ Returns the topological restriction of the network to the subset taxa of labels
-
has_nested_taxa()¶ Tests if the network has labeled internal nodes
-
is_tree_child()¶ Tests if the network is tree-child
-
parent(u)¶ Returns one parent of u or ‘’ if it’s the root.
-
cherry(a, b)¶ Set this network as the cherry (a, b).
-
add_pair(pair)¶ Adds the (reticulated) cherry pair=`(i,j)`.
-
reduce_pair(pair)¶ Reduces the pair=`(i,j)`
-
reduce_sequence(seq)¶ Reduces by the given sequence.
-
add_sequence(seq)¶ Adds by the given sequence.
-
reducible_pairs¶ List of the reducible pairs.
-
smallest_pair¶ Returns the smallest reducible pair.
-
all_sequences_array¶ Returns a list of all the CPS.
-
smallest_sequence_array¶ Returns the smallest reducible sequence, if any.
-
all_sequences¶ Returns a list of all the CPS.
-
smallest_sequence¶ Returns the smallest reducible sequence, if any.
-
is_orchard()¶ Tests if the network is orchard.
-
distance(other)¶ Returns the distance between self and other.
-
draw()¶ Plots the network with labels
-
class
phylonetwork.PhylogeneticTree(Newick=None, **kwargs)¶ Bases:
phylonetwork.PhylogeneticNetworkClass for working with phylogenetic trees.
Implements some methods that are not defined for networks (or are easier to implement on trees).
If Newick is given, it will be populated.
-
LCA_dict¶ Dict that associate to each pair of taxons its least common ancestor
-
LCA(u, v)¶ Returns the LCA of u and v
-
nodal_matrix()¶ Not implemented
-
cophenetic_matrix()¶ Not implemented
-
-
class
phylonetwork.LGTNetwork(eNewick=None, **kwargs)¶ Bases:
phylonetwork.PhylogeneticNetworkClass for representing LGT networks (Not yet implemented)
-
principal_edges()¶ Not implemented
-
secondary_edges()¶ Not implemented
-
principal_subtree(simplify=True)¶ Not implemented
-
secondary_subtrees(simplify=True)¶ Not implemented
-
draw()¶ Not implemented
-
phylonetwork.tree_generators module¶
Module that generates phylogenetic trees either sequentially or randomly. The implemented random models are uniform and Yule distributions
-
phylonetwork.tree_generators.all_binary_trees_by_num_taxa(num_taxa)¶
-
phylonetwork.tree_generators.relabel(tree, lookup_dict, taxa)¶
-
phylonetwork.tree_generators.all_binary_trees_by_taxa(taxa)¶
-
phylonetwork.tree_generators.tree_with_single_taxon(taxon)¶
-
phylonetwork.tree_generators.all_trees(taxa, binary=True)¶ Returns a sequential generator for all trees with leaves labeled by taxa.
If binary is True, then only binary trees will be generated; otherwise trees will have internal nodes with arbitrary out-degree.
-
phylonetwork.tree_generators.number_of_trees(n, binary=True)¶ Returns the number of phylogenetic trees with n labelled leaves. If binary is True, only binary trees are counted.
-
phylonetwork.tree_generators.random_uniform_tree_generator(taxa, binary=True)¶ Returns a random uniform generator of trees with leaves labeled by taxa.
If binary is True, then only binary trees will be generated; otherwise trees will have internal nodes with arbitrary out-degree.
-
phylonetwork.tree_generators.random_yule_tree_generator(taxa)¶ Returns a random Yule generator of binary trees with leaves labeled by taxa.
phylonetwork.btctc_generators module¶
Generation of random binary tree-child time-consistent networks under a Yule-like model.
-
phylonetwork.btctc_generators.speciate(net: phylonetwork.NetworkShape, u)¶
-
phylonetwork.btctc_generators.hybridize(net: phylonetwork.NetworkShape, u1, u2)¶
-
phylonetwork.btctc_generators.random_combination(base, r)¶
-
phylonetwork.btctc_generators.random_yule_btctc_generator(taxa, p)¶
phylonetwork.balances module¶
Implementation of different balance indices for phylogenetic trees or networks.
-
phylonetwork.balances.sackin(t)¶ Computes the Sackin (un)balance index of t
-
phylonetwork.balances.extended_sackin(net: phylonetwork.PhylogeneticNetwork)¶ Computes the extended Sackin (un)balance index of net
-
phylonetwork.balances.entropy(t)¶ Computes the entropy balance index of t
phylonetwork.tree_operations module¶
Auxiliary constructors for phylogenetic trees.
-
phylonetwork.tree_operations.push_and_hang(net, u, newtaxa)¶ Builds a new Phylogenetic Tree from net and u by hanging a leaf labeled newtaxa between u and its parent.
| | | => |\ u u \newtaxa / \ / \
-
phylonetwork.tree_operations.hold_and_hang(net, u, newtaxa)¶ Builds a new Phylogenetic Tree from net and u by hanging a leaf labeled newtaxa from u
| => | u u /| /|\ \newtaxa
-
phylonetwork.tree_operations.push_and_label(net, u, newtaxa)¶ Builds a new Phylogenetic Tree from net and u by inserting an elementary node between u and its parent and labeling it with newtaxa
| | | newtaxa | => | u u / \ / \
-
phylonetwork.tree_operations.hold_and_label(net, u, newtaxa)¶ Builds a new Phylogenetic Tree from net and u by labeling u with newtaxa
| | | => | u u=newtaxa / \ / \
phylonetwork.exceptions module¶
Custom exceptions for the phylonetwork package
-
exception
phylonetwork.exceptions.MalformedNewickException¶ Bases:
ExceptionRaised when creating a new network from a malformed eNewick string.
-
exception
phylonetwork.exceptions.TaxaException¶ Bases:
ExceptionRaised when trying to compare to networks with incompatible Taxa.
-
exception
phylonetwork.exceptions.NotAPhylogeneticNetwork¶ Bases:
ExceptionRaised when the graph is not a Phylogenetic Network
-
exception
phylonetwork.exceptions.NotImplemented¶ Bases:
ExceptionRaised when a method/function is not yet implemented
phylonetwork.utils module¶
-
phylonetwork.utils.random_weighted(d)¶ Given
da dictionary, returns a key in it with probability equals to its value (normalized over the sum of all values)
-
phylonetwork.utils.product(iterable)¶
-
class
phylonetwork.utils.clearable_cached_property(func)¶ Bases:
objectAdapted from standard library in order to keep track of cached attributes and allow for its clearance.
-
phylonetwork.utils.clear_cache(obj)¶
References
| [CRV08] | Cardona, G., Rosselló, F., & Valiente, G. (2008). Extended Newick: it is time for a standard representation of phylogenetic networks. BMC Bioinformatics, 9(1), 532. https://doi.org/10.1186/1471-2105-9-532 |