Patrick AMAR

Équipe Bioinfo, LRI, Univ. Paris Sud et CNRS UMR 8623


HSIM has been developed since 2002. The first published reference can be found in Journal of Biological Physics and Chemistry, 2004, Vol 4, Number 2, pp:50-63.

Some Examples

Actin Strand Polymerisation
Enzymatic Reactions
Assembly Formation
MAPK Signalling Cascade

Download HSIM

Windows Version (May 15, 2021) Batch version for Windows (May 15, 2021)
x86_64 Linux Version (May 15, 2021) Batch version for x86_64 Linux (May 15, 2021)
MacIntosh x86_64 Version (May 15, 2021) Batch version for x86_64 MacIntosh (May 15, 2021)

The stochastic automaton HSIM


The simulator, HSIM, is a stochastic automaton driven by reaction rules between molecules.

In essence, each molecule is represented by a record that includes its type, its position, its size and a list of links to certain other molecules. HSIM keeps track of each molecule in real time from the computer point of view. The basic principle is that time is sliced into consecutive steps or generations, and in each generation the rules are applied to every molecule. These rules mimic the chemical reactions between molecules in a real system. The generation time is set to 100 microseconds, which corresponds to the average time for a protein to move a distance of 10 nanometers (of the order of its diameter) in vivo.

Metabolites diffuse faster than proteins, to take account of their smaller size, they are represented in HSIM by a sphere of reduced size with a greater diffusion speed. During a generation, the following processes are applied to all the molecules:

When all the molecules in the cell have been processed, the generation is completed and a new one begins. In HSIM the computer time is proportional to the total number of molecules and not to the size of the simulated space or the number of types of molecules.

One important point is that models in HSIM are additive: different models can be merged by simply merging their configuration files. If there are interactions between the models, HSIM will take them into account.


There are four kinds of interaction rules in HSIM between two molecules:

Each rule has an associated probability which corresponds to the kinetics of the reaction. For each kind of molecule, the maximum number of links to each other kind of molecule must be specified to allow the association rules to be functional.

Model Description

The model is described with a configuration file made of 5 sections:


    title = "Enzymatic Reaction";

    geometry = 120:40;    // 1.2 x 0.4 nm
    molecule s1, s2;
    molecule E1;

    size (s1) = 0.1;
    size (s2) = 0.1;
    speed (E1) = 0.1;

    maxlinks (E1) = s1(1), s2(1);
    maxlinks (s1) = E1(1);
    maxlinks (s2) = E1(1);

    E1 + s1    -> E1 * s1   [0.4];    // E1 captures its substrate
    E1 * s1    -> E1 + s1   [1e-3];   // reverse reaction
    E1 * s1    -> E1 * s2   [0.01];   // catalyse s1 -> s2
    E1 * s2    -> E1 + s2   [0.01];   // E1 releases the product

    init (30, E1);
    init (1000, s1);
Quick HSIM User Manual

Command line options

Usage: hsim -f config-file [options]

-hprint this help.
-Hlonger help (with interactive controls).
-b filebatch mode (no OpenGL display).
-bd filebatch mode (without diffusion phase).
-C filecount each reaction and write it in 'file'.
-m numset the duration of the simulation (number of seconds of simulated time).
-qquiet (no display at all).
-vprints the rules on stderr.
-r numinitialise the random number generator.
-rarandomly initialise the random number generator.
-Rdisplay the rules.
-fsdisplay in full screen mode.
-s3D stereo mode.
-f fileuse 'file' as configuration file.
-l fileload the simulation snapshot 'file' (infers the configuration).
-wreload periodically the snapshot (watch file).
-g WxHset the cell width and height.
-i numset the number of generations between two histograms display.
-c MOL=num  add to the initial population of MOL 'num' more copies.
Keyboard controls
ashow all the molecules (even those not linked)
bshow the backbone of the assemblies
dtoggle diffusion only / diffusion and reaction
Dset the length of the simulation in seconds
gtoggle concentration curves / assemblies histogram
h, ?show this help
isave the current display in a PNG image file
lload a previously saved simulation
mstart / stop recording a movie of the simulation
nnormalise the scale for displaying the concentration curves
+increase the scale factor
-decrease the scale factor
q, Escapeexit the program
rshow / hide the links between bound molecules
Rshow / hide the rules
stoggle the 3D stereoscopic mode switch
Ssave the current state of the simulator into a file
Tabstart/stop the simulation
Returntoggle display rate
Backspacefocus to the center of the cell
Mouse controls
Left Dragrotate around the X and Y axis
RIght Dragchange the aperture angle
Left Pressselect a molecule to be the new center of rotation
Ctrl+Left Press select an assembly to be shown
Mid Pressshow a menu

Model description language

General syntax

title = "model name";name of the model
speed (mt) = prob;diffusion speed expressed as a probability
size (mt) = num;diameter of a molecule type in 10 mn unit.
geometry = lengh:diameter;size of the cell in 10 mn units.
display (mt1, ..., mtN);show the concentration curves of the species list.
asm name = (mt1, ..., mtN);give the name name to all the assemblies containing the species list.
maxlinks (mt) = mt1 (nl1), ..., mtn (nln);set the maximum number of links for species mt.
molecule descr1, ..., descrndeclare the species descr1, ..., descrn as cytosolic molecules where descri is 'mt  [max link count] [hide] [inactive]'
membrane descr1, ..., descrndeclare the species descr1, ..., descrn as membrane molecules
species mt1, ..., mtndeclare the species as cytosolic molecules treated as an homogeneous population
init (#copies, mt);fill the compartment with #copies copies of species mt.
init (conc uM, mt);fill the compartment with conc micromolar of species mt.
init (conc mM, mt);fill the compartment with conc millimolar of species mt.
surface (#copies, mt);put #copies copies of the membrane species mt on one pole of the compartment membrane.

Syntax of the reaction rules

Basic reactions

mt1 + mt2 -> mt3 + mt4 [prob]; mt1 reacts with mt2 with probability prob;
mt1 + mt2 -> mt3 * mt4 [prob]; mt1 reacts with mt2 with probability prob and forms a complex where mt1 become mt3 and mt2 become mt4.
mt1 * mt2 -> mt3 + mt4 [prob]; the complex mt1 / mt2 dissociates with probability prob and mt1 become mt3 and mt2 become mt4.
mt1 * mt2 -> mt3 * mt4 [prob]; the complex mt1 / mt2 reacts with probability prob to transform mt1 to mt3 and mt2 to mt4.

Each molecule type of the left side of a rule can be more specific than simply the species name. The binding context can be expressed with this syntax:

mt an instance of molecule type mt, bound or not to any other molecule
{mt1}mt an instance of molecule type mt which is already bound to a instance of molecule type mt1
{~mt1}mt  an instance of molecule type mt which is not bound to a instance of molecule type mt1

Enzymatic reactions

A specific syntax has been implemented to model enzymatic reactions, allowing to specify the kinetics with the usual constants Km and Kcat, and units µM and mM. For example:
    geometry = 60:60;

    molecule   GOD;    // Glucose oxydase. Km = 30 mM, Kcat = 337
    species    gluc, h2o2;

    GOD (gluc -> h2o2) Km = 30 mM; Kcat = 337;
To implement this kind of reaction, HSIM use 3 standard rules and compute their probabilities to match the Km and Kcat values:
    GOD   + gluc -> GODgl       [0.04884]
    GODgl        -> GOD + gluc  [0.8]
    GODgl        -> GOD + h2o2  [0.0674]