This vignette was compiled on 2024-12-01 with CHNOSZ version 2.1.0-26. This document defines the concepts and provides examples of equilibrium calculations in CHNOSZ.
First, some limitations. CHNOSZ is not a general-purpose speciation code. The types of equilibrium calculations it can handle are restricted to those systems that can be described as balanced on an element. For example, we can predict the speciation of Au in complexes with chloride, hydroxide, and sulfide all with specified activities. But we can not at the same time predict the formation of species such as NaCl(aq), which is required for a complete equilibrium model.
Chemical system defined by formed species (referred to simply as species) and basis species, which are analogous to thermodynamic components. The possible species are any that are available in the OBIGT thermodynamic database.
log10
in R).
Calculations of the activities of species in equilibrium.
equilibrate()
function in CHNOSZ, which is used below.
solubility()
function in
CHNOSZ, which is not described here.
In this sytem the basis species are CO2, H2O, NH3, H2S, and O2 and the formed species are 20 amino acids.
These functions are used for the different diagrams in the figure.
aaA <- function() {
a <- affinity(O2 = c(-90, -70), H2O = c(-20, 10))
diagram(a, balance = 1, names = aa)
}
aaB <- function() {
a <- affinity(O2 = c(-90, -70), H2O = c(-20, 10))
e <- equilibrate(a, balance = 1)
diagram(e, names = aa)
}
aaC <- function() {
a <- affinity(O2 = c(-71, -66), H2O = c(-8, 4))
diagram(a, balance = "CO2", names = aa)
}
aaD <- function() {
a <- affinity(O2 = c(-71, -66), H2O = c(-8, 4))
e <- equilibrate(a, balance = "CO2")
diagram(e, names = aa)
}
aaE <- function() {
basis("O2", -66)
a <- affinity(H2O = c(-8, 4))
e <- equilibrate(a, balance = "CO2")
diagram(e, ylim = c(-5, -1), names = aa)
}
aaF <- function() {
species(1:20, -7)
a <- affinity(H2O = c(-8, 4))
e <- equilibrate(a, balance = "CO2")
diagram(e, ylim = c(-8, -4), names = aa)
}
The labels used for the diagrams are the one-letter abbreviations for the amino acids.
## [1] "A" "C" "D" "E" "F" "G" "H" "I" "K" "L" "M" "N" "P" "Q" "R" "S" "T" "V" "W"
## [20] "Y"
Press the button to show all of the code for making the figure.
Diagrams A and B use the maximum affinity method, where the reference activities of species are set to a single value. Diagrams C and D use the equilibration method, where the activities of species change across the diagram and the lines are drawn at equal activity. Other comments on the figure:
The equal-activity lines in Diagrams A and
C are the same. That is, with the setting
balance = 1
, the conditions for equal activity of two
species do not depend on the actual value of that activity.
Diagrams B and D are different. Because balance ≠ 1 (in this case, the reactions are balanced on CO2), the conditions for equal activity of species depend on the actual value of that activity. In particular, with the equilibration method, the lines are curved due to the distribution of more than two species.
Diagrams E and F both use the equilibration method to calculate activities of species as a function of logaH2O at logfO2 = -66. Diagram F shows the default setting, where aCO2 is taken from the sum of initial activities of species (each 10-3). The positions of equal activities (where the lines cross) are the same as in Diagram D at logfO2 = -66.
Diagram F is drawn for a lower total activity of aCO2. Not only are the activities of all amino acids decreased, but glycine starts to become predominant at some conditions. This is because, compared to other amino acids, it is smaller and has a lower coefficient on CO2 in its formation reaction.
In this sytem the basis species are CO2, H2O, NH3, H2S, O2, and H+ and the formed species are 6 proteins from the set of archaeal and bacterial surface layer proteins considered by Dick (2008).
The inclusion of charge in the basis species (with H+) allows ionization of proteins to be calculated (Dick et al., 2006).
basis("CHNOS+")
organisms <- c("METJA", "HALJP", "METVO", "ACEKI", "GEOSE", "BACLI")
proteins <- c(rep("CSG", 3), rep("SLAP", 3))
species(proteins, organisms)
Here are the lengths of the proteins.
## [1] 530 828 553 736 1198 844
These functions are used for the different diagrams in the figure.
prA <- function() {
a <- affinity(O2 = c(-90, -70), H2O = c(-20, 0))
diagram(a, balance = "length", names = organisms)
}
prB <- function() {
a <- affinity(O2 = c(-90, -70))
e <- equilibrate(a, balance = "length")
ylab <- quote(log~italic(a)~protein)
diagram(e, names = organisms, ylim = c(-5, -1), ylab = ylab)
}
prC <- function() {
a <- affinity(O2 = c(-90, -70), H2O = c(-20, 0))
diagram(a, normalize = TRUE, names = organisms)
}
prD <- function() {
a <- affinity(O2 = c(-90, -70))
e <- equilibrate(a, normalize = TRUE)
ylab <- quote(log~italic(a)~protein)
diagram(e, names = organisms, ylim = c(-5, -1), ylab = ylab)
}
prE <- function() {
a <- affinity(O2 = c(-90, -70), H2O = c(-20, 0))
diagram(a, as.residue = TRUE, names = organisms)
}
prF <- function() {
a <- affinity(O2 = c(-90, -70))
e <- equilibrate(a, as.residue = TRUE, loga.balance = 0)
ylab <- quote(log~italic(a)~residue)
diagram(e, names = organisms, ylim = c(-3, 1), ylab = ylab)
}
Diagrams A, C, and E are predominance (equal-activity) diagrams made with different balancing constraints. Diagrams B, D, and F show a cross-section of the same system at logaH2O = 0.
In Diagrams A and B, the reactions are balanced on protein length. The drastic transitions between proteins in B result from the large balancing coefficients, which become exponents on activities in the expression for the activity quotient (Q).
In Diagrams C and D, the chemical formulas of the proteins are normalized, or divided by the protein length, before the equilibration or maximum affinity calculation. However, the final diagram is not drawn for activities of these “residue equivalents”, but for rescaled activities of whole proteins. Because of the rescaling, the fields of the shorter METJA and METVO proteins grow at the expense of the longer BACLI protein.
Diagrams E and F are like the normalization calculation, except that the final diagram is drawn for the residue equivalents and not the whole proteins. The predominance diagram is the same as that for non-normalized reactions (A), but the equilibrium activities of residues are higher than those of the proteins.
Here is another figure showing the effects of normalization. This is
like Figure 5 of Dick (2008), extended to more extreme conditions.
If you wish to reproduce the diagram from the 2008 paper more closely,
uncomment the add.OBIGT()
command.
organisms <- c("METSC", "METJA", "METFE", "METVO", "METBU",
"HALJP", "ACEKI", "GEOSE", "BACLI", "AERSA")
proteins <- c(rep("CSG", 6), rep("SLAP", 4))
# Use red for Methano* genera
col <- c(rep(2, 5), rep(1, 5))
basis("CHNOS+")
species(proteins, organisms)
a <- affinity(O2 = c(-100, -65))
layout(matrix(1:2), heights = c(1, 2))
e <- equilibrate(a)
diagram(e, ylim = c(-2.8, -1.6), names = organisms, col = col)
water.lines(e, col = 4)
title(main="Equilibrium activities of proteins, normalize = FALSE")
e <- equilibrate(a, normalize = TRUE)
diagram(e, ylim = c(-4, -2), names = organisms, col = col)
water.lines(e, col = 4)
title(main = "Equilibrium activities of proteins, normalize = TRUE")
Although it is below the stability limit of H2O (vertical dashed line), there is an interesting convergence of the metastable equilibrium activities of some proteins at low log fO2.