Very helpful. Thanks Matt
----- Original Message -----
From: Matt Glasser <[log in to unmask]>
Date: Friday, June 26, 2009 1:33 am
Subject: Re: [FSL] dtifit message Re: [FSL] fslmaths and wildcard
To: [log in to unmask]
> Try running bedpostx_datacheck on the folder.
>
>
>
> Peace,
>
>
>
> Matt.
>
>
>
> _____
>
> From: FSL - FMRIB's Software Library [mailto:[log in to unmask]] On
> BehalfOf Rick Li
> Sent: Friday, June 26, 2009 12:22 AM
> To: [log in to unmask]
> Subject: [FSL] dtifit message Re: [FSL] fslmaths and wildcard
>
>
>
> Hi Mark,
>
>
>
> Last time you suggested me to concatenate the 3 diffusion scans
> then apply
> dtifit instead of averaging across them. I concatenated them with
> fslmergethen tried to apply dtifit and got this message:
>
> "0 128 0 128 0 66
>
> 0 slices processed
>
> terminate called after throwing an instance of
> 'NEWMAT::IncompatibleDimensionsException'
>
> Abort"
>
>
>
> Here is the command I used:
>
> dtifit -k Concat.nii.gz -o ConcatOut -m nodif_brain_mask -r
> bvecs_concat -b
> bvals_concat
>
> where bvecs_concat, bvals_concat duplicate the content of bvecs and
> bvals 3
> times respectively to match the dimension of Concat.nii.gz.
>
>
>
> Could you tell me what causes the "IncompatibleDimensions"
> exception? FYI,
> here is the head info.
>
>
>
> 1. Head info of each of the 3 diffusion scans:
>
> "data_type INT16
>
> dim1 128
>
> dim2 128
>
> dim3 66
>
> dim4 65
>
> datatype 4
>
> pixdim1 2.0000000000
>
> pixdim2 2.0000000000
>
> pixdim3 2.0000000000
>
> pixdim4 1.0000000000
>
> cal_max 3914.0000
>
> cal_min 0.0000
>
> file_type NIFTI-1+"
>
>
>
> 2. Head info of the concatenated scan:
>
> "data_type INT16
>
> dim1 128
>
> dim2 128
>
> dim3 66
>
> dim4 195
>
> datatype 4
>
> pixdim1 2.0000000000
>
> pixdim2 2.0000000000
>
> pixdim3 2.0000000000
>
> pixdim4 1.0000000000
>
> cal_max 0.0000
>
> cal_min 0.0000
>
> file_type NIFTI-1+"
>
>
>
> Thanks a lot,
>
> 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
> existyet.
> 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
> wildcardin general?
>
>
>
> Is there a more efficient way of applying the same operation across
> allvolumes? 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
>
>
>
>
>
>
|