# let's look for pterobranch genera
# pterobranchs are the larger group containing graptolites
taxon <- "Pterobranchia"
selectRank <- "genus"
if (FALSE) {
library(paleotree)
# get taxon data
# default variables
graptTaxaPBDB<-getCladeTaxaPBDB(taxon)
# get the taxon tree
graptTree <- makePBDBtaxonTree(graptTaxaPBDB,
rankTaxon = selectRank
)
# date the tree using the ranges
# provided directly by the PBDB
graptTimeTree <- dateTaxonTreePBDB(graptTree)
library(strap)
dev.new(height=6, width=10)
geoscalePhylo(graptTimeTree,
ages=graptTimeTree$ranges.used
)
nodelabels(graptTimeTree$node.label,
cex=0.7,
adj=c(0.3,0)
)
# slice tree at the Mississippian-Pennslyvannian boundary so
# the *two* extant genera don't obfuscate the tree
graptTimeTreePrePenn <- timeSliceTree(
ttree = graptTimeTree,
sliceTime = 323.2
)
slicedRanges <- graptTimeTree$ranges.used
slicedRanges [slicedRanges < 323.2] <- 323.2
# plot it!
dev.new(height=6, width=10)
geoscalePhylo(graptTimeTreePrePenn,
ages = slicedRanges
)
nodelabels(graptTimeTreePrePenn$node.label,
cex=0.7,
adj=c(0.3,0)
)
# we could also date the tree using the occurrence data
# default variables
graptOccPBDB <- getPBDBocc(taxon)
# some PBDB people have names that aren't in ASCII
# but CRAN hates non-ASCII character, sooo...
# convert using gtools::ASCIIfy
levels(graptOccPBDB$enterer) <- gtools::ASCIIfy(
levels(graptOccPBDB$enterer))
levels(graptOccPBDB$authorizer) <- gtools::ASCIIfy(
levels(graptOccPBDB$authorizer))
levels(graptOccPBDB$modifier) <- gtools::ASCIIfy(
levels(graptOccPBDB$modifier))
graptOccSort <- taxonSortPBDBocc(graptOccPBDB,
rank = selectRank,
onlyFormal = FALSE,
cleanUncertain = FALSE)
graptTimeList <- occData2timeList(occList = graptOccSort)
graptTimeTreeFromOcc <- bin_timePaleoPhy(
graptTree,
timeList = graptTimeList,
nonstoch.bin = TRUE,
type = "mbl",
vartime = 3)
plot(graptTimeTreeFromOcc, show.tip.label=FALSE)
axisPhylo()
# don't need to slice tree because extant-only taxa were dropped
dev.new(height=6, width=10)
geoscalePhylo(graptTimeTreeFromOcc,
ages=graptTimeTreeFromOcc$ranges.used
)
nodelabels(graptTimeTreeFromOcc$node.label,
cex=0.7,
adj=c(0.3,0)
)
graphics.off()
save(graptOccPBDB,
graptTaxaPBDB,
graptTree,
graptTimeTree,
file = "graptPBDB.rdata")
}
# load archived example data
data(graptPBDB)
# let's visualize who entered the majority of the occurrence data
pie(sort(table(graptOccPBDB$enterer)))
# and now who authorized it
pie(sort(table(graptOccPBDB$authorizer)))
# I *sort of* apologize for using pie charts.
# Let's look at age resolution of these occurrences
hist(graptOccPBDB$max_ma - graptOccPBDB$min_ma,
main = "Age Resolution of Occurrences",
xlab = "Ma")
# use table to calculate distribution
#of taxa among taxonomic ranks
table(graptTaxaPBDB$taxon_rank)
barplot(table(graptTaxaPBDB$taxon_rank))
Run the code above in your browser using DataLab