Skip to main content

PurkinjeUV

PyPI version Test License Docs

PurkinjeUV is a modular Python package for constructing, simulating, and exporting fractal-based Purkinje networks over anatomical or idealized cardiac surface meshes. It offers a flexible architecture for working with geometries via OBJ, VTK, and GMSH, and supports UV mapping, eikonal solvers, and export utilities.

Table of Contents

Features

  • Fractal-based generation of Purkinje networks constrained to 3D surface meshes
  • Fast Iterative Method (FIM)-based eikonal solver for activation time simulation
  • Surface processing tools, including Laplacian-based UV mapping
  • VTK and IGB utilities for visualization and interoperability with scientific tools
  • Fully modular and scriptable, suitable for both research and reproducible simulation pipelines

Installation

Install the latest release from PyPI:

pip install purkinje-uv

Documentation

The full documentation is available at:

https://ricardogr07.github.io/purkinje-uv/main

Getting Started

See Getting Started Guide for full documentation.

# Generate a fractal tree and save it to VTU (no activation required)

from pathlib import Path
import numpy as np

from purkinje_uv import FractalTreeParameters, FractalTree, PurkinjeTree

# Parameters: FractalTree reads the mesh from p.meshfile
p = FractalTreeParameters(
    meshfile="data/sphere.obj",
    init_node_id=0,
    second_node_id=1,
    l_segment=0.01,   # step size on the surface
    init_length=0.1,
    length=0.1,
    branch_angle=0.15,
    w=0.1,
    N_it=10,
)

# Grow the tree on the surface (UV domain)
ft = FractalTree(params=p)
ft.grow_tree()

# Wrap as a PurkinjeTree and save
out = Path("output")
out.mkdir(parents=True, exist_ok=True)

purk = PurkinjeTree(
    nodes=np.asarray(ft.nodes_xyz),
    connectivity=np.asarray(ft.connectivity),
    end_nodes=np.asarray(ft.end_nodes),
)

purk.save(str(out / "fractal_tree.vtu"))

Visualization:

import pyvista as pv

tree = pv.read("output/fractal_tree.vtu")
tree.plot()

Runnable notebooks:

  • examples/demo_obj/demo_obj_fractal_tree.ipynb
  • examples/demo_gmsh/demo_fractal_tree_biventricular.ipynb

Requirements

  • Python ≥ 3.10
  • Optional:
    • pyvista for visualization
    • cupy for GPU acceleration (used in FIM solver)
    • gmsh and cardiac-geometries for realistic biventricular geometries

Attributions and Credits

Based on the work by Francisco Sahli:

References: Sahli Costabal, F., Yao, J., & Kuhl, E. (2016). Predicting the cardiac toxicity of drugs using a hybrid multiscale model of the heart. Journal of the Mechanical Behavior of Biomedical Materials, 62, 217–231. DOI: 10.1016/j.jmbbm.2016.05.004

Maintained by Ricardo García Ramírez (July 2025)

Citation

@article{sahli2016hybrid,
  title={Predicting the cardiac toxicity of drugs using a hybrid multiscale model of the heart},
  author={Sahli Costabal, Feras and Yao, Jiajian and Kuhl, Ellen},
  journal={Journal of the Mechanical Behavior of Biomedical Materials},
  volume={62},
  pages={217--231},
  year={2016},
  publisher={Elsevier}
}

@misc{purkinjeuv2025,
  author = {Ricardo García Ramírez},
  title = {PurkinjeUV: Modular Fractal Purkinje Generator on Surface Meshes},
  year = {2025},
  howpublished = {\url{https://github.com/ricardogr07/purkinje-uv}}
}

License

Released under the MIT License. See LICENSE.

Contributing

See CONTRIBUTING.md for guidelines.

Release files for purkinje-uv 0.4.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 purkinje-uv 0.4.0
File Size Uploaded
purkinje_uv-0.4.0.tar.gz 48.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for purkinje-uv 0.4.0
File Interpreter ABI Platform
purkinje_uv-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size:98.8 kB

Release files / purkinje_uv-0.4.0.tar.gz

Download URL purkinje_uv-0.4.0.tar.gz
Size 48.5 kB
Tags Source
SHA-256 checksum
How to use checksums
96954cd0c43ff0eb62e2468f5d48d31e8683fa4e47df6703022f50683f2b5a07
BLAKE2b-256 checksum
How to use checksums
c81e4b3a6e1fa1f52d541d2a3d9b77609ddb9077c3d1797c7404844a7bc3b2c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

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 Aug 22, 2025.

Transparency log

Release files / purkinje_uv-0.4.0-py3-none-any.whl

Download URL purkinje_uv-0.4.0-py3-none-any.whl
Size 50.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8fbdebbf0580890ab30291ba47f31d5c1208401e213f4e69afe51e48af8ea57c
BLAKE2b-256 checksum
How to use checksums
9d4fa2311bd77f5681151b8e079ca7add53010da4e610dc574785a1814b53c30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

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 Aug 22, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

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