QSMxT#

Author: Ashley Stewart

Citation:

  • QSMxT: Stewart AW, Robinson SD, O’Brien K, et al. QSMxT: Robust masking and artifact reduction for quantitative susceptibility mapping. Magnetic Resonance in Medicine. 2022;87(3):1289-1300. doi:10.1002/mrm.29048

  • QSMxT: Stewart AW, Bollman S, et al. QSMxT/QSMxT. GitHub; 2022. https://github.com/QSMxT/QSM48

Output CPU information#

!cat /proc/cpuinfo | grep 'vendor' | uniq
!cat /proc/cpuinfo | grep 'model name' | uniq
vendor_id	: GenuineIntel
model name	: Intel(R) Xeon(R) Gold 6126 CPU @ 2.60GHz

QSMxT Interactive Notebook#

This interactive notebook estimates Quantitative Susceptibility Maps (QSMs) for two gradient-echo (GRE) MRI acquisitions using QSMxT provided by the Neurodesk project.

What is QSM?#

QSM is a form of quantitative MRI (qMRI) that estimates the magnetic susceptibility distribution across an imaged object. Magnetic susceptibility is the degree to which a material becomes magnetised by an external magnetic field. Major contributors to susceptibility include iron, calcium, and myelin, with the susceptibility of water typically approximating a zero-reference, though it is slightly diamagnetic. Read more about QSM here.

What is QSMxT?#

QSMxT is a suite of tools for building and running automated pipelines for QSM that:

  • is available open-source without any licensing required;

  • is distributed as a software container making it straightforward to access and install (Neurodesk!)

  • scales its processing to execute across many acquisitions through jobs parallelisation (using multiple processors or HPCs) provided by Nipype;

  • automates steps that usually require manual intervention and scripting, including:

    • DICOM to BIDS conversion;

    • QSM reconstruction using a range of algorithms;

    • segmentation using FastSurfer;

    • group space generation using ANTs;

    • export of susceptibility statistics by subject and region of interest (ROI) to CSV.

image.png

How do I access QSMxT?#

There are a few ways you can access QSMxT:

  • This notebook: You can access QSMxT in this notebook right now!

    • If you are running this on a Neurodesk Play instance, you can upload your own data into the sidebar via drag-and-drop.

  • Neurodesktop: QSMxT is in the applications menu of Neurodesktop.

    • On Neurodesk Play, upload your own data into the desktop via drag-and-drop.

    • On a local install of Neurodesk, bring any necessary files into the shared ~/neurodesktop-storage directory

  • Local install: QSMxT can also be installed via the Docker container

  • HPC install: QSMxT can also be installed via the Singularity container for use on HPCs

Download example DICOMs#

Here, we download some example DICOMs from our OSF repository for QSMxT.

These data include GRE and T1-weighted acquisitions for one subject (duplicated to act as two subjects).

!osf -p ru43c clone . > /dev/null 2>&1
!tar xf osfstorage/dicoms-unsorted.tar
!rm -rf osfstorage/
!tree dicoms-unsorted | head
!echo -e "...\nThere are `ls dicoms-unsorted | wc -l` unsorted DICOMs in ./dicoms-unsorted/"
dicoms-unsorted
├── MR.1.1.dcm
├── MR.1.10.dcm
├── MR.1.100.dcm
├── MR.1.101.dcm
├── MR.1.102.dcm
├── MR.1.103.dcm
├── MR.1.104.dcm
├── MR.1.105.dcm
├── MR.1.106.dcm
...
There are 1216 unsorted DICOMs in ./dicoms-unsorted/

Load QSMxT#

To load QSMxT inside a notebook, we can use the available module system:

import module
await module.load('qsmxt/7.2.2')
!qsmxt --version
[INFO]: QSMxT v7.2.2

Data standardisation#

QSMxT requires input data to conform to the Brain Imaging Data Structure (BIDS).

Luckily, QSMxT also provides scripts that can convert unorganised NIfTI or DICOM images to BIDS. If you are using NIfTI images and do not have DICOMs, see nifti-convert.

Sort DICOMs#

Before we can convert DICOMs to BIDS cleanly, we need to sort the DICOMs by subject, session and series.

We can sort the DICOMs using dicom-sort.

Note that this script relies on accurate DICOM header information. If your data is sorted incorrectly, you may need to manually correct the sorting, or sort the files yourself. Be sure to follow the folder structure shown below.

!dicom-sort dicoms-unsorted dicoms-sorted
[INFO]: Running QSMxT 7.2.2
[INFO]: Command: /opt/miniconda-4.7.12.1/bin/dicom-sort dicoms-unsorted dicoms-sorted
[INFO]: Python interpreter: /opt/miniconda-4.7.12.1/bin/python3.8
[INFO]: Reading file list...
[INFO]: 1216 DICOM files found.
[INFO]: Sorting DICOMs in /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/dicoms-sorted...
[INFO]: Identified subject: 1
[INFO]: Identified session: 1 #1 20170705
[INFO]: Identified session: 2 #1 20170705
[INFO]: Finished

Now we can see clearly that there are two subjects, each with one session, each with three DICOM series:

!tree dicoms-sorted -L 3
dicoms-sorted
├── log_2025-06-11_07-55-06538385.txt
├── log_2025-06-11_07-55-22117579.txt
├── references.txt
├── sub-1
│   └── ses-20170705
│       ├── series-5_QSM_p2_1mmIso_TE20
│       ├── series-6_QSM_p2_1mmIso_TE20
│       └── series-6_mp2rage_highRes_0p5iso_slab
└── sub-2
    └── ses-20170705
        ├── series-5_QSM_p2_1mmIso_TE20
        ├── series-6_QSM_p2_1mmIso_TE20
        └── series-6_mp2rage_highRes_0p5iso_slab

10 directories, 3 files

Convert to BIDS#

Now that the DICOMs are sorted, we can convert to BIDS using dicom-convert.

The DICOM to BIDS conversion must identify which series should be used for QSM reconstruction (T2*-weighted), and which series should be used for segmentation (T1-weighted). Because this information is not stored in the DICOM header, the user must provide it, or QSMxT can make a guess based on the ProtocolName field. By default, QSMxT assumes series matching any of the patterns in ['*qsm*', '*t2starw*'] are to be used for QSM, and series matching the pattern ['*t1w*'] are to be used for segmentation. If series cannot be identified, the user must do so. At minimum, at least one QSM series must be identified.

If QSMxT is run interactively, the user will be prompted to identify the relevant series’. However, because we are running QSMxT in a notebook, we disable the interactivity using --auto_yes and provide the missing information using command-line arguments (--t1w_protocol_patterns and --qsm_protocol_patterns). In this case, the T1-weighted scan requires identification, so we pass --t1w_protocol_patterns "*mp2rage*":

!dicom-convert dicoms-sorted bids \
    --t1w_protocol_patterns "*mp2rage*" \
    --auto_yes
[INFO]: Running QSMxT 7.2.2
[INFO]: Command: /opt/miniconda-4.7.12.1/bin/dicom-convert dicoms-sorted bids --t1w_protocol_patterns *mp2rage* --auto_yes
[INFO]: Python interpreter: /opt/miniconda-4.7.12.1/bin/python3.8
[INFO]: Found 2 subjects in '/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/dicoms-sorted'
[INFO]: Converting all DICOMs to NIfTI...
[INFO]: Running command: 'dcm2niix -z n -o "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data" "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/dicoms-sorted/sub-1/ses-20170705/series-6_QSM_p2_1mmIso_TE20" >> "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data/dcm2niix_output.txt"'
[INFO]: Running command: 'dcm2niix -z n -o "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data" "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/dicoms-sorted/sub-1/ses-20170705/series-6_mp2rage_highRes_0p5iso_slab" >> "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data/dcm2niix_output.txt"'
[INFO]: Running command: 'dcm2niix -z n -o "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data" "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/dicoms-sorted/sub-1/ses-20170705/series-5_QSM_p2_1mmIso_TE20" >> "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data/dcm2niix_output.txt"'
[INFO]: Running command: 'dcm2niix -z n -o "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data" "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/dicoms-sorted/sub-2/ses-20170705/series-6_QSM_p2_1mmIso_TE20" >> "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data/dcm2niix_output.txt"'
[INFO]: Running command: 'dcm2niix -z n -o "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data" "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/dicoms-sorted/sub-2/ses-20170705/series-6_mp2rage_highRes_0p5iso_slab" >> "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data/dcm2niix_output.txt"'
[INFO]: Running command: 'dcm2niix -z n -o "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data" "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/dicoms-sorted/sub-2/ses-20170705/series-5_QSM_p2_1mmIso_TE20" >> "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data/dcm2niix_output.txt"'
[INFO]: Loading JSON headers from '/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/.../extra_data' folders...
[INFO]: Checking for GE data requiring correction...
[INFO]: Loading updated JSON headers from '/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/.../extra_data' folders...
[INFO]: Enumerating protocol names and series descriptions from JSON headers...
[INFO]: All protocols identified: dict_keys(['qsm_p2_1mmiso_te20', 'mp2rage_highres_0p5iso_slab'])
[INFO]: Enumerating protocol names with QSM intention using match patterns ['*t2starw*', '*qsm*']...
[INFO]: Identified the following protocols intended for QSM: ['qsm_p2_1mmiso_te20']
[INFO]: Enumerating T1w protocol names using match patterns ['*mp2rage*']...
[INFO]: Identified the following protocols as T1w: ['mp2rage_highres_0p5iso_slab']
[INFO]: Parsing relevant details from JSON headers...
[INFO]: Parsing relevant JSON data from sub-1/ses-20170705...
[INFO]: Parsing relevant JSON data from sub-2/ses-20170705...
Summary of identified files and proposed renames (following BIDS standard):
series-5_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_5 
	 -> sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-mag_T2starw
series-6_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_6_ph 
	 -> sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw
series-6_mp2rage_highRes_0p5iso_slab_mp2rage_highRes_0p5iso_slab_20170705150219_6 
	 -> sub-1_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w
series-5_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_5 
	 -> sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-mag_T2starw
series-6_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_6_ph 
	 -> sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw
series-6_mp2rage_highRes_0p5iso_slab_mp2rage_highRes_0p5iso_slab_20170705150219_6 
	 -> sub-2_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w
[INFO]: Renaming files...
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data/series-5_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_5.json -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/anat/sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-mag_T2starw.json
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data/series-5_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_5.nii -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/anat/sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-mag_T2starw.nii
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data/series-6_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_6_ph.json -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/anat/sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw.json
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data/series-6_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_6_ph.nii -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/anat/sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw.nii
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data/series-6_mp2rage_highRes_0p5iso_slab_mp2rage_highRes_0p5iso_slab_20170705150219_6.json -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/anat/sub-1_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w.json
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/extra_data/series-6_mp2rage_highRes_0p5iso_slab_mp2rage_highRes_0p5iso_slab_20170705150219_6.nii -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/anat/sub-1_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w.nii
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data/series-5_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_5.json -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/anat/sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-mag_T2starw.json
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data/series-5_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_5.nii -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/anat/sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-mag_T2starw.nii
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data/series-6_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_6_ph.json -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/anat/sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw.json
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data/series-6_QSM_p2_1mmIso_TE20_QSM_p2_1mmIso_TE20_20170705134507_6_ph.nii -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/anat/sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw.nii
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data/series-6_mp2rage_highRes_0p5iso_slab_mp2rage_highRes_0p5iso_slab_20170705150219_6.json -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/anat/sub-2_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w.json
[INFO]: Renaming /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/extra_data/series-6_mp2rage_highRes_0p5iso_slab_mp2rage_highRes_0p5iso_slab_20170705150219_6.nii -> /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/anat/sub-2_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w.nii
[INFO]: Generating details for BIDS dataset_description.json...
[INFO]: Writing BIDS dataset_description.json...
[INFO]: Writing BIDS .bidsignore file...
[INFO]: Writing BIDS dataset README...
[INFO]: Finished
!tree bids
bids
├── README
├── dataset_description.json
├── log_2025-06-11_07-55-34311027.txt
├── references.txt
├── sub-1
│   └── ses-20170705
│       ├── anat
│       │   ├── sub-1_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w.json
│       │   ├── sub-1_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w.nii
│       │   ├── sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-mag_T2starw.json
│       │   ├── sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-mag_T2starw.nii
│       │   ├── sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw.json
│       │   └── sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw.nii
│       └── extra_data
│           └── dcm2niix_output.txt
└── sub-2
    └── ses-20170705
        ├── anat
        │   ├── sub-2_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w.json
        │   ├── sub-2_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w.nii
        │   ├── sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-mag_T2starw.json
        │   ├── sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-mag_T2starw.nii
        │   ├── sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw.json
        │   └── sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw.nii
        └── extra_data
            └── dcm2niix_output.txt

8 directories, 18 files

Inspect input data#

Here we define a function we will use to visualise NIfTI images so we can view some of the input data:

