================
MWRpy processing
================
In this tutorial `MWRpy `_ products are generated from raw data, including
quality control and visualization. This example utilizes files taken from the ACTRIS site
`Hyytiala `_:
- RPG microwave radiometer:
- Brightness temperatures: `230406.BRT `_
- Housekeeping data: `230406.HKD `_
- Elevation scans: `230406.BLB `_
- Weather station: `230406.MET `_
- Infrared radiometer: `230406.IRT `_
.. note::
.BRT and .HKD files are mandatory in MWRpy for processing
Level 1c
~~~~~~~~~
First we convert RPG microwave radiometer (MWR) binary files, including brightness temperature (TB) and
housekeeping data (\*.BRT, \*.HKD), into a Level 1c netCDF file. Data from optional elevation scans (\*.BLB, \*.BLS),
weather station (\*.MET) and infrared radiometer (\*.IRT) are combined in this process and the following quality
flags are derived:
- Bit 1: missing_tb
- Bit 2: tb_below_threshold
- Bit 3: tb_above_threshold
- Bit 4: spectral_consistency_above_threshold
- Bit 5: receiver_sanity_failed
- Bit 6: rain_detected
- Bit 7: sun_moon_in_beam
Quality flags are stored as bits and Bit 1-3 include checks for missing brightness temperature values and their valid
range (2.7 - 330 K). The spectral consistency flag (Bit 4) compares measured and retrieved TB. For this flag, it is
expected to have the corresponding RPG retrieval coefficient file (``SPC*.RET``) in
``/mwrpy/site_config/{site}/coefficients/``. Data from HKD files are used to determine the stability of the receiver
components (Bit 5). The sensor from the attached weather station detects rain for quality Bit 6 and the sun and moon
orbits are calculated and compared to the measurement geometry to detect potential interferences (Bit 7). A quality
flag status variable contains information whether the flag is active.
.. code-block:: python
import os
from mwrpy.level1.write_lev1_nc import lev1_to_nc
SITE = "hyytiala"
PACKAGE_DIR = os.getcwd()
DATA_DIR = f"{PACKAGE_DIR}/tests/data/{SITE}"
mwr_raw = lev1_to_nc(
"1C01",
DATA_DIR,
site=SITE,
output_file="mwr_1c.nc",
)
The data format of the generated ``mwr_1c.nc`` file, including metadata information and variable names, is
compliant with the data structure and naming convention developed in the EUMETNET Profiling Programme
`E-PROFILE `_.
Variables such as brightness temperature can be plotted from the newly generated file.
.. code-block:: python
import os
from mwrpy.plots.generate_plots import generate_figure
PACKAGE_DIR = os.getcwd()
generate_figure('mwr_1c.nc', ['tb'], save_path=f"{PACKAGE_DIR}/")
.. figure:: _static/20230406_hyytiala_tb.png
Level 2 Single Pointing
~~~~~~~~~~~~~~~~~~~~~~~
Based on the Level 1c netCDF file ``mwr_1c.nc``, MWR single pointing data are extracted
and product specific retrieval coefficients (``LWP*.RET``, ``IWV*.RET``, ``TPT*.RET``, ``HPT*.RET``, ``STA*.RET``)
are applied to generate the Level 2 single pointing product:
.. code-block:: python
from mwrpy.level2.lev2_collocated import generate_lev2_single
mwr_prod = generate_lev2_single("hyytiala", "mwr_1c.nc", "mwr-single.nc")
Variables such as integrated water vapor
(`IWV `_)
can be plotted from the newly generated file.
.. code-block:: python
import os
from mwrpy.plots.generate_plots import generate_figure
PACKAGE_DIR = os.getcwd()
generate_figure('mwr-single.nc', ['iwv'], save_path=f"{PACKAGE_DIR}/")
.. figure:: _static/20230406_hyytiala_iwv.png
Level 2 Multiple Pointing
~~~~~~~~~~~~~~~~~~~~~~~~~
Based on the Level 1c file, MWR multiple pointing data (elevation scans) are extracted
and product specific retrieval coefficients (``TPB*.RET``) are applied to generate the Level 2 multiple pointing
product:
.. code-block:: python
from mwrpy.level2.lev2_collocated import generate_lev2_multi
mwr_prod = generate_lev2_multi("hyytiala", "mwr_1c.nc", "mwr-multi.nc")
Variables such as temperature profiles can be plotted from the newly generated file.
.. code-block:: python
import os
from mwrpy.plots.generate_plots import generate_figure
PACKAGE_DIR = os.getcwd()
generate_figure('mwr-multi.nc', ['temperature'], save_path=f"{PACKAGE_DIR}/")
.. figure:: _static/20230406_hyytiala_temperature.png
Command line usage
~~~~~~~~~~~~~~~~~~
After defining the instrument type and site specific configuration files (including input/output data paths) in
``mwrpy/site_config/``, MWRpy can also be run using the command line tool `mwrpy/cli.py`:
.. code-block::
mwrpy/cli.py [-h] -s SITE [-d YYYY-MM-DD] [--start YYYY-MM-DD]
[--stop YYYY-MM-DD] [-p ...] [{process,plot}]
.. list-table:: Arguments
:widths: 10 20 20 50
:header-rows: 1
* - Short
- Long
- Default
- Description
* - `-h`
- `--help`
-
- Show help and exit.
* - `-s`
- `--site`
-
- Site to process data from, e.g, `hyytiala`. Required.
* - `-d`
- `--date`
-
- Single date to be processed. Alternatively, `--start` and `--stop` can be defined.
* -
- `--start`
- `current day - 1`
- Starting date.
* -
- `--stop`
- `current day`
- Stopping date.
* - `-p`
- `--products`
- 1C01, single, multi
- Processed products, e.g, `1C01, 2I02, 2P03, single`, see Data Types below.
.. list-table:: Commands
:widths: 20 30
:header-rows: 1
* - Command
- Description
* - `process`
- Process data and generate plots (default).
* - `plot`
- Only generate plots.
* - `no-plot`
- Only generate products.
* - `reprocess`
- Like `process`, but skips days when data processing fails.
Data Types
~~~~~~~~~~
Level 1
- 1B01: MWR brightness temperatures from .BRT and .BLB/.BLS files + retrieved spectrum
- 1B11: IR brightness temperatures from .IRT files
- 1B21: Weather station data from .MET files
- 1C01: Combined data type with time corresponding to 1B01
Level 2
- 2I01: Liquid water path (LWP)
- 2I02: Integrated water vapor (IWV)
- 2I06: Stability Indices
- 2P01: Temperature profiles from single-pointing observations
- 2P02: Temperature profiles from multiple-pointing observations
- 2P03: Absolute humidity profiles
- 2P04: Relative humidity profiles (derived from 2P01/2P02 + 2P03)
- 2P07: Potential temperature (derived from 2P01/2P02 + 2P03)
- 2P08: Equivalent potential temperature (derived from 2P01/2P02 + 2P03)
- single: Single pointing data product (including 2I01, 2I02, 2I06, 2P01, 2P03, and derived products)
- multi: Multiple pointing data product (including 2P02, and derived products)