Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

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 /* surface to voxel mapping codes, along with command-line strings */
00024 typedef enum
00025 {
00026     E_SMAP_INVALID = -1,
00027     E_SMAP_NONE,                        /* do not change INVALID or 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                        /* do not change FINAL */
00033 } s2v_map_num;
00034 
00035 
00036 /* user options */
00037 typedef struct
00038 {
00039     char   * gpar_file;                 /* AFNI grid parent filename   */
00040     char   * oset_file;                 /* filename for ascii output   */
00041     char   * spec_file;                 /* surface specification file  */
00042     char   * sv_file;                   /* AFNI surface volume dataset */
00043     char   * surf_xyz_1D_file;          /* input 1D surface coord file */
00044     char   * sdata_file_1D;             /* input 1D surface data file  */
00045     char   * sdata_file_niml;           /* input niml surf data file   */
00046     char   * cmask_cmd;                 /* 3dcalc style mask command   */
00047     char   * data_expr;                 /* comp. float from node data  */ 
00048     char   * map_str;                   /* how to map surf(s) to dset  */
00049     char   * datum_str;                 /* data type of output dset    */
00050     char   * f_index_str;               /* count by voxels or points   */
00051     char   * snames[S2V_MAX_SURFS];     /* list of surfaces to use     */
00052     int      sxyz_ori_gpar;             /* input xyz use gpar orient   */
00053     int      debug;                     /* level of debug output       */
00054     int      dnode;                     /* node watched for debug      */
00055     int      dvox;                      /* voxel watched for debug     */
00056     int      noscale;                   /* no scale of integer output  */
00057     int      f_steps;                   /* # int steps for mask2 map   */
00058     float    f_p1_fr;                   /* fractional dist: add to p1  */
00059     float    f_pn_fr;                   /* fractional dist: add to pn  */
00060     float    f_p1_mm;                   /* mm distance to add to p1    */
00061     float    f_pn_mm;                   /* mm distance to add to pn    */
00062 } opts_t;
00063 
00064 typedef struct
00065 {
00066     int      map;                       /* type of mapping from surfs  */
00067     int      datum;                     /* data type of output dset    */
00068     int      noscale;                   /* no scale of integer output  */
00069     int      debug;                     /* for printing extra output   */
00070     int      dnode;                     /* node watched for debug      */
00071     int      dvox;                      /* voxel watched for debug     */
00072     byte   * cmask;                     /* computed mask               */
00073     int      sxyz_ori_gpar;             /* input xyz use gpar orient   */
00074     int      f_steps;                   /* # int steps for mask2 map   */
00075     int      f_index;                   /* count by voxels or points   */
00076     float    f_p1_fr;                   /* fractional dist: add to p1  */
00077     float    f_pn_fr;                   /* fractional dist: add to pn  */
00078     float    f_p1_mm;                   /* mm distance to add to p1    */
00079     float    f_pn_mm;                   /* mm distance to add to pn    */
00080 } s2v_opts_t;
00081 
00082 /* PARSER stuff */
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 /* computational parameters */
00092 typedef struct
00093 {
00094     THD_3dim_dataset * gpar;            /* input dataset               */
00095     THD_3dim_dataset * oset;            /* output dataset              */
00096     MRI_IMAGE        * sxyz_im;         /* surface coordinate image    */
00097     MRI_IMAGE        * sdata_im;        /* sub-surface data image      */
00098     THD_fvec3          f3mm_min;        /* numerical min xyz points    */
00099     THD_fvec3          f3mm_max;        /* numerical max xyz points    */
00100     parser_t           parser;          /* code for expression eval    */
00101     int                nvox;            /* gpar nxyz                   */
00102     int                nsubs;           /* number of output sub-bricks */
00103     byte             * cmask;           /* computed mask               */
00104     int                ncmask;          /* nvox for cmask              */
00105     int                ccount;          /* mask size                   */
00106 } param_t;
00107 
00108 /* node list structure */
00109 typedef struct
00110 {
00111     THD_fvec3  * nodes;                 /* depth x nnodes in size      */
00112     int          depth;                 /* major axis                  */
00113     int          nnodes;                /* minor axis                  */
00114 
00115     float      * fdata;                 /* data list (length as ilist) */
00116     int        * ilist;                 /* index list - nodes indices  */
00117     int          ilen;                  /* length of ilist             */
00118 } node_list_t;
00119 
00120 /* ---- function prototypes ---- */
00121 
00122 /* library protos - rcr - move to separate file */
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   /* _3DSURF2VOL_H_ */
 

Powered by Plone

This site conforms to the following standards: