RuntimeError: Input inhomogeneity-corrected data seems empty with MRIQC

Summary of what happened:

I am a new user to MRIQC, and have been trying to get it to work on my BIDS-ified data. It consists of anatomical MRI scans only. For this particular subject, I had trouble running MRIQC in one go. When I removed the problematic files it ran perfectly. However, when I ran the problematic file isolated, MRIQC could also process it. So I am wondering as to why the MRIQC is unable to process all the files in one go.

I would very much appreciate any assistance as I have been stuck on this issue for a fairly long time now, thank you in advance!

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

docker run -it --rm -v /media/angkm/DataHDD/vascularDementia/mriqc_test/mriqc_test_dcm2bids_sub-01:/data:ro -v /media/angkm/DataHDD/vascularDementia/mriqc_test/mriqc_test_dcm2bids_sub-01/derivatives/mriqc:/out nipreps/mriqc:latest /data /out participant --participant_label 01 --no-sub --verbose-reports

Version:

23.1.0

Environment (Docker, Singularity, custom installation):

Docker

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

Relevant log outputs (up to 20 lines):

Traceback (most recent call last):
  File "/opt/conda/bin/mriqc", line 8, in <module>
    sys.exit(main())
  File "/opt/conda/lib/python3.9/site-packages/mriqc/cli/run.py", line 168, in main
    mriqc_wf.run(**_plugin)
  File "/opt/conda/lib/python3.9/site-packages/nipype/pipeline/engine/workflows.py", line 638, in run
    runner.run(execgraph, updatehash=updatehash, config=self.config)
  File "/opt/conda/lib/python3.9/site-packages/mriqc/engine/plugin.py", line 184, in run
    self._clean_queue(jobid, graph, result=result)
  File "/opt/conda/lib/python3.9/site-packages/mriqc/engine/plugin.py", line 256, in _clean_queue
    raise RuntimeError("".join(result["traceback"]))
RuntimeError: Traceback (most recent call last):
  File "/opt/conda/lib/python3.9/site-packages/mriqc/engine/plugin.py", line 60, in run_node
    result["result"] = node.run(updatehash=updatehash)
  File "/opt/conda/lib/python3.9/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
    result = self._run_interface(execute=True)
  File "/opt/conda/lib/python3.9/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
    return self._run_command(execute)
  File "/opt/conda/lib/python3.9/site-packages/nipype/pipeline/engine/nodes.py", line 771, in _run_command
    raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node measures.

Traceback:
	Traceback (most recent call last):
	  File "/opt/conda/lib/python3.9/site-packages/nipype/interfaces/base/core.py", line 397, in run
	    runtime = self._run_interface(runtime)
	  File "/opt/conda/lib/python3.9/site-packages/mriqc/interfaces/anatomical.py", line 114, in _run_interface
	    raise RuntimeError(
	RuntimeError: Input inhomogeneity-corrected data seem empty. MRIQC failed to process this dataset.

Screenshots / relevant information:

Below I have included some screenshots of the BIDS-ified subject that keeps encountering errors. For reference, the file sub-01_acq-gre_T2w.nii.gz is one of the problematic file.

Bump on this, I’ve been struggling with this for quite a few weeks so I would appreciate any form of insight, thanks.

I also recently encountered the same error while running mriqc (v 24.0.0) on my dataset, and only for some of my T2w images.

For my case, it appears that the method that produces the ‘inhomogeneity-corrected data’ binarises a white matter probability map from Atropos to create a white matter mask. The method binarises the map at a threshold of 0.9, but unfortunately Atropos produced a white matter probability map that contains values no greater than 0.8. As a result, the output file is empty because the mask is empty.

See mriqc/mriqc/interfaces/anatomical.py at 207356d913035c21e080969bebb35039574ae5fd · nipreps/mriqc · GitHub

    wm_mask[wm_mask < 0.9] = 0
    wm_mask[wm_mask > 0] = 1

Unfortunately, the 0.9 threshold is hardcoded into the method, although there appears to be an incomplete implementation for the threshold to be manually specified. I would probably manually check the white matter probability file and change the threshold accordingly.