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
@@ -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
  from ._exporter import PythonExporter
11
8
  from ._ewriter import PythonExpressionWriter, NumPyExpressionWriter
12
9
 
@@ -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 myokit.formats
11
8
 
12
9
 
@@ -17,7 +14,7 @@ class PythonExpressionWriter(myokit.formats.ExpressionWriter):
17
14
  equivalent.
18
15
  """
19
16
  def __init__(self):
20
- super(PythonExpressionWriter, self).__init__()
17
+ super().__init__()
21
18
 
22
19
  self._flhs = None
23
20
  self.set_lhs_function(lambda v: str(v))
@@ -192,7 +189,7 @@ class NumPyExpressionWriter(PythonExpressionWriter):
192
189
  intended for use in NumPy arrays.
193
190
  """
194
191
  def __init__(self):
195
- super(NumPyExpressionWriter, self).__init__()
192
+ super().__init__()
196
193
  self._function_prefix = 'numpy.'
197
194
  #def _ex_name(self, e):
198
195
  #def _ex_derivative(self, e):
@@ -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 os
11
8
 
12
9
  import myokit.formats
@@ -45,7 +45,7 @@ w.set_lhs_function(v)
45
45
  e = w.eq
46
46
 
47
47
  # Process bindings
48
- bound_variables = model.prepare_bindings({
48
+ bound_variables = myokit._prepare_bindings(model, {
49
49
  'time' : 'engine.time',
50
50
  'pace' : 'engine.pace',
51
51
  })
@@ -73,7 +73,7 @@ for comp in components:
73
73
  w.set_lhs_function(lambda x: v(x, comp))
74
74
 
75
75
  ?>
76
- class <?= names[1] ?>(object):
76
+ class <?= names[1] ?>:
77
77
  def __init__(self):
78
78
  <?
79
79
  for var in comp.variables(deep=True):
@@ -96,9 +96,9 @@ class <?= names[1] ?>(object):
96
96
  Resets the state variables to their initial values
97
97
  """
98
98
  <?
99
- for eq in model.inits():
100
- if eq.lhs.var().parent() == comp:
101
- print(tab2 + e(eq))
99
+ for var, value in zip(model.states(), model.initial_values(True)):
100
+ if var.parent() == comp:
101
+ print(tab2 + v(var, comp) + ' = ' + myokit.float.str(value))
102
102
  ?> def update(self):
103
103
  """
104
104
  Re-calculates all values for the current time and state
@@ -118,7 +118,7 @@ class <?= names[1] ?>(object):
118
118
  #
119
119
  # Engine component
120
120
  #
121
- class Engine(object):
121
+ class Engine:
122
122
  """
123
123
  Calculates the derivatives in the current state
124
124
  """
@@ -213,10 +213,10 @@ def test_step():
213
213
  #
214
214
  # Pacing
215
215
  #
216
- class Protocol(object):
216
+ class Protocol:
217
217
  """ Holds an ordered set of ProtocolEvent objects """
218
218
  def __init__(self):
219
- super(Protocol, self).__init__()
219
+ super().__init__()
220
220
  self.head = None
221
221
  def add(self, e):
222
222
  """ Schedules an event """
@@ -238,9 +238,11 @@ class Protocol(object):
238
238
  if self.head is not None:
239
239
  self.head = self.head.next
240
240
  return e
241
- class ProtocolEvent(object):
241
+
242
+
243
+ class ProtocolEvent:
242
244
  def __init__(self, level, start, duration, period=0, multiplier=0):
243
- super(ProtocolEvent, self).__init__()
245
+ super().__init__()
244
246
  self.level = float(level)
245
247
  self.start = float(start)
246
248
  self.duration = float(duration)
@@ -256,6 +258,7 @@ class ProtocolEvent(object):
256
258
  raise Exception('Non-periodic event cannot occur more than once')
257
259
  self.next = None
258
260
 
261
+
259
262
  def pacing_protocol():
260
263
  pacing = Protocol()
261
264
  <?
@@ -377,10 +380,7 @@ if __name__ == '__main__':
377
380
  except ArithmeticError as e:
378
381
  print('Arithmetic error occurred')
379
382
  y = 'Continue with smaller stepsize? (y/n): '
380
- try:
381
- y = raw_input(y) # Python 2
382
- except NameError:
383
- y = input(y) # Python 3
383
+ y = input(y)
384
384
  if y.lower()[0:1] == 'y':
385
385
  small /= 2
386
386
  large /= 2
@@ -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
  from ._api import ( # noqa
11
8
  Compartment,
12
9
  CSymbolVariable,
@@ -1,3 +1,9 @@
1
+ #
2
+ # SBML API
3
+ #
4
+ # This file is part of Myokit.
5
+ # See http://myokit.org for copyright, sharing, and licensing details.
6
+ #
1
7
  import collections
2
8
  import warnings
3
9
  import re
@@ -16,7 +22,7 @@ class SBMLError(Exception):
16
22
  """Raised if something goes wrong when working with an SBML model."""
17
23
 
18
24
 
19
- class Quantity(object):
25
+ class Quantity:
20
26
  """
21
27
  Base class for anything that has a numerical value in an SBML model, and
22
28
  can be set by rules, reactions, or initial assignments.
@@ -52,8 +58,8 @@ class Quantity(object):
52
58
  """
53
59
  if not isinstance(value, myokit.Expression):
54
60
  raise SBMLError(
55
- '<' + str(value) + '> needs to be an instance of '
56
- 'myokit.Expression.')
61
+ '<' + str(value) + '> needs to be an instance of'
62
+ ' myokit.Expression.')
57
63
 
58
64
  self._initial_value = value
59
65
 
@@ -75,8 +81,8 @@ class Quantity(object):
75
81
  """
76
82
  if not isinstance(value, myokit.Expression):
77
83
  raise SBMLError(
78
- '<' + str(value) + '> needs to be an instance of '
79
- 'myokit.Expression.')
84
+ '<' + str(value) + '> needs to be an instance of'
85
+ ' myokit.Expression.')
80
86
 
81
87
  self._value = value
82
88
  self._is_rate = bool(is_rate)
@@ -89,7 +95,7 @@ class Quantity(object):
89
95
  return self._value
90
96
 
91
97
 
92
- class CSymbolVariable(object):
98
+ class CSymbolVariable:
93
99
  """
94
100
  Represents a CSymbol that can appear in SBML expressions, but which has a
95
101
  predetermind value and/or meaning, e.g. "time".
@@ -122,12 +128,12 @@ class Compartment(Quantity):
122
128
 
123
129
  """
124
130
  def __init__(self, model, sid):
125
- super(Compartment, self).__init__()
131
+ super().__init__()
126
132
 
127
133
  if not isinstance(model, Model):
128
134
  raise SBMLError(
129
- '<' + str(model) + '> needs to be an instance of '
130
- 'myokit.formats.sbml.Model.')
135
+ '<' + str(model) + '> needs to be an instance of'
136
+ ' myokit.formats.sbml.Model.')
131
137
 
132
138
  self._model = model
133
139
  self._sid = str(sid)
@@ -185,7 +191,7 @@ class Compartment(Quantity):
185
191
  return '<Compartment ' + self._sid + '>'
186
192
 
187
193
 
188
- class Model(object):
194
+ class Model:
189
195
  """
190
196
  Represents a model in SBML.
191
197
 
@@ -280,7 +286,7 @@ class Model(object):
280
286
  if not isinstance(compartment, Compartment):
281
287
  raise SBMLError(
282
288
  '<' + compartment + '> needs to be instance of'
283
- 'myokit.formats.sbml.Compartment')
289
+ ' myokit.formats.sbml.Compartment')
284
290
 
285
291
  sid = str(sid) if sid else sid
286
292
  self._register_sid(sid)
@@ -427,7 +433,7 @@ class Model(object):
427
433
  if not isinstance(factor, Parameter):
428
434
  raise SBMLError(
429
435
  '<' + str(factor) + '> needs to be instance of'
430
- 'myokit.formats.sbml.Parameter.')
436
+ ' myokit.formats.sbml.Parameter.')
431
437
 
