myokit 1.35.4__tar.gz → 1.36.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.35.4 → myokit-1.36.1}/LICENSE.txt +1 -1
- {myokit-1.35.4/myokit.egg-info → myokit-1.36.1}/PKG-INFO +19 -8
- {myokit-1.35.4 → myokit-1.36.1}/README.md +18 -7
- {myokit-1.35.4 → myokit-1.36.1}/myokit/__init__.py +5 -3
- {myokit-1.35.4 → myokit-1.36.1}/myokit/__main__.py +9 -159
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_config.py +2 -2
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_expressions.py +6 -6
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_model_api.py +11 -7
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_myokit_version.py +1 -1
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_protocol.py +4 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/__init__.py +1 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/cvodessim.c +321 -177
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/cvodessim.py +107 -43
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/mcl.h +54 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/__init__.py +63 -12
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/ansic/__init__.py +2 -1
- myokit-1.36.1/myokit/formats/ansic/_ewriter.py +237 -0
- myokit-1.36.1/myokit/formats/cpp/_ewriter.py +26 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cuda/_ewriter.py +15 -51
- myokit-1.36.1/myokit/formats/easyml/_ewriter.py +97 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/heka/_patchmaster.py +15 -3
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/latex/_ewriter.py +103 -88
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/latex/_exporter.py +1 -1
- myokit-1.36.1/myokit/formats/matlab/_ewriter.py +131 -0
- myokit-1.36.1/myokit/formats/opencl/_ewriter.py +150 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/python/_ewriter.py +81 -50
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/stan/_ewriter.py +29 -37
- {myokit-1.35.4 → myokit-1.36.1}/myokit/gui/source.py +1 -1
- {myokit-1.35.4 → myokit-1.36.1}/myokit/lib/hh.py +3 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/lib/markov.py +6 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/__init__.py +70 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/decker.model +59 -59
- myokit-1.36.1/myokit/tests/test_formats.py +239 -0
- myokit-1.36.1/myokit/tests/test_formats_ansic.py +344 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_formats_axon.py +17 -0
- myokit-1.36.1/myokit/tests/test_formats_cpp.py +97 -0
- myokit-1.36.1/myokit/tests/test_formats_cuda.py +226 -0
- myokit-1.36.1/myokit/tests/test_formats_easyml.py +427 -0
- myokit-1.35.4/myokit/tests/test_formats_exporters.py → myokit-1.36.1/myokit/tests/test_formats_exporters_run.py +1 -69
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_formats_html.py +1 -3
- myokit-1.36.1/myokit/tests/test_formats_latex.py +211 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_formats_mathml_content.py +13 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_formats_mathml_presentation.py +54 -42
- myokit-1.36.1/myokit/tests/test_formats_matlab.py +218 -0
- myokit-1.36.1/myokit/tests/test_formats_opencl.py +226 -0
- myokit-1.36.1/myokit/tests/test_formats_python.py +557 -0
- myokit-1.36.1/myokit/tests/test_formats_stan.py +175 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_formats_sympy.py +9 -2
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_lib_hh.py +36 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_lib_plots.py +0 -16
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_model.py +21 -1
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_simulation_cvodes.py +137 -56
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tools.py +3 -2
- {myokit-1.35.4 → myokit-1.36.1/myokit.egg-info}/PKG-INFO +19 -8
- {myokit-1.35.4 → myokit-1.36.1}/myokit.egg-info/SOURCES.txt +8 -3
- myokit-1.35.4/myokit/formats/ansic/_ewriter.py +0 -118
- myokit-1.35.4/myokit/formats/cpp/_ewriter.py +0 -15
- myokit-1.35.4/myokit/formats/easyml/_ewriter.py +0 -125
- myokit-1.35.4/myokit/formats/matlab/_ewriter.py +0 -109
- myokit-1.35.4/myokit/formats/opencl/_ewriter.py +0 -167
- myokit-1.35.4/myokit/tests/test_formats.py +0 -131
- myokit-1.35.4/myokit/tests/test_formats_easyml.py +0 -410
- myokit-1.35.4/myokit/tests/test_formats_expression_writers.py +0 -1281
- myokit-1.35.4/myokit/tests/test_formats_importers.py +0 -53
- myokit-1.35.4/myokit/tests/test_formats_opencl.py +0 -400
- {myokit-1.35.4 → myokit-1.36.1}/MANIFEST.in +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_aux.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/example.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/find.png +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-datablock-viewer-128.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-datablock-viewer-16.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-datablock-viewer-24.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-datablock-viewer-256.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-datablock-viewer-32.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-datablock-viewer-48.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-datablock-viewer-64.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-datablock-viewer-96.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-datablock-viewer.ico +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-datablock-viewer.png +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-ide-128.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-ide-16.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-ide-24.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-ide-256.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-ide-32.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-ide-48.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-ide-64.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-ide-96.xpm +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-ide.ico +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/icon-ide.png +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/new.png +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/open.png +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/redo.png +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/run.png +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/save.png +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/gui/undo.png +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/install-lin/myokit-datablock-viewer.desktop +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/install-lin/myokit-datalog-viewer.desktop +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/install-lin/myokit-ide.desktop +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/install-lin/myokit.lang +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/install-lin/x-abf.xml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/install-lin/x-cellml.xml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/install-lin/x-myokit.xml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/install-lin/x-wcp.xml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/install-win/menu.json +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/LICENSE +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes_direct.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/cvodes/cvodes_ls.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/nvector/nvector_serial.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_config.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_dense.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_direct.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_export.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_iterative.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_linearsolver.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_matrix.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_nonlinearsolver.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_nvector.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_types.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sundials/sundials_version.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sunlinsol/sunlinsol_dense.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/include/sunmatrix/sunmatrix_dense.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/lib/sundials_cvodes.dll +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/lib/sundials_cvodes.lib +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/lib/sundials_nvecserial.dll +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_bin/sundials-win-vs/lib/sundials_nvecserial.lib +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_datablock.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_datalog.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_err.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_io.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_parsing.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_progress.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/cable.c +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/cable.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/cmodel.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/cmodel.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/compiler.c +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/compiler.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/differential.hpp +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/fiber_tissue.c +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/fiber_tissue.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/jacobian.cpp +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/jacobian.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/opencl.c +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/opencl.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/openclsim.c +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/openclsim.cl +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/openclsim.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/pacing.h +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/rhs.c +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/rhs.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/sundials.c +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_sim/sundials.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_system.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/_unit.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/float.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/ansic/_exporter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/ansic/template/cable.c +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/ansic/template/euler.c +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/ansic/template/sim.c +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/axon/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/axon/_abf.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/axon/_atf.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/axon/_importer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/_ewriter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/_exporter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/_importer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/v1/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/v1/_api.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/v1/_parser.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/v1/_writer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/v2/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/v2/_api.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/v2/_parser.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cellml/v2/_writer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/channelml/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/channelml/_importer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cpp/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cuda/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cuda/_exporter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/cuda/template/kernel.cu +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/easyml/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/easyml/_exporter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/heka/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/heka/_importer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/html/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/html/_exporter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/html/_flatten.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/latex/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/mathml/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/mathml/_ewriter.py +2 -2
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/mathml/_parser.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/matlab/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/matlab/_exporter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/matlab/template/constants.m +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/matlab/template/ifthenelse.m +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/matlab/template/main.m +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/matlab/template/model.m +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/matlab/template/model_wrapper.m +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/opencl/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/opencl/_exporter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/opencl/template/cable.c +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/opencl/template/kernel.cl +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/opencl/template/minilog.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/opencl/template/plot.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/opencl/template/test.sh +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/python/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/python/_exporter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/python/template/sim.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/sbml/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/sbml/_api.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/sbml/_importer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/sbml/_parser.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/stan/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/stan/_exporter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/stan/template/cell.stan +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/stan/template/run.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/sympy/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/sympy/_ereader.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/sympy/_ewriter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/wcp/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/wcp/_wcp.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/xml/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/xml/_exporter.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/formats/xml/_split.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/gui/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/gui/datablock_viewer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/gui/datalog_viewer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/gui/explorer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/gui/ide.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/gui/progress.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/gui/vargrapher.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/lib/__init__.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/lib/deps.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/lib/guess.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/lib/multi.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/lib/plots.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/pacing.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/pype.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/ansic_event_based_pacing.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/ansic_time_series_pacing.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/beeler-1977-model-compare-a.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/beeler-1977-model-compare-b.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/beeler-1977-model.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/beeler-1977-protocol.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/beeler-1977-script.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/beeler-1977-units.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/clancy-1999-fitting.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/conditional.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/cv1d.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/cv1d.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/decker-2009.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/dn-1985-normalised.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/dom-markov.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/abf-protocol.pro +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/abf-v1.abf +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/abf-v2.abf +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/cellml/LICENSE +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/cellml/br-1977-dot.cellml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/cellml/br-1977.cellml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/cellml/corrias.cellml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/cellml/decker-2009.cellml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/cellml/documentation.cellml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/cellml/invalid-file.cellml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/cellml/lr-1991-exported-1.cellml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/cellml/lr-1991-exported-2.cellml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-00-valid-file.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-01-wrong-root.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-02-no-channel-type.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-03-overlapping-name.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-04-no-cvr.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-05-two-cvrs.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-06-no-q10.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-07-three-transitions.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-08-no-closed-to-open.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-09-no-open-to-closed.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-10-tco-bad-expression.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-11-toc-bad-expression.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-12-no-steady-state.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-13-no-time-course.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-14-inf-bad-expression.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-15-tau-bad-expression.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-16-no-gates.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-17-invalid-name.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/channelml/ch-18-c-style-if.channelml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/sbml/00004-sbml-l2v1-modified.xml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/sbml/00004-sbml-l3v2-modified.xml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/sbml/HodgkinHuxley.xml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/sbml/LICENSE +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/sbml/model/00001-sbml-l3v2.xml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/sbml/model/00004-sbml-l3v2.xml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/sbml/model/01103-sbml-l3v2.xml +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/sbml/result/00001-results.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/sbml/result/00004-results.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/sbml/result/01103-results.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/formats/wcp-file.wcp +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad1d-1-not-enough-files.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad1d-2-no-header.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad1d-3-no-data.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad1d-4-not-a-zip.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad1d-5-bad-data-type.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad1d-6-time-too-short.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad1d-7-0d-too-short.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad1d-8-1d-too-short.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad2d-1-not-enough-files.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad2d-2-no-header.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad2d-3-no-data.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad2d-4-not-a-zip.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad2d-5-bad-data-type.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad2d-6-time-too-short.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad2d-7-0d-too-short.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/bad2d-8-2d-too-short.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/badlog-1-no-data.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/badlog-2-no-structure.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/badlog-3-not-a-zip.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/badlog-4-invalid-n-fields.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/badlog-5-invalid-data-size.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/badlog-6-bad-data-type.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/badlog-7-not-enough-data.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/block2d.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/block2d.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-1-empty.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-10-just-spaces.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-11-just-a-semicolon.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-12-bad-header.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-13-header-with-empty-1.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-14-header-with-empty-2.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-15-header-with-empty-3.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-16-wrong-columns-in-data.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-17-non-float-data.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-2-windows.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-3-old-mac.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-4-empty-lines.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-5-semicolons.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-6-open-string.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-7-empty-lines-2.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-8-unquoted-header.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog-9-double-quoted-header.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/datalog.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/io/goodlog.zip +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/lr-1991-dep.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/lr-1991-fitting.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/lr-1991-testing.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/lr-1991.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/multi/beeler-1977-protocol.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/multi/beeler-1977-script.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/multi/beeler-no-name.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/multi/lr-1991.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/multi/not-a-model.csv +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/multi/subdir/beeler-no-name.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/data/noble-1962.mmt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_aux.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_cellml_v1_api.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_cellml_v1_parser.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_cellml_v1_writer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_cellml_v2_api.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_cellml_v2_parser.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_cellml_v2_writer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_cmodel.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_compiler_detection.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_component.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_config.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_datablock.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_datalog.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_dependency_checking.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_expressions.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_float.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_formats_cellml.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_formats_channelml.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_formats_sbml.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_formats_wcp.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_io.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_jacobian_calculator.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_jacobian_tracer.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_lib_deps.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_lib_guess.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_lib_markov.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_lib_multi.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_meta.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_model_building.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_opencl_info.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_pacing_factory.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_pacing_system_c.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_pacing_system_py.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_parsing.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_progress_reporters.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_protocol.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_protocol_floating_point.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_protocol_time_series.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_pype.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_quantity.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_rhs_benchmarker.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_sbml_api.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_sbml_parser.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_simulation_1d.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_simulation_cvodes_from_disk.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_simulation_fiber_tissue.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_simulation_log_interval.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_simulation_opencl.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_simulation_opencl_log_interval.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_simulation_opencl_vs_cvode.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_simulation_opencl_vs_sim1d.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_system_info.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_tools.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_unit.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_user_functions.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/tests/test_variable.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit/units.py +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit.egg-info/dependency_links.txt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit.egg-info/entry_points.txt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit.egg-info/not-zip-safe +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit.egg-info/requires.txt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/myokit.egg-info/top_level.txt +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/setup.cfg +0 -0
- {myokit-1.35.4 → myokit-1.36.1}/setup.py +0 -0
|
@@ -3,7 +3,7 @@ BSD 3-Clause License
|
|
|
3
3
|
Copyright (c) 2011-2017 Maastricht University. All rights reserved.
|
|
4
4
|
Copyright (c) 2017-2020 University of Oxford. All rights reserved.
|
|
5
5
|
(University of Oxford means the Chancellor, Masters and Scholars of the University of Oxford, having an administrative office at Wellington Square, Oxford OX1 2JD, UK).
|
|
6
|
-
Copyright (c) 2020-
|
|
6
|
+
Copyright (c) 2020-2024 University of Nottingham. All rights reserved.
|
|
7
7
|
|
|
8
8
|
Redistribution and use in source and binary forms, with or without
|
|
9
9
|
modification, are permitted provided that the following conditions are met:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: myokit
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.36.1
|
|
4
4
|
Summary: A modeling and simulation tool for cardiac cellular electrophysiology
|
|
5
5
|
Home-page: http://myokit.org
|
|
6
6
|
Author: Michael Clerx
|
|
@@ -37,19 +37,19 @@ License-File: LICENSE.txt
|
|
|
37
37
|
[](https://codecov.io/gh/myokit/myokit)
|
|
38
38
|
[](https://myokit.readthedocs.io/?badge=latest)
|
|
39
39
|
|
|
40
|
-

|
|
41
41
|
|
|
42
|
-
[Myokit](
|
|
42
|
+
[Myokit](https://myokit.org) is a tool for modeling and simulation of cardiac cellular electrophysiology.
|
|
43
43
|
It's [open-source](https://github.com/myokit/myokit/blob/main/LICENSE.txt), written in Python, hosted on [GitHub](https://github.com/myokit/myokit/) and available on [PyPi](https://pypi.org/project/myokit/).
|
|
44
44
|
For the latest documentation, see [myokit.readthedocs.io](https://myokit.readthedocs.io/).
|
|
45
45
|
|
|
46
|
-
More information, including examples and an installation guide, is available on [myokit.org](
|
|
46
|
+
More information, including examples and an installation guide, is available on [myokit.org](https://myokit.org).
|
|
47
47
|
A list of changes introduced in each Myokit release is provided in the [Changelog](https://github.com/myokit/myokit/blob/main/CHANGELOG.md).
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
## Install
|
|
51
51
|
|
|
52
|
-
For full installation details (on linux, mac, or windows), please see [
|
|
52
|
+
For full installation details (on linux, mac, or windows), please see [https://myokit.org/install](https://myokit.org/install).
|
|
53
53
|
A shorter installation guide for experienced users is given below.
|
|
54
54
|
|
|
55
55
|
To install Myokit, using PyQt5 for Myokit's GUI components, run:
|
|
@@ -97,12 +97,23 @@ To see what else Myokit can do, type
|
|
|
97
97
|
|
|
98
98
|
## Contributing to Myokit
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
Contributing to Myokit is as easy as [asking questions](https://github.com/myokit/myokit/discussions) or posting [issues and feature requests](https://github.com/myokit/myokit/issues), and we have [pledged](./CODE_OF_CONDUCT.md) to make this an inclusive experience.
|
|
101
|
+
|
|
102
|
+
We are always looking for people to contribute code too!
|
|
103
|
+
Guidelines to help you do this are provided in [CONTRIBUTING.md](./CONTRIBUTING.md), but before diving in please [open an issue](https://github.com/myokit/myokit/issues) so that we can first discuss what needs to be done.
|
|
104
|
+
|
|
105
|
+
A high-level plan for Myokit's future is provided in the [roadmap](./ROADMAP.md).
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
### Meet the team!
|
|
109
|
+
|
|
110
|
+
Myokit's development is driven by a [team](https://github.com/orgs/myokit/people) at the Universities of Nottingham, Oxford, and Macao, led by Michael Clerx (Nottingham).
|
|
111
|
+
It is guided by an external advisory board composed of Jordi Heijman (Maastricht University), Trine Krogh-Madsen (Weill Cornell Medicine), and David Gavaghan (Oxford).
|
|
102
112
|
|
|
103
113
|
|
|
104
114
|
## Citing Myokit
|
|
105
115
|
|
|
106
116
|
If you use Myokit in your research, please cite it using the information in our [CITATION file](https://github.com/myokit/myokit/blob/main/CITATION).
|
|
107
117
|
|
|
108
|
-
|
|
118
|
+
We like to [keep track of who's using Myokit](https://myokit.org/publications/) for research (based on publications) and teaching (based on peronsal correspondence).
|
|
119
|
+
If you've used Myokit in teaching, we're always happy to hear about it so please get in touch via the [discussion board](https://github.com/myokit/myokit/discussions)!
|
|
@@ -5,19 +5,19 @@
|
|
|
5
5
|
[](https://codecov.io/gh/myokit/myokit)
|
|
6
6
|
[](https://myokit.readthedocs.io/?badge=latest)
|
|
7
7
|
|
|
8
|
-

|
|
9
9
|
|
|
10
|
-
[Myokit](
|
|
10
|
+
[Myokit](https://myokit.org) is a tool for modeling and simulation of cardiac cellular electrophysiology.
|
|
11
11
|
It's [open-source](https://github.com/myokit/myokit/blob/main/LICENSE.txt), written in Python, hosted on [GitHub](https://github.com/myokit/myokit/) and available on [PyPi](https://pypi.org/project/myokit/).
|
|
12
12
|
For the latest documentation, see [myokit.readthedocs.io](https://myokit.readthedocs.io/).
|
|
13
13
|
|
|
14
|
-
More information, including examples and an installation guide, is available on [myokit.org](
|
|
14
|
+
More information, including examples and an installation guide, is available on [myokit.org](https://myokit.org).
|
|
15
15
|
A list of changes introduced in each Myokit release is provided in the [Changelog](https://github.com/myokit/myokit/blob/main/CHANGELOG.md).
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
## Install
|
|
19
19
|
|
|
20
|
-
For full installation details (on linux, mac, or windows), please see [
|
|
20
|
+
For full installation details (on linux, mac, or windows), please see [https://myokit.org/install](https://myokit.org/install).
|
|
21
21
|
A shorter installation guide for experienced users is given below.
|
|
22
22
|
|
|
23
23
|
To install Myokit, using PyQt5 for Myokit's GUI components, run:
|
|
@@ -65,12 +65,23 @@ To see what else Myokit can do, type
|
|
|
65
65
|
|
|
66
66
|
## Contributing to Myokit
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
Contributing to Myokit is as easy as [asking questions](https://github.com/myokit/myokit/discussions) or posting [issues and feature requests](https://github.com/myokit/myokit/issues), and we have [pledged](./CODE_OF_CONDUCT.md) to make this an inclusive experience.
|
|
69
|
+
|
|
70
|
+
We are always looking for people to contribute code too!
|
|
71
|
+
Guidelines to help you do this are provided in [CONTRIBUTING.md](./CONTRIBUTING.md), but before diving in please [open an issue](https://github.com/myokit/myokit/issues) so that we can first discuss what needs to be done.
|
|
72
|
+
|
|
73
|
+
A high-level plan for Myokit's future is provided in the [roadmap](./ROADMAP.md).
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
### Meet the team!
|
|
77
|
+
|
|
78
|
+
Myokit's development is driven by a [team](https://github.com/orgs/myokit/people) at the Universities of Nottingham, Oxford, and Macao, led by Michael Clerx (Nottingham).
|
|
79
|
+
It is guided by an external advisory board composed of Jordi Heijman (Maastricht University), Trine Krogh-Madsen (Weill Cornell Medicine), and David Gavaghan (Oxford).
|
|
70
80
|
|
|
71
81
|
|
|
72
82
|
## Citing Myokit
|
|
73
83
|
|
|
74
84
|
If you use Myokit in your research, please cite it using the information in our [CITATION file](https://github.com/myokit/myokit/blob/main/CITATION).
|
|
75
85
|
|
|
76
|
-
|
|
86
|
+
We like to [keep track of who's using Myokit](https://myokit.org/publications/) for research (based on publications) and teaching (based on peronsal correspondence).
|
|
87
|
+
If you've used Myokit in teaching, we're always happy to hear about it so please get in touch via the [discussion board](https://github.com/myokit/myokit/discussions)!
|
|
@@ -79,7 +79,7 @@ Copyright (c) 2017-2020 University of Oxford. All rights reserved.
|
|
|
79
79
|
(University of Oxford means the Chancellor, Masters and Scholars of the
|
|
80
80
|
University of Oxford, having an administrative office at Wellington Square,
|
|
81
81
|
Oxford OX1 2JD, UK).
|
|
82
|
-
Copyright (c) 2020-
|
|
82
|
+
Copyright (c) 2020-2024 University of Nottingham. All rights reserved.
|
|
83
83
|
|
|
84
84
|
Redistribution and use in source and binary forms, with or without
|
|
85
85
|
modification, are permitted provided that the following conditions are met:
|
|
@@ -118,7 +118,7 @@ LICENSE_HTML = """
|
|
|
118
118
|
<br />(University of Oxford means the Chancellor, Masters and Scholars of
|
|
119
119
|
the University of Oxford, having an administrative office at Wellington
|
|
120
120
|
Square, Oxford OX1 2JD, UK).
|
|
121
|
-
<br />Copyright (c) 2020-
|
|
121
|
+
<br />Copyright (c) 2020-2024 University of Nottingham. All rights
|
|
122
122
|
reserved.</br></p>
|
|
123
123
|
<p>
|
|
124
124
|
Redistribution and use in source and binary forms, with or without
|
|
@@ -220,8 +220,10 @@ DEBUG_WG = False
|
|
|
220
220
|
DEBUG_SC = False
|
|
221
221
|
# Show C debug Messages when running compiled code:
|
|
222
222
|
DEBUG_SM = False
|
|
223
|
-
# Show C
|
|
223
|
+
# Show C profiling information when running compiled code:
|
|
224
224
|
DEBUG_SP = False
|
|
225
|
+
# Show C detailed simulator stats when running simulations
|
|
226
|
+
DEBUG_SS = False
|
|
225
227
|
|
|
226
228
|
#
|
|
227
229
|
# Compatibility settings: Some users report problems with output capturing.
|
|
@@ -924,10 +924,8 @@ def add_reset_parser(subparsers):
|
|
|
924
924
|
# Run
|
|
925
925
|
#
|
|
926
926
|
|
|
927
|
-
def run(source, debug_sg, debug_wg, debug_sc, debug_sm, debug_sp):
|
|
928
|
-
"""
|
|
929
|
-
Runs an mmt file script.
|
|
930
|
-
"""
|
|
927
|
+
def run(source, debug_sg, debug_wg, debug_sc, debug_sm, debug_sp, debug_ss):
|
|
928
|
+
""" Runs an mmt file script. """
|
|
931
929
|
import sys
|
|
932
930
|
import myokit
|
|
933
931
|
|
|
@@ -942,6 +940,8 @@ def run(source, debug_sg, debug_wg, debug_sc, debug_sm, debug_sp):
|
|
|
942
940
|
myokit.DEBUG_SM = myokit.DEBUG_SM or debug_sm
|
|
943
941
|
# Show profiling information when running compiled code
|
|
944
942
|
myokit.DEBUG_SP = myokit.DEBUG_SP or debug_sp
|
|
943
|
+
# Show CVODES stats
|
|
944
|
+
myokit.DEBUG_SS = myokit.DEBUG_SS or debug_ss
|
|
945
945
|
|
|
946
946
|
# Read mmt file
|
|
947
947
|
try:
|
|
@@ -1011,31 +1011,31 @@ def add_run_parser(subparsers):
|
|
|
1011
1011
|
'--debug-sg',
|
|
1012
1012
|
action='store_true',
|
|
1013
1013
|
help='Show the generated code instead of executing it.',
|
|
1014
|
-
#metavar='debug_sg',
|
|
1015
1014
|
)
|
|
1016
1015
|
parser.add_argument(
|
|
1017
1016
|
'--debug-wg',
|
|
1018
1017
|
action='store_true',
|
|
1019
1018
|
help='Write the generated code to file(s) instead of executing it.',
|
|
1020
|
-
#metavar='debug_wg',
|
|
1021
1019
|
)
|
|
1022
1020
|
parser.add_argument(
|
|
1023
1021
|
'--debug-sc',
|
|
1024
1022
|
action='store_true',
|
|
1025
1023
|
help='Show compiler output.',
|
|
1026
|
-
#metavar='debug_sc',
|
|
1027
1024
|
)
|
|
1028
1025
|
parser.add_argument(
|
|
1029
1026
|
'--debug-sm',
|
|
1030
1027
|
action='store_true',
|
|
1031
1028
|
help='Show debug messages when executing compiled code.',
|
|
1032
|
-
#metavar='debug_sm',
|
|
1033
1029
|
)
|
|
1034
1030
|
parser.add_argument(
|
|
1035
1031
|
'--debug-sp',
|
|
1036
1032
|
action='store_true',
|
|
1037
1033
|
help='Show profiling information when executing compiled code.',
|
|
1038
|
-
|
|
1034
|
+
)
|
|
1035
|
+
parser.add_argument(
|
|
1036
|
+
'--debug-ss',
|
|
1037
|
+
action='store_true',
|
|
1038
|
+
help='Show CVODES stats when running simulations.',
|
|
1039
1039
|
)
|
|
1040
1040
|
parser.set_defaults(func=run)
|
|
1041
1041
|
|
|
@@ -1239,11 +1239,6 @@ def add_test_parser(subparsers):
|
|
|
1239
1239
|
help='Test documentation cover, building, and doc tests.')
|
|
1240
1240
|
doc_parser.set_defaults(testfunc=test_documentation)
|
|
1241
1241
|
|
|
1242
|
-
# Example notebooks
|
|
1243
|
-
example_parser = subparsers.add_parser(
|
|
1244
|
-
'examples', help='Test example notebooks.')
|
|
1245
|
-
example_parser.set_defaults(testfunc=test_examples)
|
|
1246
|
-
|
|
1247
1242
|
# Style tests
|
|
1248
1243
|
style_parser = subparsers.add_parser('style', help='Run code style tests.')
|
|
1249
1244
|
style_parser.set_defaults(testfunc=test_style)
|
|
@@ -1643,151 +1638,6 @@ def test_doc_coverage_index(modules, classes, functions):
|
|
|
1643
1638
|
return n == 0
|
|
1644
1639
|
|
|
1645
1640
|
|
|
1646
|
-
def test_examples(args):
|
|
1647
|
-
"""
|
|
1648
|
-
Tests the example notebooks.
|
|
1649
|
-
"""
|
|
1650
|
-
books = test_examples_list('examples')
|
|
1651
|
-
print(books)
|
|
1652
|
-
|
|
1653
|
-
print('Found ' + str(len(books)) + ' notebook(s).')
|
|
1654
|
-
test_examples_index('examples', books)
|
|
1655
|
-
test_examples_all('examples', books)
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
def test_examples_index(root, books):
|
|
1659
|
-
""" Check that every notebook is included in the index. """
|
|
1660
|
-
import os
|
|
1661
|
-
import sys
|
|
1662
|
-
|
|
1663
|
-
print('Checking index...')
|
|
1664
|
-
|
|
1665
|
-
# Index file is in ./examples/README.md
|
|
1666
|
-
index_file = os.path.join(root, 'README.md')
|
|
1667
|
-
with open(index_file, 'r') as f:
|
|
1668
|
-
index_contents = f.read()
|
|
1669
|
-
|
|
1670
|
-
# Find which are not indexed
|
|
1671
|
-
not_indexed = [book for book in books if book not in index_contents]
|
|
1672
|
-
|
|
1673
|
-
# Report any failures
|
|
1674
|
-
if len(not_indexed) > 0:
|
|
1675
|
-
print('FAIL: Unindexed notebooks')
|
|
1676
|
-
for book in sorted(not_indexed):
|
|
1677
|
-
print(' ' + str(book))
|
|
1678
|
-
sys.exit(1)
|
|
1679
|
-
else:
|
|
1680
|
-
print('ok: All (' + str(len(books)) + ') notebooks are indexed.')
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
def test_examples_list(root, recursive=True):
|
|
1684
|
-
""" Returns a list of all notebooks in a directory. """
|
|
1685
|
-
import os
|
|
1686
|
-
|
|
1687
|
-
def scan(root, recursive, notebooks):
|
|
1688
|
-
for filename in os.listdir(root):
|
|
1689
|
-
path = os.path.join(root, filename)
|
|
1690
|
-
|
|
1691
|
-
# Add notebook
|
|
1692
|
-
if os.path.splitext(path)[1] == '.ipynb':
|
|
1693
|
-
notebooks.append(path)
|
|
1694
|
-
|
|
1695
|
-
# Recurse into subdirectories
|
|
1696
|
-
elif recursive and os.path.isdir(path):
|
|
1697
|
-
# Ignore hidden directories
|
|
1698
|
-
if filename[:1] == '.':
|
|
1699
|
-
continue
|
|
1700
|
-
scan(path, recursive, notebooks)
|
|
1701
|
-
return notebooks
|
|
1702
|
-
|
|
1703
|
-
notebooks = []
|
|
1704
|
-
scan(root, recursive, notebooks)
|
|
1705
|
-
notebooks = [os.path.relpath(book, root) for book in notebooks]
|
|
1706
|
-
|
|
1707
|
-
return notebooks
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
def test_examples_single(root, path):
|
|
1711
|
-
""" Tests a notebook in a subprocess, exists if it doesn't finish. """
|
|
1712
|
-
import myokit
|
|
1713
|
-
import nbconvert
|
|
1714
|
-
import os
|
|
1715
|
-
import subprocess
|
|
1716
|
-
import sys
|
|
1717
|
-
|
|
1718
|
-
b = myokit.tools.Benchmarker()
|
|
1719
|
-
print('Running ' + path + ' ... ', end='')
|
|
1720
|
-
sys.stdout.flush()
|
|
1721
|
-
|
|
1722
|
-
# Load notebook, convert to python
|
|
1723
|
-
e = nbconvert.exporters.PythonExporter()
|
|
1724
|
-
code, _ = e.from_filename(os.path.join(root, path))
|
|
1725
|
-
|
|
1726
|
-
# Remove coding statement, if present
|
|
1727
|
-
code = '\n'.join([x for x in code.splitlines() if x[:9] != '# coding'])
|
|
1728
|
-
|
|
1729
|
-
# Tell matplotlib not to produce any figures
|
|
1730
|
-
env = os.environ.copy()
|
|
1731
|
-
env['MPLBACKEND'] = 'Template'
|
|
1732
|
-
|
|
1733
|
-
# Run in subprocess
|
|
1734
|
-
cmd = [sys.executable, '-c', code]
|
|
1735
|
-
curdir = os.getcwd()
|
|
1736
|
-
try:
|
|
1737
|
-
os.chdir(root)
|
|
1738
|
-
p = subprocess.Popen(
|
|
1739
|
-
cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env
|
|
1740
|
-
)
|
|
1741
|
-
stdout, stderr = p.communicate(timeout=3600)
|
|
1742
|
-
if p.returncode != 0:
|
|
1743
|
-
# Show failing code, output and errors before returning
|
|
1744
|
-
print('ERROR')
|
|
1745
|
-
print('-- script ' + '-' * (79 - 10))
|
|
1746
|
-
for i, line in enumerate(code.splitlines()):
|
|
1747
|
-
j = str(1 + i)
|
|
1748
|
-
print(j + ' ' * (5 - len(j)) + line)
|
|
1749
|
-
print('-- stdout ' + '-' * (79 - 10))
|
|
1750
|
-
print(stdout)
|
|
1751
|
-
print('-- stderr ' + '-' * (79 - 10))
|
|
1752
|
-
print(stderr)
|
|
1753
|
-
print('-' * 79)
|
|
1754
|
-
return False
|
|
1755
|
-
except KeyboardInterrupt:
|
|
1756
|
-
p.terminate()
|
|
1757
|
-
print('ABORTED')
|
|
1758
|
-
sys.exit(1)
|
|
1759
|
-
finally:
|
|
1760
|
-
os.chdir(curdir)
|
|
1761
|
-
|
|
1762
|
-
# Successfully run
|
|
1763
|
-
print('ok (' + b.format(b.time()) + ')')
|
|
1764
|
-
return True
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
def test_examples_all(root, books):
|
|
1768
|
-
""" Runs all notebooks, and exits if one fails. """
|
|
1769
|
-
import sys
|
|
1770
|
-
|
|
1771
|
-
# Ignore books with deliberate errors, but check they still exist
|
|
1772
|
-
ignore_list = [
|
|
1773
|
-
]
|
|
1774
|
-
books = set(books) - set(ignore_list)
|
|
1775
|
-
|
|
1776
|
-
# Scan and run
|
|
1777
|
-
print('Testing notebooks')
|
|
1778
|
-
failed = []
|
|
1779
|
-
for book in books:
|
|
1780
|
-
if not test_examples_single(root, book):
|
|
1781
|
-
failed.append(book)
|
|
1782
|
-
if failed:
|
|
1783
|
-
print('FAIL: Errors encountered in notebooks')
|
|
1784
|
-
for book in failed:
|
|
1785
|
-
print(' ' + str(book))
|
|
1786
|
-
sys.exit(1)
|
|
1787
|
-
else:
|
|
1788
|
-
print('ok: Successfully ran all (' + str(len(books)) + ') notebooks.')
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
1641
|
def test_examples_web(args):
|
|
1792
1642
|
"""
|
|
1793
1643
|
Runs all web examples, exits if one of them fails.
|
|
@@ -139,7 +139,7 @@ def _create(path):
|
|
|
139
139
|
config.set('opencl', 'lib', ';'.join([
|
|
140
140
|
c64 + 'Intel\\OpenCL SDK\\6.3\\lib\\x64',
|
|
141
141
|
c64 + 'AMD APP SDK\\2.9\\bin\\x64',
|
|
142
|
-
c64 + 'NVIDIA GPU Computing Toolkit
|
|
142
|
+
c64 + 'NVIDIA GPU Computing Toolkit\\CUDA\\v11.8\\lib\\x64',
|
|
143
143
|
]))
|
|
144
144
|
else:
|
|
145
145
|
# Linux and mac
|
|
@@ -199,7 +199,7 @@ def _load():
|
|
|
199
199
|
lines = f.readlines()
|
|
200
200
|
|
|
201
201
|
import re
|
|
202
|
-
inline_comment = re.compile('[\w]+[\s]*=[\s]*.+?\s+(;)')
|
|
202
|
+
inline_comment = re.compile(r'[\w]+[\s]*=[\s]*.+?\s+(;)')
|
|
203
203
|
for i, line in enumerate(lines):
|
|
204
204
|
m = inline_comment.match(line)
|
|
205
205
|
if m is not None:
|
|
@@ -665,8 +665,8 @@ class Expression:
|
|
|
665
665
|
|
|
666
666
|
# Create function text
|
|
667
667
|
args = [w.ex(x) for x in self._references]
|
|
668
|
-
c = 'def ex_pyfunc_generated(' + ','.join(args)
|
|
669
|
-
|
|
668
|
+
c = ('def ex_pyfunc_generated(' + ','.join(sorted(args))
|
|
669
|
+
+ '):\n return ' + w.ex(self))
|
|
670
670
|
|
|
671
671
|
# Create function
|
|
672
672
|
local = {}
|
|
@@ -682,8 +682,8 @@ class Expression:
|
|
|
682
682
|
"""
|
|
683
683
|
Returns a string representing this expression in Python syntax.
|
|
684
684
|
|
|
685
|
-
By default, built-in functions such as
|
|
686
|
-
Python version
|
|
685
|
+
By default, built-in functions such as ``exp`` are converted to the
|
|
686
|
+
Python version ``math.exp``. To use the numpy versions, set
|
|
687
687
|
``numpy=True``.
|
|
688
688
|
"""
|
|
689
689
|
# Get expression writer
|
|
@@ -810,7 +810,6 @@ class Expression:
|
|
|
810
810
|
class Number(Expression):
|
|
811
811
|
"""
|
|
812
812
|
Represents a number with an optional unit for use in Myokit expressions.
|
|
813
|
-
All numbers used in Myokit expressions are floating point.
|
|
814
813
|
|
|
815
814
|
>>> import myokit
|
|
816
815
|
>>> x = myokit.Number(10)
|
|
@@ -821,11 +820,12 @@ class Number(Expression):
|
|
|
821
820
|
>>> print(x)
|
|
822
821
|
5 [V]
|
|
823
822
|
|
|
823
|
+
All numbers used in Myokit expressions are floating point.
|
|
824
|
+
|
|
824
825
|
Arguments:
|
|
825
826
|
|
|
826
827
|
``value``
|
|
827
828
|
A numerical value (something that can be converted to a ``float``).
|
|
828
|
-
Number objects are immutable so no clone constructor is provided.
|
|
829
829
|
``unit``
|
|
830
830
|
A unit to associate with this number. If no unit is specified the
|
|
831
831
|
number's unit will be left undefined.
|
|
@@ -10,6 +10,8 @@ import re
|
|
|
10
10
|
|
|
11
11
|
from collections import OrderedDict
|
|
12
12
|
|
|
13
|
+
import numpy
|
|
14
|
+
|
|
13
15
|
import myokit
|
|
14
16
|
|
|
15
17
|
|
|
@@ -1406,11 +1408,13 @@ class Model(ObjectWithMetaData, VarProvider):
|
|
|
1406
1408
|
value = float('nan')
|
|
1407
1409
|
values[eq.lhs] = value
|
|
1408
1410
|
else:
|
|
1409
|
-
|
|
1410
|
-
for
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1411
|
+
with numpy.errstate(all='raise'):
|
|
1412
|
+
for group in order.values():
|
|
1413
|
+
for eq in group:
|
|
1414
|
+
if eq.lhs in values:
|
|
1415
|
+
continue
|
|
1416
|
+
values[eq.lhs] = eq.rhs.eval(
|
|
1417
|
+
values, precision=precision)
|
|
1414
1418
|
|
|
1415
1419
|
# Return calculated state
|
|
1416
1420
|
return [values[state.lhs()] for state in self._state_vars]
|
|
@@ -1571,7 +1575,7 @@ class Model(ObjectWithMetaData, VarProvider):
|
|
|
1571
1575
|
``derivatives=None``
|
|
1572
1576
|
An optional list or other sequence of evaluated derivatives. If not
|
|
1573
1577
|
given, the values will be calculed from ``state`` using
|
|
1574
|
-
:meth:`
|
|
1578
|
+
:meth:`evaluate_derivatives()`.
|
|
1575
1579
|
``precision=myokit.DOUBLE_PRECISION``
|
|
1576
1580
|
An optional precision argument to use when evaluating the state
|
|
1577
1581
|
derivatives, and to pass into :meth:`myokit.float.str` when
|
|
@@ -2196,7 +2200,7 @@ class Model(ObjectWithMetaData, VarProvider):
|
|
|
2196
2200
|
"""
|
|
2197
2201
|
# Deprecated since 2023-02-22
|
|
2198
2202
|
import warnings
|
|
2199
|
-
warnings.warn('The method `load_state` is deprecated.')
|
|
2203
|
+
warnings.warn('The method `Model.load_state` is deprecated.')
|
|
2200
2204
|
self.set_initial_values(myokit.load_state(filename, self))
|
|
2201
2205
|
|
|
2202
2206
|
def map_component_dependencies(
|
|
@@ -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,
|
|
17
|
+
__version_tuple__ = 1, 36, 1
|
|
18
18
|
|
|
19
19
|
# String version of the version number
|
|
20
20
|
__version__ = '.'.join([str(x) for x in __version_tuple__])
|
|
@@ -858,6 +858,10 @@ class TimeSeriesProtocol:
|
|
|
858
858
|
Protocols can be compared with ``==``, which will check if the sequence of
|
|
859
859
|
time value pairs is the same, and the interpolation method is the same.
|
|
860
860
|
Protocols can be serialized with ``pickle``.
|
|
861
|
+
|
|
862
|
+
**Note**: Time series protocols cannot be used to represent signals
|
|
863
|
+
containing discontinuities, as these will be smoothed out by the
|
|
864
|
+
interpolation.
|
|
861
865
|
"""
|
|
862
866
|
|
|
863
867
|
def __init__(self, times, values, method=None):
|