When both Diversity
and Phylo
are loaded,
we generate Phylogenetic diversity measures, based on Faith PD
and extended by Chao.
Using the functionality in the package is simple:
- Create a tree (using our Phylo package)
- Create a PhyloBranches (AbstractTypes subtype) object from it
- Create a Metacommunity from that
- Calculate diversity!
julia> using Diversity, Phylo
julia> species = ["Dog", "Cat", "Human", "Potato"];
julia> community = [4, 1, 3, 2] ./ 10;
julia> nt = rand(Nonultrametric(species))
RootedTree with 4 tips, 7 nodes and 6 branches.
Leaf names are Dog, Human, Potato and Cat
julia> collect(getbranches(nt))
6-element Vector{LinkBranch{OneRoot, String, Dict{String, Any}, Float64}}:
LinkBranch 7, from node Node 5 to node Human (length 0.48129057007442144).
LinkBranch 8, from node Node 5 to node Potato (length 0.04547304399403693).
LinkBranch 9, from node Node 6 to node Node 5 (length 0.5257296693452039).
LinkBranch 10, from node Node 6 to node Cat (length 1.2058770065006985).
LinkBranch 11, from node Node 7 to node Dog (length 1.0055430448967724).
LinkBranch 12, from node Node 7 to node Node 6 (length 0.07011899861455448).
julia> ph = PhyloBranches(nt);
julia> metaphylo = Metacommunity(community, ph);
julia> leafnames = gettypenames(metaphylo, true)
4-element Vector{String}:
"Dog"
"Human"
"Potato"
"Cat"
julia> meta_gamma(metaphylo, 0)
1×8 DataFrame
│ Row │ div_type │ measure │ q │ type_level │ type_name │ partition_level │ partition_name │ diversity │
│ │ String │ String │ Int64 │ String │ String │ String │ String │ Float64 │
├─────┼─────────────────────┼─────────┼───────┼────────────┼───────────┼─────────────────┼────────────────┼───────────┤
│ 1 │ Phylogenetic Branch │ Gamma │ 0 │ types │ │ metacommunity │ │ 3.48192 │