[[SBMLSSABridge: A bridge library to connect SSAlib and SBML]]

This package (SBMLSSABridge) is a library which behave as a bridge
between SSAlib and SBML. It imports SBML (up to Level 2 version 4) as
a model description language and export "Problem" data structre,
which is a native data structure for SSAlib.
This package also provides stochastic simulator which accepts SBML
as an input. The simulation engine is provided by SSAlib.

[Build]
 * Before building SBMLSSABridge, please install libsbml-2.4.x.
 * And then, please check out libssa code through git.

% cd libssa
% unzip /path/to/SBMLSSABridge-20090824.zip
% vi src/libssa.c
   ... modify libssa.c so as to fit with the path of your Cain and gnuplot.
% cd sbml
% make  (for Linux)
% make -f Makefile.macosx (for MacOSX)

[Files you get]
By the above build step, following files will be created.
 * Libraries:
  - libssa.so.0 or libssa.0.dylib (shared library for libssa)
  - libssa-sbml.so.0 or libssa-sbml.0.dylib (shared library for SBMLSSABridge)

 * Executables:
  - createPSSP  (will create SBML file which contains the same model in j.c)
  - j-sbml   (SBML supported version of j.c which uses libssa-sbml)
  - ssaSBMLSolver (which reads SBML, and execute stochastic
simulation, and then generates a plot)

[Example]
 * createPSSP
 % ./createPSSP
   ... will generate pssp-ca.xml in SBML Level2 Version4.
 % ./createPSSP -l2 -v1 pssp-ca-l2v1.xml
   ... will generate pssp-ca.xml in SBML Level2 Version1.

 * j-sbml
 % ./j-sbml pssp-ca.xml
   ... will generate a plot. This result must be the same with j.c

 * ssaSBMLSolver
 % ./ssaSBMLSolver -s 0 -e 250 -i 0.1 dsmts/dsmts-001-01.xml
  ... simulate DSMTS model (dsmts/dsmts-001-01.xml) as the
      start time = 0, end time = 250, interval = 0.1.

SBMLSSABridge can export SBML from "Problem" in libssa, with specified
SBML Level and Version. Also, it can import SBML and generate libssa
"Problem". We have tested importing CaMK2 model and DSMTS models, and
calling the solver for the simulation.

Here is the detailed information on our implementation:
Our library has 3 functions as an API:

 * Problem* loadSBML(const string &filename);
 * bool saveSBML(const string &filename, int level, int version);
 * SSATrajectory* runSimulation(SSASolverType_t solverType, SSATimeLine *timeLine);

[loadSBML()]
loadSBML() will import SBML, and returns a Problem* .
 * Supports InitialAssignmentRules for Species
 * Supports AssignmentRules for Species' InitialAmount
 * Supports AssignmentRules for Parameter, if it is a constant value
 * Can import SBML which contains Species' concentration
   (will automatically convert concentration to # of molecules)
 * Supports stoichiometry for Reaction
 * Also supports StoichiometryMath
 * Supports "mole" and "item" for substanceUnits.
 - Doesn't support Events

[saveSBML()]
saveSBML() will export SBML from a given Problem* with specified SBML
level and version.

[runSimulation()]
runSimulation() will execute stochastic simulation through libssa by
given solverType and timeLine.
