Varunayan Demo#

Varunayan = Varun + ayan

Varun in the vedic mythology was the god of sky, order, truth, water and magic.

Ayan in sanskrit means path.

Varunayan is a structured package for fetching climatic variables for any part of the globe, though not magically. Varunayan heavily relies on the ERA5 resource which uses advanced modeling using historical data to generate global estimates of large number of atmospheric, land and oceanic climate variables.

import varunayan

Download daily weather data for a given geojson#

We will use varunayan to first download temperature, precipitation, surface pressure and dewpoint from ERA5.

The location is specified using path to a local geojson file, though this is not the only way to download data for a desired geography (See next section).

df_india = varunayan.era5ify_geojson(
    request_id="india_weather_daily_2023_Jan",
    variables=[
        "2m_temperature",
        "total_precipitation",
        "surface_pressure",
        "2m_dewpoint_temperature",
    ],
    start_date="2023-1-1",
    end_date="2023-1-31",
    json_file="https://gist.githubusercontent.com/JaggeryArray/bf296307132e7d6127e28864c7bea5bf/raw/4bce03beea35d61a93007f54e52ba81f575a7feb/india.json",
    dataset_type="single",
    frequency="daily",
    resolution=0.25
)

============================================================
STARTING ERA5 SINGLE LEVEL PROCESSING
============================================================
Request ID: india_weather_daily_2023_Jan
Variables: ['2m_temperature', 'total_precipitation', 'surface_pressure', '2m_dewpoint_temperature']
Date Range: 2023-01-01 to 2023-01-31
Frequency: daily
Resolution: 0.25°
GeoJSON File: C:\Users\ATHARV~1\AppData\Local\Temp\india_weather_daily_2023_Jan_temp_geojson.json


--- GeoJSON Mini Map ---

MINI MAP (68.18°W to 97.40°E, 7.97°S to 35.49°N):
┌─────────────────────────────────────────┐
│·········································│
│········■■■■■■■··························│
│··········■■■■■··························│
│·········■■■■■■■·························│
│·······■■■■■■■■■■························│
│····■■■■■■■■■■■■■■■■············■■■■■■■·│
│···■■■■■■■■■■■■■■■■■■■■■■■■■·■■■■■■■■····│
│····■■■■■■■■■■■■■■■■■■■■■■■■·····■■■■····│
│·■■■■■■■■■■■■■■■■■■■■■■■■■■■■···■■■······│
│··■■■■■■■■■■■■■■■■■■■■■■■■■■■············│
│·······■■■■■■■■■■■■■■■■■■■···············│
│·······■■■■■■■■■■■■■■■■··················│
│·······■■■■■■■■■■■■■·····················│
│········■■■■■■■■■························│
│·········■■■■■■■■························│
│··········■■■■■■■························│
│···········■■■■■·························│
│············■■■··························│
│·········································│
└─────────────────────────────────────────┘
  = Inside the shape
 · = Outside the shape

Saving files to output directory: india_weather_daily_2023_Jan_output
  Saved final data to: india_weather_daily_2023_Jan_output\india_weather_daily_2023_Jan_daily_data.csv
  Saved unique coordinates to: india_weather_daily_2023_Jan_output\india_weather_daily_2023_Jan_unique_latlongs.csv
  Saved raw data to: india_weather_daily_2023_Jan_output\india_weather_daily_2023_Jan_raw_data.csv

============================================================
PROCESSING COMPLETE
============================================================

RESULTS SUMMARY:
----------------------------------------
Variables processed: 4
Time period:         2023-01-01 to 2023-01-31
Final output shape:  (31, 8)
Total complete processing time: 200.67 seconds

First 5 rows of aggregated data:
         tp         t2m            sp         d2m  year  month  day  \
0  0.000155  289.156586  95582.187500  283.245087  2023      1    1   
1  0.000184  288.782196  95621.062500  283.129059  2023      1    2   
2  0.000141  288.308716  95639.898438  282.865387  2023      1    3   
3  0.000200  287.533905  95647.882812  281.997925  2023      1    4   
4  0.000143  287.359467  95756.250000  281.820160  2023      1    5   

         date  
0  2023-01-01  
1  2023-01-02  
2  2023-01-03  
3  2023-01-04  
4  2023-01-05  

============================================================
ERA5 SINGLE LEVEL PROCESSING COMPLETED SUCCESSFULLY
============================================================

Download daily weather data for a bounding box#

The location can alternatively also be specified using a bounding box:

df_bounding_box = varunayan.era5ify_bbox(
    request_id="temp_prec_bounding_box_2024",
    variables=["2m_temperature", "total_precipitation"],
    start_date="2024-01-1",
    end_date="2024-01-15",
    north=30,
    south=20,
    east=80,
    west=70,
    frequency="daily",
    resolution=0.25
)

============================================================
STARTING ERA5 SINGLE LEVEL PROCESSING
============================================================
Request ID: temp_prec_bounding_box_2024
Variables: ['2m_temperature', 'total_precipitation']
Date Range: 2024-01-01 to 2024-01-15
Frequency: daily
Resolution: 0.25°

Saving files to output directory: temp_prec_bounding_box_2024_output
  Saved final data to: temp_prec_bounding_box_2024_output\temp_prec_bounding_box_2024_daily_data.csv
  Saved unique coordinates to: temp_prec_bounding_box_2024_output\temp_prec_bounding_box_2024_unique_latlongs.csv
  Saved raw data to: temp_prec_bounding_box_2024_output\temp_prec_bounding_box_2024_raw_data.csv

============================================================
PROCESSING COMPLETE
============================================================

RESULTS SUMMARY:
----------------------------------------
Variables processed: 2
Time period:         2024-01-01 to 2024-01-15
Final output shape:  (15, 6)
Total complete processing time: 43.45 seconds

First 5 rows of aggregated data:
         tp         t2m  year  month  day        date
0  0.000059  289.480377  2024      1    1  2024-01-01
1  0.000158  288.823975  2024      1    2  2024-01-02
2  0.000437  288.676178  2024      1    3  2024-01-03
3  0.000333  288.236481  2024      1    4  2024-01-04
4  0.000649  288.469452  2024      1    5  2024-01-05

============================================================
ERA5 SINGLE LEVEL PROCESSING COMPLETED SUCCESSFULLY
============================================================

You can also request relative humidity at a specific pressure level.

df_bounding_box_pressure = varunayan.era5ify_bbox(
    request_id="bounding_box_pressure_relative_humidity",
    variables=["temperature", "relative_humidity"],
    start_date="2024-01-1",
    end_date="2024-01-15",
    north=30,
    south=20,
    east=80,
    west=70,
    dataset_type="pressure",
    pressure_levels=["1000", "900"],
    frequency="daily",
    resolution=0.25
)

============================================================
STARTING ERA5 PRESSURE LEVEL PROCESSING
============================================================
Request ID: bounding_box_pressure_relative_humidity
Variables: ['temperature', 'relative_humidity']
Pressure Levels: ['1000', '900']
Date Range: 2024-01-01 to 2024-01-15
Frequency: daily
Resolution: 0.25°

Saving files to output directory: bounding_box_pressure_relative_humidity_output
  Saved final data to: bounding_box_pressure_relative_humidity_output\bounding_box_pressure_relative_humidity_daily_data.csv
  Saved unique coordinates to: bounding_box_pressure_relative_humidity_output\bounding_box_pressure_relative_humidity_unique_latlongs.csv
  Saved raw data to: bounding_box_pressure_relative_humidity_output\bounding_box_pressure_relative_humidity_raw_data.csv

============================================================
PROCESSING COMPLETE
============================================================

RESULTS SUMMARY:
----------------------------------------
Variables processed: 2
Time period:         2024-01-01 to 2024-01-15
Final output shape:  (30, 6)
Total complete processing time: 66.30 seconds

First 5 rows of aggregated data:
            t          r  pressure_level  year  month  day
0  292.125336  72.452385          1000.0  2024      1    1
1  291.697723  72.968575          1000.0  2024      1    2
2  291.161835  74.767265          1000.0  2024      1    3
3  291.061493  74.192192          1000.0  2024      1    4
4  290.956696  73.344673          1000.0  2024      1    5

============================================================
ERA5 PRESSURE LEVEL PROCESSING COMPLETED SUCCESSFULLY
============================================================
# varunayan.era5ify_point(request_id, variables, start_date, end_date, latitude, longitude, dataset_type, pressure_levels, frequency, verbosity)
# request_id : str, unique identifier for the request
# variables : list, list of variables to download
# start_date : string, start date of the data ('YYYY-M-D' or 'YYYY-MM-DD')
# end_date : string, end date of the data ('YYYY-M-D' or 'YYYY-MM-DD')
# latitude : float, latitude of the point of interest
# longitude : float, longitude of the point of interest
# dataset_type : str, type of dataset (single or pressure, for single level or pressure level datasets), optional (single by default)
# pressure_levels : list, list of strings of pressure levels to download (e.g., ["1000", "925", "850"]), optional (empty by default)
# frequency : str, frequency of the data (hourly, daily, weekly, monthly, yearly), optional (hourly by default)
# verbosity : int, verbosity level (0 for no output, 1 for info output, 2 for debug/complete output), optional (0 by default)

And finally, you can request data for a particular latitute and longitude. The following outputs are verbose because verbosity is set to non-zero values

# output will be verbose since explicitly set to 1

df = varunayan.era5ify_point(
    request_id="point_test",
    variables=["2m_temperature", "total_precipitation"],
    start_date="2024-08-1",
    end_date="2024-08-14",
    latitude=19.1331,
    longitude=72.9151,
    frequency="daily",
    verbosity=1
)
✓ CDS API configuration is already set up and valid.

============================================================
STARTING ERA5 SINGLE LEVEL PROCESSING
============================================================
Request ID: point_test
Variables: ['2m_temperature', 'total_precipitation']
Date Range: 2024-08-01 to 2024-08-14
Frequency: daily
Resolution: 0.1°
GeoJSON File: C:\Users\ATHARV~1\AppData\Local\Temp\point_test_temp_geojson.json
✓ All inputs validated successfully

--- Bounding Box ---
✓ Bounding Box calculated:
  North: 19.1931°
  South: 19.0731°
  East:  72.9786°
  West:  72.8516°
  Area:  0.1270° × 0.1200°


--- GeoJSON Mini Map ---

MINI MAP (72.85°W to 72.98°E, 19.07°S to 19.19°N):
┌─────────────────────────────────────────┐
│·········································│
│············■■■■■■■■■■■■■■■■■············│
│········■■■■■■■■■■■■■■■■■■■■■■■■■········│
│······■■■■■■■■■■■■■■■■■■■■■■■■■■■■■······│
│····■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■····│
│···■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■···│
│··■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■··│
│·■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■·│
│·■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■·│
│·■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■·│
│·■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■·│
│·■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■·│
│··■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■··│
│···■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■···│
│····■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■····│
│······■■■■■■■■■■■■■■■■■■■■■■■■■■■■■······│
│········■■■■■■■■■■■■■■■■■■■■■■■■■········│
│············■■■■■■■■■■■■■■■■■············│
│·········································│
└─────────────────────────────────────────┘
  = Inside the shape
 · = Outside the shape
  → Downloading ERA5 data (attempt 1/6)...
2025-07-19 23:25:02,358 INFO [2024-09-26T00:00:00] Watch our [Forum](https://forum.ecmwf.int/) for Announcements, news and other discussed topics.
INFO:datapi.legacy_api_client:[2024-09-26T00:00:00] Watch our [Forum](https://forum.ecmwf.int/) for Announcements, news and other discussed topics.
2025-07-19 23:25:03,018 INFO Request ID is 4f89b672-7b0b-429e-8474-5bd1e51e3e85
INFO:datapi.legacy_api_client:Request ID is 4f89b672-7b0b-429e-8474-5bd1e51e3e85
2025-07-19 23:25:03,173 INFO status has been updated to accepted
INFO:datapi.legacy_api_client:status has been updated to accepted
2025-07-19 23:25:11,938 INFO status has been updated to successful
INFO:datapi.legacy_api_client:status has been updated to successful
  ✓ Download completed: C:\Users\ATHARV~1\AppData\Local\Temp\point_test.zip
Extracting zip file: C:\Users\ATHARV~1\AppData\Local\Temp\point_test.zip
Extracted NetCDF files:
  - C:\Users\ATHARV~1\AppData\Local\Temp\point_test\data_stream-oper_stepType-accum.nc
  - C:\Users\ATHARV~1\AppData\Local\Temp\point_test\data_stream-oper_stepType-instant.nc

Processing downloaded data:
- Found 2 file(s)
Starting filtering process...
→ Extracting unique lat/lon coordinates from dataset...
✓ Found 4 unique lat/lon combinations
→ Filtering unique coordinates against polygon...
→ Filtering original dataset using inside coordinates...
  Filtering DataFrame rows...

--- Final Filtering Results ---
Total processing time: 0.02 seconds
Final DataFrame shape: (336, 7)
Rows in final dataset: 336
AGGREGATING DATA (DAILY)
Aggregating data to daily frequency...
Aggregation completed in:   0.01 seconds

Saving files to output directory: point_test_output
  Saved final data to: point_test_output\point_test_daily_data.csv
  Saved unique coordinates to: point_test_output\point_test_unique_latlongs.csv
  Saved raw data to: point_test_output\point_test_raw_data.csv

============================================================
PROCESSING COMPLETE
============================================================

RESULTS SUMMARY:
----------------------------------------
Variables processed: 2
Time period:         2024-08-01 to 2024-08-14
Final output shape:  (14, 6)
Total complete processing time: 13.06 seconds

First 5 rows of aggregated data:
         tp         t2m  year  month  day        date
0  0.008118  300.662445  2024      8    1  2024-08-01
1  0.013038  300.330231  2024      8    2  2024-08-02
2  0.033061  300.136017  2024      8    3  2024-08-03
3  0.041023  300.196167  2024      8    4  2024-08-04
4  0.007252  300.486237  2024      8    5  2024-08-05

============================================================
ERA5 SINGLE LEVEL PROCESSING COMPLETED SUCCESSFULLY
============================================================
# output will be more verbose since explicitly set to 2

df = varunayan.era5ify_point(
    request_id="point_test_pressure",
    variables=["temperature", "specific_humidity"],
    start_date="2024-08-1",
    end_date="2024-08-14",
    latitude=19.1331,
    longitude=72.9151,
    dataset_type="pressure",
    pressure_levels=["1000", "925", "850"],
    frequency="daily",
    verbosity=2
)
✓ CDS API configuration is already set up and valid.

============================================================
STARTING ERA5 PRESSURE LEVEL PROCESSING
============================================================
Request ID: point_test_pressure
Variables: ['temperature', 'specific_humidity']
Pressure Levels: ['1000', '925', '850']
Date Range: 2024-08-01 to 2024-08-14
Frequency: daily
Resolution: 0.1°
GeoJSON File: C:\Users\ATHARV~1\AppData\Local\Temp\point_test_pressure_temp_geojson.json
✓ All inputs validated successfully

--- Bounding Box ---
✓ Bounding Box calculated:
  North: 19.1931°
  South: 19.0731°
  East:  72.9786°
  West:  72.8516°
  Area:  0.1270° × 0.1200°


--- GeoJSON Mini Map ---

MINI MAP (72.85°W to 72.98°E, 19.07°S to 19.19°N):
┌─────────────────────────────────────────┐
│·········································│
│············■■■■■■■■■■■■■■■■■············│
│········■■■■■■■■■■■■■■■■■■■■■■■■■········│
│······■■■■■■■■■■■■■■■■■■■■■■■■■■■■■······│
│····■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■····│
│···■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■···│
│··■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■··│
│·■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■·│
│·■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■·│
│·■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■·│
│·■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■·│
│·■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■·│
│··■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■··│
│···■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■···│
│····■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■····│
│······■■■■■■■■■■■■■■■■■■■■■■■■■■■■■······│
│········■■■■■■■■■■■■■■■■■■■■■■■■■········│
│············■■■■■■■■■■■■■■■■■············│
│·········································│
└─────────────────────────────────────────┘
  = Inside the shape
 · = Outside the shape

--- Processing Strategy ---
Using monthly dataset: False
Total days to process: 14
Max days per chunk: 14
Needs chunking: False
  → Downloading ERA5 data (attempt 1/6)...
2025-07-20 01:22:19,727 INFO [2024-09-26T00:00:00] Watch our [Forum](https://forum.ecmwf.int/) for Announcements, news and other discussed topics.
INFO:datapi.legacy_api_client:[2024-09-26T00:00:00] Watch our [Forum](https://forum.ecmwf.int/) for Announcements, news and other discussed topics.
2025-07-20 01:22:20,194 INFO Request ID is 1ad44007-38e3-4a8c-8ee1-c4714e1dae65
INFO:datapi.legacy_api_client:Request ID is 1ad44007-38e3-4a8c-8ee1-c4714e1dae65
2025-07-20 01:22:20,469 INFO status has been updated to accepted
INFO:datapi.legacy_api_client:status has been updated to accepted
2025-07-20 01:22:29,300 INFO status has been updated to running
INFO:datapi.legacy_api_client:status has been updated to running
2025-07-20 01:22:34,523 INFO status has been updated to successful
INFO:datapi.legacy_api_client:status has been updated to successful
  ✓ Download completed: C:\Users\ATHARV~1\AppData\Local\Temp\point_test_pressure.nc
Copying NetCDF file: C:\Users\ATHARV~1\AppData\Local\Temp\point_test_pressure.nc
Extracted NetCDF files:
  - C:\Users\ATHARV~1\AppData\Local\Temp\point_test_pressure\point_test_pressure.nc

Processing downloaded data:
- Found 1 file(s)
  Processing file 1/1: point_test_pressure.nc
  ✓ Loaded: Dimensions: Frozen({'valid_time': 336, 'pressure_level': 3, 'latitude': 2, 'longitude': 2})
Starting filtering process...
→ Extracting unique lat/lon coordinates from dataset...
✓ Found 4 unique lat/lon combinations
→ Filtering unique coordinates against polygon...
✓ Coordinate filtering completed in 0.00 seconds
  - Points inside: 1
  - Points outside: 3
  - Percentage inside: 25.00%
→ Filtering original dataset using inside coordinates...
  Converting dataset to DataFrame...
  ✓ Converted to DataFrame with 4032 rows
  ✓ Created lookup set with 1 coordinate pairs
  Filtering DataFrame rows...
  ✓ Filtered from 4032 to 1008 rows
✓ Dataset filtering completed in 0.01 seconds

--- Final Filtering Results ---
Total processing time: 0.06 seconds
Final DataFrame shape: (1008, 8)
Rows in final dataset: 1008
AGGREGATING DATA (DAILY)
Aggregating pressure level data to daily frequency...
Variables to average: ['t', 'q']
Including pressure_level in aggregation groups
Aggregation completed in:   0.01 seconds

Saving files to output directory: point_test_pressure_output
  Saved final data to: point_test_pressure_output\point_test_pressure_daily_data.csv
  Saved unique coordinates to: point_test_pressure_output\point_test_pressure_unique_latlongs.csv
  Saved raw data to: point_test_pressure_output\point_test_pressure_raw_data.csv

============================================================
PROCESSING COMPLETE
============================================================

RESULTS SUMMARY:
----------------------------------------
Variables processed: 2
Time period:         2024-08-01 to 2024-08-14
Final output shape:  (42, 6)
Total complete processing time: 18.13 seconds

First 5 rows of aggregated data:
            t         q  pressure_level  year  month  day
0  299.747986  0.018755          1000.0  2024      8    1
1  299.176788  0.018942          1000.0  2024      8    2
2  299.449615  0.019144          1000.0  2024      8    3
3  299.236053  0.018924          1000.0  2024      8    4
4  299.409882  0.018721          1000.0  2024      8    5

============================================================
ERA5 PRESSURE LEVEL PROCESSING COMPLETED SUCCESSFULLY
============================================================

Searching for variables#

Climate science has many variables. Varunayan allows you to search which variables are part of which dataset:

# varunayan.search_variable(pattern, dataset_type)
# pattern : str, pattern to search for in variable names from dataset in dataset_type
# dataset_type :str,  Dataset type to search ("single", "pressure", "all", or any other registered dataset, all by dedault)
varunayan.search_variable("teMp ", dataset_type="all")
=== SEARCH RESULTS (ALL LEVELS) ===
Pattern: 'temp'
Variables found: 21

--- Temperature And Pressure ---
1. 2m_dewpoint_temperature (from single levels)
   Description: Dew point temperature at 2 meters above the surface, representing the temperature at which air becomes saturated with moisture. Unit: Kelvin (K).

2. 2m_temperature (from single levels)
   Description: Air temperature at 2 meters above the surface, typically used to represent surface-level weather conditions. Unit: Kelvin (K).

3. ice_temperature_layer_1 (from single levels)
   Description: Temperature of the top layer of sea ice. This layer is most affected by atmospheric conditions. Unit: Kelvin (K).

4. ice_temperature_layer_2 (from single levels)
   Description: Temperature of the second layer of sea ice, representing deeper internal ice temperatures. Unit: Kelvin (K).

5. ice_temperature_layer_3 (from single levels)
   Description: Temperature of the third layer of sea ice, indicating mid-level internal ice temperature. Unit: Kelvin (K).

6. ice_temperature_layer_4 (from single levels)
   Description: Temperature of the deepest (fourth) layer of sea ice, typically least affected by surface variations. Unit: Kelvin (K).

7. maximum_2m_temperature_since_previous_post_processing (from single levels)
   Description: Maximum 2-meter air temperature recorded since the last post-processing cycle. Often used to estimate daily high temperature. Unit: Kelvin (K).

8. minimum_2m_temperature_since_previous_post_processing (from single levels)
   Description: Minimum 2-meter air temperature recorded since the last post-processing cycle. Often used to estimate daily low temperature. Unit: Kelvin (K).

9. sea_surface_temperature (from single levels)
   Description: Temperature of the ocean surface, typically the upper few millimeters. Important for weather forecasting and climate models. Unit: Kelvin (K).

10. skin_temperature (from single levels)
   Description: Temperature of the Earth's surface (land or sea) as perceived by a satellite sensor, also known as surface skin temperature. Unit: Kelvin (K).


--- Lake Variables ---
1. lake_bottom_temperature (from single levels)
   Description: Temperature at the bottom layer of the lake. Reflects long-term thermal state. Unit: Kelvin (K).

2. lake_ice_temperature (from single levels)
   Description: Temperature of the lake's ice layer. Unit: Kelvin (K).

3. lake_mix_layer_temperature (from single levels)
   Description: Temperature of the mixed layer in the lake. Unit: Kelvin (K).

4. lake_total_layer_temperature (from single levels)
   Description: Average temperature of the entire lake water column. Unit: Kelvin (K).


--- Snow Variables ---
1. temperature_of_snow_layer (from single levels)
   Description: Temperature of the snow layer at the surface. Unit: Kelvin (K).


--- Soil Variables ---
1. soil_temperature_level_1 (from single levels)
   Description: Soil temperature in the topmost layer (0–7 cm). Unit: Kelvin (K).

2. soil_temperature_level_2 (from single levels)
   Description: Soil temperature in the second layer (7–28 cm). Unit: Kelvin (K).

3. soil_temperature_level_3 (from single levels)
   Description: Soil temperature in the third layer (28–100 cm). Unit: Kelvin (K).

4. soil_temperature_level_4 (from single levels)
   Description: Soil temperature in the deepest layer (100–289 cm). Unit: Kelvin (K).


--- Vertical Integral Variables ---
1. vertical_integral_of_temperature (from single levels)
   Description: Vertical integral of temperature over atmospheric column. Unit: K·m


--- Pressure Levels ---
1. temperature (from pressure levels)
   Description: Air temperature at pressure level. Unit: K

Description of variables#

A detailed description for each variable is also available using describe_variables:

# varunayan.describe_variables(variable_names, dataset_type)
# variable_names : list, list of variable names to describe
# dataset_type : str, type of dataset (single or pressure, for single level or pressure level datasets)
varunayan.describe_variables(
    variable_names=["2m_temperature", "total_precipitation", "surface_pressure"],
    dataset_type="single",
)
=== Variable Descriptions (SINGLE LEVELS) ===

2m_temperature:
  Category: temperature_and_pressure
  Description: Air temperature at 2 meters above the surface, typically used to represent surface-level weather conditions. Unit: Kelvin (K).

total_precipitation:
  Category: precipitation_variables
  Description: Cumulative precipitation (convective + large-scale). Unit: meters (m) of water equivalent.

surface_pressure:
  Category: temperature_and_pressure
  Description: Atmospheric pressure at the surface of the Earth. Influenced by elevation and weather systems. Unit: Pascal (Pa).