Chron.intcal13Constant
intcal13
NamedTuple with 4 fields:
  dt            = Int64 1
  Age_Calendar  = StepRange{Int64, Int64}   1:1:50000
  Age_sigma     = Vector{Float64}(50000,)   [8.0 ... 274.0]
  Age_14C       = Vector{Float64}(50000,)   [196.8 ... 46401.0]

The IntCal13 radiocarbon calibration curve

Reimer PJ, Bard E, Bayliss A, Beck JW, Blackwell PG, Bronk Ramsey C, Buck CE, Cheng H, Edwards RL, Friedrich M, Grootes PM, Guilderson TP, Haflidason H, , Hajdas I, Hatté C, Heaton TJ, Hogg AG, Hughen KA, Kaiser KF, Kromer B, Manning SW, Niu M, Reimer RW, Richards DA, Scott EM, Southon JR, Turney CSM, van der Plicht J. (2013) "IntCal13 and MARINE13 radiocarbon age calibration curves 0-50000 years calBP". Radiocarbon 55(4). doi: 10.2458/azujsrc.55.16947

Chron.intcal20Constant
intcal20
NamedTuple with 4 fields:
  dt            = Int64 1
  Age_Calendar  = StepRange{Int64, Int64}   1:1:55000
  Age_sigma     = Vector{Float64}(55000,)   [11.0 ... 1024.0]
  Age_14C       = Vector{Float64}(55000,)   [197.0 ... 50100.0]

The IntCal20 northern hemisphere radiocarbon calibration curve.

Reimer P, Austin WEN, Bard E, Bayliss A, Blackwell PG, Bronk Ramsey C, Butzin M, Cheng H, Edwards RL, Friedrich M, Grootes PM, Guilderson TP, Hajdas I, Heaton TJ, Hogg AG, Hughen KA, Kromer B, Manning SW, Muscheler R, Palmer JG, Pearson C, van der Plicht J, Reimer RW, Richards DA, Scott EM, Southon JR, Turney CSM, Wacker L, Adolphi F, Büntgen U, Capano M, Fahrni S, Fogtmann-Schulz A, Friedrich R, Köhler P, Kudsk S, Miyake F, Olsen J, Reinig F, Sakamoto M, Sookdeo A, Talamo S. (2020). "The IntCal20 Northern Hemisphere radiocarbon age calibration curve (0-55 cal kBP)". Radiocarbon 62. doi: 10.1017/RDC.2020.41.

Chron.marine20Constant

The Marine20 radiocarbon calibration curve.

Heaton TJ, Köhler P, Butzin M, et al. (2020) "Marine20—The Marine Radiocarbon Age Calibration Curve (0–55,000 cal BP)" Radiocarbon 62(4):779-820. doi: 10.1017/RDC.2020.68

Chron.shcal20Constant
shcal20
NamedTuple with 4 fields:
  dt            = Int64 1
  Age_Calendar  = StepRange{Int64, Int64}   1:1:55000
  Age_sigma     = Vector{Float64}(55000,)   [10.0 ... 1008.0]
  Age_14C       = Vector{Float64}(55000,)   [171.0 ... 50132.0]

The SHCal20 southern hemisphere radiocarbon calibration curve.

Hogg AG, Heaton TJ, Hua Q, Palmer JG, Turney CSM, Southon J, Bayliss A, Blackwell PG, Boswijk G, Bronk Ramsey C, Pearson C, Petchey F, Reimer P, Reimer R, Wacker L. (2020). "SHCal20 Southern Hemisphere calibration, 0-55,000 years cal BP". Radiocarbon 62. doi: 10.1017/RDC.2020.59

Chron.BootstrapCrystDistributionKDEMethod
BootstrapCrystDistributionKDE(smpl::ChronAgeData; cutoff=-0.05, [tpbloss=0])

Bootstrap an estimate of the pre-eruptive (or pre-depositional) mineral crystallization distribution shape from a Chron.ChronAgeData object containing data for several samples, using a kernel density estimate of stacked sample data.

If the samples provided as csv files in smpl.Path take the five-column form of U-Pb isotopic data files, the ages and uncertainties will be those of upper intercepts given a time of Pb-loss optionally specified as tpbloss.

Uncertainties will be treated as one or two-sigma absolute based on the value of smpl.inputSigmaLevel.

Examples

BootstrappedDistribution = BootstrapCrystDistributionKDE(smpl)
Chron.BootstrapCrystDistributionKDEMethod
BootstrapCrystDistributionKDE(data::AbstractArray, [sigma::AbstractArray]; cutoff=-0.05)

Bootstrap an estimate of the pre-eruptive (or pre-depositional) mineral crystallization distribution shape from a 1- or 2-d array of sample ages (one row per sample, one column per datum, padded with NaNs as needed) and an equivalent-size array of one-sigma uncertainties, using a kernel density estimate of stacked sample data.

Examples

# Bootstrap crystallization distribution for a synthetic dataset with ages
# [1,2,3,...10] Ma and uncertainties of 1 Ma each
BootstrappedDistribution = BootstrapCrystDistributionKDE(1:10, ones(10))
Chron.StratMetropolisFunction
StratMetropolis(smpl::ChronAgeData, [hiatus::HiatusData,] config::StratAgeModelConfiguration)

