Quasi-RAW

Simple example.

Example on how to run the brain parcellation pre-processing using BrainPrep. See user guide for details.

Data

Let’s first get some anatomical data.

from pathlib import Path
from brainprep.utils import Bunch
from brainprep.datasets import OpenMSDataset

datadir = Path("/tmp/brainprep-data")
datadir.mkdir(parents=True, exist_ok=True)
dataset = OpenMSDataset(datadir)
data = Bunch(
    sub01=dataset.fetch(
        subject="01",
        modality="T1w",
        dtype="cross_sectional",
    ),
    sub02=dataset.fetch(
        subject="02",
        modality="T1w",
        dtype="cross_sectional",
    ),
)
print(data)
[info] - downloading:
https://raw.githubusercontent.com/muschellij2/open_ms_data/refs/heads/master/cro
ss_sectional/raw/patient02/T1W.nii.gz
Bunch(
  sub01: Bunch(
    description: PosixPath('/tmp/brainprep-data/rawdata/dataset_description.json')
    anat: PosixPath('/tmp/brainprep-data/rawdata/sub-01/ses-01/anat/sub-01_T1w.nii.gz')
  )
  sub02: Bunch(
    description: PosixPath('/tmp/brainprep-data/rawdata/dataset_description.json')
    anat: PosixPath('/tmp/brainprep-data/rawdata/sub-02/ses-01/anat/sub-02_T1w.nii.gz')
  )
)

Analysis

Let’s now perform the preprocessing using BrainPrep. As with many tutorials, we won’t execute the code directly here. However, feel free to set the ‘dryrun’ configuration to False to actually run each step and generate results on disk.

from brainprep.workflow import (
    brainprep_quasiraw,
    brainprep_group_quasiraw,
)
from brainprep.config import Config
from brainprep.reporting import RSTReport

outdir = Path("/tmp/brainprep-quasiraw")
outdir.mkdir(parents=True, exist_ok=True)
with Config(dryrun=True, verbose=True):
    for subject_data in data.values():
        report = RSTReport()
        brainprep_quasiraw(
            anatomical_file=subject_data.anat,
            output_dir=outdir,
            keep_intermediate=True,
        )
        print(report)
    outputs = brainprep_group_quasiraw(
        output_dir=outdir,
    )
[warn] - BIDS file name does not contain run key: sub-01_T1w.nii.gz
[title] - Subject Level Quasi-RAW...
[info] - setting template file:
/home/runner/work/brainprep/brainprep/doc/../brainprep/resources/MNI152_T1_1mm_b
rain.nii.gz
[info] - setting workspace directory:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace
[command] - fslreorient2std
/tmp/brainprep-data/rawdata/sub-01/ses-01/anat/sub-01_T1w.nii.gz
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/01
-reorient/sub-01_ses-01_run-34706_mod-T1w_reorient.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/01
-reorient/sub-01_ses-01_run-34706_mod-T1w_reorient.nii.gz
[command] - mri_synthstrip -i
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/01
-reorient/sub-01_ses-01_run-34706_mod-T1w_reorient.nii.gz -m
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02
-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz --no-csf
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02
-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz
[command] - fslmaths
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/01
-reorient/sub-01_ses-01_run-34706_mod-T1w_reorient.nii.gz -mas
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02
-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/03
-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/03
-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz
[command] - flirt -in
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/03
-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz -ref
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/03
-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz -applyisoxfm 1 -out
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04
-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz -omat
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04
-scale/sub-01_ses-01_run-34706_mod-T1w_scale.txt -verbose 1
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04
-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04
-scale/sub-01_ses-01_run-34706_mod-T1w_scale.txt
[command] - flirt -in
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02
-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz -ref
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02
-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz -applyisoxfm 1 -out
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05
-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz -omat
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05
-scale/sub-01_ses-01_run-34706_mod-T1w_scale.txt -verbose 1
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05
-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05
-scale/sub-01_ses-01_run-34706_mod-T1w_scale.txt
[command] - N4BiasFieldCorrection -d 3 -i
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04
-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz -s 1 -b [1x1x1,3] -c
[50x50x50x50,0.001] -t [0.15,0.01,200] -x
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05
-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz -o
[/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/0
6-biasfield/sub-01_ses-01_run-34706_mod-T1w_biascorrected.nii.gz,/tmp/brainprep-
quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06-biasfield/sub-
01_ses-01_run-34706_mod-T1w_biasfield.nii.gz] -v
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06
-biasfield/sub-01_ses-01_run-34706_mod-T1w_biascorrected.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06
-biasfield/sub-01_ses-01_run-34706_mod-T1w_biasfield.nii.gz
[command] - flirt -in
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06
-biasfield/sub-01_ses-01_run-34706_mod-T1w_biascorrected.nii.gz -ref
/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.ni
i.gz -cost normmi -searchcost normmi -anglerep euler -bins 256 -interp trilinear
-dof 9 -out
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07
-affine/sub-01_ses-01_run-34706_mod-T1w_affine.nii.gz -omat
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07
-affine/sub-01_ses-01_run-34706_mod-T1w_affine.txt -verbose 1
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07
-affine/sub-01_ses-01_run-34706_mod-T1w_affine.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07
-affine/sub-01_ses-01_run-34706_mod-T1w_affine.txt
[command] - flirt -in
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06
-biasfield/sub-01_ses-01_run-34706_mod-T1w_biascorrected.nii.gz -ref
/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.ni
i.gz -init
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07
-affine/sub-01_ses-01_run-34706_mod-T1w_affine.txt -interp spline -applyxfm -out
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/08
-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/08
-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz
[command] - flirt -in
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02
-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz -ref
/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.ni
i.gz -init
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07
-affine/sub-01_ses-01_run-34706_mod-T1w_affine.txt -interp nearestneighbour
-applyxfm -out
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/09
-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/09
-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz
[command] - fslmaths
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/08
-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz -mas
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/09
-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/10
-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/10
-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz
[title] - Subject Level Quasi-RAW done.
Bunch(
  step1: Bunch(
    module: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    description: '\n    Quasi-RAW pre-processing.\n\n    Applies the Quasi-RAW pre-processing described in\n    :footcite:p:`dufumier2022openbhb`. This includes:\n\n    1) Reorient the anatomical image to standard MNI152 template space.\n    2) Compute a brain mask using a skull-stripping tool.\n    3) Apply the brain mask to the anatomical image.\n    4) Resample the anatomical image to 1mm isotropic voxel size.\n    5) Resample the brain mask image to 1mm isotropic voxel size.\n    6) Perform N4 bias field correction.\n    7) Linearly (9 dof) register the image to the MNI152 1mm template space.\n    8) Apply the registration to the antomical image.\n    9) Apply the registration to the brain mask image.\n    10) Apply the brain mask to the registered anatomical image.\n\n    Parameters\n    ----------\n    anatomical_file: File\n        Path to the input image file.\n    output_dir: Directory\n        Directory where the outputs will be saved (i.e., the root of your\n        dataset).\n    keep_intermediate : bool\n        If True, retains intermediate results (i.e., the workspace); useful\n        for debugging. Default False.\n    **kwargs : dict\n        entities: dict\n            Dictionary of parsed BIDS entities.\n\n    Returns\n    -------\n    Bunch\n        A dictionary-like object containing:\n\n        - aligned_anatomical_file : File - path to the aligned anatomical\n          image - a Nifti file with the suffix "_T1w".\n        - aligned_mask_file : File - path to the aligned mask image - a\n          Nifti file with the suffix "_mod-T1w_brainmask".\n        - transform_file : File - path to the 9 dof affine transformation - a\n          text file with the suffix "_mod-T1w_affine".\n\n    Raises\n    ------\n    ValueError\n        If the input anatomical file is not BIDS-compliant.\n\n    Notes\n    -----\n    This workflow assumes the anatomical image is organized in BIDS.\n\n    References\n    ----------\n\n    .. footbibliography::\n\n    Examples\n    --------\n    >>> from brainprep.config import Config\n    >>> from brainprep.reporting import RSTReport\n    >>> from brainprep.workflow import brainprep_quasiraw\n    >>>\n    >>> with Config(dryrun=True, verbose=False):\n    ...     report = RSTReport()\n    ...     outputs = brainprep_quasiraw(\n    ...         anatomical_file=(\n    ...             "/tmp/dataset/rawdata/sub-01/ses-01/anat/"\n    ...             "sub-01_ses-01_run-01_T1w.nii.gz"\n    ...         ),\n    ...         output_dir="/tmp/dataset/derivatives",\n    ...     )\n    >>> outputs\n    Bunch(\n      aligned_anatomical_file: PosixPath(\'...\')\n      aligned_mask_file: PosixPath(\'...\')\n      transform_file: PosixPath(\'...\')\n    )\n    '
    inputs: Bunch(
      anatomical_file: PosixPath('/tmp/brainprep-data/rawdata/sub-01/ses-01/anat/sub-01_T1w.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01')
      keep_intermediate: True
      kwargs: {'entities': {'sub': '01', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '34706'}}
    )
    outputs: Bunch(
      aligned_anatomical_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/sub-01_ses-01_run-34706_T1w.nii.gz')
      aligned_mask_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz')
      transform_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/sub-01_ses-01_run-34706_mod-T1w_affine.txt')
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.756817'
      end: '2026-04-01 12:42:41.813486'
      execution_time: 1.574138888888889e-05
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step2: Bunch(
    module: 'brainprep.interfaces.fsl.reorient'
    description: "\n    Reorients a BIDS-compliant anatomical image using FSL's `fslreorient2std`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    output_dir : Directory\n        Directory where the reoriented image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Reorientation command-line.\n    outputs : tuple[File]\n        - reorient_image_file : File - Reoriented input image file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-data/rawdata/sub-01/ses-01/anat/sub-01_T1w.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/01-reorient')
      entities: {'sub': '01', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '34706'}
    )
    outputs: Bunch(
      outputs: (['fslreorient2std', '/tmp/brainprep-data/rawdata/sub-01/ses-01/anat/sub-01_T1w.nii.gz', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/01-reorient/sub-01_ses-01_run-34706_mod-T1w_reorient.nii.gz'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/01-reorient/sub-01_ses-01_run-34706_mod-T1w_reorient.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.762811'
      end: '2026-04-01 12:42:41.762894'
      execution_time: 2.3055555555555555e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step3: Bunch(
    module: 'brainprep.interfaces.freesurfer.brainmask'
    description: "\n    Skull-strip a BIDS-compliant anatomical image using FreeSurfer's\n    `mri_synthstrip`.\n\n    `mri_synthstrip` is a FreeSurfer command-line tool that applies\n    SynthStrip, a deep learning-ased skull-stripping method developed to\n    work across diverse imaging modalities, resolutions, and subject\n    population :footcite:p:`hoopes2022brainmask`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file (T1w, T2w, FLAIR, etc.).\n    output_dir : Directory\n        Directory where the reoriented image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Skull-stripping command-line.\n    outputs : tuple[File]\n        - mask_file : File - Skull-stripped brain image file.\n\n    References\n    ----------\n\n    .. footbibliography::\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/01-reorient/sub-01_ses-01_run-34706_mod-T1w_reorient.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02-brainmask')
      entities: {'sub': '01', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '34706'}
    )
    outputs: Bunch(
      outputs: (['mri_synthstrip', '-i', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/01-reorient/sub-01_ses-01_run-34706_mod-T1w_reorient.nii.gz', '-m', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz', '--no-csf'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.768137'
      end: '2026-04-01 12:42:41.768192'
      execution_time: 1.5277777777777778e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step4: Bunch(
    module: 'brainprep.interfaces.fsl.applymask'
    description: "\n    Apply an isotropic resampling transformation to a BIDS-compliant image\n    file using FSL's `fslmaths`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    mask_file : File\n        Path to a binary mask file.\n    output_dir : Directory\n        Directory where the masked image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Masking command-line.\n    outputs : tuple[File]\n        - masked_image_file : File - masked input image file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/01-reorient/sub-01_ses-01_run-34706_mod-T1w_reorient.nii.gz')
      mask_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/03-applymask')
      entities: {'sub': '01', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '34706'}
    )
    outputs: Bunch(
      outputs: (['fslmaths', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/01-reorient/sub-01_ses-01_run-34706_mod-T1w_reorient.nii.gz', '-mas', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/03-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/03-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.773020'
      end: '2026-04-01 12:42:41.773074'
      execution_time: 1.5e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step5: Bunch(
    module: 'brainprep.interfaces.fsl.scale'
    description: "\n    Apply an isotropic resampling transformation to a BIDS-compliant image\n    file using FSL's `flirt`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    scale : int\n        Scale factor applied in all directions.\n    output_dir : Directory\n        Directory where the scaled image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Scaling command-line.\n    outputs : tuple[File]\n        - scaled_anatomical_file : File - Scaled input image file.\n        - transform_file : File - The associated transformation file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/03-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz')
      scale: 1
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04-scale')
      entities: {'sub': '01', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '34706'}
    )
    outputs: Bunch(
      outputs: (['flirt', '-in', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/03-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz', '-ref', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/03-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz', '-applyisoxfm', '1', '-out', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz', '-omat', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04-scale/sub-01_ses-01_run-34706_mod-T1w_scale.txt', '-verbose', '1'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04-scale/sub-01_ses-01_run-34706_mod-T1w_scale.txt')))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.777863'
      end: '2026-04-01 12:42:41.777936'
      execution_time: 2.0277777777777776e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step6: Bunch(
    module: 'brainprep.interfaces.fsl.scale'
    description: "\n    Apply an isotropic resampling transformation to a BIDS-compliant image\n    file using FSL's `flirt`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    scale : int\n        Scale factor applied in all directions.\n    output_dir : Directory\n        Directory where the scaled image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Scaling command-line.\n    outputs : tuple[File]\n        - scaled_anatomical_file : File - Scaled input image file.\n        - transform_file : File - The associated transformation file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz')
      scale: 1
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05-scale')
      entities: {'sub': '01', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '34706'}
    )
    outputs: Bunch(
      outputs: (['flirt', '-in', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz', '-ref', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz', '-applyisoxfm', '1', '-out', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz', '-omat', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05-scale/sub-01_ses-01_run-34706_mod-T1w_scale.txt', '-verbose', '1'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05-scale/sub-01_ses-01_run-34706_mod-T1w_scale.txt')))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.783289'
      end: '2026-04-01 12:42:41.783335'
      execution_time: 1.2777777777777779e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step7: Bunch(
    module: 'brainprep.interfaces.ants.biasfield'
    description: "\n    Bias field correction of a BIDS-compliant anatomical image using ANTs's\n    `N4BiasFieldCorrection`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    mask_file: File\n        Path to a binary brain mask file.\n    output_dir : Directory\n        Directory where the reoriented image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Bias field correction command-line.\n    outputs : tuple[File]\n        - bc_image_file : File - The bias corrected input image file.\n        - bc_field_file : File - The estimated bias field.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz')
      mask_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06-biasfield')
      entities: {'sub': '01', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '34706'}
    )
    outputs: Bunch(
      outputs: (['N4BiasFieldCorrection', '-d', '3', '-i', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/04-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz', '-s', '1', '-b', '[1x1x1,3]', '-c', '[50x50x50x50,0.001]', '-t', '[0.15,0.01,200]', '-x', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/05-scale/sub-01_ses-01_run-34706_mod-T1w_scale.nii.gz', '-o', '[/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06-biasfield/sub-01_ses-01_run-34706_mod-T1w_biascorrected.nii.gz,/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06-biasfield/sub-01_ses-01_run-34706_mod-T1w_biasfield.nii.gz]', '-v'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06-biasfield/sub-01_ses-01_run-34706_mod-T1w_biascorrected.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06-biasfield/sub-01_ses-01_run-34706_mod-T1w_biasfield.nii.gz')))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.788571'
      end: '2026-04-01 12:42:41.788639'
      execution_time: 1.888888888888889e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step8: Bunch(
    module: 'brainprep.interfaces.fsl.affine'
    description: "\n    Affinely register a BIDS-compliant anatomical image to a template file\n    using FSL's `flirt`.\n\n    Parameters\n    ----------\n    anatomical_file : File\n        Path to the input image file.\n    template_file: File\n        Path to the image file defining the template space.\n    output_dir : Directory\n        Directory where the affine transformation will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Registration command-line.\n    outputs : tuple[File]\n        - aligned_anatomical_file : File - Aligned input image file.\n        - transform_file : File - The affine transformation file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      anatomical_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06-biasfield/sub-01_ses-01_run-34706_mod-T1w_biascorrected.nii.gz')
      template_file: PosixPath('/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07-affine')
      entities: {'sub': '01', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '34706'}
    )
    outputs: Bunch(
      outputs: (['flirt', '-in', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06-biasfield/sub-01_ses-01_run-34706_mod-T1w_biascorrected.nii.gz', '-ref', '/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz', '-cost', 'normmi', '-searchcost', 'normmi', '-anglerep', 'euler', '-bins', '256', '-interp', 'trilinear', '-dof', '9', '-out', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07-affine/sub-01_ses-01_run-34706_mod-T1w_affine.nii.gz', '-omat', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07-affine/sub-01_ses-01_run-34706_mod-T1w_affine.txt', '-verbose', '1'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07-affine/sub-01_ses-01_run-34706_mod-T1w_affine.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07-affine/sub-01_ses-01_run-34706_mod-T1w_affine.txt')))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.794123'
      end: '2026-04-01 12:42:41.794190'
      execution_time: 1.861111111111111e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step9: Bunch(
    module: 'brainprep.interfaces.fsl.applyaffine'
    description: "\n    Apply an affine transformation to a BIDS-compliant image file using FSL's\n    `flirt`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    template_file: File\n        Path to the image file defining the template space.\n    transform_file : File\n        Path to the affine transformation file.\n    output_dir : Directory\n        Directory where the aligned image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n    interpolation: str\n        The interpolation method: 'trilinear', 'nearestneighbour', 'sinc', or\n        'spline'. Default 'spline'.\n\n    Returns\n    -------\n    command : list[str]\n        Alignment command-line.\n    outputs : tuple[File]\n        - aligned_image_file : File - Aligned input image file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06-biasfield/sub-01_ses-01_run-34706_mod-T1w_biascorrected.nii.gz')
      template_file: PosixPath('/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz')
      transform_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07-affine/sub-01_ses-01_run-34706_mod-T1w_affine.txt')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/08-applyaffine')
      entities: {'sub': '01', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '34706'}
      interpolation: 'spline'
    )
    outputs: Bunch(
      outputs: (['flirt', '-in', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/06-biasfield/sub-01_ses-01_run-34706_mod-T1w_biascorrected.nii.gz', '-ref', '/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz', '-init', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07-affine/sub-01_ses-01_run-34706_mod-T1w_affine.txt', '-interp', 'spline', '-applyxfm', '-out', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/08-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/08-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.799561'
      end: '2026-04-01 12:42:41.799611'
      execution_time: 1.388888888888889e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step10: Bunch(
    module: 'brainprep.interfaces.fsl.applyaffine'
    description: "\n    Apply an affine transformation to a BIDS-compliant image file using FSL's\n    `flirt`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    template_file: File\n        Path to the image file defining the template space.\n    transform_file : File\n        Path to the affine transformation file.\n    output_dir : Directory\n        Directory where the aligned image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n    interpolation: str\n        The interpolation method: 'trilinear', 'nearestneighbour', 'sinc', or\n        'spline'. Default 'spline'.\n\n    Returns\n    -------\n    command : list[str]\n        Alignment command-line.\n    outputs : tuple[File]\n        - aligned_image_file : File - Aligned input image file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz')
      template_file: PosixPath('/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz')
      transform_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07-affine/sub-01_ses-01_run-34706_mod-T1w_affine.txt')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/09-applyaffine')
      entities: {'sub': '01', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '34706'}
      interpolation: 'nearestneighbour'
    )
    outputs: Bunch(
      outputs: (['flirt', '-in', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/02-brainmask/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz', '-ref', '/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz', '-init', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07-affine/sub-01_ses-01_run-34706_mod-T1w_affine.txt', '-interp', 'nearestneighbour', '-applyxfm', '-out', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/09-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/09-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.804340'
      end: '2026-04-01 12:42:41.804374'
      execution_time: 9.444444444444445e-09
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step11: Bunch(
    module: 'brainprep.interfaces.fsl.applymask'
    description: "\n    Apply an isotropic resampling transformation to a BIDS-compliant image\n    file using FSL's `fslmaths`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    mask_file : File\n        Path to a binary mask file.\n    output_dir : Directory\n        Directory where the masked image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Masking command-line.\n    outputs : tuple[File]\n        - masked_image_file : File - masked input image file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/08-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz')
      mask_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/09-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/10-applymask')
      entities: {'sub': '01', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '34706'}
    )
    outputs: Bunch(
      outputs: (['fslmaths', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/08-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz', '-mas', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/09-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/10-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/10-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.808886'
      end: '2026-04-01 12:42:41.808920'
      execution_time: 9.444444444444445e-09
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step12: Bunch(
    module: 'brainprep.interfaces.utils.copyfiles'
    description: '\n    Copy input image files.\n\n    Parameters\n    ----------\n    source_image_files : list[File]\n        Path to the image to be copied.\n    destination_image_files : list[File]\n        Path to the locations where images will be copied.\n    output_dir : Directory\n        Directory where the images are copied.\n    dryrun : bool\n        If True, skip actual computation and file writing. Default False.\n    '
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      source_image_files: [PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/10-applymask/sub-01_ses-01_run-34706_mod-T1w_applymask.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/09-applyaffine/sub-01_ses-01_run-34706_mod-T1w_applyaffine.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/workspace/07-affine/sub-01_ses-01_run-34706_mod-T1w_affine.txt')]
      destination_image_files: [PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/sub-01_ses-01_run-34706_T1w.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/sub-01_ses-01_run-34706_mod-T1w_brainmask.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01/sub-01_ses-01_run-34706_mod-T1w_affine.txt')]
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-01/ses-01')
      dryrun: False
    )
    outputs: Bunch(
      outputs: None
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.813422'
      end: '2026-04-01 12:42:41.813441'
      execution_time: 5.2777777777777784e-09
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
)
[warn] - BIDS file name does not contain run key: sub-02_T1w.nii.gz
[title] - Subject Level Quasi-RAW...
[info] - setting template file:
/home/runner/work/brainprep/brainprep/doc/../brainprep/resources/MNI152_T1_1mm_b
rain.nii.gz
[info] - setting workspace directory:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace
[command] - fslreorient2std
/tmp/brainprep-data/rawdata/sub-02/ses-01/anat/sub-02_T1w.nii.gz
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/01
-reorient/sub-02_ses-01_run-21669_mod-T1w_reorient.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/01
-reorient/sub-02_ses-01_run-21669_mod-T1w_reorient.nii.gz
[command] - mri_synthstrip -i
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/01
-reorient/sub-02_ses-01_run-21669_mod-T1w_reorient.nii.gz -m
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02
-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz --no-csf
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02
-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz
[command] - fslmaths
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/01
-reorient/sub-02_ses-01_run-21669_mod-T1w_reorient.nii.gz -mas
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02
-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/03
-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/03
-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz
[command] - flirt -in
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/03
-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz -ref
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/03
-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz -applyisoxfm 1 -out
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04
-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz -omat
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04
-scale/sub-02_ses-01_run-21669_mod-T1w_scale.txt -verbose 1
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04
-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04
-scale/sub-02_ses-01_run-21669_mod-T1w_scale.txt
[command] - flirt -in
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02
-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz -ref
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02
-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz -applyisoxfm 1 -out
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05
-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz -omat
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05
-scale/sub-02_ses-01_run-21669_mod-T1w_scale.txt -verbose 1
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05
-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05
-scale/sub-02_ses-01_run-21669_mod-T1w_scale.txt
[command] - N4BiasFieldCorrection -d 3 -i
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04
-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz -s 1 -b [1x1x1,3] -c
[50x50x50x50,0.001] -t [0.15,0.01,200] -x
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05
-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz -o
[/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/0
6-biasfield/sub-02_ses-01_run-21669_mod-T1w_biascorrected.nii.gz,/tmp/brainprep-
quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06-biasfield/sub-
02_ses-01_run-21669_mod-T1w_biasfield.nii.gz] -v
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06
-biasfield/sub-02_ses-01_run-21669_mod-T1w_biascorrected.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06
-biasfield/sub-02_ses-01_run-21669_mod-T1w_biasfield.nii.gz
[command] - flirt -in
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06
-biasfield/sub-02_ses-01_run-21669_mod-T1w_biascorrected.nii.gz -ref
/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.ni
i.gz -cost normmi -searchcost normmi -anglerep euler -bins 256 -interp trilinear
-dof 9 -out
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07
-affine/sub-02_ses-01_run-21669_mod-T1w_affine.nii.gz -omat
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07
-affine/sub-02_ses-01_run-21669_mod-T1w_affine.txt -verbose 1
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07
-affine/sub-02_ses-01_run-21669_mod-T1w_affine.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07
-affine/sub-02_ses-01_run-21669_mod-T1w_affine.txt
[command] - flirt -in
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06
-biasfield/sub-02_ses-01_run-21669_mod-T1w_biascorrected.nii.gz -ref
/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.ni
i.gz -init
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07
-affine/sub-02_ses-01_run-21669_mod-T1w_affine.txt -interp spline -applyxfm -out
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/08
-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/08
-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz
[command] - flirt -in
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02
-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz -ref
/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.ni
i.gz -init
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07
-affine/sub-02_ses-01_run-21669_mod-T1w_affine.txt -interp nearestneighbour
-applyxfm -out
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/09
-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/09
-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz
[command] - fslmaths
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/08
-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz -mas
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/09
-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/10
-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/10
-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz
[title] - Subject Level Quasi-RAW done.
Bunch(
  step1: Bunch(
    module: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    description: '\n    Quasi-RAW pre-processing.\n\n    Applies the Quasi-RAW pre-processing described in\n    :footcite:p:`dufumier2022openbhb`. This includes:\n\n    1) Reorient the anatomical image to standard MNI152 template space.\n    2) Compute a brain mask using a skull-stripping tool.\n    3) Apply the brain mask to the anatomical image.\n    4) Resample the anatomical image to 1mm isotropic voxel size.\n    5) Resample the brain mask image to 1mm isotropic voxel size.\n    6) Perform N4 bias field correction.\n    7) Linearly (9 dof) register the image to the MNI152 1mm template space.\n    8) Apply the registration to the antomical image.\n    9) Apply the registration to the brain mask image.\n    10) Apply the brain mask to the registered anatomical image.\n\n    Parameters\n    ----------\n    anatomical_file: File\n        Path to the input image file.\n    output_dir: Directory\n        Directory where the outputs will be saved (i.e., the root of your\n        dataset).\n    keep_intermediate : bool\n        If True, retains intermediate results (i.e., the workspace); useful\n        for debugging. Default False.\n    **kwargs : dict\n        entities: dict\n            Dictionary of parsed BIDS entities.\n\n    Returns\n    -------\n    Bunch\n        A dictionary-like object containing:\n\n        - aligned_anatomical_file : File - path to the aligned anatomical\n          image - a Nifti file with the suffix "_T1w".\n        - aligned_mask_file : File - path to the aligned mask image - a\n          Nifti file with the suffix "_mod-T1w_brainmask".\n        - transform_file : File - path to the 9 dof affine transformation - a\n          text file with the suffix "_mod-T1w_affine".\n\n    Raises\n    ------\n    ValueError\n        If the input anatomical file is not BIDS-compliant.\n\n    Notes\n    -----\n    This workflow assumes the anatomical image is organized in BIDS.\n\n    References\n    ----------\n\n    .. footbibliography::\n\n    Examples\n    --------\n    >>> from brainprep.config import Config\n    >>> from brainprep.reporting import RSTReport\n    >>> from brainprep.workflow import brainprep_quasiraw\n    >>>\n    >>> with Config(dryrun=True, verbose=False):\n    ...     report = RSTReport()\n    ...     outputs = brainprep_quasiraw(\n    ...         anatomical_file=(\n    ...             "/tmp/dataset/rawdata/sub-01/ses-01/anat/"\n    ...             "sub-01_ses-01_run-01_T1w.nii.gz"\n    ...         ),\n    ...         output_dir="/tmp/dataset/derivatives",\n    ...     )\n    >>> outputs\n    Bunch(\n      aligned_anatomical_file: PosixPath(\'...\')\n      aligned_mask_file: PosixPath(\'...\')\n      transform_file: PosixPath(\'...\')\n    )\n    '
    inputs: Bunch(
      anatomical_file: PosixPath('/tmp/brainprep-data/rawdata/sub-02/ses-01/anat/sub-02_T1w.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01')
      keep_intermediate: True
      kwargs: {'entities': {'sub': '02', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '21669'}}
    )
    outputs: Bunch(
      aligned_anatomical_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/sub-02_ses-01_run-21669_T1w.nii.gz')
      aligned_mask_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz')
      transform_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/sub-02_ses-01_run-21669_mod-T1w_affine.txt')
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.843009'
      end: '2026-04-01 12:42:41.891109'
      execution_time: 1.336111111111111e-05
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step2: Bunch(
    module: 'brainprep.interfaces.fsl.reorient'
    description: "\n    Reorients a BIDS-compliant anatomical image using FSL's `fslreorient2std`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    output_dir : Directory\n        Directory where the reoriented image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Reorientation command-line.\n    outputs : tuple[File]\n        - reorient_image_file : File - Reoriented input image file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-data/rawdata/sub-02/ses-01/anat/sub-02_T1w.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/01-reorient')
      entities: {'sub': '02', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '21669'}
    )
    outputs: Bunch(
      outputs: (['fslreorient2std', '/tmp/brainprep-data/rawdata/sub-02/ses-01/anat/sub-02_T1w.nii.gz', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/01-reorient/sub-02_ses-01_run-21669_mod-T1w_reorient.nii.gz'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/01-reorient/sub-02_ses-01_run-21669_mod-T1w_reorient.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.846880'
      end: '2026-04-01 12:42:41.846933'
      execution_time: 1.4722222222222223e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step3: Bunch(
    module: 'brainprep.interfaces.freesurfer.brainmask'
    description: "\n    Skull-strip a BIDS-compliant anatomical image using FreeSurfer's\n    `mri_synthstrip`.\n\n    `mri_synthstrip` is a FreeSurfer command-line tool that applies\n    SynthStrip, a deep learning-ased skull-stripping method developed to\n    work across diverse imaging modalities, resolutions, and subject\n    population :footcite:p:`hoopes2022brainmask`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file (T1w, T2w, FLAIR, etc.).\n    output_dir : Directory\n        Directory where the reoriented image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Skull-stripping command-line.\n    outputs : tuple[File]\n        - mask_file : File - Skull-stripped brain image file.\n\n    References\n    ----------\n\n    .. footbibliography::\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/01-reorient/sub-02_ses-01_run-21669_mod-T1w_reorient.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02-brainmask')
      entities: {'sub': '02', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '21669'}
    )
    outputs: Bunch(
      outputs: (['mri_synthstrip', '-i', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/01-reorient/sub-02_ses-01_run-21669_mod-T1w_reorient.nii.gz', '-m', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz', '--no-csf'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.850718'
      end: '2026-04-01 12:42:41.850768'
      execution_time: 1.388888888888889e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step4: Bunch(
    module: 'brainprep.interfaces.fsl.applymask'
    description: "\n    Apply an isotropic resampling transformation to a BIDS-compliant image\n    file using FSL's `fslmaths`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    mask_file : File\n        Path to a binary mask file.\n    output_dir : Directory\n        Directory where the masked image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Masking command-line.\n    outputs : tuple[File]\n        - masked_image_file : File - masked input image file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/01-reorient/sub-02_ses-01_run-21669_mod-T1w_reorient.nii.gz')
      mask_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/03-applymask')
      entities: {'sub': '02', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '21669'}
    )
    outputs: Bunch(
      outputs: (['fslmaths', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/01-reorient/sub-02_ses-01_run-21669_mod-T1w_reorient.nii.gz', '-mas', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/03-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/03-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.854862'
      end: '2026-04-01 12:42:41.854907'
      execution_time: 1.2500000000000001e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step5: Bunch(
    module: 'brainprep.interfaces.fsl.scale'
    description: "\n    Apply an isotropic resampling transformation to a BIDS-compliant image\n    file using FSL's `flirt`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    scale : int\n        Scale factor applied in all directions.\n    output_dir : Directory\n        Directory where the scaled image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Scaling command-line.\n    outputs : tuple[File]\n        - scaled_anatomical_file : File - Scaled input image file.\n        - transform_file : File - The associated transformation file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/03-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz')
      scale: 1
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04-scale')
      entities: {'sub': '02', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '21669'}
    )
    outputs: Bunch(
      outputs: (['flirt', '-in', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/03-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz', '-ref', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/03-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz', '-applyisoxfm', '1', '-out', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz', '-omat', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04-scale/sub-02_ses-01_run-21669_mod-T1w_scale.txt', '-verbose', '1'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04-scale/sub-02_ses-01_run-21669_mod-T1w_scale.txt')))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.858851'
      end: '2026-04-01 12:42:41.858904'
      execution_time: 1.4722222222222223e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step6: Bunch(
    module: 'brainprep.interfaces.fsl.scale'
    description: "\n    Apply an isotropic resampling transformation to a BIDS-compliant image\n    file using FSL's `flirt`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    scale : int\n        Scale factor applied in all directions.\n    output_dir : Directory\n        Directory where the scaled image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Scaling command-line.\n    outputs : tuple[File]\n        - scaled_anatomical_file : File - Scaled input image file.\n        - transform_file : File - The associated transformation file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz')
      scale: 1
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05-scale')
      entities: {'sub': '02', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '21669'}
    )
    outputs: Bunch(
      outputs: (['flirt', '-in', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz', '-ref', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz', '-applyisoxfm', '1', '-out', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz', '-omat', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05-scale/sub-02_ses-01_run-21669_mod-T1w_scale.txt', '-verbose', '1'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05-scale/sub-02_ses-01_run-21669_mod-T1w_scale.txt')))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.863447'
      end: '2026-04-01 12:42:41.863490'
      execution_time: 1.1944444444444444e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step7: Bunch(
    module: 'brainprep.interfaces.ants.biasfield'
    description: "\n    Bias field correction of a BIDS-compliant anatomical image using ANTs's\n    `N4BiasFieldCorrection`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    mask_file: File\n        Path to a binary brain mask file.\n    output_dir : Directory\n        Directory where the reoriented image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Bias field correction command-line.\n    outputs : tuple[File]\n        - bc_image_file : File - The bias corrected input image file.\n        - bc_field_file : File - The estimated bias field.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz')
      mask_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06-biasfield')
      entities: {'sub': '02', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '21669'}
    )
    outputs: Bunch(
      outputs: (['N4BiasFieldCorrection', '-d', '3', '-i', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/04-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz', '-s', '1', '-b', '[1x1x1,3]', '-c', '[50x50x50x50,0.001]', '-t', '[0.15,0.01,200]', '-x', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/05-scale/sub-02_ses-01_run-21669_mod-T1w_scale.nii.gz', '-o', '[/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06-biasfield/sub-02_ses-01_run-21669_mod-T1w_biascorrected.nii.gz,/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06-biasfield/sub-02_ses-01_run-21669_mod-T1w_biasfield.nii.gz]', '-v'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06-biasfield/sub-02_ses-01_run-21669_mod-T1w_biascorrected.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06-biasfield/sub-02_ses-01_run-21669_mod-T1w_biasfield.nii.gz')))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.868226'
      end: '2026-04-01 12:42:41.868298'
      execution_time: 2e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step8: Bunch(
    module: 'brainprep.interfaces.fsl.affine'
    description: "\n    Affinely register a BIDS-compliant anatomical image to a template file\n    using FSL's `flirt`.\n\n    Parameters\n    ----------\n    anatomical_file : File\n        Path to the input image file.\n    template_file: File\n        Path to the image file defining the template space.\n    output_dir : Directory\n        Directory where the affine transformation will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Registration command-line.\n    outputs : tuple[File]\n        - aligned_anatomical_file : File - Aligned input image file.\n        - transform_file : File - The affine transformation file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      anatomical_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06-biasfield/sub-02_ses-01_run-21669_mod-T1w_biascorrected.nii.gz')
      template_file: PosixPath('/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07-affine')
      entities: {'sub': '02', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '21669'}
    )
    outputs: Bunch(
      outputs: (['flirt', '-in', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06-biasfield/sub-02_ses-01_run-21669_mod-T1w_biascorrected.nii.gz', '-ref', '/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz', '-cost', 'normmi', '-searchcost', 'normmi', '-anglerep', 'euler', '-bins', '256', '-interp', 'trilinear', '-dof', '9', '-out', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07-affine/sub-02_ses-01_run-21669_mod-T1w_affine.nii.gz', '-omat', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07-affine/sub-02_ses-01_run-21669_mod-T1w_affine.txt', '-verbose', '1'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07-affine/sub-02_ses-01_run-21669_mod-T1w_affine.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07-affine/sub-02_ses-01_run-21669_mod-T1w_affine.txt')))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.873126'
      end: '2026-04-01 12:42:41.873188'
      execution_time: 1.7222222222222222e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step9: Bunch(
    module: 'brainprep.interfaces.fsl.applyaffine'
    description: "\n    Apply an affine transformation to a BIDS-compliant image file using FSL's\n    `flirt`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    template_file: File\n        Path to the image file defining the template space.\n    transform_file : File\n        Path to the affine transformation file.\n    output_dir : Directory\n        Directory where the aligned image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n    interpolation: str\n        The interpolation method: 'trilinear', 'nearestneighbour', 'sinc', or\n        'spline'. Default 'spline'.\n\n    Returns\n    -------\n    command : list[str]\n        Alignment command-line.\n    outputs : tuple[File]\n        - aligned_image_file : File - Aligned input image file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06-biasfield/sub-02_ses-01_run-21669_mod-T1w_biascorrected.nii.gz')
      template_file: PosixPath('/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz')
      transform_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07-affine/sub-02_ses-01_run-21669_mod-T1w_affine.txt')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/08-applyaffine')
      entities: {'sub': '02', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '21669'}
      interpolation: 'spline'
    )
    outputs: Bunch(
      outputs: (['flirt', '-in', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/06-biasfield/sub-02_ses-01_run-21669_mod-T1w_biascorrected.nii.gz', '-ref', '/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz', '-init', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07-affine/sub-02_ses-01_run-21669_mod-T1w_affine.txt', '-interp', 'spline', '-applyxfm', '-out', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/08-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/08-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.878252'
      end: '2026-04-01 12:42:41.878297'
      execution_time: 1.2500000000000001e-08
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step10: Bunch(
    module: 'brainprep.interfaces.fsl.applyaffine'
    description: "\n    Apply an affine transformation to a BIDS-compliant image file using FSL's\n    `flirt`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    template_file: File\n        Path to the image file defining the template space.\n    transform_file : File\n        Path to the affine transformation file.\n    output_dir : Directory\n        Directory where the aligned image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n    interpolation: str\n        The interpolation method: 'trilinear', 'nearestneighbour', 'sinc', or\n        'spline'. Default 'spline'.\n\n    Returns\n    -------\n    command : list[str]\n        Alignment command-line.\n    outputs : tuple[File]\n        - aligned_image_file : File - Aligned input image file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz')
      template_file: PosixPath('/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz')
      transform_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07-affine/sub-02_ses-01_run-21669_mod-T1w_affine.txt')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/09-applyaffine')
      entities: {'sub': '02', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '21669'}
      interpolation: 'nearestneighbour'
    )
    outputs: Bunch(
      outputs: (['flirt', '-in', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/02-brainmask/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz', '-ref', '/home/runner/work/brainprep/brainprep/brainprep/resources/MNI152_T1_1mm_brain.nii.gz', '-init', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07-affine/sub-02_ses-01_run-21669_mod-T1w_affine.txt', '-interp', 'nearestneighbour', '-applyxfm', '-out', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/09-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/09-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.882598'
      end: '2026-04-01 12:42:41.882630'
      execution_time: 8.888888888888889e-09
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step11: Bunch(
    module: 'brainprep.interfaces.fsl.applymask'
    description: "\n    Apply an isotropic resampling transformation to a BIDS-compliant image\n    file using FSL's `fslmaths`.\n\n    Parameters\n    ----------\n    image_file : File\n        Path to the input image file.\n    mask_file : File\n        Path to a binary mask file.\n    output_dir : Directory\n        Directory where the masked image will be saved.\n    entities : dict\n        A dictionary of parsed BIDS entities including modality.\n\n    Returns\n    -------\n    command : list[str]\n        Masking command-line.\n    outputs : tuple[File]\n        - masked_image_file : File - masked input image file.\n    "
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      image_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/08-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz')
      mask_file: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/09-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz')
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/10-applymask')
      entities: {'sub': '02', 'modality': 'T1w', 'mod': 'T1w', 'ses': '01', 'run': '21669'}
    )
    outputs: Bunch(
      outputs: (['fslmaths', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/08-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz', '-mas', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/09-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz', '/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/10-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz'], (PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/10-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz'),))
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.886809'
      end: '2026-04-01 12:42:41.886843'
      execution_time: 9.444444444444445e-09
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
  step12: Bunch(
    module: 'brainprep.interfaces.utils.copyfiles'
    description: '\n    Copy input image files.\n\n    Parameters\n    ----------\n    source_image_files : list[File]\n        Path to the image to be copied.\n    destination_image_files : list[File]\n        Path to the locations where images will be copied.\n    output_dir : Directory\n        Directory where the images are copied.\n    dryrun : bool\n        If True, skip actual computation and file writing. Default False.\n    '
    trace: 'brainprep.workflow.quasiraw.brainprep_quasiraw'
    inputs: Bunch(
      source_image_files: [PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/10-applymask/sub-02_ses-01_run-21669_mod-T1w_applymask.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/09-applyaffine/sub-02_ses-01_run-21669_mod-T1w_applyaffine.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/workspace/07-affine/sub-02_ses-01_run-21669_mod-T1w_affine.txt')]
      destination_image_files: [PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/sub-02_ses-01_run-21669_T1w.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/sub-02_ses-01_run-21669_mod-T1w_brainmask.nii.gz'), PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01/sub-02_ses-01_run-21669_mod-T1w_affine.txt')]
      output_dir: PosixPath('/tmp/brainprep-quasiraw/derivatives/quasiraw/subjects/sub-02/ses-01')
      dryrun: False
    )
    outputs: Bunch(
      outputs: None
    )
    runtime: Bunch(
      start: '2026-04-01 12:42:41.891074'
      end: '2026-04-01 12:42:41.891083'
      execution_time: 2.5e-09
      brainprep_version: '2.0.0'
      platform: 'Linux-6.17.0-1008-azure-x86_64-with-glibc2.39'
      hostname: 'runnervmrg6be'
    )
    config: Bunch(
      verbose: True
      dryrun: True
      no_color: False
      skip_run_check: False
      cat12_file: PosixPath('/opt/cat12/standalone/cat_standalone.sh')
      spm12_dir: PosixPath('/opt/cat12')
      matlab_dir: PosixPath('/opt/MCR-2017b/v93')
      tpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/tpm/TPM.nii')
      darteltpm_file: PosixPath('/opt/cat12/spm12_mcr/home/gaser/gaser/spm/spm12/toolbox/cat12/templates_MNI152NLin2009cAsym/Template_1_Dartel.nii')
    )
  )
)
[title] - Group Level Quasi-RAW...
[info] - setting template file:
/home/runner/work/brainprep/brainprep/doc/../brainprep/resources/MNI152_T1_1mm_b
rain.nii.gz
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/quality_check/mean_correlations.tsv
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/figures/histogram_mean_correlation.
png
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/quality_check/pca.tsv
[info] - checking output:
/tmp/brainprep-quasiraw/derivatives/quasiraw/figures/pca.png
[title] - Group Level Quasi-RAW done.

CLI

Let’s now generate the same analysis using the CLI. The goal here is to translate the workflow calls into explicit shell commands. See user guide for details.

from pprint import pprint

commands = []
commands.append(
    [
        [
            "brainprep", "subject-level-quasiraw",
            "--anatomical_file", str(subject_data.anat),
            "--output-dir", str(outdir),
            "--keep-intermediate",
        ] for subject_data in data.values()
    ]
)
commands.append(
    [
        [
            "brainprep", "group-level-quasiraw",
            "--output-dir", str(outdir),
        ]
    ]
)
pprint(commands)
[[['brainprep',
   'subject-level-quasiraw',
   '--anatomical_file',
   '/tmp/brainprep-data/rawdata/sub-01/ses-01/anat/sub-01_T1w.nii.gz',
   '--output-dir',
   '/tmp/brainprep-quasiraw',
   '--keep-intermediate'],
  ['brainprep',
   'subject-level-quasiraw',
   '--anatomical_file',
   '/tmp/brainprep-data/rawdata/sub-02/ses-01/anat/sub-02_T1w.nii.gz',
   '--output-dir',
   '/tmp/brainprep-quasiraw',
   '--keep-intermediate']],
 [['brainprep',
   'group-level-quasiraw',
   '--output-dir',
   '/tmp/brainprep-quasiraw']]]

Container

Note that the commands generated by the CLI are not limited to being displayed for reference; they can also be executed directly within the workflow‑dedicated container. By running the commands inside the container, you benefit from a controlled runtime context where all necessary dependencies, libraries, and configuration files are already available. In practice, this means that once the CLI has produced the appropriate instructions, you can simply copy and run them inside the container to achieve the intended results. You can find the BrainPrep images on Docker Hub: Neurospin Docker Hub.

Total running time of the script: (0 minutes 0.892 seconds)

Estimated memory usage: 118 MB

Gallery generated by Sphinx-Gallery