Deep Learning based tool to quantify subject motion in T1w brain MRI
Project description
Agitation
This repository presents a deep learning-based tool to quantify subject motion in T1-weighted brain MRI.
The model used for this tool can be trained using our research code.
Getting Started
Installation
You will need an environment with at least Python 3.11. Then run:
pip install agitation
Alternatively, you can clone the repository and use:
python cli.py
instead of agitation.
Setup
Model
We use a TorchScript version of our best model.
All model checkpoints and the final TorchScript file are available on Zenodo.
The model will be downloaded automatically when needed. However, you can also manually download it with:
agitation manage check
The model is stored in your application data directory. You can retrieve the exact location using the check command.
To remove all downloaded data:
agitation manage delete
MRI Data
Our model was trained on data preprocessed with Clinica's T1-linear pipeline.
While it may work with any T1-weighted MRI, we strongly recommend using the same preprocessing pipeline to ensure consistent results.
Usage
To quantify motion, use the command:
agitation inference
Arguments:
-d, --dataset: Path to the root of the dataset. It must be organized according to BIDS or CAPS (Clinica) standards and contain either ananatfolder ort1_linearfor CAPS.-f, --file: Path to a CSV file describing the data to process. The file must contain at least adatacolumn specifying the path to each volume. Other columns will be copied to the output CSV.-g, --gpu: Flag to enable GPU inference.--cuda: Specify the GPU index to use (defaults to 0).-o, --output: Path to the output CSV file.
Example:
agitation inference --dataset <path_to_root> -g --output <path_to_output_file>
agitation inference --file <path_to_csv>
Library
The agitation package can also be used as a library to include motion estimation in your projects.
Downloading the Model
To manually download the model within your code:
from agitation.data_manager import download_model
download_model()
Dataloader Inference
To run inference on a Dataloader:
from monai.data.dataset import Dataset
from torch.utils.data import DataLoader
from agitation.inference import estimate_motion_dl
from agitation.processing import LoadVolume
# Example usage
dataset = Dataset(<your_data_as_a_dict>, transform=LoadVolume())
dataloader = DataLoader(dataset)
estimate_motion_dl(dataloader, cuda=0)
Batch Inference
To perform inference on a single batch:
import torch
from agitation.config import MODEL_PATH
from agitation.processing import SoftLabelToPred
# Dataloading, cropping, and normalization steps
model = torch.jit.load(
MODEL_PATH,
map_location="cuda:0" # If using CUDA
)
converter = SoftLabelToPred()
with torch.inference_mode():
prediction = model(data).cpu()
motions = converter(prediction)
Contributing
Setup
Once the repository is cloned, install the development dependencies with:
pip install -r dev_requirements.txt
Tests
Test Tools
We use:
pytestfor unit testspytest-covfor coverage reports (targeting 100% test coverage)
Run tests via:
pytest --cov
Other tools:
rufffor linting and formatting (automatically applied viapre-commit)- Additional code quality tools:
ssort,pydocstyle,mypy, andpylint
Test Data
All test data are extracted from MR-ART:
Nárai, Á., Hermann, P., Auer, T. et al. Movement-related artefacts (MR-ART) dataset of matched motion-corrupted and clean structural MRI brain scans. Sci Data 9, 630 (2022). https://doi.org/10.1038/s41597-022-01694-8
Deployment
Build the package using:
python -m build
Deploy to PyPI with:
twine upload dist/*
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agitation-0.0.1.tar.gz.
File metadata
- Download URL: agitation-0.0.1.tar.gz
- Upload date:
- Size: 26.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f5d1b1ff7254b6b4bd43f6ceee667811b56574644bc5408383f44dc285605e1
|
|
| MD5 |
260cfed0b5d1ea9ce5e89512378ceca7
|
|
| BLAKE2b-256 |
acc5fc4f317ab1078de744d65fdda4379f536607ef6f8bd093e7a833fcc33df5
|
File details
Details for the file agitation-0.0.1-py3-none-any.whl.
File metadata
- Download URL: agitation-0.0.1-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36831948ec2bd2d794e07d3efcf23a6ab6f6dbeda20ffedca2151b062cba47f3
|
|
| MD5 |
3db13919a8d21e48424fd3a4f2b05c92
|
|
| BLAKE2b-256 |
707e43da983d21689a11394368254b7e6ad6295e23ef1f255f02c904ce8ee741
|