Runs the main Chron.jl age-depth model routine for a stratigraphic set of samples defined by sample heights and simple Gaussian age constraints in the smpl struct, and an age-depth model configuration defined by the config struct.

Optionally, if a hiatus struct is provided, the model will additionally incorporate information about the durations of known hiatuses at the specified model heights.

Examples:

(mdl, agedist, lldist) = StratMetropolis(smpl, config)
(mdl, agedist, hiatusdist, lldist) = StratMetropolis(smpl, hiatus, config)
Chron.StratMetropolis14CMethod
StratMetropolis14C(smpl::ChronAgeData, [hiatus::HiatusData,] config::StratAgeModelConfiguration)

Runs the main Chron.jl age-depth model routine for a stratigraphic set of samples defined by sample heights and interpolated radiocarbon age constraints in the smpl struct, and an age-depth model configuration defined by the config struct.

Optionally, if a hiatus struct is provided, the model will additionally incorporate information about the durations of known hiatuses at the specified model heights.

Examples:

(mdl, agedist, lldist) = StratMetropolis14C(smpl, config)
(mdl, agedist, hiatusdist, lldist) = StratMetropolis14C(smpl, hiatus, config)
Chron.StratMetropolisDistFunction
StratMetropolisDist(smpl::ChronAgeData, [hiatus::HiatusData,] config::StratAgeModelConfiguration)

Runs the main Chron.jl age-depth model routine for a stratigraphic set of samples defined by sample heights and fitted asymmetric age distributions (bilinear_exponential) in the smpl struct, and an age-depth model configuration defined by the config struct.

Optionally, if a hiatus struct is provided, the model will additionally incorporate information about the durations of known hiatuses at the specified model heights.

Examples:

(mdl, agedist, lldist) = StratMetropolisDist(smpl, config)
(mdl, agedist, hiatusdist, lldist) = StratMetropolisDist(smpl, hiatus, config)
Chron.bilinear_exponentialMethod
bilinear_exponential(x::Number, p::AbstractVector)

Evaluate the value of a "bilinear exponential" function defined by the parameters p at point x. This function, which can be used to approximate various asymmetric probability distributions found in geochronology, is defined by an exponential function with two log-linear segments joined by an atan sigmoid:

\[ℯ^{p_1} * ℯ^{v x_s p_4 p_5 - (1-v) x_s p_4/p_5}\]

where

\[v = 1/2 - atan(x_s)/π\]

is a sigmoid, positive on the left-hand side, and

\[x_s = (x - p_2)/p_3\]

is x scaled by mean and standard deviation.

The elements of the parameter array p may be considered to approximately represent

p[1] # pre-exponential (normaliation constant)
p[2] # mean (central moment)
p[3] # standard deviation
p[4] # sharpness
p[5] # skew

where all parameters pᵢ must be nonnegative.

Chron.bilinear_exponential_llMethod
bilinear_exponential_ll(x, p)

Return the log likelihood corresponding to a bilinear_exponential distribution defined by the parameters p evaluate at point x.

If x is provided as a number and p as a vector, a single evaluation will be returned; if x is provided as a vector and p as a matrix, the sum over all i for each distribution p[:,i] evaluated at x[i] will be returned instead.

See also bilinear_exponential

Chron.screen_outliersMethod
screen_outliers(smpl::ChronAgeData; agemin=0.0, agemax=Inf, maxgap=100, make_plots=true, discordancemin=0, discordancemax=100)

Screen outliers from the ChronAgeData struct smpl (making new data files in a screened subdirectory within smpl.Path) rejecting samples that either

a) Are older than agemax or younger than agemin

b) Are on the old side of a gap of more than maxgap/N sigma (e.g., xenocrysts)

If make_plots is true, plots showing screening results will be made in smpl.Path/screened.

If the underlying data is in the form of U-Pb ratios, the discordancemin and discordancemax keyword arguments may also be used for additional screening.

Chron.tMinDistMetropolisMethod
tMinDistMetropolis(smpl::ChronAgeData, nsteps::Int, burnin::Int, dist::Array{Float64})

Calculate the minimum limiting (eruption/deposition) age of each sample defined in the smpl struct, using the Isoplot.metropolis_min function, assuming mineral ages for each sample are drawn from the source distribution dist. Fits a bilinear_exponential function to the resulting stationary distribution for each sample and stores the results in smpl.Params for use by the StratMetropolisDist function.

If the samples provided as csv files in smpl.Path take the five-column form of U-Pb isotopic data files, these will be interpreted as the columns

| ²⁰⁷Pb/²³⁵U | uncert (absolute) | ²⁰⁶Pb/²³⁸U | uncert (absolute) | correlation |

and Pb-loss-aware eruption/deposition age estimation will be conducted. In all other cases, the first two columns of each data file will be interpreted as

| Age | Age uncert (absolute) |

and standard eruption/deposition age estimation will be conducted.

In all cases, uncertainties will be treated as one or two-sigma absolute based on the value of smpl.inputSigmaLevel.

Examples

smpl = tMinDistMetropolis(smpl, 10^6, 10^5, HalfNormalDistribution)