%%capture
!pip install seaborn numpy nibabel pandas
from glob import glob
def show_nii(nii_path, title=None, cmap='gray', **imshow_args):
    from matplotlib import pyplot as plt
    import numpy as np
    import nibabel as nib
    import glob

    # load data\n",
    data_1 = nib.load(nii_path).get_fdata()

    # get middle slices\n",
    slc_data1 = np.rot90(data_1[np.shape(data_1)[0]//2,:,:])
    slc_data2 = np.rot90(data_1[:,np.shape(data_1)[1]//2,:])
    slc_data3 = np.rot90(data_1[:,:,np.shape(data_1)[2]//2])

    # show slices\n",
    fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(8,10))
    if title: plt.suptitle(title)

    axes[0].imshow(slc_data1, cmap=cmap, **imshow_args)
    axes[1].imshow(slc_data2, cmap=cmap, **imshow_args)
    axes[2].imshow(slc_data3, cmap=cmap, **imshow_args)

    axes[0].axis('off')
    axes[1].axis('off')
    axes[2].axis('off')

    fig.tight_layout()
    fig.subplots_adjust(top=1.55)
    plt.show()
show_nii(glob("bids/sub-*/ses-*/anat/*mag*nii*")[0], title="Magnitude", vmax=500)
show_nii(glob("bids/sub-*/ses-*/anat/*phase*nii*")[0], title="Phase")
show_nii(glob("bids/sub-*/ses-*/anat/*T1w*nii*")[0], title="T1-weighted")
../_images/62c2273765c26b25ec2f788b48efe0f26fa790c5697c88eb804e65eac730f9ed.png ../_images/c7bae960f933e3c79d1547d71b1c628ebdab1096355e4d2350fb30cc32eb9af9.png ../_images/c3e6842847f29da8a9d4875d836a83d86896133208063b396b19ef3cc3f57a5c.png

Interactive Display using Niivue

from ipyniivue import NiiVue

nv_T1 = NiiVue()
nv_T1.load_volumes([{"path": glob("bids/sub-*/ses-*/anat/*T1w*nii*")[0]}])
nv_T1
from IPython.display import Image
Image(url='https://raw.githubusercontent.com/NeuroDesk/example-notebooks/refs/heads/main/books/images/qsmx_T1.png')

Run QSMxT#

We are now ready to run QSMxT! We will generate susceptibility maps and segmentations, and export analysis CSVs to file.

The usual way of running QSMxT is to use qsmxt bids_dir. This will launch an interactive command-line interface (CLI) to setup your desired pipelines. However, since we are running this in a notebook, we need to use command-line arguments to by-pass the interface and execute a pipeline.

But first, let’s consider our pipeline settings. For QSM reconstruction, QSMxT provides a range of sensible defaults fit for different purposes. We can list the premade QSM pipelines using --list_premades. For the full pipeline details used for each premade pipeline, see qsm_pipelines.json.

!qsmxt --list_premades
=== Premade pipelines ===
default: Default QSMxT settings (GRE; assumes human brain)
gre: Applies suggested settings for 3D-GRE images
epi: Applies suggested settings for 3D-EPI images (assumes human brain)
bet: Applies a traditional BET-masking approach (artefact reduction unavailable; assumes human brain)
fast: Applies a set of fast algorithms
body: Applies suggested settings for non-brain applications
nextqsm: Applies suggested settings for running the NeXtQSM algorithm (assumes human brain)
[INFO]: Finished

For this demonstration, we will go with the fast pipeline. To export segmentations and analysis results, we will use --do_segmentation and --do_analysis. The --auto_yes option avoid the interactive CLI interface that cannot be used in a notebook:

!qsmxt bids \
    --premade fast \
    --do_qsm \
    --do_segmentation \
    --do_analysis \
    --auto_yes
[INFO]: QSMxT v7.2.2
[INFO]: Python interpreter: /opt/miniconda-4.7.12.1/bin/python3.8
[INFO]: Command: qsmxt /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids --premade 'fast' --do_qsm --do_segmentation --do_analysis --auto_yes
[WARNING]: Pipeline is NOT guidelines compliant (see https://doi.org/10.1002/mrm.30006):; Phase-quality-based masking recommended
[INFO]: Available memory: 201.122 GB
[INFO]: Creating QSMxT workflow for sub-1.ses-20170705.acq-qsmp21mmisote20.run-01...
[INFO]: Creating QSMxT workflow for sub-2.ses-20170705.acq-qsmp21mmisote20.run-01...
[INFO]: Running using MultiProc plugin with n_procs=32
250611-07:57:39,29 nipype.workflow INFO:
	 Workflow qsmxt-workflow settings: ['check', 'execution', 'logging', 'monitoring']
250611-07:57:39,249 nipype.workflow INFO:
	 Running in parallel.
250611-07:57:39,256 nipype.workflow INFO:
	 [MultiProc] Running 0 tasks, and 12 jobs ready. Free memory (GB): 219.48/219.48, Free processors: 32/32.
250611-07:57:39,809 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_read-json-me" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/func_read-json-me".
250611-07:57:39,810 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_read-nii" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_read-nii".
250611-07:57:39,812 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_as-canonical" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_as-canonical".
250611-07:57:39,813 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/fastsurfer_segment-t1".
250611-07:57:39,814 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_as-canonical" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_as-canonical".
250611-07:57:39,813 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_read-json-me" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/func_read-json-me".
250611-07:57:39,820 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_read-nii" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_read-nii".
250611-07:57:39,827 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/fastsurfer_segment-t1".
250611-07:57:39,831 nipype.workflow INFO:
	 [Node] Executing "func_read-json-me" <nipype.interfaces.utility.wrappers.Function>
250611-07:57:39,831 nipype.workflow INFO:
	 [Node] Executing "nibabel_as-canonical" <nipype.interfaces.utility.wrappers.Function>
250611-07:57:39,837 nipype.workflow INFO:
	 [Node] Executing "nibabel_as-canonical" <nipype.interfaces.utility.wrappers.Function>
250611-07:57:39,837 nipype.workflow INFO:
	 [Node] Executing "func_read-json-me" <nipype.interfaces.utility.wrappers.Function>
250611-07:57:39,838 nipype.workflow INFO:
	 [Node] Executing "nibabel_read-nii" <nipype.interfaces.utility.wrappers.Function>
250611-07:57:39,838 nipype.workflow INFO:
	 [Node] Executing "fastsurfer_segment-t1" <qsmxt.interfaces.nipype_interface_fastsurfer.FastSurferInterface>
250611-07:57:39,850 nipype.workflow INFO:
	 [Node] Finished "func_read-json-me", elapsed time 0.0015s.
250611-07:57:39,857 nipype.workflow INFO:
	 [Node] Finished "func_read-json-me", elapsed time 0.004914s.
250611-07:57:39,810 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_read-json-se" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/func_read-json-se".
250611-07:57:39,814 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/ants_register-t1-to-qsm".
250611-07:57:39,872 nipype.workflow INFO:
	 [Node] Finished "nibabel_read-nii", elapsed time 0.021312s.
250611-07:57:39,874 nipype.workflow INFO:
	 [Node] Executing "func_read-json-se" <nipype.interfaces.utility.wrappers.Function>
250611-07:57:39,831 nipype.workflow INFO:
	 [Node] Executing "nibabel_read-nii" <nipype.interfaces.utility.wrappers.Function>
250611-07:57:39,892 nipype.workflow INFO:
	 [Node] Executing "ants_register-t1-to-qsm" <nipype.interfaces.ants.registration.RegistrationSynQuick>
250611-07:57:39,900 nipype.workflow INFO:
	 [Node] Finished "func_read-json-se", elapsed time 0.011165s.
250611-07:57:39,916 nipype.workflow INFO:
	 [Node] Finished "nibabel_read-nii", elapsed time 0.010196s.
250611-07:57:39,813 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_read-json-se" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/func_read-json-se".
250611-07:57:39,932 nipype.workflow INFO:
	 [Node] Executing "func_read-json-se" <nipype.interfaces.utility.wrappers.Function>
250611-07:57:39,837 nipype.workflow INFO:
	 [Node] Executing "fastsurfer_segment-t1" <qsmxt.interfaces.nipype_interface_fastsurfer.FastSurferInterface>
250611-07:57:39,948 nipype.workflow INFO:
	 [Node] Finished "func_read-json-se", elapsed time 0.00765s.
250611-07:57:40,108 nipype.workflow INFO:
	 [Node] Finished "nibabel_as-canonical", elapsed time 0.268763s.
250611-07:57:40,108 nipype.workflow INFO:
	 [Node] Finished "nibabel_as-canonical", elapsed time 0.269432s.
250611-07:57:41,257 nipype.workflow INFO:
	 [Job 0] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_read-json-me).
250611-07:57:41,259 nipype.workflow INFO:
	 [Job 1] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_read-json-se).
250611-07:57:41,260 nipype.workflow INFO:
	 [Job 2] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_read-nii).
250611-07:57:41,261 nipype.workflow INFO:
	 [Job 3] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_as-canonical).
250611-07:57:41,262 nipype.workflow INFO:
	 [Job 6] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_read-json-me).
250611-07:57:41,263 nipype.workflow INFO:
	 [Job 7] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_read-json-se).
250611-07:57:41,263 nipype.workflow INFO:
	 [Job 8] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_read-nii).
250611-07:57:41,264 nipype.workflow INFO:
	 [Job 9] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_as-canonical).
250611-07:57:41,266 nipype.workflow INFO:
	 [MultiProc] Running 3 tasks, and 5 jobs ready. Free memory (GB): 187.48/219.48, Free processors: 10/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-07:57:41,387 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_scale-phase" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_scale-phase".
250611-07:57:41,418 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/ants_register-t1-to-qsm".
250611-07:57:41,405 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_getfirst-canonical-magnitude" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/func_getfirst-canonical-magnitude".
250611-07:57:41,446 nipype.workflow INFO:
	 [Node] Executing "ants_register-t1-to-qsm" <nipype.interfaces.ants.registration.RegistrationSynQuick>
250611-07:57:41,446 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_scale-phase" <qsmxt.interfaces.nipype_interface_processphase.ScalePhaseInterface>
250611-07:57:41,399 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_scale-phase" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_scale-phase".
250611-07:57:41,480 nipype.workflow INFO:
	 [Node] Executing "func_getfirst-canonical-magnitude" <nipype.interfaces.utility.wrappers.Function>
250611-07:57:41,518 nipype.workflow INFO:
	 [Node] Finished "func_getfirst-canonical-magnitude", elapsed time 0.010499s.
250611-07:57:41,399 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_getfirst-canonical-magnitude" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/func_getfirst-canonical-magnitude".
250611-07:57:41,537 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_scale-phase" <qsmxt.interfaces.nipype_interface_processphase.ScalePhaseInterface>
250611-07:57:41,561 nipype.workflow INFO:
	 [Node] Executing "func_getfirst-canonical-magnitude" <nipype.interfaces.utility.wrappers.Function>
250611-07:57:41,578 nipype.workflow INFO:
	 [Node] Finished "func_getfirst-canonical-magnitude", elapsed time 0.001681s.
250611-07:57:43,259 nipype.workflow INFO:
	 [Job 13] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_getfirst-canonical-magnitude).
250611-07:57:43,261 nipype.workflow INFO:
	 [Job 16] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.func_getfirst-canonical-magnitude).
