Print

Print


One small clarification.  I create the $noNanMask as follows:

% fslmaths $stack4D -nanm -sub 1 -abs -mul $anatomy $noNanMask

My short-hand note 'fslmaths -nanm --> $noNanMask' is misleading.
Thanks - BA



On Sat, Nov 10, 2012 at 11:33 PM, bettyann <[log in to unmask]> wrote:
Would anyone be able to comment on whether or not my approach to a calculation is correct?

I have a volume that is 4D stack of subjects (ie, each 3D volume is a different subject).  I can get the principal eigenvariate within an anatomical region across these subjects.  

However, within some anatomical regions, some subject have NaNs at different xyz voxel locations wrt the other subjects.  These NaNs cause an error:

% fslmeants  -i $stack4D  -m $anatomy  --eig
terminate called after throwing an instance of 'NEWMAT::ConvergenceException'

(See below for output from fslstats on this 4D volume.)

I can identify the NaNs in the 4D volume via fslmaths -nanm --> $noNanMask.  (See below for output from fslstats on this no-NaN mask.)

Using this 4D mask does not get around the problem:

% fslmeants  -i $stack4D  -m $noNanMask  --eig
terminate called after throwing an instance of 'NEWMAT::ConvergenceException'

I thought the problem was that fslmeants did not accept a 4D volume.

I stumbled across this work-around.  If I set the NaNs in the 4D volume to 0, then apply the 4D no-NaN mask, fslmeants works:

% fslmaths $stack4D -nan $stack4D
% fslmeants  -i $stack4D  -m $noNanMask  --eig
0.217991 
-1.025196 
0.598239 
... etc ...

I believe setting the NaNs to zero is okay in this case only because my $noNanMask is excluding these 'artificial zeros'.  In fact, if I run the same fslmeants command on the 4D stack with 'artifical zeros' using the original 3D anatomical mask, fslmeants runs successfully AND gives me different values:

% fslmeants  -i $stack4D  -m $anatomy  --eig
0.220129 
-1.013921 
0.652744 
... etc ...

Is this work-around doing what I think it is / want it to do?  I want to avoid NaNs but I don't want my data artificially biased by replacing NaNs with 0s.

Any insights are appreciated.
Thanks very much,
- BettyAnn


% fslstats -t $stack4D -R -m -n -R -m
nan nan nan -107.824173 130.352203 1.475362 
nan nan nan -33.600376 159.787521 1.649772 
nan nan nan -118.850449 89.161163 -0.554272 
nan nan nan -44.386398 109.072800 -0.041564 
nan nan nan -61.504040 126.958626 -0.020874 
nan nan nan -50.803055 110.641998 -0.602729 
nan nan nan -72.289719 106.723602 0.000365 
nan nan nan -40.391846 63.219696 0.107446 
nan nan nan -86.853180 105.569389 0.029178 
nan nan nan -63.857208 184.157166 1.463606 
nan nan nan -99.726479 100.118591 0.125834 
nan nan nan -49.863876 113.074539 0.976951 
nan nan nan -43.073536 99.891212 0.243119 
nan nan nan -55.555416 127.306854 -1.632227 
nan nan nan -38.611790 115.875710 1.091020 
nan nan nan -59.450535 100.547043 0.776220 
nan nan nan -38.988892 132.455048 0.697504 
nan nan nan -66.407852 73.787857 -1.402297 

% fslstats -t $noNanMask -R -V
0.000000 1.000000 30 810.000000 
0.000000 1.000000 23 621.000000 
0.000000 1.000000 33 891.000000 
0.000000 1.000000 31 837.000000 
0.000000 1.000000 21 567.000000 
0.000000 1.000000 32 864.000000 
0.000000 1.000000 32 864.000000 
0.000000 1.000000 22 594.000000 
0.000000 1.000000 32 864.000000 
0.000000 1.000000 33 891.000000 
0.000000 1.000000 18 486.000000 
0.000000 1.000000 24 648.000000 
0.000000 1.000000 16 432.000000 
0.000000 1.000000 27 729.000000 
0.000000 1.000000 31 837.000000 
0.000000 1.000000 29 783.000000 
0.000000 1.000000 29 783.000000 
0.000000 1.000000 27 729.000000