FSL Tool

SkillDev tools

Use this skill whenever the user wants to process neuroimaging data with FSL (FMRIB Software Library), covering structural MRI, functional MRI (fMRI), and diffusion MRI (dMRI/DTI). Triggers include: 'use FSL', 'FSL processing', 'fsl_anat', 'FEAT', 'MELODIC', 'eddy', 'bedpostx', 'probtrackx', 'BET', 'FAST', 'FLIRT', 'FNIRT', 'run FSL pipeline'. This skill is the NeuroClaw interface-layer wrapper for FSL: checks installation, generates execution plan with concrete shell commands, waits for explicit confirmation, then routes all commands through claw-shell.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the FSL Tool skill

What this skill tells your AI

The instructions your AI receives, as published by cuhk-aim-group/neuroclaw in skills/fsl-tool/SKILL.md and read by ahel’s review.

Overview

FSL is a comprehensive library of analysis tools for MRI, fMRI, and diffusion brain imaging. This skill provides a safe, unified interface for the three core modalities in NeuroClaw:

  • Structural MRI (T1w, T2w, FLAIR)
  • Functional MRI (task-based and resting-state)
  • Diffusion MRI (DTI / dMRI)

Workflow:

  1. Check if FSL is installed (fslversion).
  2. If not installed → call dependency-planner to generate installation plan.
  3. Analyze input files and propose concrete shell commands with parameter explanations.
  4. Present full numbered plan + estimated time + risks.
  5. Wait for explicit user confirmation (“YES”, “execute”, “proceed”).
  6. Execute all commands safely via claw-shell.
  7. Summarize outputs and suggest next steps.

Research use only.

Core Modalities and Common Shell Commands

1. Structural MRI

# One-click structural preprocessing (strongly recommended)
fsl_anat -i T1w.nii.gz -o T1w_anat --clobber
# -i : input T1w file
# -o : output folder name
# --clobber : overwrite existing files (commonly used)

# Brain extraction (BET)
bet T1w.nii.gz T1w_brain -m -f 0.5
# -m : output brain mask (_mask.nii.gz)
# -f : brain extraction threshold (0.3~0.7; 0.5 is usually stable)

# Tissue segmentation + bias correction
fast -t 1 -n 3 -H 0.1 -I 4 -l 20.0 -o T1w_fast T1w_brain
# -t 1 : T1-weighted image
# -n 3 : 3 tissue classes (GM, WM, CSF)
# -H 0.1 : bias field correction strength

# Linear + nonlinear registration to MNI152
flirt -in T1w_brain -ref $FSLDIR/data/standard/MNI152_T1_2mm_brain -out T1w_to_MNI -omat T1w_to_MNI.mat -dof 12
fnirt --in=T1w_brain --aff=T1w_to_MNI.mat --cout=T1w_to_MNI_warp --config=T1_2_MNI152_2mm

# Subcortical segmentation
first -i T1w_brain -o T1w_first -b

2. Functional MRI

# Motion correction
mcflirt -in bold.nii.gz -out bold_mcf -plots -refvol 0

# Task-based fMRI full analysis (FEAT)
feat design.fsf

# Resting-state ICA
melodic -i bold_mcf.nii.gz -o melodic_output --report --nobet --bgthreshold=10 --tr=2.0 --mmthresh=0.5 --dim=30

# Automatic denoising (FIX)
fix melodic_output -c $FSLDIR/training_files/Standard.RData -m -f 20

3. Diffusion MRI

# Distortion and eddy current correction
topup --imain=AP_PA_b0.nii.gz --datain=acqparams.txt --out=topup_results --fout=field --iout=b0_unwarped
eddy --imain=dwi.nii.gz --mask=dwi_brain_mask.nii.gz --acqp=acqparams.txt --index=index.txt \
     --bvecs=bvecs --bvals=bvals --topup=topup_results --out=eddy_corrected --very_verbose

# Tensor fitting
dtifit -k eddy_corrected.nii.gz -m dwi_brain_mask.nii.gz -r bvecs -b bvals -o dtifit

# Multi-fiber modeling
bedpostx bedpostx_input -n 3 -w 1 -b 1000

# Automated major tract extraction
xtract -bpx bedpostx_input.bedpostX -out xtract_results -str $FSLDIR/data/xtract/tracts.txt

Quick Reference

ModalityTaskMain CommandTypical Time
StructuralFull preprocessingfsl_anat10–40 min
StructuralBrain extractionbet1–3 min
StructuralTissue segmentationfast5–15 min
FunctionalMotion correctionmcflirt2–10 min
FunctionalTask GLMfeat15–90 min
FunctionalResting-state ICAmelodic20–120 min
DiffusionPreprocessingtopup + eddy30–180 min
DiffusionTensor metricsdtifit5–20 min
DiffusionTractographyprobtrackx2 / xtract30 min – 24 h+

Installation

Use dependency-planner skill with one of the following requests:

  • “Install latest FSL on Ubuntu using official installer”
  • “Install FSL via conda-forge in a new environment”

After installation, verify with:

fslversion
echo $FSLDIR

Important Notes & Limitations

  • All actual execution is routed through claw-shell.
  • Long-running commands (bedpostx, probtrackx, group FEAT, etc.) run safely in the claw tmux session.
  • Always consider running fsl_anat first for structural data — it handles BET + FAST + registration automatically.
  • Input must be NIfTI format. Use dcm2nii skill first if starting from DICOM.
  • Monitor progress with tail -f on the log file provided by claw-shell.

When to Call This Skill

  • After dcm2nii conversion
  • When any FSL preprocessing, registration, segmentation or advanced analysis is needed
  • Before feeding quantitative results into paper-writing or experiment-controller

Complementary / Related Skills

  • dependency-planner
  • claw-shell

More Advanced Features

For less common tools (ASL, FABBER, VBM, PALM, custom scripting, etc.), please refer to the official FSL documentation:

You may use the multi-search-engine, academic-research-hub, or arxiv-cli-tools skill anytime to find the latest FSL tutorials or example pipelines.

Post-Execution Verification (Harness Integration)

After FSL processing completes, this skill automatically invokes harness-core's VerificationRunner to validate output integrity:

Integrated verification checks:

from skills.harness_core import VerificationRunner, AuditLogger

verifier = VerificationRunner(task_type="fsl_processing")

# 1. Brain extraction quality (BET)
verifier.add_check("brain_extraction",
    checker=lambda: verify_bet_output(output_dir),
    severity="error"
)

# 2. FSL output files existence
verifier.add_check("output_files",
    checker=lambda: verify_output_files(output_dir),
    severity="error"
)

# 3. Data integrity (NaN/Inf checks)
verifier.add_check("data_integrity",
    checker=lambda: verify_no_nan_inf(output_dir),
    severity="error"
)

# 4. Registration quality metrics
verifier.add_check("registration_quality",
    checker=lambda: verify_registration_quality(output_dir),
    severity="warning"
)

# 5. Tensor metrics bounds (for DTI/DWI)
verifier.add_check("tensor_bounds",
    checker=lambda: verify_fa_md_bounds(output_dir),
    severity="warning"
)

report = verifier.run(output_dir)

# Log verification results
logger = AuditLogger(log_file=f"{output_dir}/fsl_verification.jsonl")
logger.log_validation(
    task_name="fsl_processing",
    checks_passed=len([r for r in report.results if r.passed]),
    total_checks=len(report.results),
    output_path=output_dir
)

Output: {output_dir}/fsl_verification.jsonl (structured audit log with JSONL format)


Created At: 2026-03-25 00:00 HKT Last Updated At: 2026-04-05 02:03 HKT Author: chengwang96

Signals

GitHub stars
85
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
fsl-tool
Source
github.com/cuhk-aim-group/neuroclaw