Dear FreeSurfer users,

I am using R to apply a statistical method on surface data registered to 
fsaverage (for example, left hemisphere area smoothed at bandwidth=10mm). This 
method requires data be in a matrix Y with NS rows and V columns, where NS = 
#subjects and V=#vertices. The output produces a statistic Sj > 0 at each 
vertex j that, without loss of generality, rejects the null hypothesis for 
higher values with significance derived through permutation tests. Let's assume 
that Sj is a F-statistic with J & NS-NB-J degrees of freedom in a GLM with 
design matrix X (NS rows and NB columns) and contrast matrix CON (J rows and NB 
columns). While mri_glmfit can do the same for F-tests, my workflow uses matrix 
operations to produce the same F-statistics as mri_glmfit but considerably 
faster.


My purpose is to apply a statistics method not supported by FreeSurfer and also 
use GPUs for permutation tests (since these methods rely on matrix operations). 
I am asking for the best way to manage the data (observed and permutation null 
distributions) so I can perform spatial cluster corrections using tools from 
FreeSurfer.


My output will be a vector S = (S_1,...,S_V) containing observed statistics at 
the V vertices indexed in the same order as the input data matrix Y containing 
surface data for each subject. Performing Q permutation tests will produce 
matrix R with V rows that contain values of the statistic R_{j1}, ...,R_{jQ} at 
vertex j (j=1,...V) under the null distribution. P-value at a given vertex 
could be:


P_j := (1/(Q+1)) * \sum_{q=1}^Q  I( S_j < R_{jq})


I can do all the computations described above (and any conversions, like 
p-values to -log10 scale).


Does FreeSurfer offer an efficient way of taking the vector S of observed 
statistics and matrix R of permutation distributions (or P-values on any scale) 
to identify significant clusters on the surface at some threshold? Thresholds 
could be applied equivalently to either P-values (P_j < P* := 0.001) or 
statistic value (S_j > S*). Significance of observed clusters would be 
evaluated under null distribution of the largest cluster from the permutation 
tests (at a given cluster defining threshold).


Please forgive my unfamiliarity with how spatial information is dealt with in 
mgh files.


I am also trying to make a cluster summary report (for example, the file 
cache.th30.abs.sig.cluster.summary when using cached simulations for a contrast 
in a GLM) and and also visualize significant clusters.


I can export or analyze this data using any matlab function in the 
~/freesurfer/matlab folder ("save_mgh" for example). For exporting, I'm unsure 
about how to preserve or define appropriate header information with save_mgh.


To clarify, my workflow contains following steps:

  1.  mri_preproc: Produce DATA.mgh containing concatenated 
lh-area-fsaverage-fwhm10 for subjects 1,...,NS
  2.  Use "load_mgh" in Matlab to load DATA.mgh into matrix Y0 of dimension [V, 
1, 1, NS], where V=#vertices.
  3.  Define matrix Y of dimension [NS, V], which is transpose of 
squeeze(Y0(:,1,1,:)).
  4.  Apply algorithm/test to matrix Y to obtain vector S of observed 
statistics at vertices and matrix R rows containing null distributions 
respective vertices. Indexing of vertices for entries in S and columns  of R 
are in the same order as first dimension of matrix Y0 loaded using "load_mgh".


Thank you for your attention to this very long question!


Best,

Chintan
_______________________________________________
Freesurfer mailing list
Freesurfer@nmr.mgh.harvard.edu
https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer


The information in this e-mail is intended only for the person to whom it is
addressed. If you believe this e-mail was sent to you in error and the e-mail
contains patient information, please contact the Partners Compliance HelpLine at
http://www.partners.org/complianceline . If the e-mail was sent to you in error
but does not contain patient information, please contact the sender and properly
dispose of the e-mail.

Reply via email to