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 >>