ESA.instrument.err_file_m
index
/home/lfeng/otool/ESA/instrument/err_file_m.py

Functions for reading  observation errors from text  file 
 
Authors: L. Feng, Edinburgh University
History: v0.9, 2012.06.28
History: v0.95, 2013.02.19
 
 
Functions
=================================================
# file and data access
 
1. get_err_column_name:  check names of columns in ERR file
2. get_err_surface_type: check names of surface types
 
3. aod_rescale: rescale AOD axis if necessary 
 
4. open_err_file: set up class file_desc_cl for file access
5. read_err_file: read ERR  data into class file_desc_cl
6. close_err_file: delete class file_desc_cl
 
 
# file (dataset) manage
 
7. get_err_file_ref: check file reference
8. get_err_viewmode_id: get viewmode ID
9. get_err_viewmode: get viewmode from ID 
10. get_err_surf_type: get surface type defined in err file 
11. decode_err_ref: decode file reference for eerr files
12. add_err_data: add err data to data list

 
Modules
       
ESA.util.message_m
numpy
ESA.util.otool_grdfile_io
ESA.util.otool_obj
ESA.util.time_module

 
Functions
       
add_err_data(fdesc, ref, **keywords)
Add err data to fdesc
 
Inputs:
=====================================
1. fdesc:<grdfile_io_cl>: class for file access
2. ref:<str/numeric>: reference for data sets read from file 
3. keywords:<dict>: extra parameters
----Reserved words
--->'err_viewmode_dict':<dict>: dictionary for view mode
--->'err_surf_type_dict': <dict>: dictionary for surface type
---> ax_colnm_lst: <list, t:str>: column name for horizontal axis
--->zname: <str>: axis name for vertical (i.e, aod) axis
--->zval: <array, (nz,)>: vertical axis
--->'replaces': <dict>: words to be replaced when decoding line 
 
 
Returns:
=====================================
1. idx:<int>: index of the data set with reference =ref.
aod_rescale(grd, aod_axnm='aod', scale_factor=1.0)
rescaling aod axis in a grid 
 
 
Inputs:
----------------------------------------------
1. grd:<gp_grid_cl>: grid 
2. aod_axnm:<str>: axis name
3. scale_factor:<float>: scaling factor
 
Returns:
------------------------------------------
1. grd:<gp_grid_cl>: grid after axis aod is re-scaled
close_err_file(fdesc)
Close fdesc file 
 
Inputs:
--------------------------------------------------
1. fdesc:<file_desc_cl>: class for file access
 
Returns:
1. None
decode_err_ref(ref, **keywords)
decode file reference for observation error files
 
Inputs:
----------------------------------------------------
1. ref:<int>: reference number 
2. keywords:<dict>: additional inputs 
---reserved words
--->'err_viewmode_dict':<dict>: dictionary for view mode
--->'err_surf_type_dict': <dict>: dictionary for surface type
 
 
 
Returns:
------------------------------------------------------
1. surface_type:<str>: surface type 
2. viewmode:<str>: view mode
get_err_column_name()
check column names defined in error  
    
Returns
---------------------------------------
1. fl_colnm_lst:<list, str>: name of columns in file
get_err_data(fdesc, osza, oaod, iviewmode, isurf_type, **keywords)
Read cloud data at given point 
 
Inputs:
----------------------------------------------
1. fdesc:<grdfile_io_cl>: file access 
2. osza:<array, (nob,)>: solar zenith angles of observation
3. oaod:<array, (nob,)>: aerosol optical depth 
 
4. iviewmode:<int/array>: view mode ID (see Note 1)
5. isurf_type:<int/array>:  surface type ID (see Note 1)
6. keywords:<dict>: extra inputs
 
---Reserved Entries
---common_ref:<str/numeric>: the reference shared by observations. 
--->'err_viewmode_dict':<dict>: dictionary for view mode
--->'err_surf_type_dict': <dict>: dictionary for surface type
---> ax_colnm_lst: <list, t:str>: column name for horizontal axis
---> zname: <str>: axis name for vertical (i.e, aod) axis
---> zval: <array, (nz,)>: vertical axis 
--->'replaces': <dict>: words to be replaced when decoding line 
 
Returns:
------------------------------------------------
1. err:<array, (nob)>: error at  (osza, oaod)
 
 
Notes:
---------------------------------------------
1. if iviewmode and isurf_type are either given as a single integer or  
an array of the same size of osza
get_err_file_ref(iviewmode, isurf_type, **keywords)
check file reference for observation errors
 
 
Inputs:
----------------------------------------------------
1. isurf_type:<int/array>: type of surface 
---type includes: 
2. iviewmode: <int/array>: view model 
 
3. keywords:<dict>: extra information
 
Returns:
------------------------------------------------------
1. ref:<int/array>: reference number 
 
