[Neuroimaging] Fwd: [Freesurfer] negative header after preproc-sess

Bai Haohao jarblank1200 at gmail.com
Fri Jul 28 10:42:31 EDT 2017


Hi,

Thanks for your advice, I open an issue on github, and I wish it could help.

Best.

Bai Haohao

On Thu, Jul 27, 2017 at 10:20 PM, Christopher Markiewicz <effigies at bu.edu>
wrote:

> Looks like the FreeSurfer hack needs to be expanded to more cases. Could
> you go ahead and open an issue on https://github.com/nipy/nibabel/issues?
>
> On Thu, Jul 27, 2017 at 9:41 AM, Bai Haohao <jarblank1200 at gmail.com>
> wrote:
>
>> Dear nibabel experts,
>>
>> I forward this email to nibabel mailing list because I think it is
>> related to nibabel, even this problem is caused by nifti standard and
>> freesurfer.
>>
>> I am using nibabel to load data after freesurfer "*preproc-sess -suface
>> self" *and I get negative dim(-1 1 1, see origin email for detail),
>> which makes nibabel.get_data() failed, but freesurfer first level analysis
>> can be done successfully, in my view it means freesurfer can get data from
>> this bad header.
>>
>> I find a way to solve it is by using "mri_convert *.nii.gz *.mgz", then
>> nibabel could get data from *.mgz. But I think if nibabel could support
>> getting data from negative header file would be more helpful.
>>
>> Just some undevelopped thoughts, I hope I express it clearly.
>>
>> Best,
>>
>> Bai Haohao
>>
>>
>>
>> ---------- Forwarded message ----------
>> From: Douglas Greve <greve at nmr.mgh.harvard.edu>
>> Date: Thu, Jul 6, 2017 at 7:07 AM
>> Subject: Re: [Freesurfer] negative header after preproc-sess
>> To: freesurfer at nmr.mgh.harvard.edu
>>
>>
>> When the nifti standard was adopted, they used a short int to represent
>> the dimensions. Unfortunately, this only allows for a maximum dimension of
>> 32k, which is not big enough for surfaces. So I hacked the FS nifti format
>> to put a -1 as the first dim at which point the FS code will go to another
>> place in the header to get the spatial dimensions. It is possible to
>> reshape the spatial dimensions as long as the largest prime factor is less
>> than 32k (see mri_surf2surf with --reshape option). Other than that, you
>> might ask the nibabel people to program the same hack.
>>
>> On 6/25/17 6:48 AM, Bai Haohao wrote:
>>
>> 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
>>
>>
>>
>> _______________________________________________
>> Freesurfer mailing listFreesurfer at nmr.mgh.harvard.eduhttps://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer
>>
>>
>>
>> _______________________________________________
>> Freesurfer mailing list
>> Freesurfer at nmr.mgh.harvard.edu
>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer
>>
>>
>> The information in this e-mail is intended only for the person to whom it
>> is
>> addressed. If you believe this e-mail was sent to you in error and the
>> e-mail
>> contains patient information, please contact the Partners Compliance
>> HelpLine at
>> http://www.partners.org/complianceline . If the e-mail was sent to you
>> in error
>> but does not contain patient information, please contact the sender and
>> properly
>> dispose of the e-mail.
>>
>>
>>
>> _______________________________________________
>> Neuroimaging mailing list
>> Neuroimaging at python.org
>> https://mail.python.org/mailman/listinfo/neuroimaging
>>
>>
>
> _______________________________________________
> Neuroimaging mailing list
> Neuroimaging at python.org
> https://mail.python.org/mailman/listinfo/neuroimaging
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/neuroimaging/attachments/20170728/f5a6646d/attachment.html>


More information about the Neuroimaging mailing list