In-vivo diffusion analysis (INDI)
A post-processing pipeline for in-vivo cardiac diffusion tensor imaging.
INDI is a Python-based post-processing pipeline designed for in-vivo cardiac diffusion tensor imaging (cDTI) data.
It supports Siemens and Philips diffusion-weighted DICOMs, as well as anonymised NIFTI data. Both STEAM and spin-echo sequences are supported.
After loading your data, INDI performs the following steps:
- Image registration
- Image curation
- Tensor fitting
- Segmentation
- Results export
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
First, install git for your operating system, then clone the repository:
git clone https://github.com/ImperialCollegeLondon/INDI.git
cd INDIYou may need to install Xcode and its Command Line Tools:
xcode-select --installInstall Homebrew and then Python 3.12:
brew install [email protected]Install ImageMagick:
brew install imagemagickSet up the Python environment in the INDI root directory:
Note
For development replace the pip install . command below with pip install -e ".[dev,doc]" to install INDI in editable mode with optional dependencies.
python3.12 -m venv .venv
source .venv/bin/activate
pip install .Install ImageMagick:
sudo apt install imagemagickInstall development tools:
sudo apt install git-all build-essential python3.12-venv
sudo apt-get install python3-tk python3-devCreate the Python environment in the INDI root directory:
Note
For development replace the pip install . command below with pip install -e ".[dev,doc]" to install INDI in editable mode with optional dependencies.
python3 -m venv .venv
source .venv/bin/activate
pip install .If you encounter issues displaying matplotlib windows, run:
xhost +Install Miniforge.
Create a new environment with conda:
conda create --name indi python=3.12
conda activate indiInstall the required packages:
Note
For development replace the pip install . command below with pip install -e ".[dev,doc]" to install INDI in editable mode with optional dependencies.
pip install .To allow the ImageMagick scripts to run enter command:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine`Install ImageMagick.
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:
pip install ".[ai]"Install INDI in editable mode with optional dependencies:
pip install -e ".[dev,doc]"Note
Documentation is very much work in progress
To serve the documentation locally:
mkdocs servepre-commit installPre-commit will now run automatically on each commit. You can also run it manually:
pre-commit run --all-filesThis helps ensure code quality and style before committing changes.
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, in your INDI Python environment, 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):
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



