Helfer, P. & Shultz, T.R. (2018)
Coupled Molecular Feedback Loops Maintain Synaptic Long-Term Potentiation: A Computational Model
Submitted for publication

Preprint: https://arxiv.org/pdf/1712.00683.pdf

This implementation by Peter Helfer to whom questions should be addressed.
peter.helfer@mail.mcgill.ca


----------------------------------------
This directory tree contains three subdirectories:

gil:     software for running the L-LTP model
lib:     a C++ library of utility functions used by gil
include: C++ include file used by gil

The 'gil' directory contains:

- Source code for 'gil', a C++ program that implements the Gillespie
  algorithm for simulation of a network of molecular reactions.

- Several .gil files, configuration files that specify various simulations

- Python scripts, bash scripts and a few C++ programs for invoking gil,
  plotting results etc.

----------------------------------------

To build and run the software, you will need a GNU/Linux system with the GNU
Make system, a C++ compiler, the Python interpreter and GNUPlot.

On a Debian Linux system, the required utilities can be installed like this:

$ sudo apt-get install build-essential
$ sudo apt-get install gnuplot

----------------------------------------
Building gil

cd into the lib directory and type 'make'.
cd into the gil directory and type 'make'.

----------------------------------------
Running gil, an example invocation:

$ ./multi_lltp -v -g lltp_induction.gil 5

This will invoke the multi_lltp script, telling it to run gil 5 times using
the configuration file lltp_induction.gil and plot the simulation results as
mean molecule counts with bands indicating standard deviation.

The command "./multi_lltp -h" will show other available options.

Another example: to run all defined simulations (there are eleven of them)
10 times each and plot the results with means and standard deviation, type:

$ ./multi_lltp -v 10

---------------------------------------
Output files

Unless you specify a directory using the -d option, multi_lltp will
create an output directory using the current date and time as name,
e.g. out/2018_03_28__19_51_26. A subdirectory of the output directory
is then created for each simulation, e.g. 'lltp_induction' in the
first example above. Each execution of gil produces an output file
with a name like 0.out, 1.out, etc. These files contain columns of
counts for each simulated molecule species. The first column indicates
simulated time in minutes.

In addition to the output files from individual gil runs, multi_lltp
generates files containing the means, standard deviation and standard error
from all the runs (avg.out, stdevs.out, sterr.out). Selected columns from
these files are collected in a file called stats.out, which is then used as
input to the plot utility gilplot (described below).

To plot the results of a previous invocation of multi_lltp, use the -d option
to specify an existing output directory, for example:

./multi_lltp -v -d out/2018_03_28__19_51_26

---------------------------------------
Configuration file format

A .gil configuration file specifies the molecule species, reactions and other
parameters for a simulation.

Comments: Any text following a # character is a comment.

Directives: each non-comment line is a directive. The following directives
are supported:

include:  read lines from the specified file
define:   define a macro. Macros can be defined recursively and may contain
          arithmetic expressions
molecule: define a molecule species (name and initial count)
reaction: define a reaction (id, formula, reaction constant and description)
	  A '*' in a reaction id will be replaced by a unique number.
volume:   simulated reaction volume
idletick: when no reaction is possible, the simulation clock increments by this
          amount (minutes) until some event fires or the simulation ends. 
setCount: set a molecule count at a specified time
setInhib: set inhibition level for a specified reaction at a specified time

Please see the provided .gil files for example usages of the directives.

---------------------------------------
Plotting

The 'plot' utility is a wrapper around gnuplot. It accepts a file of plot
data, such as the ones produces by gil or by multi_lltp, and supports a
number of options. Type the command "./plot --help" to see the supported
options.

The 'gilplot' utility is a wrapper around 'plot', specialized for plotting
the results of gil simulations. Type "./gilplot --help" to see the supported
options.

---------------------------------------
Miscellaneous

'columns' is a utility that selects columns from a text file and prints them
          in a specified order. For example, the command
          './columns -f myfile.text t P A_I PP' will extract the columns with
          headers t, P, A_I and PP from myfile.txt.

'mat'     is a utility that applies operations to matrices given as input files.
	  All input files must contain the same number of rows and columns. Type
	  './mat --help' to see supported operations and options. 

---------------------------------------