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.
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
Model how changing deposition rates and hiatuses alter the stratigraphic expression of temporal patterns
Express data derived from the sedimentary rock record in terms of time
The 2.1.2 version of the package contains the following core functions:
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
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:
patterntodepositionmodel
to construct a deposition model based on the sedimentary condensation/dilution of a known patternIn addition to that, the following functions are available for backwards compatibility:
strattotimepointbin
, strattotimepointcont
, timetostratpointbin
, andtimetostratpointcont
as wrappers of pointtransform
strattotimeratebin
, strattotimeratecont
, timetostratratebin
, and timetostratratecont
as wrappers of patterntransform
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
Data consisting of individual points can be transformed via the function pointtransform
. These points can be
Locations of samples or arbitrary objects found in the sediment (will be transformed into their time of deposition)
Time of deposition of any object contained in the sediment (will be transformed into the stratigraphic height where it can be found).
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.
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 can be transformed using the function patterntransform
. Patterns can be taken as synonymous with rates, and can be subdivided into
Temporal rates: Any input into the sediment per time unit
Stratigraphic rates: Any content in the sediment per stratigraphic height
This can for example be
Fossil rates (e.g. fossil found per meter or shells deposited per year)
First / last fossil occurrences (but see below)
Rates of proxies (e.g. Th content per meter/ Th input per time unit)
but also information derived from these rates such as
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.
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 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
:
as age model
as piecewise linear deposition rate
as binned deposition rate.
By default, the deposition model is assumed to be a piecewise linear deposition rate. This can be adjusted using the depositionmodel
option.
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)
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 xdep
and agemodelheight
corresponds to ydep
.
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
.
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.
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
For the transformation from height to time, the additional option unit
is available. This is since deposition rates in the section can be described in two ways:
Either they give a description of the deposition rates with which the heights in the section were deposited
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
.
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.
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.
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)))
#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)))
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]')
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
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')
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')
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
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)
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(temp.pat$time,temp.pat$val,xlab='Relative Time',ylab='Dinoflagellate cysts [counts]',type='l')
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.
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(sampletimes.geochem$time, geochem$delta13C.carb....PDB.,type='l',xlab = 'Relative Time',ylab='delta13C [per mil]')
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
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