Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
SUMA_3dSurf2Vol.h
Go to the documentation of this file.00001 #ifndef _3DSURF2VOL_H_
00002 #define _3DSURF2VOL_H_
00003
00004 #define PROG_NAME "3dSurf2Vol"
00005
00006 #define S2V_USE_LONG 1
00007 #define S2V_USE_SHORT 2
00008 #define S2V_USE_HIST 3
00009 #define S2V_USE_VERSION 4
00010
00011 #define S2V_F_STEPS_MIN 1
00012
00013 #define S2V_F_INDEX_VOXEL 0
00014 #define S2V_F_INDEX_POINT 1
00015
00016 #define S2V_MAX_SURFS 2
00017
00018 #define S2V_DEBUG_MAX_LEV 5
00019 #define S2V_DEBUG_TEST_NODE 7
00020
00021 #define CHECK_NULL_STR(str) ((str) ? (str) : "(NULL)")
00022
00023
00024 typedef enum
00025 {
00026 E_SMAP_INVALID = -1,
00027 E_SMAP_NONE,
00028 E_SMAP_MASK, E_SMAP_MASK2,
00029 E_SMAP_AVE, E_SMAP_COUNT,
00030 E_SMAP_MIN, E_SMAP_MAX,
00031 E_SMAP_MAX_ABS,
00032 E_SMAP_FINAL
00033 } s2v_map_num;
00034
00035
00036
00037 typedef struct
00038 {
00039 char * gpar_file;
00040 char * oset_file;
00041 char * spec_file;
00042 char * sv_file;
00043 char * surf_xyz_1D_file;
00044 char * sdata_file_1D;
00045 char * sdata_file_niml;
00046 char * cmask_cmd;
00047 char * data_expr;
00048 char * map_str;
00049 char * datum_str;
00050 char * f_index_str;
00051 char * snames[S2V_MAX_SURFS];
00052 int sxyz_ori_gpar;
00053 int debug;
00054 int dnode;
00055 int dvox;
00056 int noscale;
00057 int f_steps;
00058 float f_p1_fr;
00059 float f_pn_fr;
00060 float f_p1_mm;
00061 float f_pn_mm;
00062 } opts_t;
00063
00064 typedef struct
00065 {
00066 int map;
00067 int datum;
00068 int noscale;
00069 int debug;
00070 int dnode;
00071 int dvox;
00072 byte * cmask;
00073 int sxyz_ori_gpar;
00074 int f_steps;
00075 int f_index;
00076 float f_p1_fr;
00077 float f_pn_fr;
00078 float f_p1_mm;
00079 float f_pn_mm;
00080 } s2v_opts_t;
00081
00082
00083 typedef struct
00084 {
00085 PARSER_code * pcode;
00086 double atoz[26];
00087 int has_sym[26];
00088 int max_sym;
00089 } parser_t;
00090
00091
00092 typedef struct
00093 {
00094 THD_3dim_dataset * gpar;
00095 THD_3dim_dataset * oset;
00096 MRI_IMAGE * sxyz_im;
00097 MRI_IMAGE * sdata_im;
00098 THD_fvec3 f3mm_min;
00099 THD_fvec3 f3mm_max;
00100 parser_t parser;
00101 int nvox;
00102 int nsubs;
00103 byte * cmask;
00104 int ncmask;
00105 int ccount;
00106 } param_t;
00107
00108
00109 typedef struct
00110 {
00111 THD_fvec3 * nodes;
00112 int depth;
00113 int nnodes;
00114
00115 float * fdata;
00116 int * ilist;
00117 int ilen;
00118 } node_list_t;
00119
00120
00121
00122
00123 float dist_f3mm ( THD_fvec3 * p1, THD_fvec3 * p2 );
00124 int s2v_map_type ( char * map_str );
00125 int compute_results ( param_t * p, node_list_t * N, s2v_opts_t * sopt,
00126 double * ddata, int * idata, THD_fvec3 * pary );
00127 THD_3dim_dataset * s2v_nodes2volume(node_list_t *N,param_t *p,s2v_opts_t *sopt);
00128
00129
00130 int adjust_endpts ( s2v_opts_t * sopt, THD_fvec3 * p1, THD_fvec3 * pn );
00131 int check_datum_type ( char * datum_str, int default_type );
00132 int check_map_func ( char * map_str );
00133 int disp_node_list_t ( char * info, node_list_t * d );
00134 int disp_opts_t ( char * info, opts_t * opts );
00135 int disp_param_t ( char * info, param_t * p );
00136 int disp_parser_t ( char * info, parser_t * d );
00137 int disp_s2v_opts_t ( char * info, s2v_opts_t * sopt );
00138 int f3mm_out_of_bounds( THD_fvec3 * cp, THD_fvec3 * min, THD_fvec3 * max );
00139 int fill_node_list ( opts_t * opts, param_t * p, node_list_t * N );
00140 int fill_SUMA_structs ( opts_t * opts, SUMA_SurfSpecFile * spec );
00141 int final_clean_up ( node_list_t * N );
00142 int final_computations(double *ddata, int *idata, s2v_opts_t *sopt, int nvox);
00143 int get_mappable_surfs( SUMA_SurfaceObject ** slist, int how_many, int debug );
00144 int init_node_list (opts_t *opts,param_t *p,s2v_opts_t *sopt,node_list_t *N);
00145 int init_options ( opts_t * opts, int argc, char * argv [] );
00146 int insert_list ( node_list_t * N, param_t * p, s2v_opts_t * sopt,
00147 THD_fvec3 *pary, int nindex, double *ddata, int *idata);
00148 int insert_value ( s2v_opts_t * sopt, double *dv, int *iv, int vox,
00149 int node, float value );
00150 int integral_doubles ( double * dp, int nvals );
00151 int make_point_list ( THD_fvec3 * list, THD_fvec3 * p1, THD_fvec3 * pn,
00152 s2v_opts_t * sopt );
00153 int read_surf_files ( opts_t * opts, param_t * p, SUMA_SurfSpecFile * spec,
00154 s2v_opts_t * sopt, node_list_t * N );
00155 int read_sxyz_1D ( opts_t * opts, param_t * p );
00156 int sdata_from_1D ( opts_t * opts, param_t * p, node_list_t * N );
00157 int sdata_from_default( node_list_t * N );
00158 int set_3dmm_bounds ( THD_3dim_dataset *dset, THD_fvec3 *min, THD_fvec3 *max);
00159 int set_node_list_data( node_list_t *N, param_t *p, s2v_opts_t *sopt, int col);
00160 int set_smap_opts ( opts_t * opts, param_t * p, s2v_opts_t * sopt );
00161 int surf_to_node_list ( s2v_opts_t * sopt, node_list_t * N, int nsurf);
00162 int sxyz_1D_to_nlist ( opts_t * opts, s2v_opts_t * sopt, param_t * p,
00163 node_list_t *N, int * nsurf);
00164 int usage ( char * prog, int level );
00165 int validate_datasets ( opts_t * opts, param_t * p );
00166 int validate_options ( opts_t * opts, param_t * p );
00167 int validate_surface ( opts_t * opts, param_t * p );
00168 int verify_node_list ( node_list_t * N );
00169 int verify_parser_expr( opts_t * opts, param_t * p );
00170 int write_output ( s2v_opts_t * sopt, opts_t * opts, param_t * p,
00171 node_list_t * N, int argc, char * argv[] );
00172
00173
00174 #endif