250611-07:57:43,262 nipype.workflow INFO:
	 [MultiProc] Running 6 tasks, and 0 jobs ready. Free memory (GB): 175.48/219.48, Free processors: 2/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_scale-phase
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_scale-phase
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-07:57:43,412 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_scale-phase", elapsed time 1.963359s.
250611-07:57:43,646 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_scale-phase", elapsed time 2.106544s.
250611-07:57:45,263 nipype.workflow INFO:
	 [Job 12] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_scale-phase).
250611-07:57:45,271 nipype.workflow INFO:
	 [Job 15] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_scale-phase).
250611-07:57:45,272 nipype.workflow INFO:
	 [MultiProc] Running 4 tasks, and 2 jobs ready. Free memory (GB): 179.48/219.48, Free processors: 4/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-07:57:45,356 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_axial-resampling" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_nilearn_axial-resampling".
250611-07:57:45,360 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_axial-resampling" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_nilearn_axial-resampling".
250611-07:57:45,428 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_nilearn_axial-resampling" <qsmxt.interfaces.nipype_interface_axialsampling.AxialSamplingInterface>
250611-07:57:45,429 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_nilearn_axial-resampling" <qsmxt.interfaces.nipype_interface_axialsampling.AxialSamplingInterface>
250611-07:57:45,452 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_nilearn_axial-resampling", elapsed time 0.021116s.
250611-07:57:45,456 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_nilearn_axial-resampling", elapsed time 0.016559s.
250611-07:57:47,261 nipype.workflow INFO:
	 [Job 18] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_axial-resampling).
250611-07:57:47,263 nipype.workflow INFO:
	 [Job 21] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_axial-resampling).
250611-07:57:47,264 nipype.workflow INFO:
	 [MultiProc] Running 4 tasks, and 4 jobs ready. Free memory (GB): 179.48/219.48, Free processors: 4/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-07:57:47,329 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/qsm_workflow/mrt_romeo".
250611-07:57:47,330 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/qsm_workflow/mrt_romeo".
250611-07:57:47,337 nipype.workflow INFO:
	 [Node] Executing "mrt_romeo" <qsmxt.interfaces.nipype_interface_romeo.RomeoB0Interface>
250611-07:57:47,339 nipype.workflow INFO:
	 [Node] Executing "mrt_romeo" <qsmxt.interfaces.nipype_interface_romeo.RomeoB0Interface>
250611-07:57:49,269 nipype.workflow INFO:
	 [MultiProc] Running 6 tasks, and 2 jobs ready. Free memory (GB): 174.81/219.48, Free processors: 2/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:00:56,788 nipype.workflow INFO:
	 [Node] Finished "ants_register-t1-to-qsm", elapsed time 196.881559s.
250611-08:00:57,543 nipype.workflow INFO:
	 [Job 5] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm).
250611-08:00:57,545 nipype.workflow INFO:
	 [MultiProc] Running 5 tasks, and 2 jobs ready. Free memory (GB): 182.81/219.48, Free processors: 8/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:00:57,863 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.mask_workflow.fsl-bet" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/mask_workflow/fsl-bet".
250611-08:00:57,878 nipype.workflow INFO:
	 [Node] Executing "fsl-bet" <qsmxt.interfaces.nipype_interface_bet2.Bet2Interface>
250611-08:00:59,547 nipype.workflow INFO:
	 [MultiProc] Running 6 tasks, and 1 jobs ready. Free memory (GB): 180.81/219.48, Free processors: 0/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.mask_workflow.fsl-bet
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:01:01,335 nipype.workflow INFO:
	 [Node] Finished "ants_register-t1-to-qsm", elapsed time 199.886483s.
250611-08:01:03,553 nipype.workflow INFO:
	 [Job 11] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_register-t1-to-qsm).
250611-08:01:03,556 nipype.workflow INFO:
	 [MultiProc] Running 5 tasks, and 1 jobs ready. Free memory (GB): 188.81/219.48, Free processors: 6/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.mask_workflow.fsl-bet
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:01:13,77 nipype.workflow INFO:
	 [Node] Finished "fsl-bet", elapsed time 15.197343s.
250611-08:01:13,562 nipype.workflow INFO:
	 [Job 24] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.mask_workflow.fsl-bet).
250611-08:01:13,564 nipype.workflow INFO:
	 [MultiProc] Running 4 tasks, and 2 jobs ready. Free memory (GB): 190.81/219.48, Free processors: 14/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:01:13,678 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.mask_workflow.fsl-bet" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/mask_workflow/fsl-bet".
250611-08:01:13,680 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.mask_workflow.scipy_numpy_nibabel_bet_erode" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/mask_workflow/scipy_numpy_nibabel_bet_erode".
250611-08:01:13,696 nipype.workflow INFO:
	 [Node] Executing "fsl-bet" <qsmxt.interfaces.nipype_interface_bet2.Bet2Interface>
250611-08:01:13,702 nipype.workflow INFO:
	 [Node] Executing "scipy_numpy_nibabel_bet_erode" <qsmxt.interfaces.nipype_interface_erode.ErosionInterface>
250611-08:01:14,770 nipype.workflow INFO:
	 [Node] Finished "scipy_numpy_nibabel_bet_erode", elapsed time 1.065069s.
250611-08:01:15,563 nipype.workflow INFO:
	 [Job 30] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.mask_workflow.scipy_numpy_nibabel_bet_erode).
250611-08:01:15,565 nipype.workflow INFO:
	 [MultiProc] Running 5 tasks, and 0 jobs ready. Free memory (GB): 188.81/219.48, Free processors: 6/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.mask_workflow.fsl-bet
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:01:27,915 nipype.workflow INFO:
	 [Node] Finished "fsl-bet", elapsed time 14.217065s.
250611-08:01:29,594 nipype.workflow INFO:
	 [Job 27] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.mask_workflow.fsl-bet).
250611-08:01:29,597 nipype.workflow INFO:
	 [MultiProc] Running 4 tasks, and 1 jobs ready. Free memory (GB): 190.81/219.48, Free processors: 14/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:01:29,691 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.mask_workflow.scipy_numpy_nibabel_bet_erode" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/mask_workflow/scipy_numpy_nibabel_bet_erode".
250611-08:01:29,706 nipype.workflow INFO:
	 [Node] Executing "scipy_numpy_nibabel_bet_erode" <qsmxt.interfaces.nipype_interface_erode.ErosionInterface>
250611-08:01:30,553 nipype.workflow INFO:
	 [Node] Finished "scipy_numpy_nibabel_bet_erode", elapsed time 0.844421s.
250611-08:01:31,607 nipype.workflow INFO:
	 [Job 32] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.mask_workflow.scipy_numpy_nibabel_bet_erode).
250611-08:01:31,618 nipype.workflow INFO:
	 [MultiProc] Running 4 tasks, and 0 jobs ready. Free memory (GB): 190.81/219.48, Free processors: 14/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:05:58,247 nipype.workflow INFO:
	 [Node] Finished "mrt_romeo", elapsed time 490.905332s.
250611-08:05:59,951 nipype.workflow INFO:
	 [Job 28] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo).
250611-08:05:59,954 nipype.workflow INFO:
	 [MultiProc] Running 3 tasks, and 1 jobs ready. Free memory (GB): 193.15/219.48, Free processors: 15/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:06:00,64 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.nibabel-numpy_normalize-phase" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/qsm_workflow/nibabel-numpy_normalize-phase".
250611-08:06:00,110 nipype.workflow INFO:
	 [Node] Executing "nibabel-numpy_normalize-phase" <qsmxt.interfaces.nipype_interface_processphase.PhaseToNormalizedInterface>
250611-08:06:00,544 nipype.workflow INFO:
	 [Node] Finished "nibabel-numpy_normalize-phase", elapsed time 0.431326s.
250611-08:06:01,954 nipype.workflow INFO:
	 [Job 33] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.nibabel-numpy_normalize-phase).
250611-08:06:01,956 nipype.workflow INFO:
	 [MultiProc] Running 3 tasks, and 1 jobs ready. Free memory (GB): 193.15/219.48, Free processors: 15/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:06:02,50 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_vsharp" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/qsm_workflow/qsmjl_vsharp".
250611-08:06:02,61 nipype.workflow INFO:
	 [Node] Executing "qsmjl_vsharp" <qsmxt.interfaces.nipype_interface_qsmjl.VsharpInterface>
250611-08:06:03,718 nipype.workflow INFO:
	 [Node] Finished "mrt_romeo", elapsed time 496.379595s.
250611-08:06:03,955 nipype.workflow INFO:
	 [Job 25] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.mrt_romeo).
250611-08:06:03,957 nipype.workflow INFO:
	 [MultiProc] Running 3 tasks, and 1 jobs ready. Free memory (GB): 193.48/219.48, Free processors: 14/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_vsharp
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:06:04,59 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.nibabel-numpy_normalize-phase" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/qsm_workflow/nibabel-numpy_normalize-phase".
250611-08:06:04,82 nipype.workflow INFO:
	 [Node] Executing "nibabel-numpy_normalize-phase" <qsmxt.interfaces.nipype_interface_processphase.PhaseToNormalizedInterface>
250611-08:06:04,261 nipype.workflow INFO:
	 [Node] Finished "nibabel-numpy_normalize-phase", elapsed time 0.177544s.
250611-08:06:05,959 nipype.workflow INFO:
	 [Job 31] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.nibabel-numpy_normalize-phase).
250611-08:06:05,961 nipype.workflow INFO:
	 [MultiProc] Running 3 tasks, and 1 jobs ready. Free memory (GB): 193.48/219.48, Free processors: 14/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_vsharp
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:06:06,42 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_vsharp" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/qsm_workflow/qsmjl_vsharp".
250611-08:06:06,57 nipype.workflow INFO:
	 [Node] Executing "qsmjl_vsharp" <qsmxt.interfaces.nipype_interface_qsmjl.VsharpInterface>
250611-08:06:07,963 nipype.workflow INFO:
	 [MultiProc] Running 4 tasks, and 0 jobs ready. Free memory (GB): 191.48/219.48, Free processors: 12/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_vsharp
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_vsharp
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:07:42,446 nipype.workflow INFO:
	 [Node] Finished "qsmjl_vsharp", elapsed time 100.383475s.
250611-08:07:44,80 nipype.workflow INFO:
	 [Job 35] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_vsharp).
250611-08:07:44,82 nipype.workflow INFO:
	 [MultiProc] Running 3 tasks, and 1 jobs ready. Free memory (GB): 193.48/219.48, Free processors: 14/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_vsharp
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:07:44,168 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/qsm_workflow/qsmjl_rts".
250611-08:07:44,189 nipype.workflow INFO:
	 [Node] Executing "qsmjl_rts" <qsmxt.interfaces.nipype_interface_qsmjl.RtsQsmInterface>
250611-08:07:45,529 nipype.workflow INFO:
	 [Node] Finished "qsmjl_vsharp", elapsed time 99.470105s.
250611-08:07:46,82 nipype.workflow INFO:
	 [Job 34] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_vsharp).
250611-08:07:46,84 nipype.workflow INFO:
	 [MultiProc] Running 3 tasks, and 1 jobs ready. Free memory (GB): 193.08/219.48, Free processors: 14/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:07:46,153 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/qsm_workflow/qsmjl_rts".
250611-08:07:46,164 nipype.workflow INFO:
	 [Node] Executing "qsmjl_rts" <qsmxt.interfaces.nipype_interface_qsmjl.RtsQsmInterface>
250611-08:07:48,84 nipype.workflow INFO:
	 [MultiProc] Running 4 tasks, and 0 jobs ready. Free memory (GB): 190.67/219.48, Free processors: 12/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1
250611-08:08:02,592 nipype.workflow INFO:
	 [Node] Finished "fastsurfer_segment-t1", elapsed time 622.741721s.
250611-08:08:02,594 nipype.workflow INFO:
	 [Node] Finished "fastsurfer_segment-t1", elapsed time 622.645288s.
250611-08:08:04,97 nipype.workflow INFO:
	 [Job 4] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1).
250611-08:08:04,99 nipype.workflow INFO:
	 [Job 10] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.fastsurfer_segment-t1).
250611-08:08:04,100 nipype.workflow INFO:
	 [MultiProc] Running 2 tasks, and 2 jobs ready. Free memory (GB): 214.67/219.48, Free processors: 28/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
250611-08:08:04,170 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.numpy_numpy_nibabel_mgz2nii" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/numpy_numpy_nibabel_mgz2nii".
250611-08:08:04,178 nipype.workflow INFO:
	 [Node] Executing "numpy_numpy_nibabel_mgz2nii" <qsmxt.interfaces.nipype_interface_mgz2nii.Mgz2NiiInterface>
250611-08:08:04,170 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.numpy_numpy_nibabel_mgz2nii" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/numpy_numpy_nibabel_mgz2nii".
250611-08:08:04,227 nipype.workflow INFO:
	 [Node] Executing "numpy_numpy_nibabel_mgz2nii" <qsmxt.interfaces.nipype_interface_mgz2nii.Mgz2NiiInterface>
250611-08:08:05,50 nipype.workflow INFO:
	 [Node] Finished "numpy_numpy_nibabel_mgz2nii", elapsed time 0.870347s.
250611-08:08:05,61 nipype.workflow INFO:
	 [Node] Finished "numpy_numpy_nibabel_mgz2nii", elapsed time 0.832607s.
250611-08:08:06,99 nipype.workflow INFO:
	 [Job 14] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.numpy_numpy_nibabel_mgz2nii).
250611-08:08:06,101 nipype.workflow INFO:
	 [Job 17] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.numpy_numpy_nibabel_mgz2nii).
250611-08:08:06,102 nipype.workflow INFO:
	 [MultiProc] Running 2 tasks, and 4 jobs ready. Free memory (GB): 214.67/219.48, Free processors: 28/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
250611-08:08:06,201 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_t1w-seg-resampled" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_nilearn_t1w-seg-resampled".
250611-08:08:06,207 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_transform-segmentation-to-qsm" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/ants_transform-segmentation-to-qsm".
250611-08:08:06,215 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_t1w-seg-resampled" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_nilearn_t1w-seg-resampled".
250611-08:08:06,227 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_transform-segmentation-to-qsm" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/ants_transform-segmentation-to-qsm".
250611-08:08:06,252 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_nilearn_t1w-seg-resampled" <qsmxt.interfaces.nipype_interface_resample_like.ResampleLikeInterface>
Resampling /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/fastsurfer_segment-t1/sub-1_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w_dseg_nii.nii to /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/anat/sub-1_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w.nii with interpolation nearest
250611-08:08:06,269 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_nilearn_t1w-seg-resampled" <qsmxt.interfaces.nipype_interface_resample_like.ResampleLikeInterface>
Resampling /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/fastsurfer_segment-t1/sub-2_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w_dseg_nii.nii to /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/anat/sub-2_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w.nii with interpolation nearest
Loaded input and reference files
Loaded input and reference files
250611-08:08:06,293 nipype.workflow INFO:
	 [Node] Executing "ants_transform-segmentation-to-qsm" <nipype.interfaces.ants.resampling.ApplyTransforms>
250611-08:08:06,295 nipype.workflow INFO:
	 [Node] Executing "ants_transform-segmentation-to-qsm" <nipype.interfaces.ants.resampling.ApplyTransforms>
250611-08:08:08,103 nipype.workflow INFO:
	 [MultiProc] Running 6 tasks, and 0 jobs ready. Free memory (GB): 206.67/219.48, Free processors: 24/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_transform-segmentation-to-qsm
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_t1w-seg-resampled
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_transform-segmentation-to-qsm
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_t1w-seg-resampled
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
250611-08:08:09,93 nipype.workflow INFO:
	 [Node] Finished "ants_transform-segmentation-to-qsm", elapsed time 2.797777s.
250611-08:08:09,116 nipype.workflow INFO:
	 [Node] Finished "ants_transform-segmentation-to-qsm", elapsed time 2.81855s.
250611-08:08:10,103 nipype.workflow INFO:
	 [Job 20] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_transform-segmentation-to-qsm).
250611-08:08:10,104 nipype.workflow INFO:
	 [Job 23] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.ants_transform-segmentation-to-qsm).
250611-08:08:10,106 nipype.workflow INFO:
	 [MultiProc] Running 4 tasks, and 2 jobs ready. Free memory (GB): 210.67/219.48, Free processors: 26/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_t1w-seg-resampled
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_t1w-seg-resampled
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
250611-08:08:10,185 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.combine_lists2" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/combine_lists2".
250611-08:08:10,209 nipype.workflow INFO:
	 [Node] Executing "combine_lists2" <nipype.interfaces.utility.wrappers.Function>
250611-08:08:10,217 nipype.workflow INFO:
	 [Node] Finished "combine_lists2", elapsed time 0.00086s.
250611-08:08:10,186 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.combine_lists2" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/combine_lists2".
250611-08:08:10,255 nipype.workflow INFO:
	 [Node] Executing "combine_lists2" <nipype.interfaces.utility.wrappers.Function>
250611-08:08:10,264 nipype.workflow INFO:
	 [Node] Finished "combine_lists2", elapsed time 0.007215s.
250611-08:08:12,105 nipype.workflow INFO:
	 [Job 26] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.combine_lists2).
250611-08:08:12,106 nipype.workflow INFO:
	 [Job 29] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.combine_lists2).
250611-08:08:12,108 nipype.workflow INFO:
	 [MultiProc] Running 4 tasks, and 0 jobs ready. Free memory (GB): 210.67/219.48, Free processors: 26/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_t1w-seg-resampled
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_t1w-seg-resampled
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
Resampled the image
Saved resampled image to /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_nilearn_t1w-seg-resampled/sub-2_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w_dseg_nii_resampled.nii
250611-08:08:13,964 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_nilearn_t1w-seg-resampled", elapsed time 7.693382s.
250611-08:08:14,107 nipype.workflow INFO:
	 [Job 22] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_t1w-seg-resampled).
250611-08:08:14,109 nipype.workflow INFO:
	 [MultiProc] Running 3 tasks, and 0 jobs ready. Free memory (GB): 212.67/219.48, Free processors: 27/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_t1w-seg-resampled
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
Resampled the image
Saved resampled image to /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_nilearn_t1w-seg-resampled/sub-1_ses-20170705_acq-mp2ragehighres0p5isoslab_run-01_T1w_dseg_nii_resampled.nii
250611-08:08:14,701 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_nilearn_t1w-seg-resampled", elapsed time 8.44124s.
250611-08:08:16,109 nipype.workflow INFO:
	 [Job 19] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_t1w-seg-resampled).
250611-08:08:16,111 nipype.workflow INFO:
	 [MultiProc] Running 2 tasks, and 0 jobs ready. Free memory (GB): 214.67/219.48, Free processors: 28/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
250611-08:08:25,753 nipype.workflow INFO:
	 [Node] Finished "qsmjl_rts", elapsed time 41.556993s.
250611-08:08:26,124 nipype.workflow INFO:
	 [Job 37] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts).
250611-08:08:26,126 nipype.workflow INFO:
	 [MultiProc] Running 1 tasks, and 1 jobs ready. Free memory (GB): 217.08/219.48, Free processors: 30/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts
250611-08:08:26,205 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_qsm-average" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_qsm-average".
250611-08:08:26,218 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_qsm-average" <qsmxt.interfaces.nipype_interface_nonzeroaverage.NonzeroAverageInterface>
250611-08:08:26,220 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_qsm-average", elapsed time 0.000342s.
250611-08:08:27,619 nipype.workflow INFO:
	 [Node] Finished "qsmjl_rts", elapsed time 41.452971s.
250611-08:08:28,126 nipype.workflow INFO:
	 [Job 36] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.qsm_workflow.qsmjl_rts).
250611-08:08:28,128 nipype.workflow INFO:
	 [Job 39] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_qsm-average).
250611-08:08:28,129 nipype.workflow INFO:
	 [MultiProc] Running 0 tasks, and 2 jobs ready. Free memory (GB): 219.48/219.48, Free processors: 32/32.
250611-08:08:28,192 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_qsm-average" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_qsm-average".
250611-08:08:28,193 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_qsm-resampled" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_nilearn_qsm-resampled".
250611-08:08:28,206 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_qsm-average" <qsmxt.interfaces.nipype_interface_nonzeroaverage.NonzeroAverageInterface>
250611-08:08:28,206 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_nilearn_qsm-resampled" <qsmxt.interfaces.nipype_interface_resample_like.ResampleLikeInterface>
Resampling /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/qsm_workflow/qsmjl_rts/sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw_scaled_romeo-unwrapped_normalized_vsharp_rts.nii to /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-2/ses-20170705/anat/sub-2_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw.nii with interpolation continuous
250611-08:08:28,207 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_qsm-average", elapsed time 0.00025s.
Loaded input and reference files
Input image is already aligned with the reference image
250611-08:08:28,217 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_nilearn_qsm-resampled", elapsed time 0.010306s.
250611-08:08:30,128 nipype.workflow INFO:
	 [Job 38] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_qsm-average).
250611-08:08:30,130 nipype.workflow INFO:
	 [Job 41] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_qsm-resampled).
250611-08:08:30,131 nipype.workflow INFO:
	 [MultiProc] Running 0 tasks, and 3 jobs ready. Free memory (GB): 219.48/219.48, Free processors: 32/32.
250611-08:08:30,213 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_qsm-resampled" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_nilearn_qsm-resampled".
250611-08:08:30,214 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_qsm-referenced" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_qsm-referenced".
250611-08:08:30,219 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.combine_lists1" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/combine_lists1".
250611-08:08:30,234 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_nilearn_qsm-resampled" <qsmxt.interfaces.nipype_interface_resample_like.ResampleLikeInterface>
250611-08:08:30,234 nipype.workflow INFO:
	 [Node] Executing "combine_lists1" <nipype.interfaces.utility.wrappers.Function>
250611-08:08:30,240 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_qsm-referenced" <qsmxt.interfaces.nipype_interface_qsm_referencing.ReferenceQSMInterface>
Resampling /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/qsm_workflow/qsmjl_rts/sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw_scaled_romeo-unwrapped_normalized_vsharp_rts.nii to /home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/sub-1/ses-20170705/anat/sub-1_ses-20170705_acq-qsmp21mmisote20_run-01_part-phase_T2starw.nii with interpolation continuous
250611-08:08:30,253 nipype.workflow INFO:
	 [Node] Finished "combine_lists1", elapsed time 0.012465s.
Loaded input and reference files
Input image is already aligned with the reference image
250611-08:08:30,269 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_nilearn_qsm-resampled", elapsed time 0.028011s.
250611-08:08:31,22 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_qsm-referenced", elapsed time 0.774545s.
250611-08:08:32,130 nipype.workflow INFO:
	 [Job 40] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_nilearn_qsm-resampled).
250611-08:08:32,132 nipype.workflow INFO:
	 [Job 44] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_qsm-referenced).
250611-08:08:32,132 nipype.workflow INFO:
	 [Job 45] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.combine_lists1).
250611-08:08:32,134 nipype.workflow INFO:
	 [MultiProc] Running 0 tasks, and 3 jobs ready. Free memory (GB): 219.48/219.48, Free processors: 32/32.
250611-08:08:32,211 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_qsm-referenced" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_qsm-referenced".
250611-08:08:32,217 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.combine_lists1" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/combine_lists1".
250611-08:08:32,227 nipype.workflow INFO:
	 [Node] Executing "nibabel_numpy_qsm-referenced" <qsmxt.interfaces.nipype_interface_qsm_referencing.ReferenceQSMInterface>
250611-08:08:32,233 nipype.workflow INFO:
	 [Node] Executing "combine_lists1" <nipype.interfaces.utility.wrappers.Function>
250611-08:08:32,242 nipype.workflow INFO:
	 [Node] Finished "combine_lists1", elapsed time 0.000964s.
250611-08:08:32,217 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.create_permutations" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/create_permutations".
250611-08:08:32,275 nipype.workflow INFO:
	 [Node] Executing "create_permutations" <nipype.interfaces.utility.wrappers.Function>
250611-08:08:32,290 nipype.workflow INFO:
	 [Node] Finished "create_permutations", elapsed time 0.000788s.
250611-08:08:32,863 nipype.workflow INFO:
	 [Node] Finished "nibabel_numpy_qsm-referenced", elapsed time 0.634411s.
