1 #ifndef SUMA_SEGOPTS_INCLUDED
2 #define SUMA_SEGOPTS_INCLUDED
3 
4 #define SEG_LSQFIT 2
5 #define SEG_L1FIT 1
6 
7 typedef enum {
8    SEG_BIM, SEG_LSB, SEG_BNN, SEG_BFT
9 } BLUR_METH;
10 
11 typedef struct {
12    int N_label;
13    char **label;
14    int *keys;
15    int nP;
16    double **Pv;
17    char **pname;
18 } SUMA_CLASS_STAT;
19 
20 typedef struct {
21    float *b; /* bin center */
22    int *c;  /* count in bin */
23    float *cn;  /* count in bin / n */
24    int K;   /* number of bins */
25    float W; /* bin width */
26    int n; /* number of samples */
27    float min; /* min sample value */
28    float max; /* max sample value */
29    float cdfmin; /* minimum non zero cdf value */
30    char *label; /* a string descriptor */
31    int N_ignored; /* Number of samples out of n that
32                      were outside the range and were ignored
33                      during histogram build. Normally, values
34                      outside range would be assigned to end bins*/
35    int *isrt; /* bin index for sorting cn from min to max */
36 } SUMA_HIST;
37 
38 typedef enum { SUMA_FEAT_NOT_SET=-1,
39                SUMA_FEAT_GAMMA=0, SUMA_FEAT_NP,
40                SUMA_FEAT_N_DIST_TYPE } SUMA_FEAT_DIST_TYPE;
41 
42 typedef struct {
43    char *label;
44    SUMA_FEAT_DIST_TYPE tp;
45    double scpar[5];
46    double par[5];
47    SUMA_HIST *hh;
48 } SUMA_FEAT_DIST;
49 
50 typedef struct {
51   SUMA_FEAT_DIST **FD;
52   int N_FD;
53   int N_alloc;
54 } SUMA_FEAT_DISTS;
55 
56 typedef struct {
57    void (*helpfunc)(int);
58    char *aset_name;
59    char *mset_name;
60    char *sig_name;
61    NI_str_array *sig_names;
62    char *samp_name;
63    NI_str_array *samp_names;
64    char *gold_name;
65    char *gold_bias_name;
66    char *this_pset_name;
67    char *this_cset_name;
68    char *this_fset_name;
69    char *this_xset_name;
70    char *ndist_name;
71    char *proot;
72    char *prefix;
73    char *crefix;
74    char *frefix;
75    char *xrefix;
76    char *cgrefix;
77    char *pgrefix;
78    char uid[256+1];
79    THD_3dim_dataset *aset;
80    THD_3dim_dataset *mset;
81    THD_3dim_dataset *sig;
82    THD_3dim_dataset *samp;
83    THD_3dim_dataset *pset;
84    THD_3dim_dataset *cset;
85    THD_3dim_dataset *fset;
86    THD_3dim_dataset *xset;
87    THD_3dim_dataset *gset;
88    THD_3dim_dataset *outl;
89    THD_3dim_dataset *gold;
90    THD_3dim_dataset *gold_bias;
91    THD_3dim_dataset *priCgA;
92    double wA;
93    THD_3dim_dataset *priCgL;
94    double wL;
95    THD_3dim_dataset *pCgN;
96    char *priCgLname;
97    char *priCgAname;
98    THD_3dim_dataset *priCgALL;
99    char *priCgALLname;
100    THD_3dim_dataset *Bset;
101    char *Bsetname;
102    THD_3dim_dataset *pstCgALL;
103    char *pstCgALLname;
104    SUMA_FEAT_DISTS *FDV;
105    int debug;
106    int verbose;
107    int idbg, jdbg, kdbg;
108    float binwidth;
109    NI_str_array *feats, *clss, *featsfam;
110    float **feat_exp;
111    int featexpmeth;
112    int featmatchmode;
113    int Other;
114    int *keys;
115 
116    float *mixfrac;
117    char *mixopt;
118    int UseTmp;
119    byte logp;
120    int VoxDbg;
121    int VoxDbg3[3];
122    FILE *VoxDbgOut;
123    byte rescale_p;
124    byte openmp;
125 
126    char *labeltable_name;
127 
128    int fmode;
129    int smode;
130    float bias_param;
131    char *bias_meth;
132    char *bias_classes;
133    byte pweight;
134    int N_biasgroups;
135 
136    byte *cmask;
137    int dimcmask;
138    int cmask_count;
139    float mask_top;
140    float mask_bot;
141 
142    byte DO_p;
143    byte DO_f;
144    byte DO_c;
145    byte DO_o;
146    byte DO_x;
147    byte DO_r;
148    byte Writepcg_G_au;
149 
150    int fitmeth;
151    int N_enhance_cset_init;
152    int N_main;
153    NI_str_array *group_classes;
154    int *group_keys;
155    SUMA_GENERIC_ARGV_PARSE *ps;
156 
157    int clust_cset_init;
158    SUMA_CLASS_STAT *cs;
159    SUMA_CLASS_STAT *Gcs;
160 
161    double B;
162    double T;
163 
164    int edge;
165    float na;
166 
167    char *hist;
168    int *Split;
169 
170    BLUR_METH blur_meth;
171 
172    char *ShowThisDist;
173    int fast; /* if 1, use faster - I hope - version of p_C_GIV_A */
174    float range[2];
175 
176    int i1, i2, i3, i4, i5;
177    float f1, f2, f3, f4, f5;
178 
179    int erode;
180    int dilate;
181 
182    int       N_hspec;
183    SUMA_HIST **hspec;
184 
185    double mix_frac_floor;
186 } SEG_OPTS;
187 
188 void GenPriors_usage(int) ;
189 void Seg_usage(int) ;
190 SEG_OPTS *Seg_ParseInput (SEG_OPTS *Opt, char *argv[], int argc);
191 byte *MaskSetup(SEG_OPTS *Opt, THD_3dim_dataset *aset, int mask_zero_aset,
192                 THD_3dim_dataset **msetp, byte **cmaskp, int dimcmask,
193                 float mask_bot, float mask_top, int *mcount);
194 THD_3dim_dataset *Seg_load_dset( char *set_name );
195 THD_3dim_dataset *Seg_load_dset_eng( char *set_name, char *view );
196 SEG_OPTS *SegOpt_Struct(void );
197 void *Seg_NI_read_file(char *fname);
198 SEG_OPTS *free_SegOpts(SEG_OPTS *);
199 int Seg_ClssAndKeys_from_dset(THD_3dim_dataset *dset,
200                               NI_str_array **nstrp, int **keysp);
201 int SUMA_ShortizeDset(THD_3dim_dataset **dsetp, float thisfac);
202 
203 #endif
204