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.
- {myokit-1.37.0/myokit.egg-info → myokit-1.37.1}/PKG-INFO +1 -1
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_aux.py +4 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_datablock.py +10 -10
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_datalog.py +40 -5
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_myokit_version.py +1 -1
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/axon/_abf.py +11 -4
- myokit-1.37.1/myokit/formats/diffsl/__init__.py +60 -0
- myokit-1.37.1/myokit/formats/diffsl/_ewriter.py +145 -0
- myokit-1.37.1/myokit/formats/diffsl/_exporter.py +435 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/heka/_patchmaster.py +337 -113
- {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/datalog_viewer.py +17 -3
- myokit-1.37.1/myokit/tests/data/io/bad1d-2-no-header.zip +0 -0
- myokit-1.37.1/myokit/tests/data/io/bad1d-3-no-data.zip +0 -0
- myokit-1.37.1/myokit/tests/data/io/bad1d-5-bad-data-type.zip +0 -0
- myokit-1.37.1/myokit/tests/data/io/bad1d-6-time-too-short.zip +0 -0
- myokit-1.37.1/myokit/tests/data/io/bad1d-7-0d-too-short.zip +0 -0
- myokit-1.37.1/myokit/tests/data/io/bad1d-8-1d-too-short.zip +0 -0
- myokit-1.37.1/myokit/tests/data/io/bad2d-2-no-header.zip +0 -0
- myokit-1.37.1/myokit/tests/data/io/bad2d-3-no-data.zip +0 -0
- myokit-1.37.1/myokit/tests/data/io/bad2d-4-not-a-zip.zip +1 -0
- myokit-1.37.1/myokit/tests/data/io/bad2d-5-bad-data-type.zip +0 -0
- myokit-1.37.1/myokit/tests/data/io/bad2d-8-2d-too-short.zip +0 -0
- myokit-1.37.1/myokit/tests/data/io/block1d.mmt +187 -0
- myokit-1.37.1/myokit/tests/data/io/datalog-11-just-a-semicolon.csv +1 -0
- myokit-1.37.1/myokit/tests/data/io/datalog-18-duplicate-keys.csv +4 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_aux.py +4 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_datablock.py +6 -6
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_datalog.py +20 -0
- myokit-1.37.1/myokit/tests/test_formats_diffsl.py +728 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_exporters_run.py +3 -0
- {myokit-1.37.0 → myokit-1.37.1/myokit.egg-info}/PKG-INFO +1 -1
- {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/SOURCES.txt +6 -0
- myokit-1.37.0/myokit/tests/data/io/bad1d-2-no-header.zip +0 -0
- myokit-1.37.0/myokit/tests/data/io/bad1d-3-no-data.zip +0 -0
- myokit-1.37.0/myokit/tests/data/io/bad1d-4-not-a-zip.zip +0 -105
- myokit-1.37.0/myokit/tests/data/io/bad1d-5-bad-data-type.zip +0 -0
- myokit-1.37.0/myokit/tests/data/io/bad1d-6-time-too-short.zip +0 -0
- myokit-1.37.0/myokit/tests/data/io/bad1d-7-0d-too-short.zip +0 -0
- myokit-1.37.0/myokit/tests/data/io/bad1d-8-1d-too-short.zip +0 -0
- myokit-1.37.0/myokit/tests/data/io/bad2d-2-no-header.zip +0 -0
- myokit-1.37.0/myokit/tests/data/io/bad2d-3-no-data.zip +0 -0
- myokit-1.37.0/myokit/tests/data/io/bad2d-4-not-a-zip.zip +0 -105
- myokit-1.37.0/myokit/tests/data/io/bad2d-5-bad-data-type.zip +0 -0
- myokit-1.37.0/myokit/tests/data/io/bad2d-8-2d-too-short.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/LICENSE.txt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/MANIFEST.in +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/README.md +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/__main__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/example.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/find.png +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-128.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-16.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-24.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-256.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-32.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-48.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-64.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer-96.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer.ico +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-datablock-viewer.png +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-128.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-16.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-24.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-256.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-32.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-48.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-64.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide-96.xpm +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide.ico +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/icon-ide.png +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/new.png +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/open.png +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/redo.png +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/run.png +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/save.png +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/gui/undo.png +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/myokit-datablock-viewer.desktop +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/myokit-datalog-viewer.desktop +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/myokit-ide.desktop +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/myokit.lang +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/x-abf.xml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/x-cellml.xml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/x-myokit.xml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-lin/x-wcp.xml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/install-win/menu.json +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/LICENSE +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes_direct.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes_ls.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/nvector/nvector_serial.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_config.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_dense.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_direct.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_export.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_iterative.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_linearsolver.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_matrix.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_nonlinearsolver.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_nvector.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_types.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_version.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sunlinsol/sunlinsol_dense.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/include/sunmatrix/sunmatrix_dense.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/lib/sundials_cvodes.dll +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/lib/sundials_cvodes.lib +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/lib/sundials_nvecserial.dll +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_bin/sundials-win-vs/lib/sundials_nvecserial.lib +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_config.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_err.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_expressions.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_io.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_model_api.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_parsing.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_progress.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_protocol.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cable.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cable.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cmodel.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cmodel.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/compiler.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/compiler.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cvodessim.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/cvodessim.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/differential.hpp +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/fiber_tissue.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/fiber_tissue.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/jacobian.cpp +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/jacobian.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/mcl.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/opencl.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/opencl.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/openclsim.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/openclsim.cl +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/openclsim.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/pacing.h +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/rhs.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/rhs.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/sundials.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_sim/sundials.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_system.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/_unit.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/float.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/_exporter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/template/cable.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/template/euler.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/ansic/template/sim.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/axon/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/axon/_atf.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/axon/_importer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/_exporter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/_importer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v1/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v1/_api.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v1/_parser.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v1/_writer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v2/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v2/_api.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v2/_parser.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cellml/v2/_writer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/channelml/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/channelml/_importer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cpp/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cpp/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cuda/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cuda/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cuda/_exporter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/cuda/template/kernel.cu +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/easyml/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/easyml/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/easyml/_exporter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/heka/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/heka/_importer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/html/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/html/_exporter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/html/_flatten.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/latex/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/latex/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/latex/_exporter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/mathml/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/mathml/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/mathml/_parser.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/_exporter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/template/constants.m +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/template/ifthenelse.m +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/template/main.m +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/template/model.m +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/matlab/template/model_wrapper.m +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/_exporter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/template/cable.c +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/template/kernel.cl +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/template/minilog.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/template/plot.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/opencl/template/test.sh +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/python/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/python/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/python/_exporter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/python/template/sim.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sbml/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sbml/_api.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sbml/_importer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sbml/_parser.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/stan/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/stan/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/stan/_exporter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/stan/template/cell.stan +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/stan/template/run.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sympy/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sympy/_ereader.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/sympy/_ewriter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/wcp/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/wcp/_wcp.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/xml/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/xml/_exporter.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/formats/xml/_split.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/datablock_viewer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/explorer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/ide.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/progress.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/source.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/gui/vargrapher.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/deps.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/guess.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/hh.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/markov.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/multi.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/lib/plots.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/pacing.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/pype.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/__init__.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/ansic_event_based_pacing.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/ansic_time_series_pacing.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-model-compare-a.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-model-compare-b.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-model.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-protocol.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-script.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/beeler-1977-units.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/clancy-1999-fitting.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/conditional.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/cv1d.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/cv1d.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/decker-2009.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/decker.model +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/dn-1985-normalised.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/dom-markov.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/abf-protocol.pro +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/abf-v1.abf +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/abf-v2.abf +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/LICENSE +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/br-1977-dot.cellml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/br-1977.cellml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/corrias.cellml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/decker-2009.cellml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/documentation.cellml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/invalid-file.cellml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/lr-1991-exported-1.cellml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/cellml/lr-1991-exported-2.cellml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-00-valid-file.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-01-wrong-root.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-02-no-channel-type.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-03-overlapping-name.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-04-no-cvr.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-05-two-cvrs.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-06-no-q10.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-07-three-transitions.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-08-no-closed-to-open.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-09-no-open-to-closed.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-10-tco-bad-expression.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-11-toc-bad-expression.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-12-no-steady-state.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-13-no-time-course.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-14-inf-bad-expression.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-15-tau-bad-expression.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-16-no-gates.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-17-invalid-name.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/channelml/ch-18-c-style-if.channelml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/00004-sbml-l2v1-modified.xml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/00004-sbml-l3v2-modified.xml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/HodgkinHuxley.xml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/LICENSE +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/model/00001-sbml-l3v2.xml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/model/00004-sbml-l3v2.xml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/model/01103-sbml-l3v2.xml +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/result/00001-results.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/result/00004-results.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/sbml/result/01103-results.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/wcp-file-empty.wcp +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/formats/wcp-file.wcp +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/bad1d-1-not-enough-files.zip +0 -0
- /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
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/bad2d-1-not-enough-files.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/bad2d-6-time-too-short.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/bad2d-7-0d-too-short.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-1-no-data.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-2-no-structure.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-3-not-a-zip.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-4-invalid-n-fields.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-5-invalid-data-size.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-6-bad-data-type.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/badlog-7-not-enough-data.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/block2d.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/block2d.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-1-empty.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-10-just-spaces.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-12-bad-header.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-13-header-with-empty-1.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-14-header-with-empty-2.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-15-header-with-empty-3.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-16-wrong-columns-in-data.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-17-non-float-data.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-2-windows.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-3-old-mac.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-4-empty-lines.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-5-semicolons.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-6-open-string.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-7-empty-lines-2.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-8-unquoted-header.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog-9-double-quoted-header.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/datalog.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/io/goodlog.zip +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/lr-1991-dep.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/lr-1991-fitting.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/lr-1991-testing.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/lr-1991.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/beeler-1977-protocol.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/beeler-1977-script.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/beeler-no-name.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/lr-1991.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/not-a-model.csv +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/multi/subdir/beeler-no-name.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/data/noble-1962.mmt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v1_api.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v1_parser.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v1_writer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v2_api.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v2_parser.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cellml_v2_writer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_cmodel.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_compiler_detection.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_component.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_config.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_dependency_checking.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_expressions.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_float.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_ansic.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_axon.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_cellml.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_channelml.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_cpp.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_cuda.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_easyml.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_html.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_latex.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_mathml_content.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_mathml_presentation.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_matlab.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_opencl.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_python.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_sbml.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_stan.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_sympy.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_formats_wcp.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_io.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_jacobian_calculator.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_jacobian_tracer.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_deps.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_guess.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_hh.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_markov.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_multi.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_lib_plots.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_meta.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_model.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_model_building.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_opencl_info.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_pacing_factory.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_pacing_system_c.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_pacing_system_py.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_parsing.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_progress_reporters.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_protocol.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_protocol_floating_point.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_protocol_time_series.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_pype.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_quantity.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_rhs_benchmarker.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_sbml_api.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_sbml_parser.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_1d.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_cvodes.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_cvodes_from_disk.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_fiber_tissue.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_log_interval.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_opencl.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_opencl_log_interval.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_opencl_vs_cvode.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_simulation_opencl_vs_sim1d.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_system_info.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_tools.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_unit.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_user_functions.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tests/test_variable.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/tools.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit/units.py +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/dependency_links.txt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/entry_points.txt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/not-zip-safe +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/requires.txt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/myokit.egg-info/top_level.txt +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/setup.cfg +0 -0
- {myokit-1.37.0 → myokit-1.37.1}/setup.py +0 -0
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
670
|
-
|
|
671
|
-
|
|
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
|
-
#
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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)
|