util.formula {CHNOSZ}R Documentation

Functions to Work with Chemical Formulas


Calculate the standard molal entropy of elements in a compound; calculate the standard molal Gibbs energy or enthalpy of formation, or standard molal entropy, from the other two; list coefficients of selected elements in a chemical formula; calculate the average oxidation state of carbon. Create a stoichiometric matrix for selected species.


  as.chemical.formula(makeup, drop.zero = TRUE)
  GHS(formula, G = NA, H = NA, S = NA, T = 298.15, E_units = "J")



numeric, object returned by makeup


logical, drop elements with a coefficient of zero?


character, chemical formulas, or numeric, rownumbers in thermo()$OBIGT


numeric, standard molal Gibbs energy of formation from the elements


numeric, standard molal enthalpy of formation from the elements


numeric, standard molal molal entropy


numeric, temperature in Kelvin


character, energy units (J or cal)


i2A returns a stoichiometric matrix representing the elemental composition of the formulas. Each column corresponds to an element that is present in at least one of the formulas; some element counts will be zero if not all formula have the same elements. If a matrix is passed to i2A it is returned unchanged.

as.chemical.formula makes a character string representing a chemical formula from a vector of coefficients with names corresponding to the elements (e.g., the output of makeup) or from a stoichiometric matrix (output of i2A). Each elemental symbol is written followed by its coefficient; negative coefficients are signed. Any coefficients equal to 1 are not explicitly written, and any charge (indicated by makeup as ‘⁠Z⁠’) is shown as a signed number at the end of the formula. If the formula is uncharged, and the last element has a negative coefficient, +0 is shown at the end of the formula to indicate a charge of zero.

The remaining functions documented here accept vectors of chemical formulas, species indices, or a mixture of both, or stoichiometric matrices with elements on the columns.

mass and entropy return the sums of masses or entropies of elements in each of the formulas. The masses are calculated using the masses of the elements in their natural isotopic distribution, and the entropies, in J K^{-1} mol^{-1}, are calculated using the entropies of the compounds of the pure elements in their stable states at 25 °C and 1 bar. The properties of the elements used by this function are taken from thermo$element.

GHS computes one of the standard molal Gibbs energy or enthalpy of formation from the elements, or standard molal entropy, from values of the other two. The formula, G, H and S arguments must all have the same length. The entropies of the elements (Se) in each formula are calculated using entropy, which gives values in Joules. If E_units is ‘⁠cal⁠’, the values are converted to calories. The equation in effect can be written as {\Delta}G^{\circ}={\Delta}H^{\circ}-T{\Delta}S^{\circ}, where {\Delta}S^{\circ}=S-S_e and T is the temperature given in T (defaults to 298.15 K) (note that G and H in the arguments correspond respectively to {\Delta}G^{\circ} and {\Delta}H^{\circ} in the equation). For each formula, if one of G, H, or S is NA, its value is calculated from the other two. Otherwise, the values are returned unchanged.

ZC returns the average oxidation state of carbon (Z_{\mathrm{C}}) calculated from ratios of the elements in the chemical formulas. The equation used is Z_{\mathrm{C}}=\frac{Z-n_{\mathrm{H}}+2\left(n_{\mathrm{O}}+n_{\mathrm{S}}\right)+3n_{\mathrm{N}}}{n_{\mathrm{C}}}, where the n refer to the number of the indicated element in the formula and Z is the charge (Dick and Shock, 2011). The result is NaN for any formula that does not contain carbon. Elements other than those shown in the equation are not included in the calculation, and produce a warning.


mass, entropy, and ZC return numeric values. as.chemical.formula returns a character object. GHS returns a matrix with column names ‘⁠G⁠’, ‘⁠H⁠’ and ‘⁠S⁠’, and i2A returns a matrix with column names corresponding to the elements in the formulas.


Dick, J. M. and Shock, E. L. (2011) Calculation of the relative chemical stabilities of proteins as a function of temperature and redox chemistry in a hot spring. PLOS One 6, e22782. doi:10.1371/journal.pone.0022782

See Also

makeup, used by mass and entropy, and ZC and i2A for counting the elements in a formula (the latter two make use of the count.zero argument).


## Mass and entropy from chemical formulas
mass("-1")  # electron

## Different ways to get the formula of alanine
iA <- info("alanine")

## Converting among Gibbs energy, enthalpy, entropy
# Calculate the value of G from H and S
GHS("H2O", H = water("H")$H, S = water("S")$S)
# The result is not exactly equal to the value from water("G"),
# probably because of different entropies of the elements

## Average oxidation states of carbon
ZC(c("CO2", "CH4", "CHNOSZ"))  # 4, -4, 7
si <- info("LYSC_CHICK")
# Can use species index or formula

## Calculate the chemical formulas, then
## ZC of all of the proteins in CHNOSZ's database
pf <- protein.formula(thermo()$protein)
# Use na.rm = TRUE because we have a "protein" with a formula of H2O
range(ZC(pf), na.rm = TRUE)

[Package CHNOSZ version 2.0.0 Index]