climdata 0.0.3__tar.gz → 0.0.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of climdata might be problematic. Click here for more details.
- {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/docs.yml +1 -1
- climdata-0.0.5/.github/workflows/pypi.yml +43 -0
- {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/ubuntu.yml +0 -1
- {climdata-0.0.3 → climdata-0.0.5}/PKG-INFO +7 -1
- {climdata-0.0.3 → climdata-0.0.5}/climdata/__init__.py +1 -1
- {climdata-0.0.3 → climdata-0.0.5}/climdata/utils/utils_download.py +0 -1
- {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/PKG-INFO +7 -1
- {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/SOURCES.txt +0 -2
- {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/requires.txt +6 -0
- climdata-0.0.5/docs/climdata.md +4 -0
- climdata-0.0.5/docs/common.md +41 -0
- climdata-0.0.5/docs/index.md +193 -0
- {climdata-0.0.3 → climdata-0.0.5}/examples/extract_dwd_loc.ipynb +1 -54
- {climdata-0.0.3 → climdata-0.0.5}/mkdocs.yml +17 -21
- {climdata-0.0.3 → climdata-0.0.5}/pyproject.toml +2 -2
- {climdata-0.0.3 → climdata-0.0.5}/requirements.txt +6 -0
- climdata-0.0.5/tests/test_climdata.py +9 -0
- climdata-0.0.3/.github/workflows/pypi.yml +0 -34
- climdata-0.0.3/climdata/requirements.txt +0 -20
- climdata-0.0.3/docs/climdata.md +0 -4
- climdata-0.0.3/docs/common.md +0 -3
- climdata-0.0.3/docs/examples/run_downloader.ipynb +0 -1244
- climdata-0.0.3/docs/index.md +0 -16
- climdata-0.0.3/tests/test_climdata.py +0 -21
- {climdata-0.0.3 → climdata-0.0.5}/.editorconfig +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/docs-build.yml +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/installation.yml +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/macos.yml +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/windows.yml +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/.gitignore +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/LICENSE +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/MANIFEST.in +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/README.md +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata/__main__.py +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata/conf/config.yaml +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata/conf/mappings/parameters.yaml +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata/conf/mappings/variables.yaml +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata/datasets/CMIP.py +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata/datasets/DWD.py +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata/datasets/MSWX.py +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata/main.py +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata/utils/__init__.py +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata/utils/config.py +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/dependency_links.txt +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/entry_points.txt +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/top_level.txt +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/docs/changelog.md +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/docs/contributing.md +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/docs/faq.md +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/docs/installation.md +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/docs/overrides/main.html +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/docs/usage.md +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/dwd_tas_LAT52.507_LON14.1372_1989-01-01_2020-12-31.csv +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/requirements_dev.txt +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/setup.cfg +0 -0
- {climdata-0.0.3 → climdata-0.0.5}/tests/__init__.py +0 -0
|
@@ -23,7 +23,7 @@ jobs:
|
|
|
23
23
|
pip install .
|
|
24
24
|
- name: Discover typos with codespell
|
|
25
25
|
run: |
|
|
26
|
-
codespell --skip="*.csv,*.geojson,*.json,*.js,*.html,*cff,./.git" --ignore-words-list="aci,hist"
|
|
26
|
+
codespell --skip="*.csv,*.geojson,*.json,*.js,*.html,*cff,./.git" --ignore-words-list="aci,hist" || true
|
|
27
27
|
- name: PKG-TEST
|
|
28
28
|
run: |
|
|
29
29
|
python -m unittest discover tests/
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*" # Trigger when pushing tags like v0.1.0
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
release:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
# 1️⃣ Checkout code
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
with:
|
|
16
|
+
fetch-depth: 0
|
|
17
|
+
|
|
18
|
+
# 2️⃣ Set up Python
|
|
19
|
+
- name: Set up Python
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.11"
|
|
23
|
+
|
|
24
|
+
# 3️⃣ Upgrade pip and install build/test dependencies
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: |
|
|
27
|
+
python -m pip install --upgrade pip
|
|
28
|
+
pip install -r requirements.txt
|
|
29
|
+
pip install build twine wheel setuptools
|
|
30
|
+
|
|
31
|
+
# 4️⃣ Run unit tests
|
|
32
|
+
- name: Run tests
|
|
33
|
+
run: |
|
|
34
|
+
python -m unittest discover tests/
|
|
35
|
+
|
|
36
|
+
# 5️⃣ Build the package
|
|
37
|
+
- name: Build package
|
|
38
|
+
run: python -m build
|
|
39
|
+
|
|
40
|
+
# 6️⃣ Publish to PyPI
|
|
41
|
+
- name: Publish to PyPI
|
|
42
|
+
run: |
|
|
43
|
+
python -m twine upload dist/* -u __token__ -p ${{ secrets.PYPI_API_TOKEN }} --verbose
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: climdata
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.5
|
|
4
4
|
Summary: This project automates the fetching and extraction of weather data from multiple sources — such as MSWX, DWD HYRAS, ERA5-Land, NASA-NEX-GDDP, and more — for a given location and time range.
|
|
5
5
|
Author-email: Kaushik Muduchuru <kaushik.reddy.m@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -35,6 +35,8 @@ Requires-Dist: pymannkendall
|
|
|
35
35
|
Requires-Dist: tqdm
|
|
36
36
|
Requires-Dist: zarr
|
|
37
37
|
Requires-Dist: ipyleaflet
|
|
38
|
+
Requires-Dist: wetterdienst
|
|
39
|
+
Requires-Dist: pint-pandas
|
|
38
40
|
Requires-Dist: hydra-core
|
|
39
41
|
Requires-Dist: intake
|
|
40
42
|
Requires-Dist: intake-esm
|
|
@@ -54,6 +56,10 @@ Requires-Dist: scikit-learn
|
|
|
54
56
|
Requires-Dist: xgboost
|
|
55
57
|
Requires-Dist: optuna
|
|
56
58
|
Requires-Dist: gitpython
|
|
59
|
+
Requires-Dist: beautifulsoup4
|
|
60
|
+
Requires-Dist: google-auth
|
|
61
|
+
Requires-Dist: google-api-python-client
|
|
62
|
+
Requires-Dist: ipdb
|
|
57
63
|
Provides-Extra: all
|
|
58
64
|
Requires-Dist: pandas; extra == "all"
|
|
59
65
|
Provides-Extra: extra
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: climdata
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.5
|
|
4
4
|
Summary: This project automates the fetching and extraction of weather data from multiple sources — such as MSWX, DWD HYRAS, ERA5-Land, NASA-NEX-GDDP, and more — for a given location and time range.
|
|
5
5
|
Author-email: Kaushik Muduchuru <kaushik.reddy.m@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -35,6 +35,8 @@ Requires-Dist: pymannkendall
|
|
|
35
35
|
Requires-Dist: tqdm
|
|
36
36
|
Requires-Dist: zarr
|
|
37
37
|
Requires-Dist: ipyleaflet
|
|
38
|
+
Requires-Dist: wetterdienst
|
|
39
|
+
Requires-Dist: pint-pandas
|
|
38
40
|
Requires-Dist: hydra-core
|
|
39
41
|
Requires-Dist: intake
|
|
40
42
|
Requires-Dist: intake-esm
|
|
@@ -54,6 +56,10 @@ Requires-Dist: scikit-learn
|
|
|
54
56
|
Requires-Dist: xgboost
|
|
55
57
|
Requires-Dist: optuna
|
|
56
58
|
Requires-Dist: gitpython
|
|
59
|
+
Requires-Dist: beautifulsoup4
|
|
60
|
+
Requires-Dist: google-auth
|
|
61
|
+
Requires-Dist: google-api-python-client
|
|
62
|
+
Requires-Dist: ipdb
|
|
57
63
|
Provides-Extra: all
|
|
58
64
|
Requires-Dist: pandas; extra == "all"
|
|
59
65
|
Provides-Extra: extra
|
|
@@ -21,7 +21,6 @@ requirements_dev.txt
|
|
|
21
21
|
climdata/__init__.py
|
|
22
22
|
climdata/__main__.py
|
|
23
23
|
climdata/main.py
|
|
24
|
-
climdata/requirements.txt
|
|
25
24
|
climdata.egg-info/PKG-INFO
|
|
26
25
|
climdata.egg-info/SOURCES.txt
|
|
27
26
|
climdata.egg-info/dependency_links.txt
|
|
@@ -45,7 +44,6 @@ docs/faq.md
|
|
|
45
44
|
docs/index.md
|
|
46
45
|
docs/installation.md
|
|
47
46
|
docs/usage.md
|
|
48
|
-
docs/examples/run_downloader.ipynb
|
|
49
47
|
docs/overrides/main.html
|
|
50
48
|
examples/extract_dwd_loc.ipynb
|
|
51
49
|
tests/__init__.py
|
|
@@ -16,6 +16,8 @@ pymannkendall
|
|
|
16
16
|
tqdm
|
|
17
17
|
zarr
|
|
18
18
|
ipyleaflet
|
|
19
|
+
wetterdienst
|
|
20
|
+
pint-pandas
|
|
19
21
|
hydra-core
|
|
20
22
|
intake
|
|
21
23
|
intake-esm
|
|
@@ -35,6 +37,10 @@ scikit-learn
|
|
|
35
37
|
xgboost
|
|
36
38
|
optuna
|
|
37
39
|
gitpython
|
|
40
|
+
beautifulsoup4
|
|
41
|
+
google-auth
|
|
42
|
+
google-api-python-client
|
|
43
|
+
ipdb
|
|
38
44
|
|
|
39
45
|
[all]
|
|
40
46
|
pandas
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Common Concepts in climdata
|
|
2
|
+
|
|
3
|
+
This page describes common terminology, configuration patterns, and reusable components in the `climdata` package.
|
|
4
|
+
|
|
5
|
+
## Configuration Files
|
|
6
|
+
|
|
7
|
+
- All configuration is managed via Hydra and YAML files in the `conf/` directory.
|
|
8
|
+
- See [`config.yaml`](../climdata/conf/config.yaml) for the main entry point.
|
|
9
|
+
|
|
10
|
+
## Standard Variable Names
|
|
11
|
+
|
|
12
|
+
- Variables follow CF conventions (see [`variables.yaml`](../climdata/conf/mappings/variables.yaml)).
|
|
13
|
+
- Example: `tas` for air temperature, `pr` for precipitation.
|
|
14
|
+
|
|
15
|
+
## Output Schema
|
|
16
|
+
|
|
17
|
+
All outputs are standardized to the following columns:
|
|
18
|
+
|
|
19
|
+
| Column | Description |
|
|
20
|
+
|-------------|----------------------------------|
|
|
21
|
+
| latitude | Latitude of observation/grid |
|
|
22
|
+
| longitude | Longitude of observation/grid |
|
|
23
|
+
| time | Timestamp |
|
|
24
|
+
| source | Data source/provider |
|
|
25
|
+
| variable | Variable name |
|
|
26
|
+
| value | Observed or modeled value |
|
|
27
|
+
| units | Units of measurement |
|
|
28
|
+
|
|
29
|
+
## Regions and Bounds
|
|
30
|
+
|
|
31
|
+
- Regions are defined in `config.yaml` under `bounds`.
|
|
32
|
+
- Example: `europe`, `global`.
|
|
33
|
+
|
|
34
|
+
## Usage Patterns
|
|
35
|
+
|
|
36
|
+
- Use `climdata.load_config()` to load configuration.
|
|
37
|
+
- Use `climdata.DWD(cfg)` or `climdata.MSWX(cfg)` for dataset access.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
Add more shared concepts as your documentation grows.
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Welcome to climdata
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
[](https://pypi.python.org/pypi/climdata)
|
|
6
|
+
[](https://anaconda.org/conda-forge/climdata)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
**This project automates the fetching and extraction of weather data from multiple sources — such as MSWX, DWD HYRAS, ERA5-Land, NASA-NEX-GDDP, and more — for a given location and time range.**
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
- Free software: MIT License
|
|
13
|
+
- Documentation: https://Kaushikreddym.github.io/climdata
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## 📦 Data Sources
|
|
17
|
+
|
|
18
|
+
This project utilizes climate and weather datasets from a variety of data sources:
|
|
19
|
+
|
|
20
|
+
- **DWD Station Data**
|
|
21
|
+
Retrieved using the [DWD API](https://wetterdienst.readthedocs.io/en/latest/index.html). Provides high-resolution observational data from Germany's national meteorological service.
|
|
22
|
+
|
|
23
|
+
- **MSWX (Multi-Source Weather)**
|
|
24
|
+
Accessed via [GloH2O's Google Drive](https://www.gloh2o.org/mswx/). Combines multiple satellite and reanalysis datasets for global gridded weather variables.
|
|
25
|
+
|
|
26
|
+
- **DWD HYRAS**
|
|
27
|
+
Downloaded from the [DWD Open Data FTP Server](https://opendata.dwd.de/). Offers gridded observational data for Central Europe, useful for hydrological applications.
|
|
28
|
+
|
|
29
|
+
- **ERA5, ERA5-Land**
|
|
30
|
+
Accessed through the [Google Earth Engine](https://developers.google.com/earth-engine/datasets/catalog). Provides reanalysis datasets from ECMWF with high temporal and spatial resolution.
|
|
31
|
+
|
|
32
|
+
- **NASA NEX-GDDP**
|
|
33
|
+
Also retrieved via Earth Engine. Downscaled CMIP5/CMIP6 climate projections developed by NASA for local-scale impact assessment.
|
|
34
|
+
|
|
35
|
+
- **CMIP6**
|
|
36
|
+
Obtained using [ESGPull](https://esgf.github.io/esgf-download/) from the ESGF data nodes. Includes multi-model climate simulations following various future scenarios.
|
|
37
|
+
|
|
38
|
+
It supports:
|
|
39
|
+
✅ Automatic file download (e.g., from Google Drive or online servers)
|
|
40
|
+
✅ Flexible configuration via `config.yaml`
|
|
41
|
+
✅ Time series extraction for a user-specified latitude/longitude
|
|
42
|
+
✅ Batch processing for many locations from a CSV file
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
## 🚀 How to Run and Explore Configurations
|
|
46
|
+
|
|
47
|
+
### ✅ Run a download job with custom overrides
|
|
48
|
+
|
|
49
|
+
You can run the data download script and override any configuration value directly in the command line using [Hydra](https://hydra.cc/).
|
|
50
|
+
|
|
51
|
+
For example, to download **ERA5-Land** data for **January 1–4, 2020**, run:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
python download_location.py dataset='era5-land' \
|
|
55
|
+
time_range.start_date='2020-01-01' \
|
|
56
|
+
time_range.end_date='2020-01-04' \
|
|
57
|
+
location.lat=52.5200 \
|
|
58
|
+
location.lon=13.4050
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
For downloading multiple locations from a csv file `locations.csv`, run:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
python download_csv.py dataset='era5-land' \
|
|
65
|
+
time_range.start_date='2020-01-01' \
|
|
66
|
+
time_range.end_date='2020-01-04' \
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
an example `locations.csv` can be
|
|
70
|
+
|
|
71
|
+
```csv
|
|
72
|
+
lat,lon,city
|
|
73
|
+
52.5200,13.4050,berlin
|
|
74
|
+
48.1351,11.5820,munich
|
|
75
|
+
53.5511,9.9937,hamburg
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**What this does:**
|
|
79
|
+
|
|
80
|
+
- `dataset='era5-land'` tells the script which dataset to use.
|
|
81
|
+
- `time_range.start_date` and `time_range.end_date` override the default dates in your YAML config.
|
|
82
|
+
- All other settings use your existing `config.yaml` in the `conf` folder.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### ✅ List all available datasets defined in your configuration
|
|
87
|
+
|
|
88
|
+
To see what datasets are available (without running the downloader), you can dump the **resolved configuration** and filter it using [`yq`](https://github.com/mikefarah/yq).
|
|
89
|
+
|
|
90
|
+
Run:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
python download_location.py --cfg job | yq '.mappings | keys'
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**What this does:**
|
|
97
|
+
|
|
98
|
+
- `--cfg job` tells Hydra to output the final resolved configuration and exit.
|
|
99
|
+
- `| yq '.mappings | keys'` filters the output to show only the dataset names defined under the `mappings` section.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
### ⚡️ Tip
|
|
104
|
+
|
|
105
|
+
- Make sure `yq` is installed:
|
|
106
|
+
```bash
|
|
107
|
+
brew install yq # macOS
|
|
108
|
+
# OR
|
|
109
|
+
pip install yq
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
- To see available variables for a specific dataset (for example `mswx`), run:
|
|
113
|
+
```bash
|
|
114
|
+
python download_location.py --cfg job | yq '.mappings.mswx.variables | keys'
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## ⚙️ **Key Features**
|
|
122
|
+
|
|
123
|
+
- **Supports multiple weather data providers**
|
|
124
|
+
- **Uses `xarray` for robust gridded data extraction**
|
|
125
|
+
- **Handles curvilinear and rectilinear grids**
|
|
126
|
+
- **Uses a Google Drive Service Account for secure downloads**
|
|
127
|
+
- **Easily reproducible runs using Hydra**
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
## 📡 Google Drive API Setup
|
|
131
|
+
|
|
132
|
+
This project uses the **Google Drive API** with a **Service Account** to securely download weather data files from a shared Google Drive folder.
|
|
133
|
+
|
|
134
|
+
Follow these steps to set it up correctly:
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### ✅ 1. Create a Google Cloud Project
|
|
139
|
+
|
|
140
|
+
- Go to [Google Cloud Console](https://console.cloud.google.com/).
|
|
141
|
+
- Click **“Select Project”** → **“New Project”**.
|
|
142
|
+
- Enter a project name (e.g. `WeatherDataDownloader`).
|
|
143
|
+
- Click **“Create”**.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### ✅ 2. Enable the Google Drive API
|
|
148
|
+
|
|
149
|
+
- In the left sidebar, go to **APIs & Services → Library**.
|
|
150
|
+
- Search for **“Google Drive API”**.
|
|
151
|
+
- Click it, then click **“Enable”**.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
### ✅ 3. Create a Service Account
|
|
156
|
+
|
|
157
|
+
- Go to **IAM & Admin → Service Accounts**.
|
|
158
|
+
- Click **“Create Service Account”**.
|
|
159
|
+
- Enter a name (e.g. `weather-downloader-sa`).
|
|
160
|
+
- Click **“Create and Continue”**. You can skip assigning roles for read-only Drive access.
|
|
161
|
+
- Click **“Done”** to finish.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
### ✅ 4. Create and Download a JSON Key
|
|
166
|
+
|
|
167
|
+
- After creating the Service Account, click on its email address to open its details.
|
|
168
|
+
- Go to the **“Keys”** tab.
|
|
169
|
+
- Click **“Add Key” → “Create new key”** → choose **`JSON`** → click **“Create”**.
|
|
170
|
+
- A `.json` key file will download automatically. **Store it securely!**
|
|
171
|
+
|
|
172
|
+
### ✅ 5. Store the JSON Key Securely
|
|
173
|
+
|
|
174
|
+
- Place the downloaded `.json` key in the conf folder with the name service.json.
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
## Setup Instructions fro ERA5 api
|
|
178
|
+
|
|
179
|
+
### 1. CDS API Key Setup
|
|
180
|
+
|
|
181
|
+
1. Create a free account on the
|
|
182
|
+
[Copernicus Climate Data Store](https://cds.climate.copernicus.eu/user/register)
|
|
183
|
+
2. Once logged in, go to your [user profile](https://cds.climate.copernicus.eu/user)
|
|
184
|
+
3. Click on the "Show API key" button
|
|
185
|
+
4. Create the file `~/.cdsapirc` with the following content:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
url: https://cds.climate.copernicus.eu/api/v2
|
|
189
|
+
key: <your-api-key-here>
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
5. Make sure the file has the correct permissions: `chmod 600 ~/.cdsapirc`
|
|
193
|
+
|
|
@@ -64,59 +64,6 @@
|
|
|
64
64
|
" ])"
|
|
65
65
|
]
|
|
66
66
|
},
|
|
67
|
-
{
|
|
68
|
-
"cell_type": "code",
|
|
69
|
-
"execution_count": null,
|
|
70
|
-
"id": "e90e98ba",
|
|
71
|
-
"metadata": {},
|
|
72
|
-
"outputs": [
|
|
73
|
-
{
|
|
74
|
-
"data": {
|
|
75
|
-
"text/html": [
|
|
76
|
-
"\n",
|
|
77
|
-
" <style>\n",
|
|
78
|
-
" .geemap-dark {\n",
|
|
79
|
-
" --jp-widgets-color: white;\n",
|
|
80
|
-
" --jp-widgets-label-color: white;\n",
|
|
81
|
-
" --jp-ui-font-color1: white;\n",
|
|
82
|
-
" --jp-layout-color2: #454545;\n",
|
|
83
|
-
" background-color: #383838;\n",
|
|
84
|
-
" }\n",
|
|
85
|
-
"\n",
|
|
86
|
-
" .geemap-dark .jupyter-button {\n",
|
|
87
|
-
" --jp-layout-color3: #383838;\n",
|
|
88
|
-
" }\n",
|
|
89
|
-
"\n",
|
|
90
|
-
" .geemap-colab {\n",
|
|
91
|
-
" background-color: var(--colab-primary-surface-color, white);\n",
|
|
92
|
-
" }\n",
|
|
93
|
-
"\n",
|
|
94
|
-
" .geemap-colab .jupyter-button {\n",
|
|
95
|
-
" --jp-layout-color3: var(--colab-primary-surface-color, white);\n",
|
|
96
|
-
" }\n",
|
|
97
|
-
" </style>\n",
|
|
98
|
-
" "
|
|
99
|
-
],
|
|
100
|
-
"text/plain": [
|
|
101
|
-
"<IPython.core.display.HTML object>"
|
|
102
|
-
]
|
|
103
|
-
},
|
|
104
|
-
"metadata": {},
|
|
105
|
-
"output_type": "display_data"
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"data": {
|
|
109
|
-
"text/plain": [
|
|
110
|
-
"'degC'"
|
|
111
|
-
]
|
|
112
|
-
},
|
|
113
|
-
"execution_count": 9,
|
|
114
|
-
"metadata": {},
|
|
115
|
-
"output_type": "execute_result"
|
|
116
|
-
}
|
|
117
|
-
],
|
|
118
|
-
"source": []
|
|
119
|
-
},
|
|
120
67
|
{
|
|
121
68
|
"cell_type": "code",
|
|
122
69
|
"execution_count": 10,
|
|
@@ -1130,7 +1077,7 @@
|
|
|
1130
1077
|
"kernelspec": {
|
|
1131
1078
|
"display_name": "sdba",
|
|
1132
1079
|
"language": "python",
|
|
1133
|
-
"name": "
|
|
1080
|
+
"name": "python3"
|
|
1134
1081
|
},
|
|
1135
1082
|
"language_info": {
|
|
1136
1083
|
"codemirror_mode": {
|
|
@@ -9,8 +9,6 @@ copyright: "Copyright © 2024 - 2024 Kaushik Muduchuru"
|
|
|
9
9
|
theme:
|
|
10
10
|
palette:
|
|
11
11
|
- scheme: default
|
|
12
|
-
# primary: blue
|
|
13
|
-
# accent: indigo
|
|
14
12
|
toggle:
|
|
15
13
|
icon: material/toggle-switch-off-outline
|
|
16
14
|
name: Switch to dark mode
|
|
@@ -23,31 +21,32 @@ theme:
|
|
|
23
21
|
name: material
|
|
24
22
|
icon:
|
|
25
23
|
repo: fontawesome/brands/github
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
custom_dir: "docs/overrides"
|
|
25
|
+
font:
|
|
26
|
+
text: Google Sans
|
|
27
|
+
code: Regular
|
|
28
28
|
features:
|
|
29
29
|
- navigation.instant
|
|
30
30
|
- navigation.tracking
|
|
31
31
|
- navigation.top
|
|
32
32
|
- search.highlight
|
|
33
33
|
- search.share
|
|
34
|
-
custom_dir: "docs/overrides"
|
|
35
|
-
font:
|
|
36
|
-
text: Google Sans
|
|
37
|
-
code: Regular
|
|
38
34
|
|
|
39
35
|
plugins:
|
|
40
36
|
- search
|
|
41
|
-
- mkdocstrings
|
|
37
|
+
- mkdocstrings:
|
|
38
|
+
handlers:
|
|
39
|
+
python:
|
|
40
|
+
options:
|
|
41
|
+
show_root_heading: true
|
|
42
42
|
- git-revision-date
|
|
43
43
|
- git-revision-date-localized:
|
|
44
44
|
enable_creation_date: true
|
|
45
45
|
type: timeago
|
|
46
|
-
# - pdf-export
|
|
47
46
|
- mkdocs-jupyter:
|
|
48
|
-
include_source:
|
|
49
|
-
ignore_h1_titles:
|
|
50
|
-
execute:
|
|
47
|
+
include_source: true
|
|
48
|
+
ignore_h1_titles: true
|
|
49
|
+
execute: false
|
|
51
50
|
allow_errors: false
|
|
52
51
|
ignore: ["conf.py"]
|
|
53
52
|
execute_ignore: ["*ignore.ipynb"]
|
|
@@ -66,11 +65,6 @@ markdown_extensions:
|
|
|
66
65
|
- toc:
|
|
67
66
|
permalink: true
|
|
68
67
|
|
|
69
|
-
# extra:
|
|
70
|
-
# analytics:
|
|
71
|
-
# provider: google
|
|
72
|
-
# property: UA-XXXXXXXXX-X
|
|
73
|
-
|
|
74
68
|
nav:
|
|
75
69
|
- Home: index.md
|
|
76
70
|
- Installation: installation.md
|
|
@@ -80,7 +74,9 @@ nav:
|
|
|
80
74
|
- Changelog: changelog.md
|
|
81
75
|
- Report Issues: https://github.com/Kaushikreddym/climdata/issues
|
|
82
76
|
- Examples:
|
|
83
|
-
- examples/intro.ipynb
|
|
77
|
+
- Intro Notebook: examples/intro.ipynb
|
|
78
|
+
- Downloader Notebook: examples/run_downloader.ipynb
|
|
84
79
|
- API Reference:
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
- climdata package: climdata # points to top-level package, not climdata.climdata
|
|
81
|
+
- utils module: climdata.utils
|
|
82
|
+
- datasets module: climdata.datasets
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "climdata"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.5"
|
|
4
4
|
dynamic = [
|
|
5
5
|
"dependencies",
|
|
6
6
|
]
|
|
@@ -52,7 +52,7 @@ universal = true
|
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
[tool.bumpversion]
|
|
55
|
-
current_version = "0.0.
|
|
55
|
+
current_version = "0.0.5"
|
|
56
56
|
commit = true
|
|
57
57
|
tag = true
|
|
58
58
|
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
name: Release
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
tags:
|
|
6
|
-
- "v*" # trigger when pushing tags like v0.1.0
|
|
7
|
-
|
|
8
|
-
jobs:
|
|
9
|
-
release:
|
|
10
|
-
runs-on: ubuntu-latest
|
|
11
|
-
|
|
12
|
-
steps:
|
|
13
|
-
- uses: actions/checkout@v4
|
|
14
|
-
with:
|
|
15
|
-
fetch-depth: 0
|
|
16
|
-
|
|
17
|
-
- name: Set up Python
|
|
18
|
-
uses: actions/setup-python@v5
|
|
19
|
-
with:
|
|
20
|
-
python-version: "3.11"
|
|
21
|
-
|
|
22
|
-
- name: Install build dependencies
|
|
23
|
-
run: |
|
|
24
|
-
python -m pip install --upgrade pip
|
|
25
|
-
pip install build twine
|
|
26
|
-
|
|
27
|
-
- name: Build package
|
|
28
|
-
run: python -m build
|
|
29
|
-
|
|
30
|
-
- name: Publish to PyPI
|
|
31
|
-
uses: pypa/gh-action-pypi-publish@release/v1
|
|
32
|
-
with:
|
|
33
|
-
user: __token__
|
|
34
|
-
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
beautifulsoup4==4.13.5
|
|
2
|
-
earthengine_api==1.5.19
|
|
3
|
-
geemap==0.35.3
|
|
4
|
-
geopandas==1.0.1
|
|
5
|
-
google_api_python_client==2.172.0
|
|
6
|
-
hydra-core==1.3.2
|
|
7
|
-
ipdb==0.13.13
|
|
8
|
-
numpy==2.3.2
|
|
9
|
-
omegaconf==2.3.0
|
|
10
|
-
pandas==2.3.2
|
|
11
|
-
Pint==0.24.4
|
|
12
|
-
Pint_Pandas==0.7.1
|
|
13
|
-
protobuf==6.32.0
|
|
14
|
-
PyYAML==6.0.2
|
|
15
|
-
PyYAML==6.0.2
|
|
16
|
-
Requests==2.32.5
|
|
17
|
-
scipy==1.16.1
|
|
18
|
-
tqdm==4.67.1
|
|
19
|
-
wetterdienst==0.111.0
|
|
20
|
-
xarray==2025.4.0
|
climdata-0.0.3/docs/climdata.md
DELETED
climdata-0.0.3/docs/common.md
DELETED