myokit 1.33.9__py3-none-any.whl → 1.35.0__py3-none-any.whl

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 (229) hide show
  1. myokit/__init__.py +9 -36
  2. myokit/__main__.py +76 -142
  3. myokit/_aux.py +62 -16
  4. myokit/_bin/example.mmt +1 -2
  5. myokit/_bin/install-win/menu.json +7 -7
  6. myokit/_config.py +22 -31
  7. myokit/_datablock.py +30 -74
  8. myokit/_datalog.py +49 -72
  9. myokit/_err.py +25 -24
  10. myokit/_expressions.py +50 -68
  11. myokit/_io.py +15 -27
  12. myokit/_model_api.py +453 -249
  13. myokit/_myokit_version.py +1 -5
  14. myokit/_parsing.py +38 -44
  15. myokit/_progress.py +5 -8
  16. myokit/_protocol.py +99 -9
  17. myokit/_sim/__init__.py +7 -24
  18. myokit/_sim/cable.c +6 -8
  19. myokit/_sim/cable.py +6 -8
  20. myokit/_sim/cmodel.h +125 -70
  21. myokit/_sim/cmodel.py +12 -14
  22. myokit/_sim/compiler.py +1 -4
  23. myokit/_sim/cvodessim.c +196 -118
  24. myokit/_sim/cvodessim.py +130 -103
  25. myokit/_sim/differential.hpp +4 -4
  26. myokit/_sim/fiber_tissue.c +4 -8
  27. myokit/_sim/fiber_tissue.py +11 -13
  28. myokit/_sim/jacobian.cpp +2 -2
  29. myokit/_sim/jacobian.py +11 -8
  30. myokit/_sim/mcl.h +53 -55
  31. myokit/_sim/opencl.py +21 -27
  32. myokit/_sim/openclsim.c +3 -7
  33. myokit/_sim/openclsim.cl +3 -3
  34. myokit/_sim/openclsim.py +49 -40
  35. myokit/_sim/pacing.h +36 -16
  36. myokit/_sim/rhs.c +6 -13
  37. myokit/_sim/rhs.py +5 -14
  38. myokit/_sim/sundials.py +1 -4
  39. myokit/_system.py +10 -16
  40. myokit/_unit.py +4 -13
  41. myokit/float.py +0 -3
  42. myokit/formats/__init__.py +8 -10
  43. myokit/formats/ansic/__init__.py +0 -3
  44. myokit/formats/ansic/_ewriter.py +2 -4
  45. myokit/formats/ansic/_exporter.py +1 -4
  46. myokit/formats/ansic/template/cable.c +4 -4
  47. myokit/formats/ansic/template/euler.c +5 -5
  48. myokit/formats/ansic/template/sim.c +6 -6
  49. myokit/formats/axon/__init__.py +1 -3
  50. myokit/formats/axon/_abf.py +12 -17
  51. myokit/formats/axon/_atf.py +5 -6
  52. myokit/formats/axon/_importer.py +0 -3
  53. myokit/formats/cellml/__init__.py +0 -3
  54. myokit/formats/cellml/_ewriter.py +3 -6
  55. myokit/formats/cellml/_exporter.py +3 -6
  56. myokit/formats/cellml/_importer.py +1 -4
  57. myokit/formats/cellml/v1/__init__.py +0 -4
  58. myokit/formats/cellml/v1/_api.py +8 -11
  59. myokit/formats/cellml/v1/_parser.py +2 -5
  60. myokit/formats/cellml/v1/_writer.py +2 -11
  61. myokit/formats/cellml/v2/__init__.py +0 -3
  62. myokit/formats/cellml/v2/_api.py +8 -17
  63. myokit/formats/cellml/v2/_parser.py +2 -5
  64. myokit/formats/cellml/v2/_writer.py +1 -4
  65. myokit/formats/channelml/__init__.py +0 -3
  66. myokit/formats/channelml/_importer.py +11 -21
  67. myokit/formats/cpp/__init__.py +1 -3
  68. myokit/formats/cpp/_ewriter.py +0 -3
  69. myokit/formats/cuda/__init__.py +0 -3
  70. myokit/formats/cuda/_ewriter.py +2 -4
  71. myokit/formats/cuda/_exporter.py +0 -3
  72. myokit/formats/cuda/template/kernel.cu +8 -5
  73. myokit/formats/easyml/__init__.py +0 -3
  74. myokit/formats/easyml/_ewriter.py +9 -11
  75. myokit/formats/easyml/_exporter.py +2 -5
  76. myokit/formats/html/__init__.py +0 -3
  77. myokit/formats/html/_exporter.py +0 -3
  78. myokit/formats/html/_flatten.py +5 -21
  79. myokit/formats/latex/__init__.py +0 -3
  80. myokit/formats/latex/_ewriter.py +1 -4
  81. myokit/formats/latex/_exporter.py +4 -6
  82. myokit/formats/mathml/__init__.py +0 -3
  83. myokit/formats/mathml/_ewriter.py +2 -11
  84. myokit/formats/mathml/_parser.py +4 -6
  85. myokit/formats/matlab/__init__.py +0 -3
  86. myokit/formats/matlab/_ewriter.py +1 -4
  87. myokit/formats/matlab/_exporter.py +2 -5
  88. myokit/formats/matlab/template/main.m +3 -2
  89. myokit/formats/opencl/__init__.py +0 -3
  90. myokit/formats/opencl/_ewriter.py +2 -4
  91. myokit/formats/opencl/_exporter.py +2 -5
  92. myokit/formats/opencl/template/cable.c +10 -10
  93. myokit/formats/opencl/template/kernel.cl +1 -1
  94. myokit/formats/opencl/template/minilog.py +1 -1
  95. myokit/formats/python/__init__.py +0 -3
  96. myokit/formats/python/_ewriter.py +2 -5
  97. myokit/formats/python/_exporter.py +0 -3
  98. myokit/formats/python/template/sim.py +14 -14
  99. myokit/formats/sbml/__init__.py +0 -3
  100. myokit/formats/sbml/_api.py +50 -44
  101. myokit/formats/sbml/_importer.py +1 -4
  102. myokit/formats/sbml/_parser.py +2 -5
  103. myokit/formats/stan/__init__.py +0 -3
  104. myokit/formats/stan/_ewriter.py +2 -4
  105. myokit/formats/stan/_exporter.py +2 -5
  106. myokit/formats/stan/template/cell.stan +3 -3
  107. myokit/formats/sympy/__init__.py +0 -3
  108. myokit/formats/sympy/_ereader.py +1 -4
  109. myokit/formats/sympy/_ewriter.py +2 -5
  110. myokit/formats/wcp/__init__.py +0 -3
  111. myokit/formats/wcp/_wcp.py +2 -8
  112. myokit/formats/xml/__init__.py +0 -3
  113. myokit/formats/xml/_exporter.py +0 -3
  114. myokit/formats/xml/_split.py +0 -3
  115. myokit/gui/__init__.py +80 -246
  116. myokit/gui/datablock_viewer.py +103 -86
  117. myokit/gui/datalog_viewer.py +214 -66
  118. myokit/gui/explorer.py +15 -21
  119. myokit/gui/ide.py +171 -144
  120. myokit/gui/progress.py +9 -9
  121. myokit/gui/source.py +406 -375
  122. myokit/gui/vargrapher.py +2 -12
  123. myokit/lib/deps.py +12 -13
  124. myokit/lib/guess.py +3 -4
  125. myokit/lib/hh.py +20 -18
  126. myokit/lib/markov.py +21 -20
  127. myokit/lib/multi.py +1 -3
  128. myokit/lib/plots.py +20 -9
  129. myokit/pacing.py +0 -3
  130. myokit/pype.py +7 -18
  131. myokit/tests/__init__.py +3 -6
  132. myokit/tests/ansic_event_based_pacing.py +1 -4
  133. myokit/tests/ansic_fixed_form_pacing.py +3 -6
  134. myokit/tests/data/beeler-1977-model-compare-b.mmt +2 -2
  135. myokit/tests/data/clancy-1999-fitting.mmt +1 -0
  136. myokit/tests/test_aux.py +13 -28
  137. myokit/tests/test_cellml_v1_api.py +4 -19
  138. myokit/tests/test_cellml_v1_parser.py +0 -15
  139. myokit/tests/test_cellml_v1_writer.py +0 -9
  140. myokit/tests/test_cellml_v2_api.py +4 -19
  141. myokit/tests/test_cellml_v2_parser.py +0 -15
  142. myokit/tests/test_cellml_v2_writer.py +0 -9
  143. myokit/tests/test_cmodel.py +16 -22
  144. myokit/tests/test_compiler_detection.py +1 -11
  145. myokit/tests/test_component.py +108 -56
  146. myokit/tests/test_config.py +34 -67
  147. myokit/tests/test_datablock.py +1 -9
  148. myokit/tests/test_datalog.py +19 -24
  149. myokit/tests/test_dependency_checking.py +8 -23
  150. myokit/tests/test_expressions.py +0 -9
  151. myokit/tests/test_float.py +1 -5
  152. myokit/tests/test_formats.py +0 -9
  153. myokit/tests/test_formats_axon.py +1 -9
  154. myokit/tests/test_formats_cellml.py +0 -15
  155. myokit/tests/test_formats_channelml.py +0 -15
  156. myokit/tests/test_formats_easyml.py +0 -14
  157. myokit/tests/test_formats_exporters.py +1 -16
  158. myokit/tests/test_formats_expression_writers.py +1 -17
  159. myokit/tests/test_formats_html.py +0 -3
  160. myokit/tests/test_formats_importers.py +1 -16
  161. myokit/tests/test_formats_mathml_content.py +0 -9
  162. myokit/tests/test_formats_mathml_presentation.py +0 -9
  163. myokit/tests/test_formats_opencl.py +0 -10
  164. myokit/tests/test_formats_sbml.py +0 -15
  165. myokit/tests/test_formats_sympy.py +0 -9
  166. myokit/tests/test_formats_wcp.py +1 -3
  167. myokit/tests/test_io.py +27 -27
  168. myokit/tests/test_jacobian_calculator.py +6 -14
  169. myokit/tests/test_jacobian_tracer.py +0 -9
  170. myokit/tests/test_lib_deps.py +0 -9
  171. myokit/tests/test_lib_guess.py +0 -9
  172. myokit/tests/test_lib_hh.py +18 -12
  173. myokit/tests/test_lib_markov.py +21 -13
  174. myokit/tests/test_lib_multi.py +0 -9
  175. myokit/tests/test_lib_plots.py +13 -8
  176. myokit/tests/test_meta.py +0 -3
  177. myokit/tests/test_model.py +390 -96
  178. myokit/tests/test_model_building.py +44 -96
  179. myokit/tests/test_opencl_info.py +5 -14
  180. myokit/tests/test_pacing_factory.py +0 -3
  181. myokit/tests/test_pacing_system_c.py +1 -23
  182. myokit/tests/test_pacing_system_py.py +0 -9
  183. myokit/tests/test_parsing.py +139 -56
  184. myokit/tests/test_progress_reporters.py +0 -3
  185. myokit/tests/test_protocol.py +0 -9
  186. myokit/tests/test_protocol_floating_point.py +1 -10
  187. myokit/tests/test_protocol_time_series.py +82 -0
  188. myokit/tests/test_pype.py +0 -9
  189. myokit/tests/test_quantity.py +0 -9
  190. myokit/tests/test_rhs_benchmarker.py +1 -9
  191. myokit/tests/test_sbml_api.py +27 -42
  192. myokit/tests/test_sbml_parser.py +4 -19
  193. myokit/tests/test_simulation_1d.py +45 -25
  194. myokit/tests/test_simulation_cvodes.py +321 -55
  195. myokit/tests/test_simulation_cvodes_from_disk.py +0 -3
  196. myokit/tests/test_simulation_fiber_tissue.py +39 -12
  197. myokit/tests/test_simulation_log_interval.py +1 -431
  198. myokit/tests/test_simulation_opencl.py +69 -48
  199. myokit/tests/test_simulation_opencl_log_interval.py +1 -3
  200. myokit/tests/test_simulation_opencl_vs_cvode.py +1 -10
  201. myokit/tests/test_simulation_opencl_vs_sim1d.py +1 -10
  202. myokit/tests/test_system_info.py +1 -11
  203. myokit/tests/test_tools.py +0 -9
  204. myokit/tests/test_unit.py +1 -10
  205. myokit/tests/test_user_functions.py +0 -10
  206. myokit/tests/test_variable.py +231 -27
  207. myokit/tools.py +5 -21
  208. myokit/units.py +5 -3
  209. {myokit-1.33.9.dist-info → myokit-1.35.0.dist-info}/METADATA +12 -15
  210. myokit-1.35.0.dist-info/RECORD +391 -0
  211. {myokit-1.33.9.dist-info → myokit-1.35.0.dist-info}/WHEEL +1 -1
  212. {myokit-1.33.9.dist-info → myokit-1.35.0.dist-info}/entry_points.txt +0 -1
  213. myokit/_exec_new.py +0 -15
  214. myokit/_exec_old.py +0 -15
  215. myokit/_sim/cvodesim.c +0 -1551
  216. myokit/_sim/cvodesim.py +0 -674
  217. myokit/_sim/icsim.cpp +0 -563
  218. myokit/_sim/icsim.py +0 -363
  219. myokit/_sim/psim.cpp +0 -656
  220. myokit/_sim/psim.py +0 -493
  221. myokit/lib/common.py +0 -1094
  222. myokit/tests/test_lib_common.py +0 -130
  223. myokit/tests/test_simulation_cvode.py +0 -612
  224. myokit/tests/test_simulation_ic.py +0 -108
  225. myokit/tests/test_simulation_p.py +0 -223
  226. myokit-1.33.9.dist-info/RECORD +0 -403
  227. /myokit/formats/opencl/template/{test → test.sh} +0 -0
  228. {myokit-1.33.9.dist-info → myokit-1.35.0.dist-info}/LICENSE.txt +0 -0
  229. {myokit-1.33.9.dist-info → myokit-1.35.0.dist-info}/top_level.txt +0 -0
