read_fl_db_from_config_file - Reads a fluorescent database from a config file


#include "s2/s2_fluorescence.h"

Example compile flags (system dependent):
   -L/home/kobus/misc/load/linux_x86_64_opteron -L/usr/lib/x86_64-linux-gnu
  -lKJB                               -lfftw3  -lgsl -lgslcblas -ljpeg  -lSVM -lstdc++                    -lpthread -lSLATEC -lg2c    -lacml -lacml_mv -lblas -lg2c      -lncursesw 

int read_fl_db_from_config_file
	Fluorescent_database **fl_db_ptr_ptr,
	const char *env_var,
	const char *directory,
	const char *file_name,
	const char *message_name,
	char *config_file_name,
	size_t config_file_name_size


This routine reads a fluorescent database from a configuration file, checking several possible locations for the file. If the parameter "env_var" is not NULL, then it first tries using this string as the configuration file name. Next it looks for "file_name" in the current directory, then the user's home directory, and, depending on how the library was built, then the "shared" home directory and/or the programmer's home directory. If "directory" is not NULL, then it is used as a sub-directory in all paths starting from a home directory (i.e., all paths except the current directory). The parameter message_name can be used to specify a name for the configuration file to be used in error and verbose output messages. If message_name is NULL, then "configuration" is used. If the buffer config_file_name is not NULL, then the file name actually used is copied into it. If it is used, then its size must be passed in via config_file_name_size;


Either NO_ERROR, or ERROR, with an appropriate error message being set.


Suppose directory is "x" and file_name is "y". Also supposed that the shared directory is "~iis" (compiled in constant) and the programmer's directory is "~kobus" (another compiled in constant). Then the following files are tried in the order listed.
The file name actually used is put into the buffer config_file_name whose size must be passed in via max_len; The flourescent database *fl_db_ptr_ptr is created or resized as necessary. If file_name is the special name "off" (or "none" or "0"), then the above does not apply. In this case, *fl_db_ptr_ptr is freed and set to NULL.


The form of the flourescent database file is a header of the form:
        #! t=fluorescent_db c=<num_fluorescent_surfaces>
Followed by <num_fluorescent_surfaces> groups of spectra. Each group of spectra must be started with the spectra header, and end with the special soft end of file:
        #! eof
(Note that the "#" is resettable by the user option "comment-char", and the "!" is resettable by the user option "header-char"). Each group of spectra must contain an even number of spectra which are the spectra of an illuminant, followed by a spectra of the response of the given fluorescent surface to that illuminant. A reasonable number of relatively different illuminat spectra are required to adequately characterize a fluorescent surface.


This software is not adequatedly tested. It is recomended that results are checked independantly where appropriate.


Kobus Barnard


Kobus Barnard


create_fluorescent_database , free_fluorescent_database , get_target_fluorescent_database , read_fluorescent_database , write_fluorescent_database