MCPcopy Index your code
hub / github.com/SystemsBioinformatics/stochpy

github.com/SystemsBioinformatics/stochpy @v2.5.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.5.0 ↗ · + Follow
1,183 symbols 3,011 edges 67 files 544 documented · 46%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

StochPy Stochastic modeling in Python

StochPy is a versatile stochastic modeling package which is designed for stochastic simulation of molecular control networks

  • File releases 2.3 and earlier: http://sourceforge.net/projects/stochpy
  • File releases 2.4+: PyPI and Github.
  • Source code: https://github.com/SystemsBioinformatics/stochpy

StochPy is open source software distributed under the BSD 3-Clause License, see LICENSE file for more details.

Documentation

Documentation can be found in the user guide (see Documentation directory or in sourceforge)

Installation

The following software is required before installing StochPy (see user guide for more details):

Install StochPy and dependencies with PIP using the following command (in your StochPy Python virtual environment):

pip install numpy scipy matplotlib python-libsbml ipython stochpy

If you are using Anaconda, create a custom conda environment for StochPy, for example:

conda create -n "stochpy10" python=3.10 pip numpy scipy matplotlib sympy ipython

activate your new environment, install StochPy (only required once per environment) and start ipython.

conda activate stochpy10
pip install stochpy
ipython

Linux/MAC OS/Cygwin from source.

In the directory where you downloaded/cloned the StochPy source, for example, the git main branch:

pip install .

Windows

Use the available windows installer or use PyPI (described above).

Getting Started

You can run ipython and import stochpy:

import stochpy
smod = stochpy.SSA()
# Run the demo
stochpy.Demo()

Basic Simulation with the Direct method

smod.DoStochSim(IsTrackPropensities=True)
smod.data_stochsim.simulation_endtime
smod.data_stochsim.simulation_timesteps
smod.GetWaitingtimes()
smod.PrintWaitingtimesMeans()

Do some Plotting

smod.PlotSpeciesTimeSeries()
smod.PlotWaitingtimesDistributions()
smod.PlotPropensitiesTimeSeries()

Write data to a text file

smod.Export2File()
smod.Export2File(analysis='distribution')
smod.Export2File(analysis='distribution',datatype='species')
smod.Export2File(analysis='mean',datatype='species')
smod.Export2File(analysis='std',datatype='species')
smod.Export2File(analysis='autocorrelation',datatype='species')

Show the means from the data of 3-th trajectory

smod.DoStochSim(trajectories=3) # multiple trajectories
smod.data_stochsim.simulation_trajectory
smod.PrintSpeciesMeans()
smod.PrintSpeciesStandardDeviations()

Switch to data from trajectory 1 and show the means of each species

smod.GetTrajectoryData(1)
smod.PrintSpeciesMeans()
smod.PrintSpeciesStandardDeviations()

Do one long simulation

smod.DoStochSim(trajectories=1,end=1000000,mode='steps')
smod.PrintSpeciesMeans()
smod.PrintSpeciesStandardDeviations()

Plot the PDF for different bin sizes

smod.PlotSpeciesDistributions()
smod.PlotSpeciesDistributions(bin_size=5)  # larger bin size
smod.PlotSpeciesDistributions(bin_size=10) # again a larger bin size
smod.Export2File(analysis='distribution',datatype='species')

Usage of the Reload Function: Ksyn = 20, kdeg = 0.2

smod.ChangeParameter('Ksyn',20.0)
smod.ChangeParameter('Kdeg',0.2)
smod.DoStochSim()
smod.PrintSpeciesMeans()   # should be ~Ksyn/Kdeg

Use another model to show the Interpolation features

smod.Model('dsmts-001-01.xml.psc')
smod.DoStochSim(trajectories=1000,end=50,mode='time')
smod.GetRegularGrid(npoints=51)
smod.PlotAverageSpeciesTimeSeries()
smod.PrintAverageSpeciesTimeSeries()
smod.Export2File(datatype='species',analysis='timeseries',IsAverage=True)

Test each method for different models:

smod.Model('Autoreg.psc')
smod.DoStochSim(trajectories=1,end=1000,mode='steps')
smod.Method('NextReactionMethod')
smod.DoStochSim(trajectories=1,end=1000,mode='steps')
smod.data_stochsim.species
smod.PlotWaitingtimesDistributions()
smod.Method('FirstReactionMethod')
smod.DoStochSim(trajectories=1,end=1000,mode='steps')
smod.Method('TauLeaping')
smod.DoStochSim(trajectories=1,end=1000,mode='steps')
smod.Model('DecayingDimerizing.psc')
smod.DoStochSim(method = 'Direct',trajectories=1,end=50,mode='time')
smod.DoStochSim(method = 'NextReactionMethod',trajectories=1,end=50,mode='time')
smod.DoStochSim(method = 'FirstReactionMethod',trajectories=1,end=50,mode='time')
smod.PlotWaitingtimesDistributions()
smod.DoStochSim(method = 'TauLeaping',trajectories=1,end=50,mode='time',epsilon=0.03)  # Should outperform all other implementations
smod.PlotSpeciesTimeSeries()
#smod.PlotWaitingtimesDistributions()   # Should give an error
smod.Model('chain500.psc')
smod.DoStochSim(method = 'Direct',trajectories=1,end=10000,mode='steps')
smod.DoStochSim(method = 'NextReactionMethod',trajectories=1,end=10000,mode='steps') # should outperform the direct method and all other implementations

Use the Next Reaction Method to test a model with a time event

smod.Model('dsmts-003-03.xml.psc')
smod.DoStochSim(method = 'NextReactionMethod')
smod.DoTestsuite()

Use the First Reaction method to test a model with a concentration event

smod.Model('dsmts-003-04.xml.psc')
smod.DoStochSim(method = 'FirstReactionMethod')
smod.DoTestsuite()

Volume Models

smod.Model('dsmts-001-11.xml.psc')
smod.DoStochSim(method = 'Direct',trajectories=1000,end=50,mode ='time')
smod.PrintAverageSpeciesTimeSeries()

Author information

Timo R. Maarleveld, Brett G. Olivier, and Frank J. Bruggeman Centrum Wiskunde en Informatica, Amsterdam, Netherlands VU University, Amsterdam, Netherlands

e-mail: tmd200@users.sourceforge.net e-mail: b.g.olivier@vu.nl

Publication

StochPy: A Comprehensive, User-Friendly Tool for Simulating Stochastic Biological Processes http://dx.doi.org/10.1371/journal.pone.0079345

Licence

Copyright (c) 2011-2025, Timo R. Maarleveld, Brett G. Olivier, and Frank J. Bruggeman Vrije Universiteit Amsterdam. All rights reserved.

StochPy is open source software distributed under the BSD 3-Clause License see LICENSE file for more details.

Core symbols most depended-on inside this repo

write
called by 256
stochpy/core2/PyscesCore2Interfaces.py
update
called by 95
stochpy/tools/Progress_bar.py
get
called by 88
stochpy/core2/PyscesCore2.py
pop
called by 73
stochpy/tools/Priority_queue.py
GetTrajectoryData
called by 43
stochpy/modules/StochSim.py
DoStochSim
called by 42
stochpy/modules/StochSim.py
getId
called by 36
stochpy/core2/PyscesCore2Interfaces.py
error
called by 30
stochpy/lib/lex.py

Shape

Method 990
Class 112
Function 81

Languages

Python100%

Modules by API surface

stochpy/core2/PyscesCore2.py181 symbols
stochpy/lib/yacc.py119 symbols
stochpy/core2/yacc.py119 symbols
stochpy/modules/PyscesMiniModel.py84 symbols
stochpy/modules/StochPyCellDivision.py83 symbols
stochpy/modules/PyscesParse.py67 symbols
stochpy/core2/PyscesCore2Interfaces.py55 symbols
stochpy/lib/lex.py49 symbols
stochpy/core2/lex.py49 symbols
stochpy/modules/StochSim.py43 symbols
stochpy/tools/Priority_queue.py36 symbols
stochpy/modules/StochPyCellDivisionPlot.py36 symbols

For agents

$ claude mcp add stochpy \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact