# rintcal

# 1 Introduction

The international IntCal group provides ratified radiocarbon calibration curves such as IntCal20 (for northern hemisphere terrestrial radiocarbon dates; Reimer et al. 20201), Marine20 (for marine dates; Heaton et al. 20202) and SHCal20 (Hogg et al. 20203). This package provides these curves, as well as previous iterations (IntCal13, Marine13, SHCal13, IntCal09, Marine09, IntCal04, Marine04, SHCal04, IntCal98, Marine98), and postbomb curves (Levin and Kromer 20044, Santos et al. 20155, Andrews et al. 20166, Hua et al. 20217 and Emmenegger et al. 20248). For nostalgic or historical reasons, the curves from some seminal publications are also provided: Arnold and Libby 19519, Stuiver and Suess 196610 and Pearson and Stuiver 198611.

# 2 Installation

On first usage of the package, it has to be installed:

    install.packages('rintcal')

If you have a recent version of `rbacon`, `rplum`, `coffee`, `rice` or `clam` installed on your computer, `rintcal` will probably have been installed as well. Sometimes new versions of these packages appear, so please re-issue the above command regularly to remain up-to-date, or use:

    update.packages()

To obtain access to the calibration curves, first the package has to be loaded:

    library(rintcal)

# 3 Calibration curves

## 3.1 Loading curves

Now you can load a calibration curve into the memory, for example the default curve IntCal20, and check the first and last few entries:

    ic20 <- ccurve()
    head(ic20)

    ##      V1  V2 V3
    ## 9501  0 199 11
    ## 9500  1 197 11
    ## 9499  2 195 11
    ## 9498  3 193 11
    ## 9497  4 190 11
    ## 9496  5 188 11

    tail(ic20)

    ##      V1    V2   V3
    ## 6 54900 50009  997
    ## 5 54920 50027 1003
    ## 4 54940 50043 1007
    ## 3 54960 50063 1013
    ## 2 54980 50081 1018
    ## 1 55000 50100 1024

The files have three columns: cal BP, the corresponding IntCal C14 BP ages, and the uncertainties (1 standard deviation).

To see more detail of each rintcal function, place a question-mark before the function name, e.g.:

    ?ccurve

To get a list of available curves and associated files (and where they can be found):

    list.ccurves()

    ## /private/var/folders/w_/ktch6mh953z13lmhs4_9bj_80000gn/T/Rtmp93gBtj/Rinst16651c25c413/rintcal/extdata/

    ##  [1] "3Col_intcal04.14C"          "3Col_intcal09.14C"
    ##  [3] "3Col_intcal13.14C"          "3Col_intcal20.14C"
    ##  [5] "3Col_intcal98.14C"          "3Col_marine04.14C"
    ##  [7] "3Col_marine09.14C"          "3Col_marine13.14C"
    ##  [9] "3Col_marine20.14C"          "3Col_marine98.14C"
    ## [11] "3Col_shcal13.14C"           "3Col_shcal20.14C"
    ## [13] "Arnold_Libby_1951.14C"      "Jungfraujoch.14C"
    ## [15] "Kure.14C"                   "LevinKromer.14C"
    ## [17] "NOTCal04.14C"               "Pearson_Stuiver_1986.14C"
    ## [19] "Santos.14C"                 "Stuiver_Suess_1966.14C"
    ## [21] "intcal20.14c"               "intcal20_data.txt"
    ## [23] "intcal20_data_sources.txt"  "marine20.14c"
    ## [25] "postbomb_NH1.14C"           "postbomb_NH1_2009.14C"
    ## [27] "postbomb_NH1_monthly.14C"   "postbomb_NH2.14C"
    ## [29] "postbomb_NH2_2009.14C"      "postbomb_NH2_monthly.14C"
    ## [31] "postbomb_NH3.14C"           "postbomb_NH3_2009.14C"
    ## [33] "postbomb_NH3_monthly.14C"   "postbomb_SH1-2.14C"
    ## [35] "postbomb_SH1-2_2009.14C"    "postbomb_SH1-2_monthly.14C"
    ## [37] "postbomb_SH3.14C"           "postbomb_SH3_2009.14C"
    ## [39] "postbomb_SH3_monthly.14C"   "shcal20.14c"
    ## [41] "shcal20_data.txt"           "shcal20_data_sources.txt"

### 3.1.1 Libby’s curve

Legacy calibration data such as Arnold & Libby (1951) can be compared with the latest calibration curves. Only included here are those radiocarbon dates of Arnold and Libby which come with independent (historical, archaeological or dendrochronological) age estimates. Note that Arnold and Libby did not define their ‘calendar years’ explicitly, so the ages have to be taken with a degree of caution.

    libby <- ccurve("arnold_libby_1951")
    plot(libby[,1], libby[,2], xlab="'cal' BP", ylab="C14 BP", pch=20) # plot the radiocarbon dates and their known calendar ages
    segments(libby[,1], libby[,2]-libby[,3], libby[,1], libby[,2]+libby[,3]) # radiocarbon error bars
    abline(0, 1, lty=2)
    ic20 <- ccurve() # add the IntCal20 curve
    ic20.pol <- cbind(c(ic20[,1], rev(ic20[,1])), c(ic20[,2]-ic20[,3], rev(ic20[,2]+ic20[,3])))
    polygon(ic20.pol, col="darkgreen", border=NA)

## 3.2 Curve data

To look at the data underlying the IntCal curves, we can open the IntCal20 dataset downloaded from intchron.org and extract any relevant information, for example to check how many Irish oaks are in the dataset:

    intcal <- intcal.read.data()
    IrishOaks <- intcal.data.frames(intcal, taxon="Quercus sp.", country="Ireland")

    ## $taxon
    ## [1] "Quercus sp."
    ##
    ## $country
    ## [1] "Ireland"

    length(IrishOaks)

    ## [1] 17

Or plot a Bristlecone Pine series, one with single-ring radiocarbon dates that show a very abrupt change in radiocarbon age (Miyake Event):

    bristle <- intcal.data.frames(intcal, taxon="Pinus longaeva")

    ## $taxon
    ## [1] "Pinus longaeva"

    bristle_yearly <- bristle[[20]]$data[,c(8,14,15)]
    plot(bristle_yearly[,1], bristle_yearly[,2], xlab="cal BP", ylab="C14 BP")
    segments(bristle_yearly[,1], bristle_yearly[,2]-bristle_yearly[,3],
      bristle_yearly[,1], bristle_yearly[,2]+bristle_yearly[,3])

The data underlying parts of the IntCal calibration curve can be visualised, for example from 500 to 0 cal BP:

    intcal.data(0, 500)

Want to plot only some specific datasets over a period of time? This requires several steps.

    dat <- intcal.data(20e3, 25e3)

    unique(dat$set)

    ## [1] 109 110 111 114 120 121 122 124 126

    dat <- intcal.data(20e3, 25e3, select.sets=c(109, 120), data.cols=c(1,2))

It is also possible to plot the data in other time-scales such as pMC (`p`), F14C (`F`) or Δ14C (`Delta`), e.g.:

    intcal.data(20e3, 25e3, timescale="Delta")

Below are functions to extract and plot individual IntCal datasets, for example the first dataset within the ‘intcal’ dataset:

    firstrecord <- intcal.extract.record(1)
    intcal.plot.record(1)

## 3.3 Manipulations

You can also combine calibration curves, e.g. a 40%:60% mix of Intcal20 and Marine20 with a 100+-20 year offset for the latter. If save is set to TRUE, the resulting curve will be saved with the name mixed.14C, in a folder together with the calibration curves. The name of this folder is listed, and it can be changed by specifying the option ‘cc.dir’.

    mydir <- tempdir()
    # new.ccdir(mydir)
    mix.ccurves(0.4, cc1="IntCal20", cc2="Marine20", offset=cbind(100, 20), save=TRUE, cc.dir=mydir)

    ## mixed.14C saved in folder /var/folders/w_/ktch6mh953z13lmhs4_9bj_80000gn/T//Rtmp7YpjYx

To glue prebomb and postbomb calibration curves into one and store it as a variable in your session (for example, IntCal20 and the NH1 postbomb curve):

    glued <- glue.ccurves("IntCal20", "NH1")
    plot(glued[1:650,1:2], xlab="cal BP", ylab="C-14 BP", pch=".")

1. Reimer et al., 2020. The IntCal20 Northern Hemisphere radiocarbon age calibration curve (0-55 cal kBP). Radiocarbon 62, 725-757 https://dx.doi.org/10.1017/RDC.2020.41↩︎

2. Heaton et al., 2020. Marine20 - the marine radiocarbon age calibration curve (0-55,000 cal BP). Radiocarbon 62, 779-820 https://dx.doi.org/10.1017/RDC.2020.68↩︎

3. Hogg et al., 2020. SHCal20 Southern Hemisphere calibration, 0-55,000 years cal BP. Radiocarbon 62, 759-778 https://dx.doi.org/10.1017/RDC.2020.59↩︎

4. Levin & Kromer, 2004. The tropospheric 14CO2 level in mid-latitudes of the Northern Hemisphere (1959-2003), Radiocarbon 46, 1261-1272 https://dx.doi.org/10.1017/S0033822200033130↩︎

5. Santos et al., 2015. Annual growth rings in a sample of Parana pine (Araucaria angustifolia): Toward improving the 14C calibration curve for the Southern Hemisphere. Quaternary Geochronology 25, 96-103 https://dx.doi.org/10.1016/j.quageo.2014.10.004↩︎

6. Andrews et al., 2016. Bomb radiocarbon and the Hawaiian Archipelago: Coral, otoliths and seawater. Radiocarbon 58, 531-548 https://dx.doi.org/10.1017/RDC.2016.32↩︎

7. Hua et al., 2021. Atmospheric radiocarbon for the period 1950-2019. Radiocarbon 64, 723-745 https://dx.doi.org/10.1017/RDC.2021.95↩︎

8. Emmenegger et al., 2024. ICOS ATC 14C Release analysed by ICOS CRL from Jungfraujoch (6.0 m), 2015-09-21–2023-10-02. ICOS RI https://hdl.handle.net/11676/6c_RZ7NHc2dnZv7d84BMY_YY↩︎

9. Arnold & Libby, 1951. Radiocarbon dates. Science 113, p. 111-120 https://dx.doi.org/10.1126/science.113.2927.111↩︎

10. Stuiver & Suess 1966. On the relationship between radiocarbon dates and true samples ages. Radiocarbon 8, 534-540, https://dx.doi.org/10.1017/S0033822200000345↩︎

11. Pearson & Stuiver, 1986. High-precision calibration of the radiocarbon time scale, 500–2500 BC. Radiocarbon 28, 839–862, https://doi.org/10.1017/S0033822200060173↩︎