| nodelabel.phylo {geiger} | R Documentation |
Blending information from taxonomies and trees
Description
working with systematic reference tables and phylogenies
Usage
nodelabel.phylo(phy, taxonomy, strict=TRUE, ncores=NULL)
phylo.lookup(taxonomy, ncores=NULL)
lookup.phylo(phy, taxonomy = NULL, clades = NULL, ncores=NULL)
phylo.clades(clades, phy=NULL, unplaced=TRUE, ncores=NULL)
glomogram.phylo(phy, subtrees)
Arguments
phy |
a phylogenetic tree of class 'phylo' ('multiPhylo' in |
taxonomy |
a linkage table (of class |
clades |
a named list of clade definitions (i.e., spanning taxa; see Examples); spanning taxa may invoke other definitions found within the |
unplaced |
whether to use 'unplaced' taxa if given as an element in |
subtrees |
a list of trees to be grafted into |
strict |
whether to enforce strict labeling of nodes or allow liberal estimates of the best location of a given nodelabel |
ncores |
the maximum number of cores to be used |
Details
nodelabel.phylo provides a function (as part of the phylo object returned) to resolve the hash key and node identifier for a label found in taxonomy.
This function is the FUN element of the returned object. If the taxonomic label cannot be properly placed in the tree (i.e., no subtree is found that is absolutely
consistent with the supplied taxonomy, the nearest matching node(s) will be returned when invoking FUN).
phylo.lookup converts a taxonomy into a phylogenetic tree.
lookup.phylo converts a phylogenetic tree (phy) into a linkage table based on nodelabels associated with phy, which can be supplemented with a taxonomy and (or)
clades object.
phylo.clades returns a series of phylogenetic subtrees based on clade definitions found in the clades object. Definitions can be handles that are recursive (see Examples).
Author(s)
JM Eastman
Examples
## Not run:
sal=get(data(caudata))
print(head(sal$tax))
## TREE from TABLE: phylo.lookup()
tax=cbind(sal$tax[,c("subfamily", "family", "suborder")], order="Caudata")
tphy=phylo.lookup(tax, ncores=2)
print(tphy)
head(tphy$node.label)
## TABLE from TREE: lookup.phylo()
tax=sal$tax[,c("genus", "family")]
cld=list(
Sirenoidea=c("Siren", "Pseudobranchus"),
Salamandroidea=c("Ambystomatidae", "Plethodontidae"),
Cryptobranchoidea=c("Hynobius_naevius", "Cryptobranchus_alleganiensis"),
CAUDATA=c("Sirenoidea","Salamandroidea","Cryptobranchoidea")
)
lkp=lookup.phylo(sal$phy, taxonomy=tax, clades=cld, ncores=2)
print(lkp)
nphy=nodelabel.phylo(sal$phy, lkp, ncores=2)
dev.new()
plot.phylo(ladderize(nphy,right=FALSE), cex=0.35,
type="fan", label.offset=2.5, no.margin=TRUE, edge.color="gray", edge.width=0.5)
nodelabels(nphy$node.label, cex=0.45, col="red", frame="n")
## CLADES to TREE: phylo.clades()
fmrca=geiger:::.mrca
salamandroidea=extract.clade(nphy, fmrca(c("Ambystomatidae", "Plethodontidae"), nphy))
cryptobranchoidea=extract.clade(nphy, fmrca(c("Cryptobranchidae", "Hynobiidae"), nphy))
siren=extract.clade(nphy, fmrca(c("Siren_lacertina", "Siren_intermedia"), nphy))
clades=list(
Sirenoidea=c("Siren", "Pseudobranchus"),
Caudata=c("Sirenoidea","Salamandroidea","Cryptobranchoidea"),
AMPHIBIA=c("Caudata","Anura","Gymnophiona")
)
phy=list(Cryptobranchoidea=cryptobranchoidea, Salamandroidea=salamandroidea, Siren=siren)
class(phy)="multiPhylo"
res=phylo.clades(clades, phy, ncores=2)
amph=nodelabel.phylo(res$AMPHIBIA, lkp, ncores=2)
print(amph$FUN("Salamandroidea"))
dev.new()
plot(ladderize(amph, right=FALSE), cex=0.2, label.offset=0.05)
nodelabels(amph$node.label, cex=0.35, col="red", frame="n")
## GLOMOGRAM
sirenidae=extract.clade(nphy, fmrca(c("Siren_lacertina", "Pseudobranchus_axanthus"), nphy))
ambystomatidae=extract.clade(nphy, fmrca(c("Ambystoma_gracile", "Ambystoma_texanum"), nphy))
trees=list(
Cryptobranchoidea=cryptobranchoidea,
Sirenidae=sirenidae,
Ambystomatidae=ambystomatidae
)
class(trees)="multiPhylo"
fam=sal$fam
ftax=unique(sal$tax[,c("family", "suborder")])
rownames(ftax)=unname(ftax[,"family"])
fam=nodelabel.phylo(fam, ftax, ncores=2)
fam$FUN("Salamandroidea")
res=glomogram.phylo(fam, trees)
dev.new()
zz=match(res$tip.label, fam$tip.label)
cc=integer(length(zz))
cc[!is.na(zz)]=1
plot(ladderize(res, right=FALSE), cex=1, label.offset=5, tip.color=ifelse(cc==1, "red", "black"))
## End(Not run)