From 21b1c9af6a60ebcd15576cfb467abad30dc494db Mon Sep 17 00:00:00 2001 From: AjayKumar Date: Tue, 31 Mar 2026 21:06:01 +0530 Subject: [PATCH] Add data pipeline example for efficient weather data handling --- examples/data_pipeline/README.md | 24 + examples/data_pipeline/analysis.py | 81 ++ examples/data_pipeline/output.nc | Bin 0 -> 19872 bytes .../Pressure_reduced_to_MSL_msl/c/0 | Bin 0 -> 24 bytes .../Pressure_reduced_to_MSL_msl/c/1 | Bin 0 -> 24 bytes .../Pressure_reduced_to_MSL_msl/c/2 | Bin 0 -> 29 bytes .../Pressure_reduced_to_MSL_msl/zarr.json | 46 ++ .../output.zarr/Temperature_surface/c/0 | Bin 0 -> 24 bytes .../output.zarr/Temperature_surface/c/1 | Bin 0 -> 24 bytes .../output.zarr/Temperature_surface/c/2 | Bin 0 -> 28 bytes .../output.zarr/Temperature_surface/zarr.json | 46 ++ examples/data_pipeline/output.zarr/VHM0/c/0 | Bin 0 -> 17 bytes examples/data_pipeline/output.zarr/VHM0/c/1 | Bin 0 -> 17 bytes examples/data_pipeline/output.zarr/VHM0/c/2 | Bin 0 -> 24 bytes .../data_pipeline/output.zarr/VHM0/zarr.json | 46 ++ examples/data_pipeline/output.zarr/VMDR/c/0 | Bin 0 -> 17 bytes examples/data_pipeline/output.zarr/VMDR/c/1 | Bin 0 -> 17 bytes examples/data_pipeline/output.zarr/VMDR/c/2 | Bin 0 -> 24 bytes .../data_pipeline/output.zarr/VMDR/zarr.json | 46 ++ examples/data_pipeline/output.zarr/VTPK/c/0 | Bin 0 -> 24 bytes examples/data_pipeline/output.zarr/VTPK/c/1 | Bin 0 -> 24 bytes examples/data_pipeline/output.zarr/VTPK/c/2 | Bin 0 -> 28 bytes .../data_pipeline/output.zarr/VTPK/zarr.json | 46 ++ .../data_pipeline/output.zarr/depth/zarr.json | 43 + .../output.zarr/height_above_ground/c/0 | Bin 0 -> 13 bytes .../output.zarr/height_above_ground/zarr.json | 43 + examples/data_pipeline/output.zarr/latitude/c | Bin 0 -> 17 bytes .../output.zarr/latitude/zarr.json | 36 + .../data_pipeline/output.zarr/longitude/c | Bin 0 -> 17 bytes .../output.zarr/longitude/zarr.json | 36 + examples/data_pipeline/output.zarr/so/c/0/0 | Bin 0 -> 17 bytes examples/data_pipeline/output.zarr/so/c/1/0 | Bin 0 -> 17 bytes examples/data_pipeline/output.zarr/so/c/2/0 | Bin 0 -> 24 bytes .../data_pipeline/output.zarr/so/zarr.json | 49 ++ .../data_pipeline/output.zarr/thetao/c/0/0 | Bin 0 -> 17 bytes .../data_pipeline/output.zarr/thetao/c/1/0 | Bin 0 -> 17 bytes .../data_pipeline/output.zarr/thetao/c/2/0 | Bin 0 -> 24 bytes .../output.zarr/thetao/zarr.json | 49 ++ examples/data_pipeline/output.zarr/time/c/0 | Bin 0 -> 73 bytes .../data_pipeline/output.zarr/time/zarr.json | 46 ++ .../c/0/0 | Bin 0 -> 17 bytes .../c/1/0 | Bin 0 -> 17 bytes .../c/2/0 | Bin 0 -> 24 bytes .../zarr.json | 49 ++ .../data_pipeline/output.zarr/utotal/c/0/0 | Bin 0 -> 17 bytes .../data_pipeline/output.zarr/utotal/c/1/0 | Bin 0 -> 17 bytes .../data_pipeline/output.zarr/utotal/c/2/0 | Bin 0 -> 24 bytes .../output.zarr/utotal/zarr.json | 49 ++ .../c/0/0 | Bin 0 -> 17 bytes .../c/1/0 | Bin 0 -> 17 bytes .../c/2/0 | Bin 0 -> 24 bytes .../zarr.json | 49 ++ .../data_pipeline/output.zarr/vtotal/c/0/0 | Bin 0 -> 17 bytes .../data_pipeline/output.zarr/vtotal/c/1/0 | Bin 0 -> 17 bytes .../data_pipeline/output.zarr/vtotal/c/2/0 | Bin 0 -> 24 bytes .../output.zarr/vtotal/zarr.json | 49 ++ examples/data_pipeline/output.zarr/zarr.json | 739 ++++++++++++++++++ examples/data_pipeline/weather.nc | Bin 0 -> 1999006 bytes 58 files changed, 1572 insertions(+) create mode 100644 examples/data_pipeline/README.md create mode 100644 examples/data_pipeline/analysis.py create mode 100644 examples/data_pipeline/output.nc create mode 100644 examples/data_pipeline/output.zarr/Pressure_reduced_to_MSL_msl/c/0 create mode 100644 examples/data_pipeline/output.zarr/Pressure_reduced_to_MSL_msl/c/1 create mode 100644 examples/data_pipeline/output.zarr/Pressure_reduced_to_MSL_msl/c/2 create mode 100644 examples/data_pipeline/output.zarr/Pressure_reduced_to_MSL_msl/zarr.json create mode 100644 examples/data_pipeline/output.zarr/Temperature_surface/c/0 create mode 100644 examples/data_pipeline/output.zarr/Temperature_surface/c/1 create mode 100644 examples/data_pipeline/output.zarr/Temperature_surface/c/2 create mode 100644 examples/data_pipeline/output.zarr/Temperature_surface/zarr.json create mode 100644 examples/data_pipeline/output.zarr/VHM0/c/0 create mode 100644 examples/data_pipeline/output.zarr/VHM0/c/1 create mode 100644 examples/data_pipeline/output.zarr/VHM0/c/2 create mode 100644 examples/data_pipeline/output.zarr/VHM0/zarr.json create mode 100644 examples/data_pipeline/output.zarr/VMDR/c/0 create mode 100644 examples/data_pipeline/output.zarr/VMDR/c/1 create mode 100644 examples/data_pipeline/output.zarr/VMDR/c/2 create mode 100644 examples/data_pipeline/output.zarr/VMDR/zarr.json create mode 100644 examples/data_pipeline/output.zarr/VTPK/c/0 create mode 100644 examples/data_pipeline/output.zarr/VTPK/c/1 create mode 100644 examples/data_pipeline/output.zarr/VTPK/c/2 create mode 100644 examples/data_pipeline/output.zarr/VTPK/zarr.json create mode 100644 examples/data_pipeline/output.zarr/depth/zarr.json create mode 100644 examples/data_pipeline/output.zarr/height_above_ground/c/0 create mode 100644 examples/data_pipeline/output.zarr/height_above_ground/zarr.json create mode 100644 examples/data_pipeline/output.zarr/latitude/c create mode 100644 examples/data_pipeline/output.zarr/latitude/zarr.json create mode 100644 examples/data_pipeline/output.zarr/longitude/c create mode 100644 examples/data_pipeline/output.zarr/longitude/zarr.json create mode 100644 examples/data_pipeline/output.zarr/so/c/0/0 create mode 100644 examples/data_pipeline/output.zarr/so/c/1/0 create mode 100644 examples/data_pipeline/output.zarr/so/c/2/0 create mode 100644 examples/data_pipeline/output.zarr/so/zarr.json create mode 100644 examples/data_pipeline/output.zarr/thetao/c/0/0 create mode 100644 examples/data_pipeline/output.zarr/thetao/c/1/0 create mode 100644 examples/data_pipeline/output.zarr/thetao/c/2/0 create mode 100644 examples/data_pipeline/output.zarr/thetao/zarr.json create mode 100644 examples/data_pipeline/output.zarr/time/c/0 create mode 100644 examples/data_pipeline/output.zarr/time/zarr.json create mode 100644 examples/data_pipeline/output.zarr/u-component_of_wind_height_above_ground/c/0/0 create mode 100644 examples/data_pipeline/output.zarr/u-component_of_wind_height_above_ground/c/1/0 create mode 100644 examples/data_pipeline/output.zarr/u-component_of_wind_height_above_ground/c/2/0 create mode 100644 examples/data_pipeline/output.zarr/u-component_of_wind_height_above_ground/zarr.json create mode 100644 examples/data_pipeline/output.zarr/utotal/c/0/0 create mode 100644 examples/data_pipeline/output.zarr/utotal/c/1/0 create mode 100644 examples/data_pipeline/output.zarr/utotal/c/2/0 create mode 100644 examples/data_pipeline/output.zarr/utotal/zarr.json create mode 100644 examples/data_pipeline/output.zarr/v-component_of_wind_height_above_ground/c/0/0 create mode 100644 examples/data_pipeline/output.zarr/v-component_of_wind_height_above_ground/c/1/0 create mode 100644 examples/data_pipeline/output.zarr/v-component_of_wind_height_above_ground/c/2/0 create mode 100644 examples/data_pipeline/output.zarr/v-component_of_wind_height_above_ground/zarr.json create mode 100644 examples/data_pipeline/output.zarr/vtotal/c/0/0 create mode 100644 examples/data_pipeline/output.zarr/vtotal/c/1/0 create mode 100644 examples/data_pipeline/output.zarr/vtotal/c/2/0 create mode 100644 examples/data_pipeline/output.zarr/vtotal/zarr.json create mode 100644 examples/data_pipeline/output.zarr/zarr.json create mode 100644 examples/data_pipeline/weather.nc diff --git a/examples/data_pipeline/README.md b/examples/data_pipeline/README.md new file mode 100644 index 00000000..95220e95 --- /dev/null +++ b/examples/data_pipeline/README.md @@ -0,0 +1,24 @@ +# Data Pipeline Example for Weather Routing Tool + +This example demonstrates how to efficiently handle and process weather datasets using scalable techniques. + +## Overview + +Working with large weather datasets can be memory-intensive and slow when using traditional loading methods. This example shows how to improve performance and scalability by using: + +- Chunked data loading with Dask +- Subsetting and interpolation +- Efficient storage formats (NetCDF and Zarr) +- Basic performance comparison + +## Features + +- Load dataset using chunking (`xarray + Dask`) +- Subset a specific geographic region +- Interpolate data at a given location +- Save processed data in: + - NetCDF format + - Zarr format +- Compare execution time for different storage methods + +## File Structure diff --git a/examples/data_pipeline/analysis.py b/examples/data_pipeline/analysis.py new file mode 100644 index 00000000..22a2acac --- /dev/null +++ b/examples/data_pipeline/analysis.py @@ -0,0 +1,81 @@ +import xarray as xr +import time +import os + +# ------------------------------- +# LOAD DATASET WITH CHUNKING +# ------------------------------- +print("\n--- Loading Dataset ---") +ds = xr.open_dataset("weather.nc", chunks={"time": 10}) + +print(ds) + +# ------------------------------- +# SUBSETTING REGION +# ------------------------------- +ds = ds.sel( + latitude=slice(10, 20), + longitude=slice(80, 90) +) + +print("\n--- After Subsetting ---") +print(ds) + +# ------------------------------- +# INTERPOLATION +# ------------------------------- +ds = ds.interp(latitude=15, longitude=85) + +print("\n--- After Interpolation ---") +print(ds) + +# ------------------------------- +# SAVE AS NETCDF +# ------------------------------- +print("\n--- Saving as NetCDF ---") +start = time.time() + +ds.to_netcdf("output.nc") + +end = time.time() +netcdf_time = end - start + +print("NetCDF Save Time:", netcdf_time, "seconds") + +# ------------------------------- +# SAVE AS ZARR +# ------------------------------- +print("\n--- Saving as Zarr ---") +start = time.time() + +ds.to_zarr("output.zarr", mode="w") + +end = time.time() +zarr_time = end - start + +print("Zarr Save Time:", zarr_time, "seconds") + +# ------------------------------- +# FILE SIZE (NetCDF) +# ------------------------------- +if os.path.exists("output.nc"): + nc_size = os.path.getsize("output.nc") / (1024 * 1024) + print("\nNetCDF File Size:", round(nc_size, 2), "MB") + +# ------------------------------- +# VARIABLES INFO +# ------------------------------- +print("\n--- Dataset Variables ---") +print(list(ds.data_vars)) + + +print("\n--- Performance Summary ---") +print("NetCDF Time:", netcdf_time, "seconds") +print("Zarr Time:", zarr_time, "seconds") + +if zarr_time < netcdf_time: + print("Zarr is faster for this dataset") +else: + print("NetCDF is faster for this dataset") + +print("\n✔ Data pipeline example completed successfully") \ No newline at end of file diff --git a/examples/data_pipeline/output.nc b/examples/data_pipeline/output.nc new file mode 100644 index 0000000000000000000000000000000000000000..374c731c6ac4f080e3699b99f26fdbb32a3459e6 GIT binary patch literal 19872 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 B7`^}i literal 0 HcmV?d00001 diff --git a/examples/data_pipeline/output.zarr/Pressure_reduced_to_MSL_msl/c/0 b/examples/data_pipeline/output.zarr/Pressure_reduced_to_MSL_msl/c/0 new file mode 100644 index 0000000000000000000000000000000000000000..20fe858497d2ec6209031411ce0149b816e78d48 GIT binary patch literal 24 ecmdPcs{dCZpq7EbfdL3E?D^rq$Y8pqfDr&)^9NP{ literal 0 HcmV?d00001 diff --git a/examples/data_pipeline/output.zarr/Pressure_reduced_to_MSL_msl/c/1 b/examples/data_pipeline/output.zarr/Pressure_reduced_to_MSL_msl/c/1 new file mode 100644 index 0000000000000000000000000000000000000000..20fe858497d2ec6209031411ce0149b816e78d48 GIT binary patch literal 24 ecmdPcs{dCZpq7EbfdL3E?D^rq$Y8pqfDr&)^9NP{ literal 0 HcmV?d00001 diff --git a/examples/data_pipeline/output.zarr/Pressure_reduced_to_MSL_msl/c/2 b/examples/data_pipeline/output.zarr/Pressure_reduced_to_MSL_msl/c/2 new file mode 100644 index 0000000000000000000000000000000000000000..b264fbaade9c6b8046a2c1070db1cdecd7fd9f3c GIT binary patch literal 29 jcmdPcs{dCZU?~Gb0s|0S*z?1If#F9z69a>~yO literal 0 HcmV?d00001 diff --git a/examples/data_pipeline/output.zarr/VTPK/c/1 b/examples/data_pipeline/output.zarr/VTPK/c/1 new file mode 100644 index 0000000000000000000000000000000000000000..c6884615217987036649e5c81566ab1f8e0f5dfb GIT binary patch literal 24 fcmdPcs{dCZpq7C_gMmTBfq|JJUXY<`4Ffj-OF0D> literal 0 HcmV?d00001 diff --git a/examples/data_pipeline/output.zarr/VTPK/c/2 b/examples/data_pipeline/output.zarr/VTPK/c/2 new file mode 100644 index 0000000000000000000000000000000000000000..149ca768490fc3bf3bcad1a88b7f7f76d4026bec GIT binary patch literal 28 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