Skip to content

mcribs surface reconstruction error #444

Open
@mblesac

Description

@mblesac

What happened?

Hi,

When I run nibabies-25.0.1 with --surface-recon-method mcribs --derivatives /precomputed it doesn't produce any surfaces. However, when I remove the 2 options it works.

This is how my_precomputed folder looks like:

Image

I'm using the outputs from iBeat2. Any clue what could be the issue? Thanks in advance.

Best regards,

Manuel

What command did you use?

sudo APPTAINER_TMPDIR=$PWD APPTAINER_CACHEDIR=$PWD apptainer run -B /EBC/home/mblesa/test_apptainer/BIDs_data:/data,/EBC/home/mblesa/test_apptainer/test_nibabies_mcribs_2:/out,/EBC/home/mblesa/test_apptainer/my_precomputed:/precomputed,/EBC/home/mblesa/test_apptainer/work:/scratch,/EBC/local/infantFS/freesurfer/license.txt:/opt/freesurfer/license.txt /EBC/home/mblesa/nibabies-25.0.1.sif /data /out participant --participant-label sub-9001 --anat-only --fs-license-file /opt/freesurfer/license.txt -w /scratch --skip_bids_validation --nthreads 16 --omp-nthreads 16 --age-months 0 --surface-recon-method mcribs --reference-anat T2w --derivatives /precomputed

What version of NiBabies are you using?

25.0.1

Relevant log output

250207-11:50:51,917 nipype.workflow INFO:
         [Node] Executing "norm_rpt" <niworkflows.interfaces.reportlets.registration.SimpleBeforeAfterRPT>
250207-11:51:08,292 nipype.workflow INFO:
         [Node] Finished "norm_rpt", elapsed time 16.373553s.
250207-11:51:12,25 nipype.workflow ERROR:
         could not run node: nibabies_25_0_wf.single_subject_sub-9001_ses-01_wf.infant_single_t2w_fit_wf.mcribs_surface_recon_wf.mcribs_recon
250207-11:51:12,61 nipype.workflow CRITICAL:
         nibabies failed: Traceback (most recent call last):
  File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/pipeline/plugins/multiproc.py", line 66, in run_node
    result["result"] = node.run(updatehash=updatehash)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 525, in run
    result = self._run_interface(execute=True)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 643, in _run_interface
    return self._run_command(execute)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 769, in _run_command
    raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node mcribs_recon.

Cmdline:
        MCRIBReconAll --deformablefastcollision --deformablejointhresh 1.000000 -nthreads 16 --surfrecon --surfreconmethod Deformable sub-9001_ses-01
Stdout:
        sub-9001_ses-01 1.0 True False False
        /opt/MCRIBS/bin/../MIRTK/MIRTK-install/lib/tools/recon-neonatal-cortex:67: DeprecationWarning: The SafeConfigParser class has been renamed to ConfigParser in Python 3.2. This alias will be removed in Python 3.12. Use ConfigParser directly instead.
          config  = SafeConfigParser(defaults={'work_dir': work_dir, 'temp_dir': temp_dir})
        /opt/MCRIBS/bin/../MIRTK/MIRTK-install/lib/tools/recon-neonatal-cortex:868: DeprecationWarning: This method will be removed in Python 3.12. Use 'parser.read_file()' instead.
          config.readfp(config_file)

        Reconstructing cortical surfaces of sub-9001_ses-01 session 0
        No input T1-weighted image found, using only T2-weighted image
        > /opt/MCRIBS/MIRTK/MIRTK-install/lib/tools/calculate-element-wise /out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_all_labels_manedit.nii.gz -mask 0 -set 1 -pad 0 -out /out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_brain_mask.nii.gz binary

        Dividing brain volume into disjoint regions
        > /opt/MCRIBS/MIRTK/MIRTK-install/lib/tools/subdivide-brain-image /out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_all_labels_manedit.nii.gz /out/sourcedata/mcribs/sub-9001_ses-01/SurfReconDeformable/sub-9001_ses-01/recon/regions.nii.gz -rh 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 50 52 54 56 58 60 62 63 65 67 69 71 73 75 77 79 81 86 -lh 1 3 5 7 9 11 13 15 17 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 64 66 68 70 72 74 76 78 80 82 87 -wm 51..82 1..4 40..47 85..87 48 49 50 -gm 5..16 20..39 -sb 40..47 85..87 114 172 48 -bs 19 -cb 17 18 172 -bs+cb True -subcortical-closing 5 -brainstem-closing 5 -cerebellum-closing 5 -fg /out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_brain_mask.nii.gz -output-inner-cortical-distance /out/sourcedata/mcribs/sub-9001_ses-01/SurfReconDeformable/sub-9001_ses-01/recon/cortical-hull-dmap.nii.gz -hemispheres /masks/hemis.nii.gz

        GenericImage<VoxelType>::GetRegion: Parameter out of range
        Traceback (most recent call last):
          File "/opt/MCRIBS/bin/../MIRTK/MIRTK-install/lib/tools/recon-neonatal-cortex", line 932, in <module>
            recon_neonatal_cortex(config=config, section=args.section, config_vars=config_vars,
          File "/opt/MCRIBS/bin/../MIRTK/MIRTK-install/lib/tools/recon-neonatal-cortex", line 564, in recon_neonatal_cortex
            require_regions_mask(config, section, config_vars, stack, verbose)
          File "/opt/MCRIBS/bin/../MIRTK/MIRTK-install/lib/tools/recon-neonatal-cortex", line 200, in require_regions_mask
            neoctx.subdivide_brain(
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/deformable/neonatal_cortex.py", line 929, in subdivide_brain
            run('subdivide-brain-image', args=[segmentation, name], opts=opts)
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/deformable/neonatal_cortex.py", line 183, in run
            _run(tool, args=args, opts=opts, showcmd=showcmd, threads=threads)
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/subprocess.py", line 296, in run
            raise e
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/subprocess.py", line 281, in run
            check_call(argv, verbose=1 if showcmd else 0)
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/subprocess.py", line 157, in check_call
            _call(argv, verbose=verbose, execfunc=subprocess.check_call)
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/subprocess.py", line 145, in _call
            return execfunc(argv)
                   ^^^^^^^^^^^^^^
          File "/opt/conda/envs/nibabies/lib/python3.11/subprocess.py", line 413, in check_call
            raise CalledProcessError(retcode, cmd)
        subprocess.CalledProcessError: Command '['/opt/MCRIBS/MIRTK/MIRTK-install/lib/tools/subdivide-brain-image', '/out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_all_labels_manedit.nii.gz', '/out/sourcedata/mcribs/sub-9001_ses-01/SurfReconDeformable/sub-9001_ses-01/recon/regions.nii.gz', '-rh', '2', '4', '6', '8', '10', '12', '14', '16', '18', '20', '22', '24', '26', '28', '30', '32', '34', '36', '38', '40', '42', '44', '46', '50', '52', '54', '56', '58', '60', '62', '63', '65', '67', '69', '71', '73', '75', '77', '79', '81', '86', '-lh', '1', '3', '5', '7', '9', '11', '13', '15', '17', '21', '23', '25', '27', '29', '31', '33', '35', '37', '39', '41', '43', '45', '47', '49', '51', '53', '55', '57', '59', '61', '64', '66', '68', '70', '72', '74', '76', '78', '80', '82', '87', '-wm', '51..82', '1..4', '40..47', '85..87', '48', '49', '50', '-gm', '5..16', '20..39', '-sb', '40..47', '85..87', '114', '172', '48', '-bs', '19', '-cb', '17', '18', '172', '-bs+cb', 'True', '-subcortical-closing', '5', '-brainstem-closing', '5', '-cerebellum-closing', '5', '-fg', '/out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_brain_mask.nii.gz', '-output-inner-cortical-distance', '/out/sourcedata/mcribs/sub-9001_ses-01/SurfReconDeformable/sub-9001_ses-01/recon/cortical-hull-dmap.nii.gz', '-hemispheres', '/masks/hemis.nii.gz']' returned non-zero exit status 1.

        Running command:
                MCRIBSurfReconDeformable sub-9001_ses-01 1.0 True False False
Stderr:

Traceback:
        Traceback (most recent call last):
          File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 404, in run
            outputs = self.aggregate_outputs(runtime)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 433, in aggregate_outputs
            predicted_outputs = self._list_outputs()  # Predictions from _list_outputs
                                ^^^^^^^^^^^^^^^^^^^^
          File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nibabies/interfaces/mcribs.py", line 252, in _list_outputs
            self._verify_outputs('surfrecon', surfrecon_dir, error=True)
          File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nibabies/interfaces/mcribs.py", line 289, in _verify_outputs
            raise FileNotFoundError(f'{step.capitalize()} missing: {fl}')
        FileNotFoundError: Surfrecon missing: pial-lh-reordered.vtp


Traceback (most recent call last):
  File "/opt/conda/envs/nibabies/bin/nibabies", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nibabies/cli/run.py", line 104, in main
    nibabies_wf.run(**_plugin)
  File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/pipeline/engine/workflows.py", line 625, in run
    runner.run(execgraph, updatehash=updatehash, config=self.config)
  File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/pipeline/plugins/base.py", line 223, in run
    raise error from cause
RuntimeError: Traceback (most recent call last):
  File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/pipeline/plugins/multiproc.py", line 66, in run_node
    result["result"] = node.run(updatehash=updatehash)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 525, in run
    result = self._run_interface(execute=True)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 643, in _run_interface
    return self._run_command(execute)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 769, in _run_command
    raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node mcribs_recon.

Cmdline:
        MCRIBReconAll --deformablefastcollision --deformablejointhresh 1.000000 -nthreads 16 --surfrecon --surfreconmethod Deformable sub-9001_ses-01
Stdout:
        sub-9001_ses-01 1.0 True False False
        /opt/MCRIBS/bin/../MIRTK/MIRTK-install/lib/tools/recon-neonatal-cortex:67: DeprecationWarning: The SafeConfigParser class has been renamed to ConfigParser in Python 3.2. This alias will be removed in Python 3.12. Use ConfigParser directly instead.
          config  = SafeConfigParser(defaults={'work_dir': work_dir, 'temp_dir': temp_dir})
        /opt/MCRIBS/bin/../MIRTK/MIRTK-install/lib/tools/recon-neonatal-cortex:868: DeprecationWarning: This method will be removed in Python 3.12. Use 'parser.read_file()' instead.
          config.readfp(config_file)

        Reconstructing cortical surfaces of sub-9001_ses-01 session 0
        No input T1-weighted image found, using only T2-weighted image
        > /opt/MCRIBS/MIRTK/MIRTK-install/lib/tools/calculate-element-wise /out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_all_labels_manedit.nii.gz -mask 0 -set 1 -pad 0 -out /out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_brain_mask.nii.gz binary

        Dividing brain volume into disjoint regions
        > /opt/MCRIBS/MIRTK/MIRTK-install/lib/tools/subdivide-brain-image /out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_all_labels_manedit.nii.gz /out/sourcedata/mcribs/sub-9001_ses-01/SurfReconDeformable/sub-9001_ses-01/recon/regions.nii.gz -rh 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 50 52 54 56 58 60 62 63 65 67 69 71 73 75 77 79 81 86 -lh 1 3 5 7 9 11 13 15 17 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 64 66 68 70 72 74 76 78 80 82 87 -wm 51..82 1..4 40..47 85..87 48 49 50 -gm 5..16 20..39 -sb 40..47 85..87 114 172 48 -bs 19 -cb 17 18 172 -bs+cb True -subcortical-closing 5 -brainstem-closing 5 -cerebellum-closing 5 -fg /out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_brain_mask.nii.gz -output-inner-cortical-distance /out/sourcedata/mcribs/sub-9001_ses-01/SurfReconDeformable/sub-9001_ses-01/recon/cortical-hull-dmap.nii.gz -hemispheres /masks/hemis.nii.gz

        GenericImage<VoxelType>::GetRegion: Parameter out of range
        Traceback (most recent call last):
          File "/opt/MCRIBS/bin/../MIRTK/MIRTK-install/lib/tools/recon-neonatal-cortex", line 932, in <module>
            recon_neonatal_cortex(config=config, section=args.section, config_vars=config_vars,
          File "/opt/MCRIBS/bin/../MIRTK/MIRTK-install/lib/tools/recon-neonatal-cortex", line 564, in recon_neonatal_cortex
            require_regions_mask(config, section, config_vars, stack, verbose)
          File "/opt/MCRIBS/bin/../MIRTK/MIRTK-install/lib/tools/recon-neonatal-cortex", line 200, in require_regions_mask
            neoctx.subdivide_brain(
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/deformable/neonatal_cortex.py", line 929, in subdivide_brain
            run('subdivide-brain-image', args=[segmentation, name], opts=opts)
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/deformable/neonatal_cortex.py", line 183, in run
            _run(tool, args=args, opts=opts, showcmd=showcmd, threads=threads)
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/subprocess.py", line 296, in run
            raise e
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/subprocess.py", line 281, in run
            check_call(argv, verbose=1 if showcmd else 0)
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/subprocess.py", line 157, in check_call
            _call(argv, verbose=verbose, execfunc=subprocess.check_call)
          File "/opt/MCRIBS/MIRTK/MIRTK-install/lib/python/mirtk/subprocess.py", line 145, in _call
            return execfunc(argv)
                   ^^^^^^^^^^^^^^
          File "/opt/conda/envs/nibabies/lib/python3.11/subprocess.py", line 413, in check_call
            raise CalledProcessError(retcode, cmd)
        subprocess.CalledProcessError: Command '['/opt/MCRIBS/MIRTK/MIRTK-install/lib/tools/subdivide-brain-image', '/out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_all_labels_manedit.nii.gz', '/out/sourcedata/mcribs/sub-9001_ses-01/SurfReconDeformable/sub-9001_ses-01/recon/regions.nii.gz', '-rh', '2', '4', '6', '8', '10', '12', '14', '16', '18', '20', '22', '24', '26', '28', '30', '32', '34', '36', '38', '40', '42', '44', '46', '50', '52', '54', '56', '58', '60', '62', '63', '65', '67', '69', '71', '73', '75', '77', '79', '81', '86', '-lh', '1', '3', '5', '7', '9', '11', '13', '15', '17', '21', '23', '25', '27', '29', '31', '33', '35', '37', '39', '41', '43', '45', '47', '49', '51', '53', '55', '57', '59', '61', '64', '66', '68', '70', '72', '74', '76', '78', '80', '82', '87', '-wm', '51..82', '1..4', '40..47', '85..87', '48', '49', '50', '-gm', '5..16', '20..39', '-sb', '40..47', '85..87', '114', '172', '48', '-bs', '19', '-cb', '17', '18', '172', '-bs+cb', 'True', '-subcortical-closing', '5', '-brainstem-closing', '5', '-cerebellum-closing', '5', '-fg', '/out/sourcedata/mcribs/sub-9001_ses-01/TissueSeg/sub-9001_ses-01_brain_mask.nii.gz', '-output-inner-cortical-distance', '/out/sourcedata/mcribs/sub-9001_ses-01/SurfReconDeformable/sub-9001_ses-01/recon/cortical-hull-dmap.nii.gz', '-hemispheres', '/masks/hemis.nii.gz']' returned non-zero exit status 1.

        Running command:
                MCRIBSurfReconDeformable sub-9001_ses-01 1.0 True False False
Stderr:

Traceback:
        Traceback (most recent call last):
          File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 404, in run
            outputs = self.aggregate_outputs(runtime)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 433, in aggregate_outputs
            predicted_outputs = self._list_outputs()  # Predictions from _list_outputs
                                ^^^^^^^^^^^^^^^^^^^^
          File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nibabies/interfaces/mcribs.py", line 252, in _list_outputs
            self._verify_outputs('surfrecon', surfrecon_dir, error=True)
          File "/opt/conda/envs/nibabies/lib/python3.11/site-packages/nibabies/interfaces/mcribs.py", line 289, in _verify_outputs
            raise FileNotFoundError(f'{step.capitalize()} missing: {fl}')
        FileNotFoundError: Surfrecon missing: pial-lh-reordered.vtp

Add any additional information or context about the problem here.

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions