multimodars: A Rust-powered toolkit for multi-modality cardiac image fusion and registration

multimodars: A Rust-powered toolkit for multi-modality cardiac image fusion and registration - Published in JOSS (2026)

https://github.com/yungselm/multimoda-rs

Science Score: 87.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software
Last synced: 21 days ago · JSON representation

Repository

A high‑performance, Rust‑accelerated toolkit for multi‑modality cardiac image fusion and registration

Basic Info
Statistics
  • Stars: 5
  • Watchers: 0
  • Forks: 5
  • Open Issues: 2
  • Releases: 2
Created 11 months ago · Last pushed 23 days ago
Metadata Files
Readme Changelog Contributing License Roadmap

README.md

multimoda-rs logo

PyPI License Docs Tests and Build status DOI

"One package to fuse them all."
The Lord of the Rings (probably)

A high‑performance, Rust‑accelerated toolkit for multi‑modality cardiac image fusion and registration ﮩ٨ـﮩﮩ٨ـ♡ﮩ٨ـﮩﮩ٨ـ.


Overview

multimoda-rs aligns and fuses diverse cardiac imaging modalities — IVUS, OCT and CCTA — into unified high-resolution 3D models. Originally developed to quantify dynamic lumen deformation in coronary artery anomalies (CAAs), it is equally applicable to longitudinal studies (e.g., pre/post-stenting) and general coronary artery disease workflows. The Rust backend parallelizes computationally intensive registration steps for speeds well beyond pure Python.

Key Features

  • Intravascular Registration: align pullback sequences (rest/stress, diastole/systole) using Hausdorff distance on vessel contours and catheter centroids; four modes: full, double-pair, single-pair, single.
  • Centerline Alignment: register intravascular geometries onto a CCTA-derived centerline via three-point landmark or manual rotation.
  • CCTA Fusion: automatically label CCTA geometries by vessel region and morph them to match intravascular measurements.
  • Flexible Input: accepts CSV files (AIVUS format) or raw NumPy arrays.

Installation

bash pip install multimodars

Optional extras:

bash pip install "multimodars[viz]" # mesh visualisation (pyglet) pip install "multimodars[meshlab]" # MeshLab integration

For building from source or the full developer setup (tests, linting, docs), see the Installation guide.

Quick Example

Checkout our Documentation for in-depth explanations of the functionality and preloaded notebooks including 3D plots. Otherwise clone the repo to follow along the different examples:

```python import multimodars as mm import numpy as np

Align four intravascular phases (rest-dia, rest-sys, stress-dia, stress-sys)

rest, stress, dia, sys, _ = mm.fromfilefull( "examples/data/ivusrest", # inputpathab "examples/data/ivusstress", # inputpathcd writeobj=True, outputpathab="output/rest", outputpathcd="output/stress", outputpathac="output/diastole", outputpath_bd="output/systole", )

Align geometry onto a CCTA-derived centerline

clraw = np.genfromtxt("examples/data/centerlineraw.csv", delimiter=",") centerline = mm.numpytocenterline(clraw) alignedpair, clresampled = mm.alignthreepoint( centerline, rest, aorticrefpt=(12.2605, -201.3643, 1751.0554), upperrefpt=(11.7567, -202.1920, 1754.7975), lowerrefpt=(15.6605, -202.1920, 1749.9655), write=True, outputdir="output/aligned", ) ```

Pipeline

1. Intrapullback alignment — frames within each pullback are co-registered to remove cardiac-motion artefacts, yielding clean diastolic and systolic geometries:

Dynamic lumen changes

2. Inter-pullback alignment — registered pullbacks (rest vs. stress, diastole vs. systole) are aligned against each other to reveal stress-induced and pulsatile deformation:

Stress-induced diastolic lumen deformation

3. CCTA labeling — the CCTA-derived geometry is automatically segmented by vessel region (aorta, RCA, LCA, intramural) to prepare it for fusion:

Initial CCTA labeling

4. CCTA–morphing — the labeled CCTA geometry is morphed along the centerline to match the high-resolution intravascular geometry:

CCTA scaling

5. CCTA/intravascular fusio — the morphed CCTA geometry is stitched to the intravascular geometry, replacing a section with a high resolution verison:

CCTA fusion

Documentation

Full documentation — installation, step-by-step tutorials, interactive (preloaded) Jupyter notebooks, and API reference — is available at multimoda-rs.readthedocs.io.

License

Distributed under the MIT License. See LICENSE for details.

Citation

Please kindly cite the following paper if you use this repository.

@article{stark2025multimodars, title = {multimodars: A Rust-powered toolkit for multi-modality cardiac image fusion and registration}, author = {Stark, Anselm W. and Ilic, Marc and Mokhtari, Ali and Mohammadi Kazaj, Pooya and Graeni, Christoph and Shiri, Isaac}, journal = {arXiv preprint arXiv:2510.06241}, year = {2025} }

Stark, Anselm W., Marc Ilic, Ali Mokhtari, Pooya Mohammadi Kazaj, Christoph Graeni, and Isaac Shiri. "multimodars: A Rust-powered toolkit for multi-modality cardiac image fusion and registration." arXiv preprint arXiv:2510.06241 (2025).

Owner

  • Name: Anselm Stark
  • Login: yungselm
  • Kind: user

JOSS Publication

multimodars: A Rust-powered toolkit for multi-modality cardiac image fusion and registration
Published
May 07, 2026
Volume 11, Issue 121, Page 10131
Authors
Anselm W. Stark ORCID
Department of Cardiology, Inselspital, Bern University Hospital, University of Bern, Switzerland, Graduate School for Cellular and Biomedical Sciences, University of Bern, Bern, Switzerland
Marc Ilic ORCID
Department of Cardiology, Inselspital, Bern University Hospital, University of Bern, Switzerland, Graduate School for Cellular and Biomedical Sciences, University of Bern, Bern, Switzerland
Ali Mokhtari ORCID
Department of Cardiology, Inselspital, Bern University Hospital, University of Bern, Switzerland, Graduate School for Cellular and Biomedical Sciences, University of Bern, Bern, Switzerland
Pooya Mohammadi Kazaj ORCID
Department of Cardiology, Inselspital, Bern University Hospital, University of Bern, Switzerland, Graduate School for Cellular and Biomedical Sciences, University of Bern, Bern, Switzerland
Christoph Gräni ORCID
Department of Cardiology, Inselspital, Bern University Hospital, University of Bern, Switzerland
Isaac Shiri ORCID
Department of Cardiology, Inselspital, Bern University Hospital, University of Bern, Switzerland
Editor
Erick Martins Ratamero ORCID
Tags
Cardiology Intravascular imaging CCTA Image Fusion Image registration

GitHub Events

Total
  • Release event: 1
  • Delete event: 11
  • Pull request event: 3
  • Fork event: 2
  • Issues event: 3
  • Watch event: 5
  • Push event: 142
  • Pull request review event: 3
  • Create event: 15
Last Year
  • Release event: 1
  • Delete event: 11
  • Pull request event: 3
  • Fork event: 2
  • Issues event: 3
  • Watch event: 5
  • Push event: 142
  • Pull request review event: 3
  • Create event: 15

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 228
  • Total Committers: 4
  • Avg Commits per committer: 57.0
  • Development Distribution Score (DDS): 0.018
Past Year
  • Commits: 228
  • Committers: 4
  • Avg Commits per committer: 57.0
  • Development Distribution Score (DDS): 0.018
Top Committers
Name Email Commits
yungselm a****k@h****m 224
pooya-mohammadi p****j@g****m 2
M.I. m****2@g****m 1
Isaac i****2@g****m 1

Issues and Pull Requests

Last synced: 21 days ago

All Time
  • Total issues: 6
  • Total pull requests: 8
  • Average time to close issues: 23 days
  • Average time to close pull requests: 4 days
  • Total issue authors: 3
  • Total pull request authors: 4
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.13
  • Merged pull requests: 7
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 6
  • Pull requests: 8
  • Average time to close issues: 23 days
  • Average time to close pull requests: 4 days
  • Issue authors: 3
  • Pull request authors: 4
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.13
  • Merged pull requests: 7
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • jonaspleyer (3)
  • crnh (2)
  • richardkoehler (1)
Pull Request Authors
  • yungselm (4)
  • cicram (2)
  • pooya-mohammadi (1)
  • jonaspleyer (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

.github/workflows/CI.yml actions
  • PyO3/maturin-action v1 composite
  • actions/attest-build-provenance v1 composite
  • actions/checkout v4 composite
  • actions/download-artifact v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v4 composite
Cargo.lock cargo
  • 151 dependencies
Cargo.toml cargo
pyproject.toml pypi
uv.lock pypi
  • multimodars *