432
438
  self._conversion_factor = factor
433
439
 
@@ -581,12 +587,12 @@ class Parameter(Quantity):
581
587
 
582
588
  """
583
589
  def __init__(self, model, sid):
584
- super(Parameter, self).__init__()
590
+ super().__init__()
585
591
 
586
592
  if not isinstance(model, Model):
587
593
  raise SBMLError(
588
- '<' + str(model) + '> needs to be an instance of '
589
- 'myokit.formats.sbml.Model.')
594
+ '<' + str(model) + '> needs to be an instance of'
595
+ ' myokit.formats.sbml.Model.')
590
596
 
591
597
  self._model = model
592
598
  self._sid = str(sid)
@@ -612,7 +618,7 @@ class Parameter(Quantity):
612
618
  return self._units
613
619
 
614
620
 
615
- class Reaction(object):
621
+ class Reaction:
616
622
  """
617
623
  Represents an SBML reaction; to create a reaction use
618
624
  :meth:`Model.add_reaction()`.
@@ -629,8 +635,8 @@ class Reaction(object):
629
635
 
630
636
  if not isinstance(model, Model):
631
637
  raise SBMLError(
632
- '<' + str(model) + '> needs to be an instance of '
633
- 'myokit.formats.sbml.Model.')
638
+ '<' + str(model) + '> needs to be an instance of'
639
+ ' myokit.formats.sbml.Model.')
634
640
 
