Diffusive finite state projection (DFSP)#

Diffusive finite state projection (DFSP) [1] is a solver developed for simulating diffusion processes in compartmental models. Diffusion events are modeled as particles that transition to neighboring locales. DFSP is ideally suited for systems with a small number of particles, on the order of tens or hundreds of particles per locale.

Diffusion solver errors are all first-order in time and second-order in space, and are therefore similar to using one of the leaping algorithms for the simulation of diffusion processes. However, the diffusion methods execute single reaction events per time step, as opposed to leaping algorithms that execute multiple reaction events per time step, and are therefore useful if you choose to capture detailed events.

Parameter

Data type

Default

Description

solver

string

NA

DFSP, DiffusionFSP, and TransportFSP are all valid names to run this solver.

epsilon

float

0.01

Determines the error of the approximation; accepts values between 0 and 1. A value of close to 0 is equivalent to a Gillespie (SSA) simulation and a value close to 1 is the most aggressive speedup (and largest error). We do not recommend changing this value.

verbose

bool

false

If true, extra information is printed to the command line, which can be useful for debugging or testing the solver.

uMax

integer

120

The maximum number of particles per subvolume without violating the error condition. Maximum value is 150; if your problem is expected to have more particles, consider using TransportSSA (ISSA) instead.

Example#

The .cfg file example below is followed by a portion of an an .emodl file to show how diffusive events are specified. D represents the diffusion coefficient and that the reactions specify transitions of species A to neighboring locales.

{
    "duration" : 1024,
    "runs"   : 512,
    "solver" : "DFSP",
    "dfsp" : {
        "umax" : 120,
        "verbose" : false
    }
} 
(locale site-1)
(set-locale site-1)
(species A::1 1000)

(locale site-2)
(set-locale site-2)
(species A::2 1000)

(reaction A1->A2 (A::1) (A::2) (* D A::1))
(reaction A2->A1 (A::2) (A::1) (* D A::2))