1 #ifndef _DOTRACKIT_HEADER_
2 #define _DOTRACKIT_HEADER_
3 
4 #include <gsl/gsl_randist.h>
5 #include <gsl/gsl_rng.h>
6 #include <gsl/gsl_statistics_double.h>
7 
8 
9 #define EPS_V (0.000001) // for eigvec 'vel' to not have badness dividing
10 #define CONV (PI/180)
11 #define PIo2 (PI/2)
12 #define TWOPI (PI*2)
13 #define EPS_MASK (0.001) // theshold for masked data to be ignored
14 #define EPS_L (0.00001)
15 #define MINEIG (0) // minimum allowed eigenvalue
16 
17 #ifdef XORG7
18    #define CORR_FUN(a,b,n) (THD_pearson_corrd((n),(a),(b)))
19    #define GSL_RAN gsl_ran_gaussian
20 #else
21    #define CORR_FUN(a,b,n) (gsl_stats_correlation((a), 1, (b), 1, (n)))
22    #define GSL_RAN gsl_ran_gaussian_ziggurat
23 #endif
24 
25 // Added in Feb,2015.
26 int ByeByeBundle( int A,
27                   int B,
28                   int NET,
29                   int **Prob_grid,
30                   float ***Prob_grid_L,
31                   float ***Param_grid,
32                   int L_paramgrid,
33                   int ***NETROI,
34                   int L_netroi,
35                   int *NROI );
36 
37 int MatrInd_to_FlatUHT_DIAG_P1(int i, int j, int N);
38 int MatrInd_to_FlatUHT_DIAG_M(int i, int j, int N);
39 
40 int MatrInd_to_FlatUHT(int i, int j, int N);
41 int FlatUHT_Len(int N);
42 
43 int ViveLeRoi(THD_3dim_dataset *REF, int **ROILIST, int **INVLIST,
44 				  int *NUMROI, int *INVROI);
45 
46 int CheckNotMask(int id, int br, short **amask, int AO);
47 
48 int ScoreTrackGrid_M( float ***PG,int idx, int h, int C,
49                       THD_3dim_dataset **inset, int bot, int top);
50 
51 int TrackItP_NEW_M( int NHAR, short *DirPerVox, int SEL, float **CC,
52                     int *IND, float *PHYSIND,
53                     float *Edge, int *dim, float minFA,
54                     float maxAng, int arrMax,
55                     int **T, float **flT, int FB, float *physL,
56                     int ***ID2);
57 
58 int Setup_Labels_Indices_Unc_M_both(int *Dim, int ***mskd, int ***INDEX,
59                                     int ***INDEX2, float **UNC,
60                                     float **coorded, float **copy_coorded,
61                                     THD_3dim_dataset *insetFA,
62                                     short *DirPerVox,
63                                     int N_HAR,
64                                     THD_3dim_dataset **insetV,
65                                     THD_3dim_dataset *insetUC,
66                                     float unc_minei_std, float unc_minfa_std,
67                                     int N_nets, int *NROI,
68                                     THD_3dim_dataset *mset1, int **MAPROI,
69                                     int **INV_LABELS, int ***NETROI);
70 
71 int Setup_Ndir_per_vox( int N_HAR, int *Dim, int ***mskd,
72                         int ***INDEX,
73                         int ***INDEX2,
74                         THD_3dim_dataset **insetHARDIR,
75                         short *DirPerVox);
76 
77 int DTI_Perturb_M( int *Dim, int ***mskd, int ***INDEX, int ***INDEX2,
78                    float **UNC, float **coorded, float **copy_coorded,
79                    gsl_rng *r,
80                    THD_3dim_dataset **insetV);
81 
82 int HARDI_Perturb( int *Dim, int ***mskd, int ***INDEX, int ***INDEX2,
83                    float **UNC, float **coorded, float **copy_coorded,
84                    gsl_rng *r, short *DirPerVox);
85 
86 int Two_DOF_Rot( float *X, float *Y,
87                  double POL, double AZIM, float rot[3][3] );
88 
89 int WriteBasicProbFiles( int N_nets, int Ndata, int Nvox,
90                          char *prefix, THD_3dim_dataset *insetFA,
91                          int *TV_switch, char *voxel_order, int *NROI,
92                          int ***NETROI, int ***mskd, int ***INDEX2, int *Dim,
93                          THD_3dim_dataset *dsetn, int argc, char *argv[],
94                          char ***ROI_STR_LAB, int NameLabelsOut,
95                          Dtable *roi_table,
96                          int **roi_labs, int PAIR_POWERON,
97                          int NIFTI_OUT);
98 
99 int WriteIndivProbFiles( int N_nets, int Ndata, int Nvox, int **Prob_grid,
100                          char *prefix, THD_3dim_dataset *insetFA,
101                          int *TV_switch, char *voxel_order, int *NROI,
102                          int ***NETROI, int ***mskd,int ***INDEX2, int *Dim,
103                          THD_3dim_dataset *dsetn, int argc, char *argv[],
104                          float ***Param_grid, int DUMP_TYPE,
105                          int DUMP_ORIG_LABS, int **ROI_LABELS, int POST_IT,
106                          char ***ROI_STR_LAB, int NameLabelsOut,
107                          int NIFTI_OUT);
108 
109 // lazy now, someday will write these unified/smarter.
110 //int Write_Running_Opts_DET(logic );
111 //int Write_Running_Opts_MINIP( );
112 //int Write_Running_Opts_PROB( );
113 
114 #endif /* _DOTRACKIT_HEADER_ */
115 
116 
117 
118 
119 
120 
121 
122 
123