README.md
July 11, 2026 Β· View on GitHub
ExploreASL GUI
A modern, cross-platform desktop interface for Arterial Spin Labeling MRI analysis
From scanner to publication β powered by ExploreASL
Note
This is a complete rewrite of the original ExploreASL GUI (Electron), rebuilt from the ground up using Tauri v2. It is lighter, faster, more secure, and ships native OS binaries instead of Electron's bundled Chromium runtime.
π Table of Contents
π§ About The Project
ExploreASL GUI provides a friendly, modern desktop interface around the ExploreASL MATLAB pipeline for processing Arterial Spin Labeling (ASL) MRI data. Whether you are a clinical researcher with dozens of subjects or a methods developer fine-tuning pipeline parameters, this GUI guides you through the entire analysis lifecycle without requiring you to write a single line of MATLAB.
Key Capabilities
| Feature | Description |
|---|---|
| π Dataset Import | Organize raw DICOM/NIfTI data into BIDS format using a flexible source-data staging tree |
| π Metadata Configuration | Define ASL sidecar JSON fields (labelling type, PLD, etc.) with per-scan override groups during import |
| βοΈ Parameter Configuration | Configure ExploreASL processing parameters (dataPar.json) through structured forms with basic/advanced field toggles |
| βΆοΈ Pipeline Execution | Select subjects and modules (Structural / ASL / Population) with real-time progress tracking via .status lock files |
| π Results Visualization | Explore population statistics via scatter/swarm plots and inspect subject-level qCBF NIfTI volumes interactively |
| π Selective Re-run | Re-process specific subjects or modules; stale locks, status files, and logs are cleaned automatically before each run |
π Built With
| Layer | Technology |
|---|---|
| Desktop shell | Tauri v2 (Rust backend, WebView2 / WebKit frontend) |
| UI Framework | React 19 + TypeScript 6 |
| Component Library | Mantine 9 |
| State Management | Zustand 5 |
| Schema Validation | Zod 4 |
| Routing | React Router 7 |
| Forms | React Hook Form 7 |
| Build Tool | Vite 8 |
| Testing | Vitest 4 + Testing Library |
π Prerequisites
Before running ExploreASL GUI you will need two dependencies installed separately:
| Dependency | Version | Link |
|---|---|---|
| MATLAB | R2019a or later | mathworks.com/downloads |
| ExploreASL | v11.1.0 or later (v2+ / develop branch preferred) | github.com/ExploreASL/ExploreASL |
Note
The app manages execution using Execution Profiles, which support running ExploreASL via different backends. While currently restricted to MATLAB + GitHub-based ExploreASL (installed via Git or ZIP), the profiling system is built to support future pre-compiled packages (running via the free MATLAB Runtime) or containerized engines (Docker, Apptainer, etc.) to run independent of a local MATLAB dependency.
Platform Dependencies (for running from source only)
| Dependency | Notes |
|---|---|
| Rust toolchain | Stable channel, β₯ 1.77 |
| Node.js | β₯ 20 LTS |
| pnpm | β₯ 9 |
| Tauri v2 system deps | Platform-specific (WebView2 on Windows, WebKit on Linux/macOS) |
π¦ Installation
Download a Pre-built Release (recommended for end users)
Head to the Releases page and download the installer for your operating system.
πͺ Windows
Double-click the .msi installer. The app will be installed silently and a Start Menu shortcut will be created.
π§ Linux
sudo apt install ./exploreasl-gui_<version>_amd64.deb
After installation, type exploreasl in your application launcher.
π macOS
Open the .dmg and drag the application bundle to your Applications folder.
Warning
The application is currently unsigned. On first launch macOS will display an "unidentified developer" warning. Go to System Settings β Privacy & Security and click "Open Anyway" to authorize the app.
π§ Setting Up MATLAB & ExploreASL
The GUI requires both MATLAB and ExploreASL to be installed on your machine before it can process data. Follow the steps below for your operating system.
Tip
The ExploreASL team maintains a detailed installation tutorial with screenshots: exploreasl.github.io/Documentation/latest/Tutorials-Install
Step 1 β Install MATLAB
- Go to mathworks.com/downloads and sign in with your MathWorks account. If you do not have one, your institution may provide a campus license β check with your IT or licensing department.
- Download the MATLAB installer for your operating system (Windows, macOS, or Linux).
- Run the installer. When prompted, select R2019a or later (R2023b or newer recommended). You do not need any additional toolboxes for ExploreASL.
- Complete the installation and launch MATLAB once to confirm it opens without errors.
Tip
Already have MATLAB installed? You can check your version by opening MATLAB and typing version in the command window. Any version from R2019a onward will work.
Step 2 β Install ExploreASL from GitHub
ExploreASL is a free, open-source MATLAB toolbox. You obtain it by downloading or cloning it from GitHub.
Option A β Download the ZIP (no Git required)
- Go to github.com/ExploreASL/ExploreASL.
- Near the top of the page, you will see a dropdown button that says main. Click it and select develop β this is the recommended version.
- Click the green <> Code button, then select Download ZIP.
- Extract the ZIP file:
- Windows: Right-click the downloaded
.zipfile and select Extract Allβ¦, then click Extract. Move the extracted folder to a location likeC:\ExploreASL. - macOS: Double-click the
.zipfile (Safari extracts it automatically). Move the resulting folder to a location like your home folder (the folder with your username). - Linux: Right-click the
.zipfile and select Extract Here, or rununzip ExploreASL-develop.zipin a terminal. Move the folder to a location like/home/your-username/ExploreASL.
- Windows: Right-click the downloaded
Warning
Do not place ExploreASL inside a cloud-synced folder (OneDrive, Dropbox, Google Drive, iCloud). Cloud sync can corrupt files during processing. If your Desktop or Documents folder is synced to the cloud, choose a different location such as C:\ExploreASL on Windows.
Important
Once you have configured the GUI to use this folder, do not move or rename it. The GUI remembers the path and will need to be updated if the folder is relocated.
Option B β Clone with Git
If you are comfortable with the command line:
git clone --branch develop https://github.com/ExploreASL/ExploreASL.git
This clones the latest develop branch (v2+), which is the recommended version.
Step 3 β Configure Execution Profiles
Instead of a single global path, ExploreASL GUI uses Execution Profiles to manage how the ExploreASL pipeline is run. This allows you to configure multiple installations or execution methods and switch between them.
- Onboarding: When launching the app with no configured profiles, a welcome card is shown blocking project actions. Click Open Settings to set up your first profile.
- Add Profile: In global Settings under Execution Profiles, click Add Profile and choose a profile type (currently MATLAB).
- Paths Configuration:
- MATLAB Path: Enter the path to the MATLAB executable (e.g.
/usr/local/MATLAB/R2024b/bin/matlabon Linux/macOS orC:\Program Files\MATLAB\R2024b\bin\matlab.exeon Windows). You can click Detect MATLAB to search your system automatically or Browse to choose it manually. - ExploreASL Path: Browse to the folder where you extracted or cloned ExploreASL in Step 2 (containing
ExploreASL.m).
- MATLAB Path: Enter the path to the MATLAB executable (e.g.
- Validation: Click Save. The GUI runs a validation command to ensure the MATLAB executable works,
ExploreASL.mexists, and detects the ExploreASL version automatically.
You can add multiple profiles and switch between them from the dropdown selectors on the Import and Processing pages.
Note
If you are in a hospital or institutional environment, your IT department may restrict running unsigned software or limit MATLAB network licensing. Contact your IT support if you encounter permission or licensing errors.
π Workflow
ExploreASL GUI follows a three-phase analysis pipeline:
Raw DICOM / NIfTI
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Import Module β
β Ingest β Tokenize β Resolve Aliases β Metadata β Run β
β Stage source data into BIDS with configured sidecars β
βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Parameters Module β
β Configure dataPar.json (Structural, ASL, Population) β
βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Processing Module β
β Select subjects β Run modules β Monitor progress β
βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Visualization Module β
β Scatter/swarm plots of ROI stats + NIfTI volume viewer β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Manifest Module β
β QC triage (Pass/Fail) β Preview β Export methods doc β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Import Dataset
ExploreASL GUI supports two different pathways to import your dataset, depending on the format of your raw files:
Pathway A: DICOM Import Wizard (default)
Use this if you have raw scanner DICOM files. The wizard walks you through five sub-steps:
- Ingest DICOMs β Select your source directory and scan for DICOM files, with optional subfolder grouping
- Tokenize Paths β Map folder hierarchy levels to BIDS identifiers (Subject / Session / Run / Modality)
- Resolve Aliases β Rename subjects, order sessions/runs, and map raw scan labels to BIDS modality types
- Acquisition Metadata β Configure ASL-specific parameters (labelling type, PLD, labelling duration) with per-scan overrides
- Preview & Run β Review the staging layout and
dataPar.json, then execute the import via dcm2niix
Pathway B: Direct BIDS Import (Skip Import)
Use this if you already have a BIDS-compliant dataset (containing NIfTI images, sidecar .json metadata, and _aslcontext.tsv files).
- Select the BIDS folder during project creation.
- The landing detection dialog will detect the existing BIDS structure and prompt you to Skip Import.
- This opens the BIDS Review Panel, which automatically scans all subject sidecars, groups scans with matching acquisition parameters, and flags any skipped subjects (e.g. subjects with missing/unparseable files).
- Assign group labels and click Confirm to populate project mappings and transition directly to pipeline parameters configuration.
Configure Global Project Data Parameters
Configure the ExploreASL dataPar.json through structured forms covering Structural, ASL, Population, and Atlas settings. Basic fields are shown by default; advanced fields are revealed per section.
Processing Pipeline Execution
Select the subjects and pipeline modules (Structural / ASL / Population) you want to process. The GUI spawns MATLAB worker processes and tracks progress via ExploreASL's .status lock files, showing per-subject step completion in real time.
Visualize Results
Load population-level statistics TSV files and explore data via scatter and swarm plots. Click any data point to load the corresponding subject's qCBF NIfTI volume in an interactive 3D viewer.
Project Manifest
After the Population pipeline completes, review per-subject QC metrics (ASL coverage, spatial CoV, motion, motion exclusion) and assign Pass / Fail verdicts with reasons. Stale detection flags verdicts set before the latest Population re-run. Export a self-contained Markdown or HTML document with per-group study parameters, software versions, QC summary statistics, and auto-generated methods paragraphs with full citations β ready for a paper's methods section or supplementary materials.
π» Developer Setup
# 1. Clone the repository
git clone https://github.com/MauricePasternak/ExploreASL-GUI.git
cd ExploreASL-GUI
# 2. Install JavaScript dependencies
pnpm install
# 3. Start the development server (hot-reload, browser preview at http://localhost:1420)
pnpm dev
# 4. Start the full Tauri development app (requires a desktop environment)
pnpm tauri dev
Tip
Most frontend work can be done at http://localhost:1420 with pnpm dev. Tauri APIs (filesystem, dialogs, subprocess) are mocked during browser development β start pnpm tauri dev only when you need to test native functionality.
Project Structure
ExploreASL_GUI/
βββ src/ # React frontend (TypeScript)
β βββ components/ # Reusable UI components
β βββ pages/ # Route-level page components
β βββ stores/ # Zustand state stores
β βββ lib/ # Utilities, schemas, debug tools
β βββ test/ # Test setup & mocks
βββ src-tauri/ # Rust backend (Tauri)
β βββ src/ # Rust source files
β βββ icons/ # Application icons
βββ openspec/ # Feature specs (authoritative)
β βββ specs/ # Canonical specifications
βββ e2e-tests/ # End-to-end tests (WebdriverIO + tauri-driver)
βββ test/ # Test data & datasets
Project State
- Project file:
<root>/project.easlβ JSON file storing the current project state - Global settings: Stored via
@tauri-apps/plugin-store(settings.json) in the OS app data directory - Dev logs:
<OS temp dir>/exploreasl-gui-logs/dev.log(usesstd::env::temp_dir(), e.g./tmpon Linux,%TEMP%on Windows)
π§ͺ Testing
# Run unit tests (Vitest)
pnpm test
# Run unit tests in watch mode
pnpm test:watch
# Run end-to-end tests (requires a debug build at src-tauri/target/debug/exploreasl_gui)
pnpm test:e2e
Unit tests cover schemas, Zustand stores, and utility functions. Component tests cover critical UI paths. E2E tests drive the native Tauri window via tauri-driver + WebdriverIO.
πΊ Roadmap
- Core project scaffolding (Tauri v2 + React + Mantine)
- Dataset import with BIDS staging tree
- ASL metadata configuration with per-scan overrides
- Processing parameter configuration (
dataPar.json) - Pipeline execution with real-time progress tracking
- Results visualization (population stats + NIfTI viewer)
- Project manifest export
- Import BIDS-ready datasets
- Auto-update support
- Documentation site
See open issues for a full list of planned features and known bugs.
π€ Contributing
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the repository
- Switch to the develop branch (
git checkout develop) - Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes using Conventional Commits (e.g.
feat: add CBF viewer) - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Apply appropriate labels to your Pull Request (e.g.,
enhancement,bug,documentation) so that the automated release notes classify the changes correctly.
Please read the AGENTS.md file for coding conventions, testing requirements, and agent guidelines before contributing.
π License
Distributed under the MIT License. See LICENSE for more information.
π Acknowledgments
ExploreASL Team
This GUI is built around ExploreASL, an open-source MATLAB/SPM-based pipeline for ASL MRI data analysis, developed and maintained by the ExploreASL community. Please cite the ExploreASL paper if you use this software in your research:
Mutsaerts, H.J.M.M., et al. (2021). ExploreASL: An image processing pipeline for multi-center ASL perfusion MRI studies. NeuroImage, 225, 117549. https://doi.org/10.1016/j.neuroimage.2020.117549
Previous Version
The original Electron-based ExploreASL GUI is preserved at MauricePasternak/ExploreASL-GUI (electron-v1 branch). This Tauri v2 rewrite supersedes it with a significantly smaller binary footprint, improved security, and a modernized tech stack.
Built With Open Source
- Tauri β Cross-platform desktop framework
- Mantine β React component library
- ExploreASL β The underlying pipeline