nipy / PySurfer

Cortical neuroimaging visualization in Python
https://pysurfer.github.io/
BSD 3-Clause "New" or "Revised" License
239 stars 98 forks source link

IO error for scalar file format #234

Closed ktavabi closed 6 years ago

ktavabi commented 6 years ago

Instead of overlaying activation gist from example throws IO ValueError...

from surfer import Brain
brain = Brain("fsaverage", "lh", "inflated")
overlay = 'lh.sig.nii.gz'
brain.add_overlay(overlay_file)

Traceback (most recent call last): File ".../miniconda3/envs/nbwr3/lib/python3.6/site-packages/surfer/io.py", line 32, in read_scalar_data scalar_data = nib.load(filepath).get_data() File ".../miniconda3/envs/nbwr3/lib/python3.6/site-packages/nibabel/loadsave.py", line 49, in load filename) nibabel.filebasedimages.ImageFileError: Cannot work out file type of ".../Projects/nbwr/nbwr/lh.sig.nii.gz"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File ".../miniconda3/envs/nbwr3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2910, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "", line 1, in brain.add_overlay(overlay_file) File ".../miniconda3/envs/nbwr3/lib/python3.6/site-packages/surfer/viz.py", line 950, in add_overlay scalar_data, name = self._read_scalar_data(source, hemi, name=name) File ".../miniconda3/envs/nbwr3/lib/python3.6/site-packages/surfer/viz.py", line 852, in _read_scalar_data scalar_data = io.read_scalar_data(source) File ".../miniconda3/envs/nbwr3/lib/python3.6/site-packages/surfer/io.py", line 43, in read_scalar_data raise ValueError("Scalar file format must be readable " ValueError: Scalar file format must be readable by Nibabel or .mg{hz} format

My Sys info...

Platform: Linux-4.4.0-119-generic-x86_64-with-debian-stretch-sid Python: 3.6.4 |Anaconda, Inc.| (default, Mar 13 2018, 01:15:57) [GCC 7.2.0] Executable: /home/ktavabi/miniconda3/envs/nbwr3/bin/python CPU: x86_64: 24 cores Memory: 94.4 GB mne: 0.16.dev0 numpy: 1.14.2 {blas=mkl_rt, lapack=mkl_rt} scipy: 1.0.0 matplotlib: 2.2.2 {backend=Qt5Agg} sklearn: 0.19.1 nibabel: 2.2.1 mayavi: 4.5.1.dev0 {qt_api=pyqt5} pycuda: 2017.1.1 skcuda: 0.5.1 pandas: 0.22.0 surfer: 0.9.dev0

larsoner commented 6 years ago

If this works:

>>> import nibabel
>>> data = nibabel.load("example_data/lh.sig.nii.gz")
>>> data
<nibabel.nifti1.Nifti1Image object at 0x7f48f2e97b38>

But doing the same thing with your file does not, it suggests that either your data are corrupted or nibabel can't read it for some reason.

I'd try to extract the nii.gz file to .nii (gunzip -k lh.sig.nii.gz), then try loading it using nibabel.