Multiscale reaction-diffusion simulations with Smoldyn.

UNLABELLED
Smoldyn is a software package for stochastic modelling of spatial biochemical networks and intracellular systems. It was originally developed with an accurate off-lattice particle-based model at its core. This has recently been enhanced with the addition of a computationally efficient on-lattice model, which can be run stand-alone or coupled together for multiscale simulations using both models in regions where they are most required, increasing the applicability of Smoldyn to larger molecule numbers and spatial domains. Simulations can switch between models with only small additions to their configuration file, enabling users with existing Smoldyn configuration files to run the new on-lattice model with any reaction, species or surface descriptions they might already have.


AVAILABILITY AND IMPLEMENTATION
Source code and binaries freely available for download at www.smoldyn.org, implemented in C/C++ and supported on Linux, Mac OSX and MS Windows.

Incorporating the on-lattice model into existing Smoldyn simulations can be done with only small changes to the configuration file, allowing users to effectively re-use existing Smoldyn models.
To construct a multiscale simulation, the user first defines a port surface to connect the two models. For example, the configuration file extract shown in Listing 1 creates a rectangle port surface normal to the x-axis at x = 50. This port will allow molecules to cross from the off-lattice region to the lattice region, and vice versa. Of course, it is also possible to setup purely off-lattice or on-lattice simulation, in which case no ports are needed.
Listing 1: specify port surface start_surface port_surface action front all port panel rect -0 50 0 0 100 100 end_surface start_port my_port surface port_surface face front end_port Listing 2: setup on-lattice model start_lattice my_lattice type nsv port my_port boundaries 0 47 100 boundaries 1 0 100 p boundaries 2 0 100 p lengthscale 3 3 3 species all reactions all surfaces all end_lattice Listing 2 shows how to create the lattice domain and setup the parameters, including which species, reactions and surfaces to include. These items are assumed to be previously specified using the standard Smoldyn input file format. The listing shown here creates a lattice (periodic in the x and y axis directions) over the domain (47, 0, 0) ≤ (x, y, z) < (100, 100, 100) with an isotropic lattice spacing h = 3.
In this case, Smoldyn will attempt to add all the species, reactions and surfaces previously defined to the on-lattice model. All reactions that occur in solution are supported by the on-lattice model. All surface actions that occur across the surface (i.e. reflection, absorption, transmission) are also supported. Surface-bound species that diffuse and react along the surface geometry are only supported by the off-lattice model.

Output
The user can generate output data using Smoldyn's command system, or see the current state of the simulation in Smoldyn's OpenGL visualisation window. Alternatively, the full state of the molecules can be written out using the standard VTK file format (vtk.org) for later post-processing and visualisation. For example, all the rendered figures in this paper were generated from VTK files using Paraview (www.paraview.org).
In the off-lattice model, surfaces are defined by specifying panel shapes (rectangles, triangles, discs, hemispheres, spheres and cylinders), which can be combined to form more complicated geometries (see Figure 1a). These same surface descriptions can be supplied to the on-lattice model, which effectively discritizes the surfaces to be along lattice boundaries, based upon the middle of the lattice site (see Figures 1b & 1c). The on-lattice model implements surface actions (reflection, absorption, transmission) by modifying the diffusion jump rates between lattice sites on either side of the surface.  Surfaces modify the diffusion jump rates α i,j = α j,i = α S for species S from lattice sites i to j, where i and j are on opposite sides of the surface. For example, a reflecting or absorbing boundary condition on the front of the surface would both set α i,j = 0, with the absorbing condition also adding a S → ∅ reaction to j, with reaction rate k = α S . (c) In the offlattice regions, surfaces are curved and off-lattice, but in the on-lattice regions they are discritized according to the lattice resolution. Therefore, it is possible for molecules to attempt jumps from the off-lattice to on-lattice regions that would be allowed under the former model but not the latter. Smoldyn checks these conditions and ensures accurate diffusion jumps that are consistent with each model within its own domain.