In-vivo diffusion analysis (INDI)
A post-processing pipeline for in-vivo cardiac diffusion tensor imaging.
- Introduction
- Installation
- Basic Usage
- Developer installation
- Optional AI modules
- Documentation
- Troubleshooting
- License
- Acknowledgements
INDI is a Python-based post-processing pipeline for in-vivo cardiac diffusion tensor imaging (cDTI). It supports Siemens, Philips, GE and United Imaging diffusion-weighted DICOMs, plus anonymised NIFTI data. Both STEAM and spin-echo sequences are handled.
What it does:
- Image registration
- Image curation and outlier handling
- Tensor fitting
- Segmentation and LV sectorisation
- Results export (VTK, HDF5, CSV, figures)
INDI is run from the command line. When processing a dataset for the first time, user input may be required (via pop-up matplotlib windows); these selections are saved for future runs.
For more information:
- See the documentation for details on the post-processing pipeline (under development 🚧).
- See YAML settings for configuration details (under development 🚧).
INDI has been tested on:
- macOS 15 with Python 3.12
- Ubuntu 24.04 with Python 3.12
- Windows 10 with Python 3.12
Install uv and then run
uv tool install git+https://github.com/ImperialCollegeLondon/INDIFinally, you also need ImageMagick:
# mac os (from homebrew https://brew.sh/)
brew install imagemagick
# Ubuntu
sudo apt install imagemagick
# windows with winget
winget install ImageMagick.Q16-HDRI # Or download the installer from https://imagemagick.org/download/To post-process a synthetic phantom dataset with non-rigid distortions, first unzip the phantom data.
The test_phantom_cdti_dicoms folder contains a diffusion_images subfolder with simulated cDTI DICOMs. These files include noisy diffusion-weighted images with periodic non-rigid distortions, simulating a typical in-vivo scan.
INDI always looks recursively for subfolders named diffusion_images. The DICOM files must be inside a folder with this name.
Before running INDI, copy the settings_template.yaml file near your data folder. This file contains default settings for the processing pipeline. Review and adjust the parameters as needed for your dataset. More information is available in the YAML settings documentation.
In your settings.yaml file, set the start_folder option to the path containing a diffusion_images subfolder. For example:
start_folder: /path/to/test_phantom_cdti_dicomsThen, run:
indi /path/to/settings.yamlAlternatively, you can leave the start_folder field blank and specify the path using the --start_folder command-line option:
indi path/to/settings.yaml --start_folder /path/to/start/folderA video tutorial demonstrating how to run INDI with the phantom data is available below (note: the command shown in the video may be slightly outdated, but the rest of the content is still relevant):
Make sure you have git installed in your platform. Then clone the repository
git clone https://github.com/ImperialCollegeLondon/INDI
cd INDISet up the Python environment in the INDI root directory:
uv sync --group dev --group docuv run pre-commit installPre-commit will now run automatically on each commit. You can also run it manually:
uv run pre-commit run --all-filesThis helps ensure code quality and style before committing changes.
Finally install ImageMagick:
# mac os (from homebrew https://brew.sh/)
brew install imagemagick
# Ubuntu
sudo apt install imagemagick
# windows with winget
winget install ImageMagick.Q16-HDRI # Or download the installer from https://imagemagick.org/download/Note
You can run INDI without activating the environment by doing uv run indi
We provide an ensemble of U-Net models trained to segment cardiac borders in STEAM data. For details, see docs/documentation.md (under development 🚧).
To use these models, install the AI dependencies with
# Developers
uv sync --group dev --group doc --extra ai
# Users
uv tool install "git+https://github.com/ImperialCollegeLondon/INDI[ai]"Note
Documentation is very much work in progress
From a development installation serve the documentation locally:
uv run mkdocs serveIf you encounter issues displaying matplotlib windows, run:
xhost +To allow the ImageMagick scripts to run enter command:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine`INDI is licensed under the BSD license. See the LICENSE file for details.
If you use this software, please credit this website and "The CMR Unit, Royal Brompton Hospital".
- Royal Brompton Hospital (Guy's and St Thomas' NHS Foundation Trust), London, UK
- Imperial College London, UK
- Supported by the British Heart Foundation RG/19/1/34160 and RG/F/23/110115
- Chan Zuckerberg Initiative DAF, an advised fund of the Silicon Valley Community Foundation: 2024-337787
- EPSRC Healthcare Technologies EP/X014010/1



