biocircuits.gillespie_ssa

biocircuits.gillespie_ssa(propensity_func, update, population_0, time_points, return_time_points=False, size=1, args=(), n_threads=1, progress_bar=False)

Uses the Gillespie stochastic simulation algorithm to sample from probability distribution of particle counts over time.

Parameters:
  • propensity_func (function) – Function with call signature `propensity_func(propensities, population, t, *args) that takes the current propensities and population of particle counts and updates the propensities for each reaction. It does not return anything.

  • update (ndarray, shape (num_reactions, num_chemical_species)) – Entry i, j gives the change in particle counts of species j for chemical reaction i.

  • population_0 (array_like, shape (num_chemical_species)) – Array of initial populations of all chemical species.

  • time_points (array_like, shape (num_time_points,)) – Array of points in time for which to sample the probability distribution.

  • size (int, default 1) – Number of trajectories to sample per thread.

  • args (tuple, default ()) – The set of parameters to be passed to propensity_func.

  • n_threads (int, default 1) – Number of threads to use in the calculation.

  • progress_bar (str or bool, default False) – If True, use standard tqdm progress bar. If ‘notebook’, use tqdm.notebook progress bar. If False, no progress bar.

Returns:

  • if return_time_points is False –

    samplesndarray

    Entry i, j, k is the count of chemical species k at time time_points[j] for trajectory i. The shape of the array is (size*n_threads, num_time_points, num_chemical_species).

  • if return_time_points is True –

    sampleslist of 2d Numpy arrays

    samples[i][j,k] is the count of chemical species k at the jth time point for trajectory i.

    timeslist of 1d Numpy arrays

    Entry i corresponds to a trajectory. times[i][j] is the time for the transition that brought the simulation to a count given by samples[i][j,:].