Skip to main content

Kinetic Diagram Analysis tools

Project description

Kinetic Diagram Analysis

CI codecov DOI

Python package used for the analysis of biochemical kinetic diagrams using the diagrammatic approach developed by T.L. Hill.

WARNING: this software is in flux and is not API stable.

Examples

KDA has a host of capabilities, all beginning with defining the connections and reaction rates (if desired) for your system. This is done by constructing an NxNarray with diagonal values set to zero, and off-diagonal values (i, j) representing connections (and reaction rates) between states i and j. If desired, these can be the edge weights (denoted kij), but they can be specified later.

The following is an example for a simple 3-state model with all nodes connected:

import numpy as np
import networkx as nx
from kda import graph_utils, calculations

# define matrix with reaction rates set to 1
K = np.array(
    [
        [0, 1, 1],
        [1, 0, 1],
        [1, 1, 0],
    ]
)
# initialize an empty graph object
G = nx.MultiDiGraph()
# populate the edge data
graph_utils.generate_edges(G, K, val_key="val", name_key="name")
# calculate the state probabilities
state_probabilities = calculations.calc_state_probs(G, key="val")
# get the state probabilities in expression form
state_probability_str = calculations.calc_state_probs(G, key="name", output_strings=True)
# print results
print("State probabilities: \n", state_probabilities)
print("State 1 probability expression: \n", state_probability_str[0])

The output from the above example:

$ python example_script.py
State probabilities:
 [0.33333333 0.33333333 0.33333333]
State 1 probability expression:
 (k21*k31 + k21*k32 + k23*k31)/(k12*k23 + k12*k31 + k12*k32 + k13*k21 + k13*k23 + k13*k32 + k21*k31 + k21*k32 + k23*k31)

As expected, the state probabilities are equal because all edge weights are set to a value of 1.

Continuing with the previous example, the KDA diagrams and plotting modules can be leveraged to display the diagrams that lead to the above probability expression:

import os
from kda import diagrams, plotting

# generate the set of directional diagrams for G
directional_diagrams = diagrams.generate_directional_diagrams(G)
# get the current working directory
cwd = os.getcwd()
# specify the positions of all nodes in NetworkX fashion
node_positions = {0: [0, 1], 1: [-0.5, 0], 2: [0.5, 0]}
# plot and save the input diagram
plotting.draw_diagrams(G, pos=node_positions, path=cwd, label="input")
# plot and save the directional diagrams as a panel
plotting.draw_diagrams(
    directional_diagrams,
    pos=node_positions,
    path=cwd,
    cbt=True,
    label="directional_panel",
)

This will generate two files, input.png and directional_panel.png, in your current working directory:

input.png

3-state model input diagram

directional.png

3-state model directional diagrams

NOTE: For more examples (like the following) visit the KDA examples repository:

4-state model with leakage input diagram 5-state model with leakage input diagram 6-state model with leakage input diagram

Installation

Development version from source

To install the latest development version from source, run

git clone git@github.com:Becksteinlab/kda.git
cd kda
python setup.py install

Copyright

Copyright (c) 2020, Nikolaus Awtrey

Acknowledgements

Project based on the Computational Molecular Science Python Cookiecutter version 1.2.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kda-0.3.0.tar.gz (74.6 kB view details)

Uploaded Source

Built Distribution

kda-0.3.0-py3-none-any.whl (64.9 kB view details)

Uploaded Python 3

File details

Details for the file kda-0.3.0.tar.gz.

File metadata

  • Download URL: kda-0.3.0.tar.gz
  • Upload date:
  • Size: 74.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for kda-0.3.0.tar.gz
Algorithm Hash digest
SHA256 f11e69f175f4548f3e1e987bb943546a7785cc30cbc44d5c0461837b56c6efa5
MD5 61364b1f6bfe2df21bc4f5efe66fd36a
BLAKE2b-256 f3e51fb1952561f1bec1208eaa0c4f91ebbcde3fe3a37823d20e3ec3c5b0fc88

See more details on using hashes here.

File details

Details for the file kda-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: kda-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 64.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for kda-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14e144928e82379fb401e47a4d2a6a8aaf996d69f1eab7ecde92cd772e0142a6
MD5 071a296198d6cdd7796d9180c697e4e2
BLAKE2b-256 90d8436e0e94eced0248718e4a79b96fd52f9a2dff7ea006d9aae820c5d84279

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page