Added builder class (from tbidbaxlipo)
Added debug message to bng.py output
Option to specify output file basename in bng/run_ssa
Left a colon off the if block
Merge remote-tracking branch 'pysb/master'
Merge pull request #1 from alubbock/master

Continuous integration support
keep changes to do_export from leaking

The reset of do_export needs to go *after* the model load, not before.
otherwise if the last model to be loaded changes it to False then that
state will leak out into subsequent tests.
keep noisy distutils output from breaking doctests
as_complex_pattern converts Monomers

This prevents all constructors that depend on as_reaction_pattern
or as_complex_pattern to take MonomerPattern from throwing an error
when given a Monomer instead.

In particular, this resolves issue number #88, in which the Observable
constructor would error when a Monomer was used instead of a
MonomerPattern.
Adding cupSODA.py to the 'tools' directory
Some small changes to integrate.py, including adding a 'verbose' option
to the Solver class and odesolve() method.
Changes to bng.py: 1) Added a set_bng_path() method to allow the user to
specify where the BNG2.pl script is. 2) Added ‘verbose’ options to
generate_network() and generate_equations() that, if True, will print
the output from BNG2.pl to the screen. This is useful for monitoring the
progress of network generation, which can be lengthy for large models.
3) Added double underscores to the beginning of species names in
generate_equations() (e.g., __s1 instead of s1). This will minimize the
chance of conflicts with names of parameters in the model.
Improved how cupSODA.py handles volumes. If a volume is passed through
the 'vol' argument, the code will now automatically set the
concentration (population) of the '__source()' species to
6.0221413e23*vol. This is necessary because for models defined in number
units cupSODA automatically divides all of the populations by this
factor. This ensures, therefore, that the concentration of '__source()'
equals 1. In general, however, it's advisable not to use this feature.
If a volume is not provided then cupSODA will assume that the model is
in concentration units, even if it is not. Simulations will run fine and
concentrations can be recovered by the user in post-processing.
Added a ‘load_data()’ method to the cupSODA class for reading in
concentration data from file. The method takes four optional arguments:
1) ‘indir’, the directory where the files are located; 2) ‘prefix’, the
base name of the output files (e.g., “egfr” for egfr_0, egfr_1, etc.);
3) ‘which_sims’, which specifies which data files to read from; 4)
‘out_species’, which specifies which species are present in the output
files. The method is automatically called in cupSODA.run() if the
‘load_conc_data’ argument is set to True (the default). It can also be
called directly.

I included ‘which_sims’ so that a specific output, or set of outputs,
can be loaded without loading data from every simulation (there may be
thousands or more). The ‘out_species’ argument is necessary because
cupSODA allows for only a subset of species to be printed to file
(specified in the ‘cs_vector’ file). Currently, the default is to print
only the species that are involved in the observables. This can be
overridden in cupSODA.run() by setting the ‘obs_species_only’ argument
to False. If 'out_species' is not specified, an attempt will be made to
read the species indices from the 'cs_vector' file located in
'indir/__CUPSODA_FILES/'.

Also, the ‘y’, ‘yobs’, and ‘yobs_view’ arrays of the
pysb.integrate.Solver base class have been overridden as dictionaries,
where the keys are the simulation numbers (ints) and the values are the
same ndarrays as in the base class. Concentrations from simulation N can
thus be accessed through y[N], yobs[N], and yobs_view[N]. Note that
these objects are initialized as empty dictionaries and only filled for
the simulations specified in ‘which_sims’, and for the species listed in
‘out_species’, when cupSODA.load_data() is called.
Wrapped integrate.py to 80 chars
Solver's call to lambdify specifies "numpy"

Previously, lambdify would use the built-in math module's
implementations of sympy functions (such as exponentiation)
which would fail when passed numpy arrays (such as the trajectories
resulting from observables. Specifying "numpy" in the call to lambdify
indicates that the numpy implementation of sympy functions are preferred.
Modified cupSODA.load_data() to use file.readline().split() rather than
numpy.loadtxt() to read data from file. A timing analysis showed a
speedup of approximately 2x using readline().split().
Adding tyson_oscillator.py to pysb/examples
Reverting master branch to revision
b1faec28e488757ef7496319512ee3db00695a25 from Oct. 30, 2013.
Deleting cupSODA.py from master branch