Micro-Rain Radars#

Instrumentation#

The BCO is equipped with a micro-rain radar (MRR-2) and an MRR PRO from Metek.

The MRRs at the BCO sit at \(20 \, \mathrm{m}\) above mean sea level.

The MRRs are upward looking \(24 \, \mathrm{GHz}\) micro-rain radars which detect fall velocity and rain rate of hydrometeors.

All data have a temporal resolution of \(1 \, \mathrm{min}\), and the height ranges sampled are documented below. The MRRs resolve the height dimension with 31 distinct levels.

In May 2024, an MRR PRO was installed at the BCO, which measures the characteristics of hydrometeor populations at \(128\) heights from \(25 \, \mathrm{m}\) to \(6375 \, \mathrm{m}\).

Data Availability#

Datasets are available in .zarr format in the catalog. The three height range configurations for the MRR are as follows, and datasets are named according to these conventions:

  • 1: [100, 3100]

  • 2: [200, 6200]

  • 3: [35, 1085]

Note

There are very few days with configuration 3, so we currently do not provide this data in the catalog, although the package is capable of reading data with this height range.

The MRR PRO does not have multiple height range configurations.

The table below summarizes the available MRR Level 1 datasets:

Site

Key

Start

Stop

Range

BCO

BCO.mrr_c1

2015-01-16

present

[100, 3100]

CIMH

CIMH.mrr_c1

2009-12-19

2025-06-29

[100, 3100]

EMBRAPA

EMBRAPA.mrr_c2

2012-06-08

2016-02-29

[200, 6400]

MRR-PRO at BCO#

Accessible with key: BCO.mrr_pro_v1

Start

Stop

Range

2024-05-11

present

[25, 6375]

Note

The MRRs at CIMH and EMBRAPA are not currently in operation. There is a chance that the MRR at CIMH will resume operation in the future. Also, the MRR at CIMH collects data beginning 2009-12-11, but the first week of data is collected with configuration 3.

Sample Plots#

Here we plot rain rate from the MRR and MRR-PRO next to each other for the same day.

Hide code cell content

import intake
import numpy as np
import matplotlib.pyplot as plt
import xarray as xr
import matplotlib.colors as mcolors
import matplotlib.dates as mdates

def plot_rr_side_by_side(ds1, ds2):
    time1, height1, RR1, title1 = ds1.time.values, ds1.range.values, ds1.RR.values, ds1.title
    time2, height2, RR2, title2 = ds2.time.values, ds2.range.values, ds2.RR.values, ds2.title

    fig = plt.figure(figsize=(14, 6), constrained_layout=True)
    gs = fig.add_gridspec(1, 3, width_ratios=[20, 20, 1], wspace=0.05)

    ax1 = fig.add_subplot(gs[0, 0])
    ax2 = fig.add_subplot(gs[0, 1], sharey=ax1)
    cax = fig.add_subplot(gs[0, 2])

    mesh1 = ax1.pcolormesh(time1, height1, RR1.T, shading='auto', cmap='PuBu')
    ax1.set_ylabel("height above sensor (m)")
    ax1.set_title(f"{title1} - rain rate")
    ax1.xaxis.set_major_formatter(mdates.DateFormatter("%H:%M"))

    mesh2 = ax2.pcolormesh(time2, height2, RR2.T, shading='auto', cmap='PuBu')
    ax2.set_title(f"{title2} - rain rate")
    ax2.xaxis.set_major_formatter(mdates.DateFormatter("%H:%M"))

    cbar = fig.colorbar(mesh2, cax=cax)
    cbar.set_label("rain rate (mm h$^{-1}$)")

    plt.show()
# open catalog
cat = intake.open_catalog("https://tcodata.mpimet.mpg.de/catalog.yaml")

# select datasets
mrr = cat.BCO.mrr_c1(version=1).to_dask()
pro = cat.BCO.mrr_pro_v1.to_dask()

# define subset
day = slice(np.datetime64("2024-08-12"), np.datetime64("2024-08-13"))
mrr_day = mrr.sel(time=day)
pro_day = pro.sel(time=day)

# plot
plot_rr_side_by_side(mrr_day, pro_day)
/builds/tco/bco/docs/.venv/lib/python3.12/site-packages/intake_xarray/base.py:21: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.
  'dims': dict(self._ds.dims),
/builds/tco/bco/docs/.venv/lib/python3.12/site-packages/intake_xarray/base.py:21: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.
  'dims': dict(self._ds.dims),
../../_images/ab59ecd34fe0efad83309bdbfa7d5ac5ebc7f7c742bccf4439e3241b6f77dbfc.png
# full datasets
mrr
<xarray.Dataset> Size: 179GB
Dimensions:  (time: 7241307, range: 31, bin: 64)
Coordinates:
    alt      int64 8B ...
  * bin      (bin) int64 512B 0 1 2 3 4 5 6 7 8 9 ... 55 56 57 58 59 60 61 62 63
    lat      float64 8B ...
    lon      float64 8B ...
  * range    (range) float32 124B 100.0 200.0 300.0 ... 2.9e+03 3e+03 3.1e+03
  * time     (time) datetime64[ns] 58MB 2010-04-03T20:21:00 ... 2026-03-05T23...
Data variables: (12/15)
    CC       (time) int64 58MB dask.array<chunksize=(262144,), meta=np.ndarray>
    D        (time, range, bin) float32 57GB dask.array<chunksize=(256, 31, 32), meta=np.ndarray>
    DSN      (time) uint16 14MB dask.array<chunksize=(262144,), meta=np.ndarray>
    DVS      (time) uint16 14MB dask.array<chunksize=(262144,), meta=np.ndarray>
    F        (time, range, bin) float32 57GB dask.array<chunksize=(256, 31, 32), meta=np.ndarray>
    LWC      (time, range) float32 898MB dask.array<chunksize=(8192, 31), meta=np.ndarray>
    ...       ...
    RR       (time, range) float32 898MB dask.array<chunksize=(8192, 31), meta=np.ndarray>
    SVS      (time) uint16 14MB dask.array<chunksize=(262144,), meta=np.ndarray>
    TF       (time, range) float32 898MB dask.array<chunksize=(8192, 31), meta=np.ndarray>
    W        (time, range) float32 898MB dask.array<chunksize=(8192, 31), meta=np.ndarray>
    Z        (time, range) float32 898MB dask.array<chunksize=(8192, 31), meta=np.ndarray>
    Za       (time, range) float32 898MB dask.array<chunksize=(8192, 31), meta=np.ndarray>
Attributes:
    Conventions:           CF-1.12
    _logical_cutoff_date:  2026-03-06T00:00:00Z
    bcoproc_version:       0.0.0.post1174.dev0+4cf53a3
    featureType:           timeSeriesProfile
    institution:           Max Planck Institute for Meteorology, Hamburg
    license:               CC0-1.0
    location:              The Barbados Cloud Observatory (BCO), Deebles Poin...
    platform:              BCO
    source:                METEK MRR-2
    title:                 MRR Data from BCO (Level 1)
    tool_versions:         {"Python": "3.11.2 (main, Apr 28 2025, 14:11:48) [...
pro
<xarray.Dataset> Size: 401GB
Dimensions:                 (n_spectra: 128, spectrum_n_samples: 64,
                             time: 5636435, range: 128, sweep: 1)
Coordinates:
    azimuth                 (time) float32 23MB dask.array<chunksize=(262144,), meta=np.ndarray>
    elevation               (time) float32 23MB dask.array<chunksize=(262144,), meta=np.ndarray>
    lat                     float64 8B ...
    lon                     float64 8B ...
  * range                   (range) float32 512B 25.0 75.0 ... 6.375e+03
    sensor_alt              int64 8B ...
  * time                    (time) datetime64[ns] 45MB 2024-05-09T17:08:50.01...
Dimensions without coordinates: n_spectra, spectrum_n_samples, sweep
Data variables: (12/25)
    D                       (n_spectra, spectrum_n_samples) float32 33kB dask.array<chunksize=(128, 64), meta=np.ndarray>
    LWC                     (time, range) float32 3GB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    N                       (time, n_spectra, spectrum_n_samples) float32 185GB dask.array<chunksize=(256, 32, 32), meta=np.ndarray>
    PIA                     (time, range) float32 3GB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    RR                      (time, range) float32 3GB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    SNR                     (time, range) float32 3GB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    ...                      ...
    sweep_end_ray_index     (sweep) float32 4B dask.array<chunksize=(1,), meta=np.ndarray>
    sweep_mode              (sweep) |S128 128B dask.array<chunksize=(1,), meta=np.ndarray>
    sweep_number            (sweep) float32 4B dask.array<chunksize=(1,), meta=np.ndarray>
    sweep_start_ray_index   (sweep) float32 4B dask.array<chunksize=(1,), meta=np.ndarray>
    transfer_function       (range) float32 512B dask.array<chunksize=(128,), meta=np.ndarray>
    volume_number           float32 4B ...
Attributes:
    Conventions:           CF-1.12
    _logical_cutoff_date:  2026-03-06T00:00:00Z
    bcoproc_version:       0.0.0.post1185.dev0+c830e01
    featureType:           timeSeriesProfile
    institution:           Max Planck Institute for Meteorology, Hamburg
    license:               CC0-1.0
    location:              The Barbados Cloud Observatory (BCO), Deebles Poin...
    platform:              BCO
    source:                Metek MRR PRO 1.2.5
    summary:               This dataset contains profiles of reflectivity and...
    title:                 MRR PRO data from BCO (Level 1)
    tool_versions:         {"Python": "3.11.2 (main, Apr 28 2025, 14:11:48) [...