Thanks Matt
On May 21, 2009, at 6:41 PM, Matt Glasser wrote:
> I would note that processing like bedpostx takes longer if you just
> concatenate averages, rather than averaging them. The processing
> time seems
> to scale linearly with the number of DWI volumes you are running.
>
> Peace,
>
> Matt.
>
> -----Original Message-----
> From: FSL - FMRIB's Software Library [mailto:[log in to unmask]] On
> Behalf
> Of Mark Jenkinson
> Sent: Thursday, May 21, 2009 3:55 PM
> To: [log in to unmask]
> Subject: Re: [FSL] fslmaths and wildcard
>
> Hi,
>
> I'll answer the specific questions later, but first, why do you
> want to average 4D diffusion scans? It is more normal to
> concatenate them and have the fitting do any averaging,
> as it will then get a better grip on the variance too.
> So, my first thought would be to avoid the averaging completely
> and just concatenate with fslmerge.
>
> If, however, you really must do the averaging then here are
> the answers to your questions:
> - shell scripts can always help and they are really powerful.
> A 3 line script would do everything you've done easily.
> - fslmaths can and does work directly with 4D files too, so you
> don't need to split into 3D volumes. If you had three 4D files,
> each containing 65 volumes, then you can average by:
> fslmaths vol4DA -add vol4DB -add vol4DC -div 3 av_vol4D
> - wildmasking is not something built into FSL, it is an automatic
> part of the shell. So the shell (terminal) expands all the
> wildmasks *before the FSL commands see them*. So if you
> do:
> fslmaths dti1_vol* -add dti2_0000 dti1ADD2_vol*
> then it is the same as having typed:
> fslmaths dti1_vol0000 dti1_vol0001 dti1_vol0002 ... -add dti2_0000
> dti1ADD2_vol*
> where the last one is not expanded if these files don't exist yet.
> The shell looks for matches and replaces them when it can,
> and when it can't it leaves the wildmask symbol behind.
> So many, many fsl commands can be easily used with
> wildmasks (as the generate lists of files for the command)
> but the syntax of fslmaths does not easily work in this way
> as it always needs lists that are interspersed with directives
> like "-add". So that is why you can't run fslmaths in this way.
> In general it is normally easier to either gather up files with
> fslmerge and then work on the 4D files, or to use a script.
>
> Hope this helps to clarify things.
> All the best,
> Mark
>
>
>
> On 21 May 2009, at 21:03, Rick Li wrote:
>
>> Hi,
>>
>> I am averaging 3 aligned 4D diffusion scans using "fslmaths" to
>> improve the SNR. Each scan contains 65 volumes. Here is what I did,
>>
>>> fslmaths dti1_vol0000 -add dti2_0000 dti1ADD2_vol0000
>> ...
>>> fslmaths dti1_vol0064 -add dti2_0000 dti1ADD2_vol0064
>>
>> then,
>>
>>> fslmaths dti1ADD2_vol0000 -add dti3_0000 dti123sum_vol0000
>> ...
>>> fslmaths dti1ADD2_vol0064 -add dti3_0000 dti123sum_vol0064
>>
>> then,
>>
>>> fslmaths dti123sum_vol0000 -div 3 dti123average_vol0000
>> ...
>>> fslmaths dti123sum_vol0064 -div 3 dti123average_vol0064
>>
>> Finally, merge to one 4D file
>>
>>> fslmerge -a DTI123average_merge dti123average_vol0000 ...
>> dti123average_vol0064
>>
>> My questions are
>>
>> 1. Is this the only way to average diffusion scans(besides divided
>> by 3 first then summed up)?
>>
>> If we want to average much more scans and more volumes in each
>> scan, do we still need to repetitively add up each volume one at a
>> time manually, then divided by the total number of scan?
>>
>> 2. I have tried wildcard like the follow and they don't seem to work
>>
>> fslmaths dti1_vol* -add dti2_0000 dti1ADD2_vol*
>> fslmerge -a DTI123average_merge dti123average_vol*
>>
>> Do the FSL commands, like fslmaths, fslmerge, flirt etc., support
>> wildcard in general?
>>
>> Is there a more efficient way of applying the same operation across
>> all volumes? For example, AFNI commands support the operation on a
>> single volume without first splitting the 4D scan, e.g., AFNICOMMAND
>> filename.nii.gz "[35]".
>>
>> 3. Could a shell script help automate the process?
>>
>> Thank you very much,
>>
>> Rick
>>
|