autoDTI-ALPS
Automated DTI-ALPS (Diffusion Tensor Imaging Along the Perivascular Space) analysis tool. Uses template-based registration to place ROIs in projection and association fiber regions, then calculates the DTI-ALPS index from diffusion tensor imaging data.
Dependencies
Python
Requires Python 3.10+.
Core dependencies (installed automatically):
The engine (dti_alps.processing.*) is Qt-free and imports PySide6 lazily, so
headless CLI use (reanalyze, report) and library use never load Qt.
External Neuroimaging Software
The following third-party programs must be installed and available on your system PATH.
MRtrix3 (required)
MRtrix3 provides tools for diffusion MRI preprocessing and tensor fitting.
| Command | Pipeline Stage | Purpose |
|---|---|---|
dwidenoise |
Denoising | Marchenko-Pastur PCA thermal noise removal |
mrdegibbs |
Gibbs Removal | Gibbs ringing artifact correction |
dwifslpreproc |
Preprocessing | Eddy current, motion, and distortion correction |
dwi2tensor |
Tensor Fitting | Fit diffusion tensor model to DWI data |
tensor2metric |
Metric Extraction | Extract FA, eigenvectors (V1-V3), and eigenvalues (L1-L3) |
dwi2mask |
Preprocessing | Brain mask generation from DWI |
dwiextract |
B0 Extraction | Extract b=0 volumes from DWI |
mrmath |
B0 Extraction | Average multiple b=0 volumes |
mrconvert |
Format Conversion | Image format conversion and header manipulation |
Installation: https://www.mrtrix.org/download/
FSL (required)
FSL provides tools for brain extraction, registration, and image manipulation.
| Command | Pipeline Stage | Purpose |
|---|---|---|
flirt |
Registration | Linear (affine) FA-to-template registration |
fnirt |
Registration | Non-linear FA-to-template registration |
invwarp |
Registration | Generate inverse warp field for ROI transformation |
applywarp |
ROI Placement | Transform ROI templates from standard to native space |
fslmaths |
Masking | Apply brain mask to FA image |
eddy |
Preprocessing | Eddy current and motion correction |
topup |
Preprocessing | Susceptibility-induced distortion field estimation |
applytopup |
Preprocessing | Apply topup distortion correction |
Installation: https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FslInstallation
Installation
Whichever route you choose, MRtrix3 and FSL are not bundled and must be
installed separately and on your PATH (see
External Neuroimaging Software).
Install with pipx
If you have Python 3.10+, pipx installs the app into
an isolated environment and puts the dti-alps command on your PATH:
pipx install dti-alps
dti-alps # launch the GUI
Update with pipx upgrade dti-alps.
Plain pip install dti-alps inside a virtualenv works too and provides the
same dti-alps command.
Download the AppImage (no Python needed)
For double-click file with no Python setup, grab the latest Linux AppImage from the Releases page:
chmod +x dti-alps-*-x86_64.AppImage
./dti-alps-0.1.0-x86_64.AppImage
The AppImage bundles the app and its Python dependencies. To update, download the newer AppImage and replace the old file.
Qt runtime note: the GUI uses Qt 6, which needs
libxcb-cursor0on the host. If the app fails to start with anxcbplatform-plugin error, install it:sudo apt install libxcb-cursor0(Debian/Ubuntu).
Install into a conda environment
Take Qt (and the other compiled dependencies) from conda-forge, then let pip add the app itself:
conda install -c conda-forge pyside6 numpy scipy nibabel
pip install dti-alps
pip recognises the conda-provided packages as satisfying its requirements and
installs only dti-alps on top, so Qt and its C libraries stay under conda's
control as one consistent set. Keeping the environment on a single channel
avoids mismatches between those libraries:
conda config --add channels conda-forge
conda config --set channel_priority strict
If the GUI fails to start with an undefined symbol error mentioning
libharfbuzz or libfreetype, the environment's font libraries disagree with
each other; conda install -c conda-forge freetype harfbuzz --update-deps
realigns them. The headless verbs (run, reanalyze, report) never load Qt,
so they keep working regardless.
From source (development)
pip install -e ".[gui]"
Usage
dti-alps # Launch GUI (default)
dti-alps run --subjects /data/cohort --output /data/out # Process a cohort
dti-alps view # Launch Results Viewer
dti-alps view /path # Launch viewer with specific output folder
dti-alps report /path # Generate quality reports
dti-alps reanalyze /path --sphere 3 # Reanalyze with different ROI shapes
dti-alps VERB --help lists the flags for any one verb.
When running the AppImage, substitute ./dti-alps-*.AppImage for dti-alps;
all CLI arguments are forwarded (e.g. ./dti-alps-*.AppImage view /path).
Headless processing
dti-alps run executes the whole pipeline with no display attached.
# The simplest complete run: discovery, defaults, one command
dti-alps run --subjects /data/cohort --output /data/out
# A BIDS cohort, a protocol exported from the GUI, tuned ROIs
dti-alps run --subjects /bids/sub-*/ses-1/dwi --output /data/out \
--config study-protocol.json --id-depth 3 --sphere 2,3 --nthreads 8
# Check what would happen before committing to a long run
dti-alps run --subjects /bids/sub-*/ses-1/dwi --output /data/out --dry-run
# Pick up where a preempted node left off
dti-alps run --subjects /data/cohort --output /data/out --resume
You can save protocol settings as config files which can be exported through the GUI within the Output Setup page. Pass the config.json file into the CLI command to avoid typing out needlessly long arguments.
--opt STAGE:NAME=VALUE sets any tool option inline, so you are never blocked on
authoring a file:
dti-alps run --subjects /data/cohort --output /data/out \
--opt dwifslpreproc:-eddy_options='--repol --slm=linear'
Discovery scans a folder and, failing that, its immediate
subdirectories. Deeper trees are reached with a shell glob. If filenames
are similar (e.g. a scan protocol named all subfolders + subfiles for each
subject identically), use --id-depth or the "ID Depth" spinner in the GUI
to disambiguate. For example: --id-depth 3 files sub-01/ses-1/dwi as sub-01_ses-1_dwi.
A run refuses to start if two subjects would resolve to the same identifier.
Exit codes, for branching in a job script:
| Code | Meaning |
|---|---|
0 |
Every subject completed |
1 |
Finished with at least one failure |
2 |
Usage or configuration error |
3 |
Preflight failure — a required MRtrix3/FSL command is missing |
130 |
Interrupted with Ctrl-C (the results CSV is still written) |
Raw MRtrix3 and FSL output is shown by default, so an eddy failure can be
diagnosed without re-running; --quiet reduces it to stage- and subject-level
lines. Either way the run leaves a timestamped dti_alps_*.log in the output
directory, the same record the GUI console produces.
Metadata
Release files for dti-alps 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| dti_alps-0.2.0.tar.gz | 257.4 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dti_alps-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 449.5 kB
Release files / dti_alps-0.2.0.tar.gz
| Download URL | dti_alps-0.2.0.tar.gz |
|---|---|
| Size | 257.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8288c00b3d04eeacbe1e6b4ebeca54947fc0ee8aeffc6fcdbcd7878b2e7aea79
|
|
BLAKE2b-256 checksum How to use checksums |
009f98a19659b9a0bf725dcc4653c5ff8514f88301f496661bc6d279e66352ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 3, 2026.
Transparency logRelease files / dti_alps-0.2.0-py3-none-any.whl
| Download URL | dti_alps-0.2.0-py3-none-any.whl |
|---|---|
| Size | 192.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0a63334d46e2b39123a9dd22cba37b642f7325dac8ddfb38967bbbce792f9bd9
|
|
BLAKE2b-256 checksum How to use checksums |
670fca9c1c58198d092e6d8b9b81220b8f166568e658dbb894f419ab00df9e21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 3, 2026.
Transparency logSecurity for dti-alps 0.2.0
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for dti_alps-0.2.0.tar.gz
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 3, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.