How to map species insertions in phylogenetic tree?

In this article we will show how we can map the insertions made in phylogenetic tree through the procedure realized in FishPhyloMaker function. Mapping the insertions is of special importance since allow to understand how the gaps in phylogenetic knowledge is distributed in the phylogenetic tree. For example, we can understand if the Characidae family present more phylogenetic gaps than Loricariidae family.

This can be done by using the information contained in the output of FishPhyloMaker function when we set the argument return.insertions = TRUE. This returns a data frame containing the categories of insertion for each species, these categories are:

To obtain this data frame we need first to run FishPhyloMaker setting the argument return.insertions = TRUE. We will use data of fish occurrence in the Neotropical region present in {FishPhyloMaker} package.

library(FishPhyloMaker)
data("spp_afrotropic")

We need to format this data using function FishTaxaMaker

taxon_data <- FishTaxaMaker(data = spp_afrotropic, allow.manual.insert = TRUE)

With taxon_data we can run FishPhyloMaker to obtain the phylogeny and the data frame with all the insertions made by each species

phylo_fish_Afrotropics <- FishPhyloMaker(data = taxon_data$Taxon_data_FishPhyloMaker, 
                                         return.insertions = TRUE,
                                         insert.base.node = TRUE, 
                                         progress.bar = TRUE)

The data frame can be extracted and the categories of insertion can be plotted in the phylogenetic tree by using the information on phylo_fish_SAmerica$Insertions

library(phytools)
library(ggtree)
library(ggplot2)
insertions_org <- phylo_fish_Afrotropics$Insertions_data[match(tree$tip.label, phylo_fish_Afrotropics$Insertions_data$s), ]
p.base <- ggtree(tree, layout = "circular", size = .3)  %<+% insertions_org +
  geom_treescale(x = 0, width = 20, linesize = .5, color = "blue", 
                 fontsize = 0) + #  plot the scale bar
  annotate("text", x = 4, y = 500, label = "20 myr", size = 1.5) # an attempt for add a scale bar

p.full <- p.base +
  geom_tippoint(aes(color = insertions), 
                size = .5, alpha = .8) +
  theme(legend.position = "bottom") +
  guides(color = guide_legend(override.aes = list(size = 2)))  +
  scale_color_viridis_d(name = NULL, na.translate = F,
                        labels = c("Congeneric F", "Congeneric", "Family", "Order", "Present")) 

In Figure 1 we can see all the insertions made in the insertion process.

Fig. 1 - Phylogenetic tree showing at which level each species was inserted in the tree.