635
641
  self._model = model
636
642
  self._sid = str(sid)
@@ -650,8 +656,8 @@ class Reaction(object):
650
656
  """Adds a modifier to this reaction and returns the created object."""
651
657
  if not isinstance(species, Species):
652
658
  raise SBMLError(
653
- '<' + str(species) + '> needs to be an instance of '
654
- 'myokit.formats.sbml.Species')
659
+ '<' + str(species) + '> needs to be an instance of'
660
+ ' myokit.formats.sbml.Species')
655
661
 
656
662
  sid = str(sid) if sid else sid
657
663
  if sid is not None:
@@ -668,8 +674,8 @@ class Reaction(object):
668
674
  """
669
675
  if not isinstance(species, Species):
670
676
  raise SBMLError(
671
- '<' + str(species) + '> needs to be an instance of '
672
- 'myokit.formats.sbml.Species')
677
+ '<' + str(species) + '> needs to be an instance of'
678
+ ' myokit.formats.sbml.Species')
673
679
 
674
680
  sid = str(sid) if sid else sid
675
681
  if sid is not None:
@@ -685,8 +691,8 @@ class Reaction(object):
685
691
  """Adds a reactant to this reaction and returns the created object."""
686
692
  if not isinstance(species, Species):
687
693
  raise SBMLError(
688
- '<' + str(species) + '> needs to be an instance of '
689
- 'myokit.formats.sbml.Species')
694
+ '<' + str(species) + '> needs to be an instance of'
695
+ ' myokit.formats.sbml.Species')
690
696
 
691
697
  sid = str(sid) if sid else sid
692
698
  if sid is not None:
@@ -731,8 +737,8 @@ class Reaction(object):
731
737
  """
732
738
  if not isinstance(expression, myokit.Expression):
733
739
  raise SBMLError(
734
- '<' + str(expression) + '> needs to be an instance of '
735
- 'myokit.Expression.')
740
+ '<' + str(expression) + '> needs to be an instance of'
741
+ ' myokit.Expression.')
736
742
 
737
743
  self._kinetic_law = expression
738
744
 
@@ -772,12 +778,12 @@ class Species(Quantity):
772
778
 
773
779
  """
774
780
  def __init__(self, compartment, sid, is_amount, is_constant, is_boundary):
775
- super(Species, self).__init__()
781
+ super().__init__()
776
782
 
777
783
  if not isinstance(compartment, Compartment):
778
784
  raise SBMLError(
779
785
  '<' + compartment + '> needs to be instance of'
780
- 'myokit.formats.sbml.Compartment')
786
+ ' myokit.formats.sbml.Compartment')
781
787
  if not isinstance(is_amount, bool):
782
788
  raise SBMLError(
783
789
  'Is_amount <' + str(is_amount) + '> needs to be a boolean.')
@@ -853,7 +859,7 @@ class Species(Quantity):
853
859
  if not isinstance(factor, Parameter):
854
860
  raise SBMLError(
855
861
  '<' + str(factor) + '> needs to be instance of'
856
- 'myokit.formats.sbml.Parameter.')
862
+ ' myokit.formats.sbml.Parameter.')
857
863
 
858
864
  self._conversion_factor = factor
859
865
 
@@ -867,8 +873,8 @@ class Species(Quantity):
867
873
  """
868
874
  if not isinstance(value, myokit.Expression):
869
875
  raise SBMLError(
870
- '<' + str(value) + '> needs to be an instance of '
871
- 'myokit.Expression.')
876
+ '<' + str(value) + '> needs to be an instance of'
877
+ ' myokit.Expression.')
872
878
  if (in_amount is not None) and (not isinstance(in_amount, bool)):
873
879
  raise SBMLError(
874
880
  '<in_amount> needs to be an instance of bool or None.')
@@ -914,12 +920,12 @@ class SpeciesReference(Quantity):
914
920
  MODIFIER = 2
915
921
 
916
922
  def __init__(self, species, sid=None):
917
- super(SpeciesReference, self).__init__()
923
+ super().__init__()
918
924
 
919
925
  if not isinstance(species, Species):
920
926
  raise SBMLError(
921
927
  '<' + species + '> needs to be instance of'
922
- 'myokit.formats.sbml.Species')
928
+ ' myokit.formats.sbml.Species')
923
929
 
924
930
  self._species = species
925
931
  self._sid = str(sid) if sid else sid
@@ -936,16 +942,16 @@ class SpeciesReference(Quantity):
936
942
  return '<SpeciesReference ' + self._sid + '>'
937
943
 
938
944
 
939
- class ModifierSpeciesReference(object):
945
+ class ModifierSpeciesReference:
940
946
  """Represents a reference to a modifier species in an SBML reaction."""
941
947
 
942
948
  def __init__(self, species, sid=None):
943
- super(ModifierSpeciesReference, self).__init__()
949
+ super().__init__()
944
950
 
945
951
  if not isinstance(species, Species):
946
952
  raise SBMLError(
947
953
  '<' + species + '> needs to be instance of'
948
- 'myokit.formats.sbml.Species')
954
+ ' myokit.formats.sbml.Species')
949
955
 
950
956
  self._species = species
951
957
  self._sid = str(sid) if sid else sid
@@ -971,7 +977,7 @@ def convert_name(name):
971
977
  return name
972
978
 
973
979
 
974
- class _MyokitConverter(object):
980
+ class _MyokitConverter:
975
981
  """
976
982
  Converts SBML Models to Myokit models.
977
983
  """
@@ -1058,7 +1064,7 @@ class _MyokitConverter(object):
1058
1064
 
1059
1065
  @staticmethod
1060
1066
  def add_global_component(
1061
- myokit_model, component_references, name='myokit'):
1067
+ myokit_model, component_references, name='global'):
1062
1068
  """
1063
1069
  Creates a component used to store global parameters and the time
1064
1070
  variable.
@@ -1298,7 +1304,7 @@ class _MyokitConverter(object):
1298
1304
  'with an initial value. Default is set to 1.')
1299
1305
 
1300
1306
  # Promote size to state variable
1301
- var.promote(state_value=state_value)
1307
+ var.promote(state_value)
1302
1308
 
1303
1309
  # Set RHS
1304
1310
  # (assignmentRule overwrites initialAssignment)
@@ -1383,7 +1389,7 @@ class _MyokitConverter(object):
1383
1389
  'value. Default is set to 0.')
1384
1390
 
1385
1391
  # Promote size to state variable
1386
- var.promote(state_value=state_value)
1392
+ var.promote(state_value)
1387
1393
  var.set_rhs(myokit.Number(0))
1388
1394
 
1389
1395
  if (not var.rhs().is_literal()) or var.rhs().eval():
@@ -1473,7 +1479,7 @@ class _MyokitConverter(object):
1473
1479
  'value. Default is set to 0.')
1474
1480
 
1475
1481
  # Promote size to state variable
1476
- var.promote(state_value=state_value)
1482
+ var.promote(state_value)
1477
1483
  var.set_rhs(myokit.Number(0))
1478
1484
 
1479
1485
  if (not var.rhs().is_literal()) or var.rhs().eval():
@@ -1546,7 +1552,7 @@ class _MyokitConverter(object):
1546
1552
  'value. Default is set to 0.')
1547
1553
 
1548
1554
  # Promote size to state variable
1549
- var.promote(state_value=state_value)
1555
+ var.promote(state_value)
1550
1556
 
1551
1557
  # Set RHS (reactions are dealt with elsewhere)
1552
1558
  expr = species.value()
@@ -1607,7 +1613,7 @@ class _MyokitConverter(object):
1607
1613
  ' initial value. Default is set to 1.')
1608
1614
 
1609
1615
  # Promote size to state variable
1610
- var.promote(state_value=state_value)
1616
+ var.promote(state_value)
1611
1617
 
1612
1618
  # Set RHS
1613
1619
  # (assignmentRule overwrites initialAssignment)
@@ -1673,7 +1679,7 @@ class _MyokitConverter(object):
1673
1679
  ' 1.')
1674
1680
 
1675
1681
  # Promote size to state variable
1676
- var.promote(state_value=state_value)
1682
+ var.promote(state_value)
1677
1683
 
1678
1684
  # Set RHS
1679
1685
  # (assignmentRule overwrites initialAssignment)
@@ -7,9 +7,6 @@
7
7
  # This file is part of Myokit.
8
8
  # See http://myokit.org for copyright, sharing, and licensing details.
9
9
  #
10
- from __future__ import absolute_import, division
11
- from __future__ import print_function, unicode_literals
12
-
13
10
  import myokit.formats
14
11
 
15
12
 
@@ -22,7 +19,7 @@ class SBMLImporter(myokit.formats.Importer):
22
19
  :class:`myokit.formats.sbml.SBMLParser`.
23
20
  """
24
21
  def __init__(self):
25
- super(SBMLImporter, self).__init__()
22
+ super().__init__()
26
23
 
27
24
  def supports_model(self):
28
25
  """Returns ``True``."""
@@ -8,9 +8,6 @@
8
8
  # This file is part of Myokit.
9
9
  # See http://myokit.org for copyright, sharing, and licensing details.
10
10
  #
11
- from __future__ import absolute_import, division
12
- from __future__ import print_function, unicode_literals
13
-
14
11
  import re
15
12
  import warnings
16
13
 
@@ -76,10 +73,10 @@ class SBMLParsingError(myokit.ImportError):
76
73
  message = 'Error on line ' + line + '. ' + message
77
74
  except AttributeError: # pragma: no cover
78
75
  pass
79
- super(SBMLParsingError, self).__init__(message)
76
+ super().__init__(message)
80
77
 
81
78
 
82
- class SBMLParser(object):
79
+ class SBMLParser:
83
80
  """
84
81
  Parses SBML models, creating an SBML Model structure that can be converted
85
82
  to a :class:`myokit.Model` object.
@@ -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
  from ._exporter import StanExporter
11
8
  from ._ewriter import StanExpressionWriter
12
9
 
@@ -6,10 +6,8 @@
6
6
  # This file is part of Myokit.
7
7
  # See http://myokit.org for copyright, sharing, and licensing details.
8
8
  #
9
- from __future__ import absolute_import, division
10
- from __future__ import print_function, unicode_literals
11
-
12
9
  import myokit
10
+
13
11
  from myokit.formats.python import PythonExpressionWriter
14
12
 
15
13
 
@@ -19,7 +17,7 @@ class StanExpressionWriter(PythonExpressionWriter):
19
17
  Myokit:class:`expressions <myokit.Expression>` to a Stan syntax.
20
18
  """
21
19
  def __init__(self):
22
- super(StanExpressionWriter, self).__init__()
20
+ super().__init__()
23
21
  self._function_prefix = ''
24
22
 
25
23
  self._fcond = None
@@ -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 os
11
8
 
12
9
  import myokit.formats
@@ -61,7 +58,7 @@ class StanExporter(myokit.formats.TemplatedRunnableExporter):
61
58
  ion current).
62
59
 
63
60
  """
64
- super(StanExporter, self).runnable(
61
+ super().runnable(
65
62
  path, model, protocol, parameters, output)
66
63
 
67
64
  def _vars(self, model, protocol, parameters, output):
@@ -109,7 +106,7 @@ class StanExporter(myokit.formats.TemplatedRunnableExporter):
109
106
  ew.set_lhs_function(v)
110
107
 
111
108
  # Process bound variables
112
- bound_variables = model.prepare_bindings({
109
+ bound_variables = myokit._prepare_bindings(model, {
113
110
  'time': 'time',
114
111
  'pace': 'pace',
115
112
  })
@@ -21,7 +21,7 @@ functions{
21
21
  *
22
22
  * @param x The value to search for.
23
23
  * @param sorted A sorted (non-decreasing) vector of values to search in.
24
- * @return The greatest array indice `i` such that `sorted[i] <= x`
24
+ * @return The greatest array index `i` such that `sorted[i] <= x`
25
25
  */
26
26
  int find_interval_elem(real x, vector sorted) {
27
27
 
@@ -83,10 +83,10 @@ functions{
83
83
  vector[n] times = to_vector(xr[1:n]);
84
84
  vector[n] values = to_vector(xr[(n + 1):(2 * n)]);
85
85
 
86
- // Find indice for current time
86
+ // Find index for current time
87
87
  int i = find_interval_elem(time, values);
88
88
 
89
- // Return pacing value
89
+ // Return pacing valueo
90
90
  return (i == 0) ? values[1] : values[i];
91
91
  }
92
92
 
@@ -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
  from ._ereader import SymPyExpressionReader
11
8
  from ._ewriter import SymPyExpressionWriter
12
9
 
@@ -4,14 +4,11 @@
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 myokit
11
8
  import myokit.formats
12
9
 
13
10
 
14
- class SymPyExpressionReader(object):
11
+ class SymPyExpressionReader:
15
12
  """
16
13
  Converts Sympy expressions to Myokit expressions.
17
14
 
@@ -4,16 +4,13 @@
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
7
+ import myokit.formats
9
8
 
10
9
  try:
11
10
  import sympy as sp
12
11
  except ImportError:
13
12
  pass
14
13
 
15
- import myokit.formats
16
-
17
14
 
18
15
  class SymPyExpressionWriter(myokit.formats.ExpressionWriter):
19
16
  """
@@ -23,7 +20,7 @@ class SymPyExpressionWriter(myokit.formats.ExpressionWriter):
23
20
  The returned type is a SymPy object, not a string!
24
21
  """
25
22
  def __init__(self):
26
- super(SymPyExpressionWriter, self).__init__()
23
+ super().__init__()
27
24
 
28
25
  self._flhs = None
29
26
  self.set_lhs_function(lambda lhs: str(lhs))
@@ -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
  from ._wcp import WcpFile # noqa
11
8
  # Importers
12
9
  # Exporters