5 releases (3 breaking)

Uses new Rust 2024

0.4.1 Apr 25, 2026
0.4.0 Apr 25, 2026
0.3.0 Apr 25, 2026
0.2.0 Apr 18, 2026
0.1.0 Mar 11, 2026

#191 in Biology

Download history 4/week @ 2026-03-12 13/week @ 2026-04-16 262/week @ 2026-04-23 279/week @ 2026-04-30

554 downloads per month
Used in rgrow

BSD-3-Clause

325KB
5K SLoC

Documentation Coverage Status

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.

There is also an in-browser web interface, which runs the solver in your browser directly (not a server). This interface was inspired by COFFEE; Equiconc also supports a modified version of their log-based optimization (Yu et al, 2025).

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")

Dependencies

~1.4–3MB
~59K SLoC