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