Print

Print


Hi Mark,

Thanks for the response and explanation.   

Peace,

Matt.

-----Original Message-----
From: FSL - FMRIB's Software Library [mailto:[log in to unmask]] On Behalf
Of Mark Jenkinson
Sent: Saturday, June 26, 2010 12:20 PM
To: [log in to unmask]
Subject: Re: [FSL] inconsistent use/not setting cal_max, cal_min headers?

Dear Matt,

I looked up the previous thread and it wasn't really
conclusive, was it?  If you are after the most flexible way
of editing the header then nifti_tool is useful, as there
are some things that the FSL tools do not allow you
to do.  However, changing cal_min and cal_max is
possible with FSL.  It can become slightly tricky if you
want to change cal_min and cal_max when they
are initially zero, as then they do not appear in the
fslhd -x output, but you can add them into the
headerinfo.txt file (before the closing "/>" line)
and it will use them.  I see from your script that
you understand this.

As long as you are using consistent header information
with respect to volume size (the number of voxels
and timepoints) then it should work fine.  The fslcreatehd
command will only blank the volume if there is a
mismatch with the number of voxels/timepoints.

I'm not sure why your previous script stopped
working for you.  I've just tried it here and it works
just fine for me.  It modified the cal_max field of the file
I tried and kept the data.  I also tried it on an image
where the cal_max and cal_min were set to 0
and it still worked fine, although I had to modify
the sed line in order to correctly add a newline
(I'm not sure what your original file was like, but
the emailed version included a \n which just
ended up as an "n" in the tmp2.fslhd file, and
not a newline).  Once I fixed this it also worked fine.

As fslcreatehd had not changed (or fslhd) in
a long time, and your script worked for me now,
I have no idea why you had trouble in January.
It is certainly possible to do all this still and use
FSL tools rather than nifti_tool.

All the best,
	Mark



On 26 Jun 2010, at 17:26, Matt Glasser wrote:

> Hi Mark,
>
> Does fslcreatehd headerinfo.txt MYIMAGENAME keep the image data in
> MYIMAGENAME as it was?  I asked this question back in January when my
> previous FSL only script quit working and was told to use nifti_tool.
>
> Thanks,
>
> Matt.
>
> -----Original Message-----
> From: FSL - FMRIB's Software Library [mailto:[log in to unmask]] On  
> Behalf
> Of Mark Jenkinson
> Sent: Saturday, June 26, 2010 4:09 AM
> To: [log in to unmask]
> Subject: Re: [FSL] inconsistent use/not setting cal_max, cal_min  
> headers?
>
> Hi,
>
> Note that if you set the cal_min and cal_max both to 0
> then you let the display tool itself decide what is best,
> which is probably the best typically.  You can actually
> do this completely with FSL tools as well.  It can either
> be done interactively with fsledithd or you can use the
> following two-line script:
>
> fslhd -x MYIMAGENAME | sed "s/cal_max.*/cal_max = '0'/" | sed "s/
> cal_min.*/cal_min = '0'/" > headerinfo.txt
> fslcreatehd headerinfo.txt MYIMAGENAME
>
> You can also set the cal_min and cal_max to non-zero
> values if you like, but I personally prefer to let the
> display tool (e.g. FSLView) decide generally rather than
> prescribe what it must do, which is what cal_min and
> cal_max force it to do.
>
> We will also look at the behaviour of FIRST and stop
> it copying inappropriate values across for these fields
> from the input images.
>
> All the best,
> 	Mark
>
>
>
>
> On 25 Jun 2010, at 17:24, Matt Glasser wrote:
>
>> I have found the inconsistent use of cal_max and cal_min annoying as
>> well.
>> I wrote a little code that lets you easily set these values yourself
>> (depends on AFNI's nifti_tool):
>>
>> brainmappers@brainmappers-desktop1:~$ cat /usr/lib/fsl/set_window.sh
>> #!/bin/bash
>>
>> if [ $# -ne 3 ] ; then
>> echo "Incorrect Number of Paramaters Specified"
>> echo "Usage: <filename> <minimum> <maximum>"
>> else
>> echo $1 $2 $3
>> nifti_tool -mod_nim -overwrite -mod_field cal_min $2 -infiles $1
>> nifti_tool -mod_nim -overwrite -mod_field cal_max $3 -infiles $1
>> fi
>>
>> If you want to set these values automatically, you can pipe the
>> output of
>> fslstats -R (or -r), and use these to set a reasonable window for
>> FSLView.
>>
>> Peace,
>>
>> Matt.
>>
>> -----Original Message-----
>> From: FSL - FMRIB's Software Library [mailto:[log in to unmask]] On
>> Behalf
>> Of Ian Malone
>> Sent: Friday, June 25, 2010 5:32 AM
>> To: [log in to unmask]
>> Subject: [FSL] inconsistent use/not setting cal_max, cal_min headers?
>>
>> Hi,
>>
>> I've been noticing this for a while, but it was only when one of our
>> users updated their FSL to 4.1.5 and asked about it that I looked  
>> into
>> it. We use flschfiletype to convert from Analyze 7.5 to Nifti, it
>> appears that fsl 4.0.4 used to set the cal_max and cal_min fields and
>> 4.1.? no longer does. This is apparent when viewing images in  
>> fslview,
>> which uses those values to set the starting window levels (sometimes
>> the
>> image is completely black with the initial levels, sometimes binary
>> contrast and sometimes about right). We can work around easily enough
>> with -mul 1 in fslmaths, but I was wondering whether this change was
>> intentional.
>>
>> Either way, the problem then appeared again; on running images with
>> corrected cal_min and cal_max through FIRST, those header values were
>> unchanged. Since the segmentation classes were lower intensity than
>> the
>> segmented [0:1000], they load up in fslview very dark. Again,  
>> fslmaths
>> can be used as a workaround, or some scripting with fslcreatehd,  
>> but I
>> was a bit surprised to find fslview uses the fields if they're not  
>> set
>> by other tools.
>>
>> So, is this a known problem, a non-problem or am I missing something
>> (e.g. using fslview differently for looking at first segmentations),
>> and
>> are there any other workarounds for cal_min and cal_max not set?
>>
>> Thanks,
>> Ian
>>
>