Miscellaneous Utilities
Functions | |
void | irplib_errorstate_dump_warning (unsigned self, unsigned first, unsigned last) |
Dump a single CPL error at the CPL warning level. | |
void | irplib_errorstate_dump_info (unsigned self, unsigned first, unsigned last) |
Dump a single CPL error at the CPL info level. | |
void | irplib_errorstate_dump_debug (unsigned self, unsigned first, unsigned last) |
Dump a single CPL error at the CPL debug level. | |
cpl_error_code | irplib_dfs_save_image (cpl_frameset *allframes, const cpl_parameterlist *parlist, const cpl_frameset *usedframes, const cpl_image *image, cpl_type_bpp bpp, const char *recipe, const char *procat, const cpl_propertylist *applist, const char *remregexp, const char *pipe_id, const char *filename) |
Save an image as a DFS-compliant pipeline product. | |
cpl_error_code | irplib_dfs_save_propertylist (cpl_frameset *allframes, const cpl_parameterlist *parlist, const cpl_frameset *usedframes, const char *recipe, const char *procat, const cpl_propertylist *applist, const char *remregexp, const char *pipe_id, const char *filename) |
Save a propertylist as a DFS-compliant pipeline product. | |
cpl_error_code | irplib_dfs_save_imagelist (cpl_frameset *allframes, const cpl_parameterlist *parlist, const cpl_frameset *usedframes, const cpl_imagelist *imagelist, cpl_type_bpp bpp, const char *recipe, const char *procat, const cpl_propertylist *applist, const char *remregexp, const char *pipe_id, const char *filename) |
Save an imagelist as a DFS-compliant pipeline product. | |
cpl_error_code | irplib_dfs_save_table (cpl_frameset *allframes, const cpl_parameterlist *parlist, const cpl_frameset *usedframes, const cpl_table *table, const cpl_propertylist *tablelist, const char *recipe, const char *procat, const cpl_propertylist *applist, const char *remregexp, const char *pipe_id, const char *filename) |
Save a table as a DFS-compliant pipeline product. | |
cpl_error_code | irplib_image_split (const cpl_image *self, cpl_image *im_low, cpl_image *im_mid, cpl_image *im_high, double th_low, cpl_boolean isleq_low, double th_high, cpl_boolean isgeq_high, double alt_low, double alt_high, cpl_boolean isbad_low, cpl_boolean isbad_mid, cpl_boolean isbad_high) |
Split the values in an image in three according to two thresholds. | |
cpl_error_code | irplib_dfs_table_convert (cpl_table *self, cpl_frameset *allframes, const cpl_frameset *useframes, int maxlinelen, char commentchar, const char *product_name, const char *procatg, const cpl_parameterlist *parlist, const char *recipe_name, const cpl_propertylist *mainlist, const cpl_propertylist *extlist, const char *remregexp, const char *instrume, const char *pipe_id, cpl_boolean(*table_set_row)(cpl_table *, const char *, int, const cpl_frame *, const cpl_parameterlist *), cpl_error_code(*table_check)(cpl_table *, const cpl_frameset *, const cpl_parameterlist *)) |
Create a DFS product with one table from one or more (ASCII) file(s). | |
cpl_error_code | irplib_table_read_from_frameset (cpl_table *self, const cpl_frameset *useframes, int maxlinelen, char commentchar, const cpl_parameterlist *parlist, cpl_boolean(*table_set_row)(cpl_table *, const char *, int, const cpl_frame *, const cpl_parameterlist *)) |
Set the rows of a table with data from one or more (ASCII) files. | |
void | irplib_reset (void) |
Reset IRPLIB state. | |
int | irplib_compare_tags (cpl_frame *frame1, cpl_frame *frame2) |
Comparison function to identify different input frames. | |
const char * | irplib_frameset_find_file (const cpl_frameset *self, const char *tag) |
Find the filename with the given tag in a frame set. | |
const cpl_frame * | irplib_frameset_get_first_from_group (const cpl_frameset *self, cpl_frame_group group) |
Find the first frame belonging to the given group. | |
cpl_error_code | irplib_apertures_find_max_flux (const cpl_apertures *self, int *ind, int nfind) |
Find the aperture(s) with the greatest flux. | |
int | irplib_isinf (double value) |
portable isinf | |
int | irplib_isnan (double value) |
portable isnan | |
void | irplib_errorstate_warning (unsigned self, unsigned first, unsigned last) |
Dump a single CPL error. |
Function Documentation
cpl_error_code irplib_apertures_find_max_flux | ( | const cpl_apertures * | self, | |
int * | ind, | |||
int | nfind | |||
) |
Find the aperture(s) with the greatest flux.
- Parameters:
-
self The aperture object ind The aperture-indices in order of decreasing flux nfind Number of indices to find
- Returns:
- CPL_ERROR_NONE or the relevant _cpl_error_code_ on error
nfind must be at least 1 and at most the size of the aperture object.
The ind array must be able to hold (at least) nfind integers. On success the first nfind elements of ind point to indices of the aperture object.
To find the single ind of the aperture with the maximum flux use simply: int ind; irplib_apertures_find_max_flux(self, &ind, 1);
Definition at line 1002 of file irplib_utils.c.
int irplib_compare_tags | ( | cpl_frame * | frame1, | |
cpl_frame * | frame2 | |||
) |
Comparison function to identify different input frames.
- Parameters:
-
frame1 first frame frame2 second frame
- Returns:
- 0 if frame1!=frame2, 1 if frame1==frame2, -1 in error case
Definition at line 901 of file irplib_utils.c.
cpl_error_code irplib_dfs_save_image | ( | cpl_frameset * | allframes, | |
const cpl_parameterlist * | parlist, | |||
const cpl_frameset * | usedframes, | |||
const cpl_image * | image, | |||
cpl_type_bpp | bpp, | |||
const char * | recipe, | |||
const char * | procat, | |||
const cpl_propertylist * | applist, | |||
const char * | remregexp, | |||
const char * | pipe_id, | |||
const char * | filename | |||
) |
Save an image as a DFS-compliant pipeline product.
- Parameters:
-
allframes The list of input frames for the recipe parlist The list of input parameters usedframes The list of raw/calibration frames used for this product image The image to be saved bpp Bits per pixel recipe The recipe name procat The product category tag applist Optional propertylist to append to primary header or NULL remregexp Optional regexp of properties not to put in main header pipe_id PACKAGE "/" PACKAGE_VERSION filename Filename of created product
- Note:
- The image may be NULL in which case only the header information is saved but passing a NULL image is deprecated, use cpl_dfs_save_propertylist().
- remregexp may be NULL
- Returns:
- CPL_ERROR_NONE or the relevant CPL error code on error
- See also:
- cpl_dfs_save_image().
Definition at line 191 of file irplib_utils.c.
cpl_error_code irplib_dfs_save_imagelist | ( | cpl_frameset * | allframes, | |
const cpl_parameterlist * | parlist, | |||
const cpl_frameset * | usedframes, | |||
const cpl_imagelist * | imagelist, | |||
cpl_type_bpp | bpp, | |||
const char * | recipe, | |||
const char * | procat, | |||
const cpl_propertylist * | applist, | |||
const char * | remregexp, | |||
const char * | pipe_id, | |||
const char * | filename | |||
) |
Save an imagelist as a DFS-compliant pipeline product.
- Parameters:
-
allframes The list of input frames for the recipe parlist The list of input parameters usedframes The list of raw/calibration frames used for this product imagelist The imagelist to be saved bpp Bits per pixel recipe The recipe name procat The product category tag applist Optional propertylist to append to primary header or NULL remregexp Optional regexp of properties not to put in main header pipe_id PACKAGE "/" PACKAGE_VERSION filename Filename of created product
- Note:
- remregexp may be NULL
- Returns:
- CPL_ERROR_NONE or the relevant CPL error code on error
- See also:
- cpl_dfs_save_imagelist().
Definition at line 286 of file irplib_utils.c.
cpl_error_code irplib_dfs_save_propertylist | ( | cpl_frameset * | allframes, | |
const cpl_parameterlist * | parlist, | |||
const cpl_frameset * | usedframes, | |||
const char * | recipe, | |||
const char * | procat, | |||
const cpl_propertylist * | applist, | |||
const char * | remregexp, | |||
const char * | pipe_id, | |||
const char * | filename | |||
) |
Save a propertylist as a DFS-compliant pipeline product.
- Parameters:
-
allframes The list of input frames for the recipe parlist The list of input parameters usedframes The list of raw/calibration frames used for this product recipe The recipe name procat The product category tag applist Optional propertylist to append to primary header or NULL remregexp Optional regexp of properties not to put in main header pipe_id PACKAGE "/" PACKAGE_VERSION filename Filename of created product
- Note:
- remregexp may be NULL
- Returns:
- CPL_ERROR_NONE or the relevant CPL error code on error
- See also:
- cpl_dfs_save_propertylist().
Definition at line 239 of file irplib_utils.c.
cpl_error_code irplib_dfs_save_table | ( | cpl_frameset * | allframes, | |
const cpl_parameterlist * | parlist, | |||
const cpl_frameset * | usedframes, | |||
const cpl_table * | table, | |||
const cpl_propertylist * | tablelist, | |||
const char * | recipe, | |||
const char * | procat, | |||
const cpl_propertylist * | applist, | |||
const char * | remregexp, | |||
const char * | pipe_id, | |||
const char * | filename | |||
) |
Save a table as a DFS-compliant pipeline product.
- Parameters:
-
allframes The list of input frames for the recipe parlist The list of input parameters usedframes The list of raw/calibration frames used for this product table The table to be saved tablelist Optional propertylist to use in table extension or NULL recipe The recipe name procat The product category tag applist Optional propertylist to append to primary header or NULL remregexp Optional regexp of properties not to put in main header pipe_id PACKAGE "/" PACKAGE_VERSION filename Filename of created product
- Returns:
- CPL_ERROR_NONE or the relevant CPL error code on error
- See also:
- cpl_dfs_save_table().
Definition at line 334 of file irplib_utils.c.
Referenced by irplib_dfs_table_convert().
cpl_error_code irplib_dfs_table_convert | ( | cpl_table * | self, | |
cpl_frameset * | allframes, | |||
const cpl_frameset * | useframes, | |||
int | maxlinelen, | |||
char | commentchar, | |||
const char * | product_name, | |||
const char * | procatg, | |||
const cpl_parameterlist * | parlist, | |||
const char * | recipe_name, | |||
const cpl_propertylist * | mainlist, | |||
const cpl_propertylist * | extlist, | |||
const char * | remregexp, | |||
const char * | instrume, | |||
const char * | pipe_id, | |||
cpl_boolean(*)(cpl_table *, const char *, int, const cpl_frame *, const cpl_parameterlist *) | table_set_row, | |||
cpl_error_code(*)(cpl_table *, const cpl_frameset *, const cpl_parameterlist *) | table_check | |||
) |
Create a DFS product with one table from one or more (ASCII) file(s).
- Parameters:
-
self Table with labels (and units) but no row data allframes The list of input frames for the recipe useframes The frames to process for the product maxlinelen The maximum line length in the input file(s) commentchar Skip lines that start with this character, e.g. '#' product_name The name of the created FITS table product or NULL procatg The PROCATG of the created FITS table product parlist The list of input parameters recipe_name The name of the calling recipe mainlist Optional propertylist to append to main header or NULL extlist Optional propertylist to append to ext. header or NULL remregexp Optional regexp of properties not to put in main header instrume The value to use for the INSTRUME key, uppercase PACKAGE pipe_id PACKAGE "/" PACKAGE_VERSION table_set_row Caller-defined function to insert one row in the table table_check Optional caller-defined function to check table or NULL
- Returns:
- CPL_ERROR_NONE or the relevant CPL error code on error
- See also:
- irplib_table_read_from_frameset(), cpl_dfs_save_table()
- Note:
- If product_name is NULL, the product will be named <recipe_name>.fits.
- Example (error handling omitted for brevity):
extern cpl_boolean my_table_set_row(cpl_table *, const char *, int, const cpl_frame *, const cpl_parameterlist *); extern cpl_error_code my_table_check(cpl_table *, const cpl_frameset *, const cpl_parameterlist *); const int expected_rows = 42; cpl_table * self = cpl_table_new(expected_rows); cpl_table_new_column(self, "MYLABEL1", CPL_TYPE_STRING); cpl_table_new_column(self, "MYLABEL2", CPL_TYPE_DOUBLE); cpl_table_set_column_unit(self, "MYLABEL2", "Some_SI_Unit"); irplib_dfs_table_convert(self, allframes, useframes, 1024, '#', NULL, "MYPROCATG", parlist, "myrecipe", NULL, NULL, NULL, "MYINSTRUME", PACKAGE "/" PACKAGE_VERSION, my_table_set_row, my_table_check); cpl_table_delete(self);
Definition at line 615 of file irplib_utils.c.
References irplib_dfs_save_table(), and irplib_table_read_from_frameset().
void irplib_errorstate_dump_debug | ( | unsigned | self, | |
unsigned | first, | |||
unsigned | last | |||
) |
Dump a single CPL error at the CPL debug level.
- Parameters:
-
self The number of the current error to be dumped first The number of the first error to be dumped last The number of the last error to be dumped
- Returns:
- void
- See also:
- cpl_errorstate_dump_one
Definition at line 160 of file irplib_utils.c.
void irplib_errorstate_dump_info | ( | unsigned | self, | |
unsigned | first, | |||
unsigned | last | |||
) |
Dump a single CPL error at the CPL info level.
- Parameters:
-
self The number of the current error to be dumped first The number of the first error to be dumped last The number of the last error to be dumped
- Returns:
- void
- See also:
- cpl_errorstate_dump_one
Definition at line 140 of file irplib_utils.c.
void irplib_errorstate_dump_warning | ( | unsigned | self, | |
unsigned | first, | |||
unsigned | last | |||
) |
Dump a single CPL error at the CPL warning level.
- Parameters:
-
self The number of the current error to be dumped first The number of the first error to be dumped last The number of the last error to be dumped
- Returns:
- void
- See also:
- cpl_errorstate_dump_one
FIXME: Move this function to the CPL errorstate module.
Definition at line 113 of file irplib_utils.c.
void irplib_errorstate_warning | ( | unsigned | self, | |
unsigned | first, | |||
unsigned | last | |||
) |
Dump a single CPL error.
- Parameters:
-
self The number of the current error to be dumped first The number of the first error to be dumped last The number of the last error to be dumped
- Returns:
- void
- Note:
- This function differs from cpl_errorstate_dump_one only in message level
- See also:
- cpl_errorstate_dump_one
Definition at line 1083 of file irplib_utils.c.
const char* irplib_frameset_find_file | ( | const cpl_frameset * | self, | |
const char * | tag | |||
) |
Find the filename with the given tag in a frame set.
- Parameters:
-
self A frame set. tag The frame tag to search for.
- Returns:
- The filename or NULL if none found and on error.
- See also:
- cpl_frameset_find
- Note:
- If called with a CPL error code, the location will be updated and NULL returned.
NULL is returned and no error code set if the tag is not found.
If the file is not unique, the name of the first one is returned and with a warning.
Definition at line 937 of file irplib_utils.c.
const cpl_frame* irplib_frameset_get_first_from_group | ( | const cpl_frameset * | self, | |
cpl_frame_group | group | |||
) |
Find the first frame belonging to the given group.
- Parameters:
-
self The frameset group The group attribute
- Returns:
- The first frame belonging to the given group, or
NULL
if no such frame was found. The function returnsNULL
if an error occurs and sets the appropriate error code.
Definition at line 968 of file irplib_utils.c.
cpl_error_code irplib_image_split | ( | const cpl_image * | self, | |
cpl_image * | im_low, | |||
cpl_image * | im_mid, | |||
cpl_image * | im_high, | |||
double | th_low, | |||
cpl_boolean | isleq_low, | |||
double | th_high, | |||
cpl_boolean | isgeq_high, | |||
double | alt_low, | |||
double | alt_high, | |||
cpl_boolean | isbad_low, | |||
cpl_boolean | isbad_mid, | |||
cpl_boolean | isbad_high | |||
) |
Split the values in an image in three according to two thresholds.
- Parameters:
-
self The image to split im_low If non-NULL low-valued pixels are assigned to this image im_mid If non-NULL middle-valued pixels are assigned to this image im_high If non-NULL high-valued pixels are assigned to this image th_low The lower threshold isleq_low Ift true use less than or equal th_high The upper threshold, must be at least th_low isgeq_high Iff true use greater than or equal alt_low Assign this value when the pixel value is not low alt_high Assign this value, when the pixel value is not high isbad_low Flag non-low pixels as bad isbad_mid Flag non-mid pixels as bad isbad_high Flag non-high pixels as bad
- Returns:
- CPL_ERROR_NONE or the relevant CPL error code on error
- Note:
- At least one output image must be non-NULL; all non-NULL images must be of identical size, but may be of any pixel-type. self may be passed as one of the output images for an in-place split.
FIXME: This function is way too slow and perhaps over-engineered...
A split in two is achieved with th_low equal th_high (in this case there is little reason for im_mid to be non-NULL).
All pixel values in the output images are reset, as well as their bad pixels maps.
If an input pixel-value is flagged as bad, then the receiving pixel in the output image is flagged as well.
- The same image may be passed more than once which allows a split
- into one image with the mid-valued pixels and another with both the low and high-valued pixels, i.e.
irplib_image_split(source, dest, im_mid, dest, th_low, isleq_low, th_high, isgeq_high, alt_low, alt_high, isbad_low, isbad_mid, isbad_high);
- These two calls are equivalent:
cpl_image_threshold(img, th_low, th_high, alt_low, alt_high);
irplib_image_split(img, NULL, img, NULL, th_low, CPL_TRUE, th_high, CPL_TRUE, alt_low, alt_high, dontcare, CPL_FALSE, dontcare);
Definition at line 420 of file irplib_utils.c.
void irplib_reset | ( | void | ) |
Reset IRPLIB state.
This function resets all static memory used by IRPLIB to a well-defined, initial state.
The function should be called (during initialization) by any application using static memory facilities in IRPLIB.
Currently, this function does nothing.
Definition at line 888 of file irplib_utils.c.
cpl_error_code irplib_table_read_from_frameset | ( | cpl_table * | self, | |
const cpl_frameset * | useframes, | |||
int | maxlinelen, | |||
char | commentchar, | |||
const cpl_parameterlist * | parlist, | |||
cpl_boolean(*)(cpl_table *, const char *, int, const cpl_frame *, const cpl_parameterlist *) | table_set_row | |||
) |
Set the rows of a table with data from one or more (ASCII) files.
- Parameters:
-
self Table with labels (and units) but no row data useframes The frames to process for the table maxlinelen The maximum line length in the input file(s) commentchar Skip lines that start with this character, e.g. '#' parlist The list of input parameters table_set_row Caller-defined function to insert one row in the table
- Returns:
- CPL_ERROR_NONE or the relevant CPL error code on error
table_set_row() is a function that sets the specified row in a table
- it may optionally include a check of the line for consistency. An integer is passed to table_set_row() to indicate which row to set. Instead of setting the row table_set_row() may decide to discard the data. Iff the row was set, table_set_row() should return CPL_TRUE.
It needs to know: 1) How to parse the lines - each line is read with fgets(). 2) For each column: type/format (lg/s/d) + label
During a succesful call self will have rows added or removed to exactly match the number of lines converted. Any a priori knowledge about the expected number of converted rows can be used in the creation of the table (to reduce memory reallocation overhead). On error the number of rows in self is undefined.
- Example (error handling omitted for brevity):
extern cpl_boolean my_table_set_row(cpl_table *, const char *, int, const cpl_frame *, const cpl_parameterlist *); const int expected_rows = 42; cpl_table * self = cpl_table_new(expected_rows); cpl_table_new_column(self, "MYLABEL1", CPL_TYPE_STRING); cpl_table_new_column(self, "MYLABEL2", CPL_TYPE_DOUBLE); cpl_table_set_column_unit(self, "MYLABEL2", "Some_SI_Unit"); irplib_table_read_from_frameset(self, useframes, 1024, '#', parlist, my_table_set_row); // Use self... cpl_table_delete(self);
Definition at line 743 of file irplib_utils.c.
Referenced by irplib_dfs_table_convert().