myokit 1.33.9__tar.gz → 1.35.0__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 (413) hide show
  1. {myokit-1.33.9/myokit.egg-info → myokit-1.35.0}/PKG-INFO +6 -9
  2. {myokit-1.33.9 → myokit-1.35.0}/README.md +4 -4
  3. {myokit-1.33.9 → myokit-1.35.0}/myokit/__init__.py +9 -36
  4. {myokit-1.33.9 → myokit-1.35.0}/myokit/__main__.py +76 -142
  5. {myokit-1.33.9 → myokit-1.35.0}/myokit/_aux.py +62 -16
  6. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/example.mmt +1 -2
  7. {myokit-1.33.9 → myokit-1.35.0}/myokit/_config.py +22 -31
  8. {myokit-1.33.9 → myokit-1.35.0}/myokit/_datablock.py +30 -74
  9. {myokit-1.33.9 → myokit-1.35.0}/myokit/_datalog.py +49 -72
  10. {myokit-1.33.9 → myokit-1.35.0}/myokit/_err.py +25 -24
  11. {myokit-1.33.9 → myokit-1.35.0}/myokit/_expressions.py +50 -68
  12. {myokit-1.33.9 → myokit-1.35.0}/myokit/_io.py +15 -27
  13. {myokit-1.33.9 → myokit-1.35.0}/myokit/_model_api.py +453 -249
  14. {myokit-1.33.9 → myokit-1.35.0}/myokit/_myokit_version.py +1 -5
  15. {myokit-1.33.9 → myokit-1.35.0}/myokit/_parsing.py +38 -44
  16. {myokit-1.33.9 → myokit-1.35.0}/myokit/_progress.py +5 -8
  17. {myokit-1.33.9 → myokit-1.35.0}/myokit/_protocol.py +99 -9
  18. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/__init__.py +7 -24
  19. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/cable.c +6 -8
  20. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/cable.py +6 -8
  21. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/cmodel.h +125 -70
  22. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/cmodel.py +12 -14
  23. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/compiler.py +1 -4
  24. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/cvodessim.c +196 -118
  25. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/cvodessim.py +130 -103
  26. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/differential.hpp +4 -4
  27. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/fiber_tissue.c +4 -8
  28. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/fiber_tissue.py +11 -13
  29. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/jacobian.cpp +2 -2
  30. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/jacobian.py +11 -8
  31. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/mcl.h +53 -55
  32. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/opencl.py +21 -27
  33. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/openclsim.c +3 -7
  34. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/openclsim.cl +3 -3
  35. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/openclsim.py +49 -40
  36. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/pacing.h +36 -16
  37. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/rhs.c +6 -13
  38. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/rhs.py +5 -14
  39. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/sundials.py +1 -4
  40. {myokit-1.33.9 → myokit-1.35.0}/myokit/_system.py +10 -16
  41. {myokit-1.33.9 → myokit-1.35.0}/myokit/_unit.py +4 -13
  42. {myokit-1.33.9 → myokit-1.35.0}/myokit/float.py +0 -3
  43. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/__init__.py +8 -10
  44. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/ansic/__init__.py +0 -3
  45. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/ansic/_ewriter.py +2 -4
  46. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/ansic/_exporter.py +1 -4
  47. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/ansic/template/cable.c +4 -4
  48. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/ansic/template/euler.c +5 -5
  49. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/ansic/template/sim.c +6 -6
  50. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/axon/__init__.py +1 -3
  51. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/axon/_abf.py +12 -17
  52. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/axon/_atf.py +5 -6
  53. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/axon/_importer.py +0 -3
  54. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/__init__.py +0 -3
  55. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/_ewriter.py +3 -6
  56. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/_exporter.py +3 -6
  57. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/_importer.py +1 -4
  58. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/v1/__init__.py +0 -4
  59. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/v1/_api.py +8 -11
  60. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/v1/_parser.py +2 -5
  61. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/v1/_writer.py +2 -11
  62. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/v2/__init__.py +0 -3
  63. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/v2/_api.py +8 -17
  64. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/v2/_parser.py +2 -5
  65. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cellml/v2/_writer.py +1 -4
  66. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/channelml/__init__.py +0 -3
  67. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/channelml/_importer.py +11 -21
  68. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cpp/__init__.py +1 -3
  69. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cpp/_ewriter.py +0 -3
  70. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cuda/__init__.py +0 -3
  71. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cuda/_ewriter.py +2 -4
  72. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cuda/_exporter.py +0 -3
  73. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/cuda/template/kernel.cu +8 -5
  74. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/easyml/__init__.py +0 -3
  75. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/easyml/_ewriter.py +9 -11
  76. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/easyml/_exporter.py +2 -5
  77. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/html/__init__.py +0 -3
  78. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/html/_exporter.py +0 -3
  79. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/html/_flatten.py +5 -21
  80. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/latex/__init__.py +0 -3
  81. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/latex/_ewriter.py +1 -4
  82. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/latex/_exporter.py +4 -6
  83. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/mathml/__init__.py +0 -3
  84. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/mathml/_ewriter.py +2 -11
  85. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/mathml/_parser.py +4 -6
  86. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/matlab/__init__.py +0 -3
  87. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/matlab/_ewriter.py +1 -4
  88. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/matlab/_exporter.py +2 -5
  89. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/matlab/template/main.m +3 -2
  90. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/opencl/__init__.py +0 -3
  91. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/opencl/_ewriter.py +2 -4
  92. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/opencl/_exporter.py +2 -5
  93. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/opencl/template/cable.c +10 -10
  94. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/opencl/template/kernel.cl +1 -1
  95. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/opencl/template/minilog.py +1 -1
  96. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/python/__init__.py +0 -3
  97. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/python/_ewriter.py +2 -5
  98. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/python/_exporter.py +0 -3
  99. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/python/template/sim.py +14 -14
  100. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/sbml/__init__.py +0 -3
  101. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/sbml/_api.py +50 -44
  102. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/sbml/_importer.py +1 -4
  103. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/sbml/_parser.py +2 -5
  104. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/stan/__init__.py +0 -3
  105. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/stan/_ewriter.py +2 -4
  106. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/stan/_exporter.py +2 -5
  107. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/stan/template/cell.stan +3 -3
  108. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/sympy/__init__.py +0 -3
  109. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/sympy/_ereader.py +1 -4
  110. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/sympy/_ewriter.py +2 -5
  111. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/wcp/__init__.py +0 -3
  112. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/wcp/_wcp.py +2 -8
  113. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/xml/__init__.py +0 -3
  114. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/xml/_exporter.py +0 -3
  115. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/xml/_split.py +0 -3
  116. myokit-1.35.0/myokit/gui/__init__.py +240 -0
  117. {myokit-1.33.9 → myokit-1.35.0}/myokit/gui/datablock_viewer.py +103 -86
  118. {myokit-1.33.9 → myokit-1.35.0}/myokit/gui/datalog_viewer.py +214 -66
  119. {myokit-1.33.9 → myokit-1.35.0}/myokit/gui/explorer.py +15 -21
  120. {myokit-1.33.9 → myokit-1.35.0}/myokit/gui/ide.py +171 -144
  121. {myokit-1.33.9 → myokit-1.35.0}/myokit/gui/progress.py +9 -9
  122. {myokit-1.33.9 → myokit-1.35.0}/myokit/gui/source.py +406 -375
  123. {myokit-1.33.9 → myokit-1.35.0}/myokit/gui/vargrapher.py +2 -12
  124. {myokit-1.33.9 → myokit-1.35.0}/myokit/lib/deps.py +12 -13
  125. {myokit-1.33.9 → myokit-1.35.0}/myokit/lib/guess.py +3 -4
  126. {myokit-1.33.9 → myokit-1.35.0}/myokit/lib/hh.py +20 -18
  127. {myokit-1.33.9 → myokit-1.35.0}/myokit/lib/markov.py +21 -20
  128. {myokit-1.33.9 → myokit-1.35.0}/myokit/lib/multi.py +1 -3
  129. {myokit-1.33.9 → myokit-1.35.0}/myokit/lib/plots.py +20 -9
  130. {myokit-1.33.9 → myokit-1.35.0}/myokit/pacing.py +0 -3
  131. {myokit-1.33.9 → myokit-1.35.0}/myokit/pype.py +7 -18
  132. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/__init__.py +3 -6
  133. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/ansic_event_based_pacing.py +1 -4
  134. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/ansic_fixed_form_pacing.py +3 -6
  135. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/beeler-1977-model-compare-b.mmt +2 -2
  136. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/clancy-1999-fitting.mmt +1 -0
  137. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_aux.py +13 -28
  138. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_cellml_v1_api.py +4 -19
  139. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_cellml_v1_parser.py +0 -15
  140. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_cellml_v1_writer.py +0 -9
  141. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_cellml_v2_api.py +4 -19
  142. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_cellml_v2_parser.py +0 -15
  143. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_cellml_v2_writer.py +0 -9
  144. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_cmodel.py +16 -22
  145. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_compiler_detection.py +1 -11
  146. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_component.py +108 -56
  147. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_config.py +34 -67
  148. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_datablock.py +1 -9
  149. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_datalog.py +19 -24
  150. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_dependency_checking.py +8 -23
  151. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_expressions.py +0 -9
  152. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_float.py +1 -5
  153. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats.py +0 -9
  154. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_axon.py +1 -9
  155. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_cellml.py +0 -15
  156. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_channelml.py +0 -15
  157. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_easyml.py +0 -14
  158. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_exporters.py +1 -16
  159. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_expression_writers.py +1 -17
  160. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_html.py +0 -3
  161. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_importers.py +1 -16
  162. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_mathml_content.py +0 -9
  163. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_mathml_presentation.py +0 -9
  164. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_opencl.py +0 -10
  165. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_sbml.py +0 -15
  166. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_sympy.py +0 -9
  167. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_formats_wcp.py +1 -3
  168. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_io.py +27 -27
  169. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_jacobian_calculator.py +6 -14
  170. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_jacobian_tracer.py +0 -9
  171. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_lib_deps.py +0 -9
  172. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_lib_guess.py +0 -9
  173. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_lib_hh.py +18 -12
  174. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_lib_markov.py +21 -13
  175. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_lib_multi.py +0 -9
  176. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_lib_plots.py +13 -8
  177. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_meta.py +0 -3
  178. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_model.py +390 -96
  179. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_model_building.py +44 -96
  180. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_opencl_info.py +5 -14
  181. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_pacing_factory.py +0 -3
  182. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_pacing_system_c.py +1 -23
  183. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_pacing_system_py.py +0 -9
  184. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_parsing.py +139 -56
  185. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_progress_reporters.py +0 -3
  186. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_protocol.py +0 -9
  187. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_protocol_floating_point.py +1 -10
  188. myokit-1.35.0/myokit/tests/test_protocol_time_series.py +82 -0
  189. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_pype.py +0 -9
  190. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_quantity.py +0 -9
  191. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_rhs_benchmarker.py +1 -9
  192. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_sbml_api.py +27 -42
  193. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_sbml_parser.py +4 -19
  194. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_simulation_1d.py +45 -25
  195. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_simulation_cvodes.py +321 -55
  196. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_simulation_cvodes_from_disk.py +0 -3
  197. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_simulation_fiber_tissue.py +39 -12
  198. myokit-1.35.0/myokit/tests/test_simulation_log_interval.py +420 -0
  199. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_simulation_opencl.py +69 -48
  200. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_simulation_opencl_log_interval.py +1 -3
  201. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_simulation_opencl_vs_cvode.py +1 -10
  202. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_simulation_opencl_vs_sim1d.py +1 -10
  203. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_system_info.py +1 -11
  204. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_tools.py +0 -9
  205. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_unit.py +1 -10
  206. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_user_functions.py +0 -10
  207. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/test_variable.py +231 -27
  208. {myokit-1.33.9 → myokit-1.35.0}/myokit/tools.py +5 -21
  209. {myokit-1.33.9 → myokit-1.35.0}/myokit/units.py +5 -3
  210. {myokit-1.33.9 → myokit-1.35.0/myokit.egg-info}/PKG-INFO +6 -9
  211. {myokit-1.33.9 → myokit-1.35.0}/myokit.egg-info/SOURCES.txt +2 -14
  212. {myokit-1.33.9 → myokit-1.35.0}/myokit.egg-info/entry_points.txt +0 -1
  213. {myokit-1.33.9 → myokit-1.35.0}/myokit.egg-info/requires.txt +6 -6
  214. {myokit-1.33.9 → myokit-1.35.0}/setup.py +13 -13
  215. myokit-1.33.9/myokit/_exec_new.py +0 -15
  216. myokit-1.33.9/myokit/_exec_old.py +0 -15
  217. myokit-1.33.9/myokit/_sim/cvodesim.c +0 -1551
  218. myokit-1.33.9/myokit/_sim/cvodesim.py +0 -674
  219. myokit-1.33.9/myokit/_sim/icsim.cpp +0 -563
  220. myokit-1.33.9/myokit/_sim/icsim.py +0 -363
  221. myokit-1.33.9/myokit/_sim/psim.cpp +0 -656
  222. myokit-1.33.9/myokit/_sim/psim.py +0 -493
  223. myokit-1.33.9/myokit/gui/__init__.py +0 -406
  224. myokit-1.33.9/myokit/lib/common.py +0 -1094
  225. myokit-1.33.9/myokit/tests/test_lib_common.py +0 -130
  226. myokit-1.33.9/myokit/tests/test_simulation_cvode.py +0 -612
  227. myokit-1.33.9/myokit/tests/test_simulation_ic.py +0 -108
  228. myokit-1.33.9/myokit/tests/test_simulation_log_interval.py +0 -850
  229. myokit-1.33.9/myokit/tests/test_simulation_p.py +0 -223
  230. {myokit-1.33.9 → myokit-1.35.0}/LICENSE.txt +0 -0
  231. {myokit-1.33.9 → myokit-1.35.0}/MANIFEST.in +0 -0
  232. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/find.png +0 -0
  233. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-datablock-viewer-128.xpm +0 -0
  234. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-datablock-viewer-16.xpm +0 -0
  235. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-datablock-viewer-24.xpm +0 -0
  236. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-datablock-viewer-256.xpm +0 -0
  237. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-datablock-viewer-32.xpm +0 -0
  238. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-datablock-viewer-48.xpm +0 -0
  239. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-datablock-viewer-64.xpm +0 -0
  240. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-datablock-viewer-96.xpm +0 -0
  241. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-datablock-viewer.ico +0 -0
  242. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-datablock-viewer.png +0 -0
  243. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-ide-128.xpm +0 -0
  244. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-ide-16.xpm +0 -0
  245. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-ide-24.xpm +0 -0
  246. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-ide-256.xpm +0 -0
  247. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-ide-32.xpm +0 -0
  248. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-ide-48.xpm +0 -0
  249. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-ide-64.xpm +0 -0
  250. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-ide-96.xpm +0 -0
  251. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-ide.ico +0 -0
  252. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/icon-ide.png +0 -0
  253. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/new.png +0 -0
  254. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/open.png +0 -0
  255. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/redo.png +0 -0
  256. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/run.png +0 -0
  257. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/save.png +0 -0
  258. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/gui/undo.png +0 -0
  259. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/install-lin/myokit-datablock-viewer.desktop +0 -0
  260. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/install-lin/myokit-datalog-viewer.desktop +0 -0
  261. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/install-lin/myokit-ide.desktop +0 -0
  262. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/install-lin/myokit.lang +0 -0
  263. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/install-lin/x-abf.xml +0 -0
  264. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/install-lin/x-cellml.xml +0 -0
  265. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/install-lin/x-myokit.xml +0 -0
  266. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/install-lin/x-wcp.xml +0 -0
  267. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/install-win/menu.json +7 -7
  268. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/LICENSE +0 -0
  269. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes.h +0 -0
  270. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes_direct.h +0 -0
  271. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes_ls.h +0 -0
  272. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/nvector/nvector_serial.h +0 -0
  273. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sundials/sundials_config.h +0 -0
  274. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sundials/sundials_dense.h +0 -0
  275. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sundials/sundials_direct.h +0 -0
  276. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sundials/sundials_export.h +0 -0
  277. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sundials/sundials_iterative.h +0 -0
  278. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sundials/sundials_linearsolver.h +0 -0
  279. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sundials/sundials_matrix.h +0 -0
  280. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sundials/sundials_nonlinearsolver.h +0 -0
  281. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sundials/sundials_nvector.h +0 -0
  282. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sundials/sundials_types.h +0 -0
  283. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sundials/sundials_version.h +0 -0
  284. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sunlinsol/sunlinsol_dense.h +0 -0
  285. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/include/sunmatrix/sunmatrix_dense.h +0 -0
  286. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/lib/sundials_cvodes.dll +0 -0
  287. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/lib/sundials_cvodes.lib +0 -0
  288. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/lib/sundials_nvecserial.dll +0 -0
  289. {myokit-1.33.9 → myokit-1.35.0}/myokit/_bin/sundials-win-vs/lib/sundials_nvecserial.lib +0 -0
  290. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/compiler.c +0 -0
  291. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/opencl.c +0 -0
  292. {myokit-1.33.9 → myokit-1.35.0}/myokit/_sim/sundials.c +0 -0
  293. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/matlab/template/constants.m +0 -0
  294. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/matlab/template/ifthenelse.m +0 -0
  295. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/matlab/template/model.m +0 -0
  296. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/matlab/template/model_wrapper.m +0 -0
  297. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/opencl/template/plot.py +0 -0
  298. /myokit-1.33.9/myokit/formats/opencl/template/test → /myokit-1.35.0/myokit/formats/opencl/template/test.sh +0 -0
  299. {myokit-1.33.9 → myokit-1.35.0}/myokit/formats/stan/template/run.py +0 -0
  300. {myokit-1.33.9 → myokit-1.35.0}/myokit/lib/__init__.py +0 -0
  301. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/beeler-1977-model-compare-a.mmt +0 -0
  302. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/beeler-1977-model.mmt +0 -0
  303. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/beeler-1977-protocol.mmt +0 -0
  304. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/beeler-1977-script.mmt +0 -0
  305. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/beeler-1977-units.mmt +0 -0
  306. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/conditional.mmt +0 -0
  307. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/cv1d.mmt +0 -0
  308. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/cv1d.zip +0 -0
  309. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/decker-2009.mmt +0 -0
  310. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/decker.model +0 -0
  311. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/dn-1985-normalised.mmt +0 -0
  312. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/dom-markov.mmt +0 -0
  313. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/abf-protocol.pro +0 -0
  314. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/abf-v1.abf +0 -0
  315. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/abf-v2.abf +0 -0
  316. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/cellml/LICENSE +0 -0
  317. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/cellml/br-1977-dot.cellml +0 -0
  318. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/cellml/br-1977.cellml +0 -0
  319. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/cellml/corrias.cellml +0 -0
  320. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/cellml/decker-2009.cellml +0 -0
  321. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/cellml/documentation.cellml +0 -0
  322. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/cellml/invalid-file.cellml +0 -0
  323. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/cellml/lr-1991-exported-1.cellml +0 -0
  324. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/cellml/lr-1991-exported-2.cellml +0 -0
  325. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-00-valid-file.channelml +0 -0
  326. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-01-wrong-root.channelml +0 -0
  327. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-02-no-channel-type.channelml +0 -0
  328. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-03-overlapping-name.channelml +0 -0
  329. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-04-no-cvr.channelml +0 -0
  330. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-05-two-cvrs.channelml +0 -0
  331. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-06-no-q10.channelml +0 -0
  332. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-07-three-transitions.channelml +0 -0
  333. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-08-no-closed-to-open.channelml +0 -0
  334. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-09-no-open-to-closed.channelml +0 -0
  335. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-10-tco-bad-expression.channelml +0 -0
  336. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-11-toc-bad-expression.channelml +0 -0
  337. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-12-no-steady-state.channelml +0 -0
  338. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-13-no-time-course.channelml +0 -0
  339. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-14-inf-bad-expression.channelml +0 -0
  340. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-15-tau-bad-expression.channelml +0 -0
  341. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-16-no-gates.channelml +0 -0
  342. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-17-invalid-name.channelml +0 -0
  343. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/channelml/ch-18-c-style-if.channelml +0 -0
  344. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/sbml/00004-sbml-l2v1-modified.xml +0 -0
  345. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/sbml/00004-sbml-l3v2-modified.xml +0 -0
  346. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/sbml/HodgkinHuxley.xml +0 -0
  347. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/sbml/LICENSE +0 -0
  348. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/sbml/model/00001-sbml-l3v2.xml +0 -0
  349. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/sbml/model/00004-sbml-l3v2.xml +0 -0
  350. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/sbml/model/01103-sbml-l3v2.xml +0 -0
  351. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/sbml/result/00001-results.csv +0 -0
  352. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/sbml/result/00004-results.csv +0 -0
  353. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/sbml/result/01103-results.csv +0 -0
  354. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/formats/wcp-file.wcp +0 -0
  355. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad1d-1-not-enough-files.zip +0 -0
  356. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad1d-2-no-header.zip +0 -0
  357. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad1d-3-no-data.zip +0 -0
  358. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad1d-4-not-a-zip.zip +0 -0
  359. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad1d-5-bad-data-type.zip +0 -0
  360. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad1d-6-time-too-short.zip +0 -0
  361. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad1d-7-0d-too-short.zip +0 -0
  362. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad1d-8-1d-too-short.zip +0 -0
  363. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad2d-1-not-enough-files.zip +0 -0
  364. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad2d-2-no-header.zip +0 -0
  365. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad2d-3-no-data.zip +0 -0
  366. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad2d-4-not-a-zip.zip +0 -0
  367. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad2d-5-bad-data-type.zip +0 -0
  368. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad2d-6-time-too-short.zip +0 -0
  369. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad2d-7-0d-too-short.zip +0 -0
  370. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/bad2d-8-2d-too-short.zip +0 -0
  371. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/badlog-1-no-data.zip +0 -0
  372. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/badlog-2-no-structure.zip +0 -0
  373. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/badlog-3-not-a-zip.zip +0 -0
  374. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/badlog-4-invalid-n-fields.zip +0 -0
  375. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/badlog-5-invalid-data-size.zip +0 -0
  376. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/badlog-6-bad-data-type.zip +0 -0
  377. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/badlog-7-not-enough-data.zip +0 -0
  378. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/block2d.mmt +0 -0
  379. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/block2d.zip +0 -0
  380. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-1-empty.csv +0 -0
  381. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-10-just-spaces.csv +0 -0
  382. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-11-just-a-semicolon.csv +0 -0
  383. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-12-bad-header.csv +0 -0
  384. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-13-header-with-empty-1.csv +0 -0
  385. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-14-header-with-empty-2.csv +0 -0
  386. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-15-header-with-empty-3.csv +0 -0
  387. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-16-wrong-columns-in-data.csv +0 -0
  388. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-17-non-float-data.csv +0 -0
  389. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-2-windows.csv +0 -0
  390. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-3-old-mac.csv +0 -0
  391. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-4-empty-lines.csv +0 -0
  392. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-5-semicolons.csv +0 -0
  393. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-6-open-string.csv +0 -0
  394. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-7-empty-lines-2.csv +0 -0
  395. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-8-unquoted-header.csv +0 -0
  396. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog-9-double-quoted-header.csv +0 -0
  397. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/datalog.csv +0 -0
  398. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/io/goodlog.zip +0 -0
  399. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/lr-1991-dep.mmt +0 -0
  400. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/lr-1991-fitting.mmt +0 -0
  401. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/lr-1991-testing.mmt +0 -0
  402. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/lr-1991.mmt +0 -0
  403. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/multi/beeler-1977-protocol.mmt +0 -0
  404. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/multi/beeler-1977-script.mmt +0 -0
  405. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/multi/beeler-no-name.mmt +0 -0
  406. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/multi/lr-1991.mmt +0 -0
  407. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/multi/not-a-model.csv +0 -0
  408. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/multi/subdir/beeler-no-name.mmt +0 -0
  409. {myokit-1.33.9 → myokit-1.35.0}/myokit/tests/data/noble-1962.mmt +0 -0
  410. {myokit-1.33.9 → myokit-1.35.0}/myokit.egg-info/dependency_links.txt +0 -0
  411. {myokit-1.33.9 → myokit-1.35.0}/myokit.egg-info/not-zip-safe +0 -0
  412. {myokit-1.33.9 → myokit-1.35.0}/myokit.egg-info/top_level.txt +0 -0
  413. {myokit-1.33.9 → myokit-1.35.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: myokit
3
- Version: 1.33.9
3
+ Version: 1.35.0
4
4
  Summary: A simple interface to cardiac cellular electrophysiology
5
5
  Home-page: http://myokit.org
6
6
  Author: Michael Clerx
@@ -9,12 +9,10 @@ License: BSD 3-clause license
9
9
  Project-URL: Bug Tracker, https://github.com/MichaelClerx/myokit/issues
10
10
  Project-URL: Documentation, http://docs.myokit.org
11
11
  Project-URL: Source Code, https://github.com/MichaelClerx/myokit
12
- Platform: UNKNOWN
13
12
  Classifier: Development Status :: 5 - Production/Stable
14
13
  Classifier: Intended Audience :: Science/Research
15
14
  Classifier: License :: OSI Approved :: BSD License
16
15
  Classifier: Operating System :: OS Independent
17
- Classifier: Programming Language :: Python :: 2.7
18
16
  Classifier: Programming Language :: Python :: 3
19
17
  Classifier: Topic :: Scientific/Engineering
20
18
  Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
@@ -22,6 +20,7 @@ Classifier: Topic :: Scientific/Engineering :: Chemistry
22
20
  Classifier: Topic :: Scientific/Engineering :: Mathematics
23
21
  Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
24
22
  Classifier: Topic :: Scientific/Engineering :: Physics
23
+ Requires-Python: >=3.7
25
24
  Description-Content-Type: text/markdown
26
25
  Provides-Extra: docs
27
26
  Provides-Extra: dev
@@ -31,10 +30,10 @@ Provides-Extra: pyqt
31
30
  Provides-Extra: pyside
32
31
  License-File: LICENSE.txt
33
32
 
34
- [![Ubuntu unit tests](https://github.com/MichaelClerx/myokit/workflows/Ubuntu%20unit%20tests/badge.svg)](https://github.com/MichaelClerx/myokit/actions?query=workflow%3A"Ubuntu+unit+tests")
35
- [![MacOS unit tests](https://github.com/MichaelClerx/myokit/workflows/MacOS%20unit%20tests/badge.svg)](https://github.com/MichaelClerx/myokit/actions?query=workflow%3A"MacOS+unit+tests")
36
- [![Windows unit tests](https://github.com/MichaelClerx/myokit/workflows/Windows%20unit%20tests/badge.svg)](https://github.com/MichaelClerx/myokit/actions?query=workflow%3A"Windows+unit+tests")
37
- [![Windows Miniconda test](https://github.com/MichaelClerx/myokit/workflows/Windows%20Miniconda%20test/badge.svg)](https://github.com/MichaelClerx/myokit/actions?query=workflow%3A"Windows+Miniconda+test")
33
+ [![Ubuntu unit tests](https://github.com/myokit/myokit/actions/workflows/unit-tests-ubuntu.yml/badge.svg)](https://github.com/myokit/myokit/actions/workflows/unit-tests-ubuntu.yml)
34
+ [![MacOS unit tests](https://github.com/myokit/myokit/actions/workflows/unit-tests-macos.yml/badge.svg)](https://github.com/myokit/myokit/actions/workflows/unit-tests-macos.yml)
35
+ [![Windows unit tests](https://github.com/myokit/myokit/actions/workflows/unit-tests-windows.yml/badge.svg)](https://github.com/myokit/myokit/actions/workflows/unit-tests-windows.yml)
36
+ [![Windows Miniconda test](https://github.com/myokit/myokit/actions/workflows/unit-tests-windows-miniconda.yml/badge.svg)](https://github.com/myokit/myokit/actions/workflows/unit-tests-windows-miniconda.yml)
38
37
  [![codecov](https://codecov.io/gh/myokit/myokit/branch/main/graph/badge.svg)](https://codecov.io/gh/myokit/myokit)
39
38
  [![Documentation Status](https://readthedocs.org/projects/myokit/badge/?version=latest)](https://myokit.readthedocs.io/?badge=latest)
40
39
 
@@ -107,5 +106,3 @@ New features are best discussed in an issue before starting any implementation w
107
106
  If you use Myokit in your research, please cite it using the information in our [CITATION file](https://github.com/MichaelClerx/myokit/blob/main/CITATION).
108
107
 
109
108
  I like to [keep track of who's using Myokit](http://myokit.org/publications/) (for my CV!). If you are using Myokit for teaching, I'd love to hear about it. You can drop me a line at michael[at]myokit.org.
110
-
111
-
@@ -1,7 +1,7 @@
1
- [![Ubuntu unit tests](https://github.com/MichaelClerx/myokit/workflows/Ubuntu%20unit%20tests/badge.svg)](https://github.com/MichaelClerx/myokit/actions?query=workflow%3A"Ubuntu+unit+tests")
2
- [![MacOS unit tests](https://github.com/MichaelClerx/myokit/workflows/MacOS%20unit%20tests/badge.svg)](https://github.com/MichaelClerx/myokit/actions?query=workflow%3A"MacOS+unit+tests")
3
- [![Windows unit tests](https://github.com/MichaelClerx/myokit/workflows/Windows%20unit%20tests/badge.svg)](https://github.com/MichaelClerx/myokit/actions?query=workflow%3A"Windows+unit+tests")
4
- [![Windows Miniconda test](https://github.com/MichaelClerx/myokit/workflows/Windows%20Miniconda%20test/badge.svg)](https://github.com/MichaelClerx/myokit/actions?query=workflow%3A"Windows+Miniconda+test")
1
+ [![Ubuntu unit tests](https://github.com/myokit/myokit/actions/workflows/unit-tests-ubuntu.yml/badge.svg)](https://github.com/myokit/myokit/actions/workflows/unit-tests-ubuntu.yml)
2
+ [![MacOS unit tests](https://github.com/myokit/myokit/actions/workflows/unit-tests-macos.yml/badge.svg)](https://github.com/myokit/myokit/actions/workflows/unit-tests-macos.yml)
3
+ [![Windows unit tests](https://github.com/myokit/myokit/actions/workflows/unit-tests-windows.yml/badge.svg)](https://github.com/myokit/myokit/actions/workflows/unit-tests-windows.yml)
4
+ [![Windows Miniconda test](https://github.com/myokit/myokit/actions/workflows/unit-tests-windows-miniconda.yml/badge.svg)](https://github.com/myokit/myokit/actions/workflows/unit-tests-windows-miniconda.yml)
5
5
  [![codecov](https://codecov.io/gh/myokit/myokit/branch/main/graph/badge.svg)](https://codecov.io/gh/myokit/myokit)
6
6
  [![Documentation Status](https://readthedocs.org/projects/myokit/badge/?version=latest)](https://myokit.readthedocs.io/?badge=latest)
7
7
 
@@ -20,24 +20,11 @@ and then a myokit.Simulation which you can .run() to obtain simulated results.
20
20
  # Without an explicit __all__, importing * will result in importing all
21
21
  # functions and classes described below. No submodules of myokit will be
22
22
  # loaded!
23
-
24
-
25
23
  #
26
24
  # GUI and graphical modules should not be auto-included because they define a
27
25
  # matplotlib backend to use. If the user requires a different backend, this
28
26
  # will generate an error.
29
27
  #
30
- from __future__ import absolute_import, division
31
- from __future__ import print_function, unicode_literals
32
-
33
-
34
- #
35
- # Configure logging
36
- #
37
- import logging # noqa (not at top of file)
38
- logging.basicConfig()
39
- del logging
40
-
41
28
 
42
29
  #
43
30
  # Check python version
@@ -52,27 +39,14 @@ del logging
52
39
  #
53
40
  import sys # noqa
54
41
  if sys.hexversion < 0x03000000: # pragma: no cover
42
+ raise Exception('This version of Myokit does not support Python 2.')
43
+ elif sys.hexversion < 0x03070000: # pragma: no cover
55
44
  import logging # noqa
56
45
  log = logging.getLogger(__name__)
57
46
  log.warning(
58
- 'Myokit support for Python 2.7 is nearing the end of its lifetime.'
59
- ' Please upgrade as soon as possible! Detected Python version: '
60
- + sys.version)
61
- del logging, log
62
- elif sys.hexversion < 0x03060000: # pragma: no cover
63
- import logging # noqa
64
- log = logging.getLogger(__name__)
65
- log.warning(
66
- 'Myokit is not tested on Python 3 versions older than 3.6. Detected'
47
+ 'Myokit is not tested on Python 3 versions older than 3.7. Detected'
67
48
  ' Python version: ' + sys.version)
68
49
  del logging, log
69
-
70
-
71
- # Exec() that works with Python 2 versions before 2.7.9
72
- if sys.hexversion < 0x020709F0: # pragma: no python 3 cover
73
- from ._exec_old import _exec # noqa
74
- else:
75
- from ._exec_new import _exec # noqa
76
50
  del sys
77
51
 
78
52
 
@@ -295,11 +269,11 @@ DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
295
269
  TIME_FORMAT = '%H:%M:%S'
296
270
 
297
271
  #
298
- # GUI: Favour PySide or PyQt
272
+ # GUI: Favor PySide or PyQt
299
273
  #
274
+ FORCE_PYQT6 = False
300
275
  FORCE_PYQT5 = False
301
- FORCE_PYQT4 = False
302
- FORCE_PYSIDE = False
276
+ FORCE_PYSIDE6 = False
303
277
  FORCE_PYSIDE2 = False
304
278
 
305
279
 
@@ -341,6 +315,7 @@ from ._err import ( # noqa
341
315
  GenerationError,
342
316
  IllegalAliasError,
343
317
  IllegalReferenceError,
318
+ IllegalReferenceInInitialValueError,
344
319
  ImportError,
345
320
  IncompatibleModelError,
346
321
  IncompatibleUnitError,
@@ -354,7 +329,6 @@ from ._err import ( # noqa
354
329
  MissingRhsError,
355
330
  MissingTimeVariableError,
356
331
  MyokitError,
357
- NonLiteralValueError,
358
332
  NumericalError,
359
333
  ParseError,
360
334
  ProtocolEventError,
@@ -462,6 +436,7 @@ from ._protocol import ( # noqa
462
436
  PacingSystem,
463
437
  Protocol,
464
438
  ProtocolEvent,
439
+ TimeSeriesProtocol,
465
440
  )
466
441
  from . import pacing # noqa
467
442
 
@@ -505,6 +480,7 @@ from ._aux import ( # noqa
505
480
  default_script,
506
481
  ModelComparison,
507
482
  numpy_writer,
483
+ _prepare_bindings,
508
484
  python_writer,
509
485
  run,
510
486
  step,
@@ -564,11 +540,8 @@ from ._sim.opencl import ( # noqa
564
540
  )
565
541
  from ._sim.cmodel import CModel # noqa
566
542
  from ._sim.cvodessim import Simulation # noqa
567
- from ._sim.cvodesim import Simulation as LegacySimulation # noqa
568
543
  from ._sim.cable import Simulation1d # noqa
569
544
  from ._sim.rhs import RhsBenchmarker # noqa
570
- from ._sim.icsim import ICSimulation # noqa
571
- from ._sim.psim import PSimulation # noqa
572
545
  from ._sim.jacobian import JacobianTracer, JacobianCalculator # noqa
573
546
  from ._sim.openclsim import SimulationOpenCL # noqa
574
547
  from ._sim.fiber_tissue import FiberTissueSimulation # noqa
@@ -4,9 +4,6 @@
4
4
  # This file is part of Myokit.
5
5
  # See http://myokit.org for copyright, sharing, and licensing details.
6
6
  #
7
- from __future__ import absolute_import, division
8
- from __future__ import print_function, unicode_literals
9
-
10
7
  import warnings
11
8
 
12
9
  _line_width = 79
@@ -29,6 +26,55 @@ def colored(color, text):
29
26
  return colors[color] + str(text) + colors['normal']
30
27
 
31
28
 
29
+ def qtforce(pyqt6=False, pyqt5=False, pyside6=False, pyside2=False):
30
+ """ Enforce a chosen Qt version. """
31
+
32
+ if pyqt6 or pyqt5 or pyside6 or pyside2:
33
+ import myokit
34
+
35
+ myokit.FORCE_PYQT6 = False
36
+ myokit.FORCE_PYQT5 = False
37
+ myokit.FORCE_PYSIDE6 = False
38
+ myokit.FORCE_PYSIDE2 = False
39
+
40
+ if pyqt6:
41
+ myokit.FORCE_PYQT6 = True
42
+ elif pyside6:
43
+ myokit.FORCE_PYSIDE6 = True
44
+ elif pyqt5:
45
+ myokit.FORCE_PYQT5 = True
46
+ elif pyside2:
47
+ myokit.FORCE_PYSIDE2 = True
48
+
49
+ import myokit.gui
50
+ print('Using backend: ' + myokit.gui.backend)
51
+
52
+
53
+ def add_qtforce_arguments(parser):
54
+ """ Updates a parser with arguments to force a Qt version. """
55
+
56
+ parser.add_argument(
57
+ '--pyqt6',
58
+ action='store_true',
59
+ help='Run using the PyQt6 backend.',
60
+ )
61
+ parser.add_argument(
62
+ '--pyqt5',
63
+ action='store_true',
64
+ help='Run using the PyQt5 backend.',
65
+ )
66
+ parser.add_argument(
67
+ '--pyside6',
68
+ action='store_true',
69
+ help='Run using the PySide6 backend.',
70
+ )
71
+ parser.add_argument(
72
+ '--pyside2',
73
+ action='store_true',
74
+ help='Run using the PySide2 backend.',
75
+ )
76
+
77
+
32
78
  def main():
33
79
  """
34
80
  Parses command line arguments.
@@ -88,36 +134,13 @@ def main():
88
134
  #
89
135
  # Data block viewer
90
136
  #
91
-
92
- def block(filename, pyqt4=False, pyqt5=False, pyside=False, pyside2=False):
137
+ def block(filename, pyqt6=False, pyqt5=False, pyside6=False, pyside2=False):
93
138
  """
94
139
  Runs the DataBlock viewer.
95
140
  """
96
- import myokit
97
- if pyqt5:
98
- myokit.FORCE_PYQT5 = True
99
- myokit.FORCE_PYQT4 = False
100
- myokit.FORCE_PYSIDE = False
101
- myokit.FORCE_PYSIDE2 = False
102
- elif pyqt4:
103
- myokit.FORCE_PYQT5 = False
104
- myokit.FORCE_PYQT4 = True
105
- myokit.FORCE_PYSIDE = False
106
- myokit.FORCE_PYSIDE2 = False
107
- elif pyside:
108
- myokit.FORCE_PYQT5 = False
109
- myokit.FORCE_PYQT4 = False
110
- myokit.FORCE_PYSIDE = True
111
- myokit.FORCE_PYSIDE2 = False
112
- elif pyside2:
113
- myokit.FORCE_PYQT5 = False
114
- myokit.FORCE_PYQT4 = False
115
- myokit.FORCE_PYSIDE = False
116
- myokit.FORCE_PYSIDE2 = True
117
- import myokit.gui
141
+ qtforce(pyqt6, pyqt5, pyside6, pyside2)
142
+
118
143
  import myokit.gui.datablock_viewer
119
- if pyqt5 or pyqt4 or pyside or pyside2:
120
- print('Using backend: ' + myokit.gui.backend)
121
144
  myokit.gui.run(myokit.gui.datablock_viewer.DataBlockViewer, filename)
122
145
 
123
146
 
@@ -137,26 +160,7 @@ def add_block_parser(subparsers):
137
160
  metavar='filename',
138
161
  help='The DataBlock zip file to open (optional).',
139
162
  )
140
- parser.add_argument(
141
- '--pyqt5',
142
- action='store_true',
143
- help='Run the DataBlock Viewer using the PyQt5 backend.',
144
- )
145
- parser.add_argument(
146
- '--pyqt4',
147
- action='store_true',
148
- help='Run the DataBlock Viewer using the PyQt4 backend.',
149
- )
150
- parser.add_argument(
151
- '--pyside',
152
- action='store_true',
153
- help='Run the DataBlock Viewer using the PySide backend.',
154
- )
155
- parser.add_argument(
156
- '--pyside2',
157
- action='store_true',
158
- help='Run the DataBlock Viewer using the PySide2 backend.',
159
- )
163
+ add_qtforce_arguments(parser)
160
164
  parser.set_defaults(func=block)
161
165
 
162
166
 
@@ -240,7 +244,7 @@ def add_compiler_parser(subparsers):
240
244
 
241
245
  def debug(source, variable, deps=False):
242
246
  """
243
- Shows how a single variable is calculated from the initial conditions.
247
+ Shows how a single variable is calculated from the initial values.
244
248
  """
245
249
  import myokit
246
250
 
@@ -261,8 +265,8 @@ def add_debug_parser(subparsers):
261
265
  parser = subparsers.add_parser(
262
266
  'debug',
263
267
  description='Shows how a single variable is calculated from the '
264
- 'initial conditions. The variable\'s equation and value'
265
- ' are displayed, along with the value and formula of any'
268
+ ' initial values. The variable\'s equation and value are'
269
+ ' displayed, along with the value and formula of any'
266
270
  ' nested variables and the values of all dependencies.',
267
271
  help='Shows how a single variable is calculated.',
268
272
  )
@@ -421,10 +425,7 @@ def install():
421
425
  if plat == 'Linux':
422
426
  yesno = \
423
427
  'Install launcher icons and file type associations for Gnome/KDE? '
424
- try:
425
- yesno = raw_input(yesno)
426
- except NameError: # pragma: no python 2 cover
427
- yesno = input(yesno)
428
+ yesno = input(yesno)
428
429
  yesno = (yesno.strip().lower())[:1] == 'y'
429
430
 
430
431
  if yesno:
@@ -432,10 +433,7 @@ def install():
432
433
 
433
434
  elif plat == 'Windows':
434
435
  yesno = 'Install start menu shortcuts? '
435
- try:
436
- yesno = raw_input(yesno)
437
- except NameError: # pragma: no python 2 cover
438
- yesno = input(yesno)
436
+ yesno = input(yesno)
439
437
  yesno = (yesno.strip().lower())[:1] == 'y'
440
438
 
441
439
  if yesno:
@@ -587,38 +585,17 @@ def add_icon_parser(subparsers):
587
585
  # IDE
588
586
  #
589
587
 
590
- def ide(filename, pyqt4=False, pyqt5=False, pyside=False, pyside2=False):
588
+ def ide(filename, pyqt6=False, pyqt5=False, pyside6=False, pyside2=False):
591
589
  """
592
590
  Runs the Myokit IDE.
593
591
  """
592
+ qtforce(pyqt6, pyqt5, pyside6, pyside2)
593
+
594
594
  import os
595
- import myokit
596
- if pyqt5:
597
- myokit.FORCE_PYQT5 = True
598
- myokit.FORCE_PYQT4 = False
599
- myokit.FORCE_PYSIDE = False
600
- myokit.FORCE_PYSIDE2 = False
601
- elif pyqt4:
602
- myokit.FORCE_PYQT5 = False
603
- myokit.FORCE_PYQT4 = True
604
- myokit.FORCE_PYSIDE = False
605
- myokit.FORCE_PYSIDE2 = False
606
- elif pyside:
607
- myokit.FORCE_PYQT5 = False
608
- myokit.FORCE_PYQT4 = False
609
- myokit.FORCE_PYSIDE = True
610
- myokit.FORCE_PYSIDE2 = False
611
- elif pyside2:
612
- myokit.FORCE_PYQT5 = False
613
- myokit.FORCE_PYQT4 = False
614
- myokit.FORCE_PYSIDE = False
615
- myokit.FORCE_PYSIDE2 = True
616
- import myokit.gui
617
- import myokit.gui.ide
618
- if pyqt5 or pyqt4 or pyside or pyside2:
619
- print('Using backend: ' + myokit.gui.backend)
620
595
  if filename is not None:
621
596
  filename = os.path.abspath(os.path.expanduser(filename))
597
+
598
+ import myokit.gui.ide
622
599
  myokit.gui.run(myokit.gui.ide.MyokitIDE, filename)
623
600
 
624
601
 
@@ -638,26 +615,7 @@ def add_ide_parser(subparsers):
638
615
  metavar='filename',
639
616
  help='The mmt file to open (optional).',
640
617
  )
641
- parser.add_argument(
642
- '--pyqt5',
643
- action='store_true',
644
- help='Run the IDE using the PyQt5 backend.',
645
- )
646
- parser.add_argument(
647
- '--pyqt4',
648
- action='store_true',
649
- help='Run the IDE using the PyQt4 backend.',
650
- )
651
- parser.add_argument(
652
- '--pyside',
653
- action='store_true',
654
- help='Run the IDE using the PySide backend.',
655
- )
656
- parser.add_argument(
657
- '--pyside2',
658
- action='store_true',
659
- help='Run the DataBlock Viewer using the PySide2 backend.',
660
- )
618
+ add_qtforce_arguments(parser)
661
619
  parser.set_defaults(func=ide)
662
620
 
663
621
 
@@ -741,11 +699,12 @@ def add_import_parser(subparsers):
741
699
  # Log viewer
742
700
  #
743
701
 
744
- def log(filenames):
702
+ def log(filenames, pyqt6=False, pyqt5=False, pyside6=False, pyside2=False):
745
703
  """
746
704
  Runs the DataLog Viewer.
747
705
  """
748
- import myokit.gui
706
+ qtforce(pyqt6, pyqt5, pyside6, pyside2)
707
+
749
708
  import myokit.gui.datalog_viewer
750
709
  myokit.gui.run(myokit.gui.datalog_viewer.DataLogViewer, *filenames)
751
710
 
@@ -761,6 +720,7 @@ def add_log_parser(subparsers):
761
720
  description='Runs the DataLog Viewer (PROTOTYPE).',
762
721
  help='Runs the DataLog Viewer (PROTOTYPE).',
763
722
  )
723
+ add_qtforce_arguments(parser)
764
724
  parser.add_argument(
765
725
  'filenames',
766
726
  default=None,
@@ -867,10 +827,7 @@ def opencl_select():
867
827
  try:
868
828
  while True:
869
829
  x = 'Select device: '
870
- try:
871
- x = raw_input(x)
872
- except NameError: # pragma: no python 2 cover
873
- x = input(x) # lgtm [py/use-of-input]
830
+ x = input(x)
874
831
  x = x.strip()
875
832
  if x == '':
876
833
  x = None
@@ -932,10 +889,7 @@ def reset(force=False):
932
889
  remove = True
933
890
  else:
934
891
  yesno = 'Remove all Myokit settings files? '
935
- try:
936
- yesno = raw_input(yesno)
937
- except NameError: # pragma: no python 2 cover
938
- yesno = input(yesno) # lgtm [py/use-of-input]
892
+ yesno = input(yesno)
939
893
  yesno = yesno.strip().lower()
940
894
  remove = (yesno[:1] == 'y')
941
895
  if remove:
@@ -1290,11 +1244,6 @@ def add_test_parser(subparsers):
1290
1244
  'examples', help='Test example notebooks.')
1291
1245
  example_parser.set_defaults(testfunc=test_examples)
1292
1246
 
1293
- # Publication examples
1294
- pub_parser = subparsers.add_parser(
1295
- 'pub', help='Run publication examples.')
1296
- pub_parser.set_defaults(testfunc=test_examples_pub)
1297
-
1298
1247
  # Style tests
1299
1248
  style_parser = subparsers.add_parser('style', help='Run code style tests.')
1300
1249
  style_parser.set_defaults(testfunc=test_style)
@@ -1334,7 +1283,7 @@ def test_coverage(args):
1334
1283
  try:
1335
1284
  print('Gathering coverage data')
1336
1285
  p = subprocess.Popen([
1337
- 'python3',
1286
+ sys.executable,
1338
1287
  '-m',
1339
1288
  'coverage',
1340
1289
  'run',
@@ -1358,7 +1307,7 @@ def test_coverage(args):
1358
1307
 
1359
1308
  print('Generating coverage report.')
1360
1309
  p = subprocess.Popen([
1361
- 'python3',
1310
+ sys.executable,
1362
1311
  '-m',
1363
1312
  'coverage',
1364
1313
  'report',
@@ -1789,8 +1738,7 @@ def test_examples_single(root, path):
1789
1738
  p = subprocess.Popen(
1790
1739
  cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env
1791
1740
  )
1792
- stdout, stderr = p.communicate()
1793
- # TODO: Use p.communicate(timeout=3600) if Python3 only
1741
+ stdout, stderr = p.communicate(timeout=3600)
1794
1742
  if p.returncode != 0:
1795
1743
  # Show failing code, output and errors before returning
1796
1744
  print('ERROR')
@@ -1840,23 +1788,6 @@ def test_examples_all(root, books):
1840
1788
  print('ok: Successfully ran all (' + str(len(books)) + ') notebooks.')
1841
1789
 
1842
1790
 
1843
- def test_examples_pub(args):
1844
- """
1845
- Runs all publication examples, exits if one of them fails.
1846
- """
1847
- import os
1848
- import sys
1849
- import myokit
1850
-
1851
- # Get publications directory
1852
- path = os.path.join(myokit.DIR_MYOKIT, 'tests', 'publications')
1853
-
1854
- # PBMB 2016. Myokit: A simple interface to cardiac cellular
1855
- # electrophysiology
1856
- if test_mmt_files(os.path.join(path, 'pbmb-2016')):
1857
- sys.exit(1)
1858
-
1859
-
1860
1791
  def test_examples_web(args):
1861
1792
  """
1862
1793
  Runs all web examples, exits if one of them fails.
@@ -2209,4 +2140,7 @@ def add_video_parser(subparsers):
2209
2140
 
2210
2141
 
2211
2142
  if __name__ == '__main__':
2143
+ import logging
2144
+ logging.basicConfig()
2145
+
2212
2146
  main()