`Chron.intcal13`

— Constant```
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/azu*js*rc.55.16947

`Chron.intcal20`

— Constant```
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.marine20`

— ConstantThe 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.shcal20`

— Constant```
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.BilinearExponential`

— Type```
BilinearExponential(loc, scl, shp, skw)
BilinearExponential(p::AbstractVector)
struct BilinearExponential{T<:Real} <: ContinuousUnivariateDistribution
A::T
loc::T
scl::T
shp::T
skw::T
end
```

A five-parameter pseudo-distribution which can be used to approximate various asymmetric probability distributions found in geochronology (including as a result of Bayesian eruption age estimation).

This "bilinear exponential" distribution, as the name might suggest, is defined as an exponential function with two log-linear segments, joined by an arctangent sigmoid:

\[ℯ^{A} * ℯ^{v*xₛ*shp*skw - (1-v)*xₛ*shp/skw}\]

where

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

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

\[xₛ = (x - loc)/scl\]

is `x`

scaled by the location parameter `loc`

and scale parameter `scl`

, In addition to the scale parameter `scl`

, the additional shape parameters `shp`

and `skw`

(which control the sharpness and skew of the resulting distribution, respectively), are all three required to be nonnegative.

If only four parameters `(loc, scl, shp, skw)`

are specified, the normalization constant `A`

will be calculated such that the resulting distribution is normalized.

`Chron.BootstrapCrystDistributionKDE`

— Method`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.BootstrapCrystDistributionKDE`

— Method`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.StratMetropolis`

— Function```
StratMetropolis(smpl::ChronAgeData, [hiatus::HiatusData,] config::StratAgeModelConfiguration)
StratMetropolis(smpl::GeneralAgeData, [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.StratMetropolis14C`

— Method`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.StratMetropolisDist`

— Function`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 (`BilinearExponential`

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

— Method`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.tMinDistMetropolis`

— Method`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 `BilinearExponential`

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