phosphorylate: Calculate affinity of phosphorylation reactions with...

View source: R/phosphorylate.R

phosphorylateR Documentation

Calculate affinity of phosphorylation reactions with pH-dependent speciation

Description

Calculate the affinity and Gibbs energy of phosphorylation reactions accounting for pH-dependent speciation of reactants, products, and phosphate sources using the mosaic approach.

Usage

phosphorylate(reactant, P_source, loga_reactant = 0, loga_product = 0, 
  loga_P_source = 0, loga_P_remainder = 0, const_pH = 7, loga_Mg = -999, ...)
phospho_plot(reactant, P_source, loga_Mg = -999)

Arguments

reactant

character, the compound to be phosphorylated. Options include "acetic acid", "glycerol", "adenosine_to_AMP", "adenosine_to_cAMP", "adenosine_for_RNA", "ribose", "uridine", "AMP", "ADP", "glucose", or "pyruvic acid".

P_source

character, the source of phosphate. Use "P" for basic reactions with inorganic phosphate, or "PP", "acetylphosphate", or "ATP" for extended reactions with other phosphate donors.

loga_reactant

numeric, logarithm of activity of the reactant.

loga_product

numeric, logarithm of activity of the product.

loga_P_source

numeric, logarithm of activity of the phosphate source.

loga_P_remainder

numeric, logarithm of activity of the phosphate remainder (e.g., Pi when PP is the source).

const_pH

numeric, pH value for the calculation.

loga_Mg

numeric, logarithm of activity of Mg\S+2. With the default of -999, effectively no Mg-complexed species are formed.

...

additional arguments passed to mosaic, such as pH, T (temperature), or P (pressure) ranges for multi-dimensional calculations.

Details

This function calculates the affinity of phosphorylation reactions by summing the affinities of component reactions while accounting for pH-dependent speciation of all complex species (reactants, products, and phosphate forms). Complex species are those that exist in multiple ionization states depending on pH. The mosaic function is used to calculate affinities accounting for the predominant species at each pH condition.

The calculation method depends on whether the reaction is “basic” or “extended”:

Basic reactions (P_source = "P"): A single reaction of the form:

  reactant + Pi = product + H2O

Extended reactions (other P_source values): The sum of two reactions:

  (1) reactant + Pi = product + H2O
  (2) P_source + H2O = P_remainder + Pi

The overall affinity is calculated as A_total = A1 - A2, where the negative sign accounts for the reverse direction of reaction 2.

Use const_pH to perform calculations at constant pH (when pH is not provided as a range in ...).

If pressure (P) is one of the arguments in ..., then call this function with P_source as a named argument to avoid conflicting assignments due to partial argument matching.

The function returns affinity values that can be converted to standard transformed Gibbs energy using convert.

phospho_plot creates a set of \T-pH and \P-pH plots showing Gibbs energy of phosphorylation reactions (contour labels are kJ/mol). It uses loga_P_source = loga_P_remainder = -3, loga_product = -6, and loga_reactant equal to -6, -4, and -2. However, if reactant is ‘⁠adenosine_for_RNA⁠’, then loga_P_source is made equal to loga_reactant in each plot. The ‘⁠adenosine_for_RNA⁠’ reactant uses only protonated species (i.e., no AMP\S-2 or PO\s4\S-3) to model RNA formation from monophosphate nucleotides as described in LaRowe and Dick (2025).

Value

A list with the following components:

m1

the mosaic output for reaction 1 (reactant + Pi = product + H2O)

m2

the mosaic output for reaction 2 (NULL for basic reactions with P_source = "P")

a12

numeric, the overall affinity (dimensionless, A/2.303RT). For basic reactions this equals the affinity from m1; for extended reactions this is the sum of affinities from m1 and m2.

P_reaction

the formation reaction definition for the P_source (NULL for basic reactions)

Warning

This function depends on thermodynamic data for phosphorylated species that have not yet been added to OBIGT (2025-12-07). The data for glucose-6-phosphate used in the examples are provisional and are known to produce inaccurate results for the Gibbs energy of phosphorylation when used with the data in OBIGT for glucose, ATP, and ADP.

References

Alberty RA. 2003. Thermodynamics of Biochemical Reactions. Hoboken, NJ: John Wiley & Sons. 397 p. https://www.worldcat.org/oclc/51242181

Degani C, Halmann M. 1966. Solvolysis of phosphoric acid esters. Hydrolysis of glucose 6-phosphate. Kinetic and tracer studies. J Am Chem Soc 88: 4075–4082. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1021/ja00969a033")}

LaRowe DE, Dick JM. 2025. Physicochemical constraints on the abiotic polymerization of nucleotides into RNA. JGR Biogeosci 130: e2025JG009095. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1029/2025JG009095")}

See Also

mosaic, affinity, convert

Examples

# Calculate standard transformed Gibbs energy (DeltaG°') for 
# glucose + ATP = glucose-6-phosphate + ADP at pH 7, 25 °C

# First add thermodynamic data for sugar phosphates (from Table 3.2 of Alberty, 2003)
mod.OBIGT("glucose-6-phosphate-2", formula = "C6H11O9P-2", G = -1763940)
mod.OBIGT("glucose-6-phosphate-1", formula = "C6H12O9P-", G = -1800590)
# Alberty (2003) doesn't have DeltaG° for neutral glucose-6-phosphate,
# so we calculate it from pKa1 = 1.5 (Degani and Halmann, 1966)
G_G6P <- -1800590 + convert(1.5, "G")
mod.OBIGT("glucose-6-phosphate", formula = "C6H13O9P", G = G_G6P)

# Calculate affinity at pH 7 with unit activities (loga = 0)
result <- phosphorylate("glucose", "ATP", const_pH = 7)

# Extract the overall affinity
A <- result$a12

# Convert affinity to Gibbs energy in kJ/mol
TK <- convert(25, "K")
deltaG_J <- convert(A, "G", T = TK)
deltaG_kJ <- deltaG_J / 1000

print(paste("DeltaG°' at pH 7:", round(deltaG_kJ, 2), "kJ/mol"))

# Example with non-standard activities
# log(a) = -3 for glucose, ATP, and products
result2 <- phosphorylate("glucose", "ATP", 
                         loga_reactant = -5,
                         loga_product = -4, 
                         loga_P_source = -3,
                         loga_P_remainder = -2,
                         const_pH = 7)
A2 <- result2$a12
deltaG2_kJ <- convert(A2, "G", T = convert(25, "K")) / 1000
print(paste("DeltaG at pH 7 with non-unit activities:", 
            round(deltaG2_kJ, 2), "kJ/mol"))

CHNOSZ documentation built on Jan. 7, 2026, 3:01 p.m.