physioblocks 1.1.0__tar.gz → 1.1.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 (223) hide show
  1. {physioblocks-1.1.0 → physioblocks-1.1.2}/PKG-INFO +2 -1
  2. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/__init__.py +1 -1
  3. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/launcher/__main__.py +10 -6
  4. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/simulation/runtime.py +70 -64
  5. {physioblocks-1.1.0 → physioblocks-1.1.2}/pyproject.toml +2 -1
  6. physioblocks-1.1.2/references/full_configurations/circulation_alone_sim.jsonc +146 -0
  7. physioblocks-1.1.2/references/full_configurations/spherical_heart_respiration_sim.jsonc +387 -0
  8. physioblocks-1.1.2/references/full_configurations/spherical_heart_sim.jsonc +343 -0
  9. {physioblocks-1.1.0 → physioblocks-1.1.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  10. {physioblocks-1.1.0 → physioblocks-1.1.2}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  11. {physioblocks-1.1.0 → physioblocks-1.1.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  12. {physioblocks-1.1.0 → physioblocks-1.1.2}/.gitignore +0 -0
  13. {physioblocks-1.1.0 → physioblocks-1.1.2}/.gitlab/issue_templates/Bug.md +0 -0
  14. {physioblocks-1.1.0 → physioblocks-1.1.2}/.gitlab/issue_templates/Documentation.md +0 -0
  15. {physioblocks-1.1.0 → physioblocks-1.1.2}/.gitlab/issue_templates/Feature.md +0 -0
  16. {physioblocks-1.1.0 → physioblocks-1.1.2}/.gitlab-ci.yml +0 -0
  17. {physioblocks-1.1.0 → physioblocks-1.1.2}/README.md +0 -0
  18. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/.gitignore +0 -0
  19. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/Makefile +0 -0
  20. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/make.bat +0 -0
  21. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/api_reference/base.rst +0 -0
  22. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/api_reference/computing.rst +0 -0
  23. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/api_reference/configuration.rst +0 -0
  24. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/api_reference/description.rst +0 -0
  25. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/api_reference/io.rst +0 -0
  26. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/api_reference/registers.rst +0 -0
  27. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/api_reference/simulation.rst +0 -0
  28. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/api_reference/utils.rst +0 -0
  29. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/api_reference.rst +0 -0
  30. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/conf.py +0 -0
  31. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/index.rst +0 -0
  32. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/installation.rst +0 -0
  33. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/aliases/blocks.rst +0 -0
  34. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/aliases/model_components.rst +0 -0
  35. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/aliases/nets.rst +0 -0
  36. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/aliases/simulation.rst +0 -0
  37. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/aliases.rst +0 -0
  38. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/blocks.rst +0 -0
  39. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/configuration/functions.rst +0 -0
  40. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/configuration/net.rst +0 -0
  41. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/configuration/simulation.rst +0 -0
  42. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/configuration.rst +0 -0
  43. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/functions.rst +0 -0
  44. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library/model_components.rst +0 -0
  45. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/library.rst +0 -0
  46. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/presentation.rst +0 -0
  47. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/schemes/assembling_example_scheme.tex +0 -0
  48. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/schemes/circulation_net_scheme.tex +0 -0
  49. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/schemes/circulation_net_scheme_heart.tex +0 -0
  50. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/schemes/model_heart_circulation_0D.tex +0 -0
  51. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/schemes/simple_circulation_model.tex +0 -0
  52. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/schemes/simple_circulation_model_heart.tex +0 -0
  53. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/schemes/spherical_heart_net_scheme.tex +0 -0
  54. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_1/launch_simulation.rst +0 -0
  55. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_1/launcher.rst +0 -0
  56. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_1.rst +0 -0
  57. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_2/aliases.rst +0 -0
  58. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_2/create_net.rst +0 -0
  59. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_2/create_simulation.rst +0 -0
  60. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_2/overview.rst +0 -0
  61. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_2.rst +0 -0
  62. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_3/block_configuration.rst +0 -0
  63. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_3/block_definition.rst +0 -0
  64. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_3/block_test.rst +0 -0
  65. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_3/overview.rst +0 -0
  66. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_3/specific_installations.rst +0 -0
  67. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide/level_3.rst +0 -0
  68. {physioblocks-1.1.0 → physioblocks-1.1.2}/doc/source/user_guide.rst +0 -0
  69. {physioblocks-1.1.0 → physioblocks-1.1.2}/docker/latex/Dockerfile +0 -0
  70. {physioblocks-1.1.0 → physioblocks-1.1.2}/docker/pyenv/Dockerfile +0 -0
  71. {physioblocks-1.1.0 → physioblocks-1.1.2}/licenses/GPL-3.0-only.txt +0 -0
  72. {physioblocks-1.1.0 → physioblocks-1.1.2}/licenses/LGPL-3.0-only.txt +0 -0
  73. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/base/__init__.py +0 -0
  74. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/base/operators.py +0 -0
  75. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/base/registers.py +0 -0
  76. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/computing/__init__.py +0 -0
  77. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/computing/assembling.py +0 -0
  78. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/computing/models.py +0 -0
  79. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/computing/quantities.py +0 -0
  80. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/__init__.py +0 -0
  81. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/aliases.py +0 -0
  82. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/base.py +0 -0
  83. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/computing/__init__.py +0 -0
  84. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/computing/quantities.py +0 -0
  85. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/constants.py +0 -0
  86. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/description/__init__.py +0 -0
  87. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/description/blocks.py +0 -0
  88. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/description/nets.py +0 -0
  89. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/functions.py +0 -0
  90. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/simulation/__init__.py +0 -0
  91. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/configuration/simulation/simulations.py +0 -0
  92. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/description/__init__.py +0 -0
  93. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/description/blocks.py +0 -0
  94. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/description/flux.py +0 -0
  95. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/description/nets.py +0 -0
  96. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/io/__init__.py +0 -0
  97. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/io/aliases.py +0 -0
  98. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/io/configuration.py +0 -0
  99. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/launcher/configuration.py +0 -0
  100. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/launcher/configure/__main__.py +0 -0
  101. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/launcher/constants.py +0 -0
  102. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/launcher/files.py +0 -0
  103. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/launcher/series.py +0 -0
  104. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/__init__.py +0 -0
  105. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/blocks/c_block.json +0 -0
  106. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/blocks/rc_block.json +0 -0
  107. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/blocks/rcr_block.json +0 -0
  108. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/blocks/spherical_cavity_block.json +0 -0
  109. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/blocks/valve_rl_block.json +0 -0
  110. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/flux/heart_flux_dof_couples.jsonc +0 -0
  111. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/model_components/active_law_macro_huxley_two_moments.json +0 -0
  112. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/model_components/rheology_fiber_additive.json +0 -0
  113. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/model_components/spherical_dynamics.json +0 -0
  114. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/model_components/velocity_law_hht.json +0 -0
  115. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/nets/circulation_alone_net.json +0 -0
  116. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/nets/spherical_heart_net.json +0 -0
  117. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/simulations/circulation_alone_forward_simulation.jsonc +0 -0
  118. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/simulations/default_forward_simulation.jsonc +0 -0
  119. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/simulations/default_time.jsonc +0 -0
  120. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/simulations/newton_method_solver.json +0 -0
  121. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/simulations/spherical_heart_forward_simulation.jsonc +0 -0
  122. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/aliases/simulations/spherical_heart_with_respiration_forward_simulation.jsonc +0 -0
  123. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/blocks/__init__.py +0 -0
  124. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/blocks/capacitances.py +0 -0
  125. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/blocks/cavity.py +0 -0
  126. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/blocks/valves.py +0 -0
  127. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/functions/__init__.py +0 -0
  128. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/functions/base_operations.py +0 -0
  129. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/functions/first_order.py +0 -0
  130. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/functions/piecewise.py +0 -0
  131. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/functions/trigonometric.py +0 -0
  132. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/functions/watchers.py +0 -0
  133. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/model_components/__init__.py +0 -0
  134. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/model_components/active_law.py +0 -0
  135. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/model_components/dynamics.py +0 -0
  136. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/model_components/rheology.py +0 -0
  137. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/library/model_components/velocity_law.py +0 -0
  138. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/registers/__init__.py +0 -0
  139. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/registers/load_function_register.py +0 -0
  140. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/registers/save_function_register.py +0 -0
  141. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/registers/type_register.py +0 -0
  142. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/simulation/__init__.py +0 -0
  143. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/simulation/constants.py +0 -0
  144. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/simulation/functions.py +0 -0
  145. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/simulation/saved_quantities.py +0 -0
  146. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/simulation/setup.py +0 -0
  147. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/simulation/solvers.py +0 -0
  148. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/simulation/state.py +0 -0
  149. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/simulation/time_manager.py +0 -0
  150. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/utils/__init__.py +0 -0
  151. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/utils/dynamic_import_utils.py +0 -0
  152. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/utils/exceptions_utils.py +0 -0
  153. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/utils/gradient_test_utils.py +0 -0
  154. {physioblocks-1.1.0 → physioblocks-1.1.2}/physioblocks/utils/math_utils.py +0 -0
  155. {physioblocks-1.1.0 → physioblocks-1.1.2}/references/circulation_alone_sim.jsonc +0 -0
  156. {physioblocks-1.1.0 → physioblocks-1.1.2}/references/spherical_heart_respiration_sim.jsonc +0 -0
  157. {physioblocks-1.1.0 → physioblocks-1.1.2}/references/spherical_heart_sim.jsonc +0 -0
  158. {physioblocks-1.1.0 → physioblocks-1.1.2}/ruff.toml +0 -0
  159. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/__init__.py +0 -0
  160. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/base/test_register.py +0 -0
  161. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/helpers/__init__.py +0 -0
  162. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/helpers/assertion_helpers.py +0 -0
  163. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/helpers/file_helpers.py +0 -0
  164. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_computing/test_assembling.py +0 -0
  165. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_computing/test_models.py +0 -0
  166. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_computing/test_quantities.py +0 -0
  167. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/__init__.py +0 -0
  168. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/test_definitions.py +0 -0
  169. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/test_generic_save_load.py +0 -0
  170. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/tests_alias/test_alias.py +0 -0
  171. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/tests_description/__init__.py +0 -0
  172. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/tests_description/test_config_blocks.py +0 -0
  173. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/tests_description/test_config_boundary_condition.py +0 -0
  174. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/tests_description/test_config_nets.py +0 -0
  175. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/tests_simulation/__init__.py +0 -0
  176. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/tests_simulation/simulation_reference.json +0 -0
  177. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/tests_simulation/test_config_simulation.py +0 -0
  178. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/tests_simulation/test_config_solvers.py +0 -0
  179. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/tests_simulation/test_config_time.py +0 -0
  180. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_config/tests_simulation/test_functions.py +0 -0
  181. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_description/__init__.py +0 -0
  182. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_description/test_blocks.py +0 -0
  183. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_description/test_nets.py +0 -0
  184. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_description/test_relations.py +0 -0
  185. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_io/__init__.py +0 -0
  186. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_io/references/alt_config_file_path.json +0 -0
  187. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_io/references/commented_config_file_path.jsonc +0 -0
  188. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_io/references/configuration.json +0 -0
  189. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_io/test_aliases.py +0 -0
  190. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_io/test_configuration.py +0 -0
  191. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_blocks/test_capacitances.py +0 -0
  192. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_blocks/test_cavity.py +0 -0
  193. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_blocks/test_valves.py +0 -0
  194. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_functions/test_base_operations_functions.py +0 -0
  195. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_functions/test_first_order_functions.py +0 -0
  196. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_functions/test_piecewise_functions.py +0 -0
  197. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_functions/test_trigonometric_functions.py +0 -0
  198. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_functions/test_watch_functions.py +0 -0
  199. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_model_components/test_active_law.py +0 -0
  200. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_model_components/test_dynamics_block.py +0 -0
  201. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_model_components/test_rheology.py +0 -0
  202. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_library/tests_model_components/test_velocity_law_hht.py +0 -0
  203. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_references/__init__.py +0 -0
  204. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_references/circulation_alone/circulation_alone_sim_gradient_test.json +0 -0
  205. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_references/circulation_alone/ref_circulation_alone_sim.csv +0 -0
  206. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_references/conftest.py +0 -0
  207. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_references/io.py +0 -0
  208. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_references/spherical_heart/ref_spherical_heart_respiration_sim.csv +0 -0
  209. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_references/spherical_heart/ref_spherical_heart_sim.csv +0 -0
  210. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_references/spherical_heart/spherical_heart_sim_gradient_test.json +0 -0
  211. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_references/test_circulation_alone.py +0 -0
  212. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_references/test_spherical_heart.py +0 -0
  213. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_registers/test_load_register.py +0 -0
  214. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_registers/test_save_register.py +0 -0
  215. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_registers/test_type_register.py +0 -0
  216. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_simulation/__init__.py +0 -0
  217. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_simulation/test_runtime.py +0 -0
  218. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_simulation/test_setup.py +0 -0
  219. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_simulation/test_solvers.py +0 -0
  220. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_simulation/test_state.py +0 -0
  221. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_simulation/test_time_manager.py +0 -0
  222. {physioblocks-1.1.0 → physioblocks-1.1.2}/tests/tests_utils/test_math_utils.py +0 -0
  223. {physioblocks-1.1.0 → physioblocks-1.1.2}/tox.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: physioblocks
3
- Version: 1.1.0
3
+ Version: 1.1.2
4
4
  Dynamic: Author
5
5
  Dynamic: Author-email
6
6
  Dynamic: License
@@ -31,6 +31,7 @@ Requires-Dist: pandas
31
31
  Requires-Dist: plotly
32
32
  Requires-Dist: pyarrow
33
33
  Requires-Dist: regex
34
+ Requires-Dist: rich
34
35
  Requires-Dist: scipy
35
36
  Provides-Extra: doc
36
37
  Requires-Dist: sphinx; extra == 'doc'
@@ -26,7 +26,7 @@
26
26
 
27
27
  """Physioblocks package definition"""
28
28
 
29
- __version__ = "1.1.0"
29
+ __version__ = "1.1.2"
30
30
  __copyright__ = "INRIA"
31
31
  __license__ = "LGPL-3.0-only"
32
32
  __authors__ = [
@@ -37,6 +37,7 @@ from pathlib import Path
37
37
  from typing import Any
38
38
 
39
39
  import pandas as pd
40
+ from rich.logging import RichHandler
40
41
 
41
42
  import physioblocks.utils.exceptions_utils as exception_utils
42
43
  from physioblocks.configuration import Configuration, load, unwrap_aliases
@@ -64,8 +65,9 @@ from physioblocks.simulation import AbstractSimulation, SimulationError
64
65
  .. note:: When deleting a serie from the launcher folder, or a specific simulation from
65
66
  a serie, the launchers logs are updated the next time any simulation is launched.
66
67
  """
68
+ FILE_LOG_FORMATTER = logging.Formatter(logging.BASIC_FORMAT)
69
+ RICH_LOG_FORMATTER = logging.Formatter("%(message)s", "[%X]")
67
70
 
68
- SIMULATION_LOG_FORMATER = logging.Formatter(logging.BASIC_FORMAT)
69
71
  _root_logger = logging.getLogger()
70
72
  _root_logger.setLevel(logging.DEBUG)
71
73
 
@@ -90,8 +92,10 @@ def run_simulation(config: Configuration) -> pd.DataFrame:
90
92
  return pd.DataFrame(results)
91
93
 
92
94
 
93
- def add_log_handler(handler: logging.Handler, level: str | int) -> None:
94
- handler.setFormatter(SIMULATION_LOG_FORMATER)
95
+ def add_log_handler(
96
+ handler: logging.Handler, level: str | int, formatter: logging.Formatter
97
+ ) -> None:
98
+ handler.setFormatter(formatter)
95
99
  handler.setLevel(level)
96
100
  _root_logger.addHandler(handler)
97
101
 
@@ -132,7 +136,7 @@ def main(
132
136
  # configure the simulation log file (always in DEBUG)
133
137
  log_file_path = sim_folder / str.join(".", [sim_info.reference, "log"])
134
138
  file_handler = logging.FileHandler(log_file_path)
135
- add_log_handler(file_handler, logging.DEBUG)
139
+ add_log_handler(file_handler, logging.DEBUG, FILE_LOG_FORMATTER)
136
140
 
137
141
  # log the current simulation infos
138
142
  _root_logger.info(str(sim_info))
@@ -260,8 +264,8 @@ if __name__ == "__main__":
260
264
 
261
265
  # setup logger when verbose
262
266
  if args.verbose is True:
263
- stdout_handler = logging.StreamHandler(sys.stdout)
264
- add_log_handler(stdout_handler, args.log_level)
267
+ # stdout_handler = logging.StreamHandler(sys.stdout)
268
+ add_log_handler(RichHandler(), args.log_level, RICH_LOG_FORMATTER)
265
269
 
266
270
  # create paths from arguments
267
271
  root_folder_path = Path(args.launcher_directory).absolute()
@@ -37,6 +37,7 @@ from typing import Any, TypeAlias
37
37
 
38
38
  import numpy as np
39
39
  from numpy.typing import NDArray
40
+ from rich.progress import Progress
40
41
 
41
42
  from physioblocks.computing.assembling import EqSystem
42
43
  from physioblocks.computing.models import ModelComponent
@@ -359,77 +360,82 @@ class ForwardSimulation(AbstractSimulation):
359
360
  """
360
361
  # initialize the simulation and save the initial results
361
362
  results = self._initialize()
362
-
363
- try:
364
- while self.time_manager.ended is False:
365
- next_step = self.time_manager.time.new
366
-
367
- self._update_time()
368
-
369
- while (
370
- np.abs(next_step - self.time_manager.time.current)
371
- > self.time_manager.min_step
372
- ):
373
- self.state.reset_state_vector()
374
-
375
- sol = self.solver.solve(self.state, self.eq_system)
376
-
377
- if sol.converged is False:
378
- inter_time = 0.5 * self.time_manager.current_step_size
379
- if inter_time < self.time_manager.min_step:
380
- raise ConvergenceError(
381
- str.format(
382
- "The solver did not converge at {0}s for minimal"
383
- "time step {1}",
384
- self.time_manager.time.current,
385
- self.time_manager.min_step,
363
+ progress_step_update = (
364
+ 100.0 * self.time_manager.step_size / self.time_manager.duration
365
+ )
366
+ with Progress() as progress:
367
+ try:
368
+ sim_task = progress.add_task("Simulation in progress...")
369
+ while self.time_manager.ended is False:
370
+ next_step = self.time_manager.time.new
371
+
372
+ self._update_time()
373
+
374
+ while (
375
+ np.abs(next_step - self.time_manager.time.current)
376
+ > self.time_manager.min_step
377
+ ):
378
+ self.state.reset_state_vector()
379
+
380
+ sol = self.solver.solve(self.state, self.eq_system)
381
+
382
+ if sol.converged is False:
383
+ inter_time = 0.5 * self.time_manager.current_step_size
384
+ if inter_time < self.time_manager.min_step:
385
+ raise ConvergenceError(
386
+ str.format(
387
+ "The solver did not converge at {0}s for "
388
+ "minimal time step {1}",
389
+ self.time_manager.time.current,
390
+ self.time_manager.min_step,
391
+ )
386
392
  )
387
- )
388
393
 
389
- self.time_manager.current_step_size = inter_time
390
- self.time_manager.time.update(
391
- self.time_manager.time.current
392
- + self.time_manager.current_step_size
393
- )
394
- else:
395
- self.state.set_state_vector(sol.x)
396
-
397
- self.time_manager.update_time()
398
- if (
399
- np.abs(next_step - self.time_manager.time.current)
400
- >= self.time_manager.min_step
401
- ):
402
- self.time_manager.current_step_size = (
403
- next_step - self.time_manager.time.current
404
- )
405
- self.time_manager.time.update(next_step)
406
- else:
407
- self.time_manager.time.initialize(next_step)
408
- self.time_manager.current_step_size = (
409
- self.time_manager.step_size
410
- )
394
+ self.time_manager.current_step_size = inter_time
411
395
  self.time_manager.time.update(
412
396
  self.time_manager.time.current
413
397
  + self.time_manager.current_step_size
414
398
  )
399
+ else:
400
+ self.state.set_state_vector(sol.x)
401
+
402
+ self.time_manager.update_time()
403
+ if (
404
+ np.abs(next_step - self.time_manager.time.current)
405
+ >= self.time_manager.min_step
406
+ ):
407
+ self.time_manager.current_step_size = (
408
+ next_step - self.time_manager.time.current
409
+ )
410
+ self.time_manager.time.update(next_step)
411
+ else:
412
+ progress.update(sim_task, advance=progress_step_update)
413
+ self.time_manager.time.initialize(next_step)
414
+ self.time_manager.current_step_size = (
415
+ self.time_manager.step_size
416
+ )
417
+ self.time_manager.time.update(
418
+ self.time_manager.time.current
419
+ + self.time_manager.current_step_size
420
+ )
415
421
 
416
- self.state.set_state_vector(sol.x)
417
- results.append(self._get_current_result())
418
- except Exception as exception:
419
- log_exception(
420
- _logger,
421
- type(exception),
422
- exception,
423
- exception.__traceback__,
424
- logging.DEBUG,
425
- )
426
- raise SimulationError(
427
- str.format(
428
- "An error caused the simulation to stop prematurely",
429
- intermediate_results=results,
430
- ),
431
- results,
432
- ) from exception
422
+ self.state.set_state_vector(sol.x)
423
+ results.append(self._get_current_result())
424
+ except Exception as exception:
425
+ log_exception(
426
+ _logger,
427
+ type(exception),
428
+ exception,
429
+ exception.__traceback__,
430
+ logging.DEBUG,
431
+ )
432
+ raise SimulationError(
433
+ str.format(
434
+ "An error caused the simulation to stop prematurely",
435
+ intermediate_results=results,
436
+ ),
437
+ results,
438
+ ) from exception
433
439
 
434
440
  self._finalize()
435
441
  return results
@@ -10,7 +10,8 @@ dependencies = [
10
10
  "pandas",
11
11
  "plotly",
12
12
  "pyarrow",
13
- "regex"
13
+ "regex",
14
+ "rich"
14
15
  ]
15
16
  description = "Physioblocks allows the simulation of dynamical models of physiological systems"
16
17
  keywords = [
@@ -0,0 +1,146 @@
1
+ {
2
+ "type": "forward_simulation",
3
+ "time": {
4
+ "type": "time",
5
+ "step_size": 0.001,
6
+ "min_step": 6.25e-05,
7
+ "start": 0.0,
8
+ "duration": 25.0
9
+ },
10
+ "solver": {
11
+ "type": "linear_solver"
12
+ },
13
+ "net": {
14
+ "type": "net",
15
+ "flux_dof_definitions": {
16
+ "blood_flow": "blood_pressure"
17
+ },
18
+ "nodes": [
19
+ "aorta_proximal",
20
+ "aorta_distal",
21
+ "venous"
22
+ ],
23
+ "blocks": {
24
+ "circulation_aorta_proximal": {
25
+ "type": "block_description",
26
+ "model_type": "rc_block",
27
+ "time": "time",
28
+ "flux_type": "blood_flow",
29
+ "resistance": "aorta_proximal.resistance",
30
+ "capacitance": "aorta_proximal.capacitance",
31
+ "nodes": {
32
+ "1": "aorta_distal",
33
+ "2": "aorta_proximal"
34
+ }
35
+ },
36
+ "circulation_aorta_distal": {
37
+ "type": "block_description",
38
+ "model_type": "rc_block",
39
+ "time": "time",
40
+ "flux_type": "blood_flow",
41
+ "resistance": "aorta_distal.resistance",
42
+ "capacitance": "aorta_distal.capacitance",
43
+ "nodes": {
44
+ "1": "venous",
45
+ "2": "aorta_distal"
46
+ }
47
+ }
48
+ },
49
+ "boundaries_conditions": {
50
+ "aorta_proximal": [
51
+ {
52
+ "type": "condition",
53
+ "condition_type": "blood_flow",
54
+ "condition_id": "aorta_proximal.blood_flow"
55
+ }
56
+ ],
57
+ "venous": [
58
+ {
59
+ "type": "condition",
60
+ "condition_type": "blood_pressure",
61
+ "condition_id": "venous.blood_pressure"
62
+ }
63
+ ]
64
+ }
65
+ },
66
+ "variables_magnitudes": {
67
+ "aorta_proximal.blood_pressure": 100000.0,
68
+ "aorta_distal.blood_pressure": 100000.0
69
+ },
70
+ "parameters": {
71
+ "heartbeat_duration": {
72
+ "type": "product",
73
+ "factors": [
74
+ 60.0
75
+ ],
76
+ "inverses": [
77
+ "heart_rate"
78
+ ]
79
+ },
80
+ "aorta_proximal.capacitance": 2e-10,
81
+ "aorta_proximal.blood_flow": {
82
+ "type": "rescale_two_phases_function",
83
+ "rescaled_period": "heartbeat_duration",
84
+ "alpha": 0.8,
85
+ "reference_function": [
86
+ [
87
+ 0.0,
88
+ "aorta_proximal.blood_flow.min"
89
+ ],
90
+ [
91
+ 0.075,
92
+ "aorta_proximal.blood_flow.min"
93
+ ],
94
+ [
95
+ 0.134,
96
+ "aorta_proximal.blood_flow.max"
97
+ ],
98
+ [
99
+ 0.142,
100
+ "aorta_proximal.blood_flow.max"
101
+ ],
102
+ [
103
+ 0.281,
104
+ "aorta_proximal.blood_flow.min"
105
+ ],
106
+ [
107
+ 0.9,
108
+ "aorta_proximal.blood_flow.min"
109
+ ]
110
+ ],
111
+ "phases": [
112
+ 0,
113
+ 0,
114
+ 1,
115
+ 1,
116
+ 0
117
+ ]
118
+ },
119
+ "aorta_distal.capacitance": {
120
+ "type": "product",
121
+ "factors": [
122
+ "aorta_distal.time_constant"
123
+ ],
124
+ "inverses": [
125
+ "aorta_distal.resistance"
126
+ ]
127
+ },
128
+ "heart_rate": 60.0,
129
+ "aorta_proximal.resistance": 7000000.0,
130
+ "aorta_distal.resistance": 110000000.0,
131
+ "aorta_distal.time_constant": 2.0,
132
+ "venous.blood_pressure": 1600.0,
133
+ "aorta_proximal.blood_flow.min": 0.0,
134
+ "aorta_proximal.blood_flow.max": 0.0005
135
+ },
136
+ "variables_initialization": {
137
+ "aorta_proximal.blood_pressure": 10760.0,
138
+ "aorta_distal.blood_pressure": 10760.0
139
+ },
140
+ "output_functions": {
141
+ "aorta_proximal.blood_flow": {
142
+ "type": "watch_quantity",
143
+ "quantity": "aorta_proximal.blood_flow"
144
+ }
145
+ }
146
+ }