00001
00002
00003 #ifndef __apop_estimate__
00004 #define __apop_estimate__
00005
00006 #include <assert.h>
00007 #include <string.h>
00008 #include <gsl/gsl_rng.h>
00009 #include <gsl/gsl_matrix.h>
00010 #include "variadic.h"
00011
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif
00015
00019 typedef struct{
00020 char * vector;
00021 char ** column;
00022 char ** row;
00023 char ** text;
00024 int colct, rowct, textct;
00025 char title[101];
00026 } apop_name;
00027
00031 typedef struct {
00032 gsl_vector *vector;
00033 gsl_matrix *matrix;
00034 apop_name *names;
00035 char ***text;
00036 int textsize[2];
00037 gsl_vector *weights;
00038
00039 } apop_data;
00040
00043 typedef struct _apop_model apop_model;
00044
00045 typedef struct {
00046 char name[101];
00047 void *setting_group;
00048 void *copy;
00049 void *free;
00050 } apop_settings_type;
00051
00053 struct _apop_model{
00054 char name[101];
00055 int vbase, m1base, m2base;
00059 apop_settings_type *settings;
00060 apop_data *parameters;
00061 apop_data *expected;
00062 apop_data *covariance;
00063 double llikelihood;
00064 int status;
00065 int prepared;
00066 apop_data *data;
00067 apop_model * (*estimate)(apop_data * data, apop_model *params);
00068 double (*p)(apop_data *d, apop_model *params);
00069 double (*log_likelihood)(apop_data *d, apop_model *params);
00070 void (*score)(apop_data *d, gsl_vector *gradient, apop_model *params);
00071 double (*constraint)(apop_data *data, apop_model *params);
00072 apop_data* (*expected_value)(apop_data *d, apop_model *params);
00073 void (*draw)(double *out, gsl_rng* r, apop_model *params);
00074 void (*prep)(apop_data *data, apop_model *params);
00075 void (*print)(apop_model *params);
00076 void *more;
00077 size_t more_size;
00078 } ;
00079
00082 typedef struct{
00083 int verbose;
00084 char output_type;
00090 FILE *output_pipe;
00091 char output_delimiter[100];
00093 int output_append;
00094 char input_delimiters[100];
00095 char db_name_column[300];
00096 char db_nan[100];
00097 char db_engine;
00098 char db_user[101];
00099 char db_pass[101];
00100 int thread_count;
00101 int rng_seed;
00102 float version;
00103 } apop_opts_type;
00104
00105 extern apop_opts_type apop_opts;
00106
00107 apop_name * apop_name_alloc(void);
00108 int apop_name_add(apop_name * n, char *add_me, char type);
00109 void apop_name_free(apop_name * free_me);
00110 void apop_name_print(apop_name * n);
00111 #ifdef APOP_NO_VARIADIC
00112 void apop_name_stack(apop_name * n1, apop_name *nadd, char type1, char typeadd);
00113 #else
00114 void apop_name_stack_base(apop_name * n1, apop_name *nadd, char type1, char typeadd);
00115 apop_varad_declare(void , apop_name_stack, apop_name * n1; apop_name *nadd; char type1; char typeadd);
00116 #define apop_name_stack(...) apop_varad_link(apop_name_stack, __VA_ARGS__)
00117 #endif
00118 void apop_name_cross_stack(apop_name * n1, apop_name *n2, char type1, char type2);
00119 apop_name * apop_name_copy(apop_name *in);
00120 int apop_name_find(apop_name *n, char *findme, char type);
00121
00122 void apop_data_free(apop_data *freeme);
00123 apop_data * apop_matrix_to_data(gsl_matrix *m);
00124 apop_data * apop_vector_to_data(gsl_vector *v);
00125 apop_data * apop_data_alloc(const size_t, const size_t, const int);
00126 apop_data * apop_data_calloc(const size_t, const size_t, const int);
00127 #ifdef APOP_NO_VARIADIC
00128 apop_data * apop_data_stack(apop_data *m1, apop_data * m2, char posn, char inplace);
00129 #else
00130 apop_data * apop_data_stack_base(apop_data *m1, apop_data * m2, char posn, char inplace);
00131 apop_varad_declare(apop_data *, apop_data_stack, apop_data *m1; apop_data * m2; char posn; char inplace);
00132 #define apop_data_stack(...) apop_varad_link(apop_data_stack, __VA_ARGS__)
00133 #endif
00134 apop_data ** apop_data_split(apop_data *in, int splitpoint, char r_or_c);
00135 apop_data * apop_data_copy(const apop_data *in);
00136 void apop_data_rm_columns(apop_data *d, int *drop);
00137 void apop_data_memcpy(apop_data *out, const apop_data *in);
00138 double * apop_data_ptr(const apop_data *data, const int i, const int j);
00139 double * apop_data_ptr_it(const apop_data *in, size_t row, char* col);
00140 double * apop_data_ptr_ti(const apop_data *in, char* row, int col);
00141 double * apop_data_ptr_tt(const apop_data *in, char *row, char* col);
00142 double apop_data_get(const apop_data *in, size_t row, int col);
00143 double apop_data_get_it(const apop_data *in, size_t row, char* col);
00144 double apop_data_get_ti(const apop_data *in, char* row, int col);
00145 double apop_data_get_tt(const apop_data *in, char *row, char* col);
00146 void apop_data_set(apop_data *in, size_t row, int col, double data);
00147 void apop_data_set_ti(apop_data *in, char* row, int col, double data);
00148 void apop_data_set_it(apop_data *in, size_t row, char* col, double data);
00149 void apop_data_set_tt(apop_data *in, char *row, char* col, double data);
00150 void apop_data_add_named_elmt(apop_data *d, char *name, double val);
00151 void apop_text_add(apop_data *in, const size_t row, const size_t col, const char *fmt, ...);
00152 apop_data * apop_text_alloc(apop_data *in, const size_t row, const size_t col);
00153 void apop_text_free(char ***freeme, int rows, int cols);
00154 apop_data *apop_data_transpose(apop_data *in);
00155 gsl_matrix * apop_matrix_realloc(gsl_matrix *m, size_t newheight, size_t newwidth);
00156 gsl_vector * apop_vector_realloc(gsl_vector *v, size_t newheight);
00157
00158 #ifdef __cplusplus
00159 }
00160 #endif
00161 #endif
Autogenerated by doxygen on 28 Sep 2009.