fix(nifti): enable lazy loading for Nifti1ImageWrapper#7887
Merged
lhoestq merged 2 commits intohuggingface:mainfrom Dec 19, 2025
Merged
fix(nifti): enable lazy loading for Nifti1ImageWrapper#7887lhoestq merged 2 commits intohuggingface:mainfrom
lhoestq merged 2 commits intohuggingface:mainfrom
Conversation
0eab74c to
d2c1fce
Compare
- Change dataobj initialization from get_fdata() to .dataobj - Preserves nibabel's ArrayProxy for lazy loading - Prevents OOM errors on large 4D fMRI files - Defers I/O errors to usage time for better error handling Resolves #1
d2c1fce to
d1d14bd
Compare
This was referenced Dec 14, 2025
|
The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
dataobj=nifti_image.get_fdata()→dataobj=nifti_image.dataobjArrayProxyfor true lazy loading instead of eagerly loading entire NIfTI files into memoryProblem
The
Nifti1ImageWrapper.__init__was callingget_fdata()which immediately loads the entire image into memory. For large 4D fMRI files (often 1-2GB), this causes:EOFErrorwith no file path)Solution
Use
nifti_image.dataobjwhich preserves the underlyingArrayProxy, deferring actual I/O toget_fdata()calls.Test Plan
test_nifti_lazy_loadingto verifyArrayProxyis preservedRelated