The current example consists of a sequence of 4 MORSE runs.
| L2 Sequence | ||||
|---|---|---|---|---|
| Stage | Inputs | Driver File | Outputs | Description |
| 1 | hsdi.l1c | morse_hsdi_pt.drv | hsdi_pt.rtv | HSDI pT-pointing retrieval |
| hsdi_pt.orb | ||||
| 2 | hsdi.l1c | morse_hsdi_aer01.drv | hsdi_aer01.rtv | HSDI_01 (802nm) aerosol extinction |
| hsdi_pt.orb | ||||
| 3 | hiros.l1c | morse_hiros_pt.drv | hiros_pt.rtv | HIROS pT-pointing-H2O retrieval |
| hsdi_pt.orb | hiros_pt.orb | |||
| 4 | hiros.l1c | morse_hiros_ch4.drv | hiros_ch4.rtv | HIROS CH4 retrieval, with Averaging Kernel |
| hiros_pt.orb | hiros_ch4.avk | |||
which will expand the contents into a sub-directory (ie folder) ./l2 containing files and software.tar -xzf l2.tar.gz
| L2 Pre-processing IDL Modules | |||
|---|---|---|---|
| Type | HSDI | HIROS | Description |
| Processing | l1c_hsdi.pro | l1c_hiros.pro | Top level L1C Pre-processors |
| Auxiliary | read_l1b_hsdi.pro | read_l1b_hiros.pro | Functions to read L1B files |
| Auxiliary | ymd.pro | Convert Julian Day# to YYYYMMDD | |
| Auxiliary | hms.pro | Convert Milliseconds to HHMMSS | |
| L2 Post-processing IDL Modules | |||
| Type | HSDI | HIROS | Description |
| Processing | make_l2.pro | Convert MORSE .rtv output to netCDF | |
| Auxiliary | read_rtv.pro | Function to read MORSE .rtv or .orb file | |
| Auxiliary | read_avk.pro | Function to read MORSE .avk file | |
| Auxiliary | read_l2.pro | Function to read MORSE L2 netCDF file | |
| L2 Pre-processing IDL Modules | |||
|---|---|---|---|
| Type | HSDI | HIROS | Description |
| Processing | l1c_hsdi.py | l1c_hiros.py | Top level L1C Pre-processors |
| Auxiliary | 11b_hsdi_class.py | l1b_hiros_class.py | Data and Methods for instrument L1B file |
| L2 Post-processing IDL Modules | |||
| Type | HSDI | HIROS | Description |
| Processing | make_l2.py | Convert MORSE .rtv output to netCDF | |
| Auxiliary | read_rtv.py | Function to read MORSE .rtv or .orb file | |
| Auxiliary | l2_class.py | Data and Methods for L2 netCDF file | |
| Level 2 Processing Files | |||
|---|---|---|---|
| Type | HSDI | HIROS | Description |
| Configuration | morse_hsdi_pt.drv [FMT] | morse_hiros_pt.drv [FMT] | MORSE Driver Files |
| morse_hsdi_aer01.drv [FMT] | morse_hiros_ch4.drv [FMT] | ||
| Input | [FMT] | hiros.l1b [FMT] | L1B files (examples from Instrument Bypass) |
| Auxiliary | hgt_std.atm [FMT] | MORSE internal altitude grid | |
| Auxiliary | equ.atm [FMT] | Climatology profile | |
| Auxiliary | aerosol.atm [FMT] | Aerosol extinction profile | |
| Auxiliary | hiros_mw.lst [FMT] | HIROS microwindow list | |
| Auxiliary | hiros.fov [FMT] | Field-of-View data | |
| Auxiliary | (eg) HSDI_06.grd [FMT] | Irregular spectral grid | |
| Auxiliary | (eg) HSDI_01.srf [FMT] | hiros.ils [FMT] | Spectral convolution data |
| Auxiliary | hitran_2016.bin [FMT] | HITRAN binary file (not supplied) | |
| Auxiliary | (eg) tab_HSDI_06h2o.asc [FMT] | Look-Up Table of absorption coefficients | |
| Intermediate | hsdi.l1c [FMT] | hiros.l1c [FMT] | L1C Pre-Processor files |
| Intermediate | hsdi_pt.orb [FMT] | hiros_pt.orb [FMT] | MORSE profile outputs |
| Diagnostic | morse_hsdi_pt.log [FMT] | morse_hiros_pt.log [FMT] | MORSE log files |
| Diagnostic | morse_hsdi_aer01.log [FMT] | morse_hiros_ch4.log [FMT] | MORSE log files |
| Intermediate | hsdi_pt.rtv [FMT] | hiros_pt.rtv [FMT] | MORSE state vector outputs |
| Intermediate | hsdi_aer01.rtv [FMT] | hiros_ch4.rtv [FMT] | MORSE state vector outputs |
| Output | hiros_ch4.avk [FMT] | CH4 Averaging Kernel | |
| Output | hsdi_pt.nc [FMT] | hiros_pt.nc [FMT] | L2 outputs |
| Output | hsdi_aer01.nc [FMT] | hiros_ch4.nc [FMT] | L2 outputs |
| L1C Pre Processor Arguments | |||
|---|---|---|---|
| Argument | Type | Value | Description |
| | Positional | String | Name of L1B Input file |
| | Positional | String | Name of L1C Output file |
| | Keyword | Float | Minimum Altitude [km] |
| | Keyword | Float | Maximum Altitude [km] |
| | Keyword | StrArr | List of selected HSDI channels |
Notes
A detailed description of the format of these driver files can be found on the [MORSE web-page] but for the E2E sample runs used here, a summary of the configuration parameters are as follows.
| MORSE Driver File | ||
|---|---|---|
| Section | Field | Description |
| Mandatory sections, in this order | ||
| *HDR | [Text] | Up to 79 characters of descriptive text |
| *FLG | CTM | Use molecular continua (eg H2O) |
| INF | Include Information Content diagnostics in .rtv file output | |
| RES | Include vertical resolution scale factors in .rtv file output | |
| MOV | Allow for moving tangent point during scan (HIROS only) | |
| REX | Use Rayleigh extinction (HSDI only) | |
| *L1C | hsdi.l1c | Name of L1C input file (HSDI) |
| hiros.l1c | Name of L1C input file (HIROS) | |
| *ALT | hgt_std.atm | Internal altitude grid |
| *RTV | 11:36 | Indices of internal altitude grid for retrieved products (here 10–50 km) |
| TEM | Retrieve Temperature profile | |
| REFPRE | Retrieve Reference Pressure | |
| POI | Retrieve Pointing correction profile | |
| H2O, CH4 | Retrieve H2O, CH4 profiles (HIROS) | |
| Aerosol | Retrieve Aerosol Extinction profile (HSDI) | |
| *MIC | hiros_mw.lst | File containing list of microwindows and absorbers (HIROS) |
| eg HSDI_06 | Filter to be used (HSDI) | |
| eg o2 | Absorber to be included with filter (HSDI) | |
| altmin=10 | (optional) mininum altitude cut-off for filter | |
| altmax=50 | (optional) maximum altitude cut-off for filter | |
| *ATM | equ.atm | Climatological atmospheric profile |
| aerosol.atm | Climatological aerosol extinction profile (HSDI) | |
| hsdi_pt.orb | Input pT-pointing profile from HSDI retrieval | |
| hiros_pt.orb | Input pT-pointing profile from HIROS retrieval | |
| *SRF | ./srf/#MIC.srf | Spectral Response Function files (#MIC is token for filter labels from *MIC section) (HSDI) |
| *ILS | hiros.ils | Instrument Line Shape file (HIROS) |
| *FOV | * | δ-fn field-of-view (HSDI) |
| hiros.fov | Field-of-view file (HIROS) | |
| Optional sections, in any order | ||
| *HIT | hitran_2016.bin | HITRAN binary file |
| *CNV | CHILIM=1.0 | Convergence when Chi-sq ≤ 1 |
| *OUT | eg RTVFIL=hsdi_pt.rtv | Output product types (RTV,ORB,AVK) and filenames |
| *FIN | 0.005 | Spectral resolution [cm-1] for forward model calculations (HSDI) |
| *LUT | ./lut/tab_#MIC#GAS.asc | LUT filename template (HSDI) |
| *GRD | ./grd/#MIC.grd | Irreg. grid filename template (HSDI) |
| *END | End of driver file marker | |
Most of these parameters are expected to be static, ie not changed between different runs, so the same driver files can be re-used. Even where filenames have to be changed, this can also be performed externally to the driver file via symbolic links. However for certain tests, eg changing the retrieval grid or convergence criteria, a different driver file will be required.
| make_l2 Postprocessor Arguments | |||
|---|---|---|---|
| Argument | Type | Value | Description |
| | Positional | String | Name of MORSE .rtv Input file |
| | Positional | String | Name of L2 netCDF Output file |
These procedures use other IDL modules (in the ./l2 directory) which should be picked up automatically if present in the same directory.
Simple version for HIROS:
More complicated version for HSDI using optional keyword arguments
Note the use of the '$' character to continue the list of L1C_HSDI arguments to a second line. In this case, only HSDI channels 06 and 07 are passed to the L1C output file, and only pixel altitudes 5km and above. IDL allows keyword arguments to be supplied in any order, and keywords can be upper or lower case.
The above should only take a second or two, and recreate files
The Python functions can be run interactively in a similar way, or directly from the terminal (see edited-out examples in the last line of the code).
These take of the order of 10s of minutes to run.
The messages starting 'R-MORSE: ...' and 'I-MORSE: ...' are printed to the
terminal by the program. Any fatal error will produce a message starting
'F-MORSE: ...' with some text describing the error, and the file
Depending on the driver file, this should recreate files *.rtv, *.orb, and/or *.avk.
| 05AUG24 | New HIROS L1B format and Python code |
| 22FEB24 | Link to new version of MORSE (v19JAN24) - uncorrelated HIROS noise. |
| 15SEP23 | Code modifications to handle HIROS drift and fix bug with geometric altitudes. New MORSE and modified HIROS driver files (add MOV flag). |
| 19OCT22 | Corrected LUTs for HSDI_16 |
| 26SEP22 | New version of MORSE and 4-stage sequence |
| 06SEP22 | Reformat this web-page |
| 08AUG22 | Add HSDI LUTs and return to actual filters eg HSDI_06 |
| 05AUG22 | new version of MORSE |
| 03AUG22 | new version of MORSE |
| 18JUL22 | new version of MORSE |
| 06JUL22 | new version of MORSE |
| 07JUN22 | updated hiros.fov, hiros.ils, morse_hiros.drv. Modified read_l1b_hiros.pro, l1c_hiros.pro. New MORSE source code |
| 01JAN22 | Original. |