Skip to content

0.8.5

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Oct 13:11
d4310b8

Release notes for sbmlsim 0.8.5

sbmlsim

A patch release of the integrator: every state gets an absolute tolerance of its own, a model which does not read the time is integrated in local time, and every setting of the integrator reaches roadrunner. Together they remove the CVODE warning "t + h = t" after late doses and resets, which models with tiny compartments hit.

Breaking changes

  • A float absolute_tolerance is the tolerance of every state (#254). roadrunner scaled the single value by the smallest initial volume of the model, so 1e-6 in a model with a volume of 1e-12 was about 1e-18. The same float is now the tolerance of every kind of state, i.e. looser in such a model. This also holds for settings stored by 0.8.4 and earlier, e.g. with a fit: a report of a stored fit integrates with other tolerances than the fit did.
  • The default absolute_tolerance of FitSettings is 1e-10 instead of 1e-6, the one of SimulatorSerial (#254).
  • RoadrunnerSBMLModel.set_integrator_settings(**kwargs) is a method of the model (#254). It was a static method which took the roadrunner instance. A setting the integrator does not have raises a ValueError; before, it was dropped with a debug message. set_default_settings and _tolerance_volume_factor, which nothing called, are removed.

Features

  • An absolute tolerance per state (#254). sbmlsim sets the tolerance of every state from its kind (sbmlsim.model.tolerances):

    • amount: a species with hasOnlySubstanceUnits=true.
    • concentration: any other species. The tolerance is multiplied by the reference volume of its compartment, i.e. its initial volume, raised to 1e-6 times the largest volume of the model when it is degenerate (logged once per model).
    • other: a state of a rate rule.

    absolute_tolerance of SimulatorSerial and FitSettings is a float or an AbsoluteTolerance with one value per kind and overrides by id. RoadrunnerSBMLModel.tolerances() lists the tolerance of every state; the console of a fit shows the tolerance per kind, and the report of a fit the tolerance of every state.

  • Restarts in local time (#254). A model which does not read the time is integrated from the time 0 of roadrunner in every segment between two changes, and its output is shifted back to the absolute time. The first step of CVODE after a late change is then never below the resolution of the time. A model reads the time if a rule, kinetic law, initial assignment, function definition or event reads the csymbol time or delay, or if an event has a delay (ModelSymbols.time_dependent); such a model keeps the absolute time.

  • FitSettings.initial_time_step sets the first step of the integrator of the simulations of a fit (#254). It is the remedy for "t + h = t" in a model which reads the time.

Fixes

  • Every setting of the integrator reaches roadrunner (#254). Only variable_step_size, stiff, absolute_tolerance and relative_tolerance were passed on, e.g. initial_time_step was dropped. The settings of SimulatorSerial.set_integrator_settings are kept for every model set later; before, the next set_model, which an experiment calls for every task, applied the settings of the constructor again.
  • A compartment without a size is not selected by default (#254). A membrane whose area the model does not use was recorded as a variable which is NaN at every time.
  • Chen_MSB2009 of the PEtab benchmark collection integrates; with one scaled tolerance CVODE stalled with CV_TOO_MUCH_WORK (#254).

Examples

  • The HCTZ example evaluates its Hill functions for a slightly negative concentration as for 0, power(max(hctz, 0 mM), gamma) (#254).

Documentation

  • docs/simulation.md, docs/models.md and docs/fitting.md describe the tolerances per state and the local time (#254).