Movatterモバイル変換


[0]ホーム

URL:


Skip to contents

isogeochem:
Tools for Stable Isotope Geochemistry

isogeochem makes working with stable oxygen, carbon, and clumped isotope data straightforward and reproducible. It offers tools to quickly calculate:

  • carbonateδ18O,δ17O,47, and48 values at a given temperature
  • carbonate growth temperatures fromδ18O,47, and48 values
  • isotope fractionation factors, e.g., carbonate/water, quartz/water
  • model DIC speciation as a function of temperature, pH, and salinity
  • convert between the VSMOW and VPDB scales

The list of available proxy–temperature calibrations is growing with each new released version.Please get in touch if you have suggestions to include!

Getting started

Installation

Install the released version ofisogeochem from CRAN.

install.packages("isogeochem")

Install the development version ofisogeochem from GitHub.

if(!require("devtools"))install.packages("devtools")if(!require("rmarkdown"))install.packages("rmarkdown")devtools::install_github("davidbajnai/isogeochem", build_vignettes=TRUE)

Vignettes

Case studies demonstrating the use and scope of the functions inisogeochem are available as vignettes.

browseVignettes("isogeochem")

Dual clumped isotope thermometry

UseD47() andD48() to calculate equilibrium carbonate clumped isotope values (47,48) for a given temperature.temp_D47() calculates carbonate growth temperatures from47 values, whiletemp_D48() calculates growth temperature corrected for kinetic effects considering both the47 and the48 value.

if(!require("shades"))install.packages("shades")# Model equilibrium carbonate ∆47 and ∆48 valuestemp=seq(0,100,10)# temperature range: 0—100 °CD47eq=D47(temp, eq="Fiebig21")D48eq=D48(temp, eq="Fiebig21")# Sample dataD47_coral=0.617;D47_coral_err=0.006D48_coral=0.139;D48_coral_err=0.022D47_speleo=0.546;D47_speleo_err=0.007D48_speleo=0.277;D48_speleo_err=0.029## Plot in ∆47 vs ∆48 space ##plot(0, type="l", axes=TRUE, ylim=c(0.4,0.7), xlim=c(0.1,0.3),     ylab=expression(Delta[47]*" (CDES90, ‰)"),     xlab=expression(Delta[48]*" (CDES90, ‰)"),     lty=0, font=1, cex.lab=1, las=1)# Plot the equilibrium curve and pointslines(D48eq,D47eq, col="purple", lwd=2)points(D48eq,D47eq, col=shades::gradient(c("blue","red"),length(temp)),       pch=19, cex=1.2)# Plot the sample data,# ... the kinetic slopes,# ... and calculate growth temperatures corrected for kinetic effects# ... using a single function!temp_D48(D47_coral,D48_coral,D47_coral_err,D48_coral_err, ks=-0.6,         add=TRUE, col="seagreen", pch=15)#>   temp temp_err#> 1   38        6temp_D48(D47_speleo,D48_speleo,D47_speleo_err,D48_speleo_err, ks=-1,         add=TRUE, col="darkorange", pch=17)#>   temp temp_err#> 1   30        9# Add labels to the plottext(D48(temp, eq="Fiebig21"),D47(temp, eq="Fiebig21"),paste(temp,"°C"),     col=shades::gradient(c("blue","red"),length(temp)), pos=4, cex=0.8)

Triple oxygen isotopes

d17O_c() calculates equilibrium carbonate oxygen isotope values (δ18O,δ17O,17O) for a given temperature and ambient water composition. Use themix_d17O() function to calculate mixing curves in triple oxygen isotope space, e.g., for modeling diagenesis.

