Split-Weight Embedding of Phylogenetic trees
Our package provides functions to convert phylogenetic trees from Newick format to Bipartition format, which are then embedded in Euclidean space via Split-Weight Embedding.
Check our paper for more details.
PhyloClustering.num_bipartitions
— Functionnum_bipartitions(n::Int64)
Get the number of bipartitions for a given number of taxa.
Arguments
n
: the number of taxa.
Output:
The number of bipartition corresponding to the number of taxa.
PhyloClustering.show_bipartitions
— Functionshow_bipartitions(n::Int64; start::Int64 = 0, stop::Int64=-1)
Show the bipartitions between certain indices for a given number of taxa.
Arguments
n
: the number of taxastart
(defaults to0
): the starting index.stop
(defaults to-1
): the ending index.
Output
The bipartiions of trees with n
taxa between start
index and stop
index.
Example
julia> show_bipartitions(4,stop = 4)
idx partition
0 1 | 2 3 4
1 2 | 1 3 4
2 3 | 1 2 4
3 4 | 1 2 3
4 1 2 | 3 4
PhyloClustering.show_bipartition
— Functionshow_bipartition(n::Int64, idx::Int64)
Show the bipartition with a given index for a given number of taxa.
Arguments
n
: the number of taxa.idx
: the bipartition to show.
Output
The idx
-th bipartiion of trees with n
taxa.
Example:
julia> show_bipartition(4, 3)
idx partition
3 4 | 1 2 3
PhyloClustering.get_bipartition
— Functionget_bipartition(tree::HybridNetwork, n::Int64)
Get the bipartition format of a phylogenetic tree.
Arguments
tree
: a HybridNetwork object that reperents the tree.n
: the number of taxa of the tree.
Output
A Vector
of pairs shows the tree in bipartiton format.
Example
julia> get_bipartition(readTopology("(4:4.249,(1:2.457,(2:2.064,3:2.064):0.393):1.793);"), 4)
6-element Vector{Any}:
3 => 4.249
0 => 2.457
1 => 2.064
2 => 2.064
6 => 0.393
3 => 1.793
PhyloClustering.split_weight
— Functionsplit_weight(trees::Vector{HybridNetwork}, n::Int64)
Split-weight embedding of phylogenetic trees in a Vector{HybridNetwork}
. Note that all taxa will be replaced by numbers. Use the function num_to_name
to get a Dictionary containing the name of the taxon corresponding to the number.
Arguments
trees
: a Vector of HybridNetwork objects that contains treesn
: the number of taxa of the trees
Output
A Matrix{Float64}
shows the trees in bipartiton format
Example
julia> split_weight([readTopology("(4:4.249,(1:2.457,(2:2.064,3:2.064):0.393):1.793);"), readTopology("(4:4.308,(2:1.634,(1:1.588,3:1.588):0.046):2.674);")], 4)
2×7 Matrix{Float64}:
2.457 2.064 2.064 6.042 0.0 0.0 0.393
1.588 1.634 1.588 6.982 0.0 0.046 0.0
PhyloClustering.num_to_name
— Functionnum_to_name(tree::HybridNetwork)
Obtain a table that contains taxon numbers and their names for a given tree.
Arguments
tree
: a HybridNetwork objects that contains trees
Output
A Dict{Int64, Any}
shows taxon numbers and their names
Example
julia> num_to_name(readTopology("(O:3.866,(HYB:1.593,(P1:1.208,P2:1.208):0.386):2.273);"))
Dict{Int64, Any} with 4 entries:
4 => "P2"
2 => "O"
3 => "P1"
1 => "HYB"