Closed pwrightkcl closed 1 year ago
Does #1220 help?
Thanks, @effigies, that is informative. I can specify the type of my image object and clear the warnings as you describe in #1220.
image2 = nib.Nifti1Image.from_filename('my_image.nii')
voxel_dims2 = image2.header.get_data_shape()
Y2 = image2.get_fdata()
new_image2 = nib.Nifti1Image(Y, image2.affine, image.header)
I still get a warning for get_data_shape
because the header is still default typed as FileBasedHeader. I can get that to go away as follows:
image3 = nib.Nifti1Image.from_filename('my_image.nii')
header3 = nib.Nifti1Header.from_fileobj(image3)
voxel_dims3 = header3.get_data_shape()
Thanks for the explanation.
I still get a warning for get_data_shape because the header is still default typed as FileBasedHeader
This seems like a bug in pycharm. It is detected as a nifti header by mypy. Happy to fix up the annotation to work with more tools, but I'll need advice from those familiar with them.
Also, if you just need the shape, img.shape ought to do the trick.
I am using nibabel 5.1.0 in a script in Pycharm, and I'm getting highlighted warnings in code like this:
get_data_shape
with the warningUnresolved attribute reference 'get_data_shape' for class 'FileBasedHeader'
.get_fdata
with the warningUnresolved attribute reference 'get_fdata' for class 'FileBasedImage'
.affine
with the warningUnresolved attribute reference 'affine' for class 'FileBasedImage'
.The script seems to run OK, so it seems like an issue with Pycharm's checking. Looking at
filebasedimages.py
I don't see theget_data_shape
method etc. so I guess those must be added when a child class specific to NIfTI images comes into play.I don't know enough about Python namespaces and Pycharm's code checking, so I'm just going to leave this here for others to decide whether this requires any action on the nibabel side. If someone feels like dropping an educational reply, that would be an unexpected bonus.