Common Plots

The myokit.lib module provides a number of functions that take simulation logs as input and create some common (or less common) plots.

This module uses matplotlib for visualisation.

myokit.lib.plots.cumulative_current(log, currents, axes=None, labels=None, colors=None, integrate=False, normalize=False, max_currents=None, line_args={}, fill_args={}, normalise=None)

Plots a number of currents, one on top of the other, with the positive and negative parts of the current plotted separately.

The advantage of this type of plot is that it shows the relative size of each current versus the others, and gives an indication of the total positive and negative current in a model.

Accepts the following arguments:

log

A:class:myokit.DataLog containing all the data to plot.

currents

A list of keys, where each key corresponds to a current stored in log.

axes

The matplotlib axes to create the plot on.

labels

Can be used to pass in a list containing the label to set for each current.

colors

Can be used to pass in a list containing the colors to set for each current.

integrate

Set this to True to plot total carried charge instead of currents.

normalize

Set this to True to normalize the graph at every point, so that the relative contribution of each current is shown.

max_currents

Set this to any integer n to display only the first n currents, and group the rest together in a remainder current.

line_args

An optional dict with keyword arguments to pass in when drawing lines.

fill_args

An optional dict with keyword arguments to pass in when drawing shaded areas.

The best results are obtained if relatively constant currents are specified early. Another rule of thumb is to specify the currents roughly in the order they appear during an AP.

myokit.lib.plots.current_arrows(log, voltage, currents, axes=None)

Draws a graph of voltage versus time with arrows to indicate which currents are active at which stage of the action potential.

The argument, log should be a:class:myokit.DataLog containing the data needed for the plot. The argument voltage should be the key in log that maps to the membrane potential.

The list currents should contain all keys of currents to display.

Returns a matplotlib axes object.

myokit.lib.plots.simulation_times(time=None, realtime=None, evaluations=None, mode='stair', axes=None, nbuckets=50, label=None)

Draws a graph of step sizes used during a simulation.

Data can be passed in as time (simulation time) realtime (benchmarked time during the simulation) and evaluations (the number of evaluations needed for each step). Which of these fields are required dependens on the chosen plot mode:

stair

Draws time on the x-axis, and the step number on the y-axis. In this plot, a high slope means the integrator is taking lots of steps.

stair_inverse

Draws time on the y-axis, and the step number on the x-axis.

load

Draws time on the x-axis, and log(1 / step size) on the y-axis. In this plot, high values on the y-axis should be found near difficult times on the x-axis

histo

Lumps time into buckets (whose number can be specified using the argument nbuckets) and counts the number of steps in each bucket. In the final result, the times corresponding to the buckets are plotted on the x axis and the number of evaluations in each bucket is plotted on the y axis.

time_per_step

Uses the realtime argument to calculate the time taken to advance the solution each step. In the resulting plot, the step count is plotted on the x-axis, while the y-axis shows the time spent at this point.

eval_per_step

Uses the evaluations entry to calculate the number of rhs evaluations required for each step. In the resulting plot, the step number is plotted on the x-axis, and the number of rhs evaluations for each step is plotted on the y-axis.

The argument axes can be used to pass in a matplotlib axes object to be used for the plot. If none are given, the current axes obtained from pyplot.gca() are used.

Returns a matplotlib axes object.