pypi sbmlsim 0.8.3

7 hours ago

Release notes for sbmlsim 0.8.3

sbmlsim

A patch release of the time things take: a sensitivity analysis starts its processes once and is reproducible with its seed, the SBML Test Suite runs on every core, the tests take a third of the time and a release no longer runs them again.

Fixes

  • the seed of a sensitivity analysis decides its samples (#239). The Latin hypercube of SamplingSensitivityAnalysis drew from a generator of its own, which the seed of numpy does not set, and FASTSensitivityAnalysis and MorrisSensitivityAnalysis did not pass the seed to SALib, so two analyses with the same seed drew different samples. The seed also goes to the bootstrap of the confidence intervals of FAST, Morris and Sobol

Performance

  • a sensitivity analysis creates one pool of processes for all its groups instead of one per group, and none for n_cores=1, which simulates in the process itself. A process imports sbmlsim when it starts, which takes longer than simulating a small sample: the analyses of the tests take 0.5 to 2 s instead of 4 to 8 s
  • the cases of the SBML Test Suite run in one process per core. run_suite and the new write_submission (sbmlsim.testsuite.submission, which was a part of the script) take workers, and scripts/testsuite.py takes --workers: the submission takes 45 s instead of 163 s on four processes, with the outcomes of the baseline

Examples

  • the sensitivity example takes --cores and --quick, the smallest samples every method accepts, which shows that it runs and not what the parameters do

Development

  • a release does not run the tests again (#239). The release of 0.8.0 took 23 minutes after the tag, in jobs which waited for each other. The tag is on a commit of develop whose push ran the test matrix on the same tree: the job tested on develop waits for that run and stops the release unless it passed. The SBML Test Suite, the PEtab SciML test suite and the submission run as three jobs next to each other from the start, and the release attaches the submission when it is there
  • the workflows run the commands of a developer, without tox (#241): pytest, ty check and the scripts in an environment of uv sync, the tests against the package installed as a wheel. lint.yml holds the checks ruff and ty, and the action .github/actions/setup sets up every job. The libpython roadrunner links against is the one of the uv interpreter, instead of the dev files of deadsnakes, half a minute per job and a different build. A push to develop is never cancelled, a release waits for the run of its commit
  • the tests take a third of the time, 309 s to 109 s on four workers: the fits which test what a fit produces and not where it converges stop after a few steps, the examples run with small samples, and pytest-xdist hands the tests which wait at a busy worker to an idle one (--dist worksteal)
  • tox runs the tests on every supported python locally and has no ty environment any more; the pre-commit hook of ty is the version of the dev extra

Don't miss a new sbmlsim release

NewReleases is sending notifications on new releases.