myokit/tests/test_aux.py CHANGED
@@ -5,25 +5,11 @@
5
5
  # This file is part of Myokit.
6
6
  # See http://myokit.org for copyright, sharing, and licensing details.
7
7
  #
8
- from __future__ import absolute_import, division
9
- from __future__ import print_function, unicode_literals
10
-
8
+ import io
11
9
  import os
12
10
  import re
13
11
  import unittest
14
12
 
15
- # StringIO in Python 2 and 3
16
- try:
17
- from cStringIO import StringIO
18
- except ImportError: # pragma: no python 2 cover
19
- from io import StringIO
20
-
21
- # Strings in Python2 and Python3
22
- try:
23
- basestring
24
- except NameError: # pragma: no cover
25
- basestring = str
26
-
27
13
  import myokit
28
14
 
29
15
  from myokit.tests import DIR_DATA, WarningCollector
@@ -87,7 +73,7 @@ class AuxTest(unittest.TestCase):
87
73
 
88
74
  # Test without a model
89
75
  script = myokit.default_script()
90
- self.assertTrue(isinstance(script, basestring))
76
+ self.assertTrue(isinstance(script, str))
91
77
  self.assertIn('run(1000)', script)
92
78
 
93
79
  # Test adapting the time unit
@@ -95,29 +81,29 @@ class AuxTest(unittest.TestCase):
95
81
  t = model.add_component('c').add_variable('t')
96
82
  t.set_rhs(0)
97
83
  script = myokit.default_script(model)
98
- self.assertTrue(isinstance(script, basestring))
84
+ self.assertTrue(isinstance(script, str))
99
85
  self.assertIn('run(1000)', script)
100
86
 
101
87
  t.set_binding('time')
102
88
  script = myokit.default_script(model)
103
- self.assertTrue(isinstance(script, basestring))
89
+ self.assertTrue(isinstance(script, str))
104
90
  self.assertIn('run(1000)', script)
105
91
 
106
92
  t.set_unit('s')
107
93
  script = myokit.default_script(model)
108
- self.assertTrue(isinstance(script, basestring))
94
+ self.assertTrue(isinstance(script, str))
109
95
  self.assertIn('run(1.0)', script)
110
96
 
111
97
  t.set_unit('ms')
112
98
  script = myokit.default_script(model)
113
- self.assertTrue(isinstance(script, basestring))
99
+ self.assertTrue(isinstance(script, str))
114
100
  self.assertIn('run(1000)', script)
115
101
 
116
102
  # Test plotting membrane potential
117
103
  v = model.get('c').add_variable('v')
118
104
  v.set_label('membrane_potential')
119
105
  script = myokit.default_script(model)
120
- self.assertTrue(isinstance(script, basestring))
106
+ self.assertTrue(isinstance(script, str))
121
107
  self.assertIn("var = 'c.v'", script)
