Dear FreeSurfer experts,
I am using mri_surfcluster to compare results from PALM and FreeSurfer cluster extent inference.
I came across several issues in mri_surfcluster I cannot cope with.
1. I observed that --mask option in mri_surfcluster does not prevent cluster to growing outside the mask.
When I run
mri_surfcluster --in lh.thickness.fsaverage_masked.mgh --sum summary.txt --subject fsaverage --surf white --hemi lh --thmin 0 --ocn cluster_summary.mgz --mask ./mask.mgh
the cluster is growing outside mask and covers all surface including non-cortical (masked) regions.
Is this intended behavior? This behavior (allowing clusters leak outside mask) seems strange to me since it could possibly influence results of cluster-extent inference in case of mask-constrained analysis.
2. How behaves mri_glmfit-sim in permutation-based building cluster-extent null distribution with mask? Is in this case also allowed to clusters to leak outside mask?
3. Another issue is concerning reported cluster area. I tested mri_surfcluster on data where overlay values (lh.thickness.fsaverage.mgh) were set to 0 outside cortex mask (they were non-zero also in some portion of non-cortical vertices). When I set thmin to non-zero value in mri_surfcluster
mri_surfcluster --in lh.thickness.fsaverage_masked.mgh --sum summary.txt --subject fsaverage --surf white --hemi lh --thmin 0.00001 --ocn cluster_summary.mgz --mask ./mask.mgh
I get cluster comprising (almost) all cortex, not leaking to non-cortical areas. But what is strange, the reported cluster size is far larger than area of the whole cortical surface.
number of voxels in search space = 149953 Done loading source values (nvtxs = 163842) overall max = 5 at vertex 817 overall min = 0 at vertex 8 surface nvertices 163842 surface area 65417.097656 surface area 65416.648438 NOT Adjusting threshold for 1-tailed test Searching for Clusters ... thmin=0.000100 (0.000100), thmax=-1.000000 (-1), thsignid=0, minarea=0.000000 Found 2 clusters Max cluster size 76431.562500 Saving cluster numbers to pok.mgz
Here is output of mri_surfcluster: # ClusterNo Max VtxMax Size(mm^2) MNIX MNIY MNIZ NVtxs 1 5.000 817 76431.56 -25.8 4.6 -37.5 149874 2 2.670 144205 0.53 -15.8 -40.4 -3.8 1
How it is possible?
4. Does the fsaverage/surf/lh.area correspond to area of particular vertices on fsaverage/surf/lh.white? I expect yes.
5. How it is possible to calculate area of specified vertex of surface? I tried to do that by creating .label file with particular vertex number and running
mri_surfcluster --in lh.thickness.fsaverage_masked.mgh --sum summary.txt --subject fsaverage --surf white --hemi lh --thmin 0.00001 --clabel myVertex.label
I indeed got report of 1 cluster with 1 vertex, with VtxMax value identical to vertex index in myVertex.label but the area value in summary.txt is different that value in fsaverage/surf/lh.area.
Thank you very much in advance for clarification,
Antonin Skoch
On 04/11/2016 04:46 PM, Antonin Skoch wrote:
Dear FreeSurfer experts,
I am using mri_surfcluster to compare results from PALM and FreeSurfer cluster extent inference.
I came across several issues in mri_surfcluster I cannot cope with.
I observed that --mask option in mri_surfcluster does not prevent cluster to growing outside the mask.
When I run
mri_surfcluster --in lh.thickness.fsaverage_masked.mgh --sum summary.txt --subject fsaverage --surf white --hemi lh --thmin 0 --ocn cluster_summary.mgz --mask ./mask.mgh
the cluster is growing outside mask and covers all surface including non-cortical (masked) regions.
Is this intended behavior? This behavior (allowing clusters leak outside mask) seems strange to me since it could possibly influence results of cluster-extent inference in case of mask-constrained analysis.
This is happening because you are setting the threshold to 0.
How behaves mri_glmfit-sim in permutation-based building cluster-extent null distribution with mask? Is in this case also allowed to clusters to leak outside mask?
No
Another issue is concerning reported cluster area. I tested mri_surfcluster on data where overlay values (lh.thickness.fsaverage.mgh) were set to 0 outside cortex mask (they were non-zero also in some portion of non-cortical vertices). When I set thmin to non-zero value in mri_surfcluster
mri_surfcluster --in lh.thickness.fsaverage_masked.mgh --sum summary.txt --subject fsaverage --surf white --hemi lh --thmin 0.00001 --ocn cluster_summary.mgz --mask ./mask.mgh
I get cluster comprising (almost) all cortex, not leaking to non-cortical areas. But what is strange, the reported cluster size is far larger than area of the whole cortical surface.
number of voxels in search space = 149953 Done loading source values (nvtxs = 163842) overall max = 5 at vertex 817 overall min = 0 at vertex 8 surface nvertices 163842 surface area 65417.097656 surface area 65416.648438 NOT Adjusting threshold for 1-tailed test Searching for Clusters ... thmin=0.000100 (0.000100), thmax=-1.000000 (-1), thsignid=0, minarea=0.000000 Found 2 clusters Max cluster size 76431.562500 Saving cluster numbers to pok.mgz
Here is output of mri_surfcluster: # ClusterNo Max VtxMax Size(mm^2) MNIX MNIY MNIZ NVtxs 1 5.000 817 76431.56 -25.8 4.6 -37.5 149874 2 2.670 144205 0.53 -15.8 -40.4 -3.8 1
How it is possible?
The surface area of 65416.648438 has not been corrected for the fact that fsaverage is an average subject. The area in the summary table has been corrected.
Does the fsaverage/surf/lh.area correspond to area of particular vertices on fsaverage/surf/lh.white? I expect yes.
The lh.area file does correspond. However, the area measures on the raw fsaverage surface are not accurate because the average surface has much less surface area due to averaging out the individual folding patterns.
How it is possible to calculate area of specified vertex of surface? I tried to do that by creating .label file with particular vertex number and running
mri_surfcluster --in lh.thickness.fsaverage_masked.mgh --sum summary.txt --subject fsaverage --surf white --hemi lh --thmin 0.00001 --clabel myVertex.label
I indeed got report of 1 cluster with 1 vertex, with VtxMax value identical to vertex index in myVertex.label but the area value in summary.txt is different that value in fsaverage/surf/lh.area.
You can extract it out of ?h.white.avg.area.mgh using mri_segstats with the --slabel function.
Thank you very much in advance for clarification,
Antonin Skoch
Freesurfer mailing list Freesurfer@nmr.mgh.harvard.edu https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer
freesurfer@nmr.mgh.harvard.edu