13CFLUX

A third‑generation, high‑performance simulator for isotopically stationary and non‑stationary ¹³C metabolic flux analysis

Open, extensible, fast, and accurate: enabling robust design, fitting, and statistical analysis for modern, scalable 13C-MFA workflows.

Why 13CFLUX?

  • Universal: Simulates any desired labeling state for isotopically stationary and non‑stationary (INST) experiments, supporting multi‑isotope tracers (e.g. 13C-15N) and any measurement configuration, with shortcuts to MS, tandem MS, 1H and 13C-NMR.

  • High performance: Clean C++17 core with Eigen-based linear algebra and advanced ODE solvers with tunable precision; Python API for workflow automation.

  • Flexible workflows: Compose experimental design, multi‑start fitting, and uncertainty quantification (incl. Frequentist and Bayesian) with minimal coding; easy integration with NumPy/SciPy, Jupyter notebooks, and orchestration tools, e.g Apache Airflow.

  • Reproducible & portable: Ship and run via pip or Docker from laptop to HPC.

Quick install

  • PyPI

    • conda install cyipopt

    • pip install x3cflux

    • Note: conda is used for a working ipopt/cyipopt (see installation page)

  • Docker

    • docker pull jugit-registry.fz-juelich.de/ibg-1/modsim/fluxomics/13cflux

    • Recommended for HPC

    • Further information

Alternatively, manual installation is also possible.

1 minute quick start

import hopsy
import matplotlib.pyplot as plt
import numpy as np

import x3cflux

# Load FluxML file with data from INST experiment
sim = simulator_inst = x3cflux.create_simulator_from_fml("spiralus.fml", "ms_INST")

# Configure simulation: solver + accuracy (optional)
sim.builder.set_solver("bdf")
sim.builder.solver.relative_tolerance = 1e-6
sim.builder.solver.absolute_tolerance = 1e-9

# Forward simulation of a specific parameter set at specific time points
params = [0.5, 1.2, 3.0, 1.1]  # p.n  # u.n  # G  # B
results = sim.compute_measurements(params=params, time_stamps=[0.0, 5.0, 10.0, 60])

# Multi-start fit (using external optimizer IPOPT)
optima, obj_vals = x3cflux.run_multi_optimization(
    sim, starting_points=x3cflux.run_uniform_sampling(sim, num_samples=100), num_procs=4
)
best = np.argsort(obj_vals)[0]
print(f"Optimum at {optima[:, best]}; Residual {obj_vals[best]}")

# Bayesian uncertainty analysis (using external sampler hopsy)
samples = x3cflux.run_non_uniform_sampling(
    sim,
    num_samples=5_000,
    proposal=hopsy.CSmMALAProposal,
    starting_point=np.array([0.5, 1.1, 5, 0.9]),
    progress_bar=True,
)
plt.hist(samples[0, 1, :])
plt.show()

📥 one_minute_quick_start.py 📥 spiralus.fml

A more detailed version can be found at Quickstart: the Spiralus Model.

Key features at a glance

  • State space: Dual labeling state-space representations: automatic selection between EMU and cumomer systems with optimal? dimension reduction.

  • Solver suite: eigen sparseLU solver for isotopic stationary systems; tuned BDF (SUNDIALS CVODE) and SDIRK both with with adaptive step control for isotopically non stationary systems .

  • Sensitivities & Jacobians: analytically derived systems, numerically solved using OpenMP parallelization.

  • Workflow API: high‑level Python facades for experimental design, multi‑start fitting, and statistics with easy Apache Airflow integration.

  • Errors & diagnostics: clear, propagated exceptions from C++ to Python; comprehensive semantic, syntactic, logic, and numeric checks.

  • Containers: Docker image for reproducibility and scale.

Performance benchmark

_images/benchmark.png

Due to its improved codebase and by exploiting the structure of the underlying mathematical system 13CFLUX(v3) is up to 40 times faster compared to its predecessor 13CFLUX2.

License & contributing

  • 13CFLUX is open-source software, distributed under the terms of the GNU AGPL v3.

  • Issues & bug reports: Please report via our Gitlab.

How to cite

If you use 13CFLUX, please cite:

Stratmann, A., Beyß, M., Jadebeck, J. F., Wiechert, W., & Nöh, K. (2025). 13CFLUX –- Third-generation high-performance engine for isotopically (non)stationary 13C metabolic flux analysis. Bioinformatics, btaf630, https://doi.org/10.1093/bioinformatics/btaf630

@article{Stratmann2025,
 author = {Stratmann, Anton and Beyß, Martin and Jadebeck, Johann F and Wiechert, Wolfgang and Nöh, Katharina},
 title = {13CFLUX — Third-generation high-performance engine for isotopically (non)stationary 13C metabolic flux analysis},
 journal = {Bioinformatics},
 pages = {btaf630},
 year = {2025},
 issn = {1367-4811},
 doi = {10.1093/bioinformatics/btaf630},
 url = {https://doi.org/10.1093/bioinformatics/btaf630},
}