Skip to content

MRI-Lab-Graz/dsistuido

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

50 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DSI Studio Connectivity Matrix Extraction Tool

Advanced Python tool for extracting connectivity matrices using DSI Studio with comprehensive validation, batch processing, and organized output structure.

πŸš€ Quick Start

1. Installation

cd installation/
bash setup_env.sh
source ../venv/bin/activate

Python dependencies are maintained in requirements.txt at the repository root.

The installer uses UV for lightning-fast package installation (10-100x faster than pip).

See Installation Guide for detailed setup instructions.

2. Validate Setup

python scripts/connectivity/validate_setup.py --config configs/example_config.json --test-input /path/to/data/

3. Pilot Test (1-2 files)

python scripts/pipeline/dsi_studio_pipeline.py \
    --qsiprep_dir /path/to/qsiprep \
    --output_dir /path/to/output \
    --pilot

4. Full Processing

python scripts/pipeline/dsi_studio_pipeline.py \
    --qsiprep_dir /path/to/qsiprep \
    --output_dir /path/to/output \
    --run_connectivity \
    --connectivity_config configs/graph_analysis_config.json

πŸ“‚ Project Structure

dsistudio/
β”œβ”€β”€ README.md                          # This file
β”œβ”€β”€ requirements.txt                   # Canonical Python dependencies
β”œβ”€β”€ installation/                      # Setup & installation files
β”‚   β”œβ”€β”€ setup_env.sh                   # Environment setup script
β”‚   β”œβ”€β”€ install.sh                     # Installation helper
β”‚   └── requirements.txt               # Compatibility include (-r ../requirements.txt)
β”œβ”€β”€ scripts/                           # All executable scripts
β”‚   β”œβ”€β”€ pipeline/
β”‚   β”‚   β”œβ”€β”€ dsi_studio_pipeline.py
β”‚   β”‚   β”œβ”€β”€ create_differential_fib.py
β”‚   β”‚   └── monitor_pipeline.sh
β”‚   β”œβ”€β”€ connectivity/
β”‚   β”‚   β”œβ”€β”€ extract_connectivity_matrices.py
β”‚   β”‚   β”œβ”€β”€ run_connectometry_batch.py
β”‚   β”‚   β”œβ”€β”€ validate_setup.py
β”‚   β”‚   β”œβ”€β”€ convert_mat_to_csv.py
β”‚   β”‚   └── generate_jpgs_from_tt.py
β”‚   β”œβ”€β”€ visualization/
β”‚   β”‚   β”œβ”€β”€ generate_interactive_viewer.py
β”‚   β”‚   └── create_thumbnail_pdfs.py
β”‚   β”œβ”€β”€ qa/
β”‚   β”‚   └── check_fib_metrics.py
β”‚   β”œβ”€β”€ web/
β”‚   β”‚   └── webui.py
β”‚   β”œβ”€β”€ common/
β”‚   β”‚   └── utils.py
β”‚   β”œβ”€β”€ web_logs/
β”‚   └── web_settings/
β”œβ”€β”€ configs/                           # Configuration templates
β”‚   β”œβ”€β”€ example_config.json
β”‚   β”œβ”€β”€ graph_analysis_config.json
β”‚   β”œβ”€β”€ connectivity_config.json
β”‚   └── *.json
β”œβ”€β”€ docs/                              # Documentation
β”‚   β”œβ”€β”€ CONFIGURATION_GUIDE.md         # Detailed config reference
β”‚   β”œβ”€β”€ PIPELINE_ENHANCEMENTS.md       # Feature overview
β”‚   β”œβ”€β”€ ENHANCEMENTS_SUMMARY.txt
β”‚   └── SCRIPT_INDEX.md                # Script inventory and cleanup guidance
β”œβ”€β”€ legacy/                            # Archived non-primary shell scripts
β”‚   β”œβ”€β”€ scripts/
β”‚   └── code/
└── code/                              # Shared utilities & libraries

πŸ”§ Main Commands

