In this vignette, I provide code for some simple examples.
The main function to use is rtrees::get_tree()
. Users can
type ?rtrees::get_tree
in the R console to see details.
To get a phylogeny for a list of species using an existing synthetic megatree, we can use the following code:
# create a species list
species <- c('Meliosma laui', 'Acer cordatum', 'Fraxinus mandshurica',
'Ormosia pinnata', 'Aglaia dasyclada', 'Sphagnum_subnitens',
'Stephanomeria_cichoriacea', 'Taraxacum_schroeterianum',
'Humiria_balsamifera', 'Salix_cinerea', 'Floerkea_proserpinacoides')
# get a phylogeny
sp_tree <- rtrees::get_tree(sp_list = species, taxon = 'plant')
#>
#> 5 species added at genus level (*)
#> 1 species added at family level (**)
#> 1 species have no co-family species in the mega-tree, skipped
#> (if you know their family, prepare and edit species list with `rtrees::sp_list_df()` may help):
#> Sphagnum_subnitens
In the code chunk above, the vector of species names can have either
space or underscore in the names; spaces will be replaced by underscores
internally within rtrees::get_tree()
. If no megatree was
set by the tree =
argument, then the taxon =
argument must be one of the supported taxonomic groups (“amphibian”,
“bird”, “fish”, “mammal”, “plant”, “reptile”, and “shark_ray”). Function
rtrees::get_tree()
will print out messages about the number
of species been grafted at genus and family level as well as the number
of species been skipped if neither congeneric nor co-family species were
found in the megatree. In the example above, the skipped species is a
moss and the megatree does not have any moss species from the
Sphagnaceae family. When the argument show_grafted
of
rtrees::get_tree()
is set to ‘TRUE’ (default is ‘FALSE’),
the tip labels of the generated phylogeny will have a trailing * if it
is grafted at genus level or ** if it is grafted at family level. No
matter whether show_grafted
is ‘TRUE’ or ‘FALSE’, the
grafting information was saved along with the phylogeny and can be
extracted with the following code:
# or use rtrees::get_graft_status()
sp_tree$graft_status
#> # A tibble: 11 × 3
#> tip_label species status
#> <chr> <chr> <chr>
#> 1 Taraxacum_schroeterianum Taraxacum_schroeterianum exisiting species in the…
#> 2 Stephanomeria_cichoriacea Stephanomeria_cichoriacea exisiting species in the…
#> 3 Fraxinus_mandshurica Fraxinus_mandshurica grafted at genus level
#> 4 Ormosia_pinnata Ormosia_pinnata grafted at genus level
#> 5 Salix_cinerea Salix_cinerea exisiting species in the…
#> 6 Humiria_balsamifera Humiria_balsamifera exisiting species in the…
#> 7 Floerkea_proserpinacoides Floerkea_proserpinacoides grafted at family level
#> 8 Aglaia_dasyclada Aglaia_dasyclada grafted at genus level
#> 9 Acer_cordatum Acer_cordatum grafted at genus level
#> 10 Meliosma_laui Meliosma_laui grafted at genus level
#> 11 <NA> Sphagnum_subnitens skipped as no co-family …
When users already have a phylogeny for most of their species (i.e.,
the second and third scenarios described in the Usage scenarios section
above), we can use the same code as above, with the argument
tree_by_user = TRUE
. And here is an example using the
phylogeny generated above as a pretended megatree that we already
have.
more_sp_to_add = c('Ormosia_sp.', 'Fraxinus_americana')
new_species = c(species, more_sp_to_add)
sp_tree_2 = rtrees::get_tree(sp_list = new_species, tree = sp_tree,
taxon = 'plant', tree_by_user = TRUE)
#> Not all genus can be found in the phylogeny.
#>
#> 2 species added at genus level (*)
#> 1 species have no co-family species in the mega-tree, skipped
#> (if you know their family, prepare and edit species list with `rtrees::sp_list_df()` may help):
#> Sphagnum_subnitens
In the code above, as there is a genus (Sphagnum) not included in the
user provided phylogeny, we need to specify the taxon
argument to extract the correct classification information; note that
this requires the taxonomic group is one of those supported by
rtrees
. However, if all genus of the species list are
already in the user provided phylogeny, then we can ignore the
taxon
argument:
# remove Sphagnum_subnitens so that all genus are in the megatree
new_species_all_in = setdiff(new_species, 'Sphagnum_subnitens')
sp_tree_3 = rtrees::get_tree(sp_list = new_species_all_in, tree = sp_tree,
tree_by_user = TRUE)
#>
#> 2 species added at genus level (*)
The function rtrees::get_tree()
can also work with
a set of posterior megatrees with the option to use
parallel computing for the whole process. The default number of cores to
be used will be the available number of cores minus 2 (so that users can
still perform other tasks on their computers at the same time). The
output will be a set of generated phylogenies with class ‘multiPhylo’;
the number of derived phylogenies will be the same as the input
megatrees. For this scenario, we can use exactly the same code described
above.
# bird species
bird_species = c('Brachypteryx_major', 'Asthenes_perijana', 'Ciridops_anna',
'Leiothlypis_ruficapilla', 'Reinwardtoena_reinwardti',
'Garrulax_caerulatus', 'Buteo_rufofuscus', 'Sylvia_mystacea',
'Telophorus_viridis', 'Trachyphonus_darnaudii')
sp_tree_4 = rtrees::get_tree(sp_list = bird_species, taxon = 'bird')
#>
#> 3 species added at genus level (*)
#> 2 species added at family level (**)
sp_tree_4
#> 100 phylogenetic trees