External Email - Use Caution        


This is from mri_glmfit-sim --help:

csdbase.sig.voxel.mgh - the sig volume corrected for multiple comparisons on a voxel-wise basis. The threshhold and sign are irrelevant. The value at each voxel is the corrected -log10(p-value) for that voxel.

For the voxel you are showing  with value = 0.61, the voxel-wise corrected p-value is 10^-0.61 = 0.2455
These values are not constrained to be between 0 and 1, in your case the effect is not very powerful. This often happens with voxel-wise corrections (which is why most people use clusterwise)


On 7/24/2023 11:49 AM, Mark Ebden wrote:

        External Email - Use Caution        

Hi Douglas,

 

Thanks for the explanation and pseudocode, and apologies for my delay in replying.

 

We’re still trying to see how these numbers represent –log10(corrected pvalue) * sign(effect). We see that the values vary from -1 to 1. For example, we run this command for a dataset showing a positive effect in a small area of the brain:

 

mri_glmfit-sim --glmdir {$dir}--cache 4 abs --cwp 0.05 --2spaces

 

and the output cache.th40.pos.sig.voxel.mgh file looks like this:

 

The yellow areas represent values in (0,1]. For instance, for the position shown by the cursor, the value is 0.61:

 

The histogram for the whole image is:

 

Most values are 0. Because your pseudocode yields 0 = -log(10,000/10,000), this means that 100% of our synthetic p-values were smaller than the p-value observed in those voxels, if I understand correctly. But that can’t be. Another confusing point is that we expect that all voxels should have values between -4 and 0, because:

 

·         -log(10,000/10,000) = 0

·         -log(9,999/10,000) = -0.000043

·        

·         -log(1/10,000) = -4

 

Seeing instead all values in the image fall in [0,1] means our understanding is still lacking.

 

As a second example, here is a cache.th13.abs.sig.voxel.mgh file showing a mixture of positive- and negative effects:

 

 

It’s histogram has values from -1 to about 0.2:

 

 

Thanks again for any help in reconciling these values with your pseudocode. Perhaps when understanding our data we should replace your final line,

compute the -log10(corrected pvalue)

with something like

compute r = sign(effect) x (corrected p-value), the values given in the .mgh file
# N.B. final p-value to report is 1 – (r) sign(effect)

Is that right?

Best wishes,

Mark

 

 

From: freesurfer-bounces@nmr.mgh.harvard.edu <freesurfer-bounces@nmr.mgh.harvard.edu> On Behalf Of Douglas N. Greve
Sent: July 10, 2022 6:21 PM
To: freesurfer@nmr.mgh.harvard.edu
Subject: Re: [Freesurfer] How is cache.th40.pos.sig.voxel.mgh computed, exactly?

 

On 6/30/2022 2:31 PM, Mark Ebden wrote: External Email - Use Caution

ZjQcmQRYFpfptBannerStart

This Message Is From an External Sender

This message came from outside your organization.

ZjQcmQRYFpfptBannerEnd

 

On 6/30/2022 2:31 PM, Mark Ebden wrote:

        External Email - Use Caution        

Hi Douglas,

 

Thank you. From your explanation, the software's numbers from 0 to 1 aren't corrected p-values -- specifically, they aren't corrections in the well-accepted sense of Bonferroni corrections or other analagous multiple-comparisons corrections. They seem to be percentiles (what you refer to as ranks), where 1 corresponds to an extreme ranking in the basket of 10k, and 0 indicates the other extreme, per voxel/vertex.

They are -log10(pvalue)*sign(effect) as with all FS.

 

Hope I have that right. I'm also not sure what you meant about converting the noise into p-values. Below is my interpretation of what the pseudocode would be. Is it right? I suspect it's not quite ready yet for sharing, because the concept of a maximum needs to be inserted.

 

   for each voxel:

      p0 = the p-value from a t-test or similar between the two groups, as they are

      x0 = -log10(p0)

      for i from 1 to 10k:

         perform a random split between the two groups comprising the contrast analysis

         p = the p-value from a t-test or similar between the two groups

         x[i] = -log10(p)

      r = percentile indicating where x0 falls within the distribution of x's 10k values

      # N.B.: r represents the result for this voxel, from 0 to 1, to go in cache.th40.pos.sig.voxel.mgh

 

Almost, it is more like this:

