MRIQC ERROR "raised BrokenProcessPool"

Summary of what happened:

I get the following error when running MRIQC. Any help would be appreciated.

Thank you!
Marco

Command used (and if a helper script was used, a link to the helper script or the command generated):

sudo docker run -it --rm \
-v /mnt/c/Users/marco/HiDrive/KKB/QA/dcm2bids_mriqc_pipeline/dcm2bids_out/:/data:ro \
-v /mnt/c/Users/marco/HiDrive/KKB/QA/dcm2bids_mriqc_pipeline/mriqc_out/:/out \
nipreps/mriqc:latest \
/data /out participant -\
-no-sub \
--participant_label 001

Version:

24.1.0

Environment (Docker, Singularity / Apptainer, custom installation):

Docker

Data formatted according to a validatable standard? Please provide the output of the validator:

PASTE VALIDATOR OUTPUT HERE

Relevant log outputs (up to 20 lines):

------------------------------------------------------------------
  Running MRIQC version 24.1.0.dev0+g3fe90466.d20240417
  ----------------------------------------------------------------
  * BIDS dataset path: /data.
  * Output folder: /out.
  * Analysis levels: ['participant'].
------------------------------------------------------------------

2024-07-24 11:32:37 | IMPORTANT | mriqc            | Building MRIQC's workflows...
2024-07-24 11:32:47 | IMPORTANT | mriqc            | Workflow building finished (exit code 0).
2024-07-24 11:41:52 | INFO     | niworkflows      | Estimating initial transform using AffineInitializer
2024-07-24 11:43:39 | INFO     | niworkflows      | Terminal outputs of initialization saved (/tmp/work/mriqc_wf/anatMRIQC/SpatialNormalization/_in_file_..data..sub-001..ses-001..anat..sub-001_ses-001_T1w.nii.gz/SpatialNormalization/stderr.nipype-init).
2024-07-24 11:43:39 | INFO     | niworkflows      | Loading settings from file /opt/conda/lib/python3.11/site-packages/niworkflows/data/t1w-mni_registration_testing_000.json.
2024-07-24 11:43:39 | INFO     | niworkflows      | Retry #1, commandline:
antsRegistration --collapse-output-transforms 1 --dimensionality 3 --float 0 --initial-moving-transform [ /tmp/work/mriqc_wf/anatMRIQC/SpatialNormalization/_in_file_..data..sub-001..ses-001..anat..sub-001_ses-001_T1w.nii.gz/SpatialNormalization/transform.mat, 0 ] --initialize-transforms-per-stage 0 --interpolation LanczosWindowedSinc --output [ ants_t1_to_mni, ants_t1_to_mni_Warped.nii.gz ] --transform Rigid[ 1.0 ] --metric Mattes[ /tmp/work/mriqc_wf/anatMRIQC/SpatialNormalization/_in_file_..data..sub-001..ses-001..anat..sub-001_ses-001_T1w.nii.gz/SpatialNormalization/fixed_masked.nii.gz, /tmp/work/mriqc_wf/anatMRIQC/SpatialNormalization/_in_file_..data..sub-001..ses-001..anat..sub-001_ses-001_T1w.nii.gz/SpatialNormalization/moving_masked.nii.gz, 1, 56, Random, 0.2 ] --convergence [ 20, 1e-07, 15 ] --smoothing-sigmas 4.0vox --shrink-factors 2 --use-histogram-matching 0 --transform Affine[ 1.0 ] --metric Mattes[ /tmp/work/mriqc_wf/anatMRIQC/SpatialNormalization/_in_file_..data..sub-001..ses-001..anat..sub-001_ses-001_T1w.nii.gz/SpatialNormalization/fixed_masked.nii.gz, /tmp/work/mriqc_wf/anatMRIQC/SpatialNormalization/_in_file_..data..sub-001..ses-001..anat..sub-001_ses-001_T1w.nii.gz/SpatialNormalization/moving_masked.nii.gz, 1, 56, Random, 0.1 ] --convergence [ 15, 1e-08, 5 ] --smoothing-sigmas 2.0vox --shrink-factors 1 --use-histogram-matching 1 --winsorize-image-intensities [ 0.005, 0.995 ]  --write-composite-transform 1
2024-07-24 11:44:05 | INFO     | niworkflows      | Successful spatial normalization (retry #1).
2024-07-24 11:44:08 | INFO     | niworkflows      | Report - setting fixed (/tmp/work/mriqc_wf/anatMRIQC/SpatialNormalization/_in_file_..data..sub-001..ses-001..anat..sub-001_ses-001_T1w.nii.gz/SpatialNormalization/fixed_masked.nii.gz) and moving (/tmp/work/mriqc_wf/anatMRIQC/SpatialNormalization/_in_file_..data..sub-001..ses-001..anat..sub-001_ses-001_T1w.nii.gz/SpatialNormalization/ants_t1_to_mni_Warped.nii.gz) images
2024-07-24 11:44:08 | INFO     | niworkflows      | Generating visual report
2024-07-24 11:48:26 | WARNING  | nipype.interface | Estimated signal variation in the background was too small (MAD=0.0, sigma=22.1603)
2024-07-24 11:48:26 | WARNING  | nipype.interface | Estimated signal variation in the background was too small (MAD=0.0, sigma=22.1603)
2024-07-24 11:48:26 | WARNING  | nipype.interface | Estimated signal variation in the background was too small (MAD=0.0, sigma=22.1603)
2024-07-24 11:59:20 | ERROR    | concurrent.futures | exception calling callback for <Future at 0x7fd8f7ac1a50 state=finished raised BrokenProcessPool>
Traceback (most recent call last):
  File "/opt/conda/lib/python3.11/concurrent/futures/_base.py", line 340, in _invoke_callbacks
    callback(self)
  File "/opt/conda/lib/python3.11/site-packages/mriqc/engine/plugin.py", line 456, in _async_callback
    result = args.result()
             ^^^^^^^^^^^^^
  File "/opt/conda/lib/python3.11/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
concurrent.futures.process.BrokenProcessPool: A process in the process pool was terminated abruptly while the future was running or pending.
2024-07-24 11:59:20 | ERROR    | concurrent.futures | exception calling callback for <Future at 0x7fd8fe4ee7d0 state=finished raised BrokenProcessPool>
Traceback (most recent call last):
  File "/opt/conda/lib/python3.11/concurrent/futures/_base.py", line 340, in _invoke_callbacks
    callback(self)
  File "/opt/conda/lib/python3.11/site-packages/mriqc/engine/plugin.py", line 456, in _async_callback
    result = args.result()
             ^^^^^^^^^^^^^
  File "/opt/conda/lib/python3.11/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/opt/conda/lib/python3.11/concurrent/futures/_base.py", line 340, in _invoke_callbacks
    callback(self)
  File "/opt/conda/lib/python3.11/site-packages/mriqc/engine/plugin.py", line 456, in _async_callback
    result = args.result()
             ^^^^^^^^^^^^^
  File "/opt/conda/lib/python3.11/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
concurrent.futures.process.BrokenProcessPool: A process in the process pool was terminated abruptly while the future was running or pending.

Screenshots / relevant information:


Hi @marco5790,

For future posts like this please use the Software Support category which provides a post template. You can see I organized edited your post for you this time.

That error tends to be a result of insufficient memory.

Best,
Steven

Hi Steven,

I kept adapting the settings (and adding RAM) and I was finally able to run mriqc with a .wslcongif file that contains these settings:

[wsl2]
memory=30GB # Limits VM memory in WSL 2 to 4 GB -> no, can also be 8GB
processors=4 # Makes the WSL 4 VM use two virtual processors
swap=16GB

This seems to be lower limit of resources necessary, which may be interesting for anyone who wants to run the software on a Laptop, using a Windows Subsystem for Linux (wsl).

Best,
Marco