graptPBDB: Example Occurrence and Taxonomic Datasets of the...

graptPBDBR Documentation

Example Occurrence and Taxonomic Datasets of the Graptolithina from the Paleobiology Database

Description

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).

Format

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.

Details

This example PBDB data is included here for testing functions involving occurrence data and taxonomy in paleotree.

Source

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).

References

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.

See Also

taxonSortPBDBocc, occData2timeList, makePBDBtaxonTree, plotOccData

Examples

# 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))


paleotree documentation built on Aug. 22, 2022, 9:09 a.m.