Notes:
---------------------------------
1, ref_no=1000*iviewmode+isurf_type
get_err_surf_type(isurf_type, **keywords)
Get surface type 
 
 
Inputs:
---------------------------------------------------------
 
1. iviewmode:<int>: ID for view mode 
2. keywords:<dict> extra inputs
 
---reserved keywords: 
---> 'err_surf_type_dict':<dict>: surface type for documented observation errors. 
 
 
Returns:
------------------------------------------------------------
1. surf_type:<str>: the matched surface_type
get_err_surf_type_id(surf_type, **keywords)
Get surface type 
 
 
Inputs:
---------------------------------------------------------
 
1. surf_type:<str>: surface type 
 
2. keywords:<dict> extra inputs
 
---reserved keywords: 
---> 'err_surf_type_dict':<dict>: surface type for documented observation errors. 
 
 
Returns:
------------------------------------------------------------
1. isurf_type:<int>: the matched surface type ID
get_err_surface_type()
check surface type 
 
Returns
---------------------------------------
1. def_err_surf_type:<list, str>: name of surface types
get_err_viewmode(iviewmode, **keywords)
Get viewmode.
 
Inputs:
---------------------------------------------------------
 
1. iviewmode:<int>: ID for view mode 
2. keywords:<dict> extra inputs
 
---reserved keywords: 
---> 'err_viewmode_dict':<dict>: the view modes for documented observation errors. 
 
 
Returns:
------------------------------------------------------------
1. viewmode:<str>: the matched view mode
get_err_viewmode_id(viewmode, **keywords)
Get viewmode ID
 
Inputs:
---------------------------------------------------------
 
1. viewmode:<str>: for view mode 
2. keywords:<dict> extra inputs
 
---reserved keywords: 
---> 'err_viewmode_dict':<dict>: the view modes for documented averaging kernel. 
 
 
Returns:
------------------------------------------------------------
1. iviewmode:<Int>: the view model ID
open_err_file(flnm, datapath, viewtype, viewmode, surface, yyyy, mm, dd, **keywords)
setup fdesc for average kernal data
Inputs:
-----------------------------------------------------------
1. flnm:<str>:   name of file (reserved for future use )
2. datapath:<str>: file path
3. viewtype:<str>: instrument type 
4. viewmode:<str>: nadir or glint view
5. surface:<str>: surface type
6. yyyy: <int>: year
7. mm: <int>: month
8. dd:<int>: day 
9. keywords:<dict>: extra inputs for file reading 
----Reserved words
--->'err_viewmode_dict':<dict>: dictionary for view mode
--->'err_surf_type_dict': <dict>: dictionary for surface type
--->'fl_colnm_lst':<list, t:str>: names of all columns in the
--->'delim':<str>: splitor in observation error (text) file
 
 
 
 
 
Returns:
--------------------------------------------------------
1. fdesc:<file_desc_cl>: class for file access
read_err_file(fdesc, **keywords)
Read averaging kernel data into fdesc
 
Inputs:
--------------------------------------------------
1. fdesc:<file_desc_cl>: class for file access
2. keywords:<dict>: extra for reading file 
--- Reserved entries
--->'replaces': <dict>: words to be replaced when decoding line 
--->zname: <str>: axis name for vertical (i.e, aod) axis
--->zval: <array, (nz,)>: vertical axis
--->ax_colnm_lst:<list, t:str>: column names for 'horizontal' (such as sza) axises  
 
Returns:
-------------------------------------
1. fdesc:<grdfile_desc_cl>:class for file access (see Note 1)
 
 
Notes:
-------------------------------------
1.fdesc.grd_lst and fdesc.gdata_lst will store 1) grid; and 2) gridded data

 
Data
        def_aod_scale = 1.0
def_err_aod = array([ 0. , 0.05, 0.1 , 0.15, 0.2 , 0.25, 0.3 ])
def_err_colnm_lst = ['sza']
def_err_replaces = {}
def_err_surf_type = ['soil', 'ocean', 'snow', 'desert', 'conifer']
def_err_surf_type_dict = {'conifer': 1, 'desert': 4, 'ocean': 0, 'snow': 2, 'soil': 3}
def_err_viewmode = ['nadir', 'glint']
def_err_viewmode_dict = {'glint': 1, 'nadir': 0}
err_axis_name = ['sza']
err_data_start = 1
err_filename_format = 'xco2err_XSURFACEX.XEXTX'
err_header_start = 0
err_zname = 'aod'
err_zval = array([ 0. , 0.05, 0.1 , 0.15, 0.2 , 0.25, 0.3 ])
glc_err_stype_lst = ['conifer', 'conifer', 'conifer', 'conifer', 'conifer', 'conifer', 'conifer', 'conifer', 'conifer', 'conifer', 'conifer', 'conifer', 'conifer', 'conifer', 'conifer', 'soil', 'soil', 'soil', 'desert', 'ocean', ...]