Group Average Surfaces
This page documents some of the issues involved with measuring areas and distances on FreeSurfer group average surfaces, including the Dec08 Surface Cluster Bug. Group average surfaces are created with mris_make_average_surface (which is called by mris_make_average_subject). The fsaverage subject distributed with freesurfer was constructed using these programs.
Average Surface Construction
The average surface is constructed by computing the Talairach (MNI305) coordinate at each vertex for each subject (based on the talairach.xfm matrix for that subject). These coordinates are then mapped into the common surface space and averaged together so that the coordinate of a vertex in the common surface space is the average of the Talairach coordinates from the corresponding surface locations of the individuals. This results in the average surface overlaying nicely on the average (MNI305) volume.
Distance and Area Distortion on an Average Surface
Unfortunately, this has another implication which is not immediately apparent: the total surface area of the average surface is much less than the average of the surfaces areas from the individual subjects. This happens because the many little folds in an individual's brain get smoothed out in the group average. This is evident when comparing the white or pial surface of an individual to that of a group average subject. For fsaverage, the average of the individual surface areas is 82219 mm2 whereas the simple fsaverage surface area is only 65416 mm2, a reduction of 20%. For group surfaces, the original average area of the group is stored in the surface file (see mris_info). In addition, the average area of each vertex is stored in surf/?h.white.avg.area.mgh. The area of a vertex is defined by the average of the the triangles surrounding the vertex. This gives an location-specific means of computing the group average area of a set of vertices.
This issue affects distance and areas measures. Ie, two points on the average surface would appear to be much closer than the same two points mapped to an individual. The implication of this is that some adjustment needs to be made when applying or measuring the Full-Width/Half-Maximum (FHWM) of a spatially smoothing kernel. This is automatically implemented in FreeSurfer when by scaling the FWHM by the square-root of the ratio of the group average surface area to the surface area of the group subject. In the example above, the FWHM would be scaled by sqrt(82219/65416) = 1.1211.
The surface area of a patch measured on an average subject also needs to be adjusted to represent the average of the patch areas as measured from the individual subject's surfaces. Put another way, what you want to report is the area you would get if you were to map a patch on an average surface to all the individuals who make up the average, then compute the average of the individual patches. This would be quite tedious (and may be impossible if you do not have the individuals who make up the average, as with fsaverage).
Originally (ie, pre-Jan2006), we were not aware of this problem and there was no correction. In Jan 2006, we added a correction in which we simply scaled the patch area by the ratio of the group average surface area to the surface area of the group subject. In the example above, the patch are would be scaled by 82219/65416 = 1.2569. This was a global correction, meaning it was the same regardless of where the patch was located. In Feb 2006, we then went to a more exact approach in which we computed the average of the patch areas from the individual subjects using the ?h.white.avg.area.mgh file. Unfortunately, ...
The "Dec08 Surface Cluster Bug"
As mentioned above, we had implemented two methods to correct for the group surface area distortion. Unfortunately, *both* methods ended up being applied, resulting in cluster sizes reported by mri_surfcluster being over estimated by a factor of 1.2569 (for fsaverage). So, a cluster that had been reported to be 300 mm2 would actually be 300/1.2569 = 238.7 mm2. We are referring to this as the "Dec08 Surface Cluster Bug" (though it can be tracked back to Feb 2006).
Fortunately, the same buggy function is called by both mri_surfcluster AND mri_glmfit; while both programs have the error, the error is consistent across them. This means that monte carlo and permutation simulations performed by mri_glmfit and used by mri_surfcluster to compute cluster-wise p-values are not affected. So the cluster-wise p-values are correct.
This error only occurs for group surfaces, not individual surfaces. Volume clustering is not affected. The distance correction used to compute FWHM is not affected.
Status of the Bug Fix
Currently the bug has been fixed in the MGH internal development environment, and we are propagating the fix to our stable build and will make a new stable distribution available soon. The Fix not only fixes the above problem, it also has safeguards built-in to make sure that simulations performed with one version of mri_glmfit are incompatible with another version of mri_surfcluster. Eg, if you ran simulations with a version of mri_glmfit that did not have the fix but ran a version of mri_surfcluster that did have the fix, then the cluster size would be right, but the p-values would be wrong. With the fix, this situation cannot happen.
This program reports surface area, however, if the input happens to be a group surface, the surface area has no correction. Note that this does not affect the numbers in aparc.stats and aparc.a2005s.stats creted by mris_anatomical_stats during recon-all as these are for individual subjects. This bug will also be fixed in the new stable distribution.