Skip to content

🐛 ?_surf_reho: IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed #2257

@shnizzedy

Description

@shnizzedy

Describe the bug

Node: cpac_pipeline_cpac_abcd-options_sub-3884955_ses-1.R_surf_reho_503
Working directory: /ocean/projects/med250004p/shared/regression_outputs_v1.8.8/2025-06-20/abcd-options/KKI/sub-3884955/working/pipeline_cpac_abcd-options/cpac_pipeline_cpac_abcd-options_sub-3884955_ses-1/_scan_rest_run-1_acq-2/R_surf_reho_503

Node inputs:

cortex_file = /ocean/projects/med250004p/shared/regression_outputs_v1.8.8/2025-06-20/abcd-options/KKI/sub-3884955/working/pipeline_cpac_abcd-options/cpac_pipeline_cpac_abcd-options_sub-3884955_ses-1/_scan_rest_run-1_acq-2/R_surf_cortex_503/sub-3884955_ses-1_R_cortex.func.gii
dtseries = /ocean/projects/med250004p/shared/regression_outputs_v1.8.8/2025-06-20/abcd-options/KKI/sub-3884955/working/pipeline_cpac_abcd-options/cpac_sub-3884955_ses-1/post_freesurfer_298/MNINonLinear/Results/task-rest01/task-rest01_Atlas.dtseries.nii
function_str = def run_surf_reho(
    subject,
    dtseries,
    mask,
    cortex_file,
    surface_file,
    mean_timeseries,
    reho_filename,
    structure_name,
):
    import os

    import numpy as np
    import nibabel as nib

    from CPAC.surface.PostFreeSurfer.surf_reho import ccs_ReHo

    dtseries = nib.load(dtseries)  # dtseries file
    mask = nib.load(mask)  # surface mask file
    cortex_file = nib.load(cortex_file)  # cortex file
    surf_file = nib.load(surface_file)  # surface file
    scalar_dt = nib.load(mean_timeseries)  # mean_timeseries
    surf_reho = os.path.join(os.getcwd(), f"{subject}_{reho_filename}")

    cReHo = ccs_ReHo(cortex_file, surf_file)
    structure_names = [structure_name]

    ## Get header information from dtseries and mean timeseries ##
    axes1 = [scalar_dt.header.get_axis(i) for i in range(scalar_dt.ndim)]

    time_axis1, _brain_axis1 = axes1  # dscalar
    brain_model_axis = nib.cifti2.cifti2_axes.BrainModelAxis.from_surface(
        vertices=cReHo[:, 0], nvertex=cReHo.shape[0], name=structure_name
    )

    # Only use data from specific region
    brain_models = [
        bm for bm in brain_model_axis.iter_structures() if bm[0] in structure_names
    ]

    # Extract data from dtseries for every element in brain models and make into dataobj
    new_dataobj = np.concatenate(
        [dtseries.dataobj[0, bm[1]] for bm in brain_models], axis=0
    )
    new_dataobj = np.transpose(new_dataobj.reshape(-1, 1))

    # Get axis information for new dataobj
    new_brain_model_axis = sum((bm[2] for bm in brain_models[1:]), brain_models[0][2])

    new_cifti = nib.Cifti2Image(
        new_dataobj,
        header=(time_axis1, new_brain_model_axis),
        nifti_header=dtseries.nifti_header,
    )

    ## Saving image ##
    img = nib.Cifti2Image(
        np.transpose(cReHo),
        header=new_cifti.header,
        nifti_header=new_cifti.nifti_header,
    )
    reho_file = surf_reho
    img.to_filename(reho_file)

    return surf_reho

mask = /ocean/projects/med250004p/shared/regression_outputs_v1.8.8/2025-06-20/abcd-options/KKI/sub-3884955/working/pipeline_cpac_abcd-options/cpac_sub-3884955_ses-1/post_freesurfer_305/MNINonLinear/fsaverage_LR32k/sub-3884955_ses-1.R.atlasroi.32k_fs_LR.shape.gii
mean_timeseries = /ocean/projects/med250004p/shared/regression_outputs_v1.8.8/2025-06-20/abcd-options/KKI/sub-3884955/working/pipeline_cpac_abcd-options/cpac_pipeline_cpac_abcd-options_sub-3884955_ses-1/_scan_rest_run-1_acq-2/mean_timeseries_503/sub-3884955_ses-1_mean.dscalar.nii
reho_filename = R_surf_reho.dscalar.nii
structure_name = CIFTI_STRUCTURE_CORTEX_RIGHT
subject = sub-3884955_ses-1
surface_file = /ocean/projects/med250004p/shared/regression_outputs_v1.8.8/2025-06-20/abcd-options/KKI/sub-3884955/working/pipeline_cpac_abcd-options/cpac_sub-3884955_ses-1/post_freesurfer_305/MNINonLinear/fsaverage_LR32k/sub-3884955_ses-1.R.midthickness.32k_fs_LR.surf.gii

Traceback (most recent call last):
  File "/usr/share/fsl/6.0/lib/python3.10/site-packages/nipype/pipeline/plugins/linear.py", line 47, in run
    node.run(updatehash=updatehash)
  File "/code/CPAC/pipeline/nipype_pipeline_engine/engine.py", line 474, in run
    return super().run(updatehash)
  File "/usr/share/fsl/6.0/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
    result = self._run_interface(execute=True)
  File "/usr/share/fsl/6.0/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
    return self._run_command(execute)
  File "/usr/share/fsl/6.0/lib/python3.10/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 R_surf_reho_503.

Traceback:
	Traceback (most recent call last):
	  File "/code/CPAC/pipeline/nipype_pipeline_engine/monkeypatch.py", line 40, in run
	    runtime = self._run_interface(runtime)
	  File "/code/CPAC/utils/interfaces/function/function.py", line 332, in _run_interface
	    out = function_handle(**args)
	  File "<string>", line 33, in run_surf_reho
	IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed

To reproduce

No response

Preconfig

  • default
  • abcd-options
  • anat-only
  • blank
  • ccs-options
  • fmriprep-options
  • fx-options
  • monkey
  • monkey-ABCD
  • ndmg
  • nhp-macaque
  • preproc
  • rbc-options
  • rodent

Custom pipeline configuration

No response

Run command

singularity run \
  --cleanenv \
  -B "/ocean/projects/med250004p/jclucas/C-PAC/CPAC":"/code/CPAC" \
  -B "$OUTPUT":"$OUTPUT" \
  "$IMAGE" \
  "$INPUT" \
  "$OUTPUT" \
  participant \
  --skip_bids_validator \
  --n_cpus 1 \
  --mem_gb 7.0 \
  --participant_label "$PARTICIPANT" \
  --preconfig "$CONFIG_NAME"

Expected behavior

No crash

Acceptance criteria

  • surf_reho nodes don't crash

Screenshots

No response

C-PAC version

v1.8.8-dev @ 0ec8206

Container platform

Singularity

Docker and/or Singularity version(s)

Apptainer v1.4.1-1.el8

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    Status

    ✅ Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions