myokit 1.36.1__py3-none-any.whl → 1.37.1__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.
- myokit/__init__.py +6 -19
- myokit/_aux.py +4 -0
- myokit/_datablock.py +55 -65
- myokit/_datalog.py +42 -7
- myokit/_err.py +26 -3
- myokit/_expressions.py +241 -127
- myokit/_model_api.py +19 -13
- myokit/_myokit_version.py +1 -1
- myokit/_sim/jacobian.py +3 -3
- myokit/_sim/openclsim.py +5 -5
- myokit/_sim/rhs.py +1 -1
- myokit/formats/__init__.py +4 -9
- myokit/formats/ansic/_ewriter.py +4 -20
- myokit/formats/axon/_abf.py +11 -4
- myokit/formats/diffsl/__init__.py +60 -0
- myokit/formats/diffsl/_ewriter.py +145 -0
- myokit/formats/diffsl/_exporter.py +435 -0
- myokit/formats/heka/_patchmaster.py +345 -115
- myokit/formats/opencl/_ewriter.py +3 -42
- myokit/formats/opencl/template/minilog.py +1 -1
- myokit/formats/sympy/_ereader.py +2 -1
- myokit/formats/wcp/_wcp.py +3 -3
- myokit/gui/datalog_viewer.py +28 -9
- myokit/lib/markov.py +2 -2
- myokit/lib/plots.py +4 -4
- myokit/tests/data/formats/wcp-file-empty.wcp +0 -0
- myokit/tests/data/io/bad1d-2-no-header.zip +0 -0
- myokit/tests/data/io/bad1d-3-no-data.zip +0 -0
- myokit/tests/data/io/bad1d-4-not-a-zip.zip +1 -105
- myokit/tests/data/io/bad1d-5-bad-data-type.zip +0 -0
- myokit/tests/data/io/bad1d-6-time-too-short.zip +0 -0
- myokit/tests/data/io/bad1d-7-0d-too-short.zip +0 -0
- myokit/tests/data/io/bad1d-8-1d-too-short.zip +0 -0
- myokit/tests/data/io/bad2d-2-no-header.zip +0 -0
- myokit/tests/data/io/bad2d-3-no-data.zip +0 -0
- myokit/tests/data/io/bad2d-4-not-a-zip.zip +1 -105
- myokit/tests/data/io/bad2d-5-bad-data-type.zip +0 -0
- myokit/tests/data/io/bad2d-8-2d-too-short.zip +0 -0
- myokit/tests/data/io/block1d.mmt +187 -0
- myokit/tests/data/io/datalog-18-duplicate-keys.csv +4 -0
- myokit/tests/test_aux.py +4 -0
- myokit/tests/test_datablock.py +16 -16
- myokit/tests/test_datalog.py +24 -1
- myokit/tests/test_expressions.py +532 -251
- myokit/tests/test_formats_ansic.py +6 -18
- myokit/tests/test_formats_cpp.py +0 -5
- myokit/tests/test_formats_cuda.py +7 -15
- myokit/tests/test_formats_diffsl.py +728 -0
- myokit/tests/test_formats_easyml.py +4 -9
- myokit/tests/test_formats_exporters_run.py +3 -0
- myokit/tests/test_formats_latex.py +10 -11
- myokit/tests/test_formats_matlab.py +0 -8
- myokit/tests/test_formats_opencl.py +0 -29
- myokit/tests/test_formats_python.py +2 -19
- myokit/tests/test_formats_stan.py +0 -13
- myokit/tests/test_formats_sympy.py +3 -3
- myokit/tests/test_formats_wcp.py +15 -0
- myokit/tests/test_model.py +20 -20
- myokit/tests/test_parsing.py +19 -0
- {myokit-1.36.1.dist-info → myokit-1.37.1.dist-info}/METADATA +1 -1
- {myokit-1.36.1.dist-info → myokit-1.37.1.dist-info}/RECORD +65 -58
- {myokit-1.36.1.dist-info → myokit-1.37.1.dist-info}/LICENSE.txt +0 -0
- {myokit-1.36.1.dist-info → myokit-1.37.1.dist-info}/WHEEL +0 -0
- {myokit-1.36.1.dist-info → myokit-1.37.1.dist-info}/entry_points.txt +0 -0
- {myokit-1.36.1.dist-info → myokit-1.37.1.dist-info}/top_level.txt +0 -0
|
@@ -176,11 +176,13 @@ class AnsiCExpressionWriterTest(myokit.tests.ExpressionWriterTestCase):
|
|
|
176
176
|
|
|
177
177
|
def test_conditions(self):
|
|
178
178
|
a, b, c, d = self.abcd
|
|
179
|
+
p = myokit.Equal(a, b)
|
|
180
|
+
q = myokit.NotEqual(c, d)
|
|
179
181
|
|
|
180
|
-
self.eq(And(
|
|
181
|
-
self.eq(Or(
|
|
182
|
-
self.eq(Not(And(
|
|
183
|
-
self.eq(Not(
|
|
182
|
+
self.eq(And(p, q), '((a == b) && (c != d))')
|
|
183
|
+
self.eq(Or(q, p), '((c != d) || (a == b))')
|
|
184
|
+
self.eq(Not(And(p, q)), '(!((a == b) && (c != d)))')
|
|
185
|
+
self.eq(Not(p), '(!(a == b))')
|
|
184
186
|
|
|
185
187
|
self.eq(Equal(a, b), '(a == b)')
|
|
186
188
|
self.eq(NotEqual(a, b), '(a != b)')
|
|
@@ -191,12 +193,6 @@ class AnsiCExpressionWriterTest(myokit.tests.ExpressionWriterTestCase):
|
|
|
191
193
|
|
|
192
194
|
self.eq(And(Equal(a, b), NotEqual(c, d)), '((a == b) && (c != d))')
|
|
193
195
|
self.eq(Or(More(d, c), Less(b, a)), '((d > c) || (b < a))')
|
|
194
|
-
self.eq(Not(Or(Number(1), Number(2))), '(!(1.0 || 2.0))')
|
|
195
|
-
self.eq(Not(Less(Number(1), Number(2))), '(!(1.0 < 2.0))')
|
|
196
|
-
self.eq(Not(Plus(Number(1), Number(2))), '(!(1.0 + 2.0))')
|
|
197
|
-
|
|
198
|
-
self.eq(Equal(Equal(Number(0), Number(0)), Number(0)),
|
|
199
|
-
'((0.0 == 0.0) == 0.0)')
|
|
200
196
|
|
|
201
197
|
def test_conditionals(self):
|
|
202
198
|
|
|
@@ -206,11 +202,6 @@ class AnsiCExpressionWriterTest(myokit.tests.ExpressionWriterTestCase):
|
|
|
206
202
|
self.eq(Piecewise(Equal(a, b), c, Equal(a, d), Number(3), Number(4)),
|
|
207
203
|
'((a == b) ? c : ((a == d) ? 3.0 : 4.0))')
|
|
208
204
|
|
|
209
|
-
# Extra parentheses if condition is not a condition
|
|
210
|
-
self.eq(If(a, d, c), '((a) ? d : c)')
|
|
211
|
-
self.eq(Piecewise(a, b, c, d, Number(4)),
|
|
212
|
-
'((a) ? b : ((c) ? d : 4.0))')
|
|
213
|
-
|
|
214
205
|
# Using if-then-else function
|
|
215
206
|
w = self._target()
|
|
216
207
|
w.set_lhs_function(lambda v: v.var().name())
|
|
@@ -329,9 +320,6 @@ class AnsiCExpressionWriterTest(myokit.tests.ExpressionWriterTestCase):
|
|
|
329
320
|
c.add(If(Not(true), a, b), 20)
|
|
330
321
|
c.add(If(Not(false), a, b), 10)
|
|
331
322
|
|
|
332
|
-
c.add(If(Equal(Equal(Number(0), Number(0)), Number(0)), a, b), 20)
|
|
333
|
-
c.add(If(Equal(Equal(Number(0), Number(0)), Number(1)), a, b), 10)
|
|
334
|
-
|
|
335
323
|
c.add(Piecewise(true, Number(10), false, Number(20), Number(30)), 10)
|
|
336
324
|
c.add(Piecewise(true, Number(10), true, Number(20), Number(30)), 10)
|
|
337
325
|
c.add(Piecewise(false, Number(10), true, Number(20), Number(30)), 20)
|
myokit/tests/test_formats_cpp.py
CHANGED
|
@@ -72,11 +72,6 @@ class CppExpressionWriterTest(myokit.tests.ExpressionWriterTestCase):
|
|
|
72
72
|
myokit.Number(4)),
|
|
73
73
|
'((a == b) ? c : ((a == d) ? 3.0 : 4.0))')
|
|
74
74
|
|
|
75
|
-
# Extra parentheses if condition is not a condition
|
|
76
|
-
self.eq(myokit.If(a, d, c), '((a) ? d : c)')
|
|
77
|
-
self.eq(myokit.Piecewise(a, b, c, d, myokit.Number(4)),
|
|
78
|
-
'((a) ? b : ((c) ? d : 4.0))')
|
|
79
|
-
|
|
80
75
|
# Using if-then-else function
|
|
81
76
|
w = self._target()
|
|
82
77
|
w.set_lhs_function(lambda v: v.var().name())
|
|
@@ -186,10 +186,12 @@ class CudaExpressionWriterTest(myokit.tests.ExpressionWriterTestCase):
|
|
|
186
186
|
# Inherited from c-based
|
|
187
187
|
|
|
188
188
|
a, b, c, d = self.abcd
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
self.eq(
|
|
192
|
-
self.eq(
|
|
189
|
+
p = Equal(a, b)
|
|
190
|
+
q = NotEqual(c, d)
|
|
191
|
+
self.eq(And(p, q), '((a == b) && (c != d))')
|
|
192
|
+
self.eq(Or(q, p), '((c != d) || (a == b))')
|
|
193
|
+
self.eq(Not(And(p, p)), '(!((a == b) && (a == b)))')
|
|
194
|
+
self.eq(Not(q), '(!(c != d))')
|
|
193
195
|
|
|
194
196
|
self.eq(Equal(a, b), '(a == b)')
|
|
195
197
|
self.eq(NotEqual(a, b), '(a != b)')
|
|
@@ -198,14 +200,9 @@ class CudaExpressionWriterTest(myokit.tests.ExpressionWriterTestCase):
|
|
|
198
200
|
self.eq(MoreEqual(c, a), '(c >= a)')
|
|
199
201
|
self.eq(LessEqual(b, d), '(b <= d)')
|
|
200
202
|
|
|
201
|
-
self.eq(And(Equal(a, b), NotEqual(c, d)), '((a == b) && (c != d))')
|
|
202
203
|
self.eq(Or(More(d, c), Less(b, a)), '((d > c) || (b < a))')
|
|
203
|
-
self.eq(Not(
|
|
204
|
+
self.eq(Not(Equal(Number(1), Number(2))), '(!(1.0f == 2.0f))')
|
|
204
205
|
self.eq(Not(Less(Number(1), Number(2))), '(!(1.0f < 2.0f))')
|
|
205
|
-
self.eq(Not(Plus(Number(1), Number(2))), '(!(1.0f + 2.0f))')
|
|
206
|
-
|
|
207
|
-
self.eq(Equal(Equal(Number(0), Number(0)), Number(0)),
|
|
208
|
-
'((0.0f == 0.0f) == 0.0f)')
|
|
209
206
|
|
|
210
207
|
def test_conditionals(self):
|
|
211
208
|
# Inherited from c-based
|
|
@@ -216,11 +213,6 @@ class CudaExpressionWriterTest(myokit.tests.ExpressionWriterTestCase):
|
|
|
216
213
|
self.eq(Piecewise(Equal(a, b), c, Equal(a, d), Number(3), Number(4)),
|
|
217
214
|
'((a == b) ? c : ((a == d) ? 3.0f : 4.0f))')
|
|
218
215
|
|
|
219
|
-
# If condition is not a condition
|
|
220
|
-
self.eq(If(a, d, c), '((a) ? d : c)')
|
|
221
|
-
self.eq(Piecewise(a, b, c, d, Number(4)),
|
|
222
|
-
'((a) ? b : ((c) ? d : 4.0f))')
|
|
223
|
-
|
|
224
216
|
|
|
225
217
|
if __name__ == '__main__':
|
|
226
218
|
unittest.main()
|