Python Dynamic analysis of biochemical NetwOrks (PyDyNo) is an open source python library for the analysis of signal execution in network-driven biological processes. PyDyNo supports the analysis of PySB and SBML models.
Signal execution modes emerge in biochemical reaction networks calibrated to experimental data
Oscar O. Ortega*, Mustafa Ozen*, Blake A. Wilson, James C. Pino, Michael W. Irvin, Geena V. Ildefonso, Shawn P. Garbett, Carlos F. Lopez
iScience 2024; doi: 10.1016/j.isci.2024.109989
The paper can be accessed here
Jupyter notebooks with the code to reproduce the paper figures can be found here
> pip install pydyno
> pip install git+git:https://github.com/LoLab-VU/pydyno.git
- Download and extract pydyno
- Navigate into the pydyno directory
- Install (Python is necessary for this step):
> python setup.py install
import pydyno
import numpy as np
from os.path import dirname, join
from IPython.display import Image
from pydyno.examples.double_enzymatic.mm_two_paths_model import model
from pydyno.visualize_simulations import VisualizeSimulations
from pydyno.discretization import PysbDomPath
from pydyno.visualize_discretization import visualization_path
from pysb.simulator import ScipyOdeSimulator
# import calibrated parameters
module_path = dirname(pydyno.__file__)
pars_path = join(module_path, "examples", "double_enzymatic", "calibrated_pars.npy")
pars = np.load(pars_path)
# define time for the simulation and simulate model
tspan = np.linspace(0, 100, 101)
sim = ScipyOdeSimulator(model, tspan=tspan).run(param_values=pars[:100])
vt = VisualizeSimulations(model, sim, clusters=None)
vt.plot_cluster_dynamics(components=[5])
# This saves the figure in the local folder with the filename comp0_cluster0.png
dp = PysbDomPath(model, sim)
signatures, paths = dp.get_path_signatures('s5', 'production', depth=2, dom_om=1)
signatures.sequences.head()
signatures.dissimilarity_matrix()
signatures.silhouette_score_agglomerative_range(4)
# Select the number of cluster with highest silhouette score
signatures.agglomerative_clustering(2)
# Plot signatures
signatures.plot_sequences()
# File is saved to the local directory with the filename modal.png
paths
{2: [OrderedDict([('s5', [['s3'], ['s4']])]),
OrderedDict([('s3', [['s0', 's1']]), ('s4', [['s0', 's2']])])],
1: [OrderedDict([('s5', [['s4']])]), OrderedDict([('s4', [['s0', 's2']])])],
0: [OrderedDict([('s5', [['s3']])]), OrderedDict([('s3', [['s0', 's1']])])]}
Graphviz is necessary to obtain these visualizations
visualization_path(model,
path=paths[0],
target_node='s5',
type_analysis='production',
filename='path_0.png')
# Visualization is saved to local directory with the filename path0.png
visualization_path(model,
path=paths[1],
target_node='s5',
type_analysis='production',
filename='path_1.png')
# Visualization is saved to local directory with the filename path1.png
visualization_path(model,
path=paths[2],
target_node='s5',
type_analysis='production',
filename='path_2.png')
# Visualization is saved to local directory with the filename path2.png