Skip to main content

A python package for creating and running 0D models of the cardiovascular system

Project description

ModularCirc

Actions Status PyPI version PyPI platforms

The scope of this package is to provide a framework for building 0D models and simulating cardiovascular flow and mechanics. Conceptually, the models can be split into three types of components:

  1. Heart chambers
  2. Valves
  3. Vessels

The current version of the published package contains two models:

  1. Naghavi model.
  2. Korakianitis Mixed model.

For other models currently under development, see the dev branch.

Setup Conda or python virtual environment

Before installation of the ModularCirc package, please setup a virtual environment using either Conda or python virtual environment.

Conda setup

Install Conda from https://docs.conda.io/projects/conda/en/stable/user-guide/install/index.html

Run:

conda create --name <yourenvname>
conda activate <yourenvname>

Proceed to installing the ModularCirc package.

Python virtual environment setup

Run python3 -m venv venv. This creates a virtual environment called venv in your base directory.

Activate the python environment: source venv/bin/activate

Proceed to installing the ModularCirc package.

Installing ModularCirc

pip install

To install the pip package:

python -m pip install ModularCirc

Installation from source:

Clone the ModularCirc GitHub repo locally.

Run:

git clone https://github.com/alan-turing-institute/ModularCirc
cd ModularCirc

After downloading the GitHub repository, from the repo directory run:

pip install ./

This will install the package based on the pyproject.toml file specifications.

Steps for running basic models

  1. Load the classes for the model of interest and the parameter object used to paramterise the said model:
from ModularCirc.Models.NaghaviModel import NaghaviModel, NaghaviModelParameters
  1. Load the ODE system solver class object:
from ModularCirc.Solver import Solver
  1. Define a dictionary for parameterising the temporal discretization:
TEMPLATE_TIME_SETUP_DICT = {
    'name'       :  'TimeTest',
    'ncycles'    :  40,
    'tcycle'     :  1.0,
    'dt'         :  0.001,
    'export_min' :  1
 }

Here, ncycles indicates the maximum number of heart cycles to run, before the simulation finishes. If the simulation reaches steady state faster than that, the simulation will end provided the number of cycles is higher than export_min. tcycle indicates the duration of the heart beat and dt represent the time step size used in the temporal discretization. These measurements assume that time is measured in seconds. If the units used are different, ensure this is done consistently in line with other parameters.

  1. Create an instance of the parameter object and used it to change the default values:
parobj = NaghaviModelParameters()

Note 4.1: the model and parameter object classes are usually defined in pairs and, as such using mismatched types may cause the simulation to behave unexpectedly or may result in a crash.

Note 4.2: the method used to parameterise components is typically dependent on the component type, see for example: set_chamber_comp, set_rc_comp or set_activation_function.

  1. Create an instance of the model:
model = NaghaviModel(time_setup_dict=TEMPLATE_TIME_SETUP_DICT, parobj=parobj)
  1. Create an instace of the solver used to peform the simulation:
solver = Solver(model=model)
solver.setup()
  1. Run the simulation
solver.solve()
  1. Extract the state variable values of interest.
v_lv = solver.model.components['lv'].V.values
p_lv = solver.model.components['lv'].P_i.values

Example values pv loops for all 4 chambers:

Example PV loops!

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

modularcirc-0.3.0.tar.gz (33.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modularcirc-0.3.0-py3-none-any.whl (37.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: modularcirc-0.3.0.tar.gz
  • Upload date:
  • Size: 33.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for modularcirc-0.3.0.tar.gz
Algorithm Hash digest
SHA256 a7133739f9ccbddb70dd099b089df1bb407d653013ef18efe1bf946b00497028
MD5 00bbd13fc9c5fc1ac9b8abc39b7df7f5
BLAKE2b-256 94ddb9f2897e74aa0bf57174549b0bc3797232fc93de6aa052900a65567d17b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for modularcirc-0.3.0.tar.gz:

Publisher: publish.yml on alan-turing-institute/ModularCirc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: modularcirc-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 37.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for modularcirc-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e5867c35b4eb6c2374d444bb3f39626dae2a4c9386f9c4cc6741414dc8d191e7
MD5 c3685f126cd5a59b233945cb891e0892
BLAKE2b-256 60f313973bd88863bc8d2593f6a19c5a1f64924f4b9e4de0358a9592badda8e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for modularcirc-0.3.0-py3-none-any.whl:

Publisher: publish.yml on alan-turing-institute/ModularCirc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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