Print

Print


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