This page lists the main changes made to Myokit in each release.
- Added
- Changed
- #1102 Replaced the HEKA method
c_fast_tau
with a methodc_fast_detailed
.
- #1102 Replaced the HEKA method
- Deprecated
- Removed
- #1111 No longer testing on Python 3.7.
- Fixed
- Added
- #1073 Added export to DiffSL.
- #1088 The DataLogViewer now displays meta data for myokit DataLogs.
- #1088 The HEKA file format now supports more meta data, including filters.
- #1092 The method
DataLog.load_csv
can now read CSV files with duplicate column names. - #1095 Myokit is now tested on Python 3.12 and 3.13.
- Fixed
- #1083 Fixed bug when passing initial state
Expression
objects tomyokit.step
. - #1088 The HEKA file format meta data now shows the correct value for fast capacitance correction.
- #1088 The ABF reader no longer crashes if degrees Celsius are encountered.
- #1093
DataLog.load_csv
will now ignore an initial byte order marker.
- #1083 Fixed bug when passing initial state
- Added
- #1075 Add a
myokit.TypeError
exception, which inherits frommyokit.IntegrityError
but is used specifically if one type of expression was expected but another was found.
- #1075 Add a
- Changed
- #1067 Improved the meta data loaded from HEKA files when creating a
myokit.DataLog
. - #1074 Expressions will now raise a
myokit.IntegrityError
in the constructor if their operands are not expression objects: previously, this check was only performed byExpression.validate()
. - #1075 Expressions will now raise a
myokit.TypeError
in the constructor if their operands are unexpected expression types, e.g. if numbers and booleans are mixed.
- #1067 Improved the meta data loaded from HEKA files when creating a
- Removed
- #1075 Removed the
PrefixCondition
base class previously used in the expression system, as onlyNot
inherited from it.
- #1075 Removed the
- Fixed
- Added
- #1063 Added support for Sundials 7.0.0.
- Removed
- #1061 Currently unable to test OpenCL features on Mac OS.
- Fixed
- #1060 Fixed an issue with overflows in tau for HH analytical simulations leading to unnecessary NaNs in state and current simulation outputs.
This release fixes a potential issue in simulation output, please see #1055 for details.
- Added
- Changed
- Deprecated
- Fixed
- #1045 Fixed an issue where the cache used in MarkovModel was not invalidated if
set_constant()
changed simulation parameters. - #1050 Fixed warnings about unknown escape sequences.
- #1051 Numerical simulation errors in
Simulation
now re-evaluate the state using the last inputs, as well as the last state. - #1051 The
Simulation
class now provides error states and inputs for both cvode-detected crashes and too many zero-length step crashes. - #1055
ExpressionWriter
classes now always output aPrefixPlus
, including brackets where necessary. - #1055 The
AnsiCExpressionWriter
and related expression writers now wrap all conditions in brackets. - #1055 The
PythonExpressionWriter
,NumPyExpressionWriter
,StanExpressionWriter
, andLatexExpressionWriter
now output brackets around doublePower
operations, so that the Myokit expressiona**b**c
is interpreted as(a**b)**c
. - #1055 Fixed bracket adding for
PrefixPlus
,PrefixMinus
, andNot
inLatexExpressionWriter
. - #1055 Fixed bracket adding for
PrefixPlus
andPrefixMinus
in Presentation MathML.
- #1045 Fixed an issue where the cache used in MarkovModel was not invalidated if
- Added
- #1010 Added more information methods to
formats.heka.Segment
- #1012 The method
Model.add_variable
now has keyword argumentsunit
,rhs
,label
,binding
, andinitial_value
to allow one-line variable creation and initialisation. - #1018 The PatchMaster file reading can now extract information for multiple amplifiers (if used), and more information methods were added.
- #1010 Added more information methods to
- Fixed
- Added
- #1006 The
DataLog
class can now store global meta data in.meta
and per-column meta data in.cmeta
. Both must be string-string key-value pairs. - #1006 Simulations now automatically add some meta data (units) to the data log.
- #1006 The
DataLog
class can now save meta data to disk using the CSV-on-the-web format. - #1006 Added a class
ColumnMetaData
to represent per-column meta data of a table or DataLog. - #1006 ABF, WCP, and PatchMaster file classes now add meta data when creating a
DataLog
.
- #1006 The
- Changed
- #1006 Made core classes
ObjectWithMetaData
,MetaDataContainer
,VarOwner
, andVarProvider
part of the public API. Similarly the methodcheck_name
. - #1008 The
PatchMasterFile
reader no longer performs "zero offset subtraction" (in which a recorded current trace is shifted until a user-specified segment has zero current) by default.
- #1006 Made core classes
- Fixed
- #1006
DataLog.clone()
no longer replacesarray.array
objects with lists.
- #1006
- Fixed
- #1005 DataBlock viewer now shows user-set values when exporting a colormap.
- Added
- #955 Added provisional HEKA PatchMaster file reading.
- #985, #998 The
AbfFile
andWcpFile
now implement a sharedSweepSource
interface. - #985 Added a method
AtfFile.path
that returns the full path. - #985 Added a method
WcpFile.info
that returns a string version of the file's meta data, and a methodWcpFile.sample_count
that returns the number of samples per channel. - #1003 The DataBlock viewer now has fields to enter a lower and upper range for the colormap conversion.
- #1003 Added new color maps for
myokit.DataBlock
viewing.
- Changed
- #985, #998 The interface to the
AbfFile
class has changed significantly, and in a backwards incompatible ways. Please see the documentation for further details. - #991 Myokit no longer uses the
logging
module but makes calls towarnings.warn
instead. - #992 If a
Simulation
is created withprotocol={}
, thenpace
will not be set as a binding label. To stay backwards compatible it will be set ifprotocol=None
. - #994 Simulations can now start at arbitrary times, including negative ones. Note that protocol events have a default offset of 0, so no events are usually expected at negative times.
- #985, #998 The interface to the
- Deprecated
- #985 The method
WcpFile.myokit_log
is deprecated in favor ofWcpFile.log
. - #985 The methods
WcpFile.channels
andWcpFile.records
are deprecated in favor ofWcpFile.channel_count
andWcpFile.record_count
. - #985 The method
WcpFile.plot
is deprecated in favor ofWcpFile.matplotlib_figure
. - #985 The method
WcpFile.records
is deprecated in favor ofWcpFile.record_count
orWcpFile.sweep_count
. - #985 The method
AtfFile.myokit_log
is deprecated in favor ofAtfFile.log
. - #998 The method
WcpFile.info
is deprecated in favor ofWcpFile.meta_str
. - #998 The method
AtfFile.info
is deprecated in favor ofAtfFile.meta_str
.
- #985 The method
- Fixed
- #985
AbfFile.filename
now returns the filename, not the full path. - #985
AtfFile.filename
now returns the filename, not the full path. - #992
Simulation
now sets any variable bound to a pacing label to 0 if no protocol for that label is set. - #998 Fixed a bug where channels in ABF v1 files were sometimes scaled using the wrong meta data.
- #1003 Fixed a bug in the DataBlockViewer introduced when adding Qt6 support.
- #985
- Added
- #979 Added support for PyQt6 and PySide6.
- Changed
- #980 Python 2 is no longer supported. The minimum supported Python version is now 3.7.
- Removed
- #979 Removed support for PyQt4 and PySide, which were deprecated since 2019.
- Added
- #898 @martinjrobins Initial conditions for state variables can now be (constant-valued) expressions. Previously, only literals were allowed.
- #918 Added
Model.initial_values
, which returns the model's initial values as a list of expressions, floats, or equations. - #918 Added
Model.set_initial_values
, which sets the model's initial values using a list of expressions or anything accepted bymap_to_state
. - #918 Added
Variable.initial_value
, which returns a state variable's initial value as an expression or float. - #918 Added
Variable.set_initial_value
, which sets a state variable's initial value using an expression, string expression, or float. - #918 Added
IllegalReferenceInInitialValueError
for illegal references made in initial value expressions. - #947 @martinjrobins The
Simulation
class can now handle multiple protocols during a single simulation. - #947 Fixed-form protocols are now implemented in a
TimeSeriesProtocol
.
- Changed
- #898
Variable.promote
can now take an expression, a number, or a string (which will be parsed as an expression) for the argumentinitial_value
. - #909 Myokit is now tested on Python 3.11.
- #909 Myokit is no longer tested on Python 3.6.
- #918 The only argument to
Variable.promote
has been renamed fromstate_value
toinitial_value
. - #918
Model.import_component
now preserves the ordering of the imported states. - #953 The DataLogViewer now overlaps traces with numbering (e.g. 0.membrane.V and 1.membrane.V), and toggles between files and variables with Page up and down Or Ctrl+Page up and down.
- #962 Scipy is no longer a required dependency.
- #962 The DataLogViewer only supports Matlab file loading if SciPy is installed.
- #975 Global parameters in imported SBML documents are now placed in a component named
global
instead ofmyokit
. - #978 The IDE now validates either the model or the protocol, depending on the current tab (previously both were validated).
- #898
- Deprecated
- #918
Model.state
is deprecated in favor ofModel.initial_values
. - #918
Model.set_state
is deprecated in favor ofModel.set_initial_values
. - #918
Model.inits
is deprecated. - #918
Variable.state_value
is deprecated in favor ofVariable.initial_value
. - #918
Variable.set_state_value
is deprecated in favor ofVariable.set_initial_value
. - #918
Model.save_state
andModel.load_state
are deprecated. - #918 The
Variable.promote
keyword argumentstate_value
is deprecated in favor ofinitial_value
. - #947
Simulation.set_fixed_form_protocol
is deprecated in favor of usingSimulation.set_protocol
with aTimeSeriesProtocol
- #962 The method
DataLog.regularize
is deprecated. - #974
Variable.indice
is deprecated in favor ofVariable.index
. - #976
SimulationOpenCL.neighbours
is deprecated in favor ofSimulationOpenCL.neighbors
.
- #918
- Removed
- #898
NonLiteralValueError
is now no longer raised by Myokit and so has been removed. - #921 Removed deprecated
LegacySimulation
class. - #921 Removed deprecated
PSimulation
class. - #921 Removed deprecated
ICSimulation
class. - #957 Removed the method
Model.prepare_bindings
. - #961 Removed the module
myokit.lib.common
, which had been deprecated since April 2018.
- #898
- Fixed
- #918 Fixed error when
var()
was called on aPartialDerivative
with aDerivative
as first argument. - #933 Made
myokit.step
base its error classification (large/small/none) on numerics, not representation. - #947 Fixed minor memory leak (reference counting issue) when using fixed form protocols.
- #967 Myokit no longer calls
logging.basicConfig()
when used as a library. - #977
myokit.save()
now raises aValueError
ifmodel
,protocol
, andscript
are all None. - #978 Clarified message shown in IDE after re-validation of valid model or protocol.
- #918 Fixed error when
- Fixed
- Added
- Changed
- #893
Variable.convert_unit
now returnsTrue
if a conversion was carried out orFalse
if not.
- #893
- Fixed
- #888 #892 Improved documentation for
Unit.conversion_factor
with help from @martinjrobins. - #895 Fixed the value returned by
Name.diff()
andExpression.diff()
for the situation where the associated RHS depends on a bound variable. - #895 Fixed performance issue in
Expression.depends_on
. - #896 Small improvements to Model, Component, and Variable documentation.
- #888 #892 Improved documentation for
- Fixed
- #883 Fixed memory leak in
myokit.Simulation
when using thelog_times
argument.
- #883 Fixed memory leak in
- Added
- #872 The
myokit.Simulation
class can now be initialised using a precompiled backend (see the documentation for thepath
argument).
- #872 The
- Changed
- #872
Model.solvable_order
now returns consistently ordered equations, regardless of the order components and variables were created/parsed in. - #872
myokit.tools.rmtree
now takes an optional argumentsilent
that can be set toTrue
to ignore any exceptions. - #876
Model.import_component
can now take a list of possibly interdependent components.
- #872
- Fixed
- Added
- Changed
- #865 Added more platform information to
myokit system
. - #866 Slightly tweaked the plotting in
myokit.lib.plots.cumulative_current
, and added two argumentsline_args
andfill_args
that can be used to customize the plotting style. - #869 The class
myokit.FiberTissueSimulation
now raisesValueError
for various method-argument errors, instead of the more genericException
. - #869 The class
myokit.FiberTissueSimulation
now raisesIndexError
for various index-related errors, instead of the less appropriateKeyError
.
- #865 Added more platform information to
- Deprecated
- #869 The class
myokit.FiberTissueSimulation
is no longer considered deprecated.
- #869 The class
- Fixed
- Changed
- #860 Made
myokit.tests
into a module. Made tests runnable viasetup.py
. Added more meta data tosetup.py
.
- #860 Made
- Changed
- #843 Myokit is no longer tested on Python 3.5.
- #844 Tweaked the CellML export's
initial_value
attribute to stripe+00
if present. - #845 Improved syntax highlighting and automatic detection of "dark mode" themes.
- #849 Trying to pickle a
myokit.Expression
now raises a more helpful error message. - #849 The method
myokit.parse_expression()
now accepts aModel
as a context. - #849 Model comparison with
==
now only returnsTrue
if both operands are the same object. Comparison based on code can be performed withModel.is_similar()
. - #852 Myokit is no longer tested on Python 3.6 for Windows (please use 3.7 and up).
- Fixed
- #841 The MathMLExpressionWriter now uses
type="e-notation"
where necessary, instead of writing e.g.1e-6
. - #849 If
Model.get()
andComponent.get()
now raise aValueError
if a component or variable from a different model is passed in. - #849
Equation
objects are now immutable, and theirhash
is consistent during the object's lifetime. - #849 The
hash
of aQuantity
object is now consistent during its lifetime, regardless of unit representations. - #857 Fixed a memory leak in Simulation.run().
- #858
OpenCL.info
no longer raisesCL_PLATFORM_NOT_FOUND_KHR
if drivers but no devices are found.
- #841 The MathMLExpressionWriter now uses
- Added
- #799 Added pL, MOhm, and GOhm as standard units.
- #811 DatalogViewer now accepts
.zip
for binary data logs. - #817 Added support for Python 3.10.
- #821 Sundials-based simulations now auto-detect the version number. The version indicated in myokit.ini is no longer used.
- #823 Sundials 6.0.0 is now supported.
- #826 Added a method
myokit.tools.Benchmarker.print
that prints elapsed time alongside a profiling message.
- Changed
- Examples will be located in a separate repository, at https://github.com/myokit/myokit-examples
- #815 Myokit will now warn when run on Python 2.7, as testing for 2.7 is being phased out.
- #816 The method
myokit.tools.Benchmarker.format
can now be called without any arguments. - #817 The internal templating engine now uses
ast
instead of the deprecated (and removed in 3.10)parser
module. - #825 The context manager
myokit.tools.capture
now takes an extra argumentenabled
which can be used to disabled output capturing. - #825, #826 The debugging arguments to
myokit run
have been split into five parts, seemyokit run --help
for details. - #834 The find/replace dialog in the IDE has been replaced with a toolbar.
- #836 Colours in the IDE have been adapted to be clearer in "dark mode".
- Removed
- #796 The Graph Data Extractor tool is now a separate project, hosted at https://github.com/myokit/gde.
- #804 The command line utility
system
no longer reports on thecma
module. - #821 Removed the method
myokit.Sundials.version_int
.
- Fixed
- Added
- #581 Myokit's expression system now includes a
PartialDerivative
and anInitialValue
class. Both are for use in sensitivity calculations and may not appear in models. - #581 Expressions now have a method
diff(lhs)
that returns the (partial) derivative of an expression with respect to the givenLhsExpression
. - #581 Expressions now have methods
is_derivative
,is_name
, andis_number
. - #581 Added a method
Number.value()
. - #581 The method
Expression.depends_on
now has an argumentdeep
that can be set toTrue
to perform a recursive dependency check. - #595 A class
myokit.CModel
was added that can generate multi-purpose C code for use in simulations. This is mainly for internal use. - #682 OpenCL code now recognises error code -1001.
- #683 Now testing OpenCL code in CI.
- #704 Added first example notebook to the github repository.
- #728 Added a context manager
myokit.tools.capture
that can redirect and capture output from Pythonstdout
andstderr
via a Python-only method or file-descriptor redirection and should be thread-safe. - #735 The new module
myokit.float
contains several functions related to floating point numbers that were previously in the mainmyokit
namespace or not part of the public API. - #735 The new module
myokit.tools
contains several stand-alone tools that are used by Myokit and were previously in the mainmyokit
namespace or not part of the public API. - #735 The method
pid_hash
, which is used by compiled code to generate (hopefully) unique ids is now part of the public API. - #744 Added a method
myokit.OpenCL.available
to check if OpenCL is supported and at least one OpenCL device is detected. - #754 Added a method
myokit.OpenCL.current_info(x)
that returns information about the currently selected platform and device; support of OpenCL extensions can then be checked withOpenCLPlatformInfo.has_extension
. - #754 Improved error message when an
OpenCLSimulation
with double precision is run on a device that does not support it. - #763 Added a method
OpenCLSimulation.set_conductance_field
to apply heterogeneous conductance on a rectangular grid. - #769 @Rebecca-Rumney Added a method
myokit.Model.import_component
to import a component from one model to another. - #769 @Rebecca-Rumney Added an exception type
VariableMappingError
to be raised when there is an error in a variable mapping. - #776 Added a method
OpenCLSimulation.monodomain_conductance
to replace the deprecated methodcalculate_conductance
. - #780 Alt-up and alt-down can now be used in the text editor to move selected lines up or down.
- #782 The IDE can now import CellML files on opening, e.g. by typing
myokit ide example.cellml
. - #786 Added a method
myokit.Variable.clamp()
to fix any variable to a constant value. - #786 Added a method
myokit.Variable.remove_child_variables()
to remove all child (nested) variables from a given variable. - #788 The IDE will now suggest filenames for model exports.
- #792 @DavAug SBML import now handles equations that explicitly use time.
- #581 Myokit's expression system now includes a
- Changed
- #581 Powers are now rendered without spaces in mmt code, e.g.
x^2
instead ofx ^ 2
. - #595 The
Simulation
class now uses CVODES instead of CVODE as backend, which may require changes to your installation. - #595 The
Simulation
can now calculate sensitivities of variables with respect to parameters and/or initial conditions (see docs for details). - #595 The
Simulation
class no longer hasapd_var
as a constructor argument. Instead, you can pass an argumentapd_variable
to itsrun()
method. - #595 The
Simulation
class no longer suppresses CVODES warnings but passes them on to thewarnings
module. - #595 Fix to
Simulation
for Sundials 4.1.0. - #687
Variable.set_rhs(None)
now removes an RHS, instead of setting it toNumber(0)
. - #687 Calling
SimulationOpenCL.set_conductance
will now override any conductances previously set withset_connections
. - #687
SimulationOpenCL.set_connections
no longer acceptsNone
as a valid argument. - #687 The
SimulationOpenCL
methodsset_conductance
,conductance
,set_connections
,neighbours
,set_paced_cells
,set_paced_cell_list
, andis_paced
, will now raise aRuntimeError
if diffusion was disabled at construction. - #687 The method
SimulationOpenCL.remove_field
now raises aKeyError
if no field is set for the given variable. - #689 In Python 2, an
ImportError
is now raised ifmyokit.ini
contains the sequence " ;" in any of its value (as this cannot be processed by Python 2'sConfigParser
). - #728 The
LegacySimulation
class no longer suppresses CVODE warnings but passes them on to thewarnings
module (backported from newSimulation
class). - #789 The method
myokit.DataLog.save_csv()
now stores the keys using natural sort order (time is still the first field, if present).
- #581 Powers are now rendered without spaces in mmt code, e.g.
- Deprecated
- #595 The classes
myokit.PSimulation
andmyokit.ICSimulation
have been deprecated in favor of the newSimulation
class. - #735 The class
myokit.Benchmarker
is deprecated in favor ofmyokit.tools.Benchmarker
. - #735 The method
myokit.format_float_dict
is deprecated and will be removed in future versions. - #735 The method
myokit.format_path
is deprecated in favor ofmyokit.tools.format_path
. - #735 The method
myokit.strfloat
is deprecated in favor ofmyokit.float.str
. - #758 The class
myokit.FiberTissueSimulation
is deprecated and will be removed in future versions. - #776 The method
OpenCLSimulation.calculate_conductance
is deprecated in favor of the new methodcalculate_conductance
, which takes slightly different parameters. - #787 The method
myokit.Model.eval_state_derivatives
is deprecated in favor ofmyokit.Model.evaluate_derivatives
.
- #595 The classes
- Removed
- #683 No longer testing on Python 2.7.6 on linux (still testing latest 2.7). No longer testing any Python 2.7 on Windows.
- #728 The classes
myokit.PyCapture
andmyokit.SubCapture
have been replaced by a single context managermyokit.tools.capture
. - #730 Removed the method
myokit.pack_snapshot
. - #737 The method
Model.merge_interdependent_components
was removed. This method was deprecated since 2018-05-30. - #737 The method
Model.show_line
was removed. This method was deprecated since 2018-05-30. - #737 The method
Protocol.guess_duration
was removed. This method was deprecated since 2016-02-06.
- Fixed
- #684 @DavAug Fixed OpenCL loading issue on MacOS (with special thanks to Martin Aguilar).
- #686 Fixed a (windows only) bug in
myokit.tools.format_path()
. - #687
Simulation1d
now logs pacing as a global variable, and can log diffusion currents. - #689 Path lists read from
myokit.ini
are now filtered for empty entries and closing semicolons. - #744 Fixed a bug in
OpenCLSimulation.find_nan()
, that occurred for very small simulations (e.g. 2 cells). - #744 Fixed a bug in
OpenCLSimulation
that made it impossible to useset_connections()
with double precision. - #744 Fixed a bug in
OpenCLSimulation
that made it impossible to useset_connections()
on Python 2. - #754 Improved error message when an
OpenCLSimulation
with double precision is run on a device that does not support it. - #766 Improved error message when an empty MathML
<cn>
element is encountered.
- Added
- #672 Added more detailed error output to several CVODE errors related to RHS-related numerical issues.
- #672 Now tested on Sundials 5 (locally).
- #672 Now testing on Python 3.9 (Linux).
- #672
Simulation.run
documentation is now more clear on what happens for very short simulation durations (or zero). - #674 Added a method
Model.has_parse_info
that checks if the model contains information from parsing (i.e. line numbers). - #674 Added a parameter
raw
toModel.show_line_of
that returns the line number as an integer - #674 Added a method to the IDE that lets you jump to the definition of a selected variable.
- #680 Now testing on Python 3.9 and Miniconda 3.8 (Windows).
- Removed
- #681 Removed the deprecated library
myokit.lib.fit
. For fitting see e.g. PINTS and this tutorial on fitting ion channel data with Myokit & PINTS.
- #681 Removed the deprecated library
- Fixed
- #672 Fixed bug in
Variable.convert_unit()
that caused unexpected (and quite arbitrary) results. - #672 Fixed bug where calling
Simulation.run()
with a very short runtime caused a zero state to be returned. - #676 Fixed a bug in CellML (1 and 2) export when inferring units for a state variable.
- #679 Fixed "DLL load failed while importing myokit" issue on Windows 10 with Python 3.8 (via miniconda).
- #672 Fixed bug in
- Added
- #623 The changes made with each release are now stored in CHANGELOG.md.
- #622
SimulationOpenCL
now includes a methodis_paced
andneighbours
that provide information about the simulated cells. - #622
SimulationOpenCL.find_nan
now has an option to return aDataLog
with the final logged variables before the error occurred. - #632 Added methods
DataBlock1d.to_log
andDataBlock2d.to_log
. - #633 DataBlockViewer now shows mouse coordinates in status bar for video and graph view.
- #652 Added methods to remove 1d and 2d traces from
DataBlock1d
andDataBlock2d
.
- Changed
- #610 If numerical errors occur when evaluating an expression, the IDE now shows these in the console instead of in a pop-up.
- #622
myokit.strfloat
now takes aprecision
argument. - #622
Model.format_state
andModel.format_state_derivatives
now take aprecision
argument. - #622 If errors occur, the
SimulationOpenCL
now displays improved (and hopefully more informative) output. - #623 Updated licensing info.
- #653
Model.pyfunc()
now validates the model before running (and fails if the model does not validate). - #661 When importing MathML, the inverse hyperbolic trig functions are now rendered using slightly simpler equations.
- #664 EasyML export now adds meta data, a group of CVODE-solved variables, a group of variables to trace, and a group of parameters (based on code contributed by Ed Vigmond).
- #664 EasyML export now converts voltage, current, and time variables to the preferred units.
- #664 EasyML export now has consistently ordered output when re-run.
- #664 EasyML expression writer now uses
expm1
where possible.
- Deprecated
- Fixed
- #650 Fix to
myokit.lib.plots.cumulative_current
for normalisation in areas with zero current. - #603 Improved handling of types (ints resulting from logical operators) in
OpenCLSimulation
. - #613
Model.map_component_io
now respects theomit_constants
argument for Rush-Larsen variables. - #622 If
Model.format_state_derivatives
needs to evaluate the derivatives, it will now use the givenstate
instead of the model state. - #628 The DataBlockViewer now shows a working colour bar for 1d simulations.
- #638 The DataBlockViewer now handles blocks with
t[0] > 0
correctly. - #655 Fixed bug where wrong initial state was shown by
myokit.step()
. - #663 Fixed deprecation warning in
save_state_bin()
.
- #650 Fix to
- Added
- #548 Models, protocols, and CVODE simulations can now be pickled, and tests have been added that check that simulations can be run in parallel (even on Windows).
- #548 Model and protocol now support comparison with
==
. - #553 The cumulative-current plot now has a maximum-number-of-currents option (all further currents will be bundled into one).
- #567 Added support for Simulation building on Python 3.8 on Windows.
- #574, #599, #547, #528 @DavAug A completely rewritten SBML API and parser that's capable of handling models that define species and reactions.
- Changed
- #536
Ohm
is now a quantifiable unit in themmt
syntax, i.e.1 [MOhm]
. This replaces the non-standardR
unit which has been removed. - #556 CellML imports now import models that contain unsupported units (but with warnings).
- #557 Imports and exports now raise warnings instead of using the Myokit textlogger for this.
- #559, #541 Unit tests are now included in the PyPI package.
- #560 Sympy is no longer a required dependency (but still an optional one).
- #565 Some slight changes to simulation building: Now uses
--inplace
instead of--old-and-unmanageable
and should delete any temporary files created in the process. - #566 Simulations now include a time and process number dependent hash in their generated-module names.
- #569 The CellML export now ensures there are no spaces in initial value or unit multiplier attributes.
- #576 Non-integer exponents are now allowed in the unit system, which compares units with a
close()
method that expects a certain numerical tolerance, instead of using exact comparison. - #576 CellML imports now import models with non-integer unit exponents.
- #597 The output of the
step()
method has been improved, and the method now only warns about relative differences bigger than 1 epsilon. - commit The method
show_evalution_of
now has consistently ordered output. - CellML imports treat new base units as dimensionless.
- The IDE now checks the protocol even if the model is invalid or unchanged.
- #536
- Removed
- Fixed
- Fixed
- #531 Fixed bug where GUI CellML export didn't export stimulus current.
- Added
- #525 Added support for CellML 2.0.
- Changed
- #516 Rewrote SBML import to use etree instead of DOM.
- Removed
- Fixed
- #515 Now setting OpenCL framework as linker flag on MacOS.
- Added
- Fixed
- #496 Some fixes and tweaks to CellML 1.0/1.1 API.
- Small fixes to CellML validation.
- Fixed typo in units
becquerel
. - Added
notanumber
andinfinity
to MathML parser.
- Removed
myo
script. - Fixed EasyML issue for inf/tau variables used by more than one state.
- Added more import/export options to the IDE menu.
- Updated
component.code()
to always outout aliases in the same order. - Added method to find Markov models in a Myokit model.
- Added method to convert Markov models to compact form.
- Added method to convert Markov models to full ODE form.
- LinearModel now converts to full ODE form.
- Added method
lib.guess.membrane_capacitance
. - Added method
lib.guess.membrane_currents
. - Added (experimental) EasyML export.
- Small bugfixes and documentation updates.
- Improved exception handling when evaluating a unit containing an invalid power.
- Made default script and protocol robust against incompatible units.
- Made CellML API
from_myokit_model
more robust against invalid units.
- Rewrote CellML import and export, with improved error handling and validation.
- CellML import now converts hardcoded stimulus equation to Myokit protocol.
- CellML export now converts Myokit protocol to hardcoded stimulus equation.
- CellML import now generates more approprate default scripts.
- CellML import now supports unit conversion between components.
- CellML export now infers units from RHS if no unit set.
- CellML import and export can now both handle Web Lab
oxmeta
annotations. - Various changes and improvements to MathML parsing.
- Added missing
__iter__
to Model and VarOwner. - The myokit.Name expression can now wrap objects other than myokit.Variable, allowing Myokit's expression system to be re-used for non-myokit expressions.
- Removed myokit.UnsupportedFunction.
- Added guessing module, with method to guess which variables (if any) represent the membrane potential and stimulus current.
- Fix for sundials development versions.
- Fixes for PySide2 support.
- Myokit is now released under a BSD 3-clause license
- Bugfix to
myokit step
command line tool.
- Added PySide2 support.
- Deprecated PyQt4 and PySide.
- Added a method
Model.remove_derivative_references()
. - Bugfix to
Model.repr()
for models with no name. - Added
Model.timex()
,labelx()
andbindingx()
, which work liketime()
,label()
andbinding()
but raise an exception if no appropriate variable is found. - Deprecated
lib.multi.time()
,label()
, andbinding()
.
- Added method
Variable.convert_unit()
that changes a variable's units and updates the model equations accordingly. Unit.conversion_factor
now returns aQuantity
instead of a float, and accepts helperQuantity
objects for incompatible conversions.- Added
Unit.clarify()
method that gives clear representation. - Added
Unit.multiplier_log_10()
method. - Added
rtruediv
andpow
operators toQuantity
class. - Small bugfixes to
myokit.lib.hh
. - Stopped requiring HH alphas/betas and taus/infs to depend on V (allows drug-binding work).
- Bugfix: Time variable in CellML export no longer has equation or initial value.
- CellML export: components now ordered alphabetically.
- Variables with an
oxmeta: time
meta annotation are now exported to CellML with an oxmeta RDF annotation. - CellML import now allows
deca
prefix. - Added CellML identifier checks to cellml import.
- Renamed
DataLog.find()
tofind_after()
. - Added DataLog.interpolate_at(name, time) method.
- Improved colormap used in
plots.cumulative_current()
. - Bugfix to 'myokit step' for models without a name meta property.
- Updated sign error handling in
myokit.step()
. - Added IDE shortcuts for unit checking.
- IDE now jumps to unit errors, if found.
- Improved exception display in IDE.
- Var_info now includes unit.
- Fixed bug in
Unit.__repr__
for small multipliers. - Improved notation of units when complaining about them.
- Added option to register external formats.
- Added option to avoid certain prefixes when generating unique variable names.
Model.expressions_for()
now accepts more than 1 argument, and handles dependencies on derivatives correctly.- Removed deprecated method
Model.solvable_subset()
.
- Added debug option to
myokit compiler
command.
- Bugfix: Removing variables now also removes their bindings and labels.
- Added unit tests.
- Improved performance in
lib.markov
analytical simulations. - Updated the
myo
script to use the python3 executable. - Fixed a bug in the default script used when creating or importing a model.
- Made GNOME/KDE icons install using sys.executable instead of a hardcoded python command.
- Fixed handling of string encoding in cellml import.
- Myokit is now tested on Python 3.7, but no longer on 3.4.
- Updated default OpenCL paths for windows.
- GUI fixes for matplotlib 3.1.0+.
- Added
set_constant()
method to markov simulations. - Added
log_times
option tolib.markov.AnalyticalSimulation
, and started pre-allocating arrays. - Added option to cumulative current plot to normalise currents.
- Fixed some floating point issues with protocols and pacing.
- Updated OpenCL code to work with VS 9.
- Some small changes to the Protocol API.
- Added format protocol option to IDE.
- Improved support for native OpenCL on MacOS.
- Native maths in OpenCL simulations is now configurable and disabled by default.
- Added support for Sundials 4.0.0
- Made SymPy a dependency.
- Made current loggable in discrete markov simulations.
- Added
log_times
argument to analytical HH simulation. - Improved performance of analytical HH simulation.
- Added
AbfFile.extract_channel
method that joins sweeps. - Added
ATF
capability to datalog viewer. - Added limited
.pro
support toDataLogViewer
. - Added
ProgressReporter
that cancels the operation after a time out. - Added cut/copy/paste options to menu in IDE.
- Bugfix:
myokit.system
didn't check for SymPy version. - Deprecated
myo
script. - Changed myokit.VERSION to
myokit.__version__
. - Various minor tweaks and fixes.
- Added
myokit.lib.hh
module for recognising Hodgkin-Huxley style ion current models and using them in fast analytical simulations. - Added Rush-Larsen (RL) option to OpenCLSimulation.
- Added CUDA kernel export with RL updates.
- Added
OpenCLRLExporter
for OpenCL kernel with Rush-Larsen. - Improved logging of intermediary variables in OpenCL simulations.
- Improved logging in
Simulation1d
. - Fix to ABF reader for (unsupported) userlists (abf v2).
- Fixes to Sundials configuration on Windows.
- Small bugfixes, documentation updates, etc.
- Various fixes to make Myokit work with Python 2.7.6 (and later).
- Now running sundials auto-detection with every
import myokit
if not set in config file.
- Bugfix to
OpenCL.load_selection
. - Added system info command.
- Added command option to show C Compiler support.
- Added command option to show Sundials support.
- Bugfix to
Unit.rdiv
. - Small fixes to
lib.fit
. - Documentation config update for
sphinx >=1.8
. - Parsing now has full test cover.
- Removed special line feed code from parser, as in unicode they are treated as newlines (and stripped out by
splitlines()
). - Removed obsolete
TEXT_OPS
code from parser. - Removed redundant check from parser.
- Removed another redundant check from parser.
- Various small bugfixes and tweaks.
- Added sundials version detection on first run.
- Moved myokit config files from
~/.myokit
to~/.config/myokit
. - Renamed
NumpyExpressionwriter
toNumPyExpressionWriter
. - Fixed test issues on MacOS.
- Updated the way sundials library locations are stored on windows systems.
- Added script that creates icons for windows.
- Updated script that creates icons for linux.
- Placeholder release to fix Pypi issue.
- Added support for Python 3.4, 3.5, and 3.6.
- Added support for Sundials 3 (by @teosbpl).
- Added support for various Visual C++ compilers.
- Made Myokit pip-installable, stopped providing windows installer.
- Replaced windows sundials binaries with Visual-Studio compiled ones.
- Added a system-wide
myokit
command (after pip install on unix systems). - Moved development from private repo to GitHub.
- Set up automated testing with Travis (linux) and Appveyor (windows).
- Greatly increased unit-test coverage (and set up checking with codecov.io).
- Added contribution guidelines.
- Added style checking with
flake8
. - Removed
OrderedPiecewise
,Polynomial
,Spline
, andlib.approx
. - Deprecated
lib.fit
. Please have a look at PINTS instead. - Removed
quadfit()
methods fromlib.fit
. - Deprecated
lib.common
- Removed HTML page generating classes from mxml.
- Simplified some of the error classes.
- Simplified
Benchmarker
. DataLog.apd()
now has same output as Simulation threshold crossing finder.- On-the-fly compilation switched from distutils to setuptools.
- Tidied up.
- Lots of bugfixes.
- Made IDE show Python version in about screen.
- Fixed critical bug introduced in version 1.26.2 that stopped Windows simulations from running.
- Fixed a small bug in
Simulation
's logging when using the newlog_times
argument. - Added Matlab and text file tab to DataLog viewer.
- Removed ancient restriction on components not being called
external
. - Refactored code to pass flake8 tests.
- Added
len()
method to Protocol. - Now setting
runtime_libraries
parameter for all compiled classes (simulations), removing the need to setLD_LIBRARY_PATH
on some systems.
- Updated licensing info.
- Myokit can now be installed as library using
python setup.py develop
. - Fixed a bug in the gnome scripts that install icons.
- The
DataLog
trim
,itrim
andextend
methods now return copies, instead of modifying the data 'in place'. This makes theDataLog
's methods more consistent, and prevents accidental data loss. However, this change makes Myokit 1.26.0 slightly backwards incompatible. - Added a
DataLog.keys_like
method to iterate over 1d or 2d logs.
- Small tweaks to IDE
- Fix to
DataLog.fold()
to discard remainder if period doesn't exactly divide the log length. - Various bugfixes.
- Improved cvode error catching.
- More control over
lib.fit
verbosity - Added random starting point option to lib.fit methods.
- Added the option to explicitly specify log points in the single-cell
Simulation
class. - CVODE sim now raises
SimulationError
if maximum number of repeated zero-steps is made, instead of plainException
. - Fix
fit.cmaes
to work with cma version 2.x
- Small tweaks to IDE.
- Fixed bug with saving the time variable in
DataLog.save_csv()
.
- Added xNES and SNES optimisation methods.
- Added interface to CMA-ES optimisation method.
- Replaced the 'tolerance' arguments
in myokit.lib.fit
with more accurate counterparts. - Removed
ga()
optimisation method.
- Added model export to Stan.
- Added data-clamp to CVODE simulation (works, but generally a bad idea).
- Added Protocol.add_step convenience method for building sequential step protocols.
- Added
log()
method toExportError
. - Fixed bug in ABF reading (ABF channel index can be greater than number of channels in file).
- Small fixes to
DataLogViewer
. - Fixed issue with PySide file open/save dialogs.
- Several small fixes to docs.
- Bugfix in PyQt4 support.
- Fixed PyQt4/5 and PySide compatibility issue that was causing errors in the DataBlock viewer's open function.
- Added missing #pragma directive to enable double-precision simulations OpenCL.
- Added support for PyQt5.
- The IDE now has a model navigator, that displays the model components alphabetically and lets you navigate large models more easily.
- Fixed a bug in the implementation of
DataBlock1d.grid()
, and updated its documentation: this method returns coordinates for squares where each square represents a data point. See the Stewart 2009 OpenCL example for an example of its use. - Added a second method
DataBlock1d.image_grid()
that returns coordinates for points where each point in space represents a data point. - Fixed bug with Ctrl+Shift+Home in IDE.
- Various small bugfixes in IDE.
- Updated installation instructions on website.
- Fixed bug (with new numpy) in
DataLog.split_periodic
. - Fixed warnings in GDE.
- Fixed issue with pyside/pyqt difference.
- Updated documentation and examples.
- Added extra callback option to pso for detailed feedback.
- Updated default search paths for Sundials headers and libraries.
- Small bugfix to IDE.
- Added
pre()
method to Markov simulations (AnalyticalSimulation
andDiscreteSimulation
). - Fixed a bug in
lib.markov.AnalyticalSimulation.run
whenlog_interval >= duration
. - IDE now shows exact location of recent files in status bar.
- Fixed bug in
SymPyExpressionWriter.eq()
and renamed classes to use SymPy with capital P.
- Updated documentation.
- Fixed opencl issue.
- Added methods for easier symbolic addition of names/components for situations where exact names aren't important.
- Bugfix to datalog viewer.
- Bugfix to vargrapher.
- Update to ide: Can now add/remove comments.
- Bugfixes to protocol reading in
AbfFile
. - Bugfix in
AbfFile
string reading. - DataLog viewer now opens multiple files if specified on the command line.
- Fix to OpenCL sim reserved names list.
- Various tweaks and fixes.
- Fixed bug in IDE.
- Fix to windows start menu icons.
- Updated online examples.
- Bugfix in deprecated method
Protocol.guess_duration()
.
- Fixed bug with auto-indenting and smart up/down arrows in IDE.
- Fixed bug in parsing of indented multi-line meta-data properties.
- Fixed bug with
[[script]]
sections being added to files when saved. - Slight update to
DataLog.apd()
. - Updated the docs of both apd methods to make clear that they use fixed thresholds.
- Added hybrid PSO option to
myokit.lib.fit
. - Added option to return multiple particles' results to PSO.
- Bugfixes and updates to documentation.
- Added BFGS method (interface to scipy) to
myokit.lib.fit
.
- Small bugfix in markov simulation class.
- Updates to source highlighting in the IDE.
- Various small bugfixes.
- Protocols and events now define a 'characteristic time'.
- The protocol class is now slightly stricter than before, removed its
validate()
method. - Both markov model simulation classes can now run simulations based on
myokit.Protocol
objects.
- Rewrote the Markov model module.
- Added a method to perform stochastic simulations with Markov models.
- Various small bugfixes.
- The CellML export now includes a simple periodic pacing protocol.
- Various small bugfixes.
- Tidied up code.
- Various small bugfixes.
- Various small bugfixes.
- Removed option to run
mmt
files in threads (was not used and caused issues with GUI). - Giving up on multiprocessing on windows. Adding switches to disable it in the examples.
- Various bugfixes and improvements.
- Improved logging in simulations, made it more consistent throughout Myokit.
- Various small bugfixes, improvements and website updates.
- Changed the way states are stored in the model (list instead of OrderedDict). Was causing funny bug. Now has less redundant info.
- Fixed bug in
remove_component()
.
- Added debug options to openclsim.
- OpenCL sim can now pace based on rules again, which is far more efficient for large numbers of cells.
- Various bugfixes.
- Added OpenCL device selection.
- Updated cumulative current plot method.
- Various small bugfixes and improvements.
- Add Powell's method to fit library.
- Added model statistics screen to IDE.
- Presence of
<import>
tag in CellML now causes exception instead of warning. - Improved CellML import error messages.
- There is no longer a restriction on the type of expression used as a first argument to piecewise and if.
- Fixes to MathML parser and CellML import.
- Added option to extract colormap to DataBlock viewer.
- Added section about uninstalling on windows and slight hints about filesizes to website.
- Introduced "evaluator" class used for parallelized optimization algorithms. Rewrote PSO to use it.
- Added a genetic algorithm optimization method (does not outperform PSO).
- Added reset script to myo that removes all user settings i.e. the entire
DIR_MYOKIT
. - Added version check to avoid Python3.
- Myokit for WinPython now has an uninstaller that shows up in "Add/Remove programs".
- Various small bugfixes and improvements.
- Added Python version check.
- Fitting library: Adding quadratic polynomial fit used to test local optima.
- Various small bugfixes.
- Improved export of units to CellML.
DataLogViewer
can now open CSV.- Fixed windows newline issue when writing
\r\n
. - Small fix to OpenCL memory management.
- OpenCL sim now also cleans when cancelled with keyboard interrupt.
- Added a
finally: sim_clean()
to all simulations. - Various small bugfixes and improvements.
- Various bugs fixed in the IDE.
- Added 'next' keyword to protocol syntax.
- Explorer now shows output in IDE console.
- PSimulation now tracks arbitrary variables dz/dp, no longer only states dy/dp.
- Various small bugfixes.
- Various small bugfixes in the GUI.
- Even more improvements to the GUI.
- Several improvements to the new GUI.
- Added new icons for datablock viewer and gde.
- Update to
settings.py
for CUDA. - Added string highlighting in script editor.
JacobianCalculator
bugfix due to Enno.- Various small bugfixes and improvements.
- Removed last traces of previous GUI.
- Fixes to output capturing so that it works on Windows.
- Various small bugfixes.
- New IDE seems stable.
- Added monkey patch for
os.popen
issue on windows.
- Completely new GUI in QT instead of WX, should solve mac problems, improve performance throughout.
- Integrated GDE with Myokit classes.
- Updated docs for command line tools.
- Dropping idea of supporting
msvc9
compiler on windows. Too many issues. - Various small bugfixes.
- Bugfix in settings.py
- GDE is now a part of Myokit.
- Added "monkey patch" for old windows compilers.
- Some changes for C89 compatibility.
- SI units named after people are now also accepted when capitalized. Never used for output in this fashion.
- Now allowing (but not guaranteeing correctness of) arbitrary connections in OpenCL sim.
- Various improvements and bugfixes.
- Added
Quantity
class for number-with-unit arithmetic. - Fix to CellML export of dimensionless variables with a multiplier.
- Various small bugfixes and improvements.
- Added current calculating method to Markov model class.
- Added on multi-model experiment convenience classes.
- Binds and labels now share a namespace.
- Added unit conversion method to unit class.
- Various small bugfixes and improvements.
- Various small bugfixes and improvements.
- Added NaN check to
PSimulation
. - Added on model comparison method.
- Nicer output of numbers in expressions and unit quantifiers.
- Tiny fixes in Number representation and GUI.
- Imrpoved video generation script.
- Various small bugfixes and improvements.
- Added partial validation to Markov model class.
- Moved
OpenCLInfo
into separate object. - GUI now shows remaining time during experiment.
- Various small bugfixes and improvements.
- Added Alt-1,2,3 tab switching to GUI.
- Updates to
DataLog
. - Fixed opencl issue: constant memory is limited, using
__constant
for parameter fields can give a strange error (invalid_kernel_args
instead of out of memory errors). Fixed this by chaning__constant
to__global
. - Various small bugfixes and improvements.
- Various improvements and bugfixes.
- Fixed a bug with fixed interval logging in CVODE sim.
- Checked all load/save methods for
expanduser()
after issues during demo in Ghent. - Changed
model.var_by_label()
tomodel.label()
. - Added option to show variables dependent on selected var.
- Added support for reading WinWCP files.
- Various improvements and bugfixes.
- Added
parse_model()
etc methods to parser. - Made sure protocol is cloned in all simulations. Protocols are not immutable and changes made after setting the protocol should not affect the simulation (or vice versa).
- Added a simulation that calculates the derivative of a state w.r.t. a parameter.
- Working on
MarkovModel
class. - Added method to convert monodomain parameters to conductances to opencl simulation.
- Various small bugfixes.
- Various small bugfixes.
- Added
ATF
support. - Added a Python-based
PacingSystem
to evaluate protocols over time in Python. - Added
Protocol
toSimulationLog
conversion. - Improvements to GUI classes.
- Added protocol preview to GUI.
- Various small bugfixes.
- Fixed memory use and halting issue in
lib.fit
. - Fixed bug in
aux.run()
. APDs are now returned in SimulationLogs instead of plain dicts. This allows saving as csv and is more consistent with what users would expect the simulation to return.
- Bugfix in PSO code: Initial positions weren't set properly, could end up out of bounds.
- Made threaded
run()
an option insettings.py
.
- Added quick figure method to
abf
. - Various small bugfixes.
- Added PySilence context manager, made
CSilence
extend it. myokit.run()
now runs the script inside a separate thread. This allowssys.exit()
to be used in a script.myokit.run()
now handles exceptions correctly.- Various improvements and bugfixes.
- Added rectangular grid mapping of parameter spaces.
- Removed custom open dialog from GUI.
- Various improvements and bugfixes.
- Added jacobian examples.
- Various improvements and bugfixes.
- Added parallelized particle search optimization method (PSO).
- Made linear system solving much faster.
- Looked at using matrix exponentials in markov model code, over 1000 times slower than eigenvalue method!
- Added method to draw colored Voronoi diagram.
- Further annotated the example files.
- Various small bugfixes.
- Added note about csv import to
SimulationLog.save_csv
. - Added publications to website. Uploaded hand-outs for workshop.
- Updated GDE version to 1.3.0.
- Added hyperbolic functions to CellML import.
- Updated cellml import: Unused variables without an rhs are now removed, used variables without an rhs are given an automatic rhs of 0. Both cases generate a warning.
- Update to cellml import: If a variable is mentioned but never declared (i.e. if it is an external input) a dummy variable is now created and a warning is given.
- Added method to
myo
to get version number. - Fixed string encoding issue in CellML import.
- Tweaks to the gui based on workshop feedback.
- Fixed windows issue: IE likes to download
.cellml
files as.xml,
making them invisible to the gui. Added a glob rule for.xml
to the cellml import in the gui.
- Moving to next version.
- Small bugfixes and a
variable.value()
method.
- Various small bugfixes.
- Added a formatting option to the
Benchmarker
. - Fixed OS/X GUI issues with progress bar.
- Adding Sympy to formats list.
- Added sympy exporter and importer.
- Added
LinearModel
class for working with markov models.
- Now raising exception when user cancels simulation instead of silent exit.
- Added zero-step detection to cvode sim that now raises a
SimulationError
after too many consecutive zero steps.
- Improvement debugging in the GUI: Now shows line numbers of error in script.
- Fixed bug in error handling.
- Added Windows installer.
- Updates to Windows install script.
- Added (valid) CellML export.
- Various small bugfixes.
- Added update script.
- Various improvements and bugfixes.
- Fixed bug with dialogs on OS/X.
- Bundled all scripts into a single script
myo
. - Updated installation script for Windows.
- Fixed bug with dialogs on OS/X
- Added device info to OpenCL debug output.
- Improved memory handling in OpenCL simulations.
- Various small bugfixes.
- Added a script that installs a desktop icon for the gui under Windows.
- Added a global
readme.txt
. - Various small bugfixes.
- Various small bugfixes.
- Improved ABF support.
- Various small bugfixes.
- Bugfix in GUI for Windows.
- Added stable point finding method.
- Added icons for windows version.
- Rebranding as 'Myokit' (with capital M, no more mention of the "Maastricht Myocyte Toolkit").
- Changed license to GPL.
- Various improvements and bugfixes.
- Updates to website
- Various small bugfixes.
- Added method to fold log periodically (based on
split_periodic
). - Various small bugfixes.
- Various small bugfixes.
- Reinstated logging of derivatives in CVODE simulation.
- Various small bugfixes.
- Various small bugfixes.
- Added load/save methods to DataBlock1d.
- Made ICSimulation work with DataBlock2d to calculate eigenvalues.
- Various small bugfixes.
- Added a JacobianGenerator class.
- Added a simulation that integrates partial derivatives to find the derivatives of the state w.r.t. the initial conditions.
- Added latex export.
- Various small bugfixes.
- Various small bugfixes.
- Added IV curve experiment.
- Improved error detection in CVODE simulation.
- Added a diffusion on/off switch to the OpenCL simulation.
- The OpenCL sim can now replace constants by scalar fields. This allows it to be used to test parameter influence or to simulate heterogeneity.
- Better handling of unknown units.
- Added
eval_state_derivs
option to GUI. - Added trim trailing whitespace method to gui.
- Gui and step script now show numerical errors if they occur.
- Added
trim()
anditrim()
methods to simulation log. - Added a 2-variable parameter range exploration class.
- DataBlock viewer now can export frames and graphs.
- Various improvements and bugfixes.
- Added method
Model.set_name()
. - Updated installer script for GNOME/KDE.
- Various small bugfixes.
- Added on Strength-Duration experiment.
- Added method to create cumulative current/charge plots.
- Changed
SimulationLog.integrate()
to use left-point rule instead of midpoint rule. This makes much more sense for the stimulus current when using CVODE. - Various improvements and bugfixes.
- Various small bugfixes.
- Added RestitutionExperiment to
lib.common
. - Various small bugfixes.
- Re-organised code.
- Various small bugfixes.
- Various improvements and bugfixes.
- Various small bugfixes.
- Added unit methods to IDE.
- Updated the installation guide.
- Added method to 'walk' over the operands in an expression, depth-first.
- Added a few default unit representations
- Various small bugfixes.
- Added unit checking methods.
- Improved CellML unit reading from constants.
- Added
pack_snapshot()
method that creates a copy of the current Myokit version. - Created
DataBlock
classes for alternative view of rectangular simulation data. - Added GUI for viewing 1D and 2D simulation data.
- Various small bugfixes.
- Changed
[[plot]]
to[[script]]
. - Various improvements and bugfixes.
- Updated interface of opencl simulations.
- Added OpenCL-based parameter RangeTester class.
- Various small bugfixes.
- Updates to documentation.
- Improved documentation.
- Added a 'running simulations' guide.
- Added SymPy export.
- Added unit tests.
- Added binary format for simulation logs.
- Aliases are now retained in model export.
- Various small bugfixes.
- Improved documentation.
- Various small bugfixes.
- New model syntax, model stars with:
[[model]]
. - Various small bugfixes.
- Added binary version of
save_state
andload_state
. - Added ProgressPrinter to show progress during long simulations.
- Added precision switch to
prepare_log
andload_csv
. - Added method to find solvable equations dependent on one or more variables.
- Improved support for ABF protocol and data reading.
- Various small bugfixes.
- Improved OpenCL simulation error output.
- Various improvements and bugfixes.
- Improvements to GUI.
- Improved
find_nan
method in OpenCL sim. - Added method to expression's
eval()
to evaluate with numpy.Float32 objects. This helps finding the source of OpenCL single-precision NaN errors. - Various small bugfixes.
- Refactored code, reduced size of giant modules.
- Various small bugfixes.
- Added recovery-from-inactivation experiment.
- Updated
ActivationExperiment
, added boltzmann fit. - Added boltzmann fit to
InactivationExperiment
. - Added time constant of activation method to
ActivationExperiment
. - Rewrote unit system.
- Various improvements and bugfixes.
- Various small bugfixes.
- Slight optimizations in OpenCL code.
- Various small bugfixes.
- Various small bugfixes.
- Updated step method to accept models as reference.
- Reinstated
Model.load_state()
method. - Imrpoved find dialog.
- Various small bugfixes.
- Added quick var info to gui.
- Renamed
current_diff
todiffusion_current
.
- Added on ChanneML import.
- FiberTissueSimulation now works with 2D fibers.
- Added data extraction features to abf format.
- Added on Fiber-Tissue simulation class.
- Various improvements and bugfixes.
- Number of cells to pace can now be set in
OpenCLCableSimulation
. - Added function to find origin of NaN errors in an
OpenCLCableSimulation
. - Updated SimulationLog to return mesh grid for pyplot.
- Added 1D CV calculation to
SimulationLog
. - Renamed cable simulation classes.
- Made 1D OpenCL Simulation suitable for 2D use.
- Added method to list component cycles.
- Added a method that checks which variables cause mutually dependent components.
- Various small bugfixes.
- Fixed direction convention for diffusion current.
- Simulation log now has local and global variables (for multi-cell simulations).
- Added OpenCL export.
- Added a C header file with pacing functions, shared by several simulations.
- Added a settings file
settings.py
. - Added OpenCL simulation object.
- Various small bugfixes.
- Various performance boosts.
- Rewrite of expression classes.
- Improved parser.
- Added options to move variables, delete variables.
- Improved
Model.clone()
method. - Added strand simulations via Python interface.
- Various improvements and bugfixes.
- Working CUDA kernel export.
- Various small bugfixes.
- Added simple Ansi-C forward euler export.
- Various small bugfixes.
- Added progress bars to explorer in gui (F6).
- Worked on dependency graphs.
- Added meta data to components.
- Added option to
SimulationLog
to split into periodic pieces. - Various improvements and bugfixes.
- Various improvements and bugfixes.
- Made
engine.realtime
contain the elapsed system time, not the absolute system time. - Made
SimulationLog
suitable for multi-dimensional data. - Added
StrandSimulation
object. - Added Graph Data Extractor.
- Added
RhsBenchmarker
. - Began work on CUDA export.
- Added Coffman-Graham algorithm for directed acyclic graph layer assignment.
- Added
get_last_number_of_evaluations()
method toSimulation
. - Various updates to the documentation.
- Various small bugfixes.
- Added export to strand/fiber simulation in Ansi-C.
- Added syntax for binding to external values.
- Various small bugfixes.
- Added plotting methods.
- Added benchmarking to simulation.
- Various improvements and bugfixes.
- Refactored
myokit.lib
. - Added APD calculating function.
- Added APD measurement to simulation using CVode's root finding.
- Added padding function to
save_csv
. - Created
SimulationLog
class. - Various small bugfixes.
- Refactored import/export modules.
- Updated documentation.
- Added method to interpolate logged results.
- Improved performance in CVODE simulations.
- Added periodic logging option to simulation.
- Improved Explorer GUI.
- Added method to run euler/rk4 simulations.
- Added OrderedPiecewise class.
- Added progress bar to gui.
- Various small bugfixes.
- Bugfix in metadata export.
- Various improvements and bugfixes.
- Rewrote cellml import.
- Worked on methods to fit simplify functions.
- Updates to
mmt
syntax - Added multi-line comments to
mmt
syntax. - Various small bugfixes.
- Added tests.
- Added
piecewise()
expressions. - Various improvements and bugfixes.
- Improved import and export interfaces.
- Added
save_state()
method. - Improved documentation
- Conversion of Myokit expressions to Python functions.
- Added benchmarking methods.
- Implemented unit parsing.
- Added SBML import.
- Added methods for function simplification (via approximations).
- Introduced website.
- Various small bugfixes.
- Added local aliases to syntax.
- Simplified syntax.
- Simulation and gui now allow unlogged pacing.
- Added search function to GUI.
- Templating based exports, available from GUI.
- Import of CellML metadata.
- Added protocol wizard to GUI.
- Added simple component dependency graph to GUI.
- Added model debug options.
- Added matlab export.
- Introduced three-section
mmt
file. - ABF protocol import.
- Added Sphinx-based documentation.
- Added routine that shows sizes of integrator steps.
- Various small bugfixes.
- First
mmt
syntax, parser and model classes. - Initial CellML import.
- C++ export.
- Ansi-C export, python export.
- Beat script that uses generated Ansi-C and CVODE, compiled on the fly.
- First working GUI.
- Working on simple model syntax, parser and export to C++.