# mmt File syntax¶

Each Myokit .mmt file contains at least one of the following segments:

A model definition, indicated by [[model]]
This describes a set of model equations using the syntax explained below. This contains all model equations, units, meta-information and a set of realistic initial values. The syntax for model definitions is explained here.
A pacing protocol, indicated by [[protocol]]
This describes pacing protocol used to drive the model. The syntax for describing protocols is described here.
An embedded script, indicated by [[script]]
This is a plain python script that sets up a simulation, runs it and then processes the results. This includes, but isn’t limited to, drawing graphs of the logged variables.

The order of these segments is fixed: not every segment needs to appear in an mmt file, but a [[script]] header should never come before a [[protocol]] one.

When ‘executing’ an mmt file, the model and protocol are read and parsed. The magic methods get_model and get_protocol() allow the embedded python script to access these objects and create a simulation. This way, a relevant view of the simulation data can be provided along with the model definition and protocol.

The goal of this setup is to provide a complete experiment in a single, human-readable file. The format is deliberately simple: all .mmt files are plain text and so can be edited by people without Myokit software, maintained in versioning systems and pass through email security without problems.

It is possible to parse only part of an .mmt file, for example to extract a model definition, protocol or plot script an import it into another file.