wxdata 1.3__tar.gz → 1.4__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.3/src/wxdata.egg-info → wxdata-1.4}/PKG-INFO +79 -42
- {wxdata-1.3 → wxdata-1.4}/README.md +76 -41
- {wxdata-1.3 → wxdata-1.4}/pyproject.toml +3 -1
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/__init__.py +27 -5
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/aigefs/aigefs.py +39 -25
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/aigefs/url_scanners.py +3 -3
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/aigfs/aigfs.py +17 -11
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/aigfs/url_scanners.py +3 -3
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/client/client.py +26 -21
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/ecmwf/__init__.py +4 -2
- wxdata-1.4/src/wxdata/ecmwf/ecmwf.py +2795 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/ecmwf/file_funcs.py +3 -25
- wxdata-1.4/src/wxdata/ecmwf/keys.py +282 -0
- wxdata-1.4/src/wxdata/ecmwf/parsers.py +39 -0
- wxdata-1.4/src/wxdata/ecmwf/url_scanners.py +892 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/fems/fems.py +9 -9
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gefs/gefs.py +44 -32
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gefs/url_scanners.py +9 -9
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gfs/gfs.py +43 -27
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gfs/url_scanners.py +9 -9
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/hgefs/hgefs.py +18 -11
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/hgefs/url_scanner.py +3 -3
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/metars/metar_obs.py +15 -2
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/noaa/nws.py +8 -6
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/post_processors/aigefs_post_processing.py +4 -52
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/post_processors/aigfs_post_processing.py +2 -52
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/post_processors/ecmwf_post_processing.py +770 -208
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/post_processors/gefs_post_processing.py +3 -53
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/post_processors/gfs_post_processing.py +3 -54
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/post_processors/hgefs_post_processing.py +2 -51
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/post_processors/rtma_post_processing.py +2 -52
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/rtma/rtma.py +4 -3
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/rtma/url_scanners.py +8 -6
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/soundings/wyoming_soundings.py +5 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/utils/__init__.py +3 -2
- wxdata-1.4/src/wxdata/utils/exceptions.py +25 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/utils/file_funcs.py +46 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/utils/file_scanner.py +4 -10
- wxdata-1.4/src/wxdata/utils/progress_bar.py +44 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/utils/tools.py +30 -6
- {wxdata-1.3 → wxdata-1.4/src/wxdata.egg-info}/PKG-INFO +79 -42
- {wxdata-1.3 → wxdata-1.4}/src/wxdata.egg-info/SOURCES.txt +4 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata.egg-info/requires.txt +2 -0
- wxdata-1.3/src/wxdata/ecmwf/ecmwf.py +0 -753
- wxdata-1.3/src/wxdata/ecmwf/url_scanners.py +0 -745
- {wxdata-1.3 → wxdata-1.4}/LICENSE +0 -0
- {wxdata-1.3 → wxdata-1.4}/setup.cfg +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/aigefs/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/aigefs/paths.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/aigfs/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/aigfs/paths.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/calc/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/calc/derived_fields.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/calc/kinematics.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/calc/thermodynamics.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/calc/unit_conversion.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/client/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/ecmwf/paths.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/fems/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/fems/raws_sigs.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gefs/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gefs/exception_messages.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gefs/file_funcs.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gefs/paths.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gefs/process.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gfs/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gfs/exception_messages.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/gfs/paths.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/hgefs/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/hgefs/paths.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/metars/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/metars/_clean_data.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/noaa/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/post_processors/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/rtma/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/rtma/file_funcs.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/rtma/keys.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/rtma/process.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/soundings/__init__.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/soundings/_exceptions.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/utils/coords.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/utils/nomads_gribfilter.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/utils/recycle_bin.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/utils/scripts.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata/utils/xmacis2_cleanup.py +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata.egg-info/dependency_links.txt +0 -0
- {wxdata-1.3 → wxdata-1.4}/src/wxdata.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wxdata
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4
|
|
4
4
|
Summary: A Python library that acts as a client to download, pre-process and post-process weather data. Friendly for users on VPN/PROXY connections.
|
|
5
5
|
Author: Eric J. Drewitz
|
|
6
6
|
Project-URL: Documentation, https://github.com/edrewitz/wxdata/blob/main/Documentation/Landing%20Page.md
|
|
@@ -23,6 +23,8 @@ Requires-Dist: beautifulsoup4>=4.13.4
|
|
|
23
23
|
Requires-Dist: requests>=2.32.4
|
|
24
24
|
Requires-Dist: cfgrib>=0.9.10.4
|
|
25
25
|
Requires-Dist: dask>=2025.5.1
|
|
26
|
+
Requires-Dist: tqdm>=4.67.3
|
|
27
|
+
Requires-Dist: ecmwf-opendata>=0.3.26
|
|
26
28
|
Dynamic: license-file
|
|
27
29
|
|
|
28
30
|
# WxData
|
|
@@ -84,45 +86,44 @@ Copy and paste either command into your terminal or anaconda prompt:
|
|
|
84
86
|
|
|
85
87
|
***Important Compatibility Information***
|
|
86
88
|
|
|
87
|
-
|
|
89
|
+
When a new version of Python comes out, it might not be compatible with the C++ eccodes library immediately (especially on pip/pypi versions).
|
|
88
90
|
|
|
89
|
-
|
|
91
|
+
This issue arises when the user is post-processing GRIB data.
|
|
90
92
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
*Steps For Method 1*
|
|
94
|
-
1) pip uninstall wxdata
|
|
95
|
-
2) conda install wxdata
|
|
93
|
+
There are two options to resolve this issue:
|
|
96
94
|
|
|
95
|
+
i) Install wxdata via Anaconda/Miniconda3 --> `conda install wxdata`
|
|
97
96
|
|
|
98
|
-
|
|
97
|
+
ii) Set up a new environment with an earlier version of Python (must be Python >= 3.10) and then `pip install wxdata`
|
|
99
98
|
|
|
100
|
-
|
|
99
|
+
***Friendly for users working on VPN/PROXY connections***
|
|
101
100
|
|
|
102
|
-
|
|
101
|
+
Depending on which client, the proxy-address:port must be entered as either a dictionary or a string.
|
|
103
102
|
|
|
104
|
-
|
|
103
|
+
The clients that use a string for proxies are:
|
|
105
104
|
|
|
106
|
-
|
|
105
|
+
1) All ECMWF clients
|
|
107
106
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
Then pip install wxdata after the new Python environment is set up.
|
|
107
|
+
2) METAR Observations Client
|
|
108
|
+
|
|
109
|
+
3) `pixel_query()` tool if the user needs to download the airport station codes list.
|
|
113
110
|
|
|
114
|
-
|
|
115
|
-
- Users input their PROXY IP address as a dictionary and pass it into the function to avoid SSL errors
|
|
116
|
-
- If the user is on a VPN/PROXY Connection the following is needed:
|
|
117
|
-
|
|
118
|
-
proxies=None ---> proxies={
|
|
119
|
-
'http':'http://url',
|
|
120
|
-
'https':'https://url'
|
|
121
|
-
}
|
|
111
|
+
All other clients use proxies as a dictionary
|
|
122
112
|
|
|
123
|
-
|
|
113
|
+
Example: We want to download the latest Observed Sounding Data for San Diego, CA (NKX)
|
|
114
|
+
|
|
115
|
+
proxies=None ---> proxies={
|
|
116
|
+
'http':'http://your-proxy-address:port',
|
|
117
|
+
'https':'http://your-proxy-address:port'
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
sounding_data = get_observed_sounding_data('nkx', proxies=proxies)
|
|
121
|
+
|
|
122
|
+
Example: We want to download the ECMWF IFS Data:
|
|
123
|
+
|
|
124
|
+
proxies=None ---> proxies="http://your-proxy-address:port" ---> ds = ecmwf_ifs(proxies=proxies)
|
|
124
125
|
|
|
125
|
-
|
|
126
|
+
<img src="https://github.com/edrewitz/WxData/blob/main/diagrams/proxy.png?raw=true" width="500" alt="Alt text" />
|
|
126
127
|
|
|
127
128
|
|
|
128
129
|
For more information on configuring proxies: https://requests.readthedocs.io/en/latest/user/advanced/#proxies
|
|
@@ -146,9 +147,10 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
146
147
|
|
|
147
148
|
3) Preserves system memory via the following methods:
|
|
148
149
|
- Clears out old data files before each new data download.
|
|
149
|
-
- Optional setting `clear_recycle_bin
|
|
150
|
+
- Optional setting `clear_recycle_bin` in all functions.
|
|
150
151
|
- When `clear_recycle_bin=True` the computer's recycle/trash bin is cleared with each run of the script using any WxData function.
|
|
151
152
|
- If a user wishes to not clear out their recycle bin `set clear_recycle_bin=False`.
|
|
153
|
+
- Default: `clear_recycle_bin=False`.
|
|
152
154
|
|
|
153
155
|
## WxData Examples
|
|
154
156
|
|
|
@@ -166,6 +168,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
166
168
|
11) [Downloading AIGFS Data](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/aigfs.ipynb)
|
|
167
169
|
12) [Downloading AIGEFS Data](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/aigefs.ipynb)
|
|
168
170
|
13) [Downloading and plotting the Climate Prediction Center 6-10 Day Precipitation Outlook](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/cpc_precip_outlook.ipynb)
|
|
171
|
+
14) [Downloading OUN Sounding Data and Using The WxData Linear Anti Aliasing Tool To Interpolate 100 Points Between Each Observed Data Point And Visualize Both Data Sets](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/linear_anti_aliasing.ipynb)
|
|
172
|
+
15) [Downloading Subsets Of ECMWF IFS Ensemble and AIFS Ensemble Data](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/ecmwf_ens.ipynb)
|
|
173
|
+
16) [Downloading the ECMWF IFS 500 mb Geopotential Height Initial Analysis And Plot A North Pole Stereographic Resolving The Meridian With The WxData Cyclic Point Tool](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/cyclic.ipynb)
|
|
169
174
|
|
|
170
175
|
*Advanced Users*
|
|
171
176
|
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)
|
|
@@ -190,15 +195,17 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
190
195
|
3. [GEFS0P25](https://github.com/edrewitz/wxdata/blob/main/Documentation/GEFS0P25.md#global-ensemble-forecast-system-025-x-025-degree-gefs0p25)
|
|
191
196
|
|
|
192
197
|
***AI Global Ensemble Forecast System (AIGEFS)***
|
|
193
|
-
1. [AIGEFS Members (Pressure Parameters](https://github.com/edrewitz/WxData/blob/main/Documentation/aigefs_pressure_members.md)
|
|
194
|
-
2. [AIGEFS Members (Surface Parameters](https://github.com/edrewitz/WxData/blob/main/Documentation/aigefs_surface_members.md)
|
|
198
|
+
1. [AIGEFS Members (Pressure Parameters)](https://github.com/edrewitz/WxData/blob/main/Documentation/aigefs_pressure_members.md)
|
|
199
|
+
2. [AIGEFS Members (Surface Parameters)](https://github.com/edrewitz/WxData/blob/main/Documentation/aigefs_surface_members.md)
|
|
195
200
|
3. [AIGEFS Ensemble Mean & Ensemble Spread](https://github.com/edrewitz/WxData/blob/main/Documentation/aigefs_single.md)
|
|
196
201
|
|
|
197
202
|
***ECMWF Open Data***
|
|
198
203
|
1. [ECMWF IFS](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF_IFS.md)
|
|
199
|
-
2. [ECMWF
|
|
200
|
-
3. [ECMWF
|
|
201
|
-
4. [ECMWF
|
|
204
|
+
2. [ECMWF IFS Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20IFS%20Ensemble.md#ecmwf-ifs-ensemble)
|
|
205
|
+
3. [ECMWF AIFS](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF_AIFS.md)
|
|
206
|
+
4. [ECMWF AIFS Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20AIFS%20Ensemble.md#ecmwf-aifs-ensemble)
|
|
207
|
+
5. [ECMWF IFS Wave](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF_IFS_Wave.md)
|
|
208
|
+
6. [ECMWF IFS Wave Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20IFS%20Wave%20Ensemble.md#ecmwf-ifs-wave-ensemble)
|
|
202
209
|
|
|
203
210
|
***Real-Time Mesoscale Analysis (RTMA)***
|
|
204
211
|
1. [RTMA](https://github.com/edrewitz/wxdata/blob/main/Documentation/rtma.md#real-time-mesoscale-analysis-rtma)
|
|
@@ -238,9 +245,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
238
245
|
1. [HGEFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/hgefs_post_processing.md#hybrid-global-ensemble-forecast-system-hgefs-post-processing)
|
|
239
246
|
|
|
240
247
|
***ECMWF Post-Processing***
|
|
241
|
-
1. [ECMWF IFS and
|
|
242
|
-
2. [ECMWF AIFS](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20AIFS%20Post%20Processing.md)
|
|
243
|
-
3. [ECMWF IFS Wave](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20IFS%20Wave%20Post%20Processing.md)
|
|
248
|
+
1. [ECMWF IFS and IFS Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20IFS%20Post%20Processing.md#ecmwf-ifs-and-ifs-ensemble-post-processing)
|
|
249
|
+
2. [ECMWF AIFS and AIFS Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20AIFS%20Post%20Processing.md#ecmwf-aifs-and-aifs-ensemble-post-processing)
|
|
250
|
+
3. [ECMWF IFS Wave and IFS Wave Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20IFS%20Wave%20Post%20Processing.md#ecmwf-ifs-wave-and-ifs-wave-ensemble-post-processing)
|
|
244
251
|
|
|
245
252
|
***Real-Time Mesoscale Analysis Post-Processing***
|
|
246
253
|
1. [RTMA](https://github.com/edrewitz/WxData/blob/main/Documentation/RTMA%20Post%20Processing.md)
|
|
@@ -266,6 +273,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
266
273
|
***Line Query***
|
|
267
274
|
1. [line_query](https://github.com/edrewitz/WxData/blob/main/Documentation/line_query.md)
|
|
268
275
|
|
|
276
|
+
***Linear Anti-Aliasing Between Two Points***
|
|
277
|
+
1. [linear_anti_aliasing](https://github.com/edrewitz/WxData/blob/main/Documentation/linear_anti_aliasing.md#linear-anti-aliasing-between-points)
|
|
278
|
+
|
|
269
279
|
***Running External Python Scripts In Your Workflow***
|
|
270
280
|
|
|
271
281
|
1 [run_external_scripts](https://github.com/edrewitz/WxData/blob/main/Documentation/run_external_scripts.md)
|
|
@@ -314,6 +324,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
314
324
|
"""
|
|
315
325
|
|
|
316
326
|
# Global Forecast System (GFS)
|
|
327
|
+
# - GFS 0.25x0.25 Degree Primary Parameters
|
|
328
|
+
# - GFS 0.25x0.25 Degree Secondary Parameters
|
|
329
|
+
# - GFS 0.5x0.5 Degree
|
|
317
330
|
from wxdata.gfs.gfs import(
|
|
318
331
|
gfs_0p25,
|
|
319
332
|
gfs_0p25_secondary_parameters,
|
|
@@ -327,6 +340,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
327
340
|
from wxdata.hgefs.hgefs import hgefs_mean_spread
|
|
328
341
|
|
|
329
342
|
# Global Ensemble Forecast System (GEFS)
|
|
343
|
+
# - GEFS 0.5x0.5 Degree Primary Parameters
|
|
344
|
+
# - GEFS 0.5x0.5 Degree Secondary Parameters
|
|
345
|
+
# - GEFS 0.25x0.25 Degree
|
|
330
346
|
from wxdata.gefs.gefs import(
|
|
331
347
|
gefs_0p50,
|
|
332
348
|
gefs_0p50_secondary_parameters,
|
|
@@ -334,6 +350,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
334
350
|
)
|
|
335
351
|
|
|
336
352
|
# AI Global Ensemble Forecast System (AIGEFS)
|
|
353
|
+
# - AIGEFS Pressure Members (Pressure Level Variables)
|
|
354
|
+
# - AIGEFS Surface Members (Surface Level Variables)
|
|
355
|
+
# - AIGEFS Single (AIGEFS Ensemble Mean & AIGEFS Ensemble Spread)
|
|
337
356
|
from wxdata.aigefs.aigefs import(
|
|
338
357
|
aigefs_pressure_members,
|
|
339
358
|
aigefs_surface_members,
|
|
@@ -341,14 +360,25 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
341
360
|
)
|
|
342
361
|
|
|
343
362
|
# European Centre for Medium-Range Weather Forecasts (ECMWF)
|
|
363
|
+
# - ECMWF IFS
|
|
364
|
+
# - ECMWF IFS Ensemble
|
|
365
|
+
# - ECMWF AIFS
|
|
366
|
+
# - ECMWF AIFS Ensemble
|
|
367
|
+
# - ECMWF IFS Wave
|
|
368
|
+
# - ECMWF IFS Wave Ensemble
|
|
344
369
|
from wxdata.ecmwf.ecmwf import(
|
|
345
370
|
ecmwf_ifs,
|
|
371
|
+
ecmwf_ifs_ens,
|
|
346
372
|
ecmwf_aifs,
|
|
347
|
-
|
|
348
|
-
ecmwf_ifs_wave
|
|
373
|
+
ecmwf_aifs_ens,
|
|
374
|
+
ecmwf_ifs_wave,
|
|
375
|
+
ecmwf_ifs_wave_ens
|
|
349
376
|
)
|
|
350
377
|
|
|
351
378
|
# FEMS RAWS Network
|
|
379
|
+
# - Single RAWS Station Data
|
|
380
|
+
# - A SIG Group of RAWS Data by GACC
|
|
381
|
+
# - NFDRS Forecast Data For a RAWS Station
|
|
352
382
|
from wxdata.fems.fems import(
|
|
353
383
|
get_single_station_data,
|
|
354
384
|
get_raws_sig_data,
|
|
@@ -356,15 +386,17 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
356
386
|
)
|
|
357
387
|
|
|
358
388
|
# Real-Time Mesoscale Analysis (RTMA)
|
|
389
|
+
# - RTMA Latest
|
|
390
|
+
# - RTMA Comparison Between Two Times
|
|
359
391
|
from wxdata.rtma.rtma import(
|
|
360
392
|
rtma,
|
|
361
393
|
rtma_comparison
|
|
362
394
|
)
|
|
363
395
|
|
|
364
396
|
# NOAA
|
|
365
|
-
# Storm Prediction Center Outlooks
|
|
366
|
-
# Climate Prediction Center Outlooks
|
|
367
|
-
# National Weather Service Forecasts
|
|
397
|
+
# - Storm Prediction Center Outlooks
|
|
398
|
+
# - Climate Prediction Center Outlooks
|
|
399
|
+
# - National Weather Service Forecasts
|
|
368
400
|
from wxdata.noaa.nws import(
|
|
369
401
|
get_ndfd_grids,
|
|
370
402
|
get_cpc_outlook
|
|
@@ -457,6 +489,7 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
457
489
|
from wxdata.utils.scripts import run_external_scripts
|
|
458
490
|
|
|
459
491
|
|
|
492
|
+
|
|
460
493
|
|
|
461
494
|
|
|
462
495
|
|
|
@@ -486,6 +519,10 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
486
519
|
|
|
487
520
|
**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
|
|
488
521
|
|
|
522
|
+
**tqdm**: da Costa-Luis, (2019). tqdm: A Fast, Extensible Progress Meter for Python and CLI. Journal of Open Source Software, 4(37), 1277, https://doi.org/10.21105/joss.01277
|
|
523
|
+
|
|
524
|
+
**ecmwf-opendata**: European Centre for Medium-Range Weather Forecasts (2026). ecmwf-opendata[Computer software]. GitHub. https://github.com/ecmwf/ecmwf-opendata
|
|
525
|
+
|
|
489
526
|
## Data Sources
|
|
490
527
|
|
|
491
528
|
1) [National Oceanic and Atmospheric Administration/National Center for Environmental Prediction](https://nomads.ncep.noaa.gov/)
|
|
@@ -57,45 +57,44 @@ Copy and paste either command into your terminal or anaconda prompt:
|
|
|
57
57
|
|
|
58
58
|
***Important Compatibility Information***
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
When a new version of Python comes out, it might not be compatible with the C++ eccodes library immediately (especially on pip/pypi versions).
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
This issue arises when the user is post-processing GRIB data.
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
*Steps For Method 1*
|
|
67
|
-
1) pip uninstall wxdata
|
|
68
|
-
2) conda install wxdata
|
|
64
|
+
There are two options to resolve this issue:
|
|
69
65
|
|
|
66
|
+
i) Install wxdata via Anaconda/Miniconda3 --> `conda install wxdata`
|
|
70
67
|
|
|
71
|
-
|
|
68
|
+
ii) Set up a new environment with an earlier version of Python (must be Python >= 3.10) and then `pip install wxdata`
|
|
72
69
|
|
|
73
|
-
|
|
70
|
+
***Friendly for users working on VPN/PROXY connections***
|
|
74
71
|
|
|
75
|
-
|
|
72
|
+
Depending on which client, the proxy-address:port must be entered as either a dictionary or a string.
|
|
76
73
|
|
|
77
|
-
|
|
74
|
+
The clients that use a string for proxies are:
|
|
78
75
|
|
|
79
|
-
|
|
76
|
+
1) All ECMWF clients
|
|
80
77
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
Then pip install wxdata after the new Python environment is set up.
|
|
78
|
+
2) METAR Observations Client
|
|
79
|
+
|
|
80
|
+
3) `pixel_query()` tool if the user needs to download the airport station codes list.
|
|
86
81
|
|
|
87
|
-
|
|
88
|
-
- Users input their PROXY IP address as a dictionary and pass it into the function to avoid SSL errors
|
|
89
|
-
- If the user is on a VPN/PROXY Connection the following is needed:
|
|
90
|
-
|
|
91
|
-
proxies=None ---> proxies={
|
|
92
|
-
'http':'http://url',
|
|
93
|
-
'https':'https://url'
|
|
94
|
-
}
|
|
82
|
+
All other clients use proxies as a dictionary
|
|
95
83
|
|
|
96
|
-
|
|
84
|
+
Example: We want to download the latest Observed Sounding Data for San Diego, CA (NKX)
|
|
85
|
+
|
|
86
|
+
proxies=None ---> proxies={
|
|
87
|
+
'http':'http://your-proxy-address:port',
|
|
88
|
+
'https':'http://your-proxy-address:port'
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
sounding_data = get_observed_sounding_data('nkx', proxies=proxies)
|
|
92
|
+
|
|
93
|
+
Example: We want to download the ECMWF IFS Data:
|
|
94
|
+
|
|
95
|
+
proxies=None ---> proxies="http://your-proxy-address:port" ---> ds = ecmwf_ifs(proxies=proxies)
|
|
97
96
|
|
|
98
|
-
|
|
97
|
+
<img src="https://github.com/edrewitz/WxData/blob/main/diagrams/proxy.png?raw=true" width="500" alt="Alt text" />
|
|
99
98
|
|
|
100
99
|
|
|
101
100
|
For more information on configuring proxies: https://requests.readthedocs.io/en/latest/user/advanced/#proxies
|
|
@@ -119,9 +118,10 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
119
118
|
|
|
120
119
|
3) Preserves system memory via the following methods:
|
|
121
120
|
- Clears out old data files before each new data download.
|
|
122
|
-
- Optional setting `clear_recycle_bin
|
|
121
|
+
- Optional setting `clear_recycle_bin` in all functions.
|
|
123
122
|
- When `clear_recycle_bin=True` the computer's recycle/trash bin is cleared with each run of the script using any WxData function.
|
|
124
123
|
- If a user wishes to not clear out their recycle bin `set clear_recycle_bin=False`.
|
|
124
|
+
- Default: `clear_recycle_bin=False`.
|
|
125
125
|
|
|
126
126
|
## WxData Examples
|
|
127
127
|
|
|
@@ -139,6 +139,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
139
139
|
11) [Downloading AIGFS Data](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/aigfs.ipynb)
|
|
140
140
|
12) [Downloading AIGEFS Data](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/aigefs.ipynb)
|
|
141
141
|
13) [Downloading and plotting the Climate Prediction Center 6-10 Day Precipitation Outlook](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/cpc_precip_outlook.ipynb)
|
|
142
|
+
14) [Downloading OUN Sounding Data and Using The WxData Linear Anti Aliasing Tool To Interpolate 100 Points Between Each Observed Data Point And Visualize Both Data Sets](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/linear_anti_aliasing.ipynb)
|
|
143
|
+
15) [Downloading Subsets Of ECMWF IFS Ensemble and AIFS Ensemble Data](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/ecmwf_ens.ipynb)
|
|
144
|
+
16) [Downloading the ECMWF IFS 500 mb Geopotential Height Initial Analysis And Plot A North Pole Stereographic Resolving The Meridian With The WxData Cyclic Point Tool](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/cyclic.ipynb)
|
|
142
145
|
|
|
143
146
|
*Advanced Users*
|
|
144
147
|
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)
|
|
@@ -163,15 +166,17 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
163
166
|
3. [GEFS0P25](https://github.com/edrewitz/wxdata/blob/main/Documentation/GEFS0P25.md#global-ensemble-forecast-system-025-x-025-degree-gefs0p25)
|
|
164
167
|
|
|
165
168
|
***AI Global Ensemble Forecast System (AIGEFS)***
|
|
166
|
-
1. [AIGEFS Members (Pressure Parameters](https://github.com/edrewitz/WxData/blob/main/Documentation/aigefs_pressure_members.md)
|
|
167
|
-
2. [AIGEFS Members (Surface Parameters](https://github.com/edrewitz/WxData/blob/main/Documentation/aigefs_surface_members.md)
|
|
169
|
+
1. [AIGEFS Members (Pressure Parameters)](https://github.com/edrewitz/WxData/blob/main/Documentation/aigefs_pressure_members.md)
|
|
170
|
+
2. [AIGEFS Members (Surface Parameters)](https://github.com/edrewitz/WxData/blob/main/Documentation/aigefs_surface_members.md)
|
|
168
171
|
3. [AIGEFS Ensemble Mean & Ensemble Spread](https://github.com/edrewitz/WxData/blob/main/Documentation/aigefs_single.md)
|
|
169
172
|
|
|
170
173
|
***ECMWF Open Data***
|
|
171
174
|
1. [ECMWF IFS](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF_IFS.md)
|
|
172
|
-
2. [ECMWF
|
|
173
|
-
3. [ECMWF
|
|
174
|
-
4. [ECMWF
|
|
175
|
+
2. [ECMWF IFS Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20IFS%20Ensemble.md#ecmwf-ifs-ensemble)
|
|
176
|
+
3. [ECMWF AIFS](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF_AIFS.md)
|
|
177
|
+
4. [ECMWF AIFS Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20AIFS%20Ensemble.md#ecmwf-aifs-ensemble)
|
|
178
|
+
5. [ECMWF IFS Wave](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF_IFS_Wave.md)
|
|
179
|
+
6. [ECMWF IFS Wave Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20IFS%20Wave%20Ensemble.md#ecmwf-ifs-wave-ensemble)
|
|
175
180
|
|
|
176
181
|
***Real-Time Mesoscale Analysis (RTMA)***
|
|
177
182
|
1. [RTMA](https://github.com/edrewitz/wxdata/blob/main/Documentation/rtma.md#real-time-mesoscale-analysis-rtma)
|
|
@@ -211,9 +216,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
211
216
|
1. [HGEFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/hgefs_post_processing.md#hybrid-global-ensemble-forecast-system-hgefs-post-processing)
|
|
212
217
|
|
|
213
218
|
***ECMWF Post-Processing***
|
|
214
|
-
1. [ECMWF IFS and
|
|
215
|
-
2. [ECMWF AIFS](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20AIFS%20Post%20Processing.md)
|
|
216
|
-
3. [ECMWF IFS Wave](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20IFS%20Wave%20Post%20Processing.md)
|
|
219
|
+
1. [ECMWF IFS and IFS Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20IFS%20Post%20Processing.md#ecmwf-ifs-and-ifs-ensemble-post-processing)
|
|
220
|
+
2. [ECMWF AIFS and AIFS Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20AIFS%20Post%20Processing.md#ecmwf-aifs-and-aifs-ensemble-post-processing)
|
|
221
|
+
3. [ECMWF IFS Wave and IFS Wave Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/ECMWF%20IFS%20Wave%20Post%20Processing.md#ecmwf-ifs-wave-and-ifs-wave-ensemble-post-processing)
|
|
217
222
|
|
|
218
223
|
***Real-Time Mesoscale Analysis Post-Processing***
|
|
219
224
|
1. [RTMA](https://github.com/edrewitz/WxData/blob/main/Documentation/RTMA%20Post%20Processing.md)
|
|
@@ -239,6 +244,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
239
244
|
***Line Query***
|
|
240
245
|
1. [line_query](https://github.com/edrewitz/WxData/blob/main/Documentation/line_query.md)
|
|
241
246
|
|
|
247
|
+
***Linear Anti-Aliasing Between Two Points***
|
|
248
|
+
1. [linear_anti_aliasing](https://github.com/edrewitz/WxData/blob/main/Documentation/linear_anti_aliasing.md#linear-anti-aliasing-between-points)
|
|
249
|
+
|
|
242
250
|
***Running External Python Scripts In Your Workflow***
|
|
243
251
|
|
|
244
252
|
1 [run_external_scripts](https://github.com/edrewitz/WxData/blob/main/Documentation/run_external_scripts.md)
|
|
@@ -287,6 +295,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
287
295
|
"""
|
|
288
296
|
|
|
289
297
|
# Global Forecast System (GFS)
|
|
298
|
+
# - GFS 0.25x0.25 Degree Primary Parameters
|
|
299
|
+
# - GFS 0.25x0.25 Degree Secondary Parameters
|
|
300
|
+
# - GFS 0.5x0.5 Degree
|
|
290
301
|
from wxdata.gfs.gfs import(
|
|
291
302
|
gfs_0p25,
|
|
292
303
|
gfs_0p25_secondary_parameters,
|
|
@@ -300,6 +311,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
300
311
|
from wxdata.hgefs.hgefs import hgefs_mean_spread
|
|
301
312
|
|
|
302
313
|
# Global Ensemble Forecast System (GEFS)
|
|
314
|
+
# - GEFS 0.5x0.5 Degree Primary Parameters
|
|
315
|
+
# - GEFS 0.5x0.5 Degree Secondary Parameters
|
|
316
|
+
# - GEFS 0.25x0.25 Degree
|
|
303
317
|
from wxdata.gefs.gefs import(
|
|
304
318
|
gefs_0p50,
|
|
305
319
|
gefs_0p50_secondary_parameters,
|
|
@@ -307,6 +321,9 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
307
321
|
)
|
|
308
322
|
|
|
309
323
|
# AI Global Ensemble Forecast System (AIGEFS)
|
|
324
|
+
# - AIGEFS Pressure Members (Pressure Level Variables)
|
|
325
|
+
# - AIGEFS Surface Members (Surface Level Variables)
|
|
326
|
+
# - AIGEFS Single (AIGEFS Ensemble Mean & AIGEFS Ensemble Spread)
|
|
310
327
|
from wxdata.aigefs.aigefs import(
|
|
311
328
|
aigefs_pressure_members,
|
|
312
329
|
aigefs_surface_members,
|
|
@@ -314,14 +331,25 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
314
331
|
)
|
|
315
332
|
|
|
316
333
|
# European Centre for Medium-Range Weather Forecasts (ECMWF)
|
|
334
|
+
# - ECMWF IFS
|
|
335
|
+
# - ECMWF IFS Ensemble
|
|
336
|
+
# - ECMWF AIFS
|
|
337
|
+
# - ECMWF AIFS Ensemble
|
|
338
|
+
# - ECMWF IFS Wave
|
|
339
|
+
# - ECMWF IFS Wave Ensemble
|
|
317
340
|
from wxdata.ecmwf.ecmwf import(
|
|
318
341
|
ecmwf_ifs,
|
|
342
|
+
ecmwf_ifs_ens,
|
|
319
343
|
ecmwf_aifs,
|
|
320
|
-
|
|
321
|
-
ecmwf_ifs_wave
|
|
344
|
+
ecmwf_aifs_ens,
|
|
345
|
+
ecmwf_ifs_wave,
|
|
346
|
+
ecmwf_ifs_wave_ens
|
|
322
347
|
)
|
|
323
348
|
|
|
324
349
|
# FEMS RAWS Network
|
|
350
|
+
# - Single RAWS Station Data
|
|
351
|
+
# - A SIG Group of RAWS Data by GACC
|
|
352
|
+
# - NFDRS Forecast Data For a RAWS Station
|
|
325
353
|
from wxdata.fems.fems import(
|
|
326
354
|
get_single_station_data,
|
|
327
355
|
get_raws_sig_data,
|
|
@@ -329,15 +357,17 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
329
357
|
)
|
|
330
358
|
|
|
331
359
|
# Real-Time Mesoscale Analysis (RTMA)
|
|
360
|
+
# - RTMA Latest
|
|
361
|
+
# - RTMA Comparison Between Two Times
|
|
332
362
|
from wxdata.rtma.rtma import(
|
|
333
363
|
rtma,
|
|
334
364
|
rtma_comparison
|
|
335
365
|
)
|
|
336
366
|
|
|
337
367
|
# NOAA
|
|
338
|
-
# Storm Prediction Center Outlooks
|
|
339
|
-
# Climate Prediction Center Outlooks
|
|
340
|
-
# National Weather Service Forecasts
|
|
368
|
+
# - Storm Prediction Center Outlooks
|
|
369
|
+
# - Climate Prediction Center Outlooks
|
|
370
|
+
# - National Weather Service Forecasts
|
|
341
371
|
from wxdata.noaa.nws import(
|
|
342
372
|
get_ndfd_grids,
|
|
343
373
|
get_cpc_outlook
|
|
@@ -430,6 +460,7 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
430
460
|
from wxdata.utils.scripts import run_external_scripts
|
|
431
461
|
|
|
432
462
|
|
|
463
|
+
|
|
433
464
|
|
|
434
465
|
|
|
435
466
|
|
|
@@ -459,6 +490,10 @@ Then pip install wxdata after the new Python environment is set up.
|
|
|
459
490
|
|
|
460
491
|
**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
|
|
461
492
|
|
|
493
|
+
**tqdm**: da Costa-Luis, (2019). tqdm: A Fast, Extensible Progress Meter for Python and CLI. Journal of Open Source Software, 4(37), 1277, https://doi.org/10.21105/joss.01277
|
|
494
|
+
|
|
495
|
+
**ecmwf-opendata**: European Centre for Medium-Range Weather Forecasts (2026). ecmwf-opendata[Computer software]. GitHub. https://github.com/ecmwf/ecmwf-opendata
|
|
496
|
+
|
|
462
497
|
## Data Sources
|
|
463
498
|
|
|
464
499
|
1) [National Oceanic and Atmospheric Administration/National Center for Environmental Prediction](https://nomads.ncep.noaa.gov/)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "wxdata"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.4"
|
|
4
4
|
description = "A Python library that acts as a client to download, pre-process and post-process weather data. Friendly for users on VPN/PROXY connections."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -27,6 +27,8 @@ dependencies = [
|
|
|
27
27
|
"requests>=2.32.4",
|
|
28
28
|
"cfgrib>=0.9.10.4",
|
|
29
29
|
"dask>=2025.5.1",
|
|
30
|
+
"tqdm>=4.67.3",
|
|
31
|
+
"ecmwf-opendata>=0.3.26",
|
|
30
32
|
|
|
31
33
|
]
|
|
32
34
|
|
|
@@ -40,6 +40,9 @@ These functions do the following:
|
|
|
40
40
|
"""
|
|
41
41
|
|
|
42
42
|
# Global Forecast System (GFS)
|
|
43
|
+
# - GFS 0.25x0.25 Degree Primary Parameters
|
|
44
|
+
# - GFS 0.25x0.25 Degree Secondary Parameters
|
|
45
|
+
# - GFS 0.5x0.5 Degree
|
|
43
46
|
from wxdata.gfs.gfs import(
|
|
44
47
|
gfs_0p25,
|
|
45
48
|
gfs_0p25_secondary_parameters,
|
|
@@ -53,6 +56,9 @@ from wxdata.aigfs.aigfs import aigfs
|
|
|
53
56
|
from wxdata.hgefs.hgefs import hgefs_mean_spread
|
|
54
57
|
|
|
55
58
|
# Global Ensemble Forecast System (GEFS)
|
|
59
|
+
# - GEFS 0.5x0.5 Degree Primary Parameters
|
|
60
|
+
# - GEFS 0.5x0.5 Degree Secondary Parameters
|
|
61
|
+
# - GEFS 0.25x0.25 Degree
|
|
56
62
|
from wxdata.gefs.gefs import(
|
|
57
63
|
gefs_0p50,
|
|
58
64
|
gefs_0p50_secondary_parameters,
|
|
@@ -60,6 +66,9 @@ from wxdata.gefs.gefs import(
|
|
|
60
66
|
)
|
|
61
67
|
|
|
62
68
|
# AI Global Ensemble Forecast System (AIGEFS)
|
|
69
|
+
# - AIGEFS Pressure Members (Pressure Level Variables)
|
|
70
|
+
# - AIGEFS Surface Members (Surface Level Variables)
|
|
71
|
+
# - AIGEFS Single (AIGEFS Ensemble Mean & AIGEFS Ensemble Spread)
|
|
63
72
|
from wxdata.aigefs.aigefs import(
|
|
64
73
|
aigefs_pressure_members,
|
|
65
74
|
aigefs_surface_members,
|
|
@@ -67,14 +76,25 @@ from wxdata.aigefs.aigefs import(
|
|
|
67
76
|
)
|
|
68
77
|
|
|
69
78
|
# European Centre for Medium-Range Weather Forecasts (ECMWF)
|
|
79
|
+
# - ECMWF IFS
|
|
80
|
+
# - ECMWF IFS Ensemble
|
|
81
|
+
# - ECMWF AIFS
|
|
82
|
+
# - ECMWF AIFS Ensemble
|
|
83
|
+
# - ECMWF IFS Wave
|
|
84
|
+
# - ECMWF IFS Wave Ensemble
|
|
70
85
|
from wxdata.ecmwf.ecmwf import(
|
|
71
86
|
ecmwf_ifs,
|
|
87
|
+
ecmwf_ifs_ens,
|
|
72
88
|
ecmwf_aifs,
|
|
73
|
-
|
|
74
|
-
ecmwf_ifs_wave
|
|
89
|
+
ecmwf_aifs_ens,
|
|
90
|
+
ecmwf_ifs_wave,
|
|
91
|
+
ecmwf_ifs_wave_ens
|
|
75
92
|
)
|
|
76
93
|
|
|
77
94
|
# FEMS RAWS Network
|
|
95
|
+
# - Single RAWS Station Data
|
|
96
|
+
# - A SIG Group of RAWS Data by GACC
|
|
97
|
+
# - NFDRS Forecast Data For a RAWS Station
|
|
78
98
|
from wxdata.fems.fems import(
|
|
79
99
|
get_single_station_data,
|
|
80
100
|
get_raws_sig_data,
|
|
@@ -82,15 +102,17 @@ from wxdata.fems.fems import(
|
|
|
82
102
|
)
|
|
83
103
|
|
|
84
104
|
# Real-Time Mesoscale Analysis (RTMA)
|
|
105
|
+
# - RTMA Latest
|
|
106
|
+
# - RTMA Comparison Between Two Times
|
|
85
107
|
from wxdata.rtma.rtma import(
|
|
86
108
|
rtma,
|
|
87
109
|
rtma_comparison
|
|
88
110
|
)
|
|
89
111
|
|
|
90
112
|
# NOAA
|
|
91
|
-
# Storm Prediction Center Outlooks
|
|
92
|
-
# Climate Prediction Center Outlooks
|
|
93
|
-
# National Weather Service Forecasts
|
|
113
|
+
# - Storm Prediction Center Outlooks
|
|
114
|
+
# - Climate Prediction Center Outlooks
|
|
115
|
+
# - National Weather Service Forecasts
|
|
94
116
|
from wxdata.noaa.nws import(
|
|
95
117
|
get_ndfd_grids,
|
|
96
118
|
get_cpc_outlook
|