diff --git a/environment.yml b/environment.yml index caa7d82..0917d51 100644 --- a/environment.yml +++ b/environment.yml @@ -7,7 +7,7 @@ dependencies: - jupyterlab - jupyter_server - zarr - - xarray==2022.12.0 + - xarray - geoviews - datashader - matplotlib diff --git a/notebooks/01BasicVisualization.ipynb b/notebooks/01BasicVisualization.ipynb index 9ba686e..85163a7 100644 --- a/notebooks/01BasicVisualization.ipynb +++ b/notebooks/01BasicVisualization.ipynb @@ -36,7 +36,7 @@ "metadata": {}, "source": [ "## Overview\n", - "A team at [Google Research & Cloud](https://research.google/) are making parts of the [ECMWF Reanalysis version 5](https://www.ecmwf.int/en/forecasts/dataset/ecmwf-reanalysis-v5) (aka **ERA-5**) accessible in a [Analysis Ready, Cloud Optimized](https://www.frontiersin.org/articles/10.3389/fclim.2021.782909/full) (aka **ARCO**) format.\n", + "A team at [Google Research & Cloud](https://research.google/) are making parts of the [ECMWF Reanalysis version 5](https://www.ecmwf.int/en/forecasts/dataset/ecmwf-reanalysis-v5) (aka **ERA-5**) accessible in an [Analysis Ready, Cloud Optimized](https://www.frontiersin.org/articles/10.3389/fclim.2021.782909/full) (aka **ARCO**) format.\n", "\n", "In this notebook, we will do the following:\n", "\n", @@ -77,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -107,24 +107,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['gcp-public-data-arco-era5/co/model-level-moisture.zarr',\n", - " 'gcp-public-data-arco-era5/co/model-level-wind.zarr',\n", - " 'gcp-public-data-arco-era5/co/single-level-forecast.zarr',\n", - " 'gcp-public-data-arco-era5/co/single-level-reanalysis.zarr',\n", - " 'gcp-public-data-arco-era5/co/single-level-surface.zarr']" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "fs = fsspec.filesystem('gs')\n", "fs.ls('gs://gcp-public-data-arco-era5/co')" @@ -139,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -152,17 +137,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "size: 28.02835009436967 TB\n" - ] - } - ], + "outputs": [], "source": [ "print(f'size: {reanalysis.nbytes / (1024 ** 4)} TB')" ] @@ -176,3433 +153,11 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "text/html": [ - "
<xarray.Dataset>\n", - "Dimensions: (time: 374016, values: 542080)\n", - "Coordinates:\n", - " depthBelowLandLayer float64 ...\n", - " entireAtmosphere float64 ...\n", - " latitude (values) float64 dask.array<chunksize=(542080,), meta=np.ndarray>\n", - " longitude (values) float64 dask.array<chunksize=(542080,), meta=np.ndarray>\n", - " number int64 ...\n", - " step timedelta64[ns] ...\n", - " surface float64 ...\n", - " * time (time) datetime64[ns] 1979-01-01 ... 2021-08-31T23:0...\n", - " valid_time (time) datetime64[ns] dask.array<chunksize=(48,), meta=np.ndarray>\n", - "Dimensions without coordinates: values\n", - "Data variables: (12/38)\n", - " cape (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - " d2m (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - " hcc (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - " istl1 (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - " istl2 (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - " istl3 (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - " ... ...\n", - " tsn (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - " u10 (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - " u100 (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - " v10 (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - " v100 (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - " z (time, values) float32 dask.array<chunksize=(48, 542080), meta=np.ndarray>\n", - "Attributes:\n", - " Conventions: CF-1.7\n", - " GRIB_centre: ecmf\n", - " GRIB_centreDescription: European Centre for Medium-Range Weather Forec...\n", - " GRIB_edition: 1\n", - " GRIB_subCentre: 0\n", - " history: 2022-09-23T18:56 GRIB to CDM+CF via cfgrib-0.9...\n", - " institution: European Centre for Medium-Range Weather Forec...\n", - " pangeo-forge:inputs_hash: 5f4378143e9f42402424280b63472752da3aa79179b53b...\n", - " pangeo-forge:recipe_hash: 0c3415923e347ce9dac9dc5c6d209525f4d45d799bd25b...\n", - " pangeo-forge:version: 0.9.1
<xarray.DataArray 'msl' (time: 374016, values: 542080)>\n", - "dask.array<open_dataset-fcc3dcb3919496f1bd4d11a8ead6d9b7msl, shape=(374016, 542080), dtype=float32, chunksize=(48, 542080), chunktype=numpy.ndarray>\n", - "Coordinates:\n", - " depthBelowLandLayer float64 ...\n", - " entireAtmosphere float64 ...\n", - " latitude (values) float64 dask.array<chunksize=(542080,), meta=np.ndarray>\n", - " longitude (values) float64 dask.array<chunksize=(542080,), meta=np.ndarray>\n", - " number int64 ...\n", - " step timedelta64[ns] ...\n", - " surface float64 ...\n", - " * time (time) datetime64[ns] 1979-01-01 ... 2021-08-31T23:0...\n", - " valid_time (time) datetime64[ns] dask.array<chunksize=(48,), meta=np.ndarray>\n", - "Dimensions without coordinates: values\n", - "Attributes: (12/25)\n", - " GRIB_N: 320\n", - " GRIB_NV: 0\n", - " GRIB_cfName: air_pressure_at_mean_sea_level\n", - " GRIB_cfVarName: msl\n", - " GRIB_dataType: an\n", - " GRIB_gridDefinitionDescription: Gaussian Latitude/Longitude Grid\n", - " ... ...\n", - " GRIB_totalNumber: 0\n", - " GRIB_typeOfLevel: surface\n", - " GRIB_units: Pa\n", - " long_name: Mean sea level pressure\n", - " standard_name: air_pressure_at_mean_sea_level\n", - " units: Pa
<xarray.DataArray 'time' (time: 374016)>\n", - "array(['1979-01-01T00:00:00.000000000', '1979-01-01T01:00:00.000000000',\n", - " '1979-01-01T02:00:00.000000000', ..., '2021-08-31T21:00:00.000000000',\n", - " '2021-08-31T22:00:00.000000000', '2021-08-31T23:00:00.000000000'],\n", - " dtype='datetime64[ns]')\n", - "Coordinates:\n", - " depthBelowLandLayer float64 ...\n", - " entireAtmosphere float64 ...\n", - " number int64 ...\n", - " step timedelta64[ns] ...\n", - " surface float64 ...\n", - " * time (time) datetime64[ns] 1979-01-01 ... 2021-08-31T23:0...\n", - " valid_time (time) datetime64[ns] dask.array<chunksize=(48,), meta=np.ndarray>\n", - "Attributes:\n", - " long_name: initial time of forecast\n", - " standard_name: forecast_reference_time
<xarray.DataArray 'msl' (time: 2, values: 542720)>\n", - "dask.array<concatenate, shape=(2, 542720), dtype=float32, chunksize=(2, 542080), chunktype=numpy.ndarray>\n", - "Coordinates:\n", - " depthBelowLandLayer float64 100.0\n", - " entireAtmosphere float64 0.0\n", - " latitude (values) float64 dask.array<chunksize=(542080,), meta=np.ndarray>\n", - " longitude (values) float64 dask.array<chunksize=(542080,), meta=np.ndarray>\n", - " number int64 0\n", - " step timedelta64[ns] 00:00:00\n", - " surface float64 0.0\n", - " * time (time) datetime64[ns] 1993-03-13T18:00:00 1993-03-13...\n", - " valid_time (time) datetime64[ns] dask.array<chunksize=(2,), meta=np.ndarray>\n", - "Dimensions without coordinates: values\n", - "Attributes: (12/25)\n", - " GRIB_N: 320\n", - " GRIB_NV: 0\n", - " GRIB_cfName: air_pressure_at_mean_sea_level\n", - " GRIB_cfVarName: msl\n", - " GRIB_dataType: an\n", - " GRIB_gridDefinitionDescription: Gaussian Latitude/Longitude Grid\n", - " ... ...\n", - " GRIB_totalNumber: 0\n", - " GRIB_typeOfLevel: surface\n", - " GRIB_units: Pa\n", - " long_name: Mean sea level pressure\n", - " standard_name: air_pressure_at_mean_sea_level\n", - " units: Pa
<xarray.DataArray 'msl' (time: 2, longitude: 1441, latitude: 721)>\n", - "array([[[ nan, 100002.69017743, 100017.98893632, ...,\n", - " 101304.89829242, 101286.78434817, nan],\n", - " [ nan, 100000.79174116, 100014.89271227, ...,\n", - " 101302.38406705, 101286.66494564, nan],\n", - " [ nan, 100002.16344993, 100011.395909 , ...,\n", - " 101299.81740898, 101287.19520441, nan],\n", - " ...,\n", - " [ nan, 99999.30903704, 99999.145909 , ...,\n", - " 101296.64240898, 101285.92038913, nan],\n", - " [ nan, 99998.18678864, 100008.76771227, ...,\n", - " 101300.79656705, 101285.75316879, nan],\n", - " [ nan, 100002.69017743, 100017.98893632, ...,\n", - " 101304.89829242, 101286.78434817, nan]],\n", - "\n", - " [[ nan, 99998.72108319, 100012.14547759, ...,\n", - " 101375.60015564, 101364.37691245, nan],\n", - " [ nan, 99997.98017601, 100011.52364926, ...,\n", - " 101374.04479448, 101364.84414705, nan],\n", - " [ nan, 99998.81250663, 100010.64536355, ...,\n", - " 101372.49886357, 101365.04251313, nan],\n", - " ...,\n", - " [ nan, 99995.68085761, 99998.14536355, ...,\n", - " 101369.57386357, 101363.79856855, nan],\n", - " [ nan, 99994.82433162, 100005.27364926, ...,\n", - " 101372.58229448, 101363.96374431, nan],\n", - " [ nan, 99998.72108319, 100012.14547759, ...,\n", - " 101375.60015564, 101364.37691245, nan]]])\n", - "Coordinates:\n", - " * time (time) datetime64[ns] 1993-03-13T18:00:00 1993-03-13T19:00:00\n", - " * longitude (longitude) float64 0.0 0.25 0.5 0.75 ... 359.2 359.5 359.8 360.0\n", - " * latitude (latitude) float64 -90.0 -89.75 -89.5 -89.25 ... 89.5 89.75 90.0
Time slider bug!
While the visualization loaded much faster, the rasterized dataset does not update as we manipulate the time slider! \n", - "