CORAL#

CORAL Raman Lidar, 3D drawing CORAL Raman Lidar, telescope from inside

The high-power lidar CORAL (Cloud Observation with Radar And Lidar) was designed for high-resolution vertical profiling of water vapor mixing ratio, air temperature, and cloud and aerosol properties. The instrument was installed with the intent to investigate fast processes driving cloud formation and interactions among the moisture field, air temperature, aerosols, and cloud droplets in the tropics. CORAL has been in operation since May 2019.

Configurations and data availability#

The processing from Level 0 to Level 1 data results in two products: slow and fast. The data in the slow product is smoothed in time over the temperature smoothing window. The fast product is smoothed in time over 2 min for low resolution and 4 sec for high resolution, the time interval of the Level 0 data.

Time series of particle backscatter coefficient, cloud mask, water vapor mixing ratio and depolarization ratio (presently not calibrated) are stored in slow files. Air temperature, water vapor mixing ratio (calculated with resolution taken for temperature profiles) and relative humidity put in fast files.

Current data availability#

Efforts to integrate all resolutions and smoothings for the whole timeline of the instrument’s operation are ongoing. As such, data from after the ORCESTRA campaign (2024-09-30) until today is processed daily and available as .zarr files in the catalog, with the follwing parameters:

  • resolution: 2 min (‘low’) or 4 sec (‘high’) referring to the resolution of pre-processed netcdfs

    • either lr or hr used in dataset name

  • smoothing of data:

    • ‘slow’: data smoothed over TODO

    • ‘fast’: data smoothing matches temporal resolution (above)

    • corresponds to s or f in dataset name

  • calibration mode, describes water vapor calibrations used for low temporal resolution data processing:

    • ‘rolling’: calibrations from previous 3 days

    • ‘renalaysis’: calibrations from previous and following 3 days

The following datasets are recommended for use:

  • BCO.lidar_CORAL_lr_s_reanalysis_c1.zarr available after 2024-09-30

  • BCO.lidar_CORAL_lr_f_reanalysis_c1.zarr available after 2024-09-30

  • BCO.lidar_CORAL_LR_t_c1_v1 from 2019-01-01 to 2023-03-17

  • BCO.lidar_CORAL_LR_b_c1_v1 from 2019-01-01 to 2023-03-17

Calibration constants are written to the catalog as well, as .zarr under BCO.lidar_CORAL_calib_v1.

Data access#

The fast and slow smoothed products create datasets that differ as shown below:

import intake

cat = intake.open_catalog("https://tcodata.mpimet.mpg.de/catalog.yaml")
mbrs = cat.BCO.mbrs.to_dask()
coral = cat.BCO.lidar_CORAL_lr_f_reanalysis_c1.to_dask()
coral
/builds/tco/bco/docs/.venv/lib/python3.14/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.14/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),
<xarray.Dataset> Size: 10GB
Dimensions:              (time: 352080, alt: 484, lim: 2)
Coordinates:
  * time                 (time) datetime64[ns] 3MB 2024-09-30T00:02:00 ... 20...
  * alt                  (alt) float32 2kB 20.0 80.0 140.0 ... 2.894e+04 2.9e+04
    lat                  float64 8B ...
    lon                  float64 8B ...
    sensor_alt           int64 8B ...
Dimensions without coordinates: lim
Data variables: (12/14)
    RH_err               (time, alt) float32 682MB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    alt_bnds             (time, alt, lim) float32 1GB dask.array<chunksize=(256, 32, 2), meta=np.ndarray>
    backscatter_355      (time, alt) float32 682MB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    backscatter_355_err  (time, alt) float32 682MB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    backscatter_532      (time, alt) float32 682MB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    backscatter_532_err  (time, alt) float32 682MB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    ...                   ...
    depol_p_532_err      (time, alt) float32 682MB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    depol_v_532          (time, alt) float32 682MB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    depol_v_532_err      (time, alt) float32 682MB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    mr                   (time, alt) float32 682MB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    mr_err               (time, alt) float32 682MB dask.array<chunksize=(8192, 32), meta=np.ndarray>
    rh                   (time, alt) float32 682MB dask.array<chunksize=(8192, 32), meta=np.ndarray>
Attributes:
    _logical_cutoff_date:  2026-04-03T00:00:00Z
clouds = coral.sel(time="2024-10-07").cloud_mask == 1
clouds.plot(x="time")
<matplotlib.collections.QuadMesh at 0x7f093795b4d0>
../../_images/a1a950c834651d6f7813208c873072d5db7fb3650dd79b4f33b49db91757e67b.png
clouds2 = mbrs.sel(time="2024-10-07").Ze > -40
clouds2.plot(x="time")
<matplotlib.collections.QuadMesh at 0x7f09377fb110>
../../_images/2b2b20f11cf13d0d2dd407dd4f471616f29f6d9fd66da73648c0361d985a34a0.png