-
Notifications
You must be signed in to change notification settings - Fork 134
Closed
Description
Summary
Description of issue: using heudiconv to convert some participants' sessions ("vis") results in a numpy.AxisError: axis 1 is out of bounds for array of dimension 1
error. The same heuristic was successfully used on other participants, but I'm not seeing the difference between participant data that is successfully converted and the data that runs into the error.
commands:
time docker run --rm
--volume /Volumes/LCproject/LC_aging/data_mri:/base nipy/heudiconv:latest
--dicom_dir_template /base/data_BAP/{subject}_Session*{session}_*/*/*
--outdir /base/data_BAP_BIDS
--heuristic /base/data_BAP_BIDS/code/heuristic_postUpdate.py
--subjects BAP120
--ses vis
--converter dcm2niix
--bids
--overwrite
command-line output:
INFO: Running heudiconv version 0.10.0 latest 0.12.2
INFO: Need to process 1 study sessions
INFO: PROCESSING STARTS: {'subject': 'BAP120', 'outdir': '/base/data_BAP_BIDS/', 'session': 'vis'}
INFO: Processing 1370 dicoms
INFO: Analyzing 1370 dicoms
/opt/miniconda-latest/lib/python3.7/site-packages/nibabel/nicom/dicomwrappers.py:536: UserWarning: Derived images found and removed
warnings.warn("Derived images found and removed")
Traceback (most recent call last):
File "/opt/miniconda-latest/bin/heudiconv", line 8, in <module>
sys.exit(main())
File "/opt/miniconda-latest/lib/python3.7/site-packages/heudiconv/cli/run.py", line 24, in main
workflow(**kwargs)
File "/opt/miniconda-latest/lib/python3.7/site-packages/heudiconv/main.py", line 351, in workflow
grouping=grouping,)
File "/opt/miniconda-latest/lib/python3.7/site-packages/heudiconv/convert.py", line 177, in prep_conversion
custom_grouping=getattr(heuristic, 'grouping', None))
File "/opt/miniconda-latest/lib/python3.7/site-packages/heudiconv/dicoms.py", line 202, in group_dicoms_into_seqinfos
mwinfo = validate_dicom(filename, dcmfilter)
File "/opt/miniconda-latest/lib/python3.7/site-packages/heudiconv/dicoms.py", line 106, in validate_dicom
del mw.series_signature[sig]
File "/opt/miniconda-latest/lib/python3.7/site-packages/nibabel/onetime.py", line 142, in __get__
val = self.getter(obj)
File "/opt/miniconda-latest/lib/python3.7/site-packages/nibabel/nicom/dicomwrappers.py", line 642, in series_signature
signature['image_shape'] = (self.image_shape, eq)
File "/opt/miniconda-latest/lib/python3.7/site-packages/nibabel/onetime.py", line 142, in __get__
val = self.getter(obj)
File "/opt/miniconda-latest/lib/python3.7/site-packages/nibabel/nicom/dicomwrappers.py", line 557, in image_shape
frame_indices = np.delete(frame_indices, stackid_dim_idx, axis=1)
File "<__array_function__ internals>", line 6, in delete
File "/opt/miniconda-latest/lib/python3.7/site-packages/numpy/lib/function_base.py", line 4392, in delete
axis = normalize_axis_index(axis, ndim)
numpy.AxisError: axis 1 is out of bounds for array of dimension 1
heuristic:
import os
def create_key(template, outtype=('nii.gz',), annotation_classes=None):
if template is None or not template:
raise ValueError('Template must be a valid format string')
return template, outtype, annotation_classes
def infotodict(seqinfo):
t1w_lowres = create_key('sub-{subject}/{session}/anat/sub-{subject}_{session}_acq-lowres_T1w')
fmri_vis = create_key('sub-{subject}/{session}/func/sub-{subject}_{session}_task-vis_run-{item:01d}_bold')
epi_AP_vis = create_key('sub-{subject}/{session}/fmap/sub-{subject}_{session}_acq-vis_dir-AP_epi')
epi_PA_vis = create_key('sub-{subject}/{session}/fmap/sub-{subject}_{session}_acq-vis_dir-PA_epi')
diff_HCPish_AP = create_key('sub-{subject}/{session}/dwi/sub-{subject}_{session}_acq-hcpish_dir-AP_dwi')
diff_HCPish_PA = create_key('sub-{subject}/{session}/fmap/sub-{subject}_{session}_acq-hcpish_dir-PA_epi')
info = {
t1w_lowres: [], fmri_vis: [], epi_AP_vis: [], epi_PA_vis: [], diff_HCPish_AP: [], diff_HCPish_PA: []
}
for s in seqinfo:
if 't1_mprage_low_res' == s.protocol_name:
info[t1w_lowres].append(s.series_id)
if 'visual_fMRI' in s.protocol_name and s.series_files == 245: # 245 ensures only full runs (not restarts) are bidsified
info[fmri_vis].append(s.series_id)
if 'visual_SE_EPI_Encoding_AP' in s.protocol_name:
info[epi_AP_vis].append(s.series_id)
if 'visual_SE_EPI_Encoding_PA' in s.protocol_name:
info[epi_PA_vis].append(s.series_id)
if 'diff_HCPish_AP' in s.protocol_name and 'TRACEW' not in s.image_type:
info[diff_HCPish_AP].append(s.series_id)
if 'diff_HCPish_PA' in s.protocol_name:
info[diff_HCPish_PA].append(s.series_id)
return info
Platform details:
Choose one:
- Local environment
- Container
Docker
tag: nipy/heudiconv:latest
image ID: 0d55d3d24064
- Heudiconv version: 0.10.0
Metadata
Metadata
Assignees
Labels
No labels