FSL experts:
Recently I downloaded the FSL source code (version: 4.1.5). There is a possible bug in the MELODIC code.
Its path is: \fsl\src\melodic\Melhlprfns.cc
It contains a function "RowVector Feta(int n1, int n2)". At the end of function:
"
RowVector Res(n1); //invert the CDF
for(int ctr_i = 1; ctr_i < eta.Ncols(); ctr_i++){
if(floor(claw(ctr_i))>floor(claw(ctr_i+1))){
Res(int(floor(claw(ctr_i)))) = eta(ctr_i);
}
}
"
It seems that "Res" is not initilized to zero. I found that it make "Res" contain unexpected values and return those unexpected values to the higher-level function
("void adj_eigspec(const RowVector& in, RowVector& out1, RowVector& out2, RowVector& out3, int& out4, int num_vox, float resels)").
This problem affects the eigenspectrum adjustment in MELODIC and furtherly could affect the accuracy of "Automatic IC Number Estimation". I first found this possible bug in 4.1.4 and in 4.1.5 it seems to be not fixed yet.
I'm looking forward to your reply. Thank you.
Jingqi
|