Skip to main content

Crate equiconc

Crate equiconc 

Source
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 R is 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§

Equilibrium
System

Enums§

EquilibriumError

Constants§

R
Gas constant in kcal/(mol·K).