Hi Mark,

Thanks for the very helpful input. The reason we average 4D diffusion scans is because it is in the Step 1 of FDT processing pipeline 
"1.Any study or scanner-specific pre-processing (e.g., averaging of multiple acquisitions...)"
http://www.fmrib.ox.ac.uk/fsl/fdt/fdt_pipeline.html

Thanks again,
Rick

On May 21, 2009, at 4:54 PM, Mark Jenkinson wrote:

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