250611-08:08:34,133 nipype.workflow INFO:
	 [Job 42] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_qsm-referenced).
250611-08:08:34,134 nipype.workflow INFO:
	 [Job 43] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.combine_lists1).
250611-08:08:34,135 nipype.workflow INFO:
	 [Job 47] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.create_permutations).
250611-08:08:34,136 nipype.workflow INFO:
	 [MultiProc] Running 0 tasks, and 2 jobs ready. Free memory (GB): 219.48/219.48, Free processors: 32/32.
250611-08:08:34,211 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.create_permutations" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/create_permutations".
250611-08:08:34,242 nipype.workflow INFO:
	 [Node] Executing "create_permutations" <nipype.interfaces.utility.wrappers.Function>
250611-08:08:34,250 nipype.workflow INFO:
	 [Node] Finished "create_permutations", elapsed time 0.000741s.
250611-08:08:34,250 nipype.workflow INFO:
	 [Node] Setting-up "_nibabel_numpy_analyse-qsm0" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_analyse-qsm/mapflow/_nibabel_numpy_analyse-qsm0".
250611-08:08:34,252 nipype.workflow INFO:
	 [Node] Executing "_nibabel_numpy_analyse-qsm0" <qsmxt.interfaces.nipype_interface_analyse.AnalyseInterface>
250611-08:08:36,135 nipype.workflow INFO:
	 [Job 46] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.create_permutations).
250611-08:08:36,136 nipype.workflow INFO:
	 [MultiProc] Running 1 tasks, and 1 jobs ready. Free memory (GB): 217.48/219.48, Free processors: 31/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_analyse-qsm
250611-08:08:36,241 nipype.workflow INFO:
	 [Node] Setting-up "_nibabel_numpy_analyse-qsm0" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/nibabel_numpy_analyse-qsm/mapflow/_nibabel_numpy_analyse-qsm0".
250611-08:08:36,243 nipype.workflow INFO:
	 [Node] Executing "_nibabel_numpy_analyse-qsm0" <qsmxt.interfaces.nipype_interface_analyse.AnalyseInterface>
250611-08:08:38,137 nipype.workflow INFO:
	 [MultiProc] Running 2 tasks, and 0 jobs ready. Free memory (GB): 215.48/219.48, Free processors: 30/32.
                     Currently running:
                       * qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_analyse-qsm
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_analyse-qsm
250611-08:09:50,306 nipype.workflow INFO:
	 [Node] Finished "_nibabel_numpy_analyse-qsm0", elapsed time 74.048728s.
250611-08:09:52,213 nipype.workflow INFO:
	 [Job 48] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_analyse-qsm).
250611-08:09:52,215 nipype.workflow INFO:
	 [MultiProc] Running 1 tasks, and 1 jobs ready. Free memory (GB): 217.48/219.48, Free processors: 31/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_analyse-qsm
250611-08:09:52,314 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.copyfile" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-1/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/copyfile".
250611-08:09:52,362 nipype.workflow INFO:
	 [Node] Executing "copyfile" <qsmxt.interfaces.nipype_interface_copyfile.DynamicCopyFiles>
250611-08:09:52,881 nipype.workflow INFO:
	 [Node] Finished "copyfile", elapsed time 0.504398s.
250611-08:09:54,215 nipype.workflow INFO:
	 [Job 50] Completed (qsmxt-workflow.sub-1.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.copyfile).
250611-08:09:54,217 nipype.workflow INFO:
	 [MultiProc] Running 1 tasks, and 0 jobs ready. Free memory (GB): 217.48/219.48, Free processors: 31/32.
                     Currently running:
                       * qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_analyse-qsm
250611-08:10:00,422 nipype.workflow INFO:
	 [Node] Finished "_nibabel_numpy_analyse-qsm0", elapsed time 86.16818s.
250611-08:10:02,223 nipype.workflow INFO:
	 [Job 49] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.nibabel_numpy_analyse-qsm).
250611-08:10:02,225 nipype.workflow INFO:
	 [MultiProc] Running 0 tasks, and 1 jobs ready. Free memory (GB): 219.48/219.48, Free processors: 32/32.
250611-08:10:02,297 nipype.workflow INFO:
	 [Node] Setting-up "qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.copyfile" in "/home/jovyan/Git_repositories/example-notebooks/books/structural_imaging/bids/derivatives/qsmxt-workflow/sub-2/ses-20170705/qsmxt_acq-qsmp21mmisote20_run-01/copyfile".
250611-08:10:02,313 nipype.workflow INFO:
	 [Node] Executing "copyfile" <qsmxt.interfaces.nipype_interface_copyfile.DynamicCopyFiles>
250611-08:10:02,766 nipype.workflow INFO:
	 [Node] Finished "copyfile", elapsed time 0.44496s.
250611-08:10:04,226 nipype.workflow INFO:
	 [Job 51] Completed (qsmxt-workflow.sub-2.ses-20170705.qsmxt_acq-qsmp21mmisote20_run-01.copyfile).
250611-08:10:04,227 nipype.workflow INFO:
	 [MultiProc] Running 0 tasks, and 0 jobs ready. Free memory (GB): 219.48/219.48, Free processors: 32/32.
[INFO]: Warnings occurred!
[INFO]: Finished

View results#

Let’s have a look at the generated qsm folder:

!tree bids/derivatives/qsmxt-*-* --dirsfirst
bids/derivatives/qsmxt-2025-06-11-075702
├── sub-1
│   └── ses-20170705
│       ├── anat
│       │   ├── sub-1_ses-20170705_run-01_acq-qsmp21mmisote20_Chimap.nii
│       │   ├── sub-1_ses-20170705_run-01_acq-qsmp21mmisote20_space-orig_dseg.nii
│       │   └── sub-1_ses-20170705_run-01_acq-qsmp21mmisote20_space-qsm_dseg.nii
│       └── extra_data
│           ├── sub-1_ses-20170705_run-01_acq-qsmp21mmisote20_desc-t1w-to-qsm_transform.mat
│           └── sub-1_ses-20170705_run-01_acq-qsmp21mmisote20_qsm-analysis.csv
├── sub-2
│   └── ses-20170705
│       ├── anat
│       │   ├── sub-2_ses-20170705_run-01_acq-qsmp21mmisote20_Chimap.nii
│       │   ├── sub-2_ses-20170705_run-01_acq-qsmp21mmisote20_space-orig_dseg.nii
│       │   └── sub-2_ses-20170705_run-01_acq-qsmp21mmisote20_space-qsm_dseg.nii
│       └── extra_data
│           ├── sub-2_ses-20170705_run-01_acq-qsmp21mmisote20_desc-t1w-to-qsm_transform.mat
│           └── sub-2_ses-20170705_run-01_acq-qsmp21mmisote20_qsm-analysis.csv
├── command.txt
├── pypeline.log
├── qsmxt.log
├── references.txt
└── settings.json

8 directories, 15 files

The references.txt file contains a list of all the algorithms used and relevant citations:

