myokit 1.37.0__tar.gz → 1.37.1__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 (425) hide show
  1. {myokit-1.37.0/myokit.egg-info → myokit-1.37.1}/PKG-INFO +1 -1
  2. {myokit-1.37.0 → myokit-1.37.1}/myokit/_aux.py +4 -0
  3. {myokit-1.37.0 → myokit-1.37.1}/myokit/_datablock.py +10 -10
  4. {myokit-1.37.0 → myokit-1.37.1}/myokit/_datalog.py +40 -5
  5. {myokit-1.37.0 → myokit-1.37.1}/myokit/_myokit_version.py +1 -1
  6. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/axon/_abf.py +11 -4
  7. myokit-1.37.1/myokit/formats/diffsl/__init__.py +60 -0
  8. myokit-1.37.1/myokit/formats/diffsl/_ewriter.py +145 -0
  9. myokit-1.37.1/myokit/formats/diffsl/_exporter.py +435 -0
  10. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/heka/_patchmaster.py +337 -113
  11. {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/datalog_viewer.py +17 -3
  12. myokit-1.37.1/myokit/tests/data/io/bad1d-2-no-header.zip +0 -0
  13. myokit-1.37.1/myokit/tests/data/io/bad1d-3-no-data.zip +0 -0
  14. myokit-1.37.1/myokit/tests/data/io/bad1d-5-bad-data-type.zip +0 -0
  15. myokit-1.37.1/myokit/tests/data/io/bad1d-6-time-too-short.zip +0 -0
  16. myokit-1.37.1/myokit/tests/data/io/bad1d-7-0d-too-short.zip +0 -0
  17. myokit-1.37.1/myokit/tests/data/io/bad1d-8-1d-too-short.zip +0 -0
  18. myokit-1.37.1/myokit/tests/data/io/bad2d-2-no-header.zip +0 -0
  19. myokit-1.37.1/myokit/tests/data/io/bad2d-3-no-data.zip +0 -0
  20. myokit-1.37.1/myokit/tests/data/io/bad2d-4-not-a-zip.zip +1 -0
  21. myokit-1.37.1/myokit/tests/data/io/bad2d-5-bad-data-type.zip +0 -0
  22. myokit-1.37.1/myokit/tests/data/io/bad2d-8-2d-too-short.zip +0 -0
  23. myokit-1.37.1/myokit/tests/data/io/block1d.mmt +187 -0
  24. myokit-1.37.1/myokit/tests/data/io/datalog-11-just-a-semicolon.csv +1 -0
  25. myokit-1.37.1/myokit/tests/data/io/datalog-18-duplicate-keys.csv +4 -0
  26. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_aux.py +4 -0
  27. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_datablock.py +6 -6
  28. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_datalog.py +20 -0
  29. myokit-1.37.1/myokit/tests/test_formats_diffsl.py +728 -0
  30. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_exporters_run.py +3 -0
  31. {myokit-1.37.0 → myokit-1.37.1/myokit.egg-info}/PKG-INFO +1 -1
  32. {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/SOURCES.txt +6 -0
  33. myokit-1.37.0/myokit/tests/data/io/bad1d-2-no-header.zip +0 -0
  34. myokit-1.37.0/myokit/tests/data/io/bad1d-3-no-data.zip +0 -0
  35. myokit-1.37.0/myokit/tests/data/io/bad1d-4-not-a-zip.zip +0 -105
  36. myokit-1.37.0/myokit/tests/data/io/bad1d-5-bad-data-type.zip +0 -0
  37. myokit-1.37.0/myokit/tests/data/io/bad1d-6-time-too-short.zip +0 -0
  38. myokit-1.37.0/myokit/tests/data/io/bad1d-7-0d-too-short.zip +0 -0
  39. myokit-1.37.0/myokit/tests/data/io/bad1d-8-1d-too-short.zip +0 -0
  40. myokit-1.37.0/myokit/tests/data/io/bad2d-2-no-header.zip +0 -0
  41. myokit-1.37.0/myokit/tests/data/io/bad2d-3-no-data.zip +0 -0
  42. myokit-1.37.0/myokit/tests/data/io/bad2d-4-not-a-zip.zip +0 -105
  43. myokit-1.37.0/myokit/tests/data/io/bad2d-5-bad-data-type.zip +0 -0
  44. myokit-1.37.0/myokit/tests/data/io/bad2d-8-2d-too-short.zip +0 -0
  45. {myokit-1.37.0 → myokit-1.37.1}/LICENSE.txt +0 -0
  46. {myokit-1.37.0 → myokit-1.37.1}/MANIFEST.in +0 -0
  47. {myokit-1.37.0 → myokit-1.37.1}/README.md +0 -0
  48. {myokit-1.37.0 → myokit-1.37.1}/myokit/__init__.py +0 -0
  49. {myokit-1.37.0 → myokit-1.37.1}/myokit/__main__.py +0 -0
  50. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/example.mmt +0 -0
  51. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/find.png +0 -0
  52. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-128.xpm +0 -0
  53. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-16.xpm +0 -0
  54. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-24.xpm +0 -0
  55. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-256.xpm +0 -0
  56. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-32.xpm +0 -0
  57. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-48.xpm +0 -0
  58. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-64.xpm +0 -0
  59. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-96.xpm +0 -0
  60. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer.ico +0 -0
  61. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer.png +0 -0
  62. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-128.xpm +0 -0
  63. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-16.xpm +0 -0
  64. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-24.xpm +0 -0
  65. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-256.xpm +0 -0
  66. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-32.xpm +0 -0
  67. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-48.xpm +0 -0
  68. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-64.xpm +0 -0
  69. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-96.xpm +0 -0
  70. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide.ico +0 -0
  71. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide.png +0 -0
  72. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/new.png +0 -0
  73. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/open.png +0 -0
  74. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/redo.png +0 -0
  75. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/run.png +0 -0
  76. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/save.png +0 -0
  77. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/undo.png +0 -0
  78. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/myokit-datablock-viewer.desktop +0 -0
  79. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/myokit-datalog-viewer.desktop +0 -0
  80. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/myokit-ide.desktop +0 -0
  81. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/myokit.lang +0 -0
  82. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/x-abf.xml +0 -0
  83. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/x-cellml.xml +0 -0
  84. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/x-myokit.xml +0 -0
  85. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/x-wcp.xml +0 -0
  86. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-win/menu.json +0 -0
  87. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/LICENSE +0 -0
  88. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes.h +0 -0
  89. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes_direct.h +0 -0
  90. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes_ls.h +0 -0
  91. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/nvector/nvector_serial.h +0 -0
  92. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_config.h +0 -0
  93. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_dense.h +0 -0
  94. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_direct.h +0 -0
  95. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_export.h +0 -0
  96. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_iterative.h +0 -0
  97. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_linearsolver.h +0 -0
  98. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_matrix.h +0 -0
  99. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_nonlinearsolver.h +0 -0
  100. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_nvector.h +0 -0
  101. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_types.h +0 -0
  102. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_version.h +0 -0
  103. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sunlinsol/sunlinsol_dense.h +0 -0
  104. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sunmatrix/sunmatrix_dense.h +0 -0
  105. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/lib/sundials_cvodes.dll +0 -0
  106. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/lib/sundials_cvodes.lib +0 -0
  107. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/lib/sundials_nvecserial.dll +0 -0
  108. {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/lib/sundials_nvecserial.lib +0 -0
  109. {myokit-1.37.0 → myokit-1.37.1}/myokit/_config.py +0 -0
  110. {myokit-1.37.0 → myokit-1.37.1}/myokit/_err.py +0 -0
  111. {myokit-1.37.0 → myokit-1.37.1}/myokit/_expressions.py +0 -0
  112. {myokit-1.37.0 → myokit-1.37.1}/myokit/_io.py +0 -0
  113. {myokit-1.37.0 → myokit-1.37.1}/myokit/_model_api.py +0 -0
  114. {myokit-1.37.0 → myokit-1.37.1}/myokit/_parsing.py +0 -0
  115. {myokit-1.37.0 → myokit-1.37.1}/myokit/_progress.py +0 -0
  116. {myokit-1.37.0 → myokit-1.37.1}/myokit/_protocol.py +0 -0
  117. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/__init__.py +0 -0
  118. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cable.c +0 -0
  119. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cable.py +0 -0
  120. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cmodel.h +0 -0
  121. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cmodel.py +0 -0
  122. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/compiler.c +0 -0
  123. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/compiler.py +0 -0
  124. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cvodessim.c +0 -0
  125. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cvodessim.py +0 -0
  126. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/differential.hpp +0 -0
  127. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/fiber_tissue.c +0 -0
  128. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/fiber_tissue.py +0 -0
  129. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/jacobian.cpp +0 -0
  130. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/jacobian.py +0 -0
  131. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/mcl.h +0 -0
  132. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/opencl.c +0 -0
  133. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/opencl.py +0 -0
  134. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/openclsim.c +0 -0
  135. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/openclsim.cl +0 -0
  136. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/openclsim.py +0 -0
  137. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/pacing.h +0 -0
  138. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/rhs.c +0 -0
  139. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/rhs.py +0 -0
  140. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/sundials.c +0 -0
  141. {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/sundials.py +0 -0
  142. {myokit-1.37.0 → myokit-1.37.1}/myokit/_system.py +0 -0
  143. {myokit-1.37.0 → myokit-1.37.1}/myokit/_unit.py +0 -0
  144. {myokit-1.37.0 → myokit-1.37.1}/myokit/float.py +0 -0
  145. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/__init__.py +0 -0
  146. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/__init__.py +0 -0
  147. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/_ewriter.py +0 -0
  148. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/_exporter.py +0 -0
  149. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/template/cable.c +0 -0
  150. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/template/euler.c +0 -0
  151. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/template/sim.c +0 -0
  152. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/axon/__init__.py +0 -0
  153. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/axon/_atf.py +0 -0
  154. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/axon/_importer.py +0 -0
  155. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/__init__.py +0 -0
  156. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/_ewriter.py +0 -0
  157. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/_exporter.py +0 -0
  158. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/_importer.py +0 -0
  159. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v1/__init__.py +0 -0
  160. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v1/_api.py +0 -0
  161. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v1/_parser.py +0 -0
  162. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v1/_writer.py +0 -0
  163. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v2/__init__.py +0 -0
  164. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v2/_api.py +0 -0
  165. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v2/_parser.py +0 -0
  166. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v2/_writer.py +0 -0
  167. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/channelml/__init__.py +0 -0
  168. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/channelml/_importer.py +0 -0
  169. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cpp/__init__.py +0 -0
  170. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cpp/_ewriter.py +0 -0
  171. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cuda/__init__.py +0 -0
  172. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cuda/_ewriter.py +0 -0
  173. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cuda/_exporter.py +0 -0
  174. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cuda/template/kernel.cu +0 -0
  175. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/easyml/__init__.py +0 -0
  176. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/easyml/_ewriter.py +0 -0
  177. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/easyml/_exporter.py +0 -0
  178. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/heka/__init__.py +0 -0
  179. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/heka/_importer.py +0 -0
  180. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/html/__init__.py +0 -0
  181. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/html/_exporter.py +0 -0
  182. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/html/_flatten.py +0 -0
  183. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/latex/__init__.py +0 -0
  184. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/latex/_ewriter.py +0 -0
  185. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/latex/_exporter.py +0 -0
  186. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/mathml/__init__.py +0 -0
  187. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/mathml/_ewriter.py +0 -0
  188. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/mathml/_parser.py +0 -0
  189. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/__init__.py +0 -0
  190. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/_ewriter.py +0 -0
  191. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/_exporter.py +0 -0
  192. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/template/constants.m +0 -0
  193. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/template/ifthenelse.m +0 -0
  194. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/template/main.m +0 -0
  195. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/template/model.m +0 -0
  196. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/template/model_wrapper.m +0 -0
  197. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/__init__.py +0 -0
  198. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/_ewriter.py +0 -0
  199. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/_exporter.py +0 -0
  200. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/template/cable.c +0 -0
  201. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/template/kernel.cl +0 -0
  202. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/template/minilog.py +0 -0
  203. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/template/plot.py +0 -0
  204. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/template/test.sh +0 -0
  205. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/python/__init__.py +0 -0
  206. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/python/_ewriter.py +0 -0
  207. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/python/_exporter.py +0 -0
  208. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/python/template/sim.py +0 -0
  209. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sbml/__init__.py +0 -0
  210. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sbml/_api.py +0 -0
  211. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sbml/_importer.py +0 -0
  212. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sbml/_parser.py +0 -0
  213. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/stan/__init__.py +0 -0
  214. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/stan/_ewriter.py +0 -0
  215. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/stan/_exporter.py +0 -0
  216. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/stan/template/cell.stan +0 -0
  217. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/stan/template/run.py +0 -0
  218. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sympy/__init__.py +0 -0
  219. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sympy/_ereader.py +0 -0
  220. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sympy/_ewriter.py +0 -0
  221. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/wcp/__init__.py +0 -0
  222. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/wcp/_wcp.py +0 -0
  223. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/xml/__init__.py +0 -0
  224. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/xml/_exporter.py +0 -0
  225. {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/xml/_split.py +0 -0
  226. {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/__init__.py +0 -0
  227. {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/datablock_viewer.py +0 -0
  228. {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/explorer.py +0 -0
  229. {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/ide.py +0 -0
  230. {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/progress.py +0 -0
  231. {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/source.py +0 -0
  232. {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/vargrapher.py +0 -0
  233. {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/__init__.py +0 -0
  234. {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/deps.py +0 -0
  235. {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/guess.py +0 -0
  236. {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/hh.py +0 -0
  237. {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/markov.py +0 -0
  238. {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/multi.py +0 -0
  239. {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/plots.py +0 -0
  240. {myokit-1.37.0 → myokit-1.37.1}/myokit/pacing.py +0 -0
  241. {myokit-1.37.0 → myokit-1.37.1}/myokit/pype.py +0 -0
  242. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/__init__.py +0 -0
  243. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/ansic_event_based_pacing.py +0 -0
  244. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/ansic_time_series_pacing.py +0 -0
  245. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-model-compare-a.mmt +0 -0
  246. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-model-compare-b.mmt +0 -0
  247. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-model.mmt +0 -0
  248. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-protocol.mmt +0 -0
  249. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-script.mmt +0 -0
  250. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-units.mmt +0 -0
  251. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/clancy-1999-fitting.mmt +0 -0
  252. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/conditional.mmt +0 -0
  253. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/cv1d.mmt +0 -0
  254. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/cv1d.zip +0 -0
  255. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/decker-2009.mmt +0 -0
  256. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/decker.model +0 -0
  257. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/dn-1985-normalised.mmt +0 -0
  258. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/dom-markov.mmt +0 -0
  259. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/abf-protocol.pro +0 -0
  260. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/abf-v1.abf +0 -0
  261. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/abf-v2.abf +0 -0
  262. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/LICENSE +0 -0
  263. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/br-1977-dot.cellml +0 -0
  264. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/br-1977.cellml +0 -0
  265. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/corrias.cellml +0 -0
  266. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/decker-2009.cellml +0 -0
  267. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/documentation.cellml +0 -0
  268. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/invalid-file.cellml +0 -0
  269. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/lr-1991-exported-1.cellml +0 -0
  270. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/lr-1991-exported-2.cellml +0 -0
  271. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-00-valid-file.channelml +0 -0
  272. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-01-wrong-root.channelml +0 -0
  273. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-02-no-channel-type.channelml +0 -0
  274. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-03-overlapping-name.channelml +0 -0
  275. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-04-no-cvr.channelml +0 -0
  276. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-05-two-cvrs.channelml +0 -0
  277. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-06-no-q10.channelml +0 -0
  278. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-07-three-transitions.channelml +0 -0
  279. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-08-no-closed-to-open.channelml +0 -0
  280. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-09-no-open-to-closed.channelml +0 -0
  281. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-10-tco-bad-expression.channelml +0 -0
  282. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-11-toc-bad-expression.channelml +0 -0
  283. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-12-no-steady-state.channelml +0 -0
  284. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-13-no-time-course.channelml +0 -0
  285. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-14-inf-bad-expression.channelml +0 -0
  286. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-15-tau-bad-expression.channelml +0 -0
  287. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-16-no-gates.channelml +0 -0
  288. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-17-invalid-name.channelml +0 -0
  289. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-18-c-style-if.channelml +0 -0
  290. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/00004-sbml-l2v1-modified.xml +0 -0
  291. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/00004-sbml-l3v2-modified.xml +0 -0
  292. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/HodgkinHuxley.xml +0 -0
  293. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/LICENSE +0 -0
  294. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/model/00001-sbml-l3v2.xml +0 -0
  295. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/model/00004-sbml-l3v2.xml +0 -0
  296. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/model/01103-sbml-l3v2.xml +0 -0
  297. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/result/00001-results.csv +0 -0
  298. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/result/00004-results.csv +0 -0
  299. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/result/01103-results.csv +0 -0
  300. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/wcp-file-empty.wcp +0 -0
  301. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/wcp-file.wcp +0 -0
  302. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/bad1d-1-not-enough-files.zip +0 -0
  303. /myokit-1.37.0/myokit/tests/data/io/datalog-11-just-a-semicolon.csv → /myokit-1.37.1/myokit/tests/data/io/bad1d-4-not-a-zip.zip +0 -0
  304. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/bad2d-1-not-enough-files.zip +0 -0
  305. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/bad2d-6-time-too-short.zip +0 -0
  306. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/bad2d-7-0d-too-short.zip +0 -0
  307. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-1-no-data.zip +0 -0
  308. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-2-no-structure.zip +0 -0
  309. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-3-not-a-zip.zip +0 -0
  310. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-4-invalid-n-fields.zip +0 -0
  311. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-5-invalid-data-size.zip +0 -0
  312. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-6-bad-data-type.zip +0 -0
  313. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-7-not-enough-data.zip +0 -0
  314. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/block2d.mmt +0 -0
  315. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/block2d.zip +0 -0
  316. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-1-empty.csv +0 -0
  317. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-10-just-spaces.csv +0 -0
  318. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-12-bad-header.csv +0 -0
  319. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-13-header-with-empty-1.csv +0 -0
  320. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-14-header-with-empty-2.csv +0 -0
  321. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-15-header-with-empty-3.csv +0 -0
  322. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-16-wrong-columns-in-data.csv +0 -0
  323. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-17-non-float-data.csv +0 -0
  324. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-2-windows.csv +0 -0
  325. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-3-old-mac.csv +0 -0
  326. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-4-empty-lines.csv +0 -0
  327. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-5-semicolons.csv +0 -0
  328. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-6-open-string.csv +0 -0
  329. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-7-empty-lines-2.csv +0 -0
  330. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-8-unquoted-header.csv +0 -0
  331. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-9-double-quoted-header.csv +0 -0
  332. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog.csv +0 -0
  333. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/goodlog.zip +0 -0
  334. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/lr-1991-dep.mmt +0 -0
  335. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/lr-1991-fitting.mmt +0 -0
  336. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/lr-1991-testing.mmt +0 -0
  337. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/lr-1991.mmt +0 -0
  338. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/beeler-1977-protocol.mmt +0 -0
  339. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/beeler-1977-script.mmt +0 -0
  340. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/beeler-no-name.mmt +0 -0
  341. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/lr-1991.mmt +0 -0
  342. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/not-a-model.csv +0 -0
  343. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/subdir/beeler-no-name.mmt +0 -0
  344. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/noble-1962.mmt +0 -0
  345. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v1_api.py +0 -0
  346. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v1_parser.py +0 -0
  347. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v1_writer.py +0 -0
  348. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v2_api.py +0 -0
  349. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v2_parser.py +0 -0
  350. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v2_writer.py +0 -0
  351. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cmodel.py +0 -0
  352. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_compiler_detection.py +0 -0
  353. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_component.py +0 -0
  354. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_config.py +0 -0
  355. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_dependency_checking.py +0 -0
  356. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_expressions.py +0 -0
  357. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_float.py +0 -0
  358. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats.py +0 -0
  359. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_ansic.py +0 -0
  360. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_axon.py +0 -0
  361. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_cellml.py +0 -0
  362. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_channelml.py +0 -0
  363. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_cpp.py +0 -0
  364. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_cuda.py +0 -0
  365. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_easyml.py +0 -0
  366. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_html.py +0 -0
  367. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_latex.py +0 -0
  368. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_mathml_content.py +0 -0
  369. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_mathml_presentation.py +0 -0
  370. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_matlab.py +0 -0
  371. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_opencl.py +0 -0
  372. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_python.py +0 -0
  373. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_sbml.py +0 -0
  374. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_stan.py +0 -0
  375. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_sympy.py +0 -0
  376. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_wcp.py +0 -0
  377. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_io.py +0 -0
  378. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_jacobian_calculator.py +0 -0
  379. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_jacobian_tracer.py +0 -0
  380. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_deps.py +0 -0
  381. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_guess.py +0 -0
  382. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_hh.py +0 -0
  383. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_markov.py +0 -0
  384. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_multi.py +0 -0
  385. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_plots.py +0 -0
  386. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_meta.py +0 -0
  387. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_model.py +0 -0
  388. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_model_building.py +0 -0
  389. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_opencl_info.py +0 -0
  390. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_pacing_factory.py +0 -0
  391. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_pacing_system_c.py +0 -0
  392. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_pacing_system_py.py +0 -0
  393. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_parsing.py +0 -0
  394. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_progress_reporters.py +0 -0
  395. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_protocol.py +0 -0
  396. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_protocol_floating_point.py +0 -0
  397. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_protocol_time_series.py +0 -0
  398. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_pype.py +0 -0
  399. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_quantity.py +0 -0
  400. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_rhs_benchmarker.py +0 -0
  401. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_sbml_api.py +0 -0
  402. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_sbml_parser.py +0 -0
  403. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_1d.py +0 -0
  404. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_cvodes.py +0 -0
  405. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_cvodes_from_disk.py +0 -0
  406. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_fiber_tissue.py +0 -0
  407. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_log_interval.py +0 -0
  408. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_opencl.py +0 -0
  409. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_opencl_log_interval.py +0 -0
  410. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_opencl_vs_cvode.py +0 -0
  411. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_opencl_vs_sim1d.py +0 -0
  412. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_system_info.py +0 -0
  413. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_tools.py +0 -0
  414. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_unit.py +0 -0
  415. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_user_functions.py +0 -0
  416. {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_variable.py +0 -0
  417. {myokit-1.37.0 → myokit-1.37.1}/myokit/tools.py +0 -0
  418. {myokit-1.37.0 → myokit-1.37.1}/myokit/units.py +0 -0
  419. {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/dependency_links.txt +0 -0
  420. {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/entry_points.txt +0 -0
  421. {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/not-zip-safe +0 -0
  422. {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/requires.txt +0 -0
  423. {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/top_level.txt +0 -0
  424. {myokit-1.37.0 → myokit-1.37.1}/setup.cfg +0 -0
  425. {myokit-1.37.0 → myokit-1.37.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: myokit
3
- Version: 1.37.0
3
+ Version: 1.37.1
4
4
  Summary: A modeling and simulation tool for cardiac cellular electrophysiology
5
5
  Home-page: http://myokit.org
6
6
  Author: Michael Clerx
@@ -591,6 +591,10 @@ def step(model, initial=None, reference=None, ignore_errors=False):
591
591
  # Get initial state
592
592
  if initial is None:
593
593
  initial = model.initial_values(as_floats=True)
594
+ else:
595
+ # Convert initial values etc to floats. Will also be performed by
596
+ # evaluate_derivatives, but done here for the printing code below.
597
+ initial = model.map_to_state(initial)
594
598
 
595
599
  # Get evaluation at initial state
596
600
  values = model.evaluate_derivatives(
@@ -562,8 +562,8 @@ class DataBlock1d:
562
562
  end += n0
563
563
  if end > nb:
564
564
  raise myokit.DataBlockReadError(
565
- 'Unable to read DataBlock1d: Header indicates larger data'
566
- ' than found in the body.')
565
+ 'Unable to read DataBlock1d: Header indicates more time'
566
+ ' data than found in the body.')
567
567
  data = array.array(dtype)
568
568
  data.frombytes(body[start:end])
569
569
  if sys.byteorder == 'big': # pragma: no cover
@@ -583,7 +583,7 @@ class DataBlock1d:
583
583
  end += n0
584
584
  if end > nb:
585
585
  raise myokit.DataBlockReadError(
586
- 'Unable to read DataBlock1d: Header indicates larger'
586
+ 'Unable to read DataBlock1d: Header indicates more 0d'
587
587
  ' data than found in the body.')
588
588
  data = array.array(dtype)
589
589
  data.frombytes(body[start:end])
@@ -602,7 +602,7 @@ class DataBlock1d:
602
602
  end += n1
603
603
  if end > nb:
604
604
  raise myokit.DataBlockReadError(
605
- 'Unable to read DataBlock1d: Header indicates larger'
605
+ 'Unable to read DataBlock1d: Header indicates more 1d'
606
606
  ' data than found in the body.')
607
607
  data = array.array(dtype)
608
608
  data.frombytes(body[start:end])
@@ -1351,8 +1351,8 @@ class DataBlock2d:
1351
1351
  end += n0
1352
1352
  if end > nb:
1353
1353
  raise myokit.DataBlockReadError(
1354
- 'Unable to read DataBlock2d: Header indicates larger data'
1355
- ' than found in the body.')
1354
+ 'Unable to read DataBlock2d: Header indicates more time'
1355
+ ' data than found in the body.')
1356
1356
 
1357
1357
  data = array.array(dtype)
1358
1358
  data.frombytes(body[start:end])
@@ -1373,8 +1373,8 @@ class DataBlock2d:
1373
1373
  end += n0
1374
1374
  if end > nb:
1375
1375
  raise myokit.DataBlockReadError(
1376
- 'Unable to read DataBlock2d: Header indicates larger'
1377
- ' data than found in the body.')
1376
+ 'Unable to read DataBlock2d: Header indicates more'
1377
+ ' 0d data than found in the body.')
1378
1378
  data = array.array(dtype)
1379
1379
  data.frombytes(body[start:end])
1380
1380
  if sys.byteorder == 'big': # pragma: no cover
@@ -1392,8 +1392,8 @@ class DataBlock2d:
1392
1392
  end += n2
1393
1393
  if end > nb:
1394
1394
  raise myokit.DataBlockReadError(
1395
- 'Unable to read DataBlock2d: Header indicates larger'
1396
- ' data than found in the body.')
1395
+ 'Unable to read DataBlock2d: Header indicates more'
1396
+ ' 2d data than found in the body.')
1397
1397
  data = array.array(dtype)
1398
1398
  data.frombytes(body[start:end])
1399
1399
  if sys.byteorder == 'big': # pragma: no cover
@@ -666,9 +666,11 @@ class DataLog(OrderedDict):
666
666
  """
667
667
  Loads a CSV file from disk and returns it as a :class:`DataLog`.
668
668
 
669
- The CSV file must start with a header line indicating the variable
670
- names, separated by commas. Each subsequent row should contain the
671
- values at a single point in time for all logged variables.
669
+ The CSV file must start with a header line indicating the column names,
670
+ separated by commas. Each subsequent row should contain the values at a
671
+ single point in time for all logged variables. Duplicate column names
672
+ will be given a suffix "-i", where "i" is an integer chosen to create
673
+ a unique name.
672
674
 
673
675
  The ``DataLog`` is created using the data type specified by the
674
676
  argument ``precision``, regardless of the data type of the stored data.
@@ -691,9 +693,18 @@ class DataLog(OrderedDict):
691
693
  'Syntax error on line ' + str(line) + ', character '
692
694
  + str(1 + char) + ': ' + msg)
693
695
 
696
+ # Detect Microsoft's annyoing utf-8-sig encoding
697
+ # Note: We have to perform the first read in utf-8 mode, because the
698
+ # default encoding on windows will turn the BOM into a different set of
699
+ # characters, so that f.read(1) won't actually equal \ufeff
700
+ encoding = None
701
+ with open(filename, 'r', encoding='utf-8') as f:
702
+ if f.read(1) == '\ufeff':
703
+ encoding = 'utf-8-sig'
704
+
694
705
  quote = '"'
695
706
  delim = ','
696
- with open(filename, 'r', newline=None) as f:
707
+ with open(filename, 'r', newline=None, encoding=encoding) as f:
697
708
  # Read header
698
709
  keys = [] # The log keys, in order of appearance
699
710
 
@@ -784,8 +795,32 @@ class DataLog(OrderedDict):
784
795
  if c == delim:
785
796
  e(1, i, 'Empty field in header.')
786
797
 
787
- # Create data structure
798
+ # Handle duplicate keys by adding "-i" to all keys that appear
799
+ # more than once. If an entry key-i already exists, i is
800
+ # incremented.
788
801
  m = len(keys)
802
+ if len(set(keys)) != m:
803
+ first_seen = {} # key: index first seen at
804
+ duplicates = {} # key: list of indices of duplicates
805
+ for i, key in enumerate(keys):
806
+ if key in first_seen:
807
+ try:
808
+ duplicates[key].append(i)
809
+ except KeyError:
810
+ duplicates[key] = [first_seen[key], i]
811
+ else:
812
+ first_seen[key] = i
813
+ for key, indices in duplicates.items():
814
+ j = 1
815
+ for i in indices:
816
+ k = key
817
+ while k in first_seen:
818
+ k = f'{key}-{j}'
819
+ j += 1
820
+ keys[i] = k
821
+ first_seen[k] = i
822
+
823
+ # Create data structure
789
824
  lists = []
790
825
  for key in keys:
791
826
  x = array.array(typecode)
@@ -14,7 +14,7 @@ __release__ = True
14
14
  # incompatibility
15
15
  # - Changes to revision indicate bugfixes, tiny new features
16
16
  # - There is no significance to odd/even numbers
17
- __version_tuple__ = 1, 37, 0
17
+ __version_tuple__ = 1, 37, 1
18
18
 
19
19
  # String version of the version number
20
20
  __version__ = '.'.join([str(x) for x in __version_tuple__])
@@ -574,8 +574,8 @@ class AbfFile(myokit.formats.SweepSource):
574
574
  # Only episodic stimulation is supported.
575
575
  if self._mode != ACMODE_EPISODIC_STIMULATION: # pragma: no cover
576
576
  warnings.warn(
577
- 'Unsupported acquisition method '
578
- + acquisition_modes[self._mode] + '; unable to read D/A'
577
+ 'Unsupported acquisition method'
578
+ f' {acquisition_modes[self._mode]}; unable to read D/A'
579
579
  ' channels.')
580
580
 
581
581
  # Remaining code is all about reading D/A info for episodic
@@ -713,7 +713,7 @@ class AbfFile(myokit.formats.SweepSource):
713
713
  elif t != EPOCH_DISABLED: # pragma: no cover
714
714
  use = False
715
715
  warnings.warn(
716
- f'Unsupported epoch type: {epoch_types(t)}')
716
+ f'Unsupported epoch type: {epoch_types[t]}')
717
717
  break
718
718
  elif source == DAC_DACFILEWAVEFORM: # pragma: no cover
719
719
  # Stimulus file? Then don't use
@@ -1375,7 +1375,14 @@ class AbfFile(myokit.formats.SweepSource):
1375
1375
  try:
1376
1376
  return self._unit_cache[unit_string]
1377
1377
  except KeyError:
1378
- unit = myokit.parse_unit(unit_string.replace(MU, 'u'))
1378
+ try:
1379
+ unit = myokit.parse_unit(unit_string.replace(MU, 'u'))
1380
+ except myokit.ParseError: # pragma: no cover
1381
+ if unit_string == 'oC':
1382
+ warnings.warn('Unsupported units degrees C.')
1383
+ else:
1384
+ warnings.warn(f'Unsupported units {unit_string}.')
1385
+ unit = myokit.units.dimensionless
1379
1386
  self._unit_cache[unit_string] = unit
1380
1387
  return unit
1381
1388
 
@@ -0,0 +1,60 @@
1
+ #
2
+ # Provides DiffSL support
3
+ #
4
+ # This file is part of Myokit.
5
+ # See http://myokit.org for copyright, sharing, and licensing details.
6
+ #
7
+ from ._ewriter import DiffSLExpressionWriter
8
+ from ._exporter import DiffSLExporter
9
+
10
+ # Importers
11
+
12
+ # Exporters
13
+ _exporters = {
14
+ 'diffsl': DiffSLExporter,
15
+ }
16
+
17
+
18
+ def exporters():
19
+ """
20
+ Returns a dict of all exporters available in this module.
21
+ """
22
+ return dict(_exporters)
23
+
24
+
25
+ # Expression writers
26
+ _ewriters = {
27
+ 'diffsl': DiffSLExpressionWriter,
28
+ }
29
+
30
+
31
+ def ewriters():
32
+ """
33
+ Returns a dict of all expression writers available in this module.
34
+ """
35
+ return dict(_ewriters)
36
+
37
+
38
+ #
39
+ # Language keywords
40
+ #
41
+ keywords = [
42
+ 'abs',
43
+ 'cos',
44
+ 'dudt',
45
+ 'exp',
46
+ 'F',
47
+ 'G',
48
+ 'heaviside',
49
+ 'in',
50
+ 'log',
51
+ 'M',
52
+ 'out',
53
+ 'pow',
54
+ 'sigmoid',
55
+ 'sin',
56
+ 'sqrt',
57
+ 't',
58
+ 'tan',
59
+ 'u',
60
+ ]
@@ -0,0 +1,145 @@
1
+ #
2
+ # DiffSL expression writer
3
+ #
4
+ # Supported functions:
5
+ # https://martinjrobins.github.io/diffsl/functions.html
6
+ #
7
+ # This file is part of Myokit.
8
+ # See http://myokit.org for copyright, sharing, and licensing details.
9
+ #
10
+ import warnings
11
+
12
+ from myokit import And, Equal, If, LessEqual, Log, MoreEqual, Not, Number
13
+ from myokit.formats.ansic import CBasedExpressionWriter
14
+
15
+
16
+ class DiffSLExpressionWriter(CBasedExpressionWriter):
17
+ """
18
+ This :class:`ExpressionWriter <myokit.formats.ExpressionWriter>` writes
19
+ equations for variables in DiffSL syntax.
20
+
21
+ For details of the language, see https://martinjrobins.github.io/diffsl/.
22
+
23
+ Warnings will be generated if unsupported functions are used in the model.
24
+ Unsupported functions: `acos`, `asin`, `atan`, `ceil`, `floor`.
25
+
26
+ Support for logic expressions is implemented with heaviside functions.
27
+ For example, `(a >= b)` is converted to `heaviside(a - b)`.
28
+
29
+ """
30
+
31
+ def __init__(self):
32
+ super().__init__()
33
+
34
+ # -- Literals and identifiers
35
+
36
+ # def _ex_name(self, e):
37
+ # def _ex_number(self, e):
38
+
39
+ # -- Functions
40
+
41
+ def _ex_abs(self, e):
42
+ return self._ex_function(e, 'abs')
43
+
44
+ def _ex_acos(self, e):
45
+ warnings.warn('Unsupported function: acos()')
46
+ return super()._ex_acos(e)
47
+
48
+ def _ex_asin(self, e):
49
+ warnings.warn('Unsupported function: asin()')
50
+ return super()._ex_asin(e)
51
+
52
+ def _ex_atan(self, e):
53
+ warnings.warn('Unsupported function: atan()')
54
+ return super()._ex_atan(e)
55
+
56
+ def _ex_ceil(self, e):
57
+ warnings.warn('Unsupported function: ceil()')
58
+ return super()._ex_ceil(e)
59
+
60
+ # def _ex_cos(self, e):
61
+ # def _ex_derivative(self, e):
62
+ # def _ex_divide(self, e):
63
+ # def _ex_exp(self, e):
64
+
65
+ def _ex_floor(self, e):
66
+ warnings.warn('Unsupported function: floor()')
67
+ return super()._ex_floor(e)
68
+
69
+ # def _ex_log(self, e):
70
+
71
+ def _ex_log10(self, e):
72
+ # Log10(a) = Log(a, 10.0) -> '(log(a) / log(10.0))'
73
+ return super()._ex_log(Log(e[0], Number(10)))
74
+
75
+ # def _ex_minus(self, e):
76
+ # def _ex_multiply(self, e):
77
+ # def _ex_plus(self, e):
78
+ # def _ex_power(self, e):
79
+ # def _ex_prefix_minus(self, e):
80
+ # def _ex_prefix_plus(self, e):
81
+ # def _ex_quotient(self, e):
82
+ # def _ex_remainder(self, e):
83
+ # def _ex_sin(self, e):
84
+ # def _ex_sqrt(self, e):
85
+ # def _ex_tan(self, e):
86
+
87
+ # -- Conditional operators
88
+
89
+ def _ex_and(self, e):
90
+ # (a and b) == a * b, where a, b are in {0, 1}
91
+ return f'{self.ex(e[0])} * {self.ex(e[1])}'
92
+
93
+ def _ex_equal(self, e):
94
+ # (a == b) == heaviside(a - b) * heaviside(b - a)
95
+ return self.ex(And(MoreEqual(e[0], e[1]), LessEqual(e[0], e[1])))
96
+
97
+ def _ex_less(self, e):
98
+ # (a < b) == 1 - heaviside(a - b)
99
+ return self.ex(Not(MoreEqual(e[0], e[1])))
100
+
101
+ def _ex_less_equal(self, e):
102
+ # (a <= b) == heaviside(b - a)
103
+ return f'heaviside({self.ex(e[1])} - {self.ex(e[0])})'
104
+
105
+ def _ex_more(self, e):
106
+ # (a > b) == 1 - heaviside(b - a)
107
+ return self.ex(Not(LessEqual(e[0], e[1])))
108
+
109
+ def _ex_more_equal(self, e):
110
+ # (a >= b) == heaviside(a - b)
111
+ return f'heaviside({self.ex(e[0])} - {self.ex(e[1])})'
112
+
113
+ def _ex_not(self, e):
114
+ # not(a) == (1 - a), where a is in {0, 1}
115
+ return f'(1 - {self.ex(e[0])})'
116
+
117
+ def _ex_not_equal(self, e):
118
+ # (a != b) == 1 - heaviside(a - b) * heaviside(b - a)
119
+ return self.ex(Not(Equal(e[0], e[1])))
120
+
121
+ def _ex_or(self, e):
122
+ # a or b == not(not(a) and not(b)), where a, b are in {0, 1}
123
+ return self.ex(Not(And(Not(e[0]), Not(e[1]))))
124
+
125
+ # -- Conditional expressions
126
+
127
+ def _ex_if(self, e):
128
+ _if = self.ex(e._i)
129
+ _then = self.ex(e._t)
130
+ _not_if = self.ex(Not(e._i))
131
+ _else = self.ex(e._e)
132
+
133
+ return f'({_if} * {_then} + {_not_if} * {_else})'
134
+
135
+ def _ex_piecewise(self, e):
136
+ # Convert piecewise to nested ifs
137
+ # e.g. piecewise(a, b, c, d, e) -> if(a, b, if(c, d, e))
138
+ n = len(e._i)
139
+
140
+ _nested_ifs = e._e[n]
141
+
142
+ for i in range(n - 1, -1, -1):
143
+ _nested_ifs = If(e._i[i], e._e[i], _nested_ifs)
144
+
145
+ return self._ex_if(_nested_ifs)