[CHNOSZ-commits] r131 - in pkg/CHNOSZ: . R demo inst man vignettes
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Sun Feb 5 08:30:25 CET 2017
Author: jedick
Date: 2017-02-05 08:30:22 +0100 (Sun, 05 Feb 2017)
New Revision: 131
Modified:
pkg/CHNOSZ/DESCRIPTION
pkg/CHNOSZ/R/buffer.R
pkg/CHNOSZ/R/diagram.R
pkg/CHNOSZ/R/util.plot.R
pkg/CHNOSZ/demo/buffer.R
pkg/CHNOSZ/demo/protbuff.R
pkg/CHNOSZ/inst/NEWS
pkg/CHNOSZ/man/affinity.Rd
pkg/CHNOSZ/man/diagram.Rd
pkg/CHNOSZ/man/util.plot.Rd
pkg/CHNOSZ/vignettes/anintro.Rmd
pkg/CHNOSZ/vignettes/vig.bib
Log:
anintro.Rmd: add transects
Modified: pkg/CHNOSZ/DESCRIPTION
===================================================================
--- pkg/CHNOSZ/DESCRIPTION 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/DESCRIPTION 2017-02-05 07:30:22 UTC (rev 131)
@@ -1,6 +1,6 @@
Date: 2017-02-05
Package: CHNOSZ
-Version: 1.0.8-20
+Version: 1.0.8-21
Title: Chemical Thermodynamics and Activity Diagrams
Author: Jeffrey Dick
Maintainer: Jeffrey Dick <j3ffdick at gmail.com>
Modified: pkg/CHNOSZ/R/buffer.R
===================================================================
--- pkg/CHNOSZ/R/buffer.R 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/R/buffer.R 2017-02-05 07:30:22 UTC (rev 131)
@@ -23,7 +23,7 @@
thermo$buffers <- thermo$buffers[-imod,]
assign("thermo", thermo, "CHNOSZ")
message(paste('mod.buffer: removed ',c2s(species),' in ',
- c2s(unique(name)),' buffer.',sep=''))
+ c2s(unique(name)),' buffer',sep=''))
} else {
if(missing(state)) state <- thermo$buffers$state[imod]
if(missing(logact)) logact <- thermo$buffers$logact[imod]
@@ -36,10 +36,10 @@
assign("thermo", thermo, "CHNOSZ")
if(identical(state.old,state) & identical(logact.old,logact)) {
message(paste('mod.buffer: nothing changed for ',
- c2s(species),' in ',c2s(unique(name)),' buffer.',sep=''))
+ c2s(species),' in ',c2s(unique(name)),' buffer',sep=''))
} else {
message(paste('mod.buffer: changed state and/or logact of ',
- c2s(species),' in ',c2s(unique(name)),' buffer.',sep=''))
+ c2s(species),' in ',c2s(unique(name)),' buffer',sep=''))
}
}
} else {
@@ -51,7 +51,7 @@
t <- data.frame(name=name,species=species,state=state,logact=logact)
thermo$buffers <- rbind(thermo$buffers,t)
assign("thermo", thermo, "CHNOSZ")
- message(paste('mod.buffer: added ',c2s(unique(name)),'.',sep=''))
+ message(paste('mod.buffer: added',c2s(unique(name))))
}
return(invisible(thermo$buffers[thermo$buffers$name %in% name,]))
}
Modified: pkg/CHNOSZ/R/diagram.R
===================================================================
--- pkg/CHNOSZ/R/diagram.R 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/R/diagram.R 2017-02-05 07:30:22 UTC (rev 131)
@@ -20,7 +20,7 @@
# line styles
lty=NULL, lwd=par("lwd"), dotted=NULL,
# colors
- bg=par("bg"), col=par("col"), col.names=par("col"), fill=NULL,
+ col=par("col"), col.names=par("col"), fill=NULL,
# labels
names=NULL, main=NULL, legend.x="topright", format.names=TRUE,
# plotting controls
@@ -254,7 +254,7 @@
if(xvalues[imax] < xlim[1] + 0.2*diff(xlim)) adj <- 0
text(xvalues[imax], plotvals[[i]][imax], labels=names[i], adj=adj)
}
- } else legend(x=legend.x, lty=lty, legend=names, col=col, bg=bg, cex=cex.names, lwd=lwd)
+ } else legend(x=legend.x, lty=lty, legend=names, col=col, cex=cex.names, lwd=lwd, ...)
}
# add a title
if(!is.null(main)) title(main=main)
Modified: pkg/CHNOSZ/R/util.plot.R
===================================================================
--- pkg/CHNOSZ/R/util.plot.R 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/R/util.plot.R 2017-02-05 07:30:22 UTC (rev 131)
@@ -3,7 +3,7 @@
thermo.plot.new <- function(xlim,ylim,xlab,ylab,cex=par('cex'),mar=NULL,lwd=par('lwd'),side=c(1,2,3,4),
mgp=c(1.5,0.3,0),cex.axis=par('cex'),col=par('col'),yline=NULL,axs='i',do.box=TRUE,ticks=NULL,
- las=1,xline=NULL) {
+ las=1,xline=NULL, ...) {
# start a new plot with some customized settings
thermo <- get("thermo")
# 20120523 store the old par in thermo$opar
@@ -17,7 +17,7 @@
# 20090324 mar handling: NULL - a default setting; NA - par's setting
# 20090413 changed mar of top side from 2 to 2.5
if(is.null(mar)) mar <- c(3,3.5,2.5,1) else if(is.na(mar[1])) mar <- par('mar')
- par(mar=mar,mgp=mgp,tcl=0.3,las=las,xaxs=axs,yaxs=axs,cex=cex,lwd=lwd,col=col,fg=col)
+ par(mar=mar,mgp=mgp,tcl=0.3,las=las,xaxs=axs,yaxs=axs,cex=cex,lwd=lwd,col=col,fg=col, ...)
plot.new()
plot.window(xlim=xlim,ylim=ylim)
if(do.box) box()
Modified: pkg/CHNOSZ/demo/buffer.R
===================================================================
--- pkg/CHNOSZ/demo/buffer.R 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/demo/buffer.R 2017-02-05 07:30:22 UTC (rev 131)
@@ -12,7 +12,7 @@
bufferline <- function(buffer, ixlab) {
basis("H2", buffer)
a <- affinity(T=xlim, P=300, return.buffer=TRUE, exceed.Ttr=TRUE)
- lines(a$vals[[1]], a$H2, col="red", lwd=2)
+ lines(a$vals[[1]], a$H2, col=3, lwd=2)
text(a$vals[[1]][ixlab], a$H2[ixlab], buffer)
}
bufferline("FeFeO", 20)
@@ -29,4 +29,4 @@
}
# add legend
legend("topright", legend = c(describe.property("P", 300), describe.basis(ibasis=c(2,4)),
- "minerals", "formaldehyde", "HCN"), lty=c(NA, NA, NA, 1, 3, 2), col=c(NA, NA, NA, 2, 1, 1), bg="white")
+ "minerals", "formaldehyde", "HCN"), lty=c(NA, NA, NA, 1, 3, 2), col=c(NA, NA, NA, 3, 1, 1), bg="white")
Modified: pkg/CHNOSZ/demo/protbuff.R
===================================================================
--- pkg/CHNOSZ/demo/protbuff.R 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/demo/protbuff.R 2017-02-05 07:30:22 UTC (rev 131)
@@ -13,7 +13,7 @@
basis(c("CO2", "H2O", "NH3", "O2"), as.numeric(a[1:4]))
a <- affinity(pH=c(4, 10, 300), T=c(40, 60, 300))
e <- equilibrate(a, normalize=TRUE)
-diagram(e, fill=NULL)
+diagram(e, fill=NULL, format.names=FALSE)
title(main="Thiol peroxidases from bacteria")
legend("topleft", describe.basis(thermo$basis[-6,]))
@@ -34,7 +34,7 @@
basis(c("CO2", "NH3", "H2S", "O2"), as.numeric(logact))
species(paste(proteins, "ECOLI", sep="_"))
a <- affinity(pH=c(5, 10), T=c(10, 40))
-diagram(a, normalize=FALSE, fill="heat")
+diagram(a, normalize=FALSE, fill="heat", format.names=FALSE)
title(main="Relative stabilities of sigma factors in E. coli")
ptext <- c(describe.property("T", 25),
describe.basis(ibasis=c(2, 6), oneline=TRUE))
Modified: pkg/CHNOSZ/inst/NEWS
===================================================================
--- pkg/CHNOSZ/inst/NEWS 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/inst/NEWS 2017-02-05 07:30:22 UTC (rev 131)
@@ -1,4 +1,4 @@
-CHANGES IN CHNOSZ 1.0.8-20 (2017-02-05)
+CHANGES IN CHNOSZ 1.0.8-21 (2017-02-05)
---------------------------------------
- Add "AA" as a keyword for preset species in basis() (cysteine,
@@ -45,6 +45,8 @@
- diagram() applies formatting (subscripts and superscripts) to names
that parse as chemical formulas; use `format.names` to disable.
+- Add '...' argument to thermo.plot.new() (extra arguments for par()).
+
CHANGES IN CHNOSZ 1.0.8 (2016-05-28)
------------------------------------
Modified: pkg/CHNOSZ/man/affinity.Rd
===================================================================
--- pkg/CHNOSZ/man/affinity.Rd 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/man/affinity.Rd 2017-02-05 07:30:22 UTC (rev 131)
@@ -51,8 +51,7 @@
\code{iprotein} contains indices of desired proteins in \code{\link{thermo}$protein}; \code{affinity} adds to the species list the amino acid residues and and terminal H2O group (indicated by \dQuote{RESIDUE} in \code{thermo$protein}) then calculates the properties of the reactions for the residues and terminal group, including ionization effects, and adds them together to get those of the indicated proteins.
In CHNOSZ version 0.9, \code{energy} gained a new argument \samp{transect} which is set to TRUE by \code{energy.args} when the length(s) of the variables is(are) greater than three.
-In this mode of operation, instead of performing the calculations on an \eqn{n}{n}-dimensional grid, the affinities are calculated on an \eqn{n}{n}-dimensional transect through chemical potential (possibly including T and/or P) space.
-
+In this mode of operation, instead of performing the calculations on an \eqn{n}{n}-dimensional grid, the affinities are calculated on a transect of changing T, P, and/or chemical activity of basis species.
}
\value{
@@ -72,25 +71,28 @@
\examples{
\dontshow{data(thermo)}## set up a system and calculate
## chemical affinities of formation reactions
-basis(c("SiO2","MgO","H2O","O2"),c(-5,-5,0,999))
+basis(c("SiO2", "MgO", "H2O", "O2"), c(-5, -5, 0, 999))
species(c("quartz","enstatite","forsterite"))
# chemical affinities (A/2.303RT) at 25 deg C and 1 bar
affinity()
# at higher temperature and pressure
-affinity(T=500,P=2000)
+affinity(T=500, P=2000)
# ten different temperatures at one pressure
-affinity(T=c(500,1000,10),P=2000)
+affinity(T=c(500, 1000, 10), P=2000)
# at 25 temperatures and pressures
-affinity(T=c(500,1000,5),P=c(1000,5000,5))
+affinity(T=c(500, 1000, 5), P=c(1000, 5000, 5))
# as a function of logarithm of activity of MgO
-affinity(MgO=c(-10,-5,10))
-## equilibrium constants of formation reactions
+affinity(MgO=c(-10, -5, 10))
+# equilibrium constants of formation reactions
affinity(property="logK")
-# Standard molal Gibbs energies of species,
+# standard molal Gibbs energies of species,
# user units (default: cal/mol)
affinity(property="G.species")
-# Standard molal Gibbs energies of reactions
+# standard molal Gibbs energies of reactions
affinity(property="G")
+# a T,P-transect
+# (fluid pressure from Helgeson et al., 2009 Fig. 7)
+affinity(T=c(25, 110, 115, 215), P=c(11, 335, 500, 1450))
## affinities of metabolic reactions
## after Amend and Shock, 2001, Fig. 7
@@ -180,37 +182,6 @@
# reset units and species to run next examples
E.units("cal")
species(delete=TRUE)
-
-## calculations along a transect: methanogenesis and biosynthetic
-## reactions in hydrothermal systems, after Shock and Canovas, 2010
-# this file has their mixing path results for Rainbow hydrothermal field
-file <- system.file("extdata/cpetc/SC10_Rainbow.csv", package="CHNOSZ")
-rb <- read.csv(file, check.names=FALSE)
-# write all synthesis reactions in terms of these basis species
-# it's okay not to set the activities of the basis species now
-# because they'll be changing along with temperature
-basis(c("CO2", "H2", "NH4+", "H2O", "H2S", "H+"))
-# now a selection of the species from SC10, with activities equal to 1e-6
-species(c("CH4", "formaldehyde", "ethylene", "glycolic acid",
- "n-nonanoic acid", "leucine", "aspartic acid", "tryptophan", "deoxyribose",
- "adenine", "cytosine"), -6)
-# the exception is methane; unlike SC10 we use a constant activity 1e-3
-# (accounting for variable activities of the species of interest here
-# is possible but would require longer code ....)
-species("CH4", -3)
-# synchronized change of temperature and five basis activities
-a <- affinity(T=rb$T, CO2=rb$CO2, H2=rb$H2, `NH4+`=rb$`NH4+`, H2S=rb$H2S, pH=rb$pH)
-# the tricky part: affinity() uses dimensionless values (A/2.303RT)
-# but we want to show the values in cal/mol
-a$values <- lapply(a$values, function(val) {
- -convert(val, "G", T=convert(a$vals[[1]], "K")) })
-# if we didn't have balance=1 here the values would be
-# divided by the number of moles of CO2 in the reactions ...
-diagram(a, balance=1, ylim=c(-100000, 100000), ylab=axis.label("A"),
- col=topo.colors(4), lwd=2)
-# add a zero-affinity line and a title
-abline(h=0, lty=2, lwd=2)
-title(main="Affinities of organic synthesis, after Shock and Canovas, 2010")
}
\references{
@@ -220,6 +191,8 @@
Dick, J. M., LaRowe, D. E. and Helgeson, H. C. (2006) Temperature, pressure, and electrochemical constraints on protein speciation: Group additivity calculation of the standard molal thermodynamic properties of ionized unfolded proteins. \emph{Biogeosciences} \bold{3}, 311--336. \url{http://www.biogeosciences.net/3/311/2006/bg-3-311-2006.html}
+ Helgeson, H. C., Richard, L, McKenzie, W. F., Norton, D. L. and Schmitt, A. (2009) A chemical and thermodynamic model of oil generation in hydrocarbon source rocks. \emph{Geochim. Cosmochim. Acta} \bold{73}, 594--695. \url{http://dx.doi.org/10.1016/j.gca.2008.03.004}
+
Kondepudi, D. K. and Prigogine, I. (1998) \emph{Modern Thermodynamics: From Heat Engines to Dissipative Structures}, John Wiley & Sons, New York, 486 p. \url{http://www.worldcat.org/oclc/38055900}
Shock, E. and Canovas, P. (2010) The potential for abiotic organic synthesis and biosynthesis at seafloor hydrothermal systems. \emph{Geofluids} \bold{10}, 161--192. \url{http://dx.doi.org/10.1111/j.1468-8123.2010.00277.x}
Modified: pkg/CHNOSZ/man/diagram.Rd
===================================================================
--- pkg/CHNOSZ/man/diagram.Rd 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/man/diagram.Rd 2017-02-05 07:30:22 UTC (rev 131)
@@ -14,7 +14,7 @@
ylog=TRUE, xlim=NULL, ylim=NULL, xlab=NULL, ylab=NULL,
cex=par("cex"), cex.names=1, cex.axis=par("cex"),
lty=NULL, lwd=par("lwd"), dotted=NULL,
- bg=par("bg"), col=par("col"), col.names=par("col"), fill=NULL,
+ col=par("col"), col.names=par("col"), fill=NULL,
names=NULL, main=NULL, legend.x="topright", format.names=TRUE,
add=FALSE, plot.it=TRUE, tplot=TRUE, ...)
strip(affinity, ispecies = NULL, col = NULL, ns = NULL,
@@ -45,7 +45,6 @@
\item{lty}{numeric, line types to be used in plots}
\item{lwd}{numeric, line width}
\item{dotted}{numeric, how often to skip plotting points on predominance field boundaries (to gain the effect of dotted or dashed boundary lines)}
- \item{bg}{character, background color for legend}
\item{col}{character, color of activity lines (1D diagram) or predominance field boundaries (2D diagram), or colors of bars in a strip diagram (\code{strip})}
\item{col.names}{character, colors for labels of species}
\item{fill}{character, colors used to fill predominance fields}
Modified: pkg/CHNOSZ/man/util.plot.Rd
===================================================================
--- pkg/CHNOSZ/man/util.plot.Rd 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/man/util.plot.Rd 2017-02-05 07:30:22 UTC (rev 131)
@@ -20,7 +20,7 @@
mar = NULL, lwd = par("lwd"), side = c(1,2,3,4),
mgp = c(1.5, 0.3, 0), cex.axis = par("cex"), col = par("col"),
yline = NULL, axs = "i", do.box = TRUE, ticks = NULL, las = 1,
- xline = NULL)
+ xline = NULL, ...)
thermo.axis(lab = "x-axis", side = 1, line = 1.5, cex = par("cex"),
lwd = par("lwd"), T = NULL, col = par("col"))
label.plot(x, xfrac = 0.05, yfrac = 0.95, paren = FALSE,
@@ -53,6 +53,7 @@
\item{ticks}{numeric, same effect as \code{side} (retained for backwards compatibility)}
\item{las}{numeric, style for axis labels}
\item{xline}{numeric, margin line on which to plot \eqn{x}{x}-axis name}
+ \item{...}{further arguments passed to \code{par} or \code{mtext}}
\item{lab}{character, description of axis label}
\item{line}{numeric, margin line to plot axis label}
\item{T}{numeric, temperature (K)}
@@ -70,7 +71,6 @@
\item{xpoints}{numeric, points to plot on \eqn{x}{x} axis}
\item{O2state}{character, state of O2}
\item{main}{character, text for plot title}
- \item{...}{further arguments passed to \code{mtext}}
\item{residuals}{numeric, named vector of residuals to plot}
\item{property}{character, name of property}
\item{model}{character, name of model to use in plot title}
Modified: pkg/CHNOSZ/vignettes/anintro.Rmd
===================================================================
--- pkg/CHNOSZ/vignettes/anintro.Rmd 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/vignettes/anintro.Rmd 2017-02-05 07:30:22 UTC (rev 131)
@@ -582,8 +582,63 @@
mosaicfun(list(O2=c(-70, 0, res)))
```
-## T-, P-, activity-transect
+## *T*, *P*, activity transects
+Above, we used evenly-spaced grids of *T*, *P*, and/or chemical activities of basis species; the ranges of variables were given by two or three values (minimum, maximum, and optionally resolution).
+`affinity()` can also perform calculations along a transect, i.e. a particular path along one or more variables.
+A transect is calculated when there are four or more values assigned to the variable(s).
+Let's use this feature to calculate affinities (negative Gibbs energies) of methanogenesis and biosynthetic reactions in a hydrothermal system.
+The results of mixing calculations between seawater and the Rainbow hydrothermal vent fluid, reported by @SC10, are included in a data file in CHNOSZ:
+```{r rainbow_data}
+file <- system.file("extdata/cpetc/SC10_Rainbow.csv", package="CHNOSZ")
+rb <- read.csv(file, check.names=FALSE)
+```
+
+We take a selection of the species from Shock and Canovas (2010) with activities equal to 10<sup>-6</sup>; methane is assigned an activity of 10<sup>-3</sup>.
+We will write the synthesis reactions of organic species in terms of these basis species:
+```{marginfigure}
+The constant activity of methane is a simplification of the calculation reported by Shock and Canovas (2010).
+More code could be added here to vary the activity of methane.
+```
+```{r rainbow_species, results="hide"}
+basis(c("CO2", "H2", "NH4+", "H2O", "H2S", "H+"))
+species("CH4", -3)
+species(c("adenine", "cytosine", "aspartic acid", "deoxyribose",
+ "methane", "leucine", "tryptophan", "n-nonanoic acid"), -6)
+```
+
+Now we can calculate affinity along the transect of changing temperature and activities of five basis species.
+Each variable is given as a named argument; the name for `NH4+` must be quoted.
+```{marginfigure}
+A shorter code would use `do.call()` to construct the argument list: `do.call(affinity, as.list(rb))`
+```
+```{marginfigure}
+The target of the conversion is `G`, or free energy, from `logK`.
+That conversion requires temperature in Kelvin, which is obtained by conversion from °C.
+We finish with a negation (affinity is negative Gibbs energy) and scaling from cal to kcal.
+```
+Using the `convert()` function in CHNOSZ, we also convert the result from dimensionless values (**_A_**/2.303*RT*) to kcal/mol.
+```{r rainbow_affinity, message=FALSE}
+a <- affinity(T=rb$T, CO2=rb$CO2, H2=rb$H2,
+ `NH4+`=rb$`NH4+`, H2S=rb$H2S, pH=rb$pH)
+T <- convert(a$vals[[1]], "K")
+a$values <- lapply(a$values, convert, "G", T)
+a$values <- lapply(a$values, `*`, -0.001)
+```
+
+```{r rainbow_diagram, fig.margin=TRUE, fig.width=4, fig.height=4, small.mar=TRUE, dpi=50, out.width="100%", echo=FALSE, message=FALSE, cache=TRUE, fig.cap="Affinities of organic synthesis in a hydrothermal system, after Shock and Canovas (2010)."}
+diagram(a, balance=1, ylim=c(-100, 100), ylab=axis.label("A", prefix="k"),
+ col=rainbow(8), lwd=2, legend.x=NA, bg="slategray3")
+abline(h=0, lty=2, lwd=2)
+```
+Finally, we use `diagram()` to plot the results.
+Although only temperature is shown on the *x*-axis, pH and the activities of CO<sub>2</sub>, H<sub>2</sub>, NH<sub>4</sub><sup>+</sup>, and H<sub>2</sub>S are also varied according to the data in `rb`.
+By default, `diagram()` attempts to scale the affinities by dividing by the reaction coefficients of a shared basis species (in this case, CO<sub>2</sub>).
+To override that behavior, we set `balance=1` to plot the affinities of the formation reactions as written (per mole of the species being formed).
+Also, `legend.x=NA` is used to suppress making a legend (so the labels are placed next to the lines instead).
+```{r rainbow_diagram, eval=FALSE}
+```
+
## Buffers
There is one final feature of `affinity()` to notice.
@@ -611,14 +666,14 @@
species(c("pyrite", "magnetite"))
species("pyrrhotite", "cr2")
```
+```{marginfigure}
+The affinity of formation of pyrite happens to be zero because it is identical to one of the selected basis species.
+```
```{r PPM_affinity, message=FALSE}
unlist(affinity(T=300, P=100)$values)
```
-```{marginfigure}
-The affinity of formation of pyrite happens to be zero because it is identical to one of the selected basis species.
-```
-We use `mod.buffer()` to choose the `cr2` phase of phyrrhotite, which is stable at this temperature.
+We use <span style="color:red">`mod.buffer()`</span> to choose the `cr2` phase of phyrrhotite, which is stable at this temperature.
Then, we set up H<sub>2</sub>S and O<sub>2</sub> to be buffered by PPM, and inspect their buffered activities:
```{r PPM_setup, results="hide"}
mod.buffer("PPM", "pyrrhotite", "cr2")
Modified: pkg/CHNOSZ/vignettes/vig.bib
===================================================================
--- pkg/CHNOSZ/vignettes/vig.bib 2017-02-05 03:29:16 UTC (rev 130)
+++ pkg/CHNOSZ/vignettes/vig.bib 2017-02-05 07:30:22 UTC (rev 131)
@@ -243,6 +243,20 @@
doi = {10.1557/PROC-432-317},
}
+ at Article{SC10,
+ author = {Shock, Everett and Canovas, Peter},
+ journal = {Geofluids},
+ title = {{T}he potential for abiotic organic synthesis and biosynthesis at seafloor hydrothermal systems},
+ year = {2010},
+ volume = {10},
+ number = {1-2},
+ pages = {161--192},
+ af = {Shock, E.EOLEOLCanovas, P.},
+ doi = {10.1111/j.1468-8123.2010.00277.x},
+ si = {Sp. Iss. SI},
+ sn = {1468-8115},
+}
+
@Article{SH90,
author = {Shock, Everett L. and Helgeson, Harold C.},
journal = {Geochimica et Cosmochimica Acta},
More information about the CHNOSZ-commits
mailing list