About lab
Niederer2006 Myocyte Relaxation Lab
This lab asks: How quickly does the myocyte relax after calcium activation?
The lab is composed of two sub-models: a core SBML simulator (encoded as SBML, solved by Tellurium) and a dedicated viz presenter that turns the raw simulation state into a friendly timeseries plot and a plain-language "What Happened" summary. The split keeps the SBML wrapper clean and makes it easy to swap or extend the visualization without touching the simulator. This a model from the article: A quantitative analysis of cardiac myocyte relaxation: a simulation study. It can be used to explore cardiac dynamics and compare response patterns across conditions.
What You'll See
The lab opens as a canvas with three model nodes wired in series: the scenario driver on the left, the core simulator in the middle, and the visualization sub-model on the right. After running, the viz node emits four visualizations: an event-annotated absolute timeseries, a baseline-relative response timeseries, a signed response bar chart, and a question-and-answer table titled What Happened that answers How quickly does the myocyte relax after calcium activation? in plain language. The viz node also publishes the table as a structured run_summary record that downstream nodes can consume.
Primary variables shown: the core publishes a curated state record for the visualization, and the viz node presents these concepts with user-friendly labels:
- Cytosolic calcium
- Bound calcium
- Troponin calcium-binding pool
- Z
The captured run applies the configured troponin pool challenge, changing troponin pool from 0.067593139865 to 0.101389709798 during the challenge window before returning to baseline. It evaluates 1 s of simulated dynamics across Cytosolic calcium, Bound calcium, Troponin calcium-binding pool, Z; read the absolute trajectories, baseline-relative plot, response ranking, and summary table together because the variables use different native scales.
Output Visualizations
The first chart shows the absolute model state trajectories in their native units with the challenge timing included.

The second chart normalizes each trajectory against its baseline so smaller relative shifts are visible beside larger state variables.

The response ranking summarizes final-minus-baseline changes and highlights which selected variables moved most during the configured run.

The summary table restates the lab question, challenge, simulated duration, strongest response, and interpretation limits in plain language.

How the Models Connect
The canvas has two steps:
niederer2006_myocyte_relaxation_core: SBML simulator. Receives every contextual input port (ion concentrations, voltages, conductances, etc. — see below), drives roadrunner, and emits two outputs:state(per-window species/state-variable record) andspecies_labels(a one-time map of{species_id: human_label}lifted from the SBML<species name=...>attributes).niederer2006_myocyte_relaxation_viz: visualization sub-model. Consumes bothstateandspecies_labelsfrom the core, accumulates the per-window history, prettifies the labels, and renders the two visuals plus therun_summaryoutput. No SBML, no roadrunner — pure presentation.
How to Read the Visualizations
The absolute timeseries plot has one curve per state variable in the SBML model and marks when the challenge and recovery windows begin. The baseline-relative plot rescales each curve against the pre-challenge baseline so small but real responses are visible. The x-axis is simulation time in seconds and the y-axis is the variable's value in its native SBML unit (concentrations in mM or mol, voltages in mV, currents in pA, volumes in mL — refer to the SBML file for the exact unit per variable). Look for periodic patterns (action-potential-style depolarisations, oscillations), monotonic trends, or steady-state plateaus.
The response bar chart ranks final-minus-baseline changes in native SBML units. The "What Happened" table explains the lab question, the applied challenge, the simulated duration, the strongest response, and the interpretation limits.
What This Lab Contains
lab.yamldeclares the two sub-models, runtime, IO, and wiring.wiring-layout.jsonplaces the two nodes on the canvas with the connecting edges.models/core/model.yamldescribes the SBML simulator package.models/core/src/niederer2006_cardiacmyocyterelaxation_model8687196544_model.pyis the SBML wrapper (no visualization code).models/core/data/MODEL8687196544.xmlis the original SBML file from BioModels.models/core/tests/checks instantiation, output accumulation, and output keys.models/viz/model.yamldescribes the visualization sub-model.models/viz/src/niederer2006_myocyte_relaxation_viz.pyconsumes core state + labels and renders timeseries, Q&A table, and therun_summaryrecord.models/viz/tests/exercises the viz with synthetic state inputs (no SBML or roadrunner needed).
Inputs
This lab exposes a set of contextual scalar ports specific to its SBML, plus three generic fallback ports for everything else.
Contextual ports (recommended)
These map a human-friendly port name onto a real SBML global parameter. Wire them from upstream nodes or set them in lab.yaml runtime.initial_inputs. Each scalar override is applied to roadrunner before the next advance_window call.
| Input | Meaning | Default | Unit |
|---|---|---|---|
troponin_pool | Sets troponin pool for the scenario. | 0.067593139865 | — |
relaxation_rate | Sets relaxation rate for the scenario. | 0.002 | — |
cooperativity | Sets cooperativity for the scenario. | 0.008 | — |
Generic fallback ports
integration_step(s, scalar): override the ODE solver step. Smaller is more precise but slower. Default0.001.parameter_overrides(record, dict of{parameter_id: value}): apply override values to any SBML global parameter listed in the SBML Parameters table below — useful when you need to override a parameter that has no contextual port. Applied before each window.initial_conditions(record, dict of{species_id: value}): override the starting concentration of any species in the SBML Species table below. Applied at setup and on reset.
Outputs
scenario_metadata(from scenario): scenario name, active challenge input, baseline/challenge/recovery timing, and event markers used by the visualizations.state(from core): a record of every species and state variable in the SBML model at each communication step. Units are mixed; see the SBML file for per-species units.run_summary(from viz): structured Q&A record echoing the rows in the "What Happened" table —{duration_s, point_count, state_variable_count, rows}. Useful for downstream nodes that want to consume the same plain-language summary the user sees in the visualization.
Running in Biosimulant Desktop
Import the lab source folder directly:
biosimulant labs import labs/niederer2006-myocyte-relaxation
Then open the imported lab and press Run. The results should include the state-variable timeseries and the What Happened Q&A table.
Notes
- The bundled run uses a baseline plus challenge scenario so the first visualization shows a physiological perturbation without changing the upstream SBML equations.
- Default run length is
1s with a0.001s communication step. These are conservative defaults chosen by category (single-cell electrophysiology vs whole-system circulation vs slow regulatory loop). Tune them inlab.yaml. - Requires
tellurium==2.2.11.2. The first import compiles the SBML to LLVM in-process. - License:
CC0(from upstream BioModels entry biomodels_ebi:MODEL8687196544). - This wrapper does not modify the upstream biology. To change rates, initial conditions, or kinetic laws, edit the SBML file in
models/core/data/MODEL8687196544.xmldirectly.
Advanced SBML Identifiers
SBML Parameters
Full list of global parameter IDs, for use with parameter_overrides. Defaults come from the upstream SBML.
| Parameter ID | Name | Default Value |
|---|---|---|
Ca_i | Ca_i | (unset) |
Ca_b | Ca_b | (unset) |
TRPN | TRPN | 0.067593139865 |
z | z | 0.014417937837 |
z_max | z_max | (unset) |
alpha_0 | alpha_0 | 0.008 |
alpha_r1 | alpha_r1 | 0.002 |
alpha_r2 | alpha_r2 | 0.00175 |
n_Rel | n_Rel | 3 |
K_z | K_z | 0.15 |
n_Hill | n_Hill | 3 |
Ca_50ref | Ca_50ref | 0.00105 |
z_p | z_p | 0.85 |
beta_1 | beta_1 | -4 |
Ca_50 | Ca_50 | (unset) |
Ca_TRPN_50 | Ca_TRPN_50 | (unset) |
K_2 | K_2 | (unset) |
K_1 | K_1 | (unset) |
alpha_Tm | alpha_Tm | (unset) |
beta_Tm | beta_Tm | (unset) |
J_TRPN | J_TRPN | (unset) |
Ca_TRPN_Max | Ca_TRPN_Max | 0.07 |
k_off | k_off | (unset) |
k_on | k_on | 100 |
k_Ref_off | k_Ref_off | 0.2 |
gamma_trpn | gamma_trpn | 2 |
lambda | lambda | (unset) |
ExtensionRatio | ExtensionRatio | (unset) |
dExtensionRatiodt | dExtensionRatiodt | (unset) |
lambda_prev | lambda_prev | (unset) |
overlap | overlap | (unset) |
beta_0 | beta_0 | 4.9 |
T_ref | T_ref | 56.2 |
T_Base | T_Base | (unset) |
T_0 | T_0 | (unset) |
Q | Q | (unset) |
a | a | 0.35 |
Q_1 | Q_1 | 0 |
Q_2 | Q_2 | 0 |
Q_3 | Q_3 | 0 |
A_1 | A_1 | -29 |
A_2 | A_2 | 138 |
A_3 | A_3 | 129 |
alpha_1 | alpha_1 | 0.03 |
alpha_2 | alpha_2 | 0.13 |
alpha_3 | alpha_3 | 0.625 |
Tension | Tension | (unset) |
SBML Species
Full list of species IDs, for use with initial_conditions.
No species declared in this SBML file.
Two-model lab for Niederer2006 Myocyte Relaxation: a core SBML simulator wired into a dedicated visualization sub-model that turns the raw state into friendly timeseries and a plain-language summary. This a model from the article: A quantitative analysis of cardiac myocyte relaxation: a simulation study. It can be used to explore cardiac dynamics and compare response patterns across conditions.
Runtime
Runs
Metadata
Manifest
{
"io": {
"inputs": [
{
"name": "integration_step",
"maps_to": "niederer2006_myocyte_relaxation_core.integration_step"
},
{
"name": "parameter_overrides",
"maps_to": "niederer2006_myocyte_relaxation_core.parameter_overrides"
},
{
"name": "initial_conditions",
"maps_to": "niederer2006_myocyte_relaxation_core.initial_conditions"
}
],
"outputs": [
{
"name": "scenario_metadata",
"maps_to": "niederer2006_myocyte_relaxation_scenario.scenario_metadata"
},
{
"name": "state",
"maps_to": "niederer2006_myocyte_relaxation_core.state"
},
{
"name": "run_summary",
"maps_to": "niederer2006_myocyte_relaxation_viz.run_summary"
}
]
},
"title": "Niederer2006 Myocyte Relaxation Lab",
"models": [
{
"path": "owned/models/niederer2006_myocyte_relaxation_scenario",
"alias": "niederer2006_myocyte_relaxation_scenario",
"parameters": {
"schedule": {
"cooperativity": {
"unit": "dimensionless",
"label": "cooperativity",
"active": false,
"baseline": 0.008,
"recovery": 0.008,
"challenge": 0.008,
"description": "Scenario-controlled cooperativity value."
},
"troponin_pool": {
"unit": "dimensionless",
"label": "troponin pool",
"active": true,
"baseline": 0.067593139865,
"recovery": 0.067593139865,
"challenge": 0.1013897097975,
"description": "Scenario-controlled troponin pool value."
},
"relaxation_rate": {
"unit": "dimensionless",
"label": "relaxation rate",
"active": false,
"baseline": 0.002,
"recovery": 0.002,
"challenge": 0.002,
"description": "Scenario-controlled relaxation rate value."
}
},
"scenario_name": "Troponin pool challenge",
"baseline_until": 0.25,
"challenge_until": 0.75,
"scenario_description": "Baseline is followed by a troponin pool challenge and recovery period."
},
"provenance": {
"owned_path": "owned/models/niederer2006_myocyte_relaxation_scenario"
}
},
{
"path": "owned/models/niederer2006_myocyte_relaxation_core",
"alias": "niederer2006_myocyte_relaxation_core",
"parameters": {
"model_path": "data/MODEL8687196544.xml",
"integration_step": 0.001
},
"provenance": {
"owned_path": "owned/models/niederer2006_myocyte_relaxation_core"
}
},
{
"path": "owned/models/niederer2006_myocyte_relaxation_viz",
"alias": "niederer2006_myocyte_relaxation_viz",
"parameters": {
"lab_title": "Niederer2006 Myocyte Relaxation",
"lab_question": "How quickly does the myocyte relax after calcium activation?",
"integration_step": 0.001
},
"provenance": {
"owned_path": "owned/models/niederer2006_myocyte_relaxation_viz"
}
}
],
"wiring": [
{
"to": [
"niederer2006_myocyte_relaxation_core.troponin_pool"
],
"from": "niederer2006_myocyte_relaxation_scenario.troponin_pool"
},
{
"to": [
"niederer2006_myocyte_relaxation_core.relaxation_rate"
],
"from": "niederer2006_myocyte_relaxation_scenario.relaxation_rate"
},
{
"to": [
"niederer2006_myocyte_relaxation_core.cooperativity"
],
"from": "niederer2006_myocyte_relaxation_scenario.cooperativity"
},
{
"to": [
"niederer2006_myocyte_relaxation_viz.scenario_metadata"
],
"from": "niederer2006_myocyte_relaxation_scenario.scenario_metadata"
},
{
"to": [
"niederer2006_myocyte_relaxation_viz.state"
],
"from": "niederer2006_myocyte_relaxation_core.state"
},
{
"to": [
"niederer2006_myocyte_relaxation_viz.species_labels"
],
"from": "niederer2006_myocyte_relaxation_core.species_labels"
}
],
"runtime": {
"duration": 1,
"initial_inputs": {
"niederer2006_myocyte_relaxation_core": {
"integration_step": 0.001,
"initial_conditions": {
"payload": {}
},
"parameter_overrides": {
"payload": {}
}
}
},
"communication_step": 0.001
},
"description": "Two-model lab for Niederer2006 Myocyte Relaxation: a core SBML simulator wired into a dedicated visualization sub-model that turns the raw state into friendly timeseries and a plain-language summary. This a model from the article: A quantitative analysis of cardiac myocyte relaxation: a simulation study. It can be used to explore cardiac dynamics and compare response patterns across conditions.",
"schema_version": "2.0"
}Sign in to start your own run. Public-lab history stays visible here.
Select a run from History to view its results.