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