ERIS Pipeline Reference Manual 1.9.2
eris_ifu_vector.h
1
2/*********************************************************************
3 * E.S.O. - VLT project
4 *
5 * "@(#) $Id: eris_ifu_vector.h,v 1.3 2013-05-17 15:53:08 aagudo Exp $"
6 *
7 * who when what
8 * -------- ---------- ----------------------------------------------
9 * agudo 2008-06-12 created
10 */
11
12#ifndef ERIS_IFU_VECTOR_H
13#define ERIS_IFU_VECTOR_H
14
35/*------------------------------------------------------------------------------
36 * Includes
37 *----------------------------------------------------------------------------*/
38#include <cpl.h>
39
40/*------------------------------------------------------------------------------
41 * Types
42 *----------------------------------------------------------------------------*/
43typedef struct {
44 cpl_vector *data;
45 cpl_vector *mask;
46} eris_ifu_vector;
47
59 ERIS_IFU_STATISTICAL,
60 ERIS_IFU_ARITHMETIC
61};
62
63/*-----------------------------------------------------------------------------
64 * Prototypes
65 *----------------------------------------------------------------------------*/
66
67eris_ifu_vector* eris_ifu_vector_new(
68 int n);
69eris_ifu_vector* eris_ifu_vector_new_wrap(
70 int n,
71 const double *data);
72eris_ifu_vector* eris_ifu_vector_create(
73 const cpl_vector *data);
74eris_ifu_vector* eris_ifu_vector_create2(
75 const cpl_vector *data,
76 const cpl_vector *mask);
78 eris_ifu_vector *kv);
79eris_ifu_vector* eris_ifu_vector_duplicate(
80 const eris_ifu_vector *kv);
81cpl_error_code eris_ifu_vector_set(
82 eris_ifu_vector *kv,
83 int pos,
84 double val);
86 const eris_ifu_vector *kv,
87 int pos,
88 int *rej);
90 const eris_ifu_vector *kv,
91 int pos);
92cpl_vector* eris_ifu_vector_get_mask(
93 const eris_ifu_vector *kv);
94cpl_vector *eris_ifu_vector_get_data(
95 const eris_ifu_vector *kv);
96cpl_vector* eris_ifu_vector_get_bpm(
97 eris_ifu_vector *kv);
99 eris_ifu_vector *kv,
100 const cpl_vector *mask,
101 int keep);
102
104 const eris_ifu_vector *kv);
106 const eris_ifu_vector *kv);
108 const eris_ifu_vector *kv,
109 int n);
110cpl_error_code eris_ifu_vector_reject(
111 eris_ifu_vector *kv,
112 int n);
113eris_ifu_vector* eris_ifu_vector_extract(
114 const eris_ifu_vector *kv,
115 int istart,
116 int istop);
118 const eris_ifu_vector *kv);
119
120cpl_error_code eris_ifu_vector_adapt_rejected(
121 eris_ifu_vector *kv1,
122 eris_ifu_vector *kv2);
123
124cpl_error_code eris_ifu_vector_add(
125 eris_ifu_vector *kv1,
126 const eris_ifu_vector *kv2);
127cpl_error_code eris_ifu_vector_subtract(
128 eris_ifu_vector *kv1,
129 const eris_ifu_vector *kv2);
130cpl_error_code eris_ifu_vector_multiply(
131 eris_ifu_vector *kv1,
132 const eris_ifu_vector *kv2);
133cpl_error_code eris_ifu_vector_divide(
134 eris_ifu_vector *kv1,
135 const eris_ifu_vector *kv2);
136cpl_error_code eris_ifu_vector_add_scalar(
137 eris_ifu_vector *kv,
138 double addend);
140 eris_ifu_vector *kv,
141 double subtrahend);
143 eris_ifu_vector *kv,
144 double factor);
145cpl_error_code eris_ifu_vector_divide_scalar(
146 eris_ifu_vector *kv,
147 double factor);
148cpl_error_code eris_ifu_vector_abs(
149 eris_ifu_vector *kv);
150
152 const eris_ifu_vector *kv);
154 const eris_ifu_vector *kv);
156 const eris_ifu_vector *kv,
157 const enum medianType type);
158eris_ifu_vector* eris_ifu_vector_cut_percentian(
159 const eris_ifu_vector *kv,
160 double percentage);
162 const eris_ifu_vector *kv);
164 const eris_ifu_vector *kv);
166 const eris_ifu_vector *kv);
168 const eris_ifu_vector *kv,
169 int *pos);
171 const eris_ifu_vector *kv,
172 int *pos);
173
174cpl_error_code eris_ifu_vector_power(
175 eris_ifu_vector *kv,
176 double exponent);
177
178cpl_error_code eris_ifu_vector_fill(
179 eris_ifu_vector *kv,
180 double val);
181
182cpl_error_code eris_ifu_vector_flip(
183 eris_ifu_vector* kv);
184
185eris_ifu_vector* eris_ifu_vector_histogram(
186 const eris_ifu_vector *kv,
187 int nbins);
188
189eris_ifu_vector* eris_ifu_vector_load(
190 const char *filename,
191 int position);
192cpl_error_code eris_ifu_vector_save(
193 const eris_ifu_vector *kv,
194 const char *filename,
195 cpl_type_bpp bpp,
196 const cpl_propertylist *pl,
197 unsigned mode,
198 double rej_val);
199
200cpl_error_code eris_ifu_vector_dump(
201 const eris_ifu_vector *kv);
202
203int eris_ifu_is_nan_or_inf(double A);
204
205cpl_error_code eris_ifu_vector_sqrt(eris_ifu_vector *ev);
206
207
208
211#endif
cpl_error_code eris_ifu_vector_reject_from_mask(eris_ifu_vector *ev, const cpl_vector *mask, int keep)
Set the rejected elements in an eris_ifu_vector as defined in a mask.
eris_ifu_vector * eris_ifu_vector_cut_percentian(const eris_ifu_vector *ev, double percentage)
Remove a certain percentage of brightest pixels.
eris_ifu_vector * eris_ifu_vector_create2(const cpl_vector *data, const cpl_vector *mask)
Create a new eris_ifu_vector out of a data and mask cpl_vector.
eris_ifu_vector * eris_ifu_vector_histogram(const eris_ifu_vector *ev, int nbins)
Calculates the histogram of a vector.
double eris_ifu_vector_get_stdev_median(const eris_ifu_vector *ev)
Compute the bias-corrected standard deviation using median instead of mean.
cpl_error_code eris_ifu_vector_save(const eris_ifu_vector *ev, const char *filename, cpl_type_bpp bpp, const cpl_propertylist *pl, unsigned mode, double rej_val)
Override for cpl_vector_save().
int eris_ifu_is_nan_or_inf(double A)
Checks if a value is nan, inf or -inf.
eris_ifu_vector * eris_ifu_vector_new(int n)
Create a new eris_ifu_vector.
double eris_ifu_vector_get_rej(const eris_ifu_vector *ev, int pos, int *rej)
Get an element of the eris_ifu_vector.
int eris_ifu_vector_get_size(const eris_ifu_vector *ev)
Get the size of the eris_ifu_vector.
cpl_error_code eris_ifu_vector_multiply_scalar(eris_ifu_vector *ev, double factor)
Elementwise multiplication of a scalar to a eris_ifu_vector.
int eris_ifu_vector_count_non_rejected(const eris_ifu_vector *ev)
Count the number of non-rejected elements in a eris_ifu_vector.
int eris_ifu_vector_is_rejected(const eris_ifu_vector *ev, int n)
Test if a value is good or bad.
cpl_error_code eris_ifu_vector_flip(eris_ifu_vector *ev)
Flip the values of a vector.
cpl_error_code eris_ifu_vector_subtract(eris_ifu_vector *kv1, const eris_ifu_vector *kv2)
Subtract two eris_ifu_vectors.
cpl_error_code eris_ifu_vector_dump(const eris_ifu_vector *ev)
All values contained in vec are printed for debugging purposes.
cpl_error_code eris_ifu_vector_multiply(eris_ifu_vector *kv1, const eris_ifu_vector *kv2)
Multiply two eris_ifu_vectors.
cpl_vector * eris_ifu_vector_get_mask(const eris_ifu_vector *ev)
Get a copy of the mask of eris_ifu_vector.
cpl_error_code eris_ifu_vector_set(eris_ifu_vector *ev, int pos, double val)
Set an element of the eris_ifu_vector.
cpl_error_code eris_ifu_vector_abs(eris_ifu_vector *ev)
Calculates the absolute value of a vector in-place.
eris_ifu_vector * eris_ifu_vector_duplicate(const eris_ifu_vector *ev)
This function duplicates an existing eris_ifu_vector and allocates memory.
cpl_error_code eris_ifu_vector_fill(eris_ifu_vector *ev, double val)
Fill a eris_ifu_vector.
double eris_ifu_vector_get_min(const eris_ifu_vector *ev, int *pos)
Get the minimum of the eris_ifu_vector and its position.
eris_ifu_vector * eris_ifu_vector_new_wrap(int n, const double *data)
Create a new eris_ifu_vector from a C array (duplicated).
eris_ifu_vector * eris_ifu_vector_extract(const eris_ifu_vector *ev, int istart, int istop)
Extract a sub-vector from a eris_ifu_vector.
cpl_error_code eris_ifu_vector_sqrt(eris_ifu_vector *ev)
eris_ifu_vector_sqrt
cpl_error_code eris_ifu_vector_power(eris_ifu_vector *ev, double exponent)
Compute the elementwise power of the vector.
double eris_ifu_vector_get_max(const eris_ifu_vector *ev, int *pos)
Get the maximum of the eris_ifu_vector and its position.
cpl_vector * eris_ifu_vector_get_bpm(eris_ifu_vector *ev)
Get the pointer to the mask of the eris_ifu_vector.
double eris_ifu_vector_get_stdev(const eris_ifu_vector *ev)
Compute the bias-corrected standard deviation of a vector's elements.
cpl_error_code eris_ifu_vector_subtract_scalar(eris_ifu_vector *ev, double subtrahend)
Elementwise subtraction of a scalar from a eris_ifu_vector.
cpl_error_code eris_ifu_vector_adapt_rejected(eris_ifu_vector *kv1, eris_ifu_vector *kv2)
Assert that rejected values on both vectors are the same.
double eris_ifu_vector_get(const eris_ifu_vector *ev, int pos)
Get an element of the eris_ifu_vector.
cpl_error_code eris_ifu_vector_add_scalar(eris_ifu_vector *ev, double addend)
Elementwise addition of a scalar to a eris_ifu_vector.
medianType
The type of median behavior: For an odd number of samples the behaviour is the same for both methods....
int eris_ifu_vector_count_rejected(const eris_ifu_vector *ev)
Count the number of rejected elements in a eris_ifu_vector.
cpl_error_code eris_ifu_vector_reject(eris_ifu_vector *ev, int n)
Set a value as rejected in a eris_ifu_vector.
cpl_vector * eris_ifu_vector_get_data(const eris_ifu_vector *ev)
Get a copy of the data, rejected values are set to NaN.
double eris_ifu_vector_get_sum(const eris_ifu_vector *ev)
Compute the sum of non-rejected eris_ifu_vector elements.
double eris_ifu_vector_get_median(const eris_ifu_vector *ev, const enum medianType type)
Compute the median of the elements of a vector.
cpl_error_code eris_ifu_vector_add(eris_ifu_vector *kv1, const eris_ifu_vector *kv2)
Add a eris_ifu_vector to another.
cpl_vector * eris_ifu_vector_create_non_rejected(const eris_ifu_vector *ev)
Creates a cpl_vector out of a eris_ifu_vector with non-rejected values.
cpl_error_code eris_ifu_vector_divide_scalar(eris_ifu_vector *ev, double dividend)
Elementwise division of a eris_ifu_vector by a scalar.
void eris_ifu_vector_delete(eris_ifu_vector *ev)
Delete a eris_ifu_vector.
eris_ifu_vector * eris_ifu_vector_load(const char *filename, int position)
Override for cpl_vector_load().
eris_ifu_vector * eris_ifu_vector_create(const cpl_vector *data)
Create a new eris_ifu_vector out of a data cpl_vector.
cpl_error_code eris_ifu_vector_divide(eris_ifu_vector *kv1, const eris_ifu_vector *kv2)
Divide two eris_ifu_vectors element-wise.
double eris_ifu_vector_get_mean(const eris_ifu_vector *ev)
Compute the mean value of non-rejected eris_ifu_vector elements.