[Neuroimaging] Fwd: [Freesurfer] negative header after preproc-sess
Christopher Markiewicz
effigies at bu.edu
Fri Jul 28 11:18:13 EDT 2017
Hi Bai,
You can try setting the FSF_OUTPUT_FORMAT environment variable to 'mgz' (in
$FREESURFER_HOME/FreeSurferEnv.sh).
I haven't tried this, and there may be code that presumes NIfTI inputs, but
I would assume it would be fine with MGH/MGZ formats.
Chris
On Fri, Jul 28, 2017 at 10:59 AM, Bai Haohao <jarblank1200 at gmail.com> wrote:
> Hello,
>
> Thanks for your replies, and I agree with your idea that Nifti1 standard
> should be replaced by Nifti2, or do not save file into Nifti1 format.
>
> However, I have tried convert input data format from "*.nii.gz" to
> "*.mgz", and delete origin *.nii.gz file, then running "preproc-sess", and
> I found freesurfer would detect the format of the input, and convert
> "*.mgz" to "*.nii.gz", finally I got Nifti1 data, with negative dim.
>
> Maybe there has an argument that could specify output format and convert
> output file format manually could solve it, but I think it would be helpful
> for other people who meet the same situation as me if nibabel could support
> reading these kind of data.
>
> Thanks for your opinions again, and I believe we hold the same view:)
>
> Best,
>
> Bai Haohao
>
> On Thu, Jul 27, 2017 at 11:59 PM, Christopher Markiewicz <effigies at bu.edu>
> wrote:
>
>> I agree with this viewpoint from a user/standards perspective. AFAIK only
>> FreeSurfer and nibabel support the surface hacks, and both also support the
>> .mgh format, so there's no real advantage to using NIfTI here. For
>> interoperability, other formats are more appropriate. I also think it's
>> reasonable to encourage FreeSurfer to move toward writing NIfTI-2 when
>> hacks are necessary to generate NIfTI-1 files.
>>
>> From a nibabel-as-multitool perspective, while I understand the concern
>> about propagating broken formats, I also think we should be able to read
>> images as created by existing packages, as long as doing so doesn't harm
>> our ability to read standard-conforming files.
>>
>> Chris
>>
>> On Thu, Jul 27, 2017 at 10:18 AM, Reynolds, Richard C. (NIH/NIMH) [E] <
>> reynoldr at mail.nih.gov> wrote:
>>
>>> This seems like an appropriate case to be using the
>>>
>>> NIFTI-2 standard, which uses 64-bit values rather than
>>>
>>> the 16-bits for NIFTI-1 (which was done just to keep it
>>>
>>> similar to ANALYZE).
>>>
>>>
>>> For that matter, GIFTI was made to be the surface
>>>
>>> alternative to NIFTI, and FreeSurfer supports it, as does
>>>
>>> nibabel, it seems.
>>>
>>>
>>> Even without those options, it seems like FreeSurfer
>>>
>>> can still output what you want in a useful format.
>>>
>>>
>>> Breaking the NIFTI-1 standard is causing you trouble.
>>>
>>> Maybe propagating that is not necessary.
>>>
>>> - rick
>>>
>>>
>>> ------------------------------
>>> *From:* Bai Haohao <jarblank1200 at gmail.com>
>>> *Sent:* Thursday, July 27, 2017 9:41:13 AM
>>> *To:* neuroimaging at python.org
>>> *Subject:* [Neuroimaging] Fwd: [Freesurfer] negative header after
>>> preproc-sess
>>>
>>> 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
>>
>>
>
> _______________________________________________
> 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/a1f1e7b0/attachment.html>
More information about the Neuroimaging
mailing list