Skip to main content

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 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

See the contributing section

Authors

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)

Source distribution for modelgraph 1.1.0
File Size Uploaded
modelgraph-1.1.0.tar.gz 9.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for modelgraph 1.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page