Pipeline Processing

Standard Run

python scripts/pipeline/dsi_studio_pipeline.py \
    --qsiprep_dir /path/to/qsiprep \
    --output_dir /path/to/output \
    --dsi_studio_path /path/to/dsi-studio/

With Connectivity Analysis

python scripts/pipeline/dsi_studio_pipeline.py \
    --qsiprep_dir /path/to/qsiprep \
    --output_dir /path/to/output \
    --run_connectivity \
    --connectivity_config configs/graph_analysis_config.json

Resume Processing

python scripts/pipeline/dsi_studio_pipeline.py \
    --qsiprep_dir /path/to/qsiprep \
    --output_dir /path/to/output \
    --skip_existing

Force Regeneration

python scripts/pipeline/dsi_studio_pipeline.py \
    --qsiprep_dir /path/to/qsiprep \
    --output_dir /path/to/output \
    --skip_existing --force

Connectivity Matrix Extraction

Single File

python scripts/connectivity/extract_connectivity_matrices.py \
    --config configs/graph_analysis_config.json \
    subject.fz output_dir/

Batch Processing

python scripts/connectivity/extract_connectivity_matrices.py \
    --config configs/graph_analysis_config.json \
    --batch /data/directory/ output_dir/

Pilot Mode (1-2 files)

python scripts/connectivity/extract_connectivity_matrices.py \
    --config configs/graph_analysis_config.json \
    --batch /data/directory/ output_dir/ \
    --pilot --pilot-count 2

Setup Validation

# Basic validation
python scripts/connectivity/validate_setup.py

# With specific config
python scripts/connectivity/validate_setup.py --config configs/example_config.json

πŸ“‹ Command-Line Options Reference

Pipeline Flags

Flag Purpose Example
--qsiprep_dir QSIPrep output directory --qsiprep_dir /data/qsiprep
--output_dir Output directory --output_dir /data/output
--dsi_studio_path DSI Studio installation --dsi_studio_path /path/to/dsi-studio/
--run_connectivity Enable connectivity analysis --run_connectivity
--connectivity_config Configuration file --connectivity_config configs/graph_analysis_config.json
--skip_existing Skip existing outputs --skip_existing
--force Force regeneration --force
--pilot Test mode --pilot

Extraction Options

Option Purpose Example
--config Configuration file --config configs/graph_analysis_config.json
--batch Batch processing mode --batch
--pilot Test 1-2 files --pilot
--pilot-count Number of pilot files --pilot-count 2
--pattern File pattern --pattern "*.fz"
--tracks Override track count --tracks 50000
--atlases Override atlases --atlases "AAL3,Brainnetome"

πŸ”§ Configuration Files

Configuration File Structure

{
  "dsi_studio_cmd": "/path/to/dsi_studio",
  "atlases": ["AAL3", "Brainnetome"],
  "connectivity_values": ["count", "fa", "qa"],
  "track_count": 100000,
  "thread_count": 8,
  "tracking_parameters": {
    "method": 0,
    "fa_threshold": 0.0,
    "turning_angle": 45.0,
    "min_length": 0,
    "max_length": 0
  }
}

Available Atlases

  • AAL Family: AAL, AAL2, AAL3
  • Functional: Brodmann, HCP-MMP, AICHA
  • Structural: Talairach, FreeSurferDKT, FreeSurferDKT_Cortical
  • Parcellations: Schaefer100/200/400, Gordon333, Power264

Connectivity Metrics

  • count - Number of streamlines
  • ncount - Normalized count
  • mean_length - Average streamline length
  • qa - Quantitative anisotropy (GQI)
  • fa - Fractional anisotropy (DTI)
  • dti_fa, dti_md, dti_ad, dti_rd - DTI-specific metrics
  • md - Mean diffusivity
  • ad - Axial diffusivity
  • rd - Radial diffusivity

See Configuration Guide for detailed reference.

πŸ“‚ Output Structure

output_folder/
β”œβ”€β”€ subject_20240806_143022/
β”‚   └── tracks_100k_streamline/
β”‚       β”œβ”€β”€ by_atlas/          # Results organized by atlas
β”‚       β”‚   β”œβ”€β”€ AAL3/
β”‚       β”‚   β”œβ”€β”€ Brainnetome/
β”‚       β”‚   └── FreeSurferDKT/
β”‚       β”œβ”€β”€ by_metric/         # Results organized by metric
β”‚       β”‚   β”œβ”€β”€ count/
β”‚       β”‚   β”œβ”€β”€ fa/
β”‚       β”‚   └── qa/
β”‚       β”œβ”€β”€ combined/          # All results in one place
β”‚       └── logs/              # Processing logs & summaries
β”‚           β”œβ”€β”€ extraction_summary.json
β”‚           └── processing_results.csv

🎯 Recommended Workflows

New Project Workflow

  1. Setup environment

    cd installation && bash setup_env.sh && cd ..
    source venv/bin/activate
  2. Validate installation

    python scripts/connectivity/validate_setup.py --config configs/example_config.json
  3. Test with pilot

    python scripts/pipeline/dsi_studio_pipeline.py \
        --qsiprep_dir /path/to/qsiprep \
        --output_dir /path/to/output \
        --pilot
  4. Run full pipeline

    python scripts/pipeline/dsi_studio_pipeline.py \
        --qsiprep_dir /path/to/qsiprep \
        --output_dir /path/to/output \
        --run_connectivity \
        --connectivity_config configs/graph_analysis_config.json

Batch Processing Workflow

# Batch extraction with custom config
python scripts/connectivity/extract_connectivity_matrices.py \
    --config configs/graph_analysis_config.json \
    --batch /data/subjects/ output/ \
    --tracks 100000 --threads 16

Background Execution

# Run pipeline in background
nohup python scripts/pipeline/dsi_studio_pipeline.py \
    --qsiprep_dir /path/to/qsiprep \
    --output_dir /path/to/output \
    > pipeline.log 2>&1 &

# Monitor progress
tail -f pipeline.log

πŸ› Troubleshooting

DSI Studio Not Found

  • Ensure DSI Studio is installed
  • Verify --dsi_studio_path points to the correct installation
  • On macOS, often at: /Applications/dsi_studio.app/Contents/MacOS/dsi_studio

FSLDIR Error

# Add to ~/.zshrc or ~/.bash_profile
export FSLDIR=/usr/local/fsl
. ${FSLDIR}/etc/fslconf/fsl.sh
export PATH=${FSLDIR}/bin:${PATH}

Configuration Errors

# Validate configuration before running
python scripts/connectivity/validate_setup.py --config configs/your_config.json

Processing Failures

  1. Start with pilot mode to test
  2. Check generated logs in output directory
  3. Review detailed error messages

πŸ“š Detailed Documentation

πŸ“‹ File Guide

Python Scripts (in scripts/)

Script Purpose
pipeline/dsi_studio_pipeline.py Main processing pipeline
connectivity/extract_connectivity_matrices.py Connectivity matrix extraction
connectivity/run_connectometry_batch.py Batch connectometry analysis
connectivity/validate_setup.py Setup validation tool
web/webui.py Web UI for visualization
qa/check_fib_metrics.py FIB metrics and --inspect single-file mode
pipeline/monitor_pipeline.sh Pipeline log monitor

Configuration Templates (in configs/)

File Purpose
example_config.json Basic example configuration
graph_analysis_config.json Connectivity analysis config
connectivity_config.json Extended template
research_config.json Research-specific settings

🀝 Getting Help

# Show help for any script
python scripts/pipeline/dsi_studio_pipeline.py --help
python scripts/connectivity/extract_connectivity_matrices.py --help
python scripts/connectivity/validate_setup.py --help

For detailed configuration information, see docs/CONFIGURATION_GUIDE.md

For feature details, see docs/PIPELINE_ENHANCEMENTS.md

About

Tools for command line usage of dsistudiio

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors