help > GCOR calculation
Showing 1-2 of 2 posts
Display:
Results per page:
Apr 2, 2025  12:04 PM | Martin Madsen
GCOR calculation

Hi,


I have a question regarding how GCOR is calculated. As far as I understand it, GCOR was originally calculated as the average of correlation coefficients for a voxel with all other voxels. In the CONN implementation, however, a single value decomposition is done first, and GCOR is then calculated for each voxel as as the average of correlation coefficients for the voxel's time series with all the SVD time series. 


I guess my question is, whether there is done any weighting prior to the calculating the final GCOR value? I assume that the first SVD time series contains more variance than the following and so forth?


Kind regards, Martin

Apr 2, 2025  01:04 PM | Alfonso Nieto-Castanon - Boston University
RE: GCOR calculation

Hi Martin,


The computation details are described in the Appendix A.2 of the original CONN manuscript (Whitfield-Gabrieli, S., & Nieto-Castanon, A. (2012). Conn: a functional connectivity toolbox for correlated and anticorrelated brain networks. Brain connectivity, 2(3), 125-141.)


Briefly, if the normalized BOLD timeseries for a given subject are stored in a data matrix X (each row of X containing the standardized BOLD signal timeseries for a given voxel, with mean zero and norm 1), and we perform a Singular Value Decomposition to compute a decomposition of X into the product Q*D*U' (with Q and U orthogonal matrices, and D diagonal positive), we can then compute GCOR for every voxel simply from the left singular vectors B=Q*D (containing the map of spatial weights associated with each SVD component), without actually using the right singular vectors U (containing the timeseries associated with each SVD component). In particular the definition of GCOR starts from the voxel-to-voxel correlation matrix R=X*X' by simply averaging the values in that matrix across columns, i.e. GCOR = (X*X')*1/N,  with 1 being a vector with elements all 1's, and N being the number of voxels. From that we get GCOR = B*(B'*1/N), which is the way CONN computes these maps (and it amounts to simply summing the individual SVD component spatial maps, weighting each map by the average value of that map across all voxels)


Hope this helps


Alfonso


Originally posted by Martin Madsen:



Hi,


I have a question regarding how GCOR is calculated. As far as I understand it, GCOR was originally calculated as the average of correlation coefficients for a voxel with all other voxels. In the CONN implementation, however, a single value decomposition is done first, and GCOR is then calculated for each voxel as as the average of correlation coefficients for the voxel's time series with all the SVD time series. 


I guess my question is, whether there is done any weighting prior to the calculating the final GCOR value? I assume that the first SVD time series contains more variance than the following and so forth?


Kind regards, Martin