1 #ifndef SUMA_WORLDSTAT_INCLUDED
2 #define SUMA_WORLDSTAT_INCLUDED
3 
4 typedef enum {    SUMA_NO_BUILD_METHOD, SUMA_OFFSETS2, SUMA_OFFSETS_LL, SUMA_OFFSETS2_NO_REC, SUMA_MAXIMA } SUMA_CLUST_BUILD_METHODS;
5 
6 typedef enum {
7    SUMA_NO_GRAD_SCALE, SUMA_MEAN_GRAD_SCALE, SUMA_GMEAN_GRAD_SCALE,
8 } SUMA_GRAD_SCALE_OPTS;
9 
10 typedef enum { SUMA_MINIMUS=-1, SUMA_EXTREMUS, SUMA_MAXIMUS }
11                                     SUMA_EXTREMA_DIRECTIONS;
12 
13 void SUMA_FreeClustDatum (void * data);
14 float *SUMA_CalculateNodeAreas(SUMA_SurfaceObject *SO, byte *mask);
15 SUMA_CLUST_DATUM * SUMA_Build_Cluster_From_Node(
16       int dothisnode, SUMA_CLUST_DATUM *AddToThisClust,
17       float *ToBeAssigned, int *N_TobeAssigned, float *NodeArea,
18       SUMA_SurfaceObject *SO, SUMA_SURFCLUST_OPTIONS *Opt);
19 SUMA_CLUST_DATUM * SUMA_Build_Cluster_From_Node_NoRec    (
20    int dothisnode,
21    float *ToBeAssigned, int *N_TobeAssigned, float *NodeArea,
22    SUMA_SurfaceObject *SO, SUMA_SURFCLUST_OPTIONS *Opt   );
23 DList *SUMA_FindClusters ( SUMA_SurfaceObject *SO, int *ni, float *nv, int N_ni,
24                            int dothisnode, SUMA_SURFCLUST_OPTIONS *Opt,
25                            float *NodeArea);
26 SUMA_Boolean SUMA_Show_SurfClust_list(DList *list, FILE *Out, int detail,
27                                       char *params, char *opts) ;
28 char *SUMA_Show_SurfClust_list_Info(DList *list, int detail,
29                                        char *params, char *opts) ;
30 NI_element *SUMA_SurfClust_list_2_nel(DList *list, int detail, char *params,
31                                       char *opts);
32 SUMA_DSET *SUMA_MaskDsetByClustList(SUMA_DSET *idset, SUMA_SurfaceObject *SO,
33                      DList *list, SUMA_Boolean FullList, char *leName);
34 SUMA_DSET *SUMA_SurfClust_list_2_DsetMask(SUMA_SurfaceObject *SO,
35                      DList *list, SUMA_Boolean FullList, char *leName);
36 byte * SUMA_ClustList2Mask(DList *list, int NodeMax);
37 int SUMA_ClusterCenterofMass  (SUMA_SurfaceObject *SO, SUMA_CLUST_DATUM *cd, int UseSurfDist);
38 SUMA_Boolean SUMA_Sort_ClustersList (DList *list, SUMA_SURF_CLUST_SORT_MODES SortMode);
39 SUMA_DSET *SUMA_CalculateLocalStats(
40    SUMA_SurfaceObject *SO, SUMA_DSET *din,
41    byte *nmask, byte strict_mask,
42    float rhood, SUMA_OFFSET_STRUCT *UseThisOffset,
43    int ncode, int *code,
44    SUMA_DSET *UseThisDout, int NodeDebug,
45    SUMA_SurfaceObject *SOf);
46 SUMA_DSET *SUMA_DsetAvgGradient(
47    SUMA_SurfaceObject *SO, float **dists, SUMA_DSET *din,
48    byte *nmask, byte mask_by_zeros, SUMA_GRAD_SCALE_OPTS normopt);
49 float *SUMA_AvgGradient(
50    SUMA_SurfaceObject *SO, float **dists, float *nv,
51    byte *nmask, byte mask_by_zeros, SUMA_GRAD_SCALE_OPTS normopt);
52 SUMA_DSET *SUMA_DsetExtrema(
53    SUMA_SurfaceObject *SO, float **FirstNeighbDist,
54    SUMA_DSET *din, SUMA_DSET *dgrad, float r, float fthresh, float gthresh,
55    byte *maskp, byte mask_by_zeros, SUMA_EXTREMA_DIRECTIONS dir, char *tout);
56 double SUMA_GetFWHM_MinArea(void);
57 void SUMA_SetFWHM_MinArea(double);
58 int SUMA_SurfClust_Get_Method(void) ;
59 void SUMA_SurfClust_Set_Method(int m);
60 SUMA_SURFCLUST_OPTIONS *SUMA_free_SurfClust_Opt(SUMA_SURFCLUST_OPTIONS *Opt);
61 SUMA_SURFCLUST_OPTIONS *SUMA_create_SurfClust_Opt(char *forwhom);
62 char *SUMA_ClustCommandLineFromOpt(char *pname, SUMA_SurfaceObject *SO,
63                            SUMA_SURFCLUST_OPTIONS *Opt,  char *filler);
64 int SUMA_NodeClustNumber(SUMA_OVERLAYS *Sover, int node,
65                          SUMA_SurfaceObject *SO,
66                          SUMA_CLUST_DATUM **cdp);
67 
68 #endif
69