graptPBDB | R Documentation |
Example datasets consisting of (a) occurrence data and (b) taxonomic data downloaded from the Paleobiology Database API for the Graptolithina. In order to make sure to catch anything that might be considered a graptolite, the actual taxon searched for was the Pterobranchia, the larger clade that includes graptolites within it (Mitchell et al., 2013).
The example occurrence dataset (graptOccPBDB
) is a
data.frame
consisting of 5900 occurrences (rows) and 35 variables (columns).
The example taxonomy dataset (graptTaxaPBDB
) is a
data.frame
consisting of 364 formal taxa (rows) and 53 variables (columns).
Variables are coded in the 'pbdb' vocabulary of the PBDB API v1.2.
Two phylogeny-like objects, an undated taxon-tree, and a dated version
of the former, are provided as graptTree
and graptTimeTree
respectively.
This example PBDB data is included here for testing
functions involving occurrence data and taxonomy
in paleotree
.
See examples for the full R code used to obtain the data from the API. You can find the Paleobiology Database at https://paleobiodb.org
The occurrence data was entered by many, including (six most prominent enterers, in order of relative portion): P. Novack-Gottshall, M. Krause, M. Foote, A. Hendy, T. Hanson, and M. Sommers. This entered data was authorized mainly by A. Miller, W. Kiessling, M. Foote, A. Hendy, S. Holland, J. Sepkoski (as well as others).
Mitchell, C. E., M. J. Melchin, C. B. Cameron, and J. Maletz. 2013. Phylogenetic analysis reveals that Rhabdopleura is an extant graptolite. Lethaia 46(1):34-56.
Peters, S. E., and M. McClennen. 2015. The Paleobiology Database application programming interface. Paleobiology 42(1):1-7.
taxonSortPBDBocc
, occData2timeList
,
makePBDBtaxonTree
, plotOccData
# let's look for pterobranch genera # pterobranchs are the larger group containing graptolites taxon <- "Pterobranchia" selectRank <- "genus" ## Not run: 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") ## End(Not run) # 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))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.