122
108
 
123
109
  # TODO: Run with tiny model?
@@ -163,6 +149,7 @@ class AuxTest(unittest.TestCase):
163
149
  '[1] Missing User function <g(1)>.',
164
150
  '[x] Mismatched Time variable: [1]<engine.time> [2]<engine.toim>',
165
151
  '[x] Mismatched Initial value for <ina.h>',
152
+ '[x] Mismatched Initial value for <ina.j>',
166
153
  '[x] Mismatched State at position 5: [1]<isi.d> [2]<isiz.d>',
167
154
  '[x] Mismatched State at position 6: [1]<isi.f> [2]<isiz.f>',
168
155
  '[2] Missing state at position 7',
@@ -193,9 +180,6 @@ class AuxTest(unittest.TestCase):
193
180
  ' ' + str(len(differences)) + ' differences found',
194
181
  ]
195
182
 
196
- # Show massive diff messages
197
- self.maxDiff = None
198
-
199
183
  caught_differences = set(capture.text().splitlines())
200
184
  live = set(live)
201
185
  self.assertEqual(live, caught_differences)
@@ -276,8 +260,6 @@ class AuxTest(unittest.TestCase):
276
260
  'import myokit',
277
261
  'm = get_model()', # Test magic methods
278
262
  'p = get_protocol()',
279
- 's = myokit.Simulation(m, p)',
280
- 's.run(200)',
281
263
  ])
282
264
  with myokit.tools.capture():
283
265
  myokit.run(m, p, x)
@@ -287,7 +269,7 @@ class AuxTest(unittest.TestCase):
287
269
 
288
270
  # Test with stringio
289
271
  x = "print('Hi there')"
290
- s = StringIO()
272
+ s = io.StringIO()
291
273
  with myokit.tools.capture() as c:
292
274
  myokit.run(m, p, x, stderr=s, stdout=s)
293
275
  self.assertEqual(c.text(), '')
@@ -513,6 +495,9 @@ class AuxTest(unittest.TestCase):
513
495
  # Test positive/negative zero comparison
514
496
  m1 = myokit.Model()
515
497
  c = m1.add_component('c')
498
+ t = c.add_variable('t')
499
+ t.set_binding('time')
500
+ t.set_rhs(0)
516
501
  x = c.add_variable('x')
517
502
  x.promote(1)
518
503
  x.set_rhs('-0.0')
@@ -564,7 +549,7 @@ class AuxTest(unittest.TestCase):
564
549
 
565
550
  # Raw version
566
551
  raw = myokit.version(raw=True)
567
- self.assertIsInstance(raw, basestring)
552
+ self.assertIsInstance(raw, str)
568
553
  parts = raw.split('.')
569
554
  self.assertTrue(len(parts) in [3, 4])
570
555
 
@@ -5,9 +5,6 @@
5
5
  # This file is part of Myokit.
6
6
  # See http://myokit.org for copyright, sharing, and licensing details.
7
7
  #
8
- from __future__ import absolute_import, division
9
- from __future__ import print_function, unicode_literals
10
-
11
8
  import unittest
12
9
 
13
10
  import myokit
@@ -15,18 +12,6 @@ import myokit.formats.cellml.v1 as cellml
15
12
 
16
13
  from myokit.tests import WarningCollector
17
14
 
18
- # Unit testing in Python 2 and 3
19
- try:
20
- unittest.TestCase.assertRaisesRegex
21
- except AttributeError:
22
- unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
23
-
24
- # Strings in Python2 and Python3
25
- try:
26
- basestring
27
- except NameError: # pragma: no cover
28
- basestring = str
29
-
30
15
 
31
16
  class TestCellML1AnnotatedElement(unittest.TestCase):
32
17
  """ Tests for cellml.AnnotatableElement. """
@@ -730,8 +715,8 @@ class TestCellML1ModelConversion(unittest.TestCase):
730
715
  # Recreate myokit model and test states
731
716
  mm = cm.myokit_model()
732
717
  mm.validate()
733
- state_1 = m.state()
734
- state_2 = mm.state()
718
+ state_1 = m.initial_values(True)
719
+ state_2 = mm.initial_values(True)
735
720
  states_1 = [x.name() for x in m.states()]
736
721
  states_2 = [x.name() for x in mm.states()]
737
722
  state_2 = [state_2[states_2.index(x)] for x in states_1]
@@ -830,7 +815,7 @@ class TestCellML1ModelConversion(unittest.TestCase):
830
815
 
831
816
  # Check state
832
817
  self.assertTrue(mx.is_state())
833
- self.assertEqual(mx.state_value(), 0.123)
818
+ self.assertEqual(mx.initial_value(True), 0.123)
834
819
 
835
820
  # Check binding
836
821
  self.assertEqual(mt.binding(), 'time')
@@ -1503,7 +1488,7 @@ class TestCellML1Units(unittest.TestCase):
1503
1488
  names = [x for x in cellml.Units.si_unit_names()]
1504
1489
  self.assertTrue(len(names) > 10)
1505
1490
  for name in names:
1506
- self.assertTrue(isinstance(name, basestring))
1491
+ self.assertTrue(isinstance(name, str))
1507
1492
  if name == 'celsius':
1508
1493
  continue
1509
1494
  self.assertTrue(
@@ -5,9 +5,6 @@
5
5
  # This file is part of Myokit.
6
6
  # See http://myokit.org for copyright, sharing, and licensing details.
7
7
  #
8
- from __future__ import absolute_import, division
9
- from __future__ import print_function, unicode_literals
10
-
11
8
  import os
12
9
  import unittest
13
10
 
@@ -20,18 +17,6 @@ from myokit.tests import TemporaryDirectory, DIR_FORMATS, WarningCollector
20
17
  # CellML directory
21
18
  DIR = os.path.join(DIR_FORMATS, 'cellml')
22
19
 
23
- # Unit testing in Python 2 and 3
24
- try:
25
- unittest.TestCase.assertRaisesRegex
26
- except AttributeError:
27
- unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
28
-
29
- # Strings in Python2 and Python3
30
- try:
31
- basestring
32
- except NameError: # pragma: no cover
33
- basestring = str
34
-
35
20
 
36
21
  class TestCellMLParser(unittest.TestCase):
37
22
  """ Tests the CellML 1.0/1.1 parser (mostly for errors). """
@@ -5,9 +5,6 @@
5
5
  # This file is part of Myokit.
6
6
  # See http://myokit.org for copyright, sharing, and licensing details.
7
7
  #
8
- from __future__ import absolute_import, division
9
- from __future__ import print_function, unicode_literals
10
-
11
8
  import re
12
9
  import unittest
13
10
 
@@ -16,12 +13,6 @@ import myokit.formats.cellml.v1 as cellml
16
13
 
17
14
  from myokit.tests import TemporaryDirectory, WarningCollector
18
15
 
19
- # Unit testing in Python 2 and 3
20
- try:
21
- unittest.TestCase.assertRaisesRegex
22
- except AttributeError:
23
- unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
24
-
25
16
 
26
17
  class TestCellMLWriter(unittest.TestCase):
27
18
  """ Tests for cellml.Writer. """
@@ -5,9 +5,6 @@
5
5
  # This file is part of Myokit.
6
6
  # See http://myokit.org for copyright, sharing, and licensing details.
7
7
  #
8
- from __future__ import absolute_import, division
9
- from __future__ import print_function, unicode_literals
10
-
11
8
  import unittest
12
9
 
13
10
  import myokit
@@ -15,18 +12,6 @@ import myokit.formats.cellml.v2 as cellml
15
12
 
16
13
  from myokit.tests import WarningCollector
17
14
 
18
- # Unit testing in Python 2 and 3
19
- try:
20
- unittest.TestCase.assertRaisesRegex
21
- except AttributeError:
22
- unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
23
-
24
- # Strings in Python2 and Python3
25
- try:
26
- basestring
27
- except NameError: # pragma: no cover
28
- basestring = str
29
-
30
15
 
31
16
  class TestCellML2AnnotatableElement(unittest.TestCase):
32
17
  """ Tests for ``cellml.v2.AnnotatableElement``. """
@@ -909,8 +894,8 @@ class TestCellML2ModelConversion(unittest.TestCase):
909
894
  # Recreate myokit model and test states
910
895
  mm = cm.myokit_model()
911
896
  mm.validate()
912
- state_1 = m.state()
913
- state_2 = mm.state()
897
+ state_1 = m.initial_values(True)
898
+ state_2 = mm.initial_values(True)
914
899
  states_1 = [x.name() for x in m.states()]
915
900
  states_2 = [x.name() for x in mm.states()]
916
901
  state_2 = [state_2[states_2.index(x)] for x in states_1]
@@ -1013,7 +998,7 @@ class TestCellML2ModelConversion(unittest.TestCase):
1013
998
 
1014
999
  # Check state
1015
1000
  self.assertTrue(mx.is_state())
1016
- self.assertEqual(mx.state_value(), 0.123)
1001
+ self.assertEqual(mx.initial_value(True), 0.123)
1017
1002
 
1018
1003
  # Check binding
1019
1004
  self.assertEqual(mt.binding(), 'time')
@@ -1810,7 +1795,7 @@ class TestCellML2Units(unittest.TestCase):
1810
1795
  names = [x for x in cellml.Units.si_unit_names()]
1811
1796
  self.assertTrue(len(names) > 10)
1812
1797
  for name in names:
1813
- self.assertTrue(isinstance(name, basestring))
1798
+ self.assertTrue(isinstance(name, str))
1814
1799
  self.assertTrue(
1815
1800
  isinstance(cellml.Units.find_units(name), cellml.Units))
1816
1801
 
@@ -5,9 +5,6 @@
5
5
  # This file is part of Myokit.
6
6
  # See http://myokit.org for copyright, sharing, and licensing details.
7
7
  #
8
- from __future__ import absolute_import, division
9
- from __future__ import print_function, unicode_literals
10
-
11
8
  import os
12
9
  import unittest
13
10
 
@@ -19,18 +16,6 @@ from myokit.tests import TemporaryDirectory, DIR_FORMATS, WarningCollector
19
16
  # CellML directory
20
17
  DIR = os.path.join(DIR_FORMATS, 'cellml')
21
18
 
22
- # Unit testing in Python 2 and 3
23
- try:
24
- unittest.TestCase.assertRaisesRegex
25
- except AttributeError:
26
- unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
27
-
28
- # Strings in Python2 and Python3
29
- try:
30
- basestring
31
- except NameError: # pragma: no cover
32
- basestring = str
33
-
34
19
 
35
20
  class TestCellMLParser(unittest.TestCase):
36
21
  """ Tests the CellML 2.0 parser (mostly for errors / model validation). """
@@ -5,9 +5,6 @@
5
5
  # This file is part of Myokit.
6
6
  # See http://myokit.org for copyright, sharing, and licensing details.
7
7
  #
8
- from __future__ import absolute_import, division
9
- from __future__ import print_function, unicode_literals
10
-
11
8
  import re
12
9
  import unittest
13
10
 
@@ -16,12 +13,6 @@ import myokit.formats.cellml.v2 as cellml
16
13
 
17
14
  from myokit.tests import TemporaryDirectory, WarningCollector
18
15
 
19
- # Unit testing in Python 2 and 3
20
- try:
21
- unittest.TestCase.assertRaisesRegex
22
- except AttributeError:
23
- unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
24
-
25
16
 
26
17
  class TestCellMLWriter(unittest.TestCase):
27
18
  """ Tests for cellml.Writer. """
@@ -5,9 +5,6 @@
5
5
  # This file is part of Myokit.
6
6
  # See http://myokit.org for copyright, sharing, and licensing details.
7
7
  #
8
- from __future__ import absolute_import, division
9
- from __future__ import print_function, unicode_literals
10
-
11
8
  import os
12
9
  import unittest
13
10
 
@@ -15,12 +12,6 @@ import myokit
15
12
 
16
13
  from myokit.tests import DIR_DATA
17
14
 
18
- # Unit testing in Python 2 and 3
19
- try:
20
- unittest.TestCase.assertRaisesRegex
21
- except AttributeError:
22
- unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
23
-
24
15
 
25
16
  class CModelTest(unittest.TestCase):
26
17
  """
@@ -33,7 +24,10 @@ class CModelTest(unittest.TestCase):
33
24
  m, p, x = myokit.load(os.path.join(DIR_DATA, 'lr-1991.mmt'))
34
25
  cls.model = m
35
26
  cls.sensitivities = (['ik1.gK1', 'ikp.IKp'], ['cell.K_o', 'ikp.gKp'])
36
- cls.cmodel = myokit.CModel(cls.model, cls.sensitivities)
27
+ cls.pacing_labels = {}
28
+ cls.cmodel = myokit.CModel(
29
+ cls.model, cls.pacing_labels, cls.sensitivities
30
+ )
37
31
 
38
32
  def test_sensitivities(self):
39
33
  # Test instantiation of cmodel with sensitivities
@@ -41,14 +35,14 @@ class CModelTest(unittest.TestCase):
41
35
  # Bad type
42
36
  sens = 'Bad type'
43
37
  with self.assertRaisesRegex(ValueError, 'The argument `sensitivities'):
44
- myokit.CModel(self.model, sens)
38
+ myokit.CModel(self.model, self.pacing_labels, sens)
45
39
 
46
40
  # Empty deps or indeps
47
41
  sens = ([], ['some parameter'])
48
- m = myokit.CModel(self.model, sens)
42
+ m = myokit.CModel(self.model, self.pacing_labels, sens)
49
43
  self.assertFalse(m.has_sensitivities)
50
44
  sens = (['some state'], [])
51
- m = myokit.CModel(self.model, sens)
45
+ m = myokit.CModel(self.model, self.pacing_labels, sens)
52
46
  self.assertFalse(m.has_sensitivities)
53
47
 
54
48
  # Provide sensitivies as Variables
@@ -57,14 +51,14 @@ class CModelTest(unittest.TestCase):
57
51
  p1 = self.model.get('cell.K_o')
58
52
  p2 = self.model.get('ikp.gKp')
59
53
  sens = ([s1, s2], [p1, p2])
60
- m = myokit.CModel(self.model, sens)
54
+ m = myokit.CModel(self.model, self.pacing_labels, sens)
61
55
  self.assertTrue(m.has_sensitivities)
62
56
 
63
57
  # Provide sensitivities as Names
64
58
  sens = (
65
59
  [myokit.Name(s1), myokit.Name(s2)],
66
60
  [myokit.Name(p1), myokit.Name(p2)])
67
- m = myokit.CModel(self.model, sens)
61
+ m = myokit.CModel(self.model, self.pacing_labels, sens)
68
62
  self.assertTrue(m.has_sensitivities)
69
63
 
70
64
  # Sensitivity of derivative
@@ -72,13 +66,13 @@ class CModelTest(unittest.TestCase):
72
66
  sens = (
73
67
  [myokit.Derivative(myokit.Name(s3)), myokit.Name(s2)],
74
68
  [myokit.Name(p1), myokit.Name(p2)])
75
- m = myokit.CModel(self.model, sens)
69
+ m = myokit.CModel(self.model, self.pacing_labels, sens)
76
70
  self.assertTrue(m.has_sensitivities)
77
71
  s3 = 'dot(ik.x)'
78
72
  sens = (
79
73
  [s3, myokit.Name(s2)],
80
74
  [myokit.Name(p1), myokit.Name(p2)])
81
- m = myokit.CModel(self.model, sens)
75
+ m = myokit.CModel(self.model, self.pacing_labels, sens)
82
76
  self.assertTrue(m.has_sensitivities)
83
77
 
84
78
  # Sensitivity of derivative of non-state
@@ -86,21 +80,21 @@ class CModelTest(unittest.TestCase):
86
80
  [myokit.Derivative(myokit.Name(s1)), myokit.Name(s2)],
87
81
  [myokit.Name(p1), myokit.Name(p2)])
88
82
  with self.assertRaisesRegex(ValueError, 'Sensitivity of '):
89
- myokit.CModel(self.model, sens)
83
+ myokit.CModel(self.model, self.pacing_labels, sens)
90
84
 
91
85
  # Sensitivity of bound variable
92
86
  sens = (
93
87
  ['engine.time', myokit.Name(s2)],
94
88
  [myokit.Name(p1), myokit.Name(p2)])
95
89
  with self.assertRaisesRegex(ValueError, 'Sensitivities cannot'):
96
- myokit.CModel(self.model, sens)
90
+ myokit.CModel(self.model, self.pacing_labels, sens)
97
91
 
98
92
  # Sensitivity w.r.t. Initial value
99
93
  s3 = self.model.get('ik.x')
100
94
  sens = (
101
95
  [s3, myokit.Name(s2)],
102
96
  [myokit.Name(p1), myokit.InitialValue(myokit.Name(s3))])
103
- m = myokit.CModel(self.model, sens)
97
+ m = myokit.CModel(self.model, self.pacing_labels, sens)
104
98
  self.assertTrue(m.has_sensitivities)
105
99
 
106
100
  # Sensitivity w.r.t. initial value of non-state
@@ -108,14 +102,14 @@ class CModelTest(unittest.TestCase):
108
102
  [myokit.Name(s1), myokit.Name(s2)],
109
103
  [myokit.Name(p1), myokit.InitialValue(myokit.Name(p2))])
110
104
  with self.assertRaisesRegex(ValueError, 'Sensitivity with respect to'):
111
- myokit.CModel(self.model, sens)
105
+ myokit.CModel(self.model, self.pacing_labels, sens)
112
106
 
113
107
  # Sensitivity w.r.t. non-literal
114
108
  sens = (
115
109
  [myokit.Name(s1), myokit.Name(s2)],
116
110
  [myokit.Name(p1), 'ik.E'])
117
111
  with self.assertRaisesRegex(ValueError, 'Sensitivity with respect to'):
118
- myokit.CModel(self.model, sens)
112
+ myokit.CModel(self.model, self.pacing_labels, sens)
119
113
 
120
114
 
121
115
  if __name__ == '__main__':
@@ -5,28 +5,18 @@
5
5
  # This file is part of Myokit.
6
6
  # See http://myokit.org for copyright, sharing, and licensing details.
7
7
  #
8
- from __future__ import absolute_import, division
9
- from __future__ import print_function, unicode_literals
10
-
11
8
  import unittest
12
9
 
13
10
  import myokit
14
11
 
15
12
 
16
- # Strings in Python2 and Python3
17
- try:
18
- basestring
19
- except NameError: # pragma: no cover
20
- basestring = str
21
-
22
-
23
13
  class CompilerDetectionTest(unittest.TestCase):
24
14
  """
25
15
  Tests the compiler detection.
26
16
  """
27
17
  def test_compiler(self):
28
18
  # Test the compiler detection.
29
- self.assertIsInstance(myokit.Compiler.info(), basestring)
19
+ self.assertIsInstance(myokit.Compiler.info(), str)
30
20
 
31
21
 
32
22
  if __name__ == '__main__':