# Welcome

This is version 1.10 of Cain, developed by Sean Mauch, , at the Center for Advanced Computing Research, at the California Institute of Technology.

Cain performs stochastic and deterministic simulations of chemical reactions. It can spawn multiple simulation processes to utilize multi-core computers. It stores models, methods, and simulation output (populations and reaction counts) in an XML format. In addition, SBML models can be imported and exported. The models and methods can be read from input files or edited within the program.

The GUI (Graphical User Interface) is written in Python and uses the wxPython toolkit. Most of the solvers are implemented as command line executables, written in C++, which are driven by Cain. This makes it easy to launch batch jobs. It also simplifies the process of adding new solvers. Cain offers a variety of solvers:

- Gillespie's direct method.
- Gillespie's first reaction method.
- Gibson and Bruck's next reaction method.
- Tau-leaping.
- Hybrid direct/tau-leaping.
- ODE integration.

The reactions may have mass-action kinetic laws or arbitrary propensity functions. For the latter, custom command line executables are generated when the simulations are launched. For the former one has the choice of generating a custom executable or of using one of the built-in mass-action solvers. Compiling and launching the solvers is done internally; you do not need to know how to write or compile programs. However, to use the custom executables your computer must have compiler software. Without a compiler you can only simulate systems with mass-action kinetics.

In addition to the high performance solvers written in C++, Cain has solvers implemented in Python. These are much slower than the other solvers, but are able to simulate events.

Once you have run a simulation to generate trajectories (possible realizations of the system) you can visualize the results by plotting the species populations or reactions counts. You can also view the output in a table or export it to a spreadsheet.

If you are learning about stochastic simulations, I recommend that you start by reading Stochastic Approaches for Systems Biology by Mukhtar Ullah and Olaf Wolkenhauer and Stochastic Modelling for Systems Biology by Darren Wilkinson. Note that there is a chapter in this manual devoted to examples from the former.