Kinetic Diagram Analysis
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
directional.png
NOTE: For more examples (like the following) visit the KDA examples repository:
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.
Metadata
Release files for kda 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kda-0.3.0.tar.gz | 74.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kda-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 139.5 kB
Release files / kda-0.3.0.tar.gz
| Download URL | kda-0.3.0.tar.gz |
|---|---|
| Size | 74.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f11e69f175f4548f3e1e987bb943546a7785cc30cbc44d5c0461837b56c6efa5
|
|
BLAKE2b-256 checksum How to use checksums |
f3e51fb1952561f1bec1208eaa0c4f91ebbcde3fe3a37823d20e3ec3c5b0fc88
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.11.8
|
Release files / kda-0.3.0-py3-none-any.whl
| Download URL | kda-0.3.0-py3-none-any.whl |
|---|---|
| Size | 64.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
14e144928e82379fb401e47a4d2a6a8aaf996d69f1eab7ecde92cd772e0142a6
|
|
BLAKE2b-256 checksum How to use checksums |
90d8436e0e94eced0248718e4a79b96fd52f9a2dff7ea006d9aae820c5d84279
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.11.8
|