Hello Freesurfer experts,

I am running my data with preproc-sess to project my func data to individual anatomy file, and the command shows as below:

preproc-sess -sf ${Sesslist} -fsd "bold" -surface self lhrh -fwhm 0 -per-run -force

And the subjectname point to the subject dir that created after recon-all.

After the running completed, I try to load data from fmcpr.sm0.self.lh.nii.gz with nibabel, and I get this error info:

>>> f.get_data()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/pymodules/python2.7/nibabel/spatialimages.py", line 341, in get_data
    return np.asanyarray(self._data)
  File "/usr/lib/python2.7/dist-packages/numpy/core/numeric.py", line 512, in asanyarray
    return array(a, dtype, copy=False, order=order, subok=True)
  File "/usr/lib/pymodules/python2.7/nibabel/arrayproxy.py", line 55, in __array__
    self._data = self._read_data()
  File "/usr/lib/pymodules/python2.7/nibabel/arrayproxy.py", line 60, in _read_data
    data = self.header.data_from_fileobj(fileobj)
  File "/usr/lib/pymodules/python2.7/nibabel/analyze.py", line 486, in data_from_fileobj
    data = self.raw_data_from_fileobj(fileobj)
  File "/usr/lib/pymodules/python2.7/nibabel/analyze.py", line 458, in raw_data_from_fileobj
    return array_from_file(shape, dtype, fileobj, offset)
  File "/usr/lib/pymodules/python2.7/nibabel/volumeutils.py", line 493, in array_from_file
    raise IOError(msg)
IOError: Expected -1804 bytes, got 264809160 bytes from file "fmcpr.vol2surf.lh.nii.gz"
 - could the file be damaged?

Then I check the file header by nibabel, and I get this:

>>> print(f.get_header())
<class 'nibabel.nifti1.Nifti1Header'> object, endian='<'
sizeof_hdr      : 348
data_type       :
db_name         :
extents         : 0
session_error   : 0
regular         :
dim_info        : 0
dim             : [  4  -1   1   1 451   1   1   1]
intent_p1       : 0.0
intent_p2       : 0.0
intent_p3       : 0.0
intent_code     : none
datatype        : float32
bitpix          : 32
slice_start     : 0
pixdim          : [-1.          1.          1.          1.          2.00000072  1.          1.
  1.        ]
vox_offset      : 352.0
scl_slope       : 0.0
scl_inter       : 0.0
slice_end       : 0
slice_code      : unknown
xyzt_units      : 10
cal_max         : 0.0
cal_min         : 0.0
slice_duration  : 0.0
toffset         : 0.0
glmax           : 0
glmin           : 146790
descrip         : FreeSurfer May 13 2013
aux_file        :
qform_code      : scanner
sform_code      : scanner
quatern_b       : -0.0115927606821
quatern_c       : -0.996071338654
quatern_d       : -0.0864994972944
qoffset_x       : 73344.5546875
qoffset_y       : -1492.14978027
qoffset_z       : -2311.28955078
srow_x          : [ -9.99280393e-01   2.56918129e-02   2.79041883e-02   7.33445547e+04]
srow_y          : [  2.04970520e-02   9.84766901e-01  -1.72667429e-01  -1.49214978e+03]
srow_z          : [  3.19152586e-02   1.71971247e-01   9.84584868e-01  -2.31128955e+03]
intent_name     :
magic           : n+1



Note that the dim has value -1, but when I use -surface fsaverage, the dim is correct(show as below):

dim             : [    4 27307     1     6   451     1     1     1]

And I read the source code, the difference between self and fsaverage is appeared when running rawfunc2surf-sess, and log files are attached.

I have tried many commands to load data from fmcpr.sm0.self.lh.nii.gz, such as fslview, freeview, mri_convert, mri_surf2surf, ...

and only tksurfer could read this file by -timecourse fmcpr.sm0.self.lh.nii.gz.

I want to figure out how could I fix it, and any suggestion would be helpful.

Thanks in advance,

Bai Haohao


Version info:
System: ubuntu-16.04.1-server-amd64
Freesurfer: freesurfer-Linux-centos4_x86_64-stable-pub-v5.3.0-HCP
nibabel: python-nibabel  1.2.2-1