Doxygen Source Code Documentation
uuu3.c File Reference
#include "mrilib.h"Go to the source code of this file.
Defines | |
| #define | NEAR1 0.999 |
Functions | |
| void | set_unusuality_tail (float p) |
| void | find_unusual_correlations (int nrin, float *rr, int *nhi, int *ihi) |
Variables | |
| float | zstar = 0.0 |
| float | pstar = 0.0 |
Define Documentation
|
|
Definition at line 20 of file uuu3.c. Referenced by find_unusual_correlations(). |
Function Documentation
|
||||||||||||||||||||
|
Definition at line 29 of file uuu3.c. References free, getenv(), malloc, NEAR1, nr, qmed_float(), set_unusuality_tail(), strtod(), and zstar. Referenced by UC_unusuality().
00031 {
00032 register int ii,jj,nr ;
00033 register float *zz ;
00034 float zmid,zsig,zmed , rmid,rcut ;
00035
00036 if( nhi == NULL ) return ; /* illegal entry */
00037
00038 *nhi = 0 ; /* default return */
00039
00040 if( nrin < 1000 || rr == NULL || ihi == NULL ) return ; /* illegal entry */
00041
00042 /*-- make workspace --*/
00043
00044 zz = (float *) malloc(sizeof(float)*nrin) ;
00045
00046 if( zstar <= 0.0 ){ /* initialize zstar if needed */
00047 char * cp = getenv("PTAIL") ;
00048 float pp = 0.0001 ;
00049 if( cp != NULL ){
00050 float xx = strtod( cp , NULL ) ;
00051 if( xx > 0.0 && xx < 1.0 ) pp = xx ;
00052 }
00053 set_unusuality_tail( pp ) ;
00054 }
00055
00056 /*-- copy data into workspace (eliding 1's) --*/
00057
00058 for( ii=jj=0 ; ii < nrin ; ii++ )
00059 if( rr[ii] <= NEAR1 ) zz[jj++] = rr[ii] ;
00060 nr = jj ;
00061 if( nr < 2 ){ free(zz); return; } /* shouldn't happen */
00062
00063 rmid = qmed_float( nr , zz ) ; /* median of correlations */
00064 zmid = atanh(rmid) ; /* median of atanh(rr) */
00065
00066 /*-- zz <- fabs( tanh( atanh(zz) - atanh(rmid) ) ) --*/
00067
00068 for( ii=0 ; ii < nr ; ii++ )
00069 zz[ii] = fabs( (zz[ii]-rmid)/(1.0-zz[ii]*rmid) ) ;
00070
00071 /*-- find MAD of atanh(rr) --*/
00072
00073 zmed = qmed_float( nr , zz ) ; /* MAD = median absolute deviation of rr */
00074 zmed = atanh(zmed) ; /* MAD of atanh(rr) */
00075 zsig = 1.4826 * zmed ; /* estimate standard dev. of atanh(rr) */
00076 /* 1.4826 = 1/(sqrt(2)*erfinv(0.5)) */
00077 free(zz) ;
00078
00079 if( zsig <= 0.0 ) return ; /* shouldn't happen */
00080
00081 /*-- find values of correlation greater than threshold --*/
00082 /*-- that is, with (atanh(rr)-zmid)/zsig > zstar --*/
00083
00084 rcut = tanh( zsig*zstar + zmid ) ;
00085
00086 for( ii=jj=0 ; ii < nrin ; ii++ )
00087 if( rr[ii] >= rcut && rr[ii] <= NEAR1 ) ihi[jj++] = ii ;
00088
00089 *nhi = jj ; return ;
00090 }
|
|
|
Definition at line 11 of file uuu3.c. References p, pstar, qginv(), and zstar. Referenced by CORREL_main(), find_unusual_correlations(), main(), UC_unusuality(), and unusuality().
|
Variable Documentation
|
|
Definition at line 9 of file uuu3.c. Referenced by set_unusuality_tail(). |
|
|
Definition at line 8 of file uuu3.c. Referenced by find_unusual_correlations(), and set_unusuality_tail(). |