This page provides an overview of how datasets are defined, structured, and handled in the processing chain.
The goal is to ensure consistent, analysis-ready data products that can be accessed efficiently and extended over time.
/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: 5GB
Dimensions: (time: 45382222, bnd: 2)
Coordinates:
* time (time) datetime64[ns] 363MB 2010-12-16T16:24:00 ....
alt float64 8B ...
lat float64 8B ...
lon float64 8B ...
Dimensions without coordinates: bnd
Data variables: (12/22)
DIR (time) float64 363MB dask.array<chunksize=(4194304,), meta=np.ndarray>
DIR_offset (time) float32 182MB dask.array<chunksize=(4194304,), meta=np.ndarray>
DL (time) float64 363MB dask.array<chunksize=(4194304,), meta=np.ndarray>
DR (time) float64 363MB dask.array<chunksize=(4194304,), meta=np.ndarray>
MNV (time) float32 182MB dask.array<chunksize=(4194304,), meta=np.ndarray>
MXV (time) float32 182MB dask.array<chunksize=(4194304,), meta=np.ndarray>
... ...
VH (time) float32 182MB dask.array<chunksize=(4194304,), meta=np.ndarray>
VR (time) float32 182MB dask.array<chunksize=(4194304,), meta=np.ndarray>
VS (time) float32 182MB dask.array<chunksize=(4194304,), meta=np.ndarray>
air_temperature_status (time) int8 45MB dask.array<chunksize=(4194304,), meta=np.ndarray>
sensor_location (time) int8 45MB dask.array<chunksize=(4194304,), meta=np.ndarray>
time_bounds (time, bnd) datetime64[ns] 726MB dask.array<chunksize=(4194304, 2), meta=np.ndarray>
Attributes:
Conventions: CF-1.12
_logical_cutoff_date: 2026-10-20T00:00:00Z
bcoproc_version: 0.0.0.post2301.dev0+58a3748
featureType: timeSeries
institution: Max Planck Institute for Meteorology, Hamburg
license: CC-BY-4.0
location: The Barbados Cloud Observatory (BCO), Deebles Poin...
platform: BCO
source: Vaisala WXT-520
summary: This dataset contains basic meteorological measure...
title: WXT-2 ground station data from BCO (Level 1)
tool_versions: {"Python": "3.14.3 (main, Mar 3 2026, 14:59:53) [...
The Barbados Cloud Observatory (BCO), Deebles Point, Barbados, West Indies
platform :
BCO
source :
Vaisala WXT-520
summary :
This dataset contains basic meteorological measurements from a multi-sensor weather instrument is permanently installed on top of the office container at the BCO.
We provide for every catalog entry a ‘default’ dataset which, for the most part, are growing in time but processed with a constant code revision. However, if, for instance, for publication, there is a need for a static dataset, we can provide that.
More about versioning can be found in the versions section. We also provide time aggregations for analysis-ready datasets, accessible via the time parameter, where raw is the original, non-uniform grid. (More about time aggregations below.)
/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: 393kB
Dimensions: (time: 5783, bnd: 2)
Coordinates:
* time (time) datetime64[ns] 46kB 2010-12-16T12:00:00 ... 2026-1...
alt float64 8B ...
lat float64 8B ...
lon float64 8B ...
Dimensions without coordinates: bnd
Data variables:
p (time) float32 23kB dask.array<chunksize=(5783,), meta=np.ndarray>
rain_intensity (time) float32 23kB dask.array<chunksize=(5783,), meta=np.ndarray>
raw_count (time) float64 46kB dask.array<chunksize=(5783,), meta=np.ndarray>
rh (time) float32 23kB dask.array<chunksize=(5783,), meta=np.ndarray>
ta (time) float32 23kB dask.array<chunksize=(5783,), meta=np.ndarray>
time_bounds (time, bnd) datetime64[ns] 93kB dask.array<chunksize=(5783, 2), meta=np.ndarray>
u (time) float32 23kB dask.array<chunksize=(5783,), meta=np.ndarray>
v (time) float32 23kB dask.array<chunksize=(5783,), meta=np.ndarray>
ws (time) float32 23kB dask.array<chunksize=(5783,), meta=np.ndarray>
ws:max (time) float32 23kB dask.array<chunksize=(5783,), meta=np.ndarray>
ws:min (time) float32 23kB dask.array<chunksize=(5783,), meta=np.ndarray>
Attributes:
Conventions: CF-1.12
_cutoff_date: 2026-10-15T23:55:00.000001000
bcoproc_version: 0.0.0.post2339.dev0+dc6876f9
institution: Max Planck Institute for Meteorology, Hamburg
license: CC-BY-4.0
location: The Barbados Cloud Observatory (BCO), Deebles Point, Ba...
platform: BCO
source: https://swift.dkrz.de/v1/dkrz_948e7d4bbfbb445fbff5315fc...
summary: This dataset contains basic meteorological measurements...
title: WXT-2 ground station data from BCO (Level 2)
tool_versions: {"Python": "3.14.3 (main, Mar 3 2026, 14:59:53) [Clang...
Datasets are stored as Zarr archives and are extended continuously as new data becomes available.
Rather than rewriting datasets, new data is appended as additional chunks.
This enables efficient cloud-based storage and scalable analysis.
The processing chain is orchestrated by an Airflow server.
Analysis-ready datasets are provided alongside their time aggregations: we provide a raw, non-uniform time grid, and subsequently 1-minute, 10-minute, 1-hour, and 1-day aggregate products for various use cases. Discrete bins are currently used to perform averages in the appriopriate spaces, where for the 1- and 10-minute products, an aggregate is produced regardless of the volume of raw data in the bin. For the 1-hour products, an aggregate is produced only if three or more 10-minute bins have data, and for the 1-day products, an aggregate is produced only if 22 or more hourly bins have data.
Versions are used to distinguish reproducible states of processed data.
As a consequence, in order to attach a version to a dataset, one needs a revision or branch name of processing code (e.g. a Git commit hash), a start date, an end date, and a build number.
The following example table illustrates how these conventions impact dataset naming:
Object name
Revision/Branch
Start date
End date
Build
BCO.wxt_2350a90_0
#2350a90
2010-12-16
None
0
BCO.wxt_afe854e_0
#afe854e
2010-12-16
None
0
BCO.wxt_main_0
main
2010-12-16
None
0
BCO.wxt_afe854e_1
#afe854e
2024-08-10
2024-09-30
1
Here, BCO.wxt_2350a90_0 and BCO.wxt_afe854e_0 cover the same observation period but were processed with different software revisions.
Using a non-changing code revision ensures that any dataset version can be reproduced in the future, with the exception of BCO.wxt_main_0, which uses the most up-to-date code
revision. The main dataset therefore prioritises recency over reproducibility and stability. For this reason, the default datasets we provide are processed with stable code revisions but are still ever-growing.
Note that BCO.wxt_afe854e_1 uses the same code revision as BCO.wxt_afe854e_0 but has an explicit end date and spans the temporal extent of the ORCESTRA campaign. If there is a need for such a static dataset, they can be created upon request. However, they are not part of our standard practices, as the beauty of BCO data is its constant growth.
The dataset management page gives an overview of our internal protocols for re-processing and deleting datasets.
Datasets follow CF conventions for coordinate naming where possible.
Primary coordinates include:
Coordinate
Meaning
time
UTC timestamp
alt
altitude above the geoid (meters)
range
line-of-sight distance from instrument (meters)
lat
latitude (degrees_north)
lon
longitude (degrees_east)
Primary coordinates must:
be strictly monotonic
contain no missing values
When sensor and data coordinates differ, sensor coordinates are provided using the prefix sensor_, e.g., sensor_alt.
Analysis-ready datasets also include a time_bounds variable, as well as a raw_count variable which displays how many time steps in the raw product are used in each aggregation.