This document provides a brief introduction into the structure of the R package DAIME with an overview of the available functions and some explanations regarding their options.

Introduction

Changing deposition rates determine how much time it takes to deposit a given thickness of sediment. This determines how diluted or condensed the information contained in this sediment is, and accordingly alters the perception of time and speed when working with the rock record.

The DAIME package allows to

  1. Model how changing deposition rates and hiatuses alter the stratigraphic expression of temporal patterns

  2. Express data derived from the sedimentary rock record in terms of time

Available Functions

The 2.1.2 version of the package contains the following core functions:

  1. pointtransform to transform the location of individual points from age/time into stratigraphic height and vice versa. This can also be used to create age models from deposition rates and transform isotope ratios between age/time and height

  2. patterntransform to transform patterns from age/time into stratigraphic height and vice versa. A pattern can be any grain-based input into the sediment (e.g. fossil occurrences, some geochemical proxies) and rates derived from it (e.g. rate of morphological change or first/last fossil occurrences, both derived from fossil occurrences)

It further contains the following supplementary function:

  1. patterntodepositionmodel to construct a deposition model based on the sedimentary condensation/dilution of a known pattern

In addition to that, the following functions are available for backwards compatibility:

Time and Age

The functions patterntodepositionmodel, patterntransform and pointtransform can deal with both time and age, this is determined by the option timetype. By default it is set totime

Transformable Data

Points

Data consisting of individual points can be transformed via the function pointtransform. These points can be

Samples associated with measurements

Samples are often associated with measurements performed on this sample (e.g. Hg content measured on a bivalve). For such samples, only their location needs to be transformed via the DAIME model, the measured values remain unchanged and associated with the sample.

Isotope Ratios, Ratios in General and Percentages

In (isotope) ratios, percentages, and ratios in general, values of the numerator and denominator are condensed and diluted equally. This cancels out the effects of sedimentary condensation/dilution on the value (ordinate). However the locations where these values were measured (abscissa) are still affected by condensation/dilution. To account for this, the locations where the ratios were determined need to be transformed via pointtransform whilst keeping the values associated with these locations unchanged. For an example, see the help page of pointtransform.

Patterns (Rates)

Patterns can be transformed using the function patterntransform. Patterns can be taken as synonymous with rates, and can be subdivided into

This can for example be

but also information derived from these rates such as

First and last fossil occurrences

First and last occurrences are defined post hoc in the section. Due to this they cannot be transformed as a pattern when Hiatuses are present (with no hiatuses around, they can be transformed as any other pattern).

In the presence of hiatuses, simulation approaches or estimates to bracket their position should be used.

Relation between points and patterns

The relation between patterns and points is similar to the relation between a distribution and a sample. One is the abstract description (pattern) while one is the realization (point)

Deposition models

Deposition models are central to the DAIME package and describe how sediment input into the system changes through time. There are three ways to hand a deposition model over to the functions pointtransform and patterntransform:

By default, the deposition model is assumed to be a piecewise linear deposition rate. This can be adjusted using the depositionmodel option.

Age models

Age models assign (1) a stratigraphic height its time of deposition and (equivalently) an age the stratigraphic height that was deposited at said age. Age models are described by two vectors of equal length, here named agemodelage and agemodelheight. The entry agemodelage[i] is the age of the sediment at the stratigraphic height agemodelheight[i] and vice versa.

require(DAIME)
#> Loading required package: DAIME
par(mar=c(4,4,1,0),mgp=c(2.1,0.4,0))
agemodelage=seq(0,3,length.out = 100)
agemodelheight=splinefunH(x=c(0,1,3),y=c(0,0.8,2),m=c(0.2,2,0.3))(agemodelage)
plot(agemodelage,agemodelheight,type='l',xlab='Time/Age \n ( agemodelage )',ylab='Stratigraphic Height \n ( agemodelheight )',main='Age Model',lwd=4)

plot of chunk fig1

When the transformation is from height to time, i.e. the functions are used with direction in the setting height to time, then agemodelheight corresponds to xdep and agemodelage corresponds to ydep.

When direction is set to time to height, agemodelage corresponds to xdepand agemodelheight corresponds to ydep.

Deposition Rates

Deposition rates describe the sediment input into a system through time. They can be handed over either as piecewise linear deposition rate by setting depositionmodel to piecewise linear deposition rate or as binned deposition rate by setting depositionmodel to binned deposition rate.

Piecewise linear deposition rates

For piecewise linear deposition rates, the deposition rate is given by depositionrate=approxfun(xdep,ydep). Accordingly xdep and ydep need to be of the same size.

Binned depositon rates

For binned deposition rates, the values of the deposition rate between xdep[i] and xdep[i+1] is given by ydep[i]. Accordingly ydep is one entry shorter than xdep

Inverse deposition rates and units

For the transformation from height to time, the additional option unitis available. This is since deposition rates in the section can be described in two ways:

  1. Either they give a description of the deposition rates with which the heights in the section were deposited

  2. Or they describe how much time is “contained” in sediment (“inverse” deposition rate).

Setting unit to sediment per time and the functions will interpret the deposition rate described by xdep and ydep in the first way. Setting is to time per sediment will lead to the functions interpreting the deposition rates in the second way.

The default setting is unit='sediment per time'. For the effects of this options see the examples given in the help pages of pointtransform and patterntransform.

Creating age models from the condensation/dilution of patterns

The function patterntodepositionmodel creates an age model that condenses/dilutes a given temporal pattern into a given stratigraphic pattern and vice versa. For examples see its help page.

Hiatuses, Erosion, and Nondeposition

The handling of hiatuses, erosion, and nondeposition depends on the direction of transformation.

For the transformation from section to time, i.e. using the option direction="height to time", hiatuses can be inserted at any stratigraphic height using the hiatuslist option. For details see the corresponding help pages.

For the transformation from time to the section, i.e. using the option direction="time to height", hiatuses, erosion, and nondeposition can be modeled via deposition rates that are zero (nondeposition) or negative (erosion) or as time intervals where the age model is decreasing.

Hiatuses are destructive in this implementation of the DAIME model. Anything being deposited right at a hiatus or during an interval of nondeposition or erosion will be destroyed by the transformation.

Examples

The K/Pg boundary on Seymour Island, Antarctica

The DAIME Package automatically loads some age models and extinction hypotheses for the K/Pg boundary

require(DAIME)
my.agemodel=SeymourIslandAgeModels$C #Select one of the age models
#plot age model
plot(my.agemodel$age,my.agemodel$height,type='l',xlab='Age [ma]',ylab = 'Height [m]',xlim=rev(range(my.agemodel$age)))

plot of chunk unnamed-chunk-1

#Select extinction hypotheses with intermediate influence of the Deccan trapps
temp.pat=KPgLastOccurrences$Intermediate.Deccan
temp.pat$parameters #check description of extinction hypotheses
#> [1] "Extinction pulse at K/Pg boundary combined with extinction interval from fig. 5 from Tobin (2017), which was transformed into time assuming constant deposition. Rate of fossil occurrences is 40 fossils per ma, relative contribution of the early extinction interval to the total number of extinctions is 20 %. Pattern normalized to be a probability density function."
#Plot extinction hypotheses (=last occurrences)
plot(temp.pat$age,temp.pat$val,type='l',xlab='Age [ma]',ylab='Intensity [Last occurrences per Myr]',xlim=rev(range(temp.pat$age)))

plot of chunk unnamed-chunk-1

Transforming (piecewise linear) temporal patterns

Using the function patterntransform, the extinction hypotheses can be transformed into stratigraphic height. Here, the previously selected age model is used as deposition model

strat.pat=patterntransform(xdep=my.agemodel$age,ydep=my.agemodel$height,xpat=temp.pat$age,ypat=temp.pat$val,direction = 'time to height',depositionmodel = 'age model',patternmode = 'piecewise linear',timetype = 'age')
strat.pat$report #What was done?
#> [1] "Transformed piecewise linear pattern from  time to height using a age model as deposition model. 0 hiatus(es) in the section. Interpreted input as age"
#Plot last occurrences in stratigraphic height
plot(strat.pat$height,strat.pat$val,type='l',xlab='Stratigraphic Height [m]',ylab='Intensity [Last occurrences per m]')

plot of chunk unnamed-chunk-2

Transforming points

The function pointtransform allows to transform individual points. This is demonstrated by transforming the sampling bin into time to study their temporal resolution.

samplingbins=SeymourIslandBins$Macellari.1984.Section.D. #Bins are loaded with DAIME package
trans.bins=pointtransform(points=samplingbins,xdep=my.agemodel$height,ydep=my.agemodel$age,direction='height to time',depositionmodel = 'age model',timetype = 'age')
trans.bins$age #ages corresponding to the limits of the sampling bins
#> [1]       NA       NA       NA       NA       NA 66.23900 66.18522 66.04000
#Note that points that are outside the deposition model are returned as NA !
abs(diff(trans.bins$age)) #Duration of bins in Myr. The bin before the K/Pg contains almost 0.15 Myr
#> [1]       NA       NA       NA       NA       NA 0.053779 0.145221

Transforming (binned) stratigraphic patterns

The function patterntransform can also be used to transform rates such as fossil abundances from the section into time

#Sampling relevant sampling bins from Witts et al. (2016)
WittsBins=SeymourIslandBins$Witts.et.al.2016.Section.A 
WittsBins=WittsBins[WittsBins>=min(my.agemodel$height) &WittsBins<=max(my.agemodel$height)]
#No. of fossil finds of Maorites densicostatus in section A from WItts et al. (2016)
Maorites.densicostatus=c(7,7,29,1,0,1,6) 
#Fossils per meter
Foss.Rate=Maorites.densicostatus/diff(WittsBins)
#Plot fossils per meter
plot(approx(x=WittsBins,y=c(Foss.Rate,0),method='constant',xout=my.agemodel$height),type='l',xlab='Stratigraphic Height [m]',ylab = 'Fossil Abundance [foss. per m]',main='Maorites densicostatus')

plot of chunk unnamed-chunk-4

