Skip to content

equiconc

Equiconc is an equilibrium concentration solver for monomer/complex systems (like networks of interactions of DNA/RNA strands), when the complexes are already enumerated and standard free energies of binding are known. It implements the convex optimization method of Dirks et al. (2007), without any other portions of the paper; as such, it can be applied generally, for example, to find equilibrium concentrations in tile assembly systems.

The library is written in Rust, with a Python interface that is intended to be easily usable.

Documentation

Quick example

import equiconc

# A + B <=> AB with DG = -10 kcal/mol at 25 C (default)
eq = (
    equiconc.System()
    .monomer("A", 100e-9)       # 100 nM
    .monomer("B", 100e-9)
    .complex("AB", [("A", 1), ("B", 1)], dg_st=-10.0)
    .equilibrium()
)

print(f"Free [A] = {eq['A']:.2e} M")
print(f"Free [B] = {eq['B']:.2e} M")
print(f"[AB]     = {eq['AB']:.2e} M")