| parentChild2taxonTree {paleotree} | R Documentation |
Create a Taxonomy-Based Phylogeny ('Taxon Tree') from a Table of Parent-Child Taxon Relationships
Description
This function takes a two-column matrix of taxon names,
indicating a set of binary parent-taxon:child-taxon
paired relationships with a common root, and returns
a 'taxonomy-tree' phylogeny object of class phylo.
Usage
parentChild2taxonTree(parentChild, tipSet = "nonParents", cleanTree = TRUE)
Arguments
parentChild |
A two-column matrix of type |
tipSet |
This argument controls which taxa are selected as tip taxa for the
output tree. The default |
cleanTree |
When |
Details
All taxa listed must be traceable via their parent-child relationships to a single, common ancestor which will act as the root node for output phylogeny. Additionally, the root used will be the parent taxon to all tip taxa closest in terms of parent-child relationships to the tip taxa: i.e., the most recent common ancestor. Ancestral taxa which are singular internal nodes that trace to this root are removed, and a message is printed.
Value
A phylogeny of class phylo, with tip taxa as
controlled by argument tipSet.
The output tree is returned with no edge lengths.
The names of higher taxa than the tips should be appended
as the element $node.label for the internal nodes.
Author(s)
David W. Bapst
See Also
makePBDBtaxonTree, taxonTable2taxonTree
Examples
#let's create a small, really cheesy example
pokexample <- rbind(
cbind("Squirtadae", c("Squirtle","Blastoise","Wartortle")),
c("Shelloidea","Lapras"), c("Shelloidea","Squirtadae"),
c("Pokezooa","Shelloidea"), c("Pokezooa","Parasect"),
c("Rodentapokemorpha","Linoone"), c("Rodentapokemorpha","Sandshrew"),
c("Rodentapokemorpha","Pikachu"), c("Hirsutamona","Ursaring"),
c("Hirsutamona","Rodentapokemorpha"), c("Pokezooa","Hirsutamona")
)
#Default: tipSet = 'nonParents'
pokeTree <- parentChild2taxonTree(
parentChild = pokexample,
tipSet = "nonParents")
plot(pokeTree)
nodelabels(pokeTree$node.label)
#Get ALL taxa as tips with tipSet = 'all'
pokeTree <- parentChild2taxonTree(
parentChild = pokexample,
tipSet = "all")
plot(pokeTree)
nodelabels(pokeTree$node.label)
## Not run:
# let's try a dataset where not all the
# taxon relationships lead to a common root
pokexample_bad <- rbind(
cbind("Squirtadae", c("Squirtle","Blastoise","Wartortle")),
c("Shelloidea","Lapras"), c("Shelloidea","Squirtadae"),
c("Pokezooa","Shelloidea"), c("Pokezooa","Parasect"),
c("Rodentapokemorpha","Linoone"), c("Rodentapokemorpha","Sandshrew"),
c("Rodentapokemorpha","Pikachu"), c("Hirsutamona","Ursaring"),
c("Hirsutamona","Rodentapokemorpha"), c("Pokezooa","Hirsutamona"),
c("Umbrarcheota","Gengar")
)
# this should return an error
# as Gengar doesn't share common root
pokeTree <- parentChild2taxonTree(parentChild = pokexample_bad)
# another example, where a taxon is listed as both parent and child
pokexample_bad2 <- rbind(
cbind("Squirtadae", c("Squirtle","Blastoise","Wartortle")),
c("Shelloidea", c("Lapras","Squirtadae","Shelloidea")),
c("Pokezooa","Shelloidea"), c("Pokezooa","Parasect"),
c("Rodentapokemorpha","Linoone"), c("Rodentapokemorpha","Sandshrew"),
c("Rodentapokemorpha","Pikachu"), c("Hirsutamona","Ursaring"),
c("Hirsutamona","Rodentapokemorpha"), c("Pokezooa","Hirsutamona"),
c("Umbrarcheota","Gengar")
)
#this should return an error, as Shelloidea is its own parent
pokeTree <- parentChild2taxonTree(parentChild = pokexample_bad2)
## End(Not run)
# note that we should even be able to do this
# with ancestor-descendent pairs from
# simulated datasets from simFossilRecord, like so:
set.seed(444)
record <- simFossilRecord(
p = 0.1, q = 0.1, nruns = 1,
nTotalTaxa = c(30, 40),
nExtant = 0
)
taxa <- fossilRecord2fossilTaxa(record)
# need to reorder the columns so parents
# (ancestors) first, then children
parentChild2taxonTree(parentChild = taxa[,2:1])
# now note that it issues a warning that
# the input wasn't type character
# and it will be coerced to be such