This binned stratigraphic pattern can be transformed into a temporal pattern:

temp.pat=patterntransform(xdep=my.agemodel$height,ydep=my.agemodel$age,xpat=WittsBins,ypat=Foss.Rate,depositionmodel = 'age model',direction='height to time',patternmode = 'binned',timetype = 'age')
plot(temp.pat$age,temp.pat$val,type='l',xlim = rev(range(my.agemodel$age)),xlab='Age [ma]',ylab='Fossil abundance [Fossils per Myr]', main='Maorites densicostatus')

plot of chunk unnamed-chunk-5

Example 2: The Oceanic Anoxic Event 1d at the Col de Palluel, France

Data for this Example is from Bornemann et al (2005) and is again automatically loaded. The following abbreviations are used:

palyn=ColDePalluel$palynomorphs
geochem=ColDePalluel$geochemistry

Construction age models from dilution/condensation of sediment contents

First, an age model is build on the assumption of constant input of saccate pollen:

my.agemodel=patterntodepositionmodel(xheight=palyn$Depth..m.,yheight = palyn$Pollen.sac....,timetype = 'time')
plot(my.agemodel$time,my.agemodel$height,type='l',xlab='Relative Time',ylab='Stratigraphic Height [m]')
lines(range(my.agemodel$time),range(my.agemodel$height),lty=3)
legend('topleft',legend='Age Model',lty=1,lwd=1)

plot of chunk unnamed-chunk-7

Transforming (piecewise linear) stratigraphic patterns

Using this age model, the number of dinoflagellate cysts is transformed into time:

#Transform dinoflagellate cysts into relative time
temp.pat=patterntransform(xdep=my.agemodel$height,my.agemodel$time,xpat=palyn$Depth..m.,ypat=palyn$Dinofl.cyst....,direction='height to time',timetype = 'time',depositionmodel = 'age model')
plot(palyn$Depth..m.,palyn$Dinofl.cyst....,type='l',xlab='Stratigraphic Height [m]',ylab='Dinoflagellate cysts [counts]')

plot of chunk unnamed-chunk-8

plot(temp.pat$time,temp.pat$val,xlab='Relative Time',ylab='Dinoflagellate cysts [counts]',type='l')

plot of chunk unnamed-chunk-8

Identifying points in time and stratigraphic height

The spike in Dinoflagellate cysts in time is curious, so let's find out to what stratigraphic height it corresponds:

#Time of spike
spike.time=temp.pat$time[which(temp.pat$val==max(temp.pat$val))]
#Transform time of spike into height
poi=pointtransform(points=spike.time,xdep=my.agemodel$time,ydep=my.agemodel$height,direction='time to height',depositionmodel = 'age model')
#stratigraphic height of spike
poi$height
#> [1] 49.70198
#get lithology closest to the spike
geochem$Lithology[which(abs(geochem$Depth..m.-poi$height)==min(abs(geochem$Depth..m.-poi$height)))]
#> [1] marlstone/concr.
#> 6 Levels: black shale clayey marlstone limestone? limy marlstone ... marlstone/concr.

Transforming Isotope values

Last, the carbon isotope values are transformed into time. For this, only the heights of the locations are transformed into time while the isotope values remain unchanged

#get times of deposition for geochemnistry data
sampletimes.geochem=pointtransform(points=geochem$Depth..m.,xdep=my.agemodel$height,my.agemodel$time,direction='height to time',depositionmodel = 'age model',timetype = 'time')

#transform delta13 C into time
plot(sampletimes.geochem$height, geochem$delta13C.carb....PDB.,type='l',xlab='Stratigraphic Height [m]', ylab = "delts13C [per mil]")

plot of chunk unnamed-chunk-10

plot(sampletimes.geochem$time, geochem$delta13C.carb....PDB.,type='l',xlab = 'Relative Time',ylab='delta13C [per mil]')

plot of chunk unnamed-chunk-10

Note that there is only a weak squeezebox effect on the isotope curves since there are no intervals where changes in isotope values coincide with sedimentary condensation/dilution

References

Bornemann, Andre; Pross, Joerg; Reichelt, Kerstin; Herrle, Jens O; Hemleben, Christoph; Mutterlose, Joerg (2005): Micropaleontological investigation of Late Albanian Col de Palluel. PANGAEA, https://doi.org/10.1594/PANGAEA.737945

Bornemann, A et al. (2005): Reconstruction of short-term palaeoceanographic changes during the formation of the Late Albian Niveau Breistroffer black shales (Oceanic Anoxic Event 1d, SE France). Journal of the Geological Society of London, 162(4), 623-639, https://doi.org/10.1144/0016-764903-171

Witts, James D., et al. “Macrofossil evidence for a rapid and severe Cretaceous/Paleogene mass extinction in Antarctica.” Nature communications 7 (2016): 11738. https://doi.org/10.1038/ncomms11738

Hohmann, Niklas. 2018. Quantifying the Effects of Changing Deposition Rates and Hiatii on the Stratigraphic Distribution of Fossils. https://doi.org/10.13140/RG.2.2.23372.51841