Howdy HCP folks,
We've recently run into a problem when attempting to use ICA+FIX cleaned
data in a parcellated stats analysis pipeline. I'll run through what we've
done, what happened, and what I think is going wrong. Hopefully you can
provide some insight into if we've done things correctly and if so, what to
do about it.
We are using the IcaFixProcessingBatch.sh script to apply ICA+FIX to our
data using the provided HCP_hp2000.RData training data, following the
application of GenericfMRIVolumeProcessingPipelineBatch.sh and
GenericfMRISurfaceProcessingPipelineBatch.sh.
This produces a file with a name ending
in _Atlas_hp2000_clean.dtseries.nii.
Previously, before attempting to use ICA+FIX, we have successfully used
the TaskfMRIAnalysisBatch.sh script to run a parcellated analysis. In order
to use ICA+FIX results as our input data, I changed the name of the clean
data to be ${TASK}_Atlas.dtseries.nii to "trick" the batch script to use
the cleaned data instead of the original data.
This worked fine when doing a dense analysis, but the analysis failed when
trying to run a parcellated analysis.
Specifically, when examining the logs of the analysis, the output of
film_gls included the line: *numTS=0* when using FIX cleaned data when it
had been *numTS=360* when using the original data.
The film_gls code appears to do some masking of non-brain voxels toward the
beginning, and this masking process effectively zeroed out all values in
the FIX cleaned data whereas it allowed all values to remain when using
original data. Looking at the FAKENIFTI files produced from the original
data compared with ICA+FIX cleaned data, it seems the ranges are quite
different.
For the original data (for a representative subject), the mean value of the
FAKENIFTI was around 11000 (range was ~5000 to ~15000). For the FIX cleaned
data, the mean was effectively zero (range was -420 to 382).
During the masking procedure in film_gls, a "mask" is produced by averaging
voxel values across time. Next, that mask is binarized based on a
user-supplied threshold value. The default threshold value supplied to
film_gls in the TaskfMRIAnalysis pipeline scripts is 1. In the case of the
original data, all values in the mask are set to 1 since the range of this
mean mask volume is 6346.99 to 14440.96. However, for the mean mask created
from the FIX cleaned data, the range is -2.638159e-06 to 1.118895e-06,
such that binarizing with a threshold of 1 sets all values to 0.
If I understand this correctly, it seems that this masking procedure within
film_gls is unnecessary during a parcellated analysis, because we already
know that there are no "non-brain" values to get rid of. So, I have a
couple questions about this:
1) Do the values for the ICA+FIX cleaned data I presented seem
representative of FIX results in your experience? Meaning, instead of a
mean around 10000 the data have a zero mean with a greatly reduced range.
Also, when taking an average across time, is it common to see effectively
zero values for all parcels?
2) If the answer to #1 is "yes," would it be okay to circumvent this
masking process within film_gls? I could imagine altering the pipeline
script to instead of providing a 1 for the threshold, provide the minimum
voxel value in the FAKENIFTI instead, insuring that the binarizing
procedure created a mask of all 1s.
Any help or insight would be greatly appreciated, and please let me know if
you need more information. The relevant parts of the film_gls.cc code are:
read_volume4D(input_data,globalopts.inputDataName.value());
reference=input_data[int(input_data.tsize()/2)-1];
copybasicproperties(input_data,reference);
mask=meanvol(input_data);
variance=variancevol(input_data);
input_data-=mask;
mask.binarise(globalopts.thresh.value(),mask.max()+1,exclusive);
variance.binarise(1e-10,variance.max()+1,exclusive); //variance mask
needed if thresh is -ve to remove background voxels (0 variance)
mask*=variance; //convolved mask ensures that only super-threshold
non-background voxels pass
datam=input_data.matrix(mask,labels);
And the relevant call to film_gls comes in TaskfMRILevel1.v2.0.sh on line
235:
film_gls --rn=${FEATDir}/ParcellatedStats
--in=${FEATDir}/${LevelOnefMRIName}_Atlas"$TemporalFilterString""$SmoothingString"${RegString}${ParcellationString}_FAKENIFTI.nii.gz
--pd="$DesignMatrix" --con=${DesignContrasts} --fcon=${DesignfContrasts}
--thr=1 --mode=volumetric
Cheers,
Andrew Poppe, Ph.D.
Postdoctoral Fellow
Olin Neuropsychiatry Research Center
Institute of Living
Hartford Hospital
_______________________________________________
HCP-Users mailing list
[email protected]
http://lists.humanconnectome.org/mailman/listinfo/hcp-users