TractoFlow
==========
This page provides information on running the TractoFlow pipeline via XNAT.
**TractoFlow** is a robust diffusion MRI processing pipeline developed by the SCIL (Sherbrooke Connectivity Imaging Lab). It performs a fully automated dMRI processing from raw data to tractography.
What is TractoFlow?
-------------------
TractoFlow processes diffusion MRI data to correct for artifacts and reconstruct white matter pathways. Its main steps include:
- **Denoising**: MP-PCA denoising on DWI data.
- **Preprocessing**: Eddy current correction, Topup (if reverse phase encoding is available), and motion correction.
- **T1w Image Processing**: Brain extraction and registration to DWI space.
- **DTI Metrics**: Computation of Fractional Anisotropy (FA), Mean Diffusivity (MD), Axial Diffusivity (AD), and Radial Diffusivity (RD).
- **fODF computation**: Fiber Orientation Distribution Function using Constrained Spherical Deconvolution (CSD).
- **Tractography**: Probabilistic or deterministic tracking (Particle Filtering Tracking).
For detailed information, visit the `official Tractoflow documentation `_.
What You Need Before Running
----------------------------
1. **BIDS Conversion**: You must run :doc:`dcm2bids` first. The pipeline expects data in the ``Resources/rawdata`` folder.
- **Required**: A valid T1w anatomical image.
- **Required**: A valid DWI acquisition (dwi.nii.gz, .bval, .bvec).
- **Optional but Recommended**: A reverse phase encoding b0 image (fmap) for distortion correction.
2. **FreeSurfer**: While TractoFlow can perform its own brain extraction, running FreeSurfer beforehand and having the outputs available in ``Resources/freesurfer`` is highly recommended. The XNAT pipeline script explicitly checks for existing FreeSurfer outputs to improve T1w processing and registration.
How to Launch the Pipeline
--------------------------
.. note::
For step-by-step instructions on running any pipeline, see :doc:`../working_with_xnat/running_pipelines`. To enable pipelines for your project, see :doc:`../working_with_xnat/enabling_pipelines`. For running pipelines across multiple subjects in parallel, see :doc:`../working_with_xnat/parallel_processing`.
1. Navigate to your **session** on XNAT.
2. Click **"Run Preprocessing Pipeline"**.
3. Select **"TractoFlow"** from the pipeline dropdown.
4. Configure the parameters:
- **Session Label**: Typically auto-filled.
- **Project ID**: Typically auto-filled.
- **FMRIPrep Flags**: (Optional) Although labeled generic flags, this field is intended for passing specific Tractoflow Nextflow arguments if supported by the wrapper. *Note: In standard configuration, the pipeline runs with optimal defaults.*
.. warning::
The pipeline requires significant computational resources. Please allow 12-24 hours for completion.
Output Structure
----------------
TractoFlow generates a comprehensive set of derivatives. The XNAT pipeline transfers these back to a **tractoflow** folder in the session Resources.
.. parsed-literal::
**/**
**tractoflow/**
**DTI_Metrics/**
sub-01_ses-01__fa.nii.gz (Fractional Anisotropy)
sub-01_ses-01__md.nii.gz (Mean Diffusivity)
sub-01_ses-01__ad.nii.gz
sub-01_ses-01__rd.nii.gz
**FODF_Metrics/**
... (fODF data for tracking)
**Tractography/**
sub-01_ses-01__pft_tracking_prob_sc_t1_seeding_mask.trk
**Readme.md**
**report.html** (Quality Control Report)
**Key Output Files:**
- ``DTI_Metrics/*_fa.nii.gz``: Use this for voxel-based analysis of white matter integrity.
- ``Tractography/*.trk``: The whole-brain tractogram. This can be visualized in software like `MI-Brain `_, `Dipy`, or `Mrtrix`.
- ``report.html``: A visual report of the processing steps. Check this to verify brain extraction and registration quality.
Component Versions
------------------
.. list-table::
:widths: 20 20 60
:header-rows: 1
* - Component
- Version
- Filename / Command
* - Java
- 1.8.0_31
- ``module load jdk/1.8.0_31``
* - Nextflow
- 21.10.6
- ``/scratch/mri/singularityimages/nextflow``
* - Tractoflow
- 2.4.4
- ``/scratch/mri/singularityimages/tractoflow/main.nf``
* - Container
- 1.6.0
- ``scilus_1.6.0.sif``
Pipeline Command
----------------
The pipeline is executed on the cluster using the following command structure:
.. code-block:: bash
/scratch/mri/singularityimages/nextflow run /scratch/mri/singularityimages/tractoflow/main.nf \
--input \
--output_dir \
-with-singularity /scratch/mri/singularityimages/scilus_1.6.0.sif \
-profile use_gpu,fully_reproducible \
-resume
.. note::
The pipeline is configured to use the GPU profile and ensures full reproducibility.
Troubleshooting
---------------
- **Missing T1w or DWI**: The pipeline will fail immediately if these are not found in the BIDS structure.
- **Registration Failures**: If the tracking results look wrong (e.g., streamlines exiting the brain), check the `report.html` for registration errors between T1w and DWI.
- **Job Errors**: If the job fails, download the ``slurm-*.out`` and ``slurm-*.err`` logs from the ``tractoflow/logs`` directory (or `temp_files` if the transfer failed) and contact support.
References
----------
- `TractoFlow Documentation `_
- `Nextflow `_