Tellurium kinetic experiments skill
Simulates biochemical kinetic models from SBML or Antimony with Tellurium and libRoadRunner, checks model units, compares deterministic parameter perturbations, and exports and replays SBML plus SED-ML COMBINE archives.
by K-Dense-AI·MIT license·★ 45,977 Stars on the repo·GitHub ↗
npx degit K-Dense-AI/scientific-agent-skills/skills/tellurium#main ~/.claude/skills/telluriumChecked ·commit main
Files of Tellurium kinetic experiments
Show the full text124 lines
Tellurium kinetic experiments
When to use
Use this skill for deterministic reaction-network trajectories and independent parameter conditions from a local model. The helper performs SBML consistency checks, CVODE integration and an actual COMBINE archive replay. It exports each condition's exact SBML and the SED-ML experiment rather than handing off an unrecorded notebook state.
Runtime
uv venv --python 3.11 kinetic-env
uv pip install --python kinetic-env/bin/python tellurium==2.2.13.1 libroadrunner==2.10.0 \
antimony==3.2.0 python-libsbml==5.21.2 python-libsedml==2.0.34 python-libcombine==0.2.20
The full workflow ran with these packages on macOS ARM64. It constructs SED-ML with libSEDML and
archives with Tellurium/libCombine; PhraSEDML is not required by this helper. Headless runs can set
MPLBACKEND=Agg. No plotting window is opened by the helper.
The six pinned releases were rechecked against official PyPI metadata on 2026-10-01. RoadRunner's documentation site still displays an old version banner; the solver settings below were also checked against released 2.10.0 source and the installed native runtime.
Workflow
- Inspect the supplied model's compartments, species, initial conditions, boundary species, reactions, parameter definitions and rules/events. Identify the scientific question and distinguish a mechanistic kinetic model from a flux-balance reconstruction. Record the source model, version and any literature parameters; do not treat an example model as experimentally calibrated.
- Check units before interpreting a trajectory. SBML reaction rates have amount/time units;
species may have concentration or amount semantics. In a fixed-volume first-order model,
k*A*cellconverts concentration dependence into amount/time. The helper checks SBML consistency and retains every warning, including undefined units. Undefined units are reported as empty/indeterminable, not silently assumed to mean SI. - Select concentration outputs and an experiment in the JSON format described in
references/experiments.md. Time values use the model's own time
units. The tested helper outputs concentration for species with
hasOnlySubstanceUnits=false; it rejects amount-only selections to avoid changing their meaning during SED-ML replay. Zero-dimensional compartments and rate-rule models are also rejected; the latter need a separate tolerance workflow because RoadRunner 2.10.0 can order scalar tolerances differently from states. - Run baseline and desired constant-global-parameter changes. Every scenario starts from a fresh SBML model, so previous final concentrations cannot leak into the next condition. Changes to species initial values, compartment volume, assignment rules or time-varying inputs require explicit model changes and corresponding tests; they are not parameter mutations hidden in this helper.
- Examine finite outputs, signs, relevant conservation relations and timescales. Check solver sensitivity by repeating at stricter tolerances when the scientific interpretation depends on small differences. A smooth curve or zero archive-replay error does not establish model validity or parameter identifiability. Never clip negative concentrations to hide solver or model problems.
- Review the COMBINE replay comparison, model warnings and units in
report.json. The helper replays the archive it generated and compares every selected value against the direct trajectories. Deliver the archive, report, source model, experiment config and CSV curves.
Run the executable reference
assets/first-order.ant defines the closed reaction A → B in a constant 1-L compartment, initially A=1 and B=0 mol/L, with k=0.2 per second. assets/experiment.json runs baseline and k=0.4 per second from 0 to 10 s. From the skill directory, point the interpreter to the environment created above:
MPLBACKEND=Agg kinetic-env/bin/python scripts/kinetic_experiment.py \
--model assets/first-order.ant --format antimony --experiment assets/experiment.json \
--output kinetic-reference
# The SBML branch was also exercised; replace these filenames with actual user inputs.
MPLBACKEND=Agg kinetic-env/bin/python scripts/kinetic_experiment.py \
--model model.xml --format sbml --experiment experiment.json --output kinetic-analysis
Output directories must be new. The reference was executed, including Antimony-to-SBML conversion,
libSBML checks, both direct integrations, SED-ML creation and COMBINE replay. Both conditions matched
the analytical A(t)=exp(-k*t), B(t)=1-A(t) within 2e-8 absolute/relative tolerance; A+B was
conserved within 1e-10, and archive replay matched direct output exactly on the tested stack.
Additional checks use a 5-L compartment and an initial amount of 10 mol (2 mol/L), resolve every
SED-ML species XPath against its actual SBML file, and verify the solver tolerance scaling.
That verifies this controlled example; arbitrary SBML packages, events, delays or stochastic models
are not covered by those tests.
Artifacts
| File | Contents |
|---|---|
baseline.csv, other scenario CSVs |
Time and selected concentrations, with bracketed species headers |
model_<scenario>.xml |
Exact independent SBML condition used by both execution routes |
experiment.sedml |
Uniform time course, CVODE/tolerances, models, tasks and output selections |
experiment.omex |
Those SBML files plus the master SED-ML and archive manifest |
report.json |
Versions, input/archive checksums, parameters, units, validation findings, initial state tolerance vectors, minimum concentrations and replay differences |
The libSEDML findings in the report are parse diagnostics. Successful execution and equality provide additional evidence that this generated uniform-course experiment works in Tellurium; they do not certify every SED-ML feature or every simulator's compatibility.
In RoadRunner 2.10.0, the JSON absolute_tolerance value is a scalar adjustment factor for
state/amount tolerances, not a uniform concentration error bound. The archive records that meaning
as KISAO:0000571; inspect initial_state_absolute_tolerances and the detailed explanation in
references/experiments.md. Declared SBML XPath namespaces and explicit
stiff/uniform-output settings prevent successful Tellurium replay from hiding missing archive context.
Primary references
| 1 | |
| 2 | name tellurium |
| 3 | description Simulates biochemical kinetic models from SBML or Antimony with Tellurium and libRoadRunner, checks model units, compares deterministic parameter perturbations, and exports and replays SBML plus SED-ML COMBINE archives. Use for reaction-network time courses, kinetic parameters, concentration dynamics and reproducible simulation experiments; steady-state constraint-based metabolic flux analysis belongs to cobrapy. |
| 4 | license MIT |
| 5 | compatibility Requires Python 3.11 with Tellurium 2.2.13.1, libRoadRunner 2.10.0, Antimony 3.2.0, python-libsbml 5.21.2, python-libsedml 2.0.34 and python-libcombine 0.2.20. Network is needed for installation only. Native wheels were tested on macOS ARM64. No credentials or external services. |
| 6 | metadata |
| 7 | version "1.1" |
| 8 | skill-author K-Dense Inc. |
| 9 | upstream-version "2.2.13.1" |
| 10 | last-reviewed "2026-10-01" |
| 11 | |
| 12 | |
| 13 | # Tellurium kinetic experiments |
| 14 | |
| 15 | ## When to use |
| 16 | |
| 17 | Use this skill for deterministic reaction-network trajectories and independent parameter conditions |
| 18 | from a local model. The helper performs SBML consistency checks, CVODE integration and an actual |
| 19 | COMBINE archive replay. It exports each condition's exact SBML and the SED-ML experiment rather |
| 20 | than handing off an unrecorded notebook state. |
| 21 | |
| 22 | ## Runtime |
| 23 | |
| 24 | |
| 25 | uv venv --python 3.11 kinetic-env |
| 26 | uv pip install --python kinetic-env/bin/python tellurium==2.2.13.1 libroadrunner==2.10.0 \ |
| 27 | antimony==3.2.0 python-libsbml==5.21.2 python-libsedml==2.0.34 python-libcombine==0.2.20 |
| 28 | |
| 29 | |
| 30 | The full workflow ran with these packages on macOS ARM64. It constructs SED-ML with libSEDML and |
| 31 | archives with Tellurium/libCombine; PhraSEDML is not required by this helper. Headless runs can set |
| 32 | `MPLBACKEND=Agg`. No plotting window is opened by the helper. |
| 33 | |
| 34 | The six pinned releases were rechecked against official PyPI metadata on 2026-10-01. RoadRunner's |
| 35 | documentation site still displays an old version banner; the solver settings below were also |
| 36 | checked against released 2.10.0 source and the installed native runtime. |
| 37 | |
| 38 | ## Workflow |
| 39 | |
| 40 | Inspect the supplied model's compartments, species, initial conditions, boundary species, |
| 41 | reactions, parameter definitions and rules/events. Identify the scientific question and |
| 42 | distinguish a mechanistic kinetic model from a flux-balance reconstruction. Record the |
| 43 | source model, version and any literature parameters; do not treat an example model as |
| 44 | experimentally calibrated. |
| 45 | Check units before interpreting a trajectory. SBML reaction rates have amount/time units; |
| 46 | species may have concentration or amount semantics. In a fixed-volume first-order model, |
| 47 | `k*A*cell` converts concentration dependence into amount/time. The helper checks SBML |
| 48 | consistency and retains every warning, including undefined units. Undefined units are |
| 49 | reported as empty/indeterminable, not silently assumed to mean SI. |
| 50 | Select concentration outputs and an experiment in the JSON format described in |
| 51 | [references/experiments.md]. Time values use the model's own time |
| 52 | units. The tested helper outputs concentration for species with `hasOnlySubstanceUnits=false`; |
| 53 | it rejects amount-only selections to avoid changing their meaning during SED-ML replay. |
| 54 | Zero-dimensional compartments and rate-rule models are also rejected; the latter need a separate |
| 55 | tolerance workflow because RoadRunner 2.10.0 can order scalar tolerances differently from states. |
| 56 | Run baseline and desired constant-global-parameter changes. Every scenario starts from a |
| 57 | fresh SBML model, so previous final concentrations cannot leak into the next condition. |
| 58 | Changes to species initial values, compartment volume, assignment rules or time-varying |
| 59 | inputs require explicit model changes and corresponding tests; they are not parameter |
| 60 | mutations hidden in this helper. |
| 61 | Examine finite outputs, signs, relevant conservation relations and timescales. Check solver |
| 62 | sensitivity by repeating at stricter tolerances when the scientific interpretation depends |
| 63 | on small differences. A smooth curve or zero archive-replay error does not establish model |
| 64 | validity or parameter identifiability. Never clip negative concentrations to hide solver |
| 65 | or model problems. |
| 66 | Review the COMBINE replay comparison, model warnings and units in `report.json`. The helper |
| 67 | replays the archive it generated and compares every selected value against the direct |
| 68 | trajectories. Deliver the archive, report, source model, experiment config and CSV curves. |
| 69 | |
| 70 | ## Run the executable reference |
| 71 | |
| 72 | [assets/first-order.ant] defines the closed reaction A → B in a constant |
| 73 | 1-L compartment, initially A=1 and B=0 mol/L, with k=0.2 per second. |
| 74 | [assets/experiment.json] runs baseline and k=0.4 per second from 0 to 10 s. |
| 75 | From the skill directory, point the interpreter to the environment created above: |
| 76 | |
| 77 | |
| 78 | MPLBACKEND=Agg kinetic-env/bin/python scripts/kinetic_experiment.py \ |
| 79 | --model assets/first-order.ant --format antimony --experiment assets/experiment.json \ |
| 80 | --output kinetic-reference |
| 81 | |
| 82 | # The SBML branch was also exercised; replace these filenames with actual user inputs. |
| 83 | MPLBACKEND=Agg kinetic-env/bin/python scripts/kinetic_experiment.py \ |
| 84 | --model model.xml --format sbml --experiment experiment.json --output kinetic-analysis |
| 85 | |
| 86 | |
| 87 | Output directories must be new. The reference was executed, including Antimony-to-SBML conversion, |
| 88 | libSBML checks, both direct integrations, SED-ML creation and COMBINE replay. Both conditions matched |
| 89 | the analytical `A(t)=exp(-k*t)`, `B(t)=1-A(t)` within 2e-8 absolute/relative tolerance; A+B was |
| 90 | conserved within 1e-10, and archive replay matched direct output exactly on the tested stack. |
| 91 | Additional checks use a 5-L compartment and an initial amount of 10 mol (2 mol/L), resolve every |
| 92 | SED-ML species XPath against its actual SBML file, and verify the solver tolerance scaling. |
| 93 | That verifies this controlled example; arbitrary SBML packages, events, delays or stochastic models |
| 94 | are not covered by those tests. |
| 95 | |
| 96 | ## Artifacts |
| 97 | |
| 98 | | File | Contents | |
| 99 | | --- | --- | |
| 100 | | `baseline.csv`, other scenario CSVs | Time and selected concentrations, with bracketed species headers | |
| 101 | | `model_<scenario>.xml` | Exact independent SBML condition used by both execution routes | |
| 102 | | `experiment.sedml` | Uniform time course, CVODE/tolerances, models, tasks and output selections | |
| 103 | | `experiment.omex` | Those SBML files plus the master SED-ML and archive manifest | |
| 104 | | `report.json` | Versions, input/archive checksums, parameters, units, validation findings, initial state tolerance vectors, minimum concentrations and replay differences | |
| 105 | |
| 106 | The libSEDML findings in the report are **parse diagnostics**. Successful execution and equality |
| 107 | provide additional evidence that this generated uniform-course experiment works in Tellurium; |
| 108 | they do not certify every SED-ML feature or every simulator's compatibility. |
| 109 | |
| 110 | In RoadRunner 2.10.0, the JSON `absolute_tolerance` value is a **scalar adjustment factor** for |
| 111 | state/amount tolerances, not a uniform concentration error bound. The archive records that meaning |
| 112 | as `KISAO:0000571`; inspect `initial_state_absolute_tolerances` and the detailed explanation in |
| 113 | [references/experiments.md]. Declared SBML XPath namespaces and explicit |
| 114 | stiff/uniform-output settings prevent successful Tellurium replay from hiding missing archive context. |
| 115 | |
| 116 | ## Primary references |
| 117 | |
| 118 | [Tellurium model loading and export methods] |
| 119 | [Antimony unit and reaction semantics] |
| 120 | [Tellurium SED-ML implementation] |
| 121 | [SED-ML Level 1 Version 3 specification] |
| 122 | [RoadRunner 2.10.0 CVODE implementation] |
| 123 | [KiSAO algorithm and parameter definitions] |
| 124 |
Discussion
Browse more free Claude skills.