wxdata 1.5__tar.gz → 1.6__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.
- {wxdata-1.5 → wxdata-1.6}/PKG-INFO +143 -29
- wxdata-1.5/src/wxdata.egg-info/PKG-INFO → wxdata-1.6/README.md +129 -47
- {wxdata-1.5 → wxdata-1.6}/pyproject.toml +14 -12
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/__init__.py +25 -5
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigefs/url_scanners.py +6 -6
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigfs/aigfs.py +0 -1
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigfs/url_scanners.py +2 -2
- wxdata-1.6/src/wxdata/cfs/__init__.py +4 -0
- wxdata-1.6/src/wxdata/cfs/cfs.py +692 -0
- wxdata-1.6/src/wxdata/cfs/file_scanner.py +44 -0
- wxdata-1.6/src/wxdata/cfs/url_scanners.py +1048 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/client/client.py +191 -32
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/url_scanners.py +6 -6
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/fems/__init__.py +1 -1
- wxdata-1.5/src/wxdata/fems/fems.py → wxdata-1.6/src/wxdata/fems/observations.py +8 -8
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/url_scanners.py +13 -6
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gfs/url_scanners.py +13 -6
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/hgefs/url_scanner.py +2 -2
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/__init__.py +1 -0
- wxdata-1.6/src/wxdata/post_processors/cfs_post_processing.py +1761 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/gefs_post_processing.py +3 -3
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/gfs_post_processing.py +1 -0
- wxdata-1.6/src/wxdata/radar/__init__.py +4 -0
- wxdata-1.6/src/wxdata/radar/nexrad2.py +220 -0
- wxdata-1.6/src/wxdata/radar/url_scanner.py +245 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/__init__.py +1 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/nomads_gribfilter.py +2 -2
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/xmacis2_cleanup.py +16 -0
- wxdata-1.5/README.md → wxdata-1.6/src/wxdata.egg-info/PKG-INFO +161 -17
- {wxdata-1.5 → wxdata-1.6}/src/wxdata.egg-info/SOURCES.txt +9 -1
- wxdata-1.6/src/wxdata.egg-info/requires.txt +15 -0
- wxdata-1.5/src/wxdata.egg-info/requires.txt +0 -13
- {wxdata-1.5 → wxdata-1.6}/LICENSE +0 -0
- {wxdata-1.5 → wxdata-1.6}/setup.cfg +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigefs/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigefs/aigefs.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigefs/paths.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigfs/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigfs/paths.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/calc/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/calc/derived_fields.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/calc/kinematics.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/calc/thermodynamics.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/calc/unit_conversion.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/client/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/ecmwf.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/file_funcs.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/keys.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/parsers.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/paths.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/fems/meta_data.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/exception_messages.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/file_funcs.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/gefs.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/paths.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/process.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gfs/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gfs/exception_messages.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gfs/gfs.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/gfs/paths.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/hgefs/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/hgefs/hgefs.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/hgefs/paths.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/metars/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/metars/_clean_data.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/metars/metar_obs.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/noaa/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/noaa/nws.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/aigefs_post_processing.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/aigfs_post_processing.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/ecmwf_post_processing.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/hgefs_post_processing.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/rtma_post_processing.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/file_funcs.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/keys.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/process.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/rtma.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/url_scanners.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/soundings/__init__.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/soundings/_exceptions.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/soundings/wyoming_soundings.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/coords.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/exceptions.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/file_funcs.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/file_scanner.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/progress_bar.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/recycle_bin.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/scripts.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/tools.py +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata.egg-info/dependency_links.txt +0 -0
- {wxdata-1.5 → wxdata-1.6}/src/wxdata.egg-info/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wxdata
|
|
3
|
-
Version: 1.
|
|
4
|
-
Summary: A Python
|
|
3
|
+
Version: 1.6
|
|
4
|
+
Summary: A Python package of end-to-end weather data clients & raw data clients with VPN/PROXY support, data processors that decode variable keys from GRIB format into a plain-language format & various tools for assisting Python automated workflows, querying meteorological datasets and filling gaps in meteorological data.
|
|
5
5
|
Author: Eric J. Drewitz
|
|
6
6
|
Project-URL: Documentation, https://github.com/edrewitz/wxdata/blob/main/Documentation/Landing%20Page.md
|
|
7
7
|
Project-URL: Repository, https://github.com/edrewitz/wxdata/tree/main
|
|
@@ -13,19 +13,21 @@ Classifier: Operating System :: OS Independent
|
|
|
13
13
|
Requires-Python: >=3.10
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE
|
|
16
|
-
Requires-Dist: metpy>=1.
|
|
17
|
-
Requires-Dist: numpy>=
|
|
18
|
-
Requires-Dist: pandas>=2.
|
|
19
|
-
Requires-Dist:
|
|
20
|
-
Requires-Dist:
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
16
|
+
Requires-Dist: metpy>=1.7.1
|
|
17
|
+
Requires-Dist: numpy>=2.2.6
|
|
18
|
+
Requires-Dist: pandas>=2.3.3
|
|
19
|
+
Requires-Dist: cartopy>=0.25.0
|
|
20
|
+
Requires-Dist: xarray>=2025.6.1
|
|
21
|
+
Requires-Dist: netcdf4>=1.7.3
|
|
22
|
+
Requires-Dist: shapeography>=1.2
|
|
23
|
+
Requires-Dist: beautifulsoup4>=4.14.3
|
|
24
|
+
Requires-Dist: requests>=2.32.5
|
|
25
|
+
Requires-Dist: cfgrib>=0.9.15.1
|
|
26
|
+
Requires-Dist: dask>=2025.11.0
|
|
26
27
|
Requires-Dist: tqdm>=4.67.3
|
|
27
28
|
Requires-Dist: ecmwf-opendata>=0.3.26
|
|
28
29
|
Requires-Dist: openpyxl>=3.1.5
|
|
30
|
+
Requires-Dist: arm-pyart>=2.2.0
|
|
29
31
|
Dynamic: license-file
|
|
30
32
|
|
|
31
33
|
# WxData
|
|
@@ -51,11 +53,26 @@ PIP Downloads:
|
|
|
51
53
|
|
|
52
54
|
**(C) Eric J. Drewitz 2025-2026**
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
A Python package consisting of the following:
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
1) End-to-end weather data clients with VPN/PROXY support
|
|
59
|
+
2) Raw data clients with VPN/PROXY support
|
|
60
|
+
3) Data processors that decode variable keys from GRIB format into a plain-language format
|
|
61
|
+
4) Various tools for assisting Python automated workflows, querying meteorological datasets and filling gaps in meteorological data.
|
|
57
62
|
|
|
58
|
-
|
|
63
|
+
# Table of Contents
|
|
64
|
+
|
|
65
|
+
1) [Installation Instructions](https://github.com/edrewitz/WxData?tab=readme-ov-file#installation-instructions)
|
|
66
|
+
2) [Proxy Server Configuration](https://github.com/edrewitz/WxData?tab=readme-ov-file#proxy-server-configuration)
|
|
67
|
+
3) [What makes WxData unique among various meteorological Python packages?](https://github.com/edrewitz/WxData?tab=readme-ov-file#what-makes-wxdata-unique-among-various-meteorological-python-packages)
|
|
68
|
+
4) [WxData Tutorials](https://github.com/edrewitz/WxData?tab=readme-ov-file#wxdata-tutorials)
|
|
69
|
+
5) [WxData Documentation](https://github.com/edrewitz/WxData?tab=readme-ov-file#wxdata-documentation)
|
|
70
|
+
6) [Importing Functions from WxData](https://github.com/edrewitz/WxData?tab=readme-ov-file#importing-functions-from-wxdata)
|
|
71
|
+
7) [Citations](https://github.com/edrewitz/WxData?tab=readme-ov-file#citations)
|
|
72
|
+
8) [Data Sources](https://github.com/edrewitz/WxData?tab=readme-ov-file#data-sources)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
## Installation Instructions
|
|
59
76
|
|
|
60
77
|
**How To Install**
|
|
61
78
|
|
|
@@ -97,19 +114,23 @@ i) Install wxdata via Anaconda/Miniconda3 --> `conda install wxdata`
|
|
|
97
114
|
|
|
98
115
|
ii) Set up a new environment with an earlier version of Python (must be Python >= 3.10) and then `pip install wxdata`
|
|
99
116
|
|
|
117
|
+
---------------------------------------------------------
|
|
118
|
+
|
|
119
|
+
## Proxy Server Configuration
|
|
120
|
+
|
|
100
121
|
***Friendly for users working on VPN/PROXY connections***
|
|
101
122
|
|
|
102
123
|
Depending on which client, the proxy-address:port must be entered as either a dictionary or a string.
|
|
103
124
|
|
|
104
125
|
The clients that use a string for proxies are:
|
|
105
126
|
|
|
106
|
-
1) All ECMWF clients
|
|
127
|
+
1) All ECMWF clients.
|
|
107
128
|
|
|
108
|
-
2) METAR Observations Client
|
|
129
|
+
2) METAR Observations Client.
|
|
109
130
|
|
|
110
|
-
3) `pixel_query()` tool if the user needs to download the airport station codes list.
|
|
131
|
+
3) `pixel_query()` tool if the user needs to download the airport station codes list.
|
|
111
132
|
|
|
112
|
-
|
|
133
|
+
All other clients use proxies as a dictionary
|
|
113
134
|
|
|
114
135
|
Example: We want to download the latest Observed Sounding Data for San Diego, CA (NKX)
|
|
115
136
|
|
|
@@ -128,6 +149,10 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
128
149
|
|
|
129
150
|
|
|
130
151
|
For more information on configuring proxies: https://requests.readthedocs.io/en/latest/user/advanced/#proxies
|
|
152
|
+
|
|
153
|
+
---------------------------------------------------------------------
|
|
154
|
+
|
|
155
|
+
## What makes WxData unique among various meteorological Python packages?
|
|
131
156
|
|
|
132
157
|
1) Converts GRIB variable keys into variable keys that are in plain language.
|
|
133
158
|
- (e.g. 'r2' ---> '2m_relative_humidity')
|
|
@@ -143,7 +168,15 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
143
168
|
- If a user wishes to not clear out their recycle bin `set clear_recycle_bin=False`.
|
|
144
169
|
- Default: `clear_recycle_bin=False`.
|
|
145
170
|
|
|
146
|
-
|
|
171
|
+
4) Has built-in support for users on VPN/PROXY connections.
|
|
172
|
+
|
|
173
|
+
5) Consists of both observational and model data.
|
|
174
|
+
|
|
175
|
+
6) Has additional tools to assist querying data, resolving gaps in data and automating your Python workflow.
|
|
176
|
+
|
|
177
|
+
-----------------------------------------------
|
|
178
|
+
|
|
179
|
+
## WxData Tutorials
|
|
147
180
|
|
|
148
181
|
*Regular Users*
|
|
149
182
|
1) [Downloading METAR Data](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/metars.ipynb)
|
|
@@ -165,13 +198,28 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
165
198
|
17) [Downloading the 7-Day NFDRS Forecast for Acton RAWS and Plotting Forecast 100-HR Dead Fuel Moisture](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/acton_raws_forecast.ipynb)
|
|
166
199
|
18) [Downloading Current RAWS and METAR Data and Plotting Current Relative Humidity Observations Across California and Nevada](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/metar_raws_observed_rh.ipynb)
|
|
167
200
|
19) [Downloading Current RAWS Data and Plotting Current Energy Release Components (ERCs) Observations Across California and Nevada](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/observed_erc_map.ipynb)
|
|
201
|
+
20) [Downloading NEXRAD II Radar Data and then plotting it in Py-ART](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/NEXRADII.ipynb)
|
|
202
|
+
21) [Downloading 30 Days of 6hrly CFS Data and plotting the 30-Day time-mean for mean sea level pressure across the Northern Hemisphere](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/cfs.ipynb)
|
|
168
203
|
|
|
169
204
|
*Advanced Users*
|
|
170
205
|
1) [Using the `client` module to download the latest HadCRUT5 Analysis netCDF file and open this dataset in xarray](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/hadcrut5.ipynb)
|
|
171
206
|
2) [Downloading the GFS0P25 for temperature fields and using run_external_scripts() to post-process this GFS0P25 dataset in an external Python script](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/external_scripts.ipynb)
|
|
172
207
|
|
|
208
|
+
---------------------------------------------------
|
|
209
|
+
|
|
173
210
|
## WxData Documentation
|
|
174
211
|
|
|
212
|
+
***Documentation Sections***
|
|
213
|
+
|
|
214
|
+
1. [End-To-End Data Clients](https://github.com/edrewitz/WxData?tab=readme-ov-file#end-to-end-data-clients)
|
|
215
|
+
2. [Raw Data Clients](https://github.com/edrewitz/WxData?tab=readme-ov-file#raw-data-clients)
|
|
216
|
+
3. [Post-Processors](https://github.com/edrewitz/WxData?tab=readme-ov-file#post-processors)
|
|
217
|
+
4. [Data Querying Tools](https://github.com/edrewitz/WxData?tab=readme-ov-file#data-querying-tools)
|
|
218
|
+
5. [Data Transformation & Gap Filling Tools](https://github.com/edrewitz/WxData?tab=readme-ov-file#data-transformation--gap-filling-tools)
|
|
219
|
+
6. [Automated Python Workflow Tools](https://github.com/edrewitz/WxData?tab=readme-ov-file#automated-python-workflow-tools)
|
|
220
|
+
|
|
221
|
+
### End-To-End Data Clients
|
|
222
|
+
|
|
175
223
|
***Global Forecast System (GFS)***
|
|
176
224
|
1. [GFS0P25](https://github.com/edrewitz/WxData/blob/main/Documentation/GFS0P25.md)
|
|
177
225
|
2. [GFS0P25 SECONDARY PARAMETERS](https://github.com/edrewitz/WxData/blob/main/Documentation/GFS0P25%20Secondary%20Parameters.md)
|
|
@@ -180,6 +228,10 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
180
228
|
***AI Global Forecast System (AIGFS)***
|
|
181
229
|
1. [AIGFS](https://github.com/edrewitz/WxData/blob/main/Documentation/aigfs.md)
|
|
182
230
|
|
|
231
|
+
***Climate Forecast System (CFS)***
|
|
232
|
+
1. [CFS Pressure](https://github.com/edrewitz/WxData/blob/main/Documentation/cfs_pressure.md#climate-forecast-system-cfs-pressure)
|
|
233
|
+
2. [CFS Flux](https://github.com/edrewitz/WxData/blob/main/Documentation/cfs_flux.md#climate-forecast-system-cfs-flux)
|
|
234
|
+
|
|
183
235
|
***Hybrid Global Ensemble Forecast System (HGEFS)***
|
|
184
236
|
1. [HGEFS](https://github.com/edrewitz/WxData/blob/main/Documentation/hgefs.md#hybrid-global-ensemble-forecast-system-hgefs)
|
|
185
237
|
|
|
@@ -231,6 +283,14 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
231
283
|
***Observed Atmospheric Soundings***
|
|
232
284
|
1. [University Of Wyoming Soundings](https://github.com/edrewitz/wxdata/blob/main/Documentation/wyoming_soundings.md)
|
|
233
285
|
|
|
286
|
+
***NEXRAD II Radar Data***
|
|
287
|
+
1. [Single Site](https://github.com/edrewitz/WxData/blob/main/Documentation/nexrad2_single.md#nexrad-ii-single-radar)
|
|
288
|
+
2. [Multi-Site](https://github.com/edrewitz/WxData/blob/main/Documentation/nexrad2_multi.md#nexrad-ii-multi-radar)
|
|
289
|
+
|
|
290
|
+
-----------------------------
|
|
291
|
+
|
|
292
|
+
### Post-Processors
|
|
293
|
+
|
|
234
294
|
***GFS Post-Processing***
|
|
235
295
|
1. [Primary GFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/Primary%20GFS%20Post%20Processing.md)
|
|
236
296
|
2. [Secondary GFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/Secondary%20GFS%20Post%20Processing.md)
|
|
@@ -238,6 +298,10 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
238
298
|
***AIGFS Post-Processing***
|
|
239
299
|
1. [AIGFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/aigfs_post_processing.md)
|
|
240
300
|
|
|
301
|
+
***CFS Post-Processing***
|
|
302
|
+
1. [CFS Pressure Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/cfs_pressure_post_processing.md#climate-forecast-system-cfs-pressure-post-processing)
|
|
303
|
+
2. [CFS Flux Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/cfs_flux_post_processing.md#climate-forecast-system-cfs-flux-post-processing)
|
|
304
|
+
|
|
241
305
|
***GEFS Post-Processing***
|
|
242
306
|
1. [Primary GEFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/Primary%20GEFS%20Post-Processing.md)
|
|
243
307
|
2. [Secondary GEFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/Secondary%20GEFS%20Post%20Processing.md)
|
|
@@ -257,6 +321,10 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
257
321
|
***Real-Time Mesoscale Analysis Post-Processing***
|
|
258
322
|
1. [RTMA](https://github.com/edrewitz/WxData/blob/main/Documentation/RTMA%20Post%20Processing.md)
|
|
259
323
|
|
|
324
|
+
-----------------------------------------------
|
|
325
|
+
|
|
326
|
+
### Raw Data Clients
|
|
327
|
+
|
|
260
328
|
***xmACIS2 Climate Data***
|
|
261
329
|
1. [xmACIS2 Client](https://github.com/edrewitz/WxData/blob/main/Documentation/xmacis2_client.md)
|
|
262
330
|
|
|
@@ -269,11 +337,12 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
269
337
|
***Custom Excel Data***
|
|
270
338
|
1. [Excel Data Client](https://github.com/edrewitz/WxData/blob/main/Documentation/get_excel_data.md#get-excel-data)
|
|
271
339
|
|
|
272
|
-
***
|
|
273
|
-
1. [
|
|
340
|
+
***AWS Open Data***
|
|
341
|
+
1. [AWS Open Data](https://github.com/edrewitz/WxData/blob/main/Documentation/get_open_aws_data.md#get-aws-open-data)
|
|
274
342
|
|
|
275
|
-
|
|
276
|
-
|
|
343
|
+
---------------------------------------------------------------
|
|
344
|
+
|
|
345
|
+
### Data Querying Tools
|
|
277
346
|
|
|
278
347
|
***Pixel Query***
|
|
279
348
|
1. [pixel_query](https://github.com/edrewitz/WxData/blob/main/Documentation/pixel_query.md)
|
|
@@ -281,13 +350,29 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
281
350
|
***Line Query***
|
|
282
351
|
1. [line_query](https://github.com/edrewitz/WxData/blob/main/Documentation/line_query.md)
|
|
283
352
|
|
|
353
|
+
--------------------------------------------------
|
|
354
|
+
|
|
355
|
+
### Data Transformation & Gap Filling Tools
|
|
356
|
+
|
|
357
|
+
***Cyclic Points For Hemispheric Plots***
|
|
358
|
+
1. [Cyclic Points](https://github.com/edrewitz/wxdata/blob/main/Documentation/cyclic_point.md#using-wxdata-to-add-cyclic-points-for-hemispheric-plots)
|
|
359
|
+
|
|
360
|
+
***Shifting Longitude From 0 to 360 --> -180 to 180***
|
|
361
|
+
1. [shift_longitude](https://github.com/edrewitz/WxData/blob/main/Documentation/shift_longitude.md)
|
|
362
|
+
|
|
284
363
|
***Linear Anti-Aliasing Between Two Points***
|
|
285
364
|
1. [linear_anti_aliasing](https://github.com/edrewitz/WxData/blob/main/Documentation/linear_anti_aliasing.md#linear-anti-aliasing-between-points)
|
|
286
365
|
|
|
366
|
+
------------------------------------------
|
|
367
|
+
|
|
368
|
+
### Automated Python Workflow Tools
|
|
369
|
+
|
|
287
370
|
***Running External Python Scripts In Your Workflow***
|
|
288
371
|
|
|
289
372
|
1 [run_external_scripts](https://github.com/edrewitz/WxData/blob/main/Documentation/run_external_scripts.md)
|
|
290
373
|
|
|
374
|
+
---------------------------------------
|
|
375
|
+
|
|
291
376
|
## Importing Functions from WxData
|
|
292
377
|
|
|
293
378
|
"""
|
|
@@ -357,6 +442,14 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
357
442
|
gefs_0p25
|
|
358
443
|
)
|
|
359
444
|
|
|
445
|
+
# Climate Forecast System (CFS)
|
|
446
|
+
# - CFS Flux Products
|
|
447
|
+
# - CFS Pressure Products
|
|
448
|
+
from wxdata.cfs.cfs import(
|
|
449
|
+
cfs_flux,
|
|
450
|
+
cfs_pressure
|
|
451
|
+
)
|
|
452
|
+
|
|
360
453
|
# AI Global Ensemble Forecast System (AIGEFS)
|
|
361
454
|
# - AIGEFS Pressure Members (Pressure Level Variables)
|
|
362
455
|
# - AIGEFS Surface Members (Surface Level Variables)
|
|
@@ -396,7 +489,7 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
396
489
|
# - Multi Station NFDRS Forecast
|
|
397
490
|
# - Single Station Weather Forecast
|
|
398
491
|
# - Multi Station Weather Forecast
|
|
399
|
-
from wxdata.fems.
|
|
492
|
+
from wxdata.fems.observations import(
|
|
400
493
|
get_single_raws_station_weather_observations,
|
|
401
494
|
get_single_raws_station_fuels_observations,
|
|
402
495
|
get_multi_raws_station_weather_observations,
|
|
@@ -443,6 +536,14 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
443
536
|
# METAR Observational Data (From NOAA)
|
|
444
537
|
from wxdata.metars.metar_obs import download_metar_data
|
|
445
538
|
|
|
539
|
+
# NEXRAD2 Radar Data
|
|
540
|
+
# - NEXRAD2 Radar Single Station
|
|
541
|
+
# - NEXRAD2 Radar Multi Station
|
|
542
|
+
from wxdata.radar.nexrad2 import(
|
|
543
|
+
download_current_single_station_nexrad2_radar_data,
|
|
544
|
+
download_current_multi_station_nexrad2_radar_data
|
|
545
|
+
)
|
|
546
|
+
|
|
446
547
|
"""
|
|
447
548
|
This section hosts all the functions and modules that involve post-processing the data.
|
|
448
549
|
These are the functions and modules that:
|
|
@@ -471,6 +572,9 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
471
572
|
# European Centre for Medium-Range Weather Forecasts (ECMWF)
|
|
472
573
|
import wxdata.post_processors.ecmwf_post_processing as ecmwf_post_processing
|
|
473
574
|
|
|
575
|
+
# Climate Forecast System (CFS)
|
|
576
|
+
import wxdata.post_processors.cfs_post_processing as cfs_post_processing
|
|
577
|
+
|
|
474
578
|
# Real-Time Mesoscale Analysis (RTMA)
|
|
475
579
|
from wxdata.post_processors.rtma_post_processing import process_rtma_data
|
|
476
580
|
|
|
@@ -506,6 +610,9 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
506
610
|
linear_anti_aliasing
|
|
507
611
|
)
|
|
508
612
|
|
|
613
|
+
# This function executes a list of Python scripts in the order the user lists them
|
|
614
|
+
from wxdata.utils.scripts import run_external_scripts
|
|
615
|
+
|
|
509
616
|
"""
|
|
510
617
|
This section hosts the various data clients that retrieve various types of data.
|
|
511
618
|
|
|
@@ -516,12 +623,12 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
516
623
|
# Client List:
|
|
517
624
|
# - get_gridded_data()
|
|
518
625
|
# - get_csv_data()
|
|
519
|
-
# - get_excel_data()
|
|
626
|
+
# - get_excel_data()
|
|
520
627
|
# - get_xmacis_data()
|
|
628
|
+
# - get_aws_open_data()
|
|
521
629
|
import wxdata.client.client as client
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
from wxdata.utils.scripts import run_external_scripts
|
|
630
|
+
|
|
631
|
+
-------------------------------------------
|
|
525
632
|
|
|
526
633
|
## Citations
|
|
527
634
|
|
|
@@ -544,6 +651,8 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
544
651
|
|
|
545
652
|
**requests**: K. Reitz, "Requests: HTTP for Humans". Available: https://requests.readthedocs.io/.
|
|
546
653
|
|
|
654
|
+
**Beautiful Soup**: Richardson, L. (2025). Beautiful Soup (Version 4.14.3) [Computer software]. https://www.crummy.com/software/BeautifulSoup/
|
|
655
|
+
|
|
547
656
|
**shapeography**: Eric J. Drewitz. (2026). edrewitz/shapeography: shapeography 1.0 Released (shapeography1.0). Zenodo. https://doi.org/10.5281/zenodo.18676845
|
|
548
657
|
|
|
549
658
|
**geopandas**: Kelsey Jordahl, Joris Van den Bossche, Martin Fleischmann, Jacob Wasserman, James McBride, Jeffrey Gerard, … François Leblanc. (2020, July 15). geopandas/geopandas: v0.8.1 (Version v0.8.1). Zenodo. http://doi.org/10.5281/zenodo.3946761
|
|
@@ -554,6 +663,10 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
554
663
|
|
|
555
664
|
**openpyxl**: Gazoni, E., & Clark, C. (2024). openpyxl: A Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files (Version 3.1.5) [Computer software]. https://openpyxl.readthedocs.io/
|
|
556
665
|
|
|
666
|
+
**pyart**: Helmus, J.J. & Collis, S.M., (2016). The Python ARM Radar Toolkit (Py-ART), a Library for Working with Weather Radar Data in the Python Programming Language. Journal of Open Research Software. 4(1), p.e25. DOI: 10.5334/jors.119.
|
|
667
|
+
|
|
668
|
+
----------------------------------------------------------
|
|
669
|
+
|
|
557
670
|
## Data Sources
|
|
558
671
|
|
|
559
672
|
1) [National Oceanic and Atmospheric Administration/National Center for Environmental Prediction](https://nomads.ncep.noaa.gov/)
|
|
@@ -564,5 +677,6 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
|
|
|
564
677
|
6) [National Oceanic and Atmospheric Administration/Climate Prediction Center](https://www.cpc.ncep.noaa.gov/products/GIS/GIS_DATA/us_tempprcpfcst/index.php)
|
|
565
678
|
7) [Applied Climate Information System (ACIS)](https://www.rcc-acis.org/docs_webservices.html)
|
|
566
679
|
8) [USDA Fire Environment Mapping System](https://fems.fs2c.usda.gov/download)
|
|
680
|
+
9) [Amazon AWS Unidata NEXRAD2 Bucket](https://unidata-nexrad-level2.s3.amazonaws.com/index.html)
|
|
567
681
|
|
|
568
682
|
|