Project-MONAI / Project-MONAI/MONAI
`reverse_indexing` crashes for `ITKReader` when using `.nrrd`
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 8.7k
- Forks
- 1.6k
- Avg merge
- 5d 1h
- Merged PRs (30d)
- 20
Description
Describe the bug
Setting reverse_indexing=True works well for NIFTI files but crashes for NRRD files when setting reader="ITKReader" in LoadImage
To Reproduce
Case 1: Load NIFTI without setting reverse_indexing - Works!
import monai
import matplotlib.pyplot as plt
nrrd_datalist = ["/mnt/data1/RadiomicsFoundationModel/LUNG1/NRRDs/LUNG1-001/CT.nrrd"]
nifti_datalist = ["/mnt/data1/SOTASeg/Dataset600_TotalSegmentator_all_fullres/imagesTr/TotalSegmentator_1405_0000.nii.gz"]
transform = monai.transforms.Compose([
monai.transforms.LoadImage(image_only=True, ensure_channel_first=True, reader="ITKReader"),
monai.transforms.DataStats(),
])
out = transform(nifti_datalist)
Data statistics:
Type: <class 'monai.data.meta_tensor.MetaTensor'> torch.float32
Shape: torch.Size([1, 255, 255, 287])
Value range: (-1179.0, 3262.0)
Case 2: Load NIFTI setting reverse_indexing=True - Works!
import monai
import matplotlib.pyplot as plt
nrrd_datalist = ["/mnt/data1/RadiomicsFoundationModel/LUNG1/NRRDs/LUNG1-001/CT.nrrd"]
nifti_datalist = ["/mnt/data1/SOTASeg/Dataset600_TotalSegmentator_all_fullres/imagesTr/TotalSegmentator_1405_0000.nii.gz"]
transform = monai.transforms.Compose([
monai.transforms.LoadImage(image_only=True, ensure_channel_first=True, reader="ITKReader", reverse_indexing=True),
monai.transforms.DataStats(),
])
out = transform(nifti_datalist)
Data statistics:
Type: <class 'monai.data.meta_tensor.MetaTensor'> torch.float32
Shape: torch.Size([1, 287, 255, 255])
Value range: (-1179.0, 3262.0)
Case 3: Load NRRD without setting reverse_indexing - Works!
import monai
import matplotlib.pyplot as plt
nrrd_datalist = ["/mnt/data1/RadiomicsFoundationModel/LUNG1/NRRDs/LUNG1-001/CT.nrrd"]
nifti_datalist = ["/mnt/data1/SOTASeg/Dataset600_TotalSegmentator_all_fullres/imagesTr/TotalSegmentator_1405_0000.nii.gz"]
transform = monai.transforms.Compose([
monai.transforms.LoadImage(image_only=True, ensure_channel_first=True, reader="ITKReader"),
monai.transforms.DataStats(),
])
out = transform(nrrd_datalist)
Data statistics:
Type: <class 'monai.data.meta_tensor.MetaTensor'> torch.float32
Shape: torch.Size([1, 512, 512, 134])
Value range: (-1024.0, 3034.0)
Case 4: Load NRRD setting reverse_indexing=True Breaks
import monai
import matplotlib.pyplot as plt
nrrd_datalist = ["/mnt/data1/RadiomicsFoundationModel/LUNG1/NRRDs/LUNG1-001/CT.nrrd"]
nifti_datalist = ["/mnt/data1/SOTASeg/Dataset600_TotalSegmentator_all_fullres/imagesTr/TotalSegmentator_1405_0000.nii.gz"]
transform = monai.transforms.Compose([
monai.transforms.LoadImage(image_only=True, ensure_channel_first=True, reader="ITKReader", reverse_indexing=True),
monai.transforms.DataStats(),
])
out = transform(nrrd_datalist)
Error message:
Segmentation fault (core dumped)
Environment
monai_env_config.txt
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at LoadImage's ITKReader path for reverse_indexing and reproduce the provided NRRD example, comparing it with the working NIFTI cases. Trace the NRRD-specific behavior around reverse_indexing. Done means loading the NRRD no longer causes a segmentation fault while the existing NIFTI behavior remains working.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- computer-vision
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100