Skip to main content

Tool for extracting dependency graphs from gotran ODE models

Project description

codecov CI github pages pre-commit.ci status

modelgraph

A tool for visualizing dependencies between different components of your model.

Motivation

Assume you have some model, represented as a system of ODEs with potentially several intermediation expression. For example in the classical Hodgkin Huxley model of the squid axon from 1952 we have the following expressions

dV_dt = -(-i_Stim + i_Na + i_K + i_L)/Cm
i_Na = g_Na*m**3*h*(V - E_Na)

From this we can deduce that i_Na depends on the parameter g_Na, and since dV_dt depends on i_Na it also depends (indirectly) on the parameter g_Na.

In modelgraph we can visualize this dependency using the following code snippet

from modelgraph import DependencyGraph
import gotran

# Load ode using gotran
ode = gotran.load_ode("hodgkin_huxley_squid_axon_model_1952_original.ode")
# Build dependency graph
graph = DependencyGraph(ode)
# Get the components that depends on g_Na (we call this inverse dependents)
G = graph.inv_dependency_graph("g_Na")
# Visualize using matplotlib (python -m pip install matplotlib)
import matplotlib.pyplot as plt
nx.draw(G, with_labels=True, font_size=10, node_size=2000)
plt.savefig("g_Na_mpl.png")

_

# Or using pydot (python -m pip install pydot)
P = nx.nx_pydot.to_pydot(G)
P.write_png("g_Na_pydot.png")

_

It is also possible to go the other way around, i.e if you want to look at e.g dV_dt and see that it depends on

# Visualize what dV_dt depdens on
G_dV_dt = graph.dependency_graph("dV_dt")

nx.draw(G_dV_dt, with_labels=True, font_size=10, node_size=2000)
plt.savefig("dV_dt_mpl.png")

P_dV_dt = nx.nx_pydot.to_pydot(G_dV_dt)
P_dV_dt.write_png("dV_dt_pydot.png")

Here we only display the graph pydot since the matplotlib version seems to be a bit messy if the graph becomes too large

_

Installation

Install with pip

python3 -m pip install modelgraph

GUI

There is also a graphical user interface. To use this you need to install streamlit

python -m pip install streamlit

You can run the the gui by passing in the .ode file as a command line argument e.g

python -m modelgraph demo/hodgkin_huxley_squid_axon_model_1952_original.ode

This will start a streamlit server, and the GUI is now hosted on http://localhost:8501

_

Documentation

Documentation is hosted at http://computationalphysiology.github.io/modelgraph.

Automated test

Tests are provided in the folder tests. You can run the tests with pytest

python3 -m pytest tests -vv

Contributing

See the contributing section

Authors

License

MIT

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

modelgraph-1.0.1.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

modelgraph-1.0.1-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file modelgraph-1.0.1.tar.gz.

File metadata

  • Download URL: modelgraph-1.0.1.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.2

File hashes

Hashes for modelgraph-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a050d65aa62a9ad79e28dcfbfcad45a881884a97f161cc310281dedcc49c4b64
MD5 2bf151f34eaede28d505ba7fc48b2f08
BLAKE2b-256 28e339a7aaf4304b01362370cd2537dbe1037556b3852212e9d2454bf0cba256

See more details on using hashes here.

File details

Details for the file modelgraph-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: modelgraph-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.2

File hashes

Hashes for modelgraph-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fad2c396a2085626c98b5acb87dcf83269585d327ef173101fa7f3180620bef7
MD5 75f6a3e4c47dfc04ab9fb73be5c83bf2
BLAKE2b-256 1faef544cb06d6f6fa47110202602c768d7bb5d70cbf01c636314183e8d16432

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 Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page