if(!require("shades"))install.packages("shades")# Model equilibrium *calcite* precipitating from seawatertemp_sw=seq(0,50,10)# temperature range: 0—50 °Cd18O_sw=0# d18O value of seawaterD17O_sw=-0.004# D17O value of seawaterd18Op=prime(d17O_c(temp_sw,d18O_sw,D17O_sw, eq18="Daeron19")[,1])D17O=d17O_c(temp_sw,d18O_sw,D17O_sw, eq17="Wostbrock20", eq18="Daeron19")[,3]# Model progressing meteoric diagenetic alterationd18O_ds=-8# d18O value of diagenetic fluidD17O_ds=0.020# D17O value of diagenetic fluidem_equi=d17O_c(temp=10, d18O_H2O=d18O_sw, D17O_H2O=D17O_sw,                 eq17="Wostbrock20", eq18="Daeron19")# equilibrium endmemberem_diag=d17O_c(temp=80, d18O_H2O=d18O_ds, D17O_H2O=D17O_ds,                 eq17="Wostbrock20", eq18="Daeron19")# diagenetic endmembermix=mix_d17O(d18O_A=em_equi[1], d17O_A=em_equi[2],               d18O_B=em_diag[1], d17O_B=em_diag[2], step=25)## Plot in ∆17O vs d'18O space ##plot(0, type="l", ylim=c(-0.1,0.05), xlim=c(-10,40),     xlab=expression(delta*"'"^18*"O (‰, VSMOW)"),     ylab=expression(Delta^17*"O (‰, VSMOW)"),     lty=0, font=1, cex.lab=1, las=1)# Plot meteoric waters from the build-in datasetpoints(prime(meteoric_water$d18O),D17O(meteoric_water$d18O,meteoric_water$d17O),       col="lightblue1", pch=20)text(-4,0.05,"meteoric water", pos=4, col="lightblue1")# Plot the composition of the fluidspoints(prime(d18O_sw),D17O_sw, col="darkmagenta", pch=8)# seawatertext(prime(d18O_sw),D17O_sw,"seawater", pos=4, col="darkmagenta")points(prime(d18O_ds),D17O_ds, col="deeppink", pch=8)# diagenetic fluidtext(prime(d18O_ds),D17O_ds,"diagenetic fluid", pos=4, col="deeppink")# Plot the equilibrium curve and pointslines(d18Op,D17O, col="darkmagenta", lwd=2)points(d18Op,D17O, pch=19, cex=1.2,       col=shades::gradient(c("blue","red"),length(temp_sw)))text(d18Op,D17O,paste(temp_sw,"°C"), pos=4, cex=0.8,     col=shades::gradient(c("blue","red"),length(temp_sw)))text(30,-0.05,paste("equilibrium calcite \nfrom seawater"),     pos=3, col="darkmagenta")# Plot the mixing model between the equilibrium and diagenetic endmemberslines(prime(mix[,1]),mix[,2], col="deeppink", lty=3, lwd=2)points(prime(mix[,1]),mix[,2], pch=18, cex=1.5,       col=shades::gradient(c("#3300CC","deeppink"),length(mix[,2])))text(prime(mix[,1]),mix[,2],paste(mix[,3],"%", sep=""), pos=2, cex=0.8,     col=shades::gradient(c("#3300CC","deeppink"),length(mix[,3])))text(22,-0.09,paste("progressing","\ndiagenetic alteration","\n(recrystallisation) at 80°C", sep=""),     pos=2, col="deeppink")

Thermometry

Useisogeochem to calculate crystallization temperatures from carbonateδ18O and47 values.

# Temperature from D47 with or without errorstemp_D47(D47_CDES90=0.601, eq="Petersen19")#> [1] 24.9temp_D47(D47_CDES90=0.601,         D47_error=0.008 ,         eq="Anderson21")#>   temp temp_err#> 1 22.6      2.7# Temperature from d18Otemp_d18O(  d18O_c_VSMOW=30,  d18O_H2O_VSMOW=0,  min="calcite",  eq="Watkins13")#> [1] 25.9

Fractionation factors

Useisogeochem to calculate16O/18O fractionation factors at given temperatures.

if(!require("viridisLite"))install.packages("viridisLite")plot(0, type="l", las=1, yaxt="n",     xlim=c(10,30), ylim=c(-30,50),     xlab="Temperature (°C)",     ylab=expression("Equilibrium enrichment in "^18*"O relative to H"[2]*"O (‰)"))axis(2,seq(-30,50,10), las=1)temps=seq(10,30,1)d18O_H2O_VSMOW=0cols=viridisLite::viridis(7, option="C")text(10,45,expression("CO"[2]*" (aq)"), col=cols[1], adj=c(0,0))lines(temps,A_from_a(a18_CO2aq_H2O(temps),d18O_H2O_VSMOW),      lwd=2, lty=2, col=cols[1])text(10,35,expression("HCO"[3]^"–"), col=cols[2], adj=c(0,0))lines(temps,A_from_a(a18_HCO3_H2O(temps),d18O_H2O_VSMOW),      lwd=2, lty=2, col=cols[2])text(10,30,"calcite", col=cols[3], adj=c(0,0))lines(temps,A_from_a(a18_c_H2O(temps,"calcite","Daeron19"),d18O_H2O_VSMOW),  lwd=2, lty=1, col=cols[3])text(10,21,expression("CO"[3]^"2–"), col=cols[4], adj=c(0,0))lines(temps,A_from_a(a18_CO3_H2O(temps),d18O_H2O_VSMOW),  lwd=2, lty=2, col=cols[4])text(10,1,expression("H"[2]*"O"), col=cols[5], adj=c(0,0))lines(temps,rep(d18O_H2O_VSMOW,length(temps)),      lwd=3, lty=1, col=cols[5])text(10,-23,expression("OH"^"–"), col=cols[6], adj=c(0,0))lines(temps,B_from_a(a18_H2O_OH(temps, eq="Z20-X3LYP"),d18O_H2O_VSMOW),  lwd=2, lty=1, col=cols[6])

Utility functions

# Convert between the VSMOW and VPDB scales:to_VPDB(32)#> [1] 1.05032to_VSMOW(1)#> [1] 31.95092# Convert between classical delta and delta prime values:prime(10)#> [1] 9.950331unprime(9.95)#> [1] 9.999666# Calculate isotope fractionation factors:a_A_B(A=30.40, B=0.15)#> [1] 1.030245epsilon(a_A_B(A=30.40, B=0.15))#> [1] 30.24546

Datasets

Withinisogeochem you have quick access to important datasets.

NameDescriptionReference
devilsholeThe original Devils Hole carbonateδ18O time seriesWinograd et al. (2006)
LR04A benthic foraminiferaδ18O stackLisiecki & Raymo (2005)
GTS2020An abridged version of the GTS2020 oxygen isotope stackGrossman & Joachimski (2020)
meteoric_waterA compilation of meteoric waterδ18O andδ17O valuesBarkan & Luz (2010), Aron et al. (2021)

For more information on the datasets please have a look at the corresponding documentation, e.g.,?devilshole


License and citation

Copyright (C) 2023 David Bajnai

This program is free software: you can redistribute it and/or modify it under the terms of theGNU General Public License version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but without any warranty.

Follow the citation format provided inCITATION when referencingisogeochem.


See also

There are several other R packages that complementisogeochem and are worth checking out:

viridisLite andviridis produce color-blind and black-and-white printer friendly color scales.

clumpedr works withisoreader to read in raw measurement data and reproducibly process the results to clumped isotope values.

seasonalclumped can be used to reconstruct temperature and salinity variations from seasonal oxygen and clumped isotope records.

deeptime adds geological timescales to ggplots.

Links

License

Citation

Developers

Dev status

  • R-CMD-check
  • codecov
  • CodeFactor
  • repostatus
  • CRAN status
  • CRAN count
  • DOI

[8]ページ先頭

©2009-2025 Movatter.jp