00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139 #ifndef UVES_UTILS_WRAPPERS_H
00140 #define UVES_UTILS_WRAPPERS_H
00141
00142 #ifdef HAVE_CONFIG_H
00143 # include <config.h>
00144 #endif
00145
00146
00147
00148
00149 #include <uves_propertylist.h>
00150 #include <irplib_utils.h>
00151
00152 #include <cpl.h>
00153
00154 #include <stdbool.h>
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164 #define uves_sprintf(...) irplib_sprintf(__VA_ARGS__)
00165
00166 const char *uves_find_frame(const cpl_frameset *frames, const char **wanted,
00167 int N, int *found, const cpl_frame **frame);
00168 cpl_error_code uves_cast_image(cpl_image **image, cpl_type to_type);
00169 cpl_error_code uves_crop_image(cpl_image **image, int x1, int y_1, int x2, int y2);
00170
00171 cpl_error_code uves_get_property_value(const uves_propertylist *plist,
00172 const char *keyword, cpl_type keywordtype,
00173 void *result);
00174 cpl_error_code uves_get_parameter(const cpl_parameterlist *parameters,
00175 const char *context, const char *recipe_id,
00176 const char *name, cpl_type type, void *value);
00177 cpl_error_code uves_set_parameter(cpl_parameterlist *parameters,
00178 const char *context, const char *name,
00179 cpl_type type, void *value);
00180 cpl_error_code uves_set_parameter_default(cpl_parameterlist *parameters,
00181 const char *context,
00182 const char *parname,
00183 cpl_type type, void *value);
00184
00185 void uves_image_reject_all(cpl_image *image);
00186
00187 int uves_get_nextensions(const char *filename);
00188 int uves_select_table_rows(cpl_table *t, const char *column,
00189 cpl_table_select_operator operator,
00190 double value);
00191 int uves_erase_invalid_table_rows(cpl_table *t, const char *column);
00192 int uves_erase_table_rows(cpl_table *t, const char *column,
00193 cpl_table_select_operator operator,
00194 double value);
00195 int uves_extract_table_rows_local(cpl_table *t, const char *column,
00196 cpl_table_select_operator operator, double value);
00197
00198 cpl_table *uves_extract_table_rows(const cpl_table *t, const char *column,
00199 cpl_table_select_operator operator,
00200 double value);
00201
00202 cpl_error_code
00203 uves_table_sort_dfsxxxx(cpl_table *table, const uves_propertylist *reflist);
00204
00205 void uves_sort_table_1(cpl_table *t, const char *column1,
00206 bool reverse1);
00207 void uves_sort_table_2(cpl_table *t, const char *column1,
00208 const char *column2, bool reverse1,
00209 bool reverse2);
00210 void uves_sort_table_3(cpl_table *t, const char *column1,
00211 const char *column2, const char *column3,
00212 bool reverse1, bool reverse2, bool reverse3);
00213
00214
00215 cpl_error_code uves_fit(const cpl_matrix *x, const cpl_matrix *sigma_x,
00216 const cpl_vector *y, const cpl_vector *sigma_y,
00217 cpl_vector *a, const int ia[],
00218 int (*f)(const double x[], const double a[],
00219 double *result),
00220 int (*dfda)(const double x[], const double a[],
00221 double result[]),
00222 double *mse,
00223 double *red_chisq,
00224 cpl_matrix **covariance);
00225
00226 cpl_error_code
00227 uves_fit_1d(cpl_vector *x, const cpl_vector *sigma_x,
00228 cpl_vector *y, const cpl_vector *sigma_y,
00229 cpl_fit_mode fit_pars, bool fit_back,
00230 double *x0, double *sigma, double *area, double *offset, double *slope,
00231 double *mse, double *red_chisq,
00232 cpl_matrix **covariance,
00233 int (*f) (const double x[], const double a[], double *result),
00234 int (*dfda)(const double x[], const double a[], double result[]),
00235 int M);
00236
00237 cpl_error_code
00238 uves_fit_1d_image(const cpl_image *image, const cpl_image *noise,
00239 const cpl_binary *image_badmap,
00240 bool horizontal, bool fix_back, bool fit_back,
00241 int xlo, int xhi, int y_0,
00242 double *x0, double *sigma, double *norm, double *background,
00243 double *slope,
00244 double *mse, double *red_chisq,
00245 cpl_matrix **covariance,
00246 int (*f) (const double x[], const double a[], double *result),
00247 int (*dfda)(const double x[], const double a[], double result[]),
00248 int M);
00249
00250
00251 void uves_propertylist_append_property(uves_propertylist *result, const cpl_property *p);
00252
00253 cpl_error_code uves_table_erase_selected_dfs02356(cpl_table *t);
00254 int uves_table_and_selected_invalid(cpl_table *t, const char *column);
00255
00256 void uves_raise_to_median_frac(cpl_table *t, const char *column, double fraction);
00257 void uves_free(const void *mem);
00258 void uves_free_image(cpl_image **i);
00259 void uves_free_mask(cpl_mask **m);
00260 void uves_free_imagelist(cpl_imagelist **i);
00261 void uves_free_table(cpl_table **t);
00262 void uves_free_table_const(const cpl_table **t);
00263 void uves_free_propertylist(uves_propertylist **p);
00264 void uves_free_propertylist_const(const uves_propertylist **p);
00265 void uves_free_property(cpl_property **p);
00266 void uves_free_polynomial(cpl_polynomial **p);
00267 void uves_free_matrix(cpl_matrix **m);
00268 void uves_free_vector(cpl_vector **v);
00269 void uves_free_bivector(cpl_bivector **b);
00270 void uves_free_stats(cpl_stats **s);
00271 void uves_unwrap_vector(cpl_vector **v);
00272 void uves_unwrap_vector_const(const cpl_vector **v);
00273 void uves_unwrap_bivector_vectors(cpl_bivector **b);
00274 void uves_free_parameterlist(cpl_parameterlist **p);
00275 void uves_free_frameset(cpl_frameset **f);
00276 void uves_free_frame(cpl_frame **f);
00277 void uves_free_array(cpl_array **a);
00278 void uves_free_int(int **i);
00279 void uves_free_int_const(const int **i);
00280 void uves_free_float(float **f);
00281 void uves_free_double(double **d);
00282 void uves_free_string(char **s);
00283 void uves_free_string_const(const char **s);
00284
00285 #endif
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297