sbmlsim 0.7.0__tar.gz → 0.7.2__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.
Files changed (444) hide show
  1. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.bumpversion.toml +1 -1
  2. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/workflows/ci-cd.yml +15 -1
  3. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/workflows/docs.yml +1 -1
  4. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.gitignore +3 -0
  5. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/CITATION.cff +2 -2
  6. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/PKG-INFO +7 -6
  7. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/README.md +6 -5
  8. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/index.md +4 -4
  9. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/plotting.md +3 -3
  10. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/testsuite.md +2 -2
  11. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/experiments/dose_response.py +1 -1
  12. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/model_change.py +1 -1
  13. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/model_sensitivity.py +2 -1
  14. sbmlsim-0.7.2/release-notes/0.7.1.md +10 -0
  15. sbmlsim-0.7.2/release-notes/0.7.2.md +31 -0
  16. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/scripts/testsuite.py +2 -2
  17. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/__init__.py +1 -1
  18. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/experiment/experiment.py +28 -6
  19. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/identifiability.py +1 -1
  20. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/report.py +1 -1
  21. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/plot/plotting.py +209 -67
  22. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/plot/serialization_matplotlib.py +103 -96
  23. sbmlsim-0.7.2/tests/plot/test_plotting.py +280 -0
  24. sbmlsim-0.7.2/tests/plot/test_serialization_matplotlib.py +303 -0
  25. sbmlsim-0.7.2/tests/testsuite/test_report_path.py +54 -0
  26. sbmlsim-0.7.0/src/roadmap.md +0 -2
  27. sbmlsim-0.7.0/tests/plot/test_plotting.py +0 -25
  28. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.claude/settings.json +0 -0
  29. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/CODEOWNERS +0 -0
  30. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/dependabot.yml +0 -0
  31. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/pull_request_template.md +0 -0
  32. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/rulesets/apply.sh +0 -0
  33. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/rulesets/develop.json +0 -0
  34. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/rulesets/main.json +0 -0
  35. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/rulesets/tags.json +0 -0
  36. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/workflows/ruff.yml +0 -0
  37. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/workflows/testsuite-pin.yml +0 -0
  38. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.github/workflows/ty.yml +0 -0
  39. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.pre-commit-config.yaml +0 -0
  40. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.python-version +0 -0
  41. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.ruff.toml +0 -0
  42. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/.zenodo.json +0 -0
  43. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/CLAUDE.md +0 -0
  44. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/LICENSE +0 -0
  45. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/conftest.py +0 -0
  46. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/comparison.diff.md +0 -0
  47. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/console.md +0 -0
  48. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/data.md +0 -0
  49. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/experiment.experiment.md +0 -0
  50. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/experiment.runner.md +0 -0
  51. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.cli.md +0 -0
  52. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.display.md +0 -0
  53. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.fisher.md +0 -0
  54. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.helpers.md +0 -0
  55. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.identifiability.md +0 -0
  56. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.metrics.md +0 -0
  57. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.objects.md +0 -0
  58. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.optimization.md +0 -0
  59. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.options.md +0 -0
  60. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.parameters.md +0 -0
  61. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.petab_omex.md +0 -0
  62. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.petab_v2.export.md +0 -0
  63. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.petab_v2.extension.md +0 -0
  64. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.petab_v2.gaps.md +0 -0
  65. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.petab_v2.observables.md +0 -0
  66. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.petab_v2.reader.md +0 -0
  67. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.petab_v2.symbols.md +0 -0
  68. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.report.md +0 -0
  69. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.result.md +0 -0
  70. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.runner.md +0 -0
  71. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/fit.sampling.md +0 -0
  72. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/index.md +0 -0
  73. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/log.md +0 -0
  74. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/mathml.md +0 -0
  75. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/model.model.md +0 -0
  76. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/model.model_change.md +0 -0
  77. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/model.model_resources.md +0 -0
  78. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/model.model_roadrunner.md +0 -0
  79. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/plot.plotting.md +0 -0
  80. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/plot.serialization_matplotlib.md +0 -0
  81. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/report.experiment_report.md +0 -0
  82. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/result.datagenerator.md +0 -0
  83. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/result.report.md +0 -0
  84. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/result.xresult.md +0 -0
  85. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/sensitivity.analysis.md +0 -0
  86. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/sensitivity.classification.md +0 -0
  87. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/sensitivity.parameters.md +0 -0
  88. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/sensitivity.plots.md +0 -0
  89. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/sensitivity.sensitivity_fast.md +0 -0
  90. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/sensitivity.sensitivity_local.md +0 -0
  91. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/sensitivity.sensitivity_morris.md +0 -0
  92. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/sensitivity.sensitivity_sampling.md +0 -0
  93. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/sensitivity.sensitivity_sobol.md +0 -0
  94. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/serialization.md +0 -0
  95. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/simulation.algorithm.md +0 -0
  96. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/simulation.base.md +0 -0
  97. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/simulation.calculation.md +0 -0
  98. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/simulation.change.md +0 -0
  99. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/simulation.range.md +0 -0
  100. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/simulation.scan.md +0 -0
  101. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/simulation.sensitivity.md +0 -0
  102. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/simulation.simulation.md +0 -0
  103. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/simulation.timecourse.md +0 -0
  104. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/simulator.simulation_serial.md +0 -0
  105. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/task.task.md +0 -0
  106. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/testsuite.cases.md +0 -0
  107. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/testsuite.comparison.md +0 -0
  108. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/testsuite.report.md +0 -0
  109. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/testsuite.runner.md +0 -0
  110. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/units.md +0 -0
  111. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/api/utils.md +0 -0
  112. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/data.md +0 -0
  113. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/development.md +0 -0
  114. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/experiments.md +0 -0
  115. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/fitting.md +0 -0
  116. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/images/favicon/about.txt +0 -0
  117. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/images/favicon/android-chrome-192x192.png +0 -0
  118. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/images/favicon/android-chrome-512x512.png +0 -0
  119. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/images/favicon/apple-touch-icon.png +0 -0
  120. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/images/favicon/favicon-16x16.png +0 -0
  121. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/images/favicon/favicon-32x32.png +0 -0
  122. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/images/favicon/favicon.ico +0 -0
  123. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/images/favicon/sbmlsim-100x100-300dpi.png +0 -0
  124. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/images/favicon/site.webmanifest +0 -0
  125. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/installation.md +0 -0
  126. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/models.md +0 -0
  127. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/petab.md +0 -0
  128. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/references.md +0 -0
  129. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/robots.txt +0 -0
  130. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/scans.md +0 -0
  131. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/sensitivity.md +0 -0
  132. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/simulation.md +0 -0
  133. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/superpowers/plans/2026-09-13-versioned-fit-parameters.md +0 -0
  134. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/superpowers/specs/2026-09-13-versioned-fit-parameters-design.md +0 -0
  135. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/docs/units.md +0 -0
  136. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/README.md +0 -0
  137. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/__init__.py +0 -0
  138. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/__init__.py +0 -0
  139. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/example_1.json +0 -0
  140. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/example_2.json +0 -0
  141. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/example_3.json +0 -0
  142. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/example_4.json +0 -0
  143. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/example_5.json +0 -0
  144. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/example_6.json +0 -0
  145. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/jws/example_1.tsv +0 -0
  146. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/jws/example_2.tsv +0 -0
  147. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/jws/example_3.tsv +0 -0
  148. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/jws/example_4.tsv +0 -0
  149. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/jws/example_5.tsv +0 -0
  150. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff/jws/example_6.tsv +0 -0
  151. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/diff_example.py +0 -0
  152. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/example_comparison.py +0 -0
  153. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/example_copasi.py +0 -0
  154. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/icg_amici_simulation.py +0 -0
  155. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/resources/condition.tsv +0 -0
  156. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/resources/condition_liver.tsv +0 -0
  157. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/resources/icg_events_sd.xml +0 -0
  158. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/resources/icg_liver.xml +0 -0
  159. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/resources/icg_sd.xml +0 -0
  160. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/simulate.py +0 -0
  161. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/simulate_amici.py +0 -0
  162. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/simulate_copasi.py +0 -0
  163. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/comparison/simulate_roadrunner.py +0 -0
  164. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/curve_types/__init__.py +0 -0
  165. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/curve_types/experiment.py +0 -0
  166. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/curve_types/model.py +0 -0
  167. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/datagenerator.py +0 -0
  168. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/demo/__init__.py +0 -0
  169. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/demo/demo.py +0 -0
  170. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/fit_sampling.py +0 -0
  171. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/DoseResponseExperiment.md +0 -0
  172. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/__init__.py +0 -0
  173. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/data/DoseResponse/.DoseResponse_TabEpinephrine.tsv +0 -0
  174. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/data/DoseResponse/.DoseResponse_TabGlucagon.tsv +0 -0
  175. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/data/DoseResponse/.DoseResponse_TabInsulin.tsv +0 -0
  176. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/experiments/__init__.py +0 -0
  177. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/experiments/plotting.py +0 -0
  178. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/glucose.py +0 -0
  179. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/index.md +0 -0
  180. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/model/liver_glucose.html +0 -0
  181. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/glucose/model/liver_glucose.xml +0 -0
  182. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/__init__.py +0 -0
  183. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/data/Beermann1976/.Beermann1976_Fig2.tsv +0 -0
  184. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/data/Beermann1976/.Beermann1976_Fig3.tsv +0 -0
  185. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/data/Beermann1976/.Beermann1976_Tab1A.tsv +0 -0
  186. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/data/Patel1984/.Patel1984_Fig1.tsv +0 -0
  187. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/data/Patel1984/.Patel1984_Fig2.tsv +0 -0
  188. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/data/Patel1984/.Patel1984_Tab4.tsv +0 -0
  189. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/data/Weir1998/.Weir1998_Fig2.tsv +0 -0
  190. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/data/Weir1998/.Weir1998_Fig3.tsv +0 -0
  191. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/data/Weir1998/.Weir1998_Tab4.tsv +0 -0
  192. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/experiments/__init__.py +0 -0
  193. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/experiments/base_experiment.py +0 -0
  194. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/experiments/metadata.py +0 -0
  195. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/experiments/studies/__init__.py +0 -0
  196. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/experiments/studies/beermann1976.py +0 -0
  197. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/experiments/studies/patel1984.py +0 -0
  198. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/experiments/studies/weir1998.py +0 -0
  199. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/fitting/__init__.py +0 -0
  200. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/fitting/fitting.py +0 -0
  201. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/fitting/identifiability.py +0 -0
  202. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/fitting/identifiability_report.py +0 -0
  203. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/fitting/mapping_collections.py +0 -0
  204. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/fitting/parameters.py +0 -0
  205. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/fitting/petab_problem.py +0 -0
  206. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/fitting/run_report.py +0 -0
  207. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/helpers.py +0 -0
  208. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/models/hctz_body_flat.xml +0 -0
  209. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/hctz_fitting/simulations.py +0 -0
  210. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/initial_assignment/__init__.py +0 -0
  211. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/initial_assignment/initial_assignment.py +0 -0
  212. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/initial_assignment/initial_assignment.xml +0 -0
  213. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/interpolation/__init__.py +0 -0
  214. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/interpolation/interpolation.py +0 -0
  215. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/interpolation/interpolation_example.py +0 -0
  216. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/julia/__init__.py +0 -0
  217. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/julia/julia.md +0 -0
  218. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/julia/juliacall_example.py +0 -0
  219. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Boehm_JProteomeRes2014/Boehm_JProteomeRes2014.yaml +0 -0
  220. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Boehm_JProteomeRes2014/README.md +0 -0
  221. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Boehm_JProteomeRes2014/experimentalCondition_Boehm_JProteomeRes2014.tsv +0 -0
  222. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Boehm_JProteomeRes2014/measurementData_Boehm_JProteomeRes2014.tsv +0 -0
  223. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Boehm_JProteomeRes2014/model_Boehm_JProteomeRes2014.xml +0 -0
  224. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Boehm_JProteomeRes2014/observables_Boehm_JProteomeRes2014.tsv +0 -0
  225. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Boehm_JProteomeRes2014/parameters_Boehm_JProteomeRes2014.tsv +0 -0
  226. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Boehm_JProteomeRes2014/visualizationSpecification_Boehm_JProteomeRes2014.tsv +0 -0
  227. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Perelson_Science1996/Perelson_Science1996.yaml +0 -0
  228. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Perelson_Science1996/README.md +0 -0
  229. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Perelson_Science1996/experimentalCondition_Perelson_Science1996.tsv +0 -0
  230. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Perelson_Science1996/measurementData_Perelson_Science1996.tsv +0 -0
  231. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Perelson_Science1996/model_Perelson_Science1996.xml +0 -0
  232. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Perelson_Science1996/observables_Perelson_Science1996.tsv +0 -0
  233. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Perelson_Science1996/parameters_Perelson_Science1996.tsv +0 -0
  234. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/Perelson_Science1996/visualizationSpecification_Perelson_Science1996.tsv +0 -0
  235. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/__init__.py +0 -0
  236. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/petab/benchmark.py +0 -0
  237. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/repressilator/__init__.py +0 -0
  238. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/repressilator/repressilator.py +0 -0
  239. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/repressilator/repressilator_scans.py +0 -0
  240. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/scan.py +0 -0
  241. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/sensitivity/.gitignore +0 -0
  242. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/sensitivity/__init__.py +0 -0
  243. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/sensitivity/sensitivity_example.py +0 -0
  244. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/sensitivity/simple_chain.md +0 -0
  245. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/sensitivity/simple_chain.py +0 -0
  246. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/sensitivity/simple_chain.xml +0 -0
  247. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/timecourse.py +0 -0
  248. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/examples/units.py +0 -0
  249. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/pyproject.toml +0 -0
  250. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.1.10.md +0 -0
  251. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.1.11.md +0 -0
  252. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.1.13.md +0 -0
  253. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.1.14.md +0 -0
  254. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.1.3.md +0 -0
  255. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.1.4.md +0 -0
  256. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.1.6.md +0 -0
  257. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.1.7.md +0 -0
  258. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.1.8.md +0 -0
  259. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.1.9.md +0 -0
  260. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.2.0.md +0 -0
  261. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.2.1.md +0 -0
  262. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.2.2.md +0 -0
  263. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.3.0.md +0 -0
  264. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.4.0.md +0 -0
  265. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.5.0.md +0 -0
  266. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.6.0.md +0 -0
  267. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.6.1.md +0 -0
  268. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/release-notes/0.7.0.md +0 -0
  269. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/scripts/llms_txt.py +0 -0
  270. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/comparison/__init__.py +0 -0
  271. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/comparison/diff.py +0 -0
  272. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/console.py +0 -0
  273. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/data.py +0 -0
  274. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/experiment/__init__.py +0 -0
  275. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/experiment/runner.py +0 -0
  276. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/__init__.py +0 -0
  277. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/cli.py +0 -0
  278. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/display.py +0 -0
  279. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/fisher.py +0 -0
  280. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/helpers.py +0 -0
  281. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/metrics.py +0 -0
  282. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/objects.py +0 -0
  283. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/optimization.py +0 -0
  284. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/options.py +0 -0
  285. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/parameter_mapping.py +0 -0
  286. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/parameters.py +0 -0
  287. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/petab_omex.py +0 -0
  288. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/petab_v2/__init__.py +0 -0
  289. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/petab_v2/export.py +0 -0
  290. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/petab_v2/extension.py +0 -0
  291. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/petab_v2/gaps.py +0 -0
  292. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/petab_v2/observables.py +0 -0
  293. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/petab_v2/reader.py +0 -0
  294. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/petab_v2/symbols.py +0 -0
  295. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/result.py +0 -0
  296. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/runner.py +0 -0
  297. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/fit/sampling.py +0 -0
  298. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/log.py +0 -0
  299. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/mathml.py +0 -0
  300. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/model/__init__.py +0 -0
  301. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/model/model.py +0 -0
  302. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/model/model_change.py +0 -0
  303. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/model/model_resources.py +0 -0
  304. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/model/model_roadrunner.py +0 -0
  305. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/plot/__init__.py +0 -0
  306. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/plot/serialization_plotly.py +0 -0
  307. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/report/__init__.py +0 -0
  308. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/report/experiment_report.py +0 -0
  309. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/report/templates.py +0 -0
  310. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/__init__.py +0 -0
  311. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/models/Koenig_demo_14.xml +0 -0
  312. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/models/midazolam_body_flat.xml +0 -0
  313. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/models/repressilator.xml +0 -0
  314. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/templates/experiment.html +0 -0
  315. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/templates/experiment.md +0 -0
  316. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/templates/fit_report.html +0 -0
  317. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/templates/index.html +0 -0
  318. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/templates/index.md +0 -0
  319. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/templates/index.tex +0 -0
  320. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/templates/report_base.html +0 -0
  321. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/resources/templates/testsuite_report.html +0 -0
  322. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/result/__init__.py +0 -0
  323. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/result/datagenerator.py +0 -0
  324. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/result/report.py +0 -0
  325. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/result/xresult.py +0 -0
  326. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/sensitivity/__init__.py +0 -0
  327. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/sensitivity/analysis.py +0 -0
  328. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/sensitivity/classification.py +0 -0
  329. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/sensitivity/parameters.py +0 -0
  330. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/sensitivity/plots.py +0 -0
  331. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/sensitivity/sensitivity_fast.py +0 -0
  332. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/sensitivity/sensitivity_local.py +0 -0
  333. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/sensitivity/sensitivity_morris.py +0 -0
  334. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/sensitivity/sensitivity_sampling.py +0 -0
  335. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/sensitivity/sensitivity_sobol.py +0 -0
  336. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/serialization.py +0 -0
  337. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulation/__init__.py +0 -0
  338. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulation/algorithm.py +0 -0
  339. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulation/base.py +0 -0
  340. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulation/calculation.py +0 -0
  341. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulation/change.py +0 -0
  342. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulation/range.py +0 -0
  343. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulation/scan.py +0 -0
  344. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulation/sensitivity.py +0 -0
  345. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulation/simulation.py +0 -0
  346. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulation/timecourse.py +0 -0
  347. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulator/__init__.py +0 -0
  348. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/simulator/simulation_serial.py +0 -0
  349. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/task/__init__.py +0 -0
  350. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/task/task.py +0 -0
  351. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/task/task_new.py +0 -0
  352. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/testsuite/__init__.py +0 -0
  353. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/testsuite/cases.py +0 -0
  354. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/testsuite/comparison.py +0 -0
  355. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/testsuite/report.py +0 -0
  356. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/testsuite/runner.py +0 -0
  357. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/units.py +0 -0
  358. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/src/sbmlsim/utils.py +0 -0
  359. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/conftest.py +0 -0
  360. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/numlData1D.xml +0 -0
  361. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/numlData2D.xml +0 -0
  362. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/numlData2D2RC.xml +0 -0
  363. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/oscli.csv +0 -0
  364. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/oscli.tsv +0 -0
  365. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/oscli.xml +0 -0
  366. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/parameter-from-data-csv.xml +0 -0
  367. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/parameters.csv +0 -0
  368. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/reading-numlData1D.xml +0 -0
  369. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/reading-numlData2D.xml +0 -0
  370. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/reading-numlData2DRC.xml +0 -0
  371. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/reading-oscli-csv.xml +0 -0
  372. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/reading-oscli-numl.xml +0 -0
  373. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/data/reading-oscli-tsv.xml +0 -0
  374. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/datasets/Allonen1981/.Allonen1981_Fig3A.tsv +0 -0
  375. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/datasets/Faber1978/.Faber1978_Fig1.tsv +0 -0
  376. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/BioModel1_repressor_activator_oscillations.xml +0 -0
  377. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/BorisEJB.xml +0 -0
  378. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/Koenig_demo_14.xml +0 -0
  379. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/app2sim.xml +0 -0
  380. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/asedml3repeat.xml +0 -0
  381. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/asedmlComplex.xml +0 -0
  382. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/body21_livertoy_flat.xml +0 -0
  383. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/curien.xml +0 -0
  384. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/example1.xml +0 -0
  385. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/icg_body_flat.xml +0 -0
  386. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/lorenz.xml +0 -0
  387. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/midazolam_body_flat.xml +0 -0
  388. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/model1.xml +0 -0
  389. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/oscli.xml +0 -0
  390. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/models/repressilator.xml +0 -0
  391. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/petab/icg_example1/icg.omex +0 -0
  392. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/petab/icg_example1/icg.xml +0 -0
  393. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/petab/icg_example1/icg.yaml +0 -0
  394. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/petab/icg_example1/icg_condition.tsv +0 -0
  395. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/petab/icg_example1/icg_data.tsv +0 -0
  396. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/petab/icg_example1/icg_measurement.tsv +0 -0
  397. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/petab/icg_example1/icg_observable.tsv +0 -0
  398. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/petab/icg_example1/icg_parameter.tsv +0 -0
  399. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/data/testsuite_baseline.json +0 -0
  400. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/examples/test_example_scripts.py +0 -0
  401. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/examples/test_interpolation.py +0 -0
  402. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/experiment/test_experiment_examples.py +0 -0
  403. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/experiment/test_experiment_run.py +0 -0
  404. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/conftest.py +0 -0
  405. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_cli.py +0 -0
  406. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_display.py +0 -0
  407. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_fisher.py +0 -0
  408. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_fit.py +0 -0
  409. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_helpers.py +0 -0
  410. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_identifiability.py +0 -0
  411. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_mapping_kinds.py +0 -0
  412. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_metrics.py +0 -0
  413. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_objects.py +0 -0
  414. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_optimization_result.py +0 -0
  415. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_parameter_mapping.py +0 -0
  416. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_parameter_scale.py +0 -0
  417. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_parameter_sets.py +0 -0
  418. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_petab_omex.py +0 -0
  419. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_petab_v2.py +0 -0
  420. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_petab_v2_dosing.py +0 -0
  421. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_petab_v2_symbols.py +0 -0
  422. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_report.py +0 -0
  423. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/fit/test_robustness.py +0 -0
  424. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/models/test_biomodels.py +0 -0
  425. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/report/test_experiment_report.py +0 -0
  426. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/result/test_datagenerator.py +0 -0
  427. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/sensitivity/test_analysis.py +0 -0
  428. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/sensitivity/test_classification.py +0 -0
  429. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/sensitivity/test_parameters.py +0 -0
  430. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/sensitivity/test_sensitivity_example.py +0 -0
  431. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/simulation/test_algorithm.py +0 -0
  432. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/simulation/test_scan.py +0 -0
  433. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/simulation/test_simulation.py +0 -0
  434. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/test_data.py +0 -0
  435. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/test_mathml.py +0 -0
  436. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/test_model_change.py +0 -0
  437. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/test_sensitivity.py +0 -0
  438. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/test_units.py +0 -0
  439. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/testsuite/__init__.py +0 -0
  440. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/testsuite/conftest.py +0 -0
  441. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/testsuite/test_cases.py +0 -0
  442. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tests/testsuite/test_semantic.py +0 -0
  443. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/tox.ini +0 -0
  444. {sbmlsim-0.7.0 → sbmlsim-0.7.2}/zensical.toml +0 -0
@@ -1,5 +1,5 @@
1
1
  [tool.bumpversion]
2
- current_version = "0.7.0"
2
+ current_version = "0.7.2"
3
3
  commit = true
4
4
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
5
5
  serialize = ["{major}.{minor}.{patch}"]
@@ -120,6 +120,14 @@ jobs:
120
120
  - uses: actions/checkout@v7
121
121
  with:
122
122
  persist-credentials: false
123
+ - name: Install the python dev files
124
+ # the extension of libroadrunner links against libpython, which the
125
+ # standalone interpreters do not put on the library search path; the
126
+ # submission below imports roadrunner
127
+ run: |
128
+ sudo add-apt-repository -y ppa:deadsnakes/ppa
129
+ sudo apt-get update
130
+ sudo apt-get install -y python3.14-dev
123
131
  - name: Install uv
124
132
  uses: astral-sh/setup-uv@v10.0.1
125
133
  with:
@@ -135,7 +143,11 @@ jobs:
135
143
  packages-dir: dist
136
144
  - name: Run the SBML Test Suite against its newest release
137
145
  # the results a submission to the SBML Test Suite Database is made of.
138
- # A release submits against the newest suite, not against the pinned one
146
+ # A release submits against the newest suite, not against the pinned one.
147
+ # The archive is an attachment of the release and never blocks it: the
148
+ # package is on PyPI by this point and a failure here would otherwise
149
+ # leave the release half made, without its notes, as it did for 0.7.0
150
+ continue-on-error: true
139
151
  run: |
140
152
  uv sync --extra dev
141
153
  uv run python scripts/testsuite.py submission --version latest --output submission
@@ -144,6 +156,8 @@ jobs:
144
156
  with:
145
157
  body_path: "release-notes/${{ github.ref_name }}.md"
146
158
  files: submission/*.zip
159
+ # the submission above may have been skipped, the notes are the release
160
+ fail_on_unmatched_files: false
147
161
  draft: false
148
162
  prerelease: false
149
163
 
@@ -56,7 +56,7 @@ jobs:
56
56
  # Only a build which can be published pays the three minutes: a pull
57
57
  # request builds the site to check that it builds, it does not deploy
58
58
  if: github.event_name != 'pull_request'
59
- run: uv run python scripts/testsuite.py report --output site/testsuite
59
+ run: uv run python scripts/testsuite.py report --output site/testsuite/report
60
60
  - name: Upload the site
61
61
  uses: actions/upload-pages-artifact@v5
62
62
  with:
@@ -37,3 +37,6 @@ examples/**/_results/
37
37
  .vscode/
38
38
  *~
39
39
  .DS_Store
40
+
41
+ # personal notes next to the sources, never part of the library
42
+ /src/roadmap.md
@@ -8,9 +8,9 @@ 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.7.0"
11
+ version: "0.7.2"
12
12
  date-released: "2026-02-01"
13
- doi: "10.5281/zenodo.597149"
13
+ doi: "10.5281/zenodo.3597770"
14
14
  license: MIT
15
15
  repository-code: "https://github.com/matthiaskoenig/sbmlsim"
16
16
  url: "https://matthiaskoenig.github.io/sbmlsim"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sbmlsim
3
- Version: 0.7.0
3
+ Version: 0.7.2
4
4
  Summary: sbmlsim are python utilities for the simulation of SBML models.
5
5
  Project-URL: Homepage, https://matthiaskoenig.github.io/sbmlsim
6
6
  Project-URL: Documentation, https://matthiaskoenig.github.io/sbmlsim
@@ -61,7 +61,7 @@ Description-Content-Type: text/markdown
61
61
  [![Version](https://img.shields.io/pypi/v/sbmlsim.svg)](https://pypi.org/project/sbmlsim/)
62
62
  [![Python Versions](https://img.shields.io/pypi/pyversions/sbmlsim.svg)](https://pypi.org/project/sbmlsim/)
63
63
  [![MIT License](https://img.shields.io/pypi/l/sbmlsim.svg)](https://opensource.org/licenses/MIT)
64
- [![DOI](https://zenodo.org/badge/55952847.svg)](https://zenodo.org/badge/latestdoi/55952847)
64
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3597770.svg)](https://doi.org/10.5281/zenodo.3597770)
65
65
 
66
66
  `sbmlsim` is a collection of python utilities for the simulation of models in the [Systems Biology Markup Language](https://sbml.org) (SBML), built on [libroadrunner](https://libroadrunner.org).
67
67
 
@@ -78,11 +78,11 @@ The documentation is available at [https://matthiaskoenig.github.io/sbmlsim](htt
78
78
  If you have any questions or issues please [open an issue](https://github.com/matthiaskoenig/sbmlsim/issues).
79
79
 
80
80
  ## How to cite
81
- [![DOI](https://zenodo.org/badge/55952847.svg)](https://zenodo.org/badge/latestdoi/55952847)
81
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3597770.svg)](https://doi.org/10.5281/zenodo.3597770)
82
82
 
83
- If you use `sbmlsim` please cite the archived software on [Zenodo](https://zenodo.org/badge/latestdoi/55952847):
83
+ If you use `sbmlsim` please cite the archived software on [Zenodo](https://doi.org/10.5281/zenodo.3597770):
84
84
 
85
- > König, M. (2026). *sbmlsim: SBML simulation made easy* (Version 0.6.0) [Computer software]. Zenodo. https://zenodo.org/badge/latestdoi/55952847
85
+ > König, M. (2026). *sbmlsim: SBML simulation made easy* (Version 0.6.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22653603
86
86
 
87
87
  ```bibtex
88
88
  @software{konig_sbmlsim,
@@ -92,7 +92,8 @@ If you use `sbmlsim` please cite the archived software on [Zenodo](https://zenod
92
92
  month = sep,
93
93
  version = {0.6.0},
94
94
  publisher = {Zenodo},
95
- url = {https://zenodo.org/badge/latestdoi/55952847},
95
+ doi = {10.5281/zenodo.22653603},
96
+ url = {https://doi.org/10.5281/zenodo.22653603},
96
97
  }
97
98
  ```
98
99
 
@@ -6,7 +6,7 @@
6
6
  [![Version](https://img.shields.io/pypi/v/sbmlsim.svg)](https://pypi.org/project/sbmlsim/)
7
7
  [![Python Versions](https://img.shields.io/pypi/pyversions/sbmlsim.svg)](https://pypi.org/project/sbmlsim/)
8
8
  [![MIT License](https://img.shields.io/pypi/l/sbmlsim.svg)](https://opensource.org/licenses/MIT)
9
- [![DOI](https://zenodo.org/badge/55952847.svg)](https://zenodo.org/badge/latestdoi/55952847)
9
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3597770.svg)](https://doi.org/10.5281/zenodo.3597770)
10
10
 
11
11
  `sbmlsim` is a collection of python utilities for the simulation of models in the [Systems Biology Markup Language](https://sbml.org) (SBML), built on [libroadrunner](https://libroadrunner.org).
12
12
 
@@ -23,11 +23,11 @@ The documentation is available at [https://matthiaskoenig.github.io/sbmlsim](htt
23
23
  If you have any questions or issues please [open an issue](https://github.com/matthiaskoenig/sbmlsim/issues).
24
24
 
25
25
  ## How to cite
26
- [![DOI](https://zenodo.org/badge/55952847.svg)](https://zenodo.org/badge/latestdoi/55952847)
26
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3597770.svg)](https://doi.org/10.5281/zenodo.3597770)
27
27
 
28
- If you use `sbmlsim` please cite the archived software on [Zenodo](https://zenodo.org/badge/latestdoi/55952847):
28
+ If you use `sbmlsim` please cite the archived software on [Zenodo](https://doi.org/10.5281/zenodo.3597770):
29
29
 
30
- > König, M. (2026). *sbmlsim: SBML simulation made easy* (Version 0.6.0) [Computer software]. Zenodo. https://zenodo.org/badge/latestdoi/55952847
30
+ > König, M. (2026). *sbmlsim: SBML simulation made easy* (Version 0.6.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22653603
31
31
 
32
32
  ```bibtex
33
33
  @software{konig_sbmlsim,
@@ -37,7 +37,8 @@ If you use `sbmlsim` please cite the archived software on [Zenodo](https://zenod
37
37
  month = sep,
38
38
  version = {0.6.0},
39
39
  publisher = {Zenodo},
40
- url = {https://zenodo.org/badge/latestdoi/55952847},
40
+ doi = {10.5281/zenodo.22653603},
41
+ url = {https://doi.org/10.5281/zenodo.22653603},
41
42
  }
42
43
  ```
43
44
 
@@ -1,7 +1,7 @@
1
1
  ![](images/favicon/sbmlsim-100x100-300dpi.png)
2
2
 
3
3
  # sbmlsim: SBML simulation made easy
4
- [![GitHub Actions CI/CD Status](https://github.com/matthiaskoenig/sbmlsim/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/matthiaskoenig/sbmlsim/actions/workflows/ci-cd.yml) [![Documentation](https://img.shields.io/badge/docs-sbmlsim-3f51b5.svg)](https://matthiaskoenig.github.io/sbmlsim) [![Version](https://img.shields.io/pypi/v/sbmlsim.svg)](https://pypi.org/project/sbmlsim/) [![Python Versions](https://img.shields.io/pypi/pyversions/sbmlsim.svg)](https://pypi.org/project/sbmlsim/) [![MIT License](https://img.shields.io/pypi/l/sbmlsim.svg)](https://opensource.org/licenses/MIT) [![DOI](https://zenodo.org/badge/55952847.svg)](https://zenodo.org/badge/latestdoi/55952847)
4
+ [![GitHub Actions CI/CD Status](https://github.com/matthiaskoenig/sbmlsim/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/matthiaskoenig/sbmlsim/actions/workflows/ci-cd.yml) [![Documentation](https://img.shields.io/badge/docs-sbmlsim-3f51b5.svg)](https://matthiaskoenig.github.io/sbmlsim) [![Version](https://img.shields.io/pypi/v/sbmlsim.svg)](https://pypi.org/project/sbmlsim/) [![Python Versions](https://img.shields.io/pypi/pyversions/sbmlsim.svg)](https://pypi.org/project/sbmlsim/) [![MIT License](https://img.shields.io/pypi/l/sbmlsim.svg)](https://opensource.org/licenses/MIT) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3597770.svg)](https://doi.org/10.5281/zenodo.3597770)
5
5
 
6
6
  `sbmlsim` is a collection of python utilities for the simulation of models in the [Systems Biology Markup Language](https://sbml.org) (SBML), built on [libroadrunner](https://libroadrunner.org). The source code is available from [https://github.com/matthiaskoenig/sbmlsim](https://github.com/matthiaskoenig/sbmlsim).
7
7
 
@@ -51,11 +51,11 @@ Continue with [Installation](installation.md) and the [timecourse simulation gui
51
51
 
52
52
  ## How to cite
53
53
 
54
- [![DOI](https://zenodo.org/badge/55952847.svg)](https://zenodo.org/badge/latestdoi/55952847)
54
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3597770.svg)](https://doi.org/10.5281/zenodo.3597770)
55
55
 
56
- If you use `sbmlsim` please cite the archived software on [Zenodo](https://zenodo.org/badge/latestdoi/55952847):
56
+ If you use `sbmlsim` please cite the archived software on [Zenodo](https://doi.org/10.5281/zenodo.3597770):
57
57
 
58
- > König, M. (2026). *sbmlsim: SBML simulation made easy* [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.597149
58
+ > König, M. (2026). *sbmlsim: SBML simulation made easy* (Version 0.6.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22653603
59
59
 
60
60
  ## License
61
61
 
@@ -1,6 +1,6 @@
1
1
  # Plots and reports
2
2
 
3
- Figures of a simulation experiment are described independent of the plotting backend: a `Figure` holds `Plot` panels, a plot has axes and `Curve` objects, and a curve references `Data` with a `Style`. The description is serialized with the experiment and exported to SED-ML; matplotlib renders it.
3
+ Figures of a simulation experiment are described independent of the plotting backend: a `Figure` holds `Plot` panels, a plot has axes and `Curve` objects, and a curve references `Data` with a `Style`. The description is serialized with the experiment, and the format chooses what renders it: matplotlib draws the static images, plotly the interactive pages.
4
4
 
5
5
  ## Figures and plots
6
6
 
@@ -21,7 +21,7 @@ plots[1].set_xaxis("[X]", unit="dimensionless")
21
21
  print(fig, len(plots))
22
22
  ```
23
23
 
24
- An `Axis` has a label and a unit, which together form the axis label, a `scale` (`linear` or `log`), `min`, `max`, `grid` and visibility flags. The data plotted on an axis are converted to its unit, see [Units](units.md).
24
+ An `Axis` has a label and a unit, which together form the axis label `name`, a `scale` (`linear` or `log`), `min`, `max`, `grid` and visibility flags. `name` follows both parts, i.e. `axis.unit = "week"` updates the label a figure renders; setting `name` overrides them and setting it to `None` hands the axis back to its label and its unit. The data plotted on an axis are converted to its unit, see [Units](units.md).
25
25
 
26
26
  ## Curves
27
27
 
@@ -76,7 +76,7 @@ plots[0].curve(
76
76
  print(style)
77
77
  ```
78
78
 
79
- Colors are `ColorType` objects, created from matplotlib color names or hex strings, which are serialized to the `#RRGGBBAA` colors of SED-ML.
79
+ Colors are `ColorType` objects, created from matplotlib color names or hex strings and normalized to `#RRGGBBAA`.
80
80
 
81
81
  ## Rendering
82
82
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  The [SBML Test Suite](https://github.com/sbmlteam/sbml-test-suite) is the conformance suite of SBML. Every semantic case is a model, a settings file which says how to simulate it and a CSV with the results a correct simulator produces, and the tags of a case say which parts of SBML it exercises. Running it answers what `sbmlsim`, i.e. libroadrunner, supports, and the results are what a submission to the SBML Test Suite Database is made of.
4
4
 
5
- [**The report of the current run**](testsuite/index.html) is generated with the documentation, so it describes the code of the `develop` branch.
5
+ [**The report of the current run**](testsuite/report/index.html) is generated with the documentation, so it describes the code of the `develop` branch.
6
6
 
7
7
  ## What is run
8
8
 
@@ -29,7 +29,7 @@ A case which does not pass does so in one of four ways, and the report separates
29
29
  uv run python scripts/testsuite.py download
30
30
 
31
31
  # run the cases and write the interactive report
32
- uv run python scripts/testsuite.py report --output site/testsuite
32
+ uv run python scripts/testsuite.py report --output site/testsuite/report
33
33
 
34
34
  # the archive which is submitted to the SBML Test Suite Database
35
35
  uv run python scripts/testsuite.py submission --output dist
@@ -3,12 +3,12 @@ from pathlib import Path
3
3
  import numpy as np
4
4
  import pandas as pd
5
5
  import xarray as xr
6
+ from matplotlib import pyplot as plt
6
7
  from matplotlib.pyplot import Figure
7
8
 
8
9
  from sbmlsim.data import Data, DataSet, load_pkdb_dataframe
9
10
  from sbmlsim.experiment import SimulationExperiment
10
11
  from sbmlsim.model import AbstractModel
11
- from sbmlsim.plot.serialization_matplotlib import plt
12
12
  from sbmlsim.result import XResult
13
13
  from sbmlsim.simulation import Dimension, ScanSim, Timecourse, TimecourseSim
14
14
  from sbmlsim.task import Task
@@ -5,9 +5,9 @@ For instance clamping species to given formulas.
5
5
  """
6
6
 
7
7
  import pandas as pd
8
+ from matplotlib import pyplot as plt
8
9
 
9
10
  from sbmlsim.model import ModelChange, RoadrunnerSBMLModel
10
- from sbmlsim.plot.serialization_matplotlib import plt
11
11
  from sbmlsim.resources import REPRESSILATOR_SBML
12
12
  from sbmlsim.result import XResult
13
13
  from sbmlsim.simulation import Timecourse, TimecourseSim
@@ -2,7 +2,8 @@
2
2
  Example shows basic model simulations and plotting.
3
3
  """
4
4
 
5
- from sbmlsim.plot.serialization_matplotlib import plt
5
+ from matplotlib import pyplot as plt
6
+
6
7
  from sbmlsim.resources import REPRESSILATOR_SBML
7
8
  from sbmlsim.result import XResult
8
9
  from sbmlsim.simulation import Timecourse, TimecourseSim
@@ -0,0 +1,10 @@
1
+ # Release notes for sbmlsim 0.7.1
2
+ ![sbmlsim](https://github.com/matthiaskoenig/sbmlsim/raw/develop/docs/images/favicon/sbmlsim-100x100-300dpi.png)
3
+
4
+ A patch release of the fixes which 0.7.0 surfaced: the page of the SBML Test Suite in the documentation was replaced by the report it links, the release workflow could not build the submission it attaches, and a file which is not part of the library was published with the sources.
5
+
6
+ ## Fixes
7
+
8
+ - **the documentation of the SBML Test Suite is a page again.** `zensical` renders `docs/testsuite.md` into `site/testsuite/index.html` and the documentation workflow wrote the interactive report to `site/testsuite`, so the report replaced the page which describes it: [SBML Test Suite](https://matthiaskoenig.github.io/sbmlsim/testsuite/) served the report without the theme, without the navigation and without the search of the documentation, and the page itself was unreachable. The report is written to `site/testsuite/report` now and the page links it there, i.e. it is at [SBML Test Suite / report](https://matthiaskoenig.github.io/sbmlsim/testsuite/report/). The link of a page is resolved against its source, which is why it carries the `testsuite/` of the page itself; `tests/testsuite/test_report_path.py` pins the two paths against each other, since a report at the address of its documentation renders perfectly well and only the page is missing
9
+ - **the release workflow builds the submission it attaches.** The extension of libroadrunner links against libpython, which the standalone interpreters do not put on the library search path, so the `test` and the `sbml test suite` jobs install `python<version>-dev` first. The `release` job did not, although the submission it writes imports roadrunner, and it died with `ImportError: libpython3.14.so.1.0` on the tag of 0.7.0, after the package was published and before the GitHub release was created. The archive of the submission is an attachment and is `continue-on-error` now, so a failure to produce it costs the release its attachment and not its notes
10
+ - **`src/roadmap.md` is not part of the repository.** Personal notes next to the sources were committed by accident and are part of the sdist of 0.7.0 on PyPI, which cannot be changed; the wheel never carried them, since it is built from `src/sbmlsim`. The file is out of the repository and `.gitignore` keeps it out
@@ -0,0 +1,31 @@
1
+ # Release notes for sbmlsim 0.7.2
2
+ ![sbmlsim](https://github.com/matthiaskoenig/sbmlsim/raw/develop/docs/images/favicon/sbmlsim-100x100-300dpi.png)
3
+
4
+ A patch release of the plotting: the axis labels of a figure, an inspection of the figure model and of its matplotlib rendering, and the citation.
5
+
6
+ ## Fixes
7
+
8
+ - **the axis label follows the label and the unit** ([#167](https://github.com/matthiaskoenig/sbmlsim/issues/167)). `Axis.name` is the text a figure renders and it was computed once, in the constructor, so `axis.unit = "week"` or `axis.label = "duration"` left the old label on the plot. `label`, `unit` and `name` are properties now and `name` is derived from the other two, so a change of either is reflected; `name` is still the complete axis label and overrides them, and setting it to `None` hands the axis back to its label and its unit. A copied axis keeps that distinction, i.e. a derived label stays derived instead of being pinned to the text it had when it was copied
9
+ - **an axis without a unit is not labelled `[None]`.** `Axis("time")` rendered `time [None]` and `Axis(unit="week")` rendered `None [week]`, since the part which was not given was formatted into the label anyway. A part which is missing is left out now, i.e. `time` and `[week]`, and a `dimensionless` unit is written as `-` as before
10
+ - **copying an axis keeps its `reverse` flag.** `Axis.__copy__` did not pass it, so a plot which was copied, i.e. every plot of `Figure.add_plots` and of `create_plots`, lost the flag which inverts the axis
11
+ - **the spines of a missing axis were the spines of the other one.** A plot without an x axis hid the left and the right spine, i.e. the sides of the y axis, and kept the line of the axis it was hiding; they are also hidden on the panel itself rather than on whatever the styling loop before them had left over
12
+ - **`Axis.reverse` did nothing unless both bounds were set.** It swapped `min` and `max` instead of inverting the axis, so a reversed axis with only a lower bound assigned `None`. The bounds are the bounds and `reverse` is the direction they are drawn in
13
+ - **`Style.resolve_style` rewrote the style it derives from.** It returned the base style itself and assigned onto it, so resolving one derived style changed the base and every other style sharing it; and it looked the inherited attributes up under the camel case names of SED-ML, which no field of `Line`, `Marker` or `Fill` ever had, so the line type, the marker type and its edge, and the second fill colour were never inherited at all
14
+ - `Style.__copy__` dropped `base_style` and `Plot.__copy__` dropped `yaxis_right`
15
+ - **a plot knows its figure.** A plot resolves its data through its figure and only `add_plots` associated the two, so `plot.figure` and `plot.experiment` raised for every plot of `Figure.from_plots` or of `add_subplot`
16
+ - **`:` is the dotted linestyle of matplotlib.** The mapping carried the marker `.` in its place, so the canonical spelling raised a `KeyError`; the aliases matplotlib accepts for a shape the model has are understood, and a shape it cannot express raises a `ValueError` which names what it can
17
+ - **settings which were never rendered.** `Plot.facecolor` was built, defaulted and read by no serializer, and the `capsize` of a curve was defaulted, dropped by `Style.from_mpl_kwargs` and merged from an empty dictionary, so no error bar ever had a cap
18
+ - **code which could not run:** `interp`, `Figure._area_interpolation_points`, and the branches for an axis which is `None`, which the fallback to an empty `Axis` made unreachable together with the `ValueError` about a plot with curves and no axes
19
+ - `yaxis_right` is type checked like the other two axes, the span messages of `Figure.add_subplot` print the number they test, and `Figure.from_plots` takes the optional experiment `Figure.__init__` takes
20
+ - the Zenodo badge and the citation of the README, the documentation index and `CITATION.cff` carried the GitHub repository id and the concept DOI of sbmlutils, so every Zenodo link of sbmlsim resolved to the sbmlutils archive; they use the sbmlsim concept DOI `10.5281/zenodo.3597770` now ([#206](https://github.com/matthiaskoenig/sbmlsim/pull/206))
21
+
22
+ ## Plotting
23
+
24
+ - **the rendering does not go through the global state of `pyplot`.** `plt.figure()` keeps every figure it creates in a global registry until someone closes it, so a library which renders many leaks them and matplotlib warns from the twentieth on, while a fit report draws about seventy. The serializer creates the figure itself, as the matplotlib documentation asks of a library; showing a figure is the one thing which needs a manager and gets one there
25
+ - **a curve without error data is drawn with `plot`** and not with `errorbar`, which builds the containers of the bars whether or not there are any: 8.13 ms to 7.70 ms for a panel of ten curves, and 0.278 ms to 0.120 ms for the draw call itself, the rest being the resolution of the data and the conversion of its units
26
+ - `ticks_visible` hides the tick labels with `tick_params`, which is correct for any locator and which an empty list of tick labels is not; a spine which is not drawn is hidden rather than painted in the colour of the figure, which only worked while the panel had that colour; a curve kept out of the legend is labelled `_nolegend_`, which is what matplotlib documents; and the grid of the figure comes from `add_gridspec`
27
+ - `legend_position` was read for a plot with one y axis only; a plot with a right y axis puts the curves of both axes into one legend when the legend is outside, since two of them would sit on top of each other
28
+
29
+ ## Documentation
30
+
31
+ - [Plots and reports](https://matthiaskoenig.github.io/sbmlsim/plotting/) no longer says that a figure is exported to SED-ML, which was removed in 0.7.0, and names both backends rather than matplotlib alone; the axis label and what follows what is described where the axis is
@@ -9,7 +9,7 @@ the command line around `sbmlsim.testsuite`:
9
9
  uv run python scripts/testsuite.py download
10
10
 
11
11
  # run the cases and write the interactive report
12
- uv run python scripts/testsuite.py report --output site/testsuite
12
+ uv run python scripts/testsuite.py report --output site/testsuite/report
13
13
 
14
14
  # refresh the expected outcomes after a change which fixes or breaks cases
15
15
  uv run python scripts/testsuite.py baseline
@@ -191,7 +191,7 @@ def main(argv: list[str] | None = None) -> int:
191
191
  "-o",
192
192
  "--output",
193
193
  type=Path,
194
- default=Path("site") / "testsuite",
194
+ default=Path("site") / "testsuite" / "report",
195
195
  help="directory of the report or of the submission archive",
196
196
  )
197
197
  options = parser.parse_args(argv)
@@ -3,7 +3,7 @@
3
3
  from pathlib import Path
4
4
 
5
5
  __author__ = "Matthias Koenig"
6
- __version__ = "0.7.0"
6
+ __version__ = "0.7.2"
7
7
 
8
8
 
9
9
  BASE_PATH = Path(__file__).parent
@@ -9,6 +9,8 @@ from copy import deepcopy
9
9
  from dataclasses import dataclass
10
10
  from pathlib import Path
11
11
 
12
+ from matplotlib import pyplot as plt
13
+
12
14
  from sbmlsim.data import Data, DataSet
13
15
  from sbmlsim.fit import FitMapping
14
16
  from sbmlsim.fit.objects import FitDataInitialized
@@ -17,7 +19,6 @@ from sbmlsim.plot import Figure
17
19
  from sbmlsim.plot.serialization_matplotlib import (
18
20
  FigureMPL,
19
21
  MatplotlibFigureSerializer,
20
- plt,
21
22
  )
22
23
  from sbmlsim.result import XResult
23
24
  from sbmlsim.serialization import ObjectJSONEncoder
@@ -644,10 +645,22 @@ class SimulationExperiment:
644
645
 
645
646
  @timeit
646
647
  def show_mpl_figures(self, mpl_figures: dict[str, FigureMPL]) -> None:
647
- """Show matplotlib figures."""
648
+ """Show matplotlib figures.
649
+
650
+ The figures of the serializer are created without `pyplot`, so that
651
+ rendering does not fill its global registry; a figure it does not
652
+ manage cannot show itself. Showing is the one place which needs the
653
+ state machine, so a figure gets a manager here and only here.
654
+
655
+ Args:
656
+ mpl_figures: the figures to show.
657
+ """
648
658
  for _, fig_mpl in mpl_figures.items():
649
- # see https://stackoverflow.com/questions/23141452/difference-between-plt-draw-and-plt-show-in-matplotlib/23141491#23141491
650
- # fig_mpl.draw(renderer=)
659
+ if fig_mpl.canvas.manager is None:
660
+ manager = plt.figure().canvas.manager
661
+ if manager is not None:
662
+ manager.canvas.figure = fig_mpl
663
+ fig_mpl.set_canvas(manager.canvas)
651
664
  fig_mpl.show()
652
665
 
653
666
  @timeit
@@ -703,8 +716,17 @@ class SimulationExperiment:
703
716
  return figures_to_html(self, results_path)
704
717
 
705
718
  @classmethod
706
- def close_mpl_figures(cls, mpl_figures: dict[str, FigureMPL]):
707
- """Close matplotlib figures."""
719
+ def close_mpl_figures(cls, mpl_figures: dict[str, FigureMPL]) -> None:
720
+ """Close matplotlib figures.
721
+
722
+ A figure of the serializer is not in the registry of `pyplot` and is
723
+ released when nothing refers to it any more, for which this is a no-op.
724
+ A figure of `figures_mpl()` may well come from `pyplot`, and that one
725
+ is closed here.
726
+
727
+ Args:
728
+ mpl_figures: the figures to close.
729
+ """
708
730
  for _, fig_mpl in mpl_figures.items():
709
731
  plt.close(fig_mpl)
710
732
 
@@ -105,6 +105,7 @@ from typing import Any
105
105
  import numpy as np
106
106
  import pandas as pd
107
107
  import scipy.optimize
108
+ from matplotlib import pyplot as plt
108
109
  from matplotlib.axes import Axes
109
110
  from scipy.stats import chi2
110
111
 
@@ -113,7 +114,6 @@ from sbmlsim.fit.objects import FitParameter
113
114
  from sbmlsim.fit.optimization import FitTimeout, OptimizationProblem
114
115
  from sbmlsim.fit.options import FitSettings
115
116
  from sbmlsim.fit.parameters import ParameterSet
116
- from sbmlsim.plot.serialization_matplotlib import plt
117
117
 
118
118
  logger = logging.getLogger(__name__)
119
119
 
@@ -25,6 +25,7 @@ from typing import Any, ClassVar
25
25
  import matplotlib
26
26
  import numpy as np
27
27
  import pandas as pd
28
+ from matplotlib import pyplot as plt
28
29
  from matplotlib.axes import Axes
29
30
  from matplotlib.figure import Figure
30
31
  from matplotlib.lines import Line2D
@@ -40,7 +41,6 @@ from sbmlsim.fit.options import FitSettings
40
41
  from sbmlsim.fit.parameter_mapping import has_renamed_targets
41
42
  from sbmlsim.fit.parameters import ParameterSet, ParameterSets
42
43
  from sbmlsim.fit.result import OptimizationResult, bound_warnings
43
- from sbmlsim.plot.serialization_matplotlib import plt
44
44
  from sbmlsim.report.templates import template_environment
45
45
 
46
46
  logger = logging.getLogger(__name__)