for i = 1 to 10k
  construct a z map (white gaussian noise) on the surface
  smooth by a given FWHM (look in glmfit/fwhm.dat)
  renormalize the z map so that std=1
  find the voxel with the largest z value; keep track of the z value (convert the z to a p)
Now you have a list of 10k largest z values (or smallest p-values)
  -- for mc-z simulations these are cached in $FREESURFER_HOME/average/mult-comp-cor

For each voxel in your data
  get uncorrected p-value
  compute a corrected p-value by counting the number in the 10k list that are smaller than the uncorrected p-value (divide by 10k)
  compute the -log10(corrected pvalue)




Thanks for any help. Also, how would the pseudocode differ for sig.cluster.mgh vs sig.voxel.mgh?

 

Thanks,

 

Mark

 


From: freesurfer-bounces@nmr.mgh.harvard.edu <freesurfer-bounces@nmr.mgh.harvard.edu> on behalf of Douglas N. Greve <dgreve@mgh.harvard.edu>
Sent: Sunday, June 19, 2022 10:37 AM
To: freesurfer@nmr.mgh.harvard.edu <freesurfer@nmr.mgh.harvard.edu>
Subject: Re: [Freesurfer] How is cache.th40.pos.sig.voxel.mgh computed, exactly?

 

from mri_glmfit-sim --help csdbase.sig.voxel.mgh - the sig volume corrected for multiple comparisons on a voxel-wise basis. The threshhold and sign are irrelevant. The value at each voxel is the corrected -log10(p-value) for that voxel.

from mri_glmfit-sim --help

csdbase.sig.voxel.mgh - the sig volume corrected for multiple comparisons on a voxel-wise basis. The threshhold and sign are irrelevant. The value at each voxel is the corrected -log10(p-value) for that voxel.

It is computed from a simulation in which gaussian noise is smoothed, then converted to p-values (log10(p)), then the maximum log10(p) is found. This is repeated 10,000 times to give 10k maximums. A corrected p-value for each voxel is then computed based upon the rank of the raw pvalue in this list of 10k.

On 6/10/2022 4:14 PM, Mark Ebden wrote:

        External Email - Use Caution        

Hi,

 

I was wondering if anyone knows how the numbers in cache.th40.pos.sig.voxel.mgh are computed, or where I'd look to learn this. There is a one-liner in the documentation but I'd like the mathematical details of the correction etc. so I can determine what the final numbers (from 0 to 1) represent. I've noticed from browsing the plot in FreeView that significant areas have values close to 1, which is puzzling.

 

Thanks if you could point me in the right direction.

 

Kind regards,

 

Mark

 

Mar

 

 

                                               

Mark Ebden, D.Phil  

(Pronouns: He/Him)  

Research Analyst  

  

The Hospital for Sick Children  

555 University Ave, Toronto ON M5G 1X8  

P 416.888.0841  



 

 

 



This e-mail may contain confidential, personal and/or health information(information which may be subject to legal restrictions on use, retention and/or disclosure) for the sole use of the intended recipient. Any review or distribution by anyone other than the person for whom it was originally intended is strictly prohibited. If you have received this e-mail in error, please contact the sender and delete all copies.


_______________________________________________
Freesurfer mailing list
Freesurfer@nmr.mgh.harvard.edu
MailScanner has detected a possible fraud attempt from "secure-web.cisco.com" claiming to be https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer

 

 



This e-mail may contain confidential, personal and/or health information(information which may be subject to legal restrictions on use, retention and/or disclosure) for the sole use of the intended recipient. Any review or distribution by anyone other than the person for whom it was originally intended is strictly prohibited. If you have received this e-mail in error, please contact the sender and delete all copies.


_______________________________________________
Freesurfer mailing list
Freesurfer@nmr.mgh.harvard.edu
MailScanner has detected a possible fraud attempt from "secure-web.cisco.com" claiming to be https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer

 




This e-mail may contain confidential, personal and/or health information(information which may be subject to legal restrictions on use, retention and/or disclosure) for the sole use of the intended recipient. Any review or distribution by anyone other than the person for whom it was originally intended is strictly prohibited. If you have received this e-mail in error, please contact the sender and delete all copies.

_______________________________________________
Freesurfer mailing list
Freesurfer@nmr.mgh.harvard.edu
MailScanner has detected a possible fraud attempt from "secure-web.cisco.com" claiming to be https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer