Iberonesia configuration

From WikiNesia

Jump to: navigation, search

Contents

Calibración de ozono en la base de datos

Introducción

Introducir la calibración es el único proceso exclusivo del administrador, tanto de la base de datos como del sistema iberonesia.

Los programas que gestionan la base de datos están en Perl y Matlab, y aunque no es necesario su conocimiento, si es recomendable. Los más usados se encuentran en el directorio /data/bin. Todas las fuentes están alojadas en los directorios /home/admin/projects/….

La documentación sobre su uso se encuentra en comentarios al programa. Tener la precaución de abrirlos como solo lectura para no modificarlos accidentalmente.

Calibración de los datos de ozono

Para introducir una calibración en la base de datos necesitaremos dos ficheros para cada brewer:

  1. El fichero de configuración instrumental ICFJJJAA.NNN (JJJ es el día Juliano, AA el año y NNN el número del instrumento)
  2. El fichero de configuración de la evaluación de datos del programa o3brewer (software de Martin Stanek) correspondiente, o3brewer.iXX

El primero se proporciona durante las calibraciones del instrumento (Tabla 1); el segundo se genera mediante el programa o3brewer (Tabla 2). Consultar el Apéndice I para una guía de como obtener estos ficheros.

Ficheros icf

Los valores de las constantes instrumentales del brewer se encuentran en los ficheros ICFJJJAA.NNN, con fecha la de calibración (o bien con fecha cercana a ésta). El contenido del fichero ICF también se copia en la cabecera de los ficheros B según el contenido del op_st.NNN (Operating State file).


Tabla 1
Formato del fichero ICF (para brewer monocromador)   Estructura de la tabla icf_t
# Example Name   Field Type Null Key Default
1 0 Ozone temperature coefficient for slit 1 id int(11) PRI 0
2 -.2473 Ozone temperature coefficient for slit 2 brewerid int(11) YES MUL NULL
3 -.6914 Ozone temperature coefficient for slit 3 oslit1 int(11) YES NULL
4 -.6902 Ozone temperature coefficient for slit 4 oslit2 double YES NULL
5 -.2794 Ozone temperature coefficient for slit 5 oslit3 double YES NULL
6 0 Micrometer steps per degree oslit4 double YES NULL
7 .3446 Ozone on ozone ratio oslit5 double YES NULL
8 2.35 SO2 on SO2 ratio mstep double YES NULL
9 1.1533 Ozone on SO2 ratio o3o3rate double YES NULL
10 1690 ETC on ozone ratio so2so2rate double YES NULL
11 215 ETC on SO2 ratio o3so2rate double YES NULL
12 4E-08 Dead time (seconds) etco3rate double YES NULL
13 286 Wavelength calibration step number etcso2rate double YES NULL
14 14 Slit mask motor delay deadtime double YES NULL
15 1688 Umkehr offset wstepn double YES NULL
16 0 Neutral density of filter 0 (divide by 10e4 to get attenuation) motordelay int(11) YES NULL
17 5000 Neutral density of filter 1 (divide by 10e4 to get attenuation) uoffset int(11) YES NULL
18 10000 Neutral density of filter 2 (divide by 10e4 to get attenuation) nfilter0 int(11) YES NULL
19 15000 Neutral density of filter 3 (divide by 10e4 to get attenuation) nfilter1 int(11) YES NULL
20 20000 Neutral density of filter 4 (divide by 10e4 to get attenuation) nfilter2 int(11) YES NULL
21 25000 Neutral density of filter 5 (divide by 10e4 to get attenuation) nfilter3 int(11) YES NULL
22 2972 Zenith motor steps per revolution nfilter4 int(11) YES NULL
23 Mkii Brewer model type nfilter5 int(11) YES NULL
24 1 COM port number zenithmotor int(11) YES NULL
25 0 ozone temperature coefficient for mercury exit slit brewer_model varchar(255) YES NULL
26 - Not Used com_port int(11) YES NULL
27 - Not Used o3tempcoef int(11) YES NULL
28 - Not Used no2eslit double YES NULL
29 - Not Used no2slit1 double YES NULL
30 - Not Used no2slit2 double YES NULL
31 - Not Used no2slit3 double YES NULL
32 2310 ozone micrometer #1 offset no2slit4 double YES NULL
33 - Not Used no2eslit5 double YES NULL
34 - Not Used o3micro1 double YES NULL
35 - Not Used unused int(11) YES NULL
36 - Not Used o3wheel3 double YES NULL
37 - Not Used no2abcoef int(11) YES NULL
38 - Not Used no2dsetc double YES NULL
39 - Not Used no2zsetc double YES NULL
40 - Not Used no2microff double YES NULL
41 .998 grating slope no2wheel3 double YES NULL
42 1.901 grating intercept o3no2dist double YES NULL
43 2469 Micrometer zero position gslope double YES NULL
44 250 number of motor steps to open iris ginter double YES NULL
45 0.8 Computer buffer delay (larger numbers for faster computers) mzeropos double YES NULL
46 - Not Used mopeniris int(11) YES NULL
47 256 Ozone filterwheel #1 position bufferdelay int(11) YES NULL
48 0 Filterwheel #2 position no2wpos double YES NULL
49 64 UV filterwheel #2 position o3wpos double YES NULL
50 40 Steps from zenith sensor to the hard stop f2wpos int(11) YES NULL
51 2223 Zenith UV position uvwpos int(11) YES NULL
52 1 Jan 99 Release Date szenith int(11) YES NULL
53     zuvpos int(11) YES NULL
54     rdate int(11) YES NULL


Los ficheros de calibración se introducen en la base de datos mediante el programa parse_icf.pl. El programa comprueba que el fichero es correcto sintácticamente y añade los datos a la tabla icf_t, de estructura similar (ver Tabla 1. Notar los campos adicionales id y brewerid al inicio).

admin@ozone3:~$ perl /data/include/parse_icf.pl
Uso: parse_icf.pl -f <filename> [-o <operation>]
    -o : operación a realizar.
        o = 0 : comprobación de sintaxis.
        o = 1 : inserta en la base de datos.
        o = 2 : borra el contenido previo de la base de datos.
        o = 3 : borra el contenido previo de la base de datos e inserta
        Si no se especifica parámetro operación, se realiza por defecto una comprobación de sintaxis
    Ej: parse_icf.pl -f ICF26505.033 -o 1

Ficheros o3brewer

No toda la información necesaria para evaluar los datos de ozono está en el icf; como ejemplo, el valor de la lámpara estándar de referencia requerida para corrección de SL (este valor también se facilita una vez realizada la calibración). Este y otros parámetros del proceso automático de datos son los que se aportan con el fichero o3brewer.iXX. El script parse_config.pl comprueba que sintácticamente el fichero es correcto, y en el caso de que todo esté bien llevará los datos a la BBDD (config_t, ver Tabla 2).

admin@ozone3:~$ perl /data/include/parse_config.pl
Uso: parse_config.pl -f <filename> [-t] [-i] [-d <date>]
        -t : comprobación exhaustiva de fichero
        -i : se inserta en la base de datos (implica -t)
        -r : borra el fichero de la base de datos (desactiva -t y -i)
        -d <date> : asocia la configuración al fichero icf con fecha dada en formato YYYY-MM-DD
        Sin los parámetros -t y -i, sólo se realiza una comprobación de sintaxis del fichero
Tabla 2
Estructura de la tabla config_t
# Field Type Null Key Default # Field Type Null Key Default
1 id int(11) PRI 0 43 sl_r6 double YES NULL
2 brewerid int(11) YES MUL NULL 44 sl_no2 double YES NULL
3 date date YES MUL NULL 45 interval_scale double YES NULL
4 icf_id int(11) YES MUL NULL 46 be2 double YES NULL
5 o3ds tinyint(1) YES NULL 47 be3 double YES NULL
6 o3zs tinyint(1) YES NULL 48 be4 double YES NULL
7 o3fz tinyint(1) YES NULL 49 be5 double YES NULL
8 o3fm tinyint(1) YES NULL 50 be6 double YES NULL
9 no2ds tinyint(1) YES NULL 51 af0 double YES NULL
10 no2zs tinyint(1) YES NULL 52 af1 double YES NULL
11 no2fm tinyint(1) YES NULL 53 af2 double YES NULL
12 o3ds_maxstd double YES NULL 54 af3 double YES NULL
13 o3zs_maxstd double YES NULL 55 af4 double YES NULL
14 o3fz_maxstd double YES NULL 56 af5 double YES NULL
15 o3fm_maxstd double YES NULL 57 etc0 double YES NULL
16 no2ds_maxstd double YES NULL 58 etc1 double YES NULL
17 no2zs_maxstd double YES NULL 59 etc2 double YES NULL
18 no2fm_maxstd double YES NULL 60 etc3 double YES NULL
19 mu_ds int(11) YES NULL 61 etc4 double YES NULL
20 mu_fz int(11) YES NULL 62 etc5 double YES NULL
21 mu_fm int(11) YES NULL 63 agency varchar(32) YES NULL
22 mu_no2 int(11) YES NULL 64 version varchar(32) YES NULL
23 hh_ds int(11) YES NULL 65 authority varchar(32) YES NULL
24 mu_ds_max double YES NULL 66 name varchar(32) YES NULL
25 mu_ds_min double YES NULL 67 country varchar(32) YES NULL
26 mu_fz_max double YES NULL 68 gaw_id varchar(32) YES NULL
27 mu_fz_min double YES NULL 69 go3s varchar(32) YES NULL
28 mu_fm_max double YES NULL 70 instrument_model varchar(32) YES NULL
29 mu_fm_min double YES NULL 71 utc_offset varchar(32) YES NULL
30 mu_no2_max double YES NULL 72 latitude double YES NULL
31 mu_no2_min double YES NULL 73 longitude double YES NULL
32 hh_ds_max double YES NULL 74 height double YES NULL
33 hh_ds_min double YES NULL 75 wl_code tinyint(1) YES NULL
34 recal_ds int(11) YES NULL 76 obs_code tinyint(1) YES NULL
35 recal_zs int(11) YES NULL 77 column_o3 tinyint(1) YES NULL
36 recal_no2ds int(11) YES NULL 78 stdev_o3 tinyint(1) YES NULL
37 recal_no2zs int(11) YES NULL 79 utc_begin tinyint(1) YES NULL
38 sl_o3_cor int(11) YES NULL 80 utc_end tinyint(1) YES NULL
39 sl_no2_cor int(11) YES NULL 81 utc_mean tinyint(1) YES NULL
40 sl_fit_cor int(11) YES NULL 82 n_obs tinyint(1) YES NULL
41 sl_recal_cor int(11) YES NULL 83 m_mu tinyint(1) YES NULL
42 sl_r5 double YES NULL 84 column_so2 tinyint(1) YES NULL



Las tablas config_t e icf_t se hallan vinculadas mediante el campo config_t.icf_id (#4). Por la tanto, para garantizar que ambas están emparejadas de modo correcto, es importante que las fechas de los dos ficheros de entrada, o sea, los analizados por los parser, sean las mismas. Actualmente, esto se ha solucionado mediante la opción -d del parse_config.pl.

Script brewer_o3cfg_mym.m

El proceso de evaluación de datos en Iberonesia obtiene la calibración mediante la rutina de matlab brewer_o3cfg_mym.m

% function brewer_o3cfg_mym
% function [R6_ref,ABSX,ETC,woudc_,sigma,airm_range,proc_flag]=brewer_o3cfg_mym(brewer,fecha)
%  Retorna la configuracion mas cercana flag
% 1º Busca la tabla config_t, con fecha mas cercana del brewer -> se introduce mediante la rutina 
%    parse_config.pl usando la configuración del o3brewer 
% 2º La tabla config_t apunta a un fichero de configuracion ICF guardado en una tabla icf
%    si este no existe lee las contantes del fichero B
% 3º Si  No existe config_t, leemos la configuracion por defecto (BREWER INI)
%   
%   function [R6_ref,ABSX,ETC,woudc_,sigma,airm_range,proc_flag]=brewer_o3cfg_mym(brewer,fecha
%
%   proc_flag
% 
%   1  Configuracion obtenida del fichero de configuracion config_t
%   2  Configuacion del fichero config t + inst_t del propio fichero b
%   3  Configuacion
% 
%    Errores
% -1 Error el fichero apuntado no existe-> o existe un error (no tiene cabecera el fichero B)
% -2 Error grave, el fichero de configuracion apunta a un icf_t que no existe.

La rutina busca primero si la tabla config_t existe para este brewer y elige la calibración más cercana al la fecha del fichero. En un segundo paso obtiene la configuración instrumental de icf_t, si no existe utiliza la copia que existe en la cabecera del los ficheros B. Si no existe la tabla config_t, utiliza los valores por defecto que se encuentran en la rutina brewer_ini.m

Cofiguracion por defecto, el fichero Brewer_ini.m

El fichero brewer_ini.m contenía la configuración de la red brewer en la antigua web, ahora su uso es obsoleto y desarrollar programas que hagan uso de esta informacion está totalmente desaconsejado. Se mantuvo para facilitar la transicion entre el anterior diseño y el actual, siendo ahora su único uso el de almacenar los valores por defecto de la configuración.

Pasos para introducir la nueva calibracion

  1. Obtener los ficheros ICFJJJYY.NNN y o3brewer.iXX. Es recomendable que el fichero o3brewer.ixx no supere las 100 líneas. Esto es debido a que las nuevas versiones de la aplicación o3brewer añaden nuevos campos al fichero de configuración (para medidas de aerosoles, principalmente). Sin embargo, el script parse_config.pl está diseñado con la versión antigua.
  2. Acceder como administrador a Iberonesia.net, e ir a Administrador → Brewers (ver figura siguiente)
  3. Seleccionar el Brewer y añadir los ficheros correspondientes. El campo date se corresponde con la fecha del fichero ICF, pero en formato yyy-mm-dd (esto equivale a la opción –d del script parse_config.pl)
  4. Comprobar, consultando la base de datos, o bien matlab, que todo se ha realizado correctamente (con matlab, usando la rutina brewer_o3cfg_mym.m que devuelve en la variable proc_flag que configuracion usa y un código de error)


Personal tools