Release notes for sbmlsim 0.8.3
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
SamplingSensitivityAnalysisdrew from a generator of its own, which the seed of numpy does not set, andFASTSensitivityAnalysisandMorrisSensitivityAnalysisdid 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_suiteand the newwrite_submission(sbmlsim.testsuite.submission, which was a part of the script) takeworkers, andscripts/testsuite.pytakes--workers: the submission takes 45 s instead of 163 s on four processes, with the outcomes of the baseline
Examples
- the sensitivity example takes
--coresand--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
developwhose push ran the test matrix on the same tree: the jobtested on developwaits 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 checkand the scripts in an environment ofuv sync, the tests against the package installed as a wheel.lint.ymlholds the checksruffandty, and the action.github/actions/setupsets 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 todevelopis 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
tyenvironment any more; the pre-commit hook of ty is the version of thedevextra