Expand description
Equilibrium concentration solver for nucleic acid strand systems.
Computes equilibrium concentrations for systems of interacting nucleic acid strands that form multi-strand complexes. Implements the trust-region Newton method on the convex dual problem from Dirks et al. (2007), SIAM Review 49(1), 65–88.
§Conventions
- Free energies are standard free energies of formation (ΔG°) in kcal/mol at a 1 M standard state.
- Concentrations are in molar (mol/L).
- Temperature is in kelvin.
- The gas constant
Ris in kcal/(mol·K).
§Symmetry
Homodimer and higher homo-oligomer symmetry corrections are not applied automatically. If your complex contains identical strands, include the symmetry correction in the ΔG° value you provide (e.g., add +RT·ln(σ) where σ is the symmetry number).
§Example
use equiconc::System;
// A + B ⇌ AB with ΔG° = -10 kcal/mol at 25 °C (default)
let eq = System::new()
.monomer("A", 100e-9) // 100 nM
.monomer("B", 100e-9)
.complex("AB", &[("A", 1), ("B", 1)], -10.0)
.equilibrium()?;
let free_a = eq.concentration("A").unwrap();
let free_b = eq.concentration("B").unwrap();
let ab = eq.concentration("AB").unwrap();
// Mass conservation: [A] + [AB] = 100 nM
assert!((free_a + ab - 100e-9).abs() < 1e-6 * 100e-9);Structs§
Enums§
Constants§
- R
- Gas constant in kcal/(mol·K).