Doxygen Source Code Documentation
plug_stats.c File Reference
#include "afni.h"
Go to the source code of this file.
Defines | |
#define | NUM_METHOD_STRINGS (sizeof(method_strings)/sizeof(char *)) |
#define | METH_MEAN 0 |
#define | METH_SLOPE 1 |
#define | METH_SIGMA 2 |
#define | METH_CVAR 3 |
Functions | |
char * | STATS_main (PLUGIN_interface *) |
void | STATS_tsfunc (double tzero, double tdelta, int npts, float ts[], double ts_mean, double ts_slope, void *ud, float *val) |
DEFINE_PLUGIN_PROTOTYPE PLUGIN_interface * | PLUGIN_init (int ncall) |
Variables | |
char | helpstring [] |
char * | method_strings [] = { "Mean" , "Slope" , "Sigma" , "CVar" } |
PLUGIN_interface * | global_plint = NULL |
Define Documentation
|
Definition at line 38 of file plug_stats.c. Referenced by STATS_tsfunc(). |
|
Definition at line 35 of file plug_stats.c. Referenced by STATS_tsfunc(). |
|
Definition at line 37 of file plug_stats.c. Referenced by STATS_tsfunc(). |
|
Definition at line 36 of file plug_stats.c. Referenced by STATS_tsfunc(). |
|
Definition at line 33 of file plug_stats.c. Referenced by PLUGIN_init(), and STATS_main(). |
Function Documentation
|
Definition at line 68 of file plug_stats.c. References ANAT_ALL_MASK, FUNC_FIM_MASK, global_plint, helpstring, method_strings, NUM_METHOD_STRINGS, PLUTO_add_hint(), PLUTO_set_sequence(), and STATS_main().
00069 { 00070 PLUGIN_interface * plint ; /* will be the output of this routine */ 00071 00072 if( ncall > 0 ) return NULL ; /* only one interface */ 00073 00074 /*---------------- set titles and call point ----------------*/ 00075 00076 plint = PLUTO_new_interface( "3D+t Statistic" , 00077 "Voxel Statistics of 3D+time Dataset" , 00078 helpstring , 00079 PLUGIN_CALL_VIA_MENU , STATS_main ) ; 00080 00081 PLUTO_add_hint( plint , "Voxel Statistics of 3D+time Dataset" ) ; 00082 00083 PLUTO_set_sequence( plint , "A:newdset:statistics" ) ; 00084 00085 global_plint = plint ; /* make global copy */ 00086 00087 /*--------- 1st line: Input dataset ---------*/ 00088 00089 PLUTO_add_option( plint , 00090 "Input" , /* label at left of input line */ 00091 "Input" , /* tag to return to plugin */ 00092 TRUE /* is this mandatory? */ 00093 ) ; 00094 00095 PLUTO_add_dataset( plint , 00096 "3D+time" , /* label next to button */ 00097 ANAT_ALL_MASK , /* take any anat datasets */ 00098 FUNC_FIM_MASK , /* only allow fim funcs */ 00099 DIMEN_4D_MASK | /* need 3D+time datasets */ 00100 BRICK_ALLREAL_MASK /* need real-valued datasets */ 00101 ) ; 00102 00103 PLUTO_add_hint( plint , "Choose input dataset" ) ; 00104 00105 /*---------- 2nd line: other inputs ----------*/ 00106 00107 PLUTO_add_option( plint , 00108 "Input" , /* label at left of input line */ 00109 "Input" , /* tag to return to plugin */ 00110 TRUE /* is this mandatory? */ 00111 ) ; 00112 00113 PLUTO_add_hint( plint , "Control parameters" ) ; 00114 00115 PLUTO_add_string( plint , 00116 "Method" , /* label next to chooser button */ 00117 NUM_METHOD_STRINGS , /* number of strings to choose among */ 00118 method_strings , /* list of strings to choose among */ 00119 0 /* index of default string */ 00120 ) ; 00121 00122 PLUTO_add_hint( plint , "Choose statistic to compute" ) ; 00123 00124 PLUTO_add_number( plint , 00125 "Ignore" , /* label next to chooser */ 00126 0 , /* smallest possible value */ 00127 20 , /* largest possible value */ 00128 0 , /* decimal shift (none in this case) */ 00129 3 , /* default value */ 00130 FALSE /* allow user to edit value? */ 00131 ) ; 00132 00133 PLUTO_add_hint( plint , "Number of points to ignore at start of time series" ) ; 00134 00135 /*---------- 3rd line: Output dataset ----------*/ 00136 00137 PLUTO_add_option( plint , 00138 "Output" , /* label at left of input line */ 00139 "Output" , /* tag to return to plugin */ 00140 TRUE /* is this mandatory? */ 00141 ) ; 00142 00143 PLUTO_add_string( plint , 00144 "Prefix" , /* label next to textfield */ 00145 0,NULL , /* no fixed strings to choose among */ 00146 19 /* 19 spaces for typing in value */ 00147 ) ; 00148 00149 PLUTO_add_hint( plint , "Name of output dataset" ) ; 00150 00151 /*--------- done with interface setup ---------*/ 00152 00153 return plint ; 00154 } |
|
Definition at line 162 of file plug_stats.c. References method_strings, NUM_METHOD_STRINGS, PLUTO_add_dset(), PLUTO_find_dset(), PLUTO_prefix_ok(), PLUTO_string_index(), and STATS_tsfunc(). Referenced by PLUGIN_init().
00163 { 00164 MCW_idcode * idc ; /* input dataset idcode */ 00165 THD_3dim_dataset * old_dset , * new_dset ; /* input and output datasets */ 00166 char * new_prefix , * str ; /* strings from user */ 00167 int meth , ignore ; 00168 00169 /*--------------------------------------------------------------------*/ 00170 /*----- Check inputs from AFNI to see if they are reasonable-ish -----*/ 00171 00172 /*--------- go to first input line ---------*/ 00173 00174 PLUTO_next_option(plint) ; 00175 00176 idc = PLUTO_get_idcode(plint) ; /* get dataset item */ 00177 old_dset = PLUTO_find_dset(idc) ; /* get ptr to dataset */ 00178 if( old_dset == NULL ) 00179 return "*************************\n" 00180 "Cannot find Input Dataset\n" 00181 "*************************" ; 00182 00183 /*--------- go to next input line ---------*/ 00184 00185 PLUTO_next_option(plint) ; 00186 00187 str = PLUTO_get_string(plint) ; /* get string item (the method) */ 00188 meth = PLUTO_string_index( str , /* find it in list it is from */ 00189 NUM_METHOD_STRINGS , 00190 method_strings ) ; 00191 00192 ignore = PLUTO_get_number(plint) ; /* get number item */ 00193 00194 /*--------- go to next input line ---------*/ 00195 00196 PLUTO_next_option(plint) ; 00197 00198 new_prefix = PLUTO_get_string(plint) ; /* get string item (the output prefix) */ 00199 if( ! PLUTO_prefix_ok(new_prefix) ) /* check if it is OK */ 00200 return "************************\n" 00201 "Output Prefix is illegal\n" 00202 "************************" ; 00203 00204 /*------------- ready to compute new dataset -----------*/ 00205 00206 new_dset = PLUTO_4D_to_fim( old_dset , /* input dataset */ 00207 new_prefix , /* output prefix */ 00208 ignore , /* ignore count */ 00209 1 , /* detrend = ON */ 00210 STATS_tsfunc , /* timeseries processor */ 00211 (void *) meth /* data for tsfunc */ 00212 ) ; 00213 00214 PLUTO_add_dset( plint , new_dset , DSET_ACTION_MAKE_CURRENT ) ; 00215 00216 return NULL ; /* null string returned means all was OK */ 00217 } |
|
Definition at line 223 of file plug_stats.c. References global_plint, METH_CVAR, METH_MEAN, METH_SIGMA, METH_SLOPE, PLUTO_popup_meter(), and PLUTO_set_meter(). Referenced by STATS_main().
00226 { 00227 int meth = (int) ud ; 00228 static int nvox , ncall ; 00229 00230 /** is this a "notification"? **/ 00231 00232 if( val == NULL ){ 00233 00234 if( npts > 0 ){ /* the "start notification" */ 00235 00236 PLUTO_popup_meter( global_plint ) ; /* progress meter */ 00237 nvox = npts ; /* keep track of */ 00238 ncall = 0 ; /* number of calls */ 00239 00240 } else { /* the "end notification" */ 00241 00242 PLUTO_set_meter( global_plint , 100 ) ; /* set meter to 100% */ 00243 00244 } 00245 return ; 00246 } 00247 00248 /** OK, actually do some work **/ 00249 00250 switch( meth ){ 00251 00252 default: 00253 case METH_MEAN: *val = ts_mean ; break ; 00254 00255 case METH_SLOPE: *val = ts_slope ; break ; 00256 00257 case METH_CVAR: 00258 case METH_SIGMA:{ 00259 register int ii ; 00260 register double sum ; 00261 00262 sum = 0.0 ; 00263 for( ii=0 ; ii < npts ; ii++ ) sum += ts[ii] * ts[ii] ; 00264 00265 sum = sqrt( sum/(npts-1) ) ; 00266 00267 if( meth == METH_SIGMA ) *val = sum ; 00268 else if( ts_mean != 0.0 ) *val = sum / fabs(ts_mean) ; 00269 else *val = 0.0 ; 00270 } 00271 } 00272 00273 /** set the progress meter to the % of completion **/ 00274 00275 ncall++ ; 00276 PLUTO_set_meter( global_plint , (100*ncall)/nvox ) ; 00277 return ; 00278 } |
Variable Documentation
|
Definition at line 50 of file plug_stats.c. Referenced by PLUGIN_init(), and STATS_tsfunc(). |
|
Initial value: "Purpose: Compute mean, slope, or sigma of a 3D+time dataset.\n" "Input items are:\n" " 3d+time = 3D+time dataset to analyze\n" " Method = Mean, Slope, or Sigma = type of analysis to do\n" " Ignore = How many points to ignore at start\n" "\n" "Output: Prefix = Filename prefix for new dataset" Definition at line 19 of file plug_stats.c. Referenced by PLUGIN_init(). |
|
Definition at line 31 of file plug_stats.c. Referenced by PLUGIN_init(), and STATS_main(). |