!cat bids/derivatives/qsmxt-*-*/references.txt
== References ==

 - QSMxT: Stewart AW, Robinson SD, O'Brien K, et al. QSMxT: Robust masking and artifact reduction for quantitative susceptibility mapping. Magnetic Resonance in Medicine. 2022;87(3):1289-1300. doi:10.1002/mrm.29048

 - QSMxT: Stewart AW, Bollman S, et al. QSMxT/QSMxT. GitHub; 2022. https://github.com/QSMxT/QSMxT

 - Python package - Nipype: Gorgolewski K, Burns C, Madison C, et al. Nipype: A Flexible, Lightweight and Extensible Neuroimaging Data Processing Framework in Python. Frontiers in Neuroinformatics. 2011;5. Accessed April 20, 2022. doi:10.3389/fninf.2011.00013

 - Brain extraction: Smith SM. Fast robust automated brain extraction. Human Brain Mapping. 2002;17(3):143-155. doi:10.1002/hbm.10062

 - Brain extraction: Liangfu Chen. liangfu/bet2 - Standalone Brain Extraction Tool. GitHub; 2015. https://github.com/liangfu/bet2

 - Unwrapping algorithm - ROMEO: Dymerska B, Eckstein K, Bachrata B, et al. Phase unwrapping with a rapid opensource minimum spanning tree algorithm (ROMEO). Magnetic Resonance in Medicine. 2021;85(4):2294-2308. doi:10.1002/mrm.28563

 - Background field removal - V-SHARP: Wu B, Li W, Guidon A et al. Whole brain susceptibility mapping using compressed sensing. Magnetic resonance in medicine. 2012 Jan;67(1):137-47. doi:10.1002/mrm.23000

 - QSM algorithm - RTS: Kames C, Wiggermann V, Rauscher A. Rapid two-step dipole inversion for susceptibility mapping with sparsity priors. Neuroimage. 2018 Feb 15;167:276-83. doi:10.1016/j.neuroimage.2017.11.018

 - Julia package - QSM.jl: kamesy. GitHub; 2022. https://github.com/kamesy/QSM.jl

 - Julia package - MriResearchTools: Eckstein K. korbinian90/MriResearchTools.jl. GitHub; 2022. https://github.com/korbinian90/MriResearchTools.jl

 - Python package - nibabel: Brett M, Markiewicz CJ, Hanke M, et al. nipy/nibabel. GitHub; 2019. https://github.com/nipy/nibabel

 - Python package - scipy: Virtanen P, Gommers R, Oliphant TE, et al. SciPy 1.0: fundamental algorithms for scientific computing in Python. Nat Methods. 2020;17(3):261-272. doi:10.1038/s41592-019-0686-2

 - Python package - numpy: Harris CR, Millman KJ, van der Walt SJ, et al. Array programming with NumPy. Nature. 2020;585(7825):357-362. doi:10.1038/s41586-020-2649-2

 - FastSurfer: Henschel L, Conjeti S, Estrada S, Diers K, Fischl B, Reuter M. FastSurfer - A fast and accurate deep learning based neuroimaging pipeline. NeuroImage. 2020;219:117012. doi:10.1016/j.neuroimage.2020.117012

 - ANTs: Avants BB, Tustison NJ, Johnson HJ. Advanced Normalization Tools. GitHub; 2022. https://github.com/ANTsX/ANTs

Let’s view one of the QSM results:

QSM results#

show_nii(glob("bids/derivatives/qsmxt-*-*/sub*/ses*/anat*/*Chimap.nii*")[0], cmap='gray', vmin=-0.15, vmax=+0.15, interpolation='nearest')
../_images/e323cccbb0c68afca0507b31fac3c01c06dcea5a088f0c0435664c314d99df7b.png
nv_QSM = NiiVue()
nv_QSM.load_volumes([{"path": glob("bids/derivatives/qsmxt-*-*/sub*/ses*/anat*/*Chimap.nii*")[0],
                      "cal_min":-0.1,"cal_max":0.1}])
nv_QSM
Image(url='https://raw.githubusercontent.com/NeuroDesk/example-notebooks/refs/heads/main/books/images/qsmx_qsm.png')

Segmentations#

Segmentations are generated in both the QSM space and the T1-weighted space. Transformations are also made available.

show_nii(glob("bids/derivatives/qsmxt-2*/sub*/ses*/anat*/*space-qsm*dseg.nii*")[0], cmap='terrain', vmin=0, vmax=96, interpolation='nearest')
../_images/ff6de0b398a46160ac08be887905c2f5f1b01acbeeabcc2620aae0d4f36ff1c0.png
volumes = [
    {   "path": glob("bids/derivatives/qsmxt-*-*/sub*/ses*/anat*/*Chimap.nii*")[0],
        "cal_min": -0.1,
        "cal_max": 0.1
    },
    {
        "path": glob("bids/derivatives/qsmxt-2*/sub*/ses*/anat*/*space-qsm*dseg.nii*")[0],
        "colormap": "freesurfer",
        "visible": True, "opacity": 0.5
    },
]
nv_Seg = NiiVue(
    back_color=(1, 1, 1, 1),
    show_3D_crosshair=True,
)
nv_Seg.load_volumes(volumes)
nv_Seg
Image(url='https://raw.githubusercontent.com/NeuroDesk/example-notebooks/refs/heads/main/books/images/qsmx_Seg.png')

Analysis CSVs#

CSV files have been exported containing susceptibility values in regions of interest for each subject.

Here we will load the CSVs, inspect the data and generate figures:

# import modules
import numpy as np
import nibabel as nib
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
from glob import glob

The raw CSV files use names from FreeSurfer as exported by FastSurfer. The full list of regions is available here.

pd.read_csv(glob("bids/derivatives/qsmxt-*-*/sub*/ses*/extra*/*.csv")[0])
roi num_voxels min max median mean std
0 3rd-Ventricle 589 -0.234913 0.125160 -0.017431 -0.022031 0.034752
1 4th-Ventricle 1544 -0.126038 0.032041 -0.049079 -0.051061 0.027048
2 Brain-Stem 18523 -0.279218 0.103292 -0.044466 -0.040252 0.028723
3 CSF 770 -1.393660 0.945973 0.024721 0.023647 0.143898
4 Left-Accumbens-area 522 -0.142032 0.128779 0.025112 0.022307 0.031406
... ... ... ... ... ... ... ...
91 ctx-rh-superiorfrontal 29607 -0.103590 0.211708 -0.004246 -0.009314 0.024531
92 ctx-rh-superiorparietal 12075 -0.084345 0.148705 -0.014824 -0.014042 0.020430
93 ctx-rh-superiortemporal 16240 -0.090437 0.248823 0.005056 0.012363 0.023648
94 ctx-rh-supramarginal 12060 -0.048296 0.240121 0.019120 0.020332 0.022819
95 ctx-rh-transversetemporal 1252 -0.005484 0.170922 0.033855 0.034595 0.016257

96 rows × 7 columns

We will select a subset of these ROIs and give them more readable names:

# define regions of interest
# see https://github.com/QSMxT/QSMxT/blob/main/qsmxt/aseg_labels.csv for a full list
rois = { 
    "Thalamus" : [9, 10, 48, 49],
    "Pallidum" : [12, 13, 52, 53],
    "Caudate" : [11, 50],
    "Putamen" : [12, 51],
    "Brain stem" : [16],
    "CSF" : [24, 122, 257, 701],
    "White matter" : [2, 7, 41, 46, 177]
}
roi_names = { value: key for key in rois for value in rois[key] }
roi_ids = [value for roi in rois.values() for value in roi]
# load a reconstruction
qsm = nib.load(glob("bids/derivatives/qsmxt-*-*/sub*/ses*/anat*/*Chimap.nii*")[0]).get_fdata().flatten()
seg = nib.load(glob("bids/derivatives/qsmxt-*-*/sub*/ses*/anat*/*space-qsm*dseg.nii*")[0]).get_fdata().flatten()
# retain only the rois
qsm = qsm[np.isin(seg, roi_ids)]
seg = seg[np.isin(seg, roi_ids)]
# convert to a dataframe for plotting purposes
seg = pd.Series(seg).map(roi_names)
data = pd.DataFrame({ 'qsm' : qsm, 'seg' : seg })
# summarise data by region including the average and standard deviation
data.groupby('seg')['qsm'].agg(['mean', 'std']).sort_values('mean').round(decimals=3)
mean std
seg
Brain stem -0.040 0.029
White matter -0.002 0.028
CSF 0.024 0.144
Thalamus 0.030 0.035
Pallidum 0.032 0.060
Putamen 0.046 0.034
Caudate 0.048 0.024
medians = data.groupby('seg')['qsm'].median().sort_values()
order = medians.index
# plot
fig, ax = plt.subplots()
sns.boxplot(data=data, y='qsm', x='seg', fliersize=0, color='lightblue', order=order, ax=ax)
ax.set_xticks(range(len(ax.get_xticks())))  # Set tick positions explicitly
ax.set_xticklabels(ax.get_xticklabels(), ha='right', rotation=45)
ax.set_ylim(-0.2, 0.3)
ax.axhline(y=0, color='pink', linestyle='-', linewidth=1, zorder=-1)
ax.set_xlabel("Region of interest")
ax.set_ylabel("Susceptibility (ppm)")
ax.set_title("QSM")
plt.show()
../_images/84adfa364144adf805ddd7e8e4f10d6571c1e87dfa6c37523f511c97139e1580.png