1 #include "mrilib.h"
2 
mri_to_pval(MRI_IMAGE * im,int statcode,float * stataux)3 MRI_IMAGE * mri_to_pval( MRI_IMAGE *im , int statcode , float *stataux )
4 {
5    int nvox , ii ;
6    MRI_IMAGE *oim ;
7    float *far , *oar ;
8 
9 ENTRY("mri_to_pval") ;
10 
11    if( im == NULL || im->kind != MRI_float || !FUNC_IS_STAT(statcode) ) RETURN(NULL) ;
12    far = MRI_FLOAT_PTR(im) ; if( im == NULL ) RETURN(NULL) ;
13    nvox = im->nvox ;
14 
15    oim = mri_new_conforming( im , MRI_float ) ;
16    oar = MRI_FLOAT_PTR(oim) ;
17 
18    for( ii=0 ; ii < nvox ; ii++ ){
19      if( far[ii] != 0.0f ) oar[ii] = THD_stat_to_pval( fabsf(far[ii]), statcode,stataux ) ;
20      else                  oar[ii] = 1.0f ;
21    }
22 
23    RETURN(oim) ;
24 }
25 
26 /*----------------------------------------------------------------------------*/
27 
mri_to_zscore(MRI_IMAGE * im,int statcode,float * stataux)28 MRI_IMAGE * mri_to_zscore( MRI_IMAGE *im , int statcode , float *stataux )
29 {
30    int nvox , ii ;
31    MRI_IMAGE *oim ;
32    float *far , *oar ;
33 
34 ENTRY("mri_to_zscore") ;
35 
36    if( im == NULL || im->kind != MRI_float || !FUNC_IS_STAT(statcode) ) RETURN(NULL) ;
37    far = MRI_FLOAT_PTR(im) ; if( im == NULL ) RETURN(NULL) ;
38    nvox = im->nvox ;
39 
40    oim = mri_new_conforming( im , MRI_float ) ;
41    oar = MRI_FLOAT_PTR(oim) ;
42 
43    for( ii=0 ; ii < nvox ; ii++ )
44      oar[ii] = THD_stat_to_zscore( far[ii], statcode,stataux ) ;
45 
46    RETURN(oim) ;
47 }
48 
49 /*----------------------------------------------------------------------------*/
50 
mri_to_qval(MRI_IMAGE * im,floatvec * fdrcurve)51 MRI_IMAGE * mri_to_qval( MRI_IMAGE *im , floatvec *fdrcurve ) /* 01 Feb 2020 */
52 {
53    int nvox , ii ;
54    MRI_IMAGE *oim ;
55    float *far , *oar ;
56    float zval , qval ;
57 
58 ENTRY("mri_to_qval") ;
59 
60    if( im == NULL || im->kind != MRI_float || fdrcurve == NULL ) RETURN(NULL) ;
61    far = MRI_FLOAT_PTR(im) ; if( im == NULL ) RETURN(NULL) ;
62    nvox = im->nvox ;
63 
64    oim = mri_new_conforming( im , MRI_float ) ;
65    oar = MRI_FLOAT_PTR(oim) ;
66 
67    for( ii=0 ; ii < nvox ; ii++ ){
68      qval = 1.0f ;
69      if( far[ii] != 0.0f ){
70        zval = interp_floatvec(fdrcurve,fabsf(far[ii])) ;
71        if( zval > 0.0f ) qval = 2.0*qg(zval) ;
72      }
73      oar[ii] = qval ;
74    }
75 
76    RETURN(oim) ;
77 }
78