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 intermediate expressions. 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 what 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 using 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
Authors
- Henrik Finsberg (henriknf@simula.no)
License
MIT
Metadata
Release files for modelgraph 1.1.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 | |
|---|---|---|---|
| modelgraph-1.1.0.tar.gz | 9.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| modelgraph-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.2 kB
Release files / modelgraph-1.1.0.tar.gz
| Download URL | modelgraph-1.1.0.tar.gz |
|---|---|
| Size | 9.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
830485bff1db413b975204afcf7a995e5d1da727c41027555232b839244a63a8
|
|
BLAKE2b-256 checksum How to use checksums |
7ad58c096d154884fe25d93399646f10239adb7148f5f34fd65802920ff19ece
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 10, 2025.
Transparency logRelease files / modelgraph-1.1.0-py3-none-any.whl
| Download URL | modelgraph-1.1.0-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0c43d3b68a245195b3c48e0041d7d853e89d3b737ae765d02a1e39b4ca83be5b
|
|
BLAKE2b-256 checksum How to use checksums |
afe902098e524a7e636548a5f3850c86153706d00e52b5765b1f7eddec742b2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 10, 2025.
Transparency log