Module 6: ReSources Full example

Driffield Terrace, York

Chronologies

2026-04-10

Training Objectives

By the end of this session, you will:

  1. Set up & run a complex mixing model in ReSources
  2. Interpret different estimate types (source contributions, by-proxy, components)
  3. Cover the final step in the isotope-to-chronology pipeline: taking the marine dietary carbon estimate produced by ReSources and using it to apply a mixed-curve calibration in OxCal, so that each individual’s radiocarbon date accounts for their personal dietary reservoir offset.

Tip

Hands-on approach: Follow along on your computer as we work through the data from Driffield Terrace, York together

Driffield Terrace, York

You should have downloaded the following files:

  1. RomanBaselineData.xlsx This file contains four worksheets containing data for the following source groups: cereals, domestic mammals, freshwater fish & marine fish.
  2. york.xlsx. The file contains individual worksheets for incorporating data into Resources.

Pre-Analysis Checklist

Step 1 — Draw the δ13C–δ15N bivariate plot for all sources and consumers - using RomanBaselineData.xlsx.

Pre-Analysis Checklist

Step 2 — Check consumers fall within the source mixing polygon
(after applying trophic enrichment factors).

The majority of DRIF individuals fall within the TEF-shifted source mixing polygon, clustering in the region of overlap between the Domestic Mammal and Cereal end-members, consistent with a predominantly terrestrial C3 diet.

DRIF-10 falls within the Freshwater Fish hull, suggesting a markedly different dietary profile.

DRIF-23, DRIF-23 & DRIF-35 fall in areas of isotopic space not fully enclosed by the current source configuration.

There appears to be an issue with bimodality in the Freshwater Fish data

Calculate mean and standard deviation for each source group

What ReSources needs for each source group.

For each source group (e.g. Cereal, Domestic Mammal, Freshwater Fish & Marine Fish) you need to calculate:

Mean δ¹³C and its standard deviation + Mean δ¹⁵N and its standard deviation

These should reflect the true biological variability of the data. The SD is the natural spread of isotope values across individuals within that source group & is always much larger than measurement error.


Source δ¹³C (mean) δ¹³C (SD) δ¹⁵N (mean) δ¹⁵N (SD)
Cereal −22.7 0.9 4.7 2.3
Domestic Mammal −21.7 0.5 6.3 1.7
Freshwater Fish −23.9 2.9 12.6 1.9
Marine Fish −13.4 1.3 15.0 1.5

Add the mean δ¹³C+sd & mean δ¹⁵N+sd you have calculated to source_data (worksheet) york.xlsx

The source_isotopic (worksheet) will automatically update with the estimated actual δ13C and δ15N of protein and energy components ingested from measure collagen using offsets detailed below.


Food Group Δ13Cmuscle-collagen Δ13Clipids-collagen Δ15Nmuscle-collagen
Cereal −2 +0.5 0
Domestic Mammal −2 -8 0
Freshwater Fish −1 -7 +1.5
Marine Fish −1 -7 +1.5

Load Resources

Open RStudio and run the following in the RStudio Source panel

library("ReSources")


Run the app

Run the following in the RStudio Source panel

ReSources::startApplication()


Important

The ReSources::startApplication() function will launch a Shiny application in a separate window. ReSources is then launched in a new window or tab in your default web browser.

Resources Model options

Navigate to: Model Options

Resources Options

Target table

Proxy d13C (mean) d13C (error) d15N (mean) d15N (error)
DRIF-8 -20.4 0.2 11.7 0.2
DRIF-52 -9.0 0.2 10.1 0.2

Tip: Copy from Excel → Click outside table → Ctrl+V

Below target data

Offset
d13C 4.8 0.5
d15N 5.5 0.5

Tip: Copy from Excel → Click outside table → Ctrl+V

Covariates are additional variables about each individual consumer that you want the model to use to help explain variation in dietary proportions across your sample. Example of Categorical covariates that divide your consumers into discrete categories might be sex, age group, burial type, archaeological phase, etc


Proxy Covariate_1
DRIF-8 Male
DRIF-52 Female


Tip: Copy from Excel → Click outside table → Ctrl+V

⚠️ Proxy names must match across all tables!

Data → Sources d13C

Proxy dropdown d13C.

Source protein(mean) protein(uncert) carbs/lipids(mean) carbs/lipids(uncert)
TV -24.7 1 -22.2 1
TP -23.7 0.5 -29.7 0.5
FF -24.9 3 -30.9 3
MF -14.4 1.5 -20.4 1.5


Tip: Copy from Excel → Click outside table → Ctrl+V

⚠️ Use the data from source_isotopic worksheet and not source_data



TV, TP, FF & MF can be changed to whatever you want. TV = terrestrial vegetation (Cereals); TP - terrestrial protein (domestic mammals); FF = freshwater fish; MF = marine fish

⚠️ Proxy dropdown d15N. Change from d13C

Only protein (no N in carbs/lipids):

Source protein(mean) protein(uncert)
TV +4.1 ±2.5
TP +8.3 ±2
FF +14.1 ±2
MF +16.5 ±1.5

Tip: Copy from Excel → Click outside table → Ctrl+V

Both components:

Source protein(mean) protein(uncert) carbs/lipids(mean) carbs/lipids(uncert)
TV 10 5 90 5
TP 30 5 70 5
FF 65 5 35 5
MF 65 5 35 5

Tip: Copy from Excel → Click outside table → Ctrl+V

Both components:

Source protein(mean) protein(uncert) carbs/lipids(mean) carbs/lipids(uncert)
d13C 74 0 26 0
d15N 100 0 0 0

Tip: Copy from Excel → Click outside table → Ctrl+V

Driffield Terrace, York: Results

Complete the following on your own once ReSources has finished running the model:

  • [1] Plot the Marine Fish (MF) estimate of the Target Data and save as an SVG file
  • [2] Plot the protein estimate the Target Data and save as a PDF file
  • [3] Plot the carbs/lipids estimate of males/females and save as a png file
  • [4] Export the summary statistics
  • [5] Plot the estimates of all source contributions for DRIF-10


DRIF-10 has a potentially significant marine fish caloric contribution to their diet

Estimate mean sd median
TV 83.5 14.9 87.9
TP 6.5 12.2 0.7
FF 0.8 2.9 0
MF 9.2 5.8 8.5

The Marine Dietary Reservoir Effect

The Two-Step Solution

ReSources and OxCal handle this together — but each does a distinct job:


Step Tool What it does
1 ReSources Estimates the proportion of collagen carbon derived from marine sources for each individual, with full Bayesian uncertainty
2 OxCal Combines the IntCal20 and Marine20 calibration curves



Tip

We are only using marine dietary reservoir effect
You could implement for a freshwater reservoir effect or even marine/freshwater reservoir effects.

Step 1: ReSources

OxCal code export

Output>OxCal export

Estimate 1 = Source contributions_MF

For the Mean Detla R 1 and SD Delta R 1 you need to calculate the local correction: ΔR

The global marine reservoir correction (~400 ¹⁴C yr) is built into the Marine20 calibration curve. ΔR captures the additional local offset specific to your coastal region and time period. It must be determined separately — see the Marine Reservoir Database at calib.org/marine/

Get data from

  • [1] 20 Nearest point
  • [2] 53.951261 centered @ lat
  • [2] -1.0982037 centered @ long

Select all and Calculate Average of ticked boxes

Weighted mean ΔR = -140 Uncertainity ΔR = 55

Populate Mean Detla R 1 and SD Delta R 1

Click Type of estimate Mean + SD

Generate OxCal code

Step 2 Generate OxCal code

Mean + SD of marine fish estimate

Step 2 Generate OxCal code

PDF of marine fish estimate

The OxCal Code — Step by Step

Plot()
 {
  // Step 1: Declare both calibration curves
  Curve("IntCal20", "IntCal20.14c");
  Curve("Marine20", "Marine20.14c");
  // Step 2: Define local marine reservoir offset (ΔR ± error, in 14C years)
  //         Obtain from calib.org/marine/ for your site location and period
  Delta_R("LocalMarine", -140, 55);
  // Step 3: One Mix_Curve + R_Date pair per individual
  //         Mix_Curve("label", "terrestrial curve", "marine curve", %marine mean, %marine SD)
  Mix_Curve("Diet_DRIF-10",  "IntCal20", "LocalMarine", 10, 6);
  R_Date("DRIF-10_corrected",  1755, 30);
  Curve("IntCal20");
  R_Date("DRIF-10",  1755, 30);
 };

Before You Build the OxCal Model

Work through this checklist before writing any Mix_Curve code:

1 · Bivariate pre-analysis complete?
All individuals used in OxCal should fall within the TEF-shifted source mixing polygon. Outliers must be investigated.

2 · Freshwater sources resolved?
If your freshwater fish end-member is bimodal (e.g., mixing anadromous and obligate freshwater species), the marine estimate will be confounded. Split the source or resolve the issue before running ReSources.

3 · ΔR value obtained?
Use contemporaneous paired marine/terrestrial samples from the same context where possible. Document your source.

4 · Chronological model structure decided?
The Mix_Curve / R_Date pairs sit inside whatever Sequence, Phase, or Boundary structure your site archaeology demands. Plan this before writing code.