sbmlsim 0.8.2__tar.gz → 0.8.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.bumpversion.toml +1 -1
- sbmlsim-0.8.4/.github/actions/setup/action.yml +50 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.github/pull_request_template.md +1 -1
- sbmlsim-0.8.4/.github/workflows/ci-cd.yml +292 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.github/workflows/docs.yml +6 -15
- sbmlsim-0.8.4/.github/workflows/lint.yml +58 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.github/workflows/testsuite-pin.yml +6 -15
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.pre-commit-config.yaml +1 -1
- sbmlsim-0.8.4/.zenodo.json +33 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/CITATION.cff +2 -2
- sbmlsim-0.8.4/CLAUDE.md +81 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/PKG-INFO +8 -11
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/README.md +4 -4
- sbmlsim-0.8.4/docs/api/fit.petab_v2.benchmark.md +1 -0
- sbmlsim-0.8.4/docs/api/fit.petab_v2.testsuite.md +1 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/index.md +21 -22
- sbmlsim-0.8.4/docs/api/model.symbols.md +3 -0
- sbmlsim-0.8.4/docs/api/sciml.formula.md +3 -0
- sbmlsim-0.8.4/docs/api/simulation.definition.md +3 -0
- sbmlsim-0.8.4/docs/api/simulator.executor.md +3 -0
- sbmlsim-0.8.4/docs/api/simulator.formula.md +3 -0
- sbmlsim-0.8.4/docs/api/simulator.plan.md +3 -0
- sbmlsim-0.8.4/docs/api/testsuite.baseline.md +1 -0
- sbmlsim-0.8.4/docs/api/testsuite.submission.md +3 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/data.md +18 -9
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/development.md +12 -14
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/experiments.md +13 -14
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/fitting.md +7 -125
- sbmlsim-0.8.4/docs/identifiability.md +123 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/index.md +27 -17
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/installation.md +5 -6
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/models.md +2 -14
- sbmlsim-0.8.4/docs/petab.md +166 -0
- sbmlsim-0.8.4/docs/petab_benchmark.md +53 -0
- sbmlsim-0.8.4/docs/petab_sciml.md +80 -0
- sbmlsim-0.8.4/docs/petab_testsuite.md +46 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/references.md +5 -12
- sbmlsim-0.8.4/docs/scans.md +123 -0
- sbmlsim-0.8.4/docs/sciml_testsuite.md +43 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/sensitivity.md +2 -2
- sbmlsim-0.8.4/docs/simulation.md +162 -0
- sbmlsim-0.8.4/docs/superpowers/plans/2026-10-07-simulation-engine-phase1.md +1411 -0
- sbmlsim-0.8.4/docs/superpowers/plans/2026-10-07-simulation-engine-phase2.md +93 -0
- sbmlsim-0.8.4/docs/superpowers/plans/2026-10-08-core-cleanup.md +1041 -0
- sbmlsim-0.8.4/docs/superpowers/specs/2026-10-07-simulation-engine-design.md +239 -0
- sbmlsim-0.8.4/docs/superpowers/specs/2026-10-08-core-cleanup-design.md +85 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/testsuite.md +1 -1
- sbmlsim-0.8.4/docs/testsuites.md +12 -0
- sbmlsim-0.8.4/docs/units.md +77 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/README.md +2 -6
- sbmlsim-0.8.4/examples/comparison/diff/example_1.json +12 -0
- sbmlsim-0.8.4/examples/comparison/diff/example_2.json +14 -0
- sbmlsim-0.8.4/examples/comparison/diff/example_3.json +14 -0
- sbmlsim-0.8.4/examples/comparison/diff/example_4.json +14 -0
- sbmlsim-0.8.4/examples/comparison/diff/example_5.json +16 -0
- sbmlsim-0.8.4/examples/comparison/diff/example_6.json +31 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/diff_example.py +9 -4
- sbmlsim-0.8.4/examples/comparison/example_comparison.py +105 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/simulate_amici.py +4 -9
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/simulate_copasi.py +4 -1
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/simulate_roadrunner.py +6 -4
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/curve_types/experiment.py +23 -43
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/demo/demo.py +49 -60
- sbmlsim-0.8.4/examples/glucose/experiments/dose_response.py +204 -0
- sbmlsim-0.8.4/examples/hctz_fitting/experiments/base_experiment.py +151 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/experiments/metadata.py +5 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/experiments/studies/beermann1976.py +44 -31
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/experiments/studies/patel1984.py +30 -24
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/experiments/studies/weir1998.py +30 -40
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/initial_assignment/initial_assignment.py +42 -42
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/model_sensitivity.py +14 -18
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Boehm_JProteomeRes2014/README.md +1 -1
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/benchmark.py +4 -3
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/repressilator/repressilator.py +28 -39
- sbmlsim-0.8.4/examples/repressilator/repressilator_scans.py +183 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/scan.py +15 -30
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/neural_ode/experiment.py +21 -12
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sensitivity/sensitivity_example.py +41 -9
- sbmlsim-0.8.4/examples/sensitivity/simple_chain.py +65 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sensitivity/simple_chain.xml +3 -27
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/timecourse.py +21 -26
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/units.py +17 -23
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/pyproject.toml +12 -10
- sbmlsim-0.8.4/release-notes/0.8.3.md +24 -0
- sbmlsim-0.8.4/release-notes/0.8.4.md +81 -0
- sbmlsim-0.8.4/scripts/petab_benchmark.py +210 -0
- sbmlsim-0.8.4/scripts/petab_testsuite.py +120 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/scripts/sciml_testsuite.py +10 -61
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/scripts/testsuite.py +13 -78
- sbmlsim-0.8.4/src/sbmlsim/__init__.py +16 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/data.py +161 -54
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/experiment/experiment.py +43 -64
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/experiment/runner.py +5 -4
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/derived.py +19 -15
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/helpers.py +0 -21
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/objects.py +337 -7
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/optimization.py +458 -129
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/petab_v2/__init__.py +10 -1
- sbmlsim-0.8.4/src/sbmlsim/fit/petab_v2/benchmark.py +743 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/petab_v2/export.py +160 -138
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/petab_v2/extension.py +83 -6
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/petab_v2/gaps.py +30 -43
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/petab_v2/likelihood.py +278 -94
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/petab_v2/reader.py +468 -286
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/petab_v2/sciml.py +1 -1
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/petab_v2/sciml_export.py +1 -1
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/petab_v2/symbols.py +90 -0
- sbmlsim-0.8.4/src/sbmlsim/fit/petab_v2/testsuite.py +554 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/result.py +1 -25
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/runner.py +70 -60
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/model/__init__.py +0 -2
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/model/model.py +21 -12
- sbmlsim-0.8.4/src/sbmlsim/model/model_resources.py +68 -0
- sbmlsim-0.8.4/src/sbmlsim/model/model_roadrunner.py +704 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/model/provenance.py +3 -5
- sbmlsim-0.8.4/src/sbmlsim/model/symbols.py +320 -0
- sbmlsim-0.8.4/src/sbmlsim/plot/padding.py +63 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/plot/plotting.py +0 -35
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/plot/serialization_matplotlib.py +34 -42
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/plot/serialization_plotly.py +14 -10
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/report/experiment_report.py +2 -3
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/result/timecourse.py +1 -1
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/result/xresult.py +173 -109
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/compiler.py +1 -1
- sbmlsim-0.8.2/src/sbmlsim/mathml.py → sbmlsim-0.8.4/src/sbmlsim/sciml/formula.py +6 -206
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/hybridization.py +1 -1
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sensitivity/analysis.py +77 -47
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sensitivity/plots.py +8 -5
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sensitivity/sensitivity_fast.py +5 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sensitivity/sensitivity_local.py +5 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sensitivity/sensitivity_morris.py +6 -1
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sensitivity/sensitivity_sampling.py +10 -4
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sensitivity/sensitivity_sobol.py +5 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/serialization.py +0 -8
- sbmlsim-0.8.4/src/sbmlsim/simulation/__init__.py +13 -0
- sbmlsim-0.8.4/src/sbmlsim/simulation/definition.py +441 -0
- sbmlsim-0.8.4/src/sbmlsim/simulation/range.py +74 -0
- sbmlsim-0.8.4/src/sbmlsim/simulation/scan.py +85 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/simulation/sensitivity.py +27 -75
- sbmlsim-0.8.4/src/sbmlsim/simulator/executor.py +373 -0
- sbmlsim-0.8.4/src/sbmlsim/simulator/formula.py +115 -0
- sbmlsim-0.8.4/src/sbmlsim/simulator/plan.py +415 -0
- sbmlsim-0.8.4/src/sbmlsim/simulator/simulation_serial.py +158 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/testsuite/__init__.py +5 -2
- sbmlsim-0.8.4/src/sbmlsim/testsuite/baseline.py +123 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/testsuite/runner.py +49 -18
- sbmlsim-0.8.4/src/sbmlsim/testsuite/submission.py +110 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/units.py +246 -110
- sbmlsim-0.8.4/src/sbmlsim/utils.py +104 -0
- sbmlsim-0.8.4/tests/conftest.py +117 -0
- sbmlsim-0.8.4/tests/data/benchmark_baseline.json +35 -0
- sbmlsim-0.8.4/tests/data/petab_baseline.json +6 -0
- sbmlsim-0.8.4/tests/docs/test_docs_code.py +38 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/examples/test_example_scripts.py +14 -8
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/experiment/test_experiment_examples.py +0 -3
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/experiment/test_experiment_run.py +2 -2
- sbmlsim-0.8.4/tests/experiment/test_model_changes_merge.py +72 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/conftest.py +52 -7
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_cli.py +40 -10
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_derived_changes.py +19 -12
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_fit.py +243 -8
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_helpers.py +0 -9
- sbmlsim-0.8.4/tests/fit/test_initial_assignment_parameter.py +181 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_mapping_kinds.py +0 -13
- sbmlsim-0.8.4/tests/fit/test_observable_model.py +202 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_parameter_mapping.py +0 -67
- sbmlsim-0.8.4/tests/fit/test_petab_benchmark.py +90 -0
- sbmlsim-0.8.4/tests/fit/test_petab_benchmark_problems.py +302 -0
- sbmlsim-0.8.4/tests/fit/test_petab_benchmark_script.py +71 -0
- sbmlsim-0.8.4/tests/fit/test_petab_testsuite.py +108 -0
- sbmlsim-0.8.4/tests/fit/test_petab_testsuite_cases.py +238 -0
- sbmlsim-0.8.4/tests/fit/test_petab_testsuite_script.py +89 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_petab_v2.py +16 -14
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_petab_v2_definition.py +139 -12
- sbmlsim-0.8.4/tests/fit/test_petab_v2_dosing.py +231 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_petab_v2_likelihood.py +101 -8
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_petab_v2_noise.py +29 -13
- sbmlsim-0.8.4/tests/fit/test_petab_v2_reader.py +699 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_petab_v2_symbols.py +62 -0
- sbmlsim-0.8.4/tests/fit/test_petab_v2_versions.py +192 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_predictions.py +1 -3
- sbmlsim-0.8.4/tests/fit/test_prior.py +83 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_report.py +6 -1
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_robustness.py +28 -57
- sbmlsim-0.8.4/tests/model/test_model_parameters.py +32 -0
- sbmlsim-0.8.4/tests/model/test_model_roadrunner_init.py +389 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/model/test_provenance.py +0 -22
- sbmlsim-0.8.4/tests/model/test_symbols.py +59 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/models/test_model_roadrunner.py +13 -0
- sbmlsim-0.8.4/tests/plot/test_padding.py +23 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/plot/test_plotting.py +3 -2
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/plot/test_serialization_matplotlib.py +36 -2
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/report/test_experiment_report.py +1 -1
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/result/test_timecourse.py +17 -50
- sbmlsim-0.8.4/tests/result/test_xresult.py +112 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/experiment.py +3 -6
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_compiler.py +28 -4
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_export.py +9 -12
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_fit.py +15 -7
- sbmlsim-0.8.2/tests/test_mathml_formula.py → sbmlsim-0.8.4/tests/sciml/test_formula.py +2 -3
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_reader.py +21 -11
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_script.py +3 -2
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sensitivity/test_analysis.py +71 -2
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sensitivity/test_sensitivity_example.py +58 -0
- sbmlsim-0.8.4/tests/simulation/test_definition.py +139 -0
- sbmlsim-0.8.4/tests/simulation/test_scan_definition.py +57 -0
- sbmlsim-0.8.4/tests/simulation/test_simulation.py +70 -0
- sbmlsim-0.8.4/tests/simulator/models.py +66 -0
- sbmlsim-0.8.4/tests/simulator/test_executor.py +350 -0
- sbmlsim-0.8.4/tests/simulator/test_formula.py +32 -0
- sbmlsim-0.8.4/tests/simulator/test_plan.py +205 -0
- sbmlsim-0.8.4/tests/simulator/test_simulator_serial.py +60 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/test_data.py +56 -11
- sbmlsim-0.8.4/tests/test_data_function.py +71 -0
- sbmlsim-0.8.4/tests/test_imports.py +26 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/test_sensitivity.py +34 -7
- sbmlsim-0.8.4/tests/test_units.py +263 -0
- sbmlsim-0.8.4/tests/test_utils.py +110 -0
- sbmlsim-0.8.4/tests/testsuite/test_runner.py +120 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tox.ini +20 -17
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/zensical.toml +30 -15
- sbmlsim-0.8.2/.github/workflows/ci-cd.yml +0 -184
- sbmlsim-0.8.2/.github/workflows/ruff.yml +0 -37
- sbmlsim-0.8.2/.github/workflows/ty.yml +0 -45
- sbmlsim-0.8.2/.zenodo.json +0 -34
- sbmlsim-0.8.2/CLAUDE.md +0 -76
- sbmlsim-0.8.2/docs/api/fit.petab_v2.observables.md +0 -3
- sbmlsim-0.8.2/docs/api/mathml.md +0 -3
- sbmlsim-0.8.2/docs/api/model.model_change.md +0 -3
- sbmlsim-0.8.2/docs/api/result.datagenerator.md +0 -3
- sbmlsim-0.8.2/docs/api/result.report.md +0 -3
- sbmlsim-0.8.2/docs/api/simulation.algorithm.md +0 -3
- sbmlsim-0.8.2/docs/api/simulation.base.md +0 -3
- sbmlsim-0.8.2/docs/api/simulation.calculation.md +0 -3
- sbmlsim-0.8.2/docs/api/simulation.change.md +0 -3
- sbmlsim-0.8.2/docs/api/simulation.simulation.md +0 -3
- sbmlsim-0.8.2/docs/api/simulation.timecourse.md +0 -3
- sbmlsim-0.8.2/docs/petab.md +0 -259
- sbmlsim-0.8.2/docs/scans.md +0 -100
- sbmlsim-0.8.2/docs/simulation.md +0 -131
- sbmlsim-0.8.2/docs/units.md +0 -82
- sbmlsim-0.8.2/examples/comparison/diff/example_1.json +0 -13
- sbmlsim-0.8.2/examples/comparison/diff/example_2.json +0 -15
- sbmlsim-0.8.2/examples/comparison/diff/example_3.json +0 -15
- sbmlsim-0.8.2/examples/comparison/diff/example_4.json +0 -15
- sbmlsim-0.8.2/examples/comparison/diff/example_5.json +0 -17
- sbmlsim-0.8.2/examples/comparison/diff/example_6.json +0 -33
- sbmlsim-0.8.2/examples/comparison/example_comparison.py +0 -117
- sbmlsim-0.8.2/examples/datagenerator.py +0 -73
- sbmlsim-0.8.2/examples/glucose/DoseResponseExperiment.md +0 -286
- sbmlsim-0.8.2/examples/glucose/experiments/dose_response.py +0 -269
- sbmlsim-0.8.2/examples/glucose/index.md +0 -6
- sbmlsim-0.8.2/examples/hctz_fitting/experiments/base_experiment.py +0 -307
- sbmlsim-0.8.2/examples/interpolation/__init__.py +0 -1
- sbmlsim-0.8.2/examples/interpolation/interpolation.py +0 -413
- sbmlsim-0.8.2/examples/interpolation/interpolation_example.py +0 -60
- sbmlsim-0.8.2/examples/julia/julia.md +0 -12
- sbmlsim-0.8.2/examples/julia/juliacall_example.py +0 -9
- sbmlsim-0.8.2/examples/model_change.py +0 -147
- sbmlsim-0.8.2/examples/repressilator/repressilator_scans.py +0 -229
- sbmlsim-0.8.2/examples/sensitivity/simple_chain.md +0 -36
- sbmlsim-0.8.2/examples/sensitivity/simple_chain.py +0 -85
- sbmlsim-0.8.2/src/sbmlsim/__init__.py +0 -10
- sbmlsim-0.8.2/src/sbmlsim/fit/petab_v2/observables.py +0 -134
- sbmlsim-0.8.2/src/sbmlsim/model/model_change.py +0 -51
- sbmlsim-0.8.2/src/sbmlsim/model/model_resources.py +0 -160
- sbmlsim-0.8.2/src/sbmlsim/model/model_roadrunner.py +0 -342
- sbmlsim-0.8.2/src/sbmlsim/result/datagenerator.py +0 -97
- sbmlsim-0.8.2/src/sbmlsim/result/report.py +0 -42
- sbmlsim-0.8.2/src/sbmlsim/simulation/__init__.py +0 -14
- sbmlsim-0.8.2/src/sbmlsim/simulation/algorithm.py +0 -73
- sbmlsim-0.8.2/src/sbmlsim/simulation/base.py +0 -77
- sbmlsim-0.8.2/src/sbmlsim/simulation/calculation.py +0 -232
- sbmlsim-0.8.2/src/sbmlsim/simulation/change.py +0 -51
- sbmlsim-0.8.2/src/sbmlsim/simulation/range.py +0 -301
- sbmlsim-0.8.2/src/sbmlsim/simulation/scan.py +0 -185
- sbmlsim-0.8.2/src/sbmlsim/simulation/simulation.py +0 -133
- sbmlsim-0.8.2/src/sbmlsim/simulation/timecourse.py +0 -248
- sbmlsim-0.8.2/src/sbmlsim/simulator/simulation_serial.py +0 -264
- sbmlsim-0.8.2/src/sbmlsim/task/task_new.py +0 -74
- sbmlsim-0.8.2/src/sbmlsim/utils.py +0 -71
- sbmlsim-0.8.2/tests/conftest.py +0 -59
- sbmlsim-0.8.2/tests/data/data/numlData1D.xml +0 -113
- sbmlsim-0.8.2/tests/data/data/numlData2D.xml +0 -87
- sbmlsim-0.8.2/tests/data/data/numlData2D2RC.xml +0 -164
- sbmlsim-0.8.2/tests/data/data/oscli.csv +0 -204
- sbmlsim-0.8.2/tests/data/data/oscli.tsv +0 -204
- sbmlsim-0.8.2/tests/data/data/oscli.xml +0 -1616
- sbmlsim-0.8.2/tests/data/data/parameter-from-data-csv.xml +0 -149
- sbmlsim-0.8.2/tests/data/data/parameters.csv +0 -14
- sbmlsim-0.8.2/tests/data/data/reading-numlData1D.xml +0 -46
- sbmlsim-0.8.2/tests/data/data/reading-numlData2D.xml +0 -32
- sbmlsim-0.8.2/tests/data/data/reading-numlData2DRC.xml +0 -32
- sbmlsim-0.8.2/tests/data/data/reading-oscli-csv.xml +0 -26
- sbmlsim-0.8.2/tests/data/data/reading-oscli-numl.xml +0 -22
- sbmlsim-0.8.2/tests/data/data/reading-oscli-tsv.xml +0 -26
- sbmlsim-0.8.2/tests/data/models/BioModel1_repressor_activator_oscillations.xml +0 -872
- sbmlsim-0.8.2/tests/data/models/BorisEJB.xml +0 -709
- sbmlsim-0.8.2/tests/data/models/Koenig_demo_14.xml +0 -728
- sbmlsim-0.8.2/tests/data/models/app2sim.xml +0 -127
- sbmlsim-0.8.2/tests/data/models/asedml3repeat.xml +0 -127
- sbmlsim-0.8.2/tests/data/models/asedmlComplex.xml +0 -127
- sbmlsim-0.8.2/tests/data/models/body21_livertoy_flat.xml +0 -7174
- sbmlsim-0.8.2/tests/data/models/curien.xml +0 -217
- sbmlsim-0.8.2/tests/data/models/example1.xml +0 -34
- sbmlsim-0.8.2/tests/data/models/icg_body_flat.xml +0 -2613
- sbmlsim-0.8.2/tests/data/models/lorenz.xml +0 -460
- sbmlsim-0.8.2/tests/data/models/midazolam_body_flat.xml +0 -2551
- sbmlsim-0.8.2/tests/data/models/model1.xml +0 -408
- sbmlsim-0.8.2/tests/data/models/oscli.xml +0 -384
- sbmlsim-0.8.2/tests/data/models/repressilator.xml +0 -1021
- sbmlsim-0.8.2/tests/data/petab/icg_example1/icg.omex +0 -0
- sbmlsim-0.8.2/tests/data/petab/icg_example1/icg.xml +0 -3096
- sbmlsim-0.8.2/tests/data/petab/icg_example1/icg.yaml +0 -11
- sbmlsim-0.8.2/tests/data/petab/icg_example1/icg_condition.tsv +0 -17
- sbmlsim-0.8.2/tests/data/petab/icg_example1/icg_data.tsv +0 -183
- sbmlsim-0.8.2/tests/data/petab/icg_example1/icg_measurement.tsv +0 -183
- sbmlsim-0.8.2/tests/data/petab/icg_example1/icg_observable.tsv +0 -6
- sbmlsim-0.8.2/tests/data/petab/icg_example1/icg_parameter.tsv +0 -11
- sbmlsim-0.8.2/tests/examples/test_interpolation.py +0 -47
- sbmlsim-0.8.2/tests/fit/test_petab_v2_dosing.py +0 -201
- sbmlsim-0.8.2/tests/fit/test_petab_v2_reader.py +0 -372
- sbmlsim-0.8.2/tests/models/test_biomodels.py +0 -65
- sbmlsim-0.8.2/tests/result/test_datagenerator.py +0 -8
- sbmlsim-0.8.2/tests/simulation/test_algorithm.py +0 -46
- sbmlsim-0.8.2/tests/simulation/test_simulation.py +0 -86
- sbmlsim-0.8.2/tests/test_mathml.py +0 -88
- sbmlsim-0.8.2/tests/test_model_change.py +0 -18
- sbmlsim-0.8.2/tests/test_units.py +0 -124
- sbmlsim-0.8.2/tests/test_utils.py +0 -24
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.claude/settings.json +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.github/CODEOWNERS +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.github/dependabot.yml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.github/rulesets/apply.sh +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.github/rulesets/develop.json +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.github/rulesets/main.json +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.github/rulesets/tags.json +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.gitignore +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.python-version +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/.ruff.toml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/LICENSE +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/conftest.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/comparison.diff.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/console.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/data.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/display.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/experiment.experiment.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/experiment.runner.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.cli.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.derived.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.display.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.fisher.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.helpers.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.identifiability.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.metrics.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.objects.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.optimization.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.options.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.parameter_mapping.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.parameters.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.petab_omex.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.petab_v2.export.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.petab_v2.extension.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.petab_v2.gaps.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.petab_v2.likelihood.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.petab_v2.reader.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.petab_v2.sciml.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.petab_v2.sciml_export.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.petab_v2.symbols.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.report.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.result.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.runner.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/fit.sampling.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/log.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/model.model.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/model.model_resources.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/model.model_roadrunner.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/model.provenance.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/plot.plotting.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/plot.serialization_matplotlib.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/report.experiment_report.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/result.timecourse.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/result.xresult.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sciml.backend.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sciml.compiler.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sciml.errors.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sciml.hybridization.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sciml.interpreter.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sciml.layers.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sciml.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sciml.network.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sciml.parameters.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sciml.testsuite.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sensitivity.analysis.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sensitivity.classification.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sensitivity.parameters.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sensitivity.plots.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sensitivity.sensitivity_fast.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sensitivity.sensitivity_local.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sensitivity.sensitivity_morris.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sensitivity.sensitivity_sampling.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/sensitivity.sensitivity_sobol.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/serialization.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/simulation.range.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/simulation.scan.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/simulation.sensitivity.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/simulator.simulation_serial.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/task.task.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/testsuite.cache.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/testsuite.cases.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/testsuite.comparison.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/testsuite.report.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/testsuite.runner.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/units.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/api/utils.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/images/favicon/about.txt +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/images/favicon/android-chrome-192x192.png +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/images/favicon/android-chrome-512x512.png +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/images/favicon/apple-touch-icon.png +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/images/favicon/favicon-16x16.png +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/images/favicon/favicon-32x32.png +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/images/favicon/favicon.ico +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/images/favicon/sbmlsim-100x100-300dpi.png +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/images/favicon/site.webmanifest +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/plotting.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/robots.txt +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/superpowers/plans/2026-09-13-versioned-fit-parameters.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/superpowers/plans/2026-09-30-petab-sciml-phase1.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/superpowers/plans/2026-09-30-petab-sciml-phase2.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/superpowers/plans/2026-09-30-petab-sciml-phase3.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/superpowers/plans/2026-09-30-petab-sciml-phase4.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/superpowers/specs/2026-09-13-versioned-fit-parameters-design.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/docs/superpowers/specs/2026-09-30-petab-sciml-design.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/diff/jws/example_1.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/diff/jws/example_2.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/diff/jws/example_3.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/diff/jws/example_4.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/diff/jws/example_5.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/diff/jws/example_6.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/example_copasi.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/icg_amici_simulation.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/resources/condition.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/resources/condition_liver.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/resources/icg_events_sd.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/resources/icg_liver.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/resources/icg_sd.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/comparison/simulate.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/curve_types/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/curve_types/model.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/demo/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/fit_sampling.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/glucose/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/glucose/data/DoseResponse/.DoseResponse_TabEpinephrine.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/glucose/data/DoseResponse/.DoseResponse_TabGlucagon.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/glucose/data/DoseResponse/.DoseResponse_TabInsulin.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/glucose/experiments/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/glucose/experiments/plotting.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/glucose/glucose.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/glucose/model/liver_glucose.html +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/glucose/model/liver_glucose.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/data/Beermann1976/.Beermann1976_Fig2.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/data/Beermann1976/.Beermann1976_Fig3.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/data/Beermann1976/.Beermann1976_Tab1A.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/data/Patel1984/.Patel1984_Fig1.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/data/Patel1984/.Patel1984_Fig2.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/data/Patel1984/.Patel1984_Tab4.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/data/Weir1998/.Weir1998_Fig2.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/data/Weir1998/.Weir1998_Fig3.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/data/Weir1998/.Weir1998_Tab4.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/experiments/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/experiments/studies/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/fitting/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/fitting/fitting.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/fitting/identifiability.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/fitting/identifiability_report.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/fitting/mapping_collections.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/fitting/parameters.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/fitting/petab_problem.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/fitting/run_report.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/helpers.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/models/hctz_body_flat.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/hctz_fitting/simulations.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/initial_assignment/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/initial_assignment/initial_assignment.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Boehm_JProteomeRes2014/Boehm_JProteomeRes2014.yaml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Boehm_JProteomeRes2014/experimentalCondition_Boehm_JProteomeRes2014.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Boehm_JProteomeRes2014/measurementData_Boehm_JProteomeRes2014.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Boehm_JProteomeRes2014/model_Boehm_JProteomeRes2014.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Boehm_JProteomeRes2014/observables_Boehm_JProteomeRes2014.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Boehm_JProteomeRes2014/parameters_Boehm_JProteomeRes2014.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Boehm_JProteomeRes2014/visualizationSpecification_Boehm_JProteomeRes2014.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Perelson_Science1996/Perelson_Science1996.yaml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Perelson_Science1996/README.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Perelson_Science1996/experimentalCondition_Perelson_Science1996.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Perelson_Science1996/measurementData_Perelson_Science1996.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Perelson_Science1996/model_Perelson_Science1996.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Perelson_Science1996/observables_Perelson_Science1996.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Perelson_Science1996/parameters_Perelson_Science1996.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/Perelson_Science1996/visualizationSpecification_Perelson_Science1996.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/petab/__init__.py +0 -0
- {sbmlsim-0.8.2/examples/julia → sbmlsim-0.8.4/examples/repressilator}/__init__.py +0 -0
- {sbmlsim-0.8.2/examples/repressilator → sbmlsim-0.8.4/examples/sciml}/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra/README.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra/experiments.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra/hybridization.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra/lv.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra/mapping.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra/measurements.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra/net1.yaml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra/net1_ps.hdf5 +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra/observables.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra/parameters.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra/problem.yaml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/lotka_volterra_fit.py +0 -0
- {sbmlsim-0.8.2/examples/sciml → sbmlsim-0.8.4/examples/sciml/neural_ode}/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/neural_ode/data.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/neural_ode/fitting.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/neural_ode/lotka_volterra_neural_ode.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sciml/neural_ode/network.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/examples/sensitivity/.gitignore +0 -0
- {sbmlsim-0.8.2/examples/sciml/neural_ode → sbmlsim-0.8.4/examples/sensitivity}/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.1.10.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.1.11.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.1.13.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.1.14.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.1.3.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.1.4.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.1.6.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.1.7.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.1.8.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.1.9.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.2.0.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.2.1.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.2.2.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.3.0.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.4.0.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.5.0.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.6.0.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.6.1.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.7.0.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.7.1.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.7.2.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.8.0.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.8.1.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/release-notes/0.8.2.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/scripts/llms_txt.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/comparison/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/comparison/diff.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/console.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/display.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/experiment/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/cli.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/display.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/fisher.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/identifiability.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/metrics.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/options.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/parameter_mapping.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/parameters.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/petab_omex.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/report.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/fit/sampling.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/log.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/plot/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/report/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/report/templates.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/models/Koenig_demo_14.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/models/midazolam_body_flat.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/models/repressilator.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/templates/experiment.html +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/templates/experiment.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/templates/fit_report.html +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/templates/index.html +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/templates/index.md +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/templates/index.tex +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/templates/report_base.html +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/resources/templates/testsuite_report.html +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/result/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/backend.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/errors.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/interpreter.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/layers/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/layers/convolution.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/layers/core.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/layers/functions.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/layers/normalization.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/layers/pooling.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/layers/registry.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/layers/windows.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/network.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/parameters.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sciml/testsuite.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sensitivity/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sensitivity/classification.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/sensitivity/parameters.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/simulator/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/task/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/task/task.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/testsuite/cache.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/testsuite/cases.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/testsuite/comparison.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/src/sbmlsim/testsuite/report.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/data/datasets/Allonen1981/.Allonen1981_Fig3A.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/data/datasets/Faber1978/.Faber1978_Fig1.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/data/models/lotka_volterra.xml +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/data/petab/sciml_001_llh.tsv +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/data/sciml_baseline.json +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/data/testsuite_baseline.json +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/hooks.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_display.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_fisher.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_identifiability.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_metrics.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_objects.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_optimization.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_optimization_result.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_parameter_scale.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_parameter_sets.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_petab_omex.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/fit/test_sampling.py +0 -0
- {sbmlsim-0.8.2/examples/sensitivity → sbmlsim-0.8.4/tests/sciml}/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/conftest.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/hybrid.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/petab.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_backend.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_expressions.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_functions.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_hybridization.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_ids.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_interpreter.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_layers_convolution.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_layers_core.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_layers_normalization.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_layers_pooling.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_network.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_package.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_parameters.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_report.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_suite_cases.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sciml/test_testsuite.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sensitivity/test_classification.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/sensitivity/test_parameters.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/simulation/test_scan.py +0 -0
- {sbmlsim-0.8.2/tests/sciml → sbmlsim-0.8.4/tests/simulator}/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/test_display_links.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/test_log.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/testsuite/__init__.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/testsuite/conftest.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/testsuite/test_cache.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/testsuite/test_cases.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/testsuite/test_report_path.py +0 -0
- {sbmlsim-0.8.2 → sbmlsim-0.8.4}/tests/testsuite/test_semantic.py +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Set up the environment
|
|
2
|
+
description: >-
|
|
3
|
+
Install uv with its cache, set the python version of the job, put the
|
|
4
|
+
libpython of the interpreter on the library search path and sync the
|
|
5
|
+
environment of the project
|
|
6
|
+
inputs:
|
|
7
|
+
python-version:
|
|
8
|
+
description: the python version, e.g. 3.14
|
|
9
|
+
required: true
|
|
10
|
+
sync:
|
|
11
|
+
description: >-
|
|
12
|
+
the arguments of `uv sync`, e.g. `--extra dev`; empty does not sync
|
|
13
|
+
required: false
|
|
14
|
+
default: ""
|
|
15
|
+
save-cache:
|
|
16
|
+
description: >-
|
|
17
|
+
whether the job saves the cache of uv; jobs which share a key would race
|
|
18
|
+
for it and warn "Unable to reserve cache"
|
|
19
|
+
required: false
|
|
20
|
+
default: "false"
|
|
21
|
+
runs:
|
|
22
|
+
using: composite
|
|
23
|
+
steps:
|
|
24
|
+
- name: Install uv and set the python version
|
|
25
|
+
# astral-sh/setup-uv publishes no floating major tag beyond v7
|
|
26
|
+
uses: astral-sh/setup-uv@v10.2.0
|
|
27
|
+
with:
|
|
28
|
+
python-version: ${{ inputs.python-version }}
|
|
29
|
+
enable-cache: true
|
|
30
|
+
save-cache: ${{ inputs.save-cache }}
|
|
31
|
+
- name: Put libpython on the library search path (linux only)
|
|
32
|
+
# the extension of libroadrunner links against libpython. The standalone
|
|
33
|
+
# interpreters uv installs link it statically and ship it in their `lib`,
|
|
34
|
+
# where the loader does not look; without it the import of roadrunner
|
|
35
|
+
# fails with `libpython3.14.so.1.0: cannot open shared object file`
|
|
36
|
+
if: runner.os == 'Linux'
|
|
37
|
+
shell: bash
|
|
38
|
+
env:
|
|
39
|
+
PYTHON_VERSION: ${{ inputs.python-version }}
|
|
40
|
+
run: |
|
|
41
|
+
prefix=$(uv run --no-project --python "$PYTHON_VERSION" python -c "import sys; print(sys.base_prefix)")
|
|
42
|
+
echo "LD_LIBRARY_PATH=$prefix/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" >> "$GITHUB_ENV"
|
|
43
|
+
echo "libpython: $(ls "$prefix"/lib/libpython*.so.1.0)"
|
|
44
|
+
- name: Sync the environment
|
|
45
|
+
if: inputs.sync != ''
|
|
46
|
+
shell: bash
|
|
47
|
+
env:
|
|
48
|
+
SYNC: ${{ inputs.sync }}
|
|
49
|
+
# word splitting of the arguments is intended
|
|
50
|
+
run: uv sync $SYNC
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
- [ ] the pull request targets `develop`
|
|
8
8
|
- [ ] tests were added or updated for the change
|
|
9
|
-
- [ ] `tox run-parallel`
|
|
9
|
+
- [ ] `pytest` and `ty check` pass locally, `tox run-parallel` runs the tests on every supported python
|
|
10
10
|
- [ ] `ruff check` and `ruff format` are clean, e.g., via `pre-commit run --all-files`
|
|
11
11
|
- [ ] public functions and classes have type annotations and a docstring
|
|
12
12
|
- [ ] user visible changes are in `release-notes/` and, if needed, in `docs/`
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
name: CI-CD
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
# feature branches are tested through their pull request, tags release
|
|
6
|
+
branches: [develop, main]
|
|
7
|
+
tags: ['*']
|
|
8
|
+
pull_request:
|
|
9
|
+
branches: [develop, main]
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
# least privilege by default, the release job raises what it needs
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
concurrency:
|
|
17
|
+
# a superseded run of a pull request is cancelled. A push is a group of its
|
|
18
|
+
# own: a release waits for the run of its commit on develop (see the job
|
|
19
|
+
# `tested`), and a group keeps one run waiting and cancels it for the next
|
|
20
|
+
# one even without `cancel-in-progress`, so two merges in a row would leave
|
|
21
|
+
# the first commit untested
|
|
22
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || format('{0}-{1}', github.ref, github.sha) }}
|
|
23
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
test:
|
|
27
|
+
# a tag is not tested again, see the job `tested`
|
|
28
|
+
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
29
|
+
runs-on: ${{ matrix.os }}
|
|
30
|
+
timeout-minutes: 45
|
|
31
|
+
strategy:
|
|
32
|
+
fail-fast: false
|
|
33
|
+
matrix:
|
|
34
|
+
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
35
|
+
python-version: ["3.13", "3.14"]
|
|
36
|
+
# linux covers the full range, windows and macos only the newest version
|
|
37
|
+
exclude:
|
|
38
|
+
- os: windows-latest
|
|
39
|
+
python-version: "3.13"
|
|
40
|
+
- os: macos-latest
|
|
41
|
+
python-version: "3.13"
|
|
42
|
+
|
|
43
|
+
steps:
|
|
44
|
+
- uses: actions/checkout@v7
|
|
45
|
+
with:
|
|
46
|
+
persist-credentials: false
|
|
47
|
+
- name: Set up the environment
|
|
48
|
+
# the package is installed as a wheel and not editable, so the tests run
|
|
49
|
+
# against what is published. The key of the cache has the os and the
|
|
50
|
+
# python version but not the job, so every entry of the matrix has a key
|
|
51
|
+
# of its own and saves it; the other jobs on linux with python 3.14 (ty,
|
|
52
|
+
# docs, the suites) share the key of the entry (ubuntu-latest, 3.14) and
|
|
53
|
+
# only restore it
|
|
54
|
+
uses: ./.github/actions/setup
|
|
55
|
+
with:
|
|
56
|
+
python-version: ${{ matrix.python-version }}
|
|
57
|
+
sync: --extra dev --no-editable
|
|
58
|
+
save-cache: "true"
|
|
59
|
+
- name: Test
|
|
60
|
+
# the slowest tests are listed at the end of the log
|
|
61
|
+
run: uv run --no-sync pytest --durations=20
|
|
62
|
+
|
|
63
|
+
tests:
|
|
64
|
+
# the one check the branch protection requires; the names of the matrix
|
|
65
|
+
# jobs change with the matrix, this name does not, see .github/rulesets/
|
|
66
|
+
name: tests
|
|
67
|
+
needs: test
|
|
68
|
+
if: ${{ always() && !startsWith(github.ref, 'refs/tags/') }}
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
timeout-minutes: 5
|
|
71
|
+
steps:
|
|
72
|
+
- name: Check the result of the test matrix
|
|
73
|
+
env:
|
|
74
|
+
RESULT: ${{ needs.test.result }}
|
|
75
|
+
run: |
|
|
76
|
+
echo "test matrix: $RESULT"
|
|
77
|
+
test "$RESULT" = "success"
|
|
78
|
+
|
|
79
|
+
tested:
|
|
80
|
+
# a release does not run the test matrix again. The tag is on a commit of
|
|
81
|
+
# develop, and the push of that commit ran the matrix on exactly this
|
|
82
|
+
# tree; the job waits for that run and fails unless it succeeded, so the
|
|
83
|
+
# tag can be pushed right after the merge of the release
|
|
84
|
+
name: tested on develop
|
|
85
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
86
|
+
runs-on: ubuntu-latest
|
|
87
|
+
timeout-minutes: 60
|
|
88
|
+
permissions:
|
|
89
|
+
actions: read # the runs of this workflow
|
|
90
|
+
contents: read
|
|
91
|
+
steps:
|
|
92
|
+
- uses: actions/checkout@v7
|
|
93
|
+
with:
|
|
94
|
+
fetch-depth: 0
|
|
95
|
+
persist-credentials: false
|
|
96
|
+
- name: Check that the tag is on develop
|
|
97
|
+
run: |
|
|
98
|
+
if ! git merge-base --is-ancestor "$GITHUB_SHA" origin/develop; then
|
|
99
|
+
echo "::error::$GITHUB_REF_NAME is not on develop, a release is tagged on develop"
|
|
100
|
+
exit 1
|
|
101
|
+
fi
|
|
102
|
+
- name: Wait for the run of the commit on develop
|
|
103
|
+
env:
|
|
104
|
+
GH_TOKEN: ${{ github.token }}
|
|
105
|
+
run: |
|
|
106
|
+
api="repos/$GITHUB_REPOSITORY/actions"
|
|
107
|
+
# the run starts with the merge, a tag pushed right after it may be first
|
|
108
|
+
run_id=""
|
|
109
|
+
for attempt in $(seq 1 20); do
|
|
110
|
+
run_id=$(gh api "$api/workflows/ci-cd.yml/runs?branch=develop&event=push&head_sha=$GITHUB_SHA" \
|
|
111
|
+
--jq '.workflow_runs[0].id // empty' || true)
|
|
112
|
+
[ -n "$run_id" ] && break
|
|
113
|
+
sleep 15
|
|
114
|
+
done
|
|
115
|
+
if [ -z "$run_id" ]; then
|
|
116
|
+
echo "::error::no CI-CD run of the push of $GITHUB_SHA to develop"
|
|
117
|
+
exit 1
|
|
118
|
+
fi
|
|
119
|
+
url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$run_id"
|
|
120
|
+
echo "waiting for $url"
|
|
121
|
+
# a failed request answers nothing, which is not `completed` either
|
|
122
|
+
until [ "$(gh api "$api/runs/$run_id" --jq .status || true)" = "completed" ]; do
|
|
123
|
+
sleep 30
|
|
124
|
+
done
|
|
125
|
+
conclusion=$(gh api "$api/runs/$run_id" --jq .conclusion)
|
|
126
|
+
echo "$url: $conclusion"
|
|
127
|
+
if [ "$conclusion" != "success" ]; then
|
|
128
|
+
echo "::error::the tests of $GITHUB_SHA on develop did not pass ($url); once they do, re-run the failed jobs of this release"
|
|
129
|
+
exit 1
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
testsuite:
|
|
133
|
+
# the semantic cases of the SBML Test Suite against the pinned release and
|
|
134
|
+
# the cases of the PEtab SciML test suite against the pinned commit, which
|
|
135
|
+
# the baselines record, as two jobs which run next to each other. A normal
|
|
136
|
+
# run of the tests deselects them: they answer what libroadrunner and the
|
|
137
|
+
# networks support, which a change to sbmlsim rarely moves, and they take
|
|
138
|
+
# longer than the rest together. A release does not go out without them
|
|
139
|
+
name: sbml test suite
|
|
140
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
141
|
+
runs-on: ubuntu-latest
|
|
142
|
+
timeout-minutes: 30
|
|
143
|
+
steps:
|
|
144
|
+
- uses: actions/checkout@v7
|
|
145
|
+
with:
|
|
146
|
+
persist-credentials: false
|
|
147
|
+
- name: Set up the environment
|
|
148
|
+
uses: ./.github/actions/setup
|
|
149
|
+
with:
|
|
150
|
+
python-version: "3.14"
|
|
151
|
+
sync: --extra dev --no-editable
|
|
152
|
+
- name: Download the pinned release
|
|
153
|
+
run: uv run --no-sync python scripts/testsuite.py download
|
|
154
|
+
- name: Run the semantic cases against the pinned release
|
|
155
|
+
run: uv run --no-sync pytest -m testsuite
|
|
156
|
+
|
|
157
|
+
sciml:
|
|
158
|
+
# see the job `testsuite`; a job of its own and not a matrix, the check of
|
|
159
|
+
# a matrix job which is skipped is named by the unevaluated expression
|
|
160
|
+
name: petab sciml test suite
|
|
161
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
162
|
+
runs-on: ubuntu-latest
|
|
163
|
+
timeout-minutes: 30
|
|
164
|
+
steps:
|
|
165
|
+
- uses: actions/checkout@v7
|
|
166
|
+
with:
|
|
167
|
+
persist-credentials: false
|
|
168
|
+
- name: Set up the environment
|
|
169
|
+
uses: ./.github/actions/setup
|
|
170
|
+
with:
|
|
171
|
+
python-version: "3.14"
|
|
172
|
+
sync: --extra dev --no-editable
|
|
173
|
+
- name: Download the pinned commit
|
|
174
|
+
run: uv run --no-sync python scripts/sciml_testsuite.py download
|
|
175
|
+
- name: Run the cases of the PEtab SciML test suite against the pinned commit
|
|
176
|
+
run: uv run --no-sync pytest -m sciml_testsuite tests/sciml
|
|
177
|
+
|
|
178
|
+
petab:
|
|
179
|
+
# see the job `testsuite`
|
|
180
|
+
name: petab test suite
|
|
181
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
182
|
+
runs-on: ubuntu-latest
|
|
183
|
+
timeout-minutes: 30
|
|
184
|
+
steps:
|
|
185
|
+
- uses: actions/checkout@v7
|
|
186
|
+
with:
|
|
187
|
+
persist-credentials: false
|
|
188
|
+
- name: Set up the environment
|
|
189
|
+
uses: ./.github/actions/setup
|
|
190
|
+
with:
|
|
191
|
+
python-version: "3.14"
|
|
192
|
+
sync: --extra dev --no-editable
|
|
193
|
+
- name: Download the pinned commit
|
|
194
|
+
run: uv run --no-sync python scripts/petab_testsuite.py download
|
|
195
|
+
- name: Run the cases of the PEtab test suite against the pinned commit
|
|
196
|
+
run: uv run --no-sync pytest -m petab_testsuite tests/fit
|
|
197
|
+
|
|
198
|
+
submission:
|
|
199
|
+
# the results a submission to the SBML Test Suite Database is made of. A
|
|
200
|
+
# release submits against the newest suite, not against the pinned one.
|
|
201
|
+
# The archive is an attachment of the release and never blocks it
|
|
202
|
+
name: sbml test suite submission
|
|
203
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
204
|
+
runs-on: ubuntu-latest
|
|
205
|
+
timeout-minutes: 20
|
|
206
|
+
continue-on-error: true
|
|
207
|
+
steps:
|
|
208
|
+
- uses: actions/checkout@v7
|
|
209
|
+
with:
|
|
210
|
+
persist-credentials: false
|
|
211
|
+
- name: Set up the environment
|
|
212
|
+
uses: ./.github/actions/setup
|
|
213
|
+
with:
|
|
214
|
+
python-version: "3.14"
|
|
215
|
+
sync: --no-editable
|
|
216
|
+
- name: Run the SBML Test Suite against its newest release
|
|
217
|
+
# the cases run in one process per core
|
|
218
|
+
run: uv run --no-sync python scripts/testsuite.py submission --version latest --output submission
|
|
219
|
+
- name: Upload the submission
|
|
220
|
+
uses: actions/upload-artifact@v7
|
|
221
|
+
with:
|
|
222
|
+
name: submission
|
|
223
|
+
path: submission/*.zip
|
|
224
|
+
if-no-files-found: error
|
|
225
|
+
|
|
226
|
+
release:
|
|
227
|
+
needs: [tested, testsuite, sciml, petab, submission]
|
|
228
|
+
# the submission is an attachment, the release goes out without it
|
|
229
|
+
if: >-
|
|
230
|
+
${{ !cancelled() && startsWith(github.ref, 'refs/tags/')
|
|
231
|
+
&& needs.tested.result == 'success'
|
|
232
|
+
&& needs.testsuite.result == 'success'
|
|
233
|
+
&& needs.sciml.result == 'success'
|
|
234
|
+
&& needs.petab.result == 'success' }}
|
|
235
|
+
runs-on: ubuntu-latest
|
|
236
|
+
timeout-minutes: 15
|
|
237
|
+
environment:
|
|
238
|
+
name: pypi
|
|
239
|
+
url: https://pypi.org/p/sbmlsim
|
|
240
|
+
permissions:
|
|
241
|
+
id-token: write # trusted publishing to PyPI
|
|
242
|
+
contents: write # create the GitHub release
|
|
243
|
+
steps:
|
|
244
|
+
- uses: actions/checkout@v7
|
|
245
|
+
with:
|
|
246
|
+
persist-credentials: false
|
|
247
|
+
- name: Set up uv
|
|
248
|
+
uses: ./.github/actions/setup
|
|
249
|
+
with:
|
|
250
|
+
python-version: "3.14"
|
|
251
|
+
- name: Build package
|
|
252
|
+
run: uvx hatch build
|
|
253
|
+
- name: Check the package
|
|
254
|
+
run: uvx twine check dist/*
|
|
255
|
+
- name: Publish to PyPI
|
|
256
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
257
|
+
with:
|
|
258
|
+
packages-dir: dist
|
|
259
|
+
- name: Download the submission
|
|
260
|
+
# missing when the submission failed, which is no reason to stop here:
|
|
261
|
+
# the package is on PyPI by this point
|
|
262
|
+
continue-on-error: true
|
|
263
|
+
uses: actions/download-artifact@v8
|
|
264
|
+
with:
|
|
265
|
+
name: submission
|
|
266
|
+
path: submission
|
|
267
|
+
- name: Create GitHub release
|
|
268
|
+
uses: softprops/action-gh-release@v3
|
|
269
|
+
with:
|
|
270
|
+
body_path: "release-notes/${{ github.ref_name }}.md"
|
|
271
|
+
files: submission/*.zip
|
|
272
|
+
# the submission may be missing, the notes are the release
|
|
273
|
+
fail_on_unmatched_files: false
|
|
274
|
+
draft: false
|
|
275
|
+
prerelease: false
|
|
276
|
+
|
|
277
|
+
sync-main:
|
|
278
|
+
# main tracks the latest published release, see docs/development.md
|
|
279
|
+
needs: release
|
|
280
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
281
|
+
runs-on: ubuntu-latest
|
|
282
|
+
timeout-minutes: 5
|
|
283
|
+
permissions:
|
|
284
|
+
contents: write # fast-forward main to the released commit
|
|
285
|
+
steps:
|
|
286
|
+
- uses: actions/checkout@v7
|
|
287
|
+
with:
|
|
288
|
+
# a shallow clone cannot be pushed to another branch
|
|
289
|
+
fetch-depth: 0
|
|
290
|
+
- name: Fast-forward main to the release
|
|
291
|
+
# no --force: the push fails loudly if it would not be a fast-forward
|
|
292
|
+
run: git push origin HEAD:main
|
|
@@ -29,34 +29,25 @@ jobs:
|
|
|
29
29
|
persist-credentials: false
|
|
30
30
|
- name: Configure GitHub Pages
|
|
31
31
|
uses: actions/configure-pages@v6
|
|
32
|
-
- name:
|
|
33
|
-
|
|
34
|
-
# standalone interpreters do not put on the library search path
|
|
35
|
-
run: |
|
|
36
|
-
sudo add-apt-repository -y ppa:deadsnakes/ppa
|
|
37
|
-
sudo apt-get update
|
|
38
|
-
sudo apt-get install -y python3.14-dev
|
|
39
|
-
- name: Install uv and set the python version
|
|
40
|
-
uses: astral-sh/setup-uv@v10.2.0
|
|
32
|
+
- name: Set up the environment
|
|
33
|
+
uses: ./.github/actions/setup
|
|
41
34
|
with:
|
|
42
35
|
python-version: "3.14"
|
|
43
|
-
|
|
44
|
-
- name: Install dependencies
|
|
45
|
-
run: uv sync --extra dev
|
|
36
|
+
sync: --extra dev
|
|
46
37
|
- name: Build the documentation
|
|
47
38
|
# the API reference is rendered from the docstrings by mkdocstrings,
|
|
48
39
|
# so the package has to be importable
|
|
49
|
-
run: uv run zensical build --clean
|
|
40
|
+
run: uv run --no-sync zensical build --clean
|
|
50
41
|
- name: Generate the agent facing files
|
|
51
42
|
# llms.txt, llms-full.txt and the markdown of every page
|
|
52
|
-
run: uv run python scripts/llms_txt.py
|
|
43
|
+
run: uv run --no-sync python scripts/llms_txt.py
|
|
53
44
|
- name: Run the SBML Test Suite and write its report
|
|
54
45
|
# the interactive report is generated into the site and not committed,
|
|
55
46
|
# so the published one always describes the code it was built from.
|
|
56
47
|
# Only a build which can be published pays the three minutes: a pull
|
|
57
48
|
# request builds the site to check that it builds, it does not deploy
|
|
58
49
|
if: github.event_name != 'pull_request'
|
|
59
|
-
run: uv run python scripts/testsuite.py report --output site/testsuite/report
|
|
50
|
+
run: uv run --no-sync python scripts/testsuite.py report --output site/testsuite/report
|
|
60
51
|
- name: Upload the site
|
|
61
52
|
uses: actions/upload-pages-artifact@v5
|
|
62
53
|
with:
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
# feature branches are checked through their pull request
|
|
6
|
+
branches: [develop, main]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [develop, main]
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
# a superseded run of a pull request is cancelled, a push is checked on its own
|
|
16
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
|
17
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
ruff:
|
|
21
|
+
# the names of the jobs are the checks the branch protection requires,
|
|
22
|
+
# see .github/rulesets/develop.json
|
|
23
|
+
name: ruff
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
timeout-minutes: 10
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v7
|
|
28
|
+
with:
|
|
29
|
+
persist-credentials: false
|
|
30
|
+
# the ruff version is read from the dev dependencies in pyproject.toml
|
|
31
|
+
- name: Lint
|
|
32
|
+
# astral-sh/ruff-action publishes no floating major tag beyond v3
|
|
33
|
+
uses: astral-sh/ruff-action@v4.1.0
|
|
34
|
+
with:
|
|
35
|
+
args: check --output-format=github
|
|
36
|
+
- name: Format
|
|
37
|
+
uses: astral-sh/ruff-action@v4.1.0
|
|
38
|
+
with:
|
|
39
|
+
args: format --check --diff
|
|
40
|
+
|
|
41
|
+
ty:
|
|
42
|
+
name: ty
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
timeout-minutes: 10
|
|
45
|
+
steps:
|
|
46
|
+
- uses: actions/checkout@v7
|
|
47
|
+
with:
|
|
48
|
+
persist-credentials: false
|
|
49
|
+
- name: Set up the environment
|
|
50
|
+
# ty resolves the imports of `src`, `tests`, `examples` and `scripts`
|
|
51
|
+
# in the environment, the dev extra has all of them; there is no ty
|
|
52
|
+
# action, and an environment is what it would need as well
|
|
53
|
+
uses: ./.github/actions/setup
|
|
54
|
+
with:
|
|
55
|
+
python-version: "3.14"
|
|
56
|
+
sync: --extra dev
|
|
57
|
+
- name: Type check
|
|
58
|
+
run: uv run --no-sync ty check --output-format github
|
|
@@ -27,25 +27,16 @@ jobs:
|
|
|
27
27
|
pull-requests: write # open the pull request
|
|
28
28
|
steps:
|
|
29
29
|
- uses: actions/checkout@v7
|
|
30
|
-
- name:
|
|
31
|
-
|
|
32
|
-
# standalone interpreters do not put on the library search path
|
|
33
|
-
run: |
|
|
34
|
-
sudo add-apt-repository -y ppa:deadsnakes/ppa
|
|
35
|
-
sudo apt-get update
|
|
36
|
-
sudo apt-get install -y python3.14-dev
|
|
37
|
-
- name: Install uv and set the python version
|
|
38
|
-
uses: astral-sh/setup-uv@v10.2.0
|
|
30
|
+
- name: Set up the environment
|
|
31
|
+
uses: ./.github/actions/setup
|
|
39
32
|
with:
|
|
40
33
|
python-version: "3.14"
|
|
41
|
-
|
|
42
|
-
- name: Install dependencies
|
|
43
|
-
run: uv sync --extra dev
|
|
34
|
+
sync: --extra dev
|
|
44
35
|
- name: Compare the pinned release with the newest one
|
|
45
36
|
id: versions
|
|
46
37
|
run: |
|
|
47
|
-
PINNED=$(uv run python -c "from sbmlsim.testsuite.cases import SUITE_VERSION; print(SUITE_VERSION)")
|
|
48
|
-
LATEST=$(uv run python -c "from sbmlsim.testsuite import SemanticSuite; print(SemanticSuite.latest_version())")
|
|
38
|
+
PINNED=$(uv run --no-sync python -c "from sbmlsim.testsuite.cases import SUITE_VERSION; print(SUITE_VERSION)")
|
|
39
|
+
LATEST=$(uv run --no-sync python -c "from sbmlsim.testsuite import SemanticSuite; print(SemanticSuite.latest_version())")
|
|
49
40
|
echo "pinned=$PINNED" >> "$GITHUB_OUTPUT"
|
|
50
41
|
echo "latest=$LATEST" >> "$GITHUB_OUTPUT"
|
|
51
42
|
echo "The pinned release is '$PINNED', the newest is '$LATEST'"
|
|
@@ -65,7 +56,7 @@ jobs:
|
|
|
65
56
|
PY
|
|
66
57
|
# the baseline records the outcome of every case, so it is recorded
|
|
67
58
|
# again for the release which is adopted
|
|
68
|
-
uv run python scripts/testsuite.py baseline
|
|
59
|
+
uv run --no-sync python scripts/testsuite.py baseline
|
|
69
60
|
- name: Open the pull request
|
|
70
61
|
if: steps.versions.outputs.pinned != steps.versions.outputs.latest
|
|
71
62
|
uses: peter-evans/create-pull-request@v8
|
|
@@ -56,7 +56,7 @@ repos:
|
|
|
56
56
|
|
|
57
57
|
- repo: https://github.com/astral-sh/ty-pre-commit
|
|
58
58
|
# ty version.
|
|
59
|
-
rev: v0.0.
|
|
59
|
+
rev: v0.0.85
|
|
60
60
|
hooks:
|
|
61
61
|
# Run the type checker on the whole project (see `[tool.ty]` in pyproject.toml).
|
|
62
62
|
# `--extra dev` syncs the environment with the dev dependencies, so that the
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"upload_type": "software",
|
|
3
|
+
"title": "sbmlsim: SBML simulation made easy",
|
|
4
|
+
"creators": [
|
|
5
|
+
{
|
|
6
|
+
"orcid": "0000-0003-1725-179X",
|
|
7
|
+
"affiliation": "Humboldt-University Berlin, Faculty of Life Science, Institute for Biology, Biology, Berlin; University Lübeck; University Hospital Schleswig-Holstein, Campus Lübeck, First Department of Medicine, Germany",
|
|
8
|
+
"name": "König, Matthias"
|
|
9
|
+
}
|
|
10
|
+
],
|
|
11
|
+
"description": "<p><code>sbmlsim</code> is a collection of python utilities to simplify simulations with <a href=\"https://sbml.org\">SBML</a> models implemented on top of <code><a href=\"https://libroadrunner.org/\">libroadrunner</a></code> and other libraries with source code available from <a href=\"https://github.com/matthiaskoenig/sbmlsim\">https://github.com/matthiaskoenig/sbmlsim</a></p>\n<p>Features include among others<ul><li>simulation experiments, parameter scans and reports</li><li>parameter fitting with profile likelihood and Fisher information</li><li>sensitivity analysis</li><li>PEtab problems, including hybrid PEtab SciML problems</li></ul></p>\n<p>The documentation is available on <a href=\"https://matthiaskoenig.github.io/sbmlsim\">https://matthiaskoenig.github.io/sbmlsim</a></p>\n<p>If you have any questions or issues please <a href=\"https://github.com/matthiaskoenig/sbmlsim/issues\">open an issue</a></p>\n<h2>Funding</h2><p>Matthias König is supported by the Federal Ministry of Education and Research (BMBF, Germany) within the research network Systems Medicine of the Liver (<strong>LiSyM</strong>, grant number 031L0054) and by the German Research Foundation (DFG) within the Research Unit Programme FOR 5151 <strong><a href=\"https://qualiperf.de\">QuaLiPerF</a></strong> (Quantifying Liver Perfusion-Function Relationship in Complex Resection - A Systems Medicine Approach) by grant number 436883643 and by grant number 465194077 (Priority Programme SPP 2311, Subproject SimLivA). Matthias König has received funds from the EOSCsecretariat.eu which has received funding from the European Union's Horizon Programme call H2020-INFRAEOSC-05-2018-2019, grant Agreement number 831644.</p>",
|
|
12
|
+
"access_right": "open",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"modeling",
|
|
16
|
+
"standardization",
|
|
17
|
+
"SBML",
|
|
18
|
+
"PEtab",
|
|
19
|
+
"simulation",
|
|
20
|
+
"parameter fitting",
|
|
21
|
+
"sensitivity analysis"
|
|
22
|
+
],
|
|
23
|
+
"communities": [
|
|
24
|
+
{
|
|
25
|
+
"identifier": "eoscsecretariat"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"grants": [
|
|
29
|
+
{
|
|
30
|
+
"id": "831644"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
@@ -8,8 +8,8 @@ authors:
|
|
|
8
8
|
given-names: "Matthias"
|
|
9
9
|
orcid: "https://orcid.org/0000-0003-1725-179X"
|
|
10
10
|
affiliation: "Humboldt-University Berlin, Faculty of Life Science, Institute for Biology, Biology, Berlin; University Lübeck; University Hospital Schleswig-Holstein, Campus Lübeck, First Department of Medicine, Germany"
|
|
11
|
-
version: "0.8.
|
|
12
|
-
date-released: "2026-10-
|
|
11
|
+
version: "0.8.4"
|
|
12
|
+
date-released: "2026-10-07"
|
|
13
13
|
doi: "10.5281/zenodo.3597770"
|
|
14
14
|
license: MIT
|
|
15
15
|
repository-code: "https://github.com/matthiaskoenig/sbmlsim"
|