Skip to content

Latest commit

 

History

History
162 lines (118 loc) · 5.12 KB

File metadata and controls

162 lines (118 loc) · 5.12 KB

Codacy Badge Build Status Coverage Status

PyDyNo

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.

Publications

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

Installation

From PyPI

> pip install pydyno

Installing the latest unreleased version

> pip install git+git:https://github.com/LoLab-VU/pydyno.git

Installing from source folder

  • Download and extract pydyno
  • Navigate into the pydyno directory
  • Install (Python is necessary for this step):
> python setup.py install

How to use PyDyNo

Import libraries

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

Load the calibrated parameters and simulate the model with 100 different parameter sets

# 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])

Visualize the dynamics of the model

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

png

Obtain the dominant paths for each of the simulations¶

dp = PysbDomPath(model, sim)
signatures, paths = dp.get_path_signatures('s5', 'production',                                         depth=2, dom_om=1)
signatures.sequences.head()

Obtain distance matrix and optimal number of clusters (execution modes)

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

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']])])]}

Visualize execution modes

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

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

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

png