diff --git a/.gitignore b/.gitignore index f1f5006..5a85b27 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,6 @@ coverage.xml !.github/ !.gitignore !.gitattributes + +# validation run artifact +validation_results.csv diff --git a/CHANGELOG.md b/CHANGELOG.md index fbd8adc..b874398 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,37 @@ Changelog Development ----------- +* Observed weather data is served from NOAA GHCNh; ISD and GSOD stopped + receiving data 2025-08-27. Overlap validation against ISD history shows + median hourly deviation of 0.0001 degrees C + (`scripts/validate_ghcnh_against_isd.py`). +* New api: `load_data(usaf_id, start, end, frequency, variables)` returns a + DataFrame and warnings, replacing the `load_isd_*`/`load_gsod_*` family; + `ISDStation` is renamed `WeatherStation`. GHCNh variables beyond + temperature (dew point, relative humidity, wind speed, ...) are available + through `variables`. +* Station registry maps each station to its GHCNh id + (`get_ghcn_id(usaf_id)` for one station, `get_ghcn_ids()` for the + registry); 349 stations with no + GHCNh counterpart are removed. Each station records the first and last + year its GHCNh record has observations (`ghcn_first_year`, + `ghcn_last_year`); about a fifth of the registry, nearly all low + quality, has no observations after 2023. +* Station quality ratings are computed from the GHCNh inventory (same + rule as before: every month of the last five full years above 600 + observations is high, above 360 is medium). Tiers move for about a + fifth of stations, mostly upgrades of stations the retired ISD + inventory undercounted: 1858 high / 393 medium / 2246 low. +* Quality can be rated for the period being requested: + `get_station_quality(usaf_id, start, end)` and + `rank_stations(..., rating_period=(start, end))` rate stations over + the five calendar years ending two years after the period's last + date (sliding back to end no later than the last full year), so + historical requests rank stations by their reliability in that era. + The packaged database carries the monthly counts (`ghcn_inventory`). +* Caching uses new ghcnh-* keys; ISD-era cache entries are never served. +* Deleted: FTP fetch code, ISD/GSOD parsing, filename helpers and CLI + commands, sphinx docs (documentation moves to opendsm.energy). * Switched to https api over FTP for temperature data fetching * Remove deprecated `typing` dependency * Switch from snapshottest to syrupy for snapshot testing. diff --git a/README.md b/README.md index 40a447f..4640579 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,30 @@ # EEweather: Weather station wrangling for EEmeter [![License](https://img.shields.io/github/license/opendsm/eeweather.svg)](https://github.com/opendsm/eeweather) -[![Documentation Status](https://readthedocs.org/projects/eeweather/badge/?version=latest)](http://eeweather.readthedocs.io/en/latest/?badge=latest) [![PyPI Version](https://img.shields.io/pypi/v/eeweather.svg)](https://pypi.python.org/pypi/eeweather) --- -**EEweather** — tools for matching to and fetching data from NCEI ISD, TMY3, or CZ2010 weather stations. +**EEweather** — tools for matching to and fetching data from NCEI GHCNh, TMY3, or CZ2010 weather stations. EEweather comes with a database of weather station metadata, ZCTA metadata, and GIS data that makes it easier to find the right weather station to use for a particular ZIP code or lat/long coordinate. -[Read the docs.](https://eeweather.readthedocs.org/) +[Documentation lives at opendsm.energy.](https://opendsm.energy) + +## Usage + +```python +import datetime +import eeweather + +station = eeweather.WeatherStation("722880") +df, warnings = station.load_data( + datetime.datetime(2024, 1, 1, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 12, 31, tzinfo=datetime.timezone.utc), + frequency="hourly", + variables=("temperature",), +) +``` ## Installation @@ -22,8 +36,7 @@ $ pip install eeweather ## Supported Sources of Weather Data -- NCEI Integrated Surface Database (ISD) -- Global Summary of the Day (GSOD) +- NOAA Global Historical Climatology Network hourly (GHCNh) - NREL Typical Meteorological Year 3 (TMY3) - California Energy Commission 1998-2009 Weather Normals (CZ2010) @@ -40,6 +53,7 @@ $ pip install eeweather - US Census Bureau (ZCTAs, county shapefiles) - Building America climate zone county lists - NOAA NCEI Integrated Surface Database Station History + - NOAA GHCNh station list - NREL TMY3 site - Plot maps of outputs @@ -53,24 +67,6 @@ $ source .venv/bin/activate $ pip install -e .[dev] ``` -Build docs: - -``` -$ make -C docs html -``` - -Autobuild docs: - -``` -$ make -C docs livehtml -``` - -Check spelling in docs: - -``` -$ make -C docs spelling -``` - Run tests: ``` @@ -93,12 +89,6 @@ Run a tutorial notebook (copy link w/ token, open tutorial.ipynb): $ docker-compose up jupyter ``` -Live-edit docs: - -``` -$ docker-compose up docs -``` - Open a shell: ``` diff --git a/docker-compose.yml b/docker-compose.yml index 87c4818..a1c706d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,14 +9,6 @@ services: volumes: - .:/app - docs: - image: eeweather_shell - ports: - - "${HOST_PORT_DOCS:-8000}:8000" - entrypoint: make -C docs livehtml - volumes: - - .:/app - test: image: eeweather_shell entrypoint: py.test -n0 @@ -24,15 +16,6 @@ services: - .:/app - /app/tests/__pycache__/ - jupyter: - ports: - - "${HOST_PORT_JUPYTER:-8888}:${HOST_PORT_JUPYTER:-8888}" - image: eeweather_shell - entrypoint: | - jupyter lab scripts/ --ip=0.0.0.0 --port=${HOST_PORT_JUPYTER:-8888} --allow-root --no-browser - volumes: - - .:/app - eeweather: image: eeweather_shell entrypoint: eeweather diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index a0a19e1..0000000 --- a/docs/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -SPHINXPROJ = eeweather -SOURCEDIR = . -BUILDDIR = _build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Custom target for autobuild (philngo) -livehtml: - sphinx-autobuild "$(SOURCEDIR)" "$(BUILDDIR)"/html --host 0.0.0.0 --port 8000 --watch ../eeweather - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css deleted file mode 100644 index f108554..0000000 --- a/docs/_static/css/custom.css +++ /dev/null @@ -1,2 +0,0 @@ -/* Fix spacing around code blocks. */ -div.highlight pre {padding: 11px 14px;} diff --git a/docs/_static/oee.ico b/docs/_static/oee.ico deleted file mode 100644 index 7c4da26..0000000 Binary files a/docs/_static/oee.ico and /dev/null differ diff --git a/docs/_static/openee.png b/docs/_static/openee.png deleted file mode 100644 index 1a9352c..0000000 Binary files a/docs/_static/openee.png and /dev/null differ diff --git a/docs/_static/plot-91104-to-722880.png b/docs/_static/plot-91104-to-722880.png deleted file mode 100644 index 5774d42..0000000 Binary files a/docs/_static/plot-91104-to-722880.png and /dev/null differ diff --git a/docs/_static/station-mapping.png b/docs/_static/station-mapping.png deleted file mode 100644 index 6b2711d..0000000 Binary files a/docs/_static/station-mapping.png and /dev/null differ diff --git a/docs/_templates/sidebar.html b/docs/_templates/sidebar.html deleted file mode 100644 index fa91a16..0000000 --- a/docs/_templates/sidebar.html +++ /dev/null @@ -1,25 +0,0 @@ - - -

- -

- -

-EEweather is a collection of tools for determining appropriate sources of weather data from which to fetch data, and for fetching data from those sources. -

- -

-It is designed to be used in conjunction with the OpenEEmeter to provide weather data for use in fitting temperature-based energy usage models. -

- - -

Useful Links

- diff --git a/docs/advanced.rst b/docs/advanced.rst deleted file mode 100644 index 031da62..0000000 --- a/docs/advanced.rst +++ /dev/null @@ -1,110 +0,0 @@ -Advanced Usage -============== - -Digging deeper into eeweather features. - -Caching Weather Data --------------------- - -By default, a small SQLite database is setup at ``~/.eeweather/cache.db`` that -is used to save weather data that is pulled from primary sources, such as the -NOAA FTP site. This is done partially out of courtesy to the service, but also -because it vastly speeds up the process of obtaining weather data. This local -cache can be pointed to a different database by setting the environment -variable `EEWEATHER_CACHE_URL` to any URL supported by SQLalchemy. - -For example:: - - export EEWEATHER_CACHE_URL=postgres://user:password@host:port/dbname - -ZCTA to latitude/longitude conversion -------------------------------------- - -Convert ZCTA targets into latitude/longitudes based on their centroid:: - - >>> eeweather.zcta_to_lat_long(90210) - (34.1010279124639, -118.414760978568) - -If the ZCTA or station is not recognized, an error will be thrown:: - - >>> eeweather.zcta_to_lat_long('BAD_ZCTA') - ... - UnrecognizedZCTAError: BAD_STATION - -Charting Station mappings -------------------------- - -.. note:: Requires `matplotlib` to be installed. - -Within (for example) a jupyter notebook you can create plots like this:: - - >>> station = eeweather.ISDStation('722990') - >>> eeweather.plot_station_mapping( - ... lat, lng, station, distance_meters=21900, target='91104') - -This will create a plot like the following: - -.. image:: _static/plot-91104-to-722880.png - :target: _static/plot-91104-to-722880.png - -Advanced database inspection ----------------------------- - -Using the CLI -///////////// - -If you prefer a GUI: `SQLite Browser `_ - -The default database location is ``~/.eeweather/cache.db``. - -How to log into the database:: - - $ eeweather inspect_db - SQLite version 3.19.3 2017-06-27 16:48:08 - Enter ".help" for usage hints. - sqlite> - -List all tables:: - - sqlite> .tables - -Turn on headers for results:: - - sqlite> .headers on - -Example queries -/////////////// - -Get more information about a specific ISD station. - -.. code-block:: sql - - select - * - from - isd_station_metadata - where - usaf_id = '722860' - -Rebuilding the Database ------------------------ - -The metadata database can be rebuilt from primary sources using the CLI. - -Exercise some caution when running this command, as it will overwrite the existing db:: - - $ eeweather rebuild_db - -To see all options, run:: - - $ eeweather rebuild_db --help - Usage: eeweather rebuild_db [OPTIONS] - - Options: - --zcta-geometry / --no-zcta-geometry - --iecc-climate-zone-geometry / --no-iecc-climate-zone-geometry - --iecc-moisture-regime-geometry / --no-iecc-moisture-regime-geometry - --ba-climate-zone-geometry / --no-ba-climate-zone-geometry - --ca-climate-zone-geometry / --no-ca-climate-zone-geometry - --n-closest-stations INTEGER - --help Show this message and exit. diff --git a/docs/api.rst b/docs/api.rst deleted file mode 100644 index 55cc36c..0000000 --- a/docs/api.rst +++ /dev/null @@ -1,63 +0,0 @@ -API Docs -======== - -Ranking -------- - -.. autofunction:: eeweather.rank_stations - -.. autofunction:: eeweather.combine_ranked_stations - -.. autofunction:: eeweather.select_station - -``ISDStation`` objects ----------------------- - -.. autoclass:: eeweather.ISDStation - :members: - -Summaries ---------- - -.. autofunction:: eeweather.summaries.get_zcta_ids - -.. autofunction:: eeweather.summaries.get_isd_station_usaf_ids - -Geography ---------- - -.. autofunction:: eeweather.geo.get_lat_long_climate_zones - -.. autofunction:: eeweather.geo.get_zcta_metadata - -.. autofunction:: eeweather.geo.zcta_to_lat_long - -Database --------- - -.. autofunction:: eeweather.database.build_metadata_db - -Exceptions ----------- - -.. autoexception:: eeweather.EEWeatherError - -.. autoexception:: eeweather.ISDDataNotAvailableError - -.. autoexception:: eeweather.UnrecognizedZCTAError - -.. autoexception:: eeweather.UnrecognizedUSAFIDError - -Validators ----------- - -.. autofunction:: eeweather.validation.valid_zcta_or_raise - -.. autofunction:: eeweather.validation.valid_usaf_id_or_raise - -Visualization -------------- - -.. autofunction:: eeweather.plot_station_mapping - -.. autofunction:: eeweather.plot_station_mappings diff --git a/docs/basics.rst b/docs/basics.rst deleted file mode 100644 index 326b214..0000000 --- a/docs/basics.rst +++ /dev/null @@ -1,281 +0,0 @@ -Basic Usage -=========== - -This document describes how to get started with eeweather. - -Matching to weather stations ----------------------------- - -EEweather is designed to support the process of finding sources of data that -correspond to particular sites. As there are many approaches to this process -of matching, the EEweather package is designed to be flexible. - -EEweather provides sensible default mappings from geographical markers to -weather stations so that it can be used out of the box. - -EEweather uses lat/long coordinates as targets for weather matching. -This method is described below. - -Latitude/Longitude Coordinates -////////////////////////////// - -The recommended way to find the weather station(s) that correspond to a -particular site is to use the lat-long coordinates of that site. - -Example usage:: - - >>> import eeweather - >>> ranked_stations = eeweather.rank_stations(35, -95) - >>> station, warnings = eeweather.select_station(ranked_stations) - >>> station - ISDStation('720627') - >>> ranked_stations.loc[station.usaf_id] - rank 1 - distance_meters 32692.7 - latitude 35.283 - longitude -95.1 - iecc_climate_zone 3 - iecc_moisture_regime A - ba_climate_zone Mixed-Humid - ca_climate_zone None - rough_quality low - elevation 183.2 - state OK - tmy3_class None - is_tmy3 False - is_cz2010 False - difference_elevation_meters None - Name: 720627, dtype: object - >>> warnings - [] - -That particular result has no associated warnings, but other mappings may have -associated warnings, such as the mapping from this point which is in the middle -of the Gulf of Mexico, 700km away from the nearest weather station and outside -of the climate zone boundary:: - - >>> ranked_stations = eeweather.rank_stations(20, -95) - >>> station, warnings = eeweather.select_station(ranked_stations) - >>> warnings - ['Distance from target to weather station is greater than 50km.', 'Distance from target to weather station is greater than 200km.'] - -ZIP Code Tabulation Areas (ZCTAs) -///////////////////////////////// - -ZIP codes are often abused as rough geographic markers. They are not -particularly well set up be used as the basis of a GIS system - some ZIP codes -correspond to single buildings or post-offices, some cover thousands of square -miles of land. The US Census Bureau transforms census blocks into what they -call ZIP Code Tabulation Areas, and use these instead. There are roughly 10k -ZIP codes that are not used as ZCTAs, and ZCTAs do not correspond directly to -ZIP codes, but for matching to weather stations, which are much sparser than -ZIP codes, this rough mapping is usually sufficient. Often tens or hundreds of -ZCTAs will be matched to the same weather station. We provide a function -:any:`eeweather.zcta_to_lat_long` which allows for a ZCTA to be converted into -a latitude and longitude (the centroid of the ZCTA) which can be used to match -to a weather station using the latitude/longitude method mentioned above. - -.. image:: _static/station-mapping.png - :target: _static/station-mapping.png - -.. note:: The default mapping concentrates on weather stations in US states - (including AK, HI) and territories, including PR, GU, VI etc). - -Example usage:: - - >>> lat, long = eeweather.zcta_to_lat_long('91104') - >>> lat, long - (34.1678418058534, -118.123485581459) - -Obtaining temperature data --------------------------- - -These matching results carry a reference to a weather station object. The -weather station object has some associated metadata and - most importantly - -has methods for obtaining weather data. - -Let's look at the station object from above:: - - >>> station = result.isd_station - >>> station - ISDStation('722178') - -This ``ISDStation`` object carries information about that station and methods -for fetching corresponding weather data. - -The ``.json()`` method gives a quick summary of associated metadata in a -format that can easily be serialized:: - - >>> import json - >>> print(json.dumps(station.json(), indent=2) - { - "elevation": 137.5, - "latitude": 35.021, - "longitude": -94.621, - "icao_code": "KRKR", - "name": "ROBERT S KERR AIRPORT", - "quality": "high", - "wban_ids": [ - "53953", - "99999" - ], - "recent_wban_id": "53953", - "climate_zones": { - "iecc_climate_zone": "3", - "iecc_moisture_regime": "A", - "ba_climate_zone": "Mixed-Humid", - "ca_climate_zone": null - } - } - -Most of these are also stored as attributes on the object:: - - >>> station.usaf_id - '722178' - >>> station.latitude, station.longitude - (35.021, -94.621) - >>> station.coords - (35.021, -94.621) - >>> station.name - 'ROBERT S KERR AIRPORT' - >>> station.iecc_climate_zone - '3' - >>> station.iecc_moisture_regime - 'A' - -In addition to these simple attributes there are a host of methods that can be used to fetch temperature data. The simplest are these, which return `pandas.Series` objects. The start and end date timezones must be explicilty set to UTC. - -Note that this temperature data is given in degrees *Celsius*, not Fahrenheit. (:math:`T_F = T_C \cdot 1.8 + 32`), and that the ``pd.Timestamp`` index is given in UTC. - - -ISD temperature data as an hourly time series:: - - >>> import datetime - >>> import pytz - >>> start_date = datetime.datetime(2016, 6, 1, tzinfo=pytz.UTC) - >>> end_date = datetime.datetime(2017, 9, 15, tzinfo=pytz.UTC) - >>> tempC, warnings = station.load_isd_hourly_temp_data(start_date, end_date) - >>> tempC.head() - 2016-06-01 00:00:00+00:00 21.3692 - 2016-06-01 01:00:00+00:00 20.6325 - 2016-06-01 02:00:00+00:00 19.4858 - 2016-06-01 03:00:00+00:00 19.0883 - 2016-06-01 04:00:00+00:00 18.8858 - Freq: H, dtype: float64 - >>> tempF = tempC * 1.8 + 32 - >>> tempF.head() - 2016-06-01 00:00:00+00:00 70.46456 - 2016-06-01 01:00:00+00:00 69.13850 - 2016-06-01 02:00:00+00:00 67.07444 - 2016-06-01 03:00:00+00:00 66.35894 - 2016-06-01 04:00:00+00:00 65.99444 - -ISD temperature data as a daily time series:: - - >>> tempC = station.load_isd_daily_temp_data(start_date, end_date) - >>> tempC.head() - 2016-06-01 00:00:00+00:00 21.329063 - 2016-06-02 00:00:00+00:00 21.674583 - 2016-06-03 00:00:00+00:00 22.434306 - 2016-06-04 00:00:00+00:00 22.842674 - 2016-06-05 00:00:00+00:00 21.850521 - Freq: D, dtype: float64 - >>> tempF = tempC * 1.8 + 32 - >>> tempF.head() - 2016-06-01 00:00:00+00:00 70.392313 - 2016-06-02 00:00:00+00:00 71.014250 - 2016-06-03 00:00:00+00:00 72.381750 - 2016-06-04 00:00:00+00:00 73.116813 - 2016-06-05 00:00:00+00:00 71.330937 - Freq: D, dtype: float64 - -GSOD temperature data as a daily time series:: - - >>> tempC = station.load_gsod_daily_temp_data(start_date, end_date) - >>> tempC.head() - 2016-06-01 00:00:00+00:00 21.111111 - 2016-06-02 00:00:00+00:00 21.833333 - 2016-06-03 00:00:00+00:00 22.277778 - 2016-06-04 00:00:00+00:00 22.777778 - 2016-06-05 00:00:00+00:00 21.833333 - Freq: D, dtype: float64 - >>> tempF = temps * 1.8 + 32 - >>> tempF.head() - 2016-06-01 00:00:00+00:00 70.0 - 2016-06-02 00:00:00+00:00 71.3 - 2016-06-03 00:00:00+00:00 72.1 - 2016-06-04 00:00:00+00:00 73.0 - 2016-06-05 00:00:00+00:00 71.3 - Freq: D, dtype: float64 - -This station does not contain TMY3 data. To require that TMY3 data is -available at the matched weather station, restrict the ranked weather -stations to only those which have TMY3 data:: - - >>> ranked_stations = eeweather.rank_stations(35, -95, is_tmy3=True) - >>> station, warnings = eeweather.select_station(ranked_stations) - >>> station - ISDStation('723440') - -TMY3 temperature data as an hourly time series:: - - >>> tempC = station.load_tmy3_hourly_temp_data(start_date, end_date) - >>> tempC.head() - - 2016-06-01 00:00:00+00:00 26.7 - 2016-06-01 01:00:00+00:00 26.3 - 2016-06-01 02:00:00+00:00 26.0 - 2016-06-01 03:00:00+00:00 25.6 - 2016-06-01 04:00:00+00:00 25.3 - Freq: D, dtype: float64 - >>> tempF = temps * 1.8 + 32 - >>> tempF.head() - 2016-06-01 00:00:00+00:00 80.06 - 2016-06-01 01:00:00+00:00 79.34 - 2016-06-01 02:00:00+00:00 78.80 - 2016-06-01 03:00:00+00:00 78.08 - 2016-06-01 04:00:00+00:00 77.54 - Freq: D, dtype: float64 - -A similar restriction can be made for CZ2010 stations, which are specific to -California:: - - >>> ranked_stations = eeweather.rank_stations(35, -95, is_cz2010=True) - >>> station, warnings = eeweather.select_station(ranked_stations) - >>> station - ISDStation('723805') - -CZ2010 temperature data as an hourly time series:: - - >>> tempC = station.load_cz2010_hourly_temp_data(start_date, end_date) - >>> tempC.head() - 2016-06-01 00:00:00+00:00 26.7 - 2016-06-01 01:00:00+00:00 26.3 - 2016-06-01 02:00:00+00:00 26.0 - 2016-06-01 03:00:00+00:00 25.6 - 2016-06-01 04:00:00+00:00 25.3 - Freq: D, dtype: float64 - >>> tempF = temps * 1.8 + 32 - >>> tempF.head() - 2016-06-01 00:00:00+00:00 80.06 - 2016-06-01 01:00:00+00:00 79.34 - 2016-06-01 02:00:00+00:00 78.80 - 2016-06-01 03:00:00+00:00 78.08 - 2016-06-01 04:00:00+00:00 77.54 - Freq: H, dtype: float64 - -The station ranking function :any:`eeweather.rank_stations` has many more -options, including distance restriction and climate zone restriction, which -may come in handy. - - -If desired, :any:`eeweather.ISDStation` objects can also be created directly:: - - >>> eeweather.ISDStation('722880') - ISDStation('722880') - -If the station is not recognized, an error will be thrown:: - - >>> eeweather.ISDStation('BAD_STATION') - ... - eeweather.exceptions.UnrecognizedUSAFIDError: BAD_STATION diff --git a/docs/conf.py b/docs/conf.py deleted file mode 100644 index 2e504d3..0000000 --- a/docs/conf.py +++ /dev/null @@ -1,203 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" - -Copyright 2018-2023 OpenEEmeter contributors - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -""" -# -# eeweather documentation build configuration file, created by -# sphinx-quickstart on Mon Jan 29 15:16:11 2018. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) -from eeweather import get_version - - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.intersphinx", - "sphinx.ext.coverage", - "sphinx.ext.mathjax", - "sphinx.ext.viewcode", - "sphinx.ext.napoleon", - "sphinxcontrib.spelling", -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = ".rst" - -# The master toctree document. -master_doc = "index" - -# General information about the project. -project = "eeweather" -copyright = "2018-2023, OpenEEmeter contributors" -author = "Phil Ngo" - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = get_version() -# The full version, including alpha/beta/rc tags. -release = get_version() - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This patterns also effect to html_static_path and html_extra_path -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = "sphinx" - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = "alabaster" - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -# html_theme_options = {} - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["_static"] - -# Custom sidebar templates, must be a dictionary that maps document names -# to template names. -# -# This is required for the alabaster theme -# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars -html_sidebars = { - "index": ["sidebar.html", "globaltoc.html", "sourcelink.html", "searchbox.html"], - "**": ["sidebar.html", "globaltoc.html", "sourcelink.html", "searchbox.html"], -} - -# -- Options for HTMLHelp output ------------------------------------------ - -# Output file base name for HTML help builder. -htmlhelp_basename = "eeweatherdoc" - - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, "eeweather.tex", "EEweather Documentation", "Phil Ngo", "manual") -] - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [(master_doc, "eeweather", "EEweather Documentation", [author], 1)] - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ( - master_doc, - "eeweather", - "EEweather Documentation", - author, - "eeweather", - "Weather wrangling for EEmeter", - "Miscellaneous", - ) -] - - -# Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = { - "python": ("https://docs.python.org/3/", None), - "pandas": ("https://pandas.pydata.org/pandas-docs/stable", None), -} - -html_favicon = "_static/oee.ico" - - -language = 'en' - -def setup(app): - app.add_css_file("css/custom.css") # may also be an URL diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index 012af48..0000000 --- a/docs/index.rst +++ /dev/null @@ -1,129 +0,0 @@ -EEweather: Weather station wrangling for EEmeter -================================================ - -.. image:: https://travis-ci.org/openeemeter/eeweather.svg?branch=master - :target: https://travis-ci.org/openeemeter/eeweather - -.. image:: https://img.shields.io/github/license/openeemeter/eeweather.svg - :target: https://github.com/openeemeter/eeweather - -.. image:: https://readthedocs.org/projects/eeweather/badge/?version=latest - :target: http://eeweather.readthedocs.io/en/latest/?badge=latest - -.. image:: https://img.shields.io/pypi/v/eeweather.svg - :target: https://pypi.python.org/pypi/eeweather - -.. image:: https://codecov.io/gh/openeemeter/eeweather/branch/master/graph/badge.svg - :target: https://codecov.io/gh/openeemeter/eeweather - ---------------- - -**EEweather** — tools for matching to and fetching data from NCEI ISD, TMY3, or CZ2010 weather stations. - -EEweather comes with a database of weather station metadata, ZCTA metadata, and GIS data that makes it easier to find the right weather station to use for a particular ZIP code or lat/long coordinate. - -Installation ------------- - -EEweather is a python package and can be installed with pip. - -:: - - $ pip install eeweather - -Supported Sources of Weather Data ---------------------------------- - -- NCEI Integrated Surface Database (ISD) -- Global Summary of the Day (GSOD) -- NREL Typical Meteorological Year 3 (TMY3) -- California Energy Commission 1998-2009 Weather Normals (CZ2010) - -Features --------- - -- Match by lat/long coordinates -- Convert ZIP code (ZCTA) to lat/long coordinates of its centroid -- Use user-supplied weather station mappings -- Match within climate zones - - - IECC Climate Zones - - IECC Moisture Regimes - - Building America Climate Zones - - California Building Climate Zone Areas - -- User-friendly SQLite database of metadata compiled from primary sources - - - US Census Bureau (ZCTAs, county shapefiles) - - Building America climate zone county lists - - NOAA NCEI Integrated Surface Database Station History - - NREL TMY3 site - -- Plot maps of outputs - -Command-line Usage ------------------- - -Once installed, ``eeweather`` can be run from the command-line. To see all available commands, run ``eeweather --help``. - -View ISD station metadata:: - - $ eeweather inspect_isd_station 722874 - { - "usaf_id": "722874", - "wban_ids": "93134", - "recent_wban_id": "93134", - "name": "DOWNTOWN L.A./USC CAMPUS", - "latitude": "+34.024", - "longitude": "-118.291", - "elevation": "+0054.6", - "quality": "high", - "iecc_climate_zone": "3", - "iecc_moisture_regime": "B", - "ba_climate_zone": "Hot-Dry", - "ca_climate_zone": "CA_08" - } - -Download raw ISD files:: - - $ wget `eeweather inspect_isd_filenames 722874 2017` - -Download raw GSOD files:: - - $ wget `eeweather inspect_gsod_filenames 722874 2017` - -Enter the SQLite command line for the metadata database:: - - $ eeweather inspect_db - SQLite version 3.19.3 2017-06-27 16:48:08 - Enter ".help" for usage hints. - sqlite> .tables - ba_climate_zone_metadata isd_file_metadata - ca_climate_zone_metadata isd_station_metadata - cz2010_station_metadata tmy3_station_metadata - iecc_climate_zone_metadata zcta_metadata - iecc_moisture_regime_metadata - sqlite> .headers on - sqlite> select * from isd_station_metadata where ca_climate_zone = 'CA_06' limit 10; - usaf_id|wban_ids|recent_wban_id|name|latitude|longitude|elevation|quality|iecc_climate_zone|iecc_moisture_regime|ba_climate_zone|ca_climate_zone - 722883|99999|99999|HERMOSA BEACH PIER|+33.870|-118.400|+0008.0|low|3|B|Hot-Dry|CA_06 - 722885|93197,99999|93197|SANTA MONICA MUNI AIRPORT|+34.016|-118.451|+0053.0|high|3|B|Hot-Dry|CA_06 - 722913|99999|99999|MARINA DEL REY|+33.970|-118.430|+0008.0|low|3|B|Hot-Dry|CA_06 - 722917|99999|99999|LONG BEACH|+33.770|-118.170|+0003.0|low|3|B|Hot-Dry|CA_06 - 722933|99999|99999|SAN CLEMENTE|+33.420|-117.620|+0003.0|low|3|B|Hot-Dry|CA_06 - 722935|99999|99999|EL CAPITAN BEACH|+34.467|-120.033|+0027.0|low|3|C|Marine|CA_06 - 722950|23174|23174|LOS ANGELES INTERNATIONAL AIRPORT|+33.938|-118.389|+0029.6|high|3|B|Hot-Dry|CA_06 - 722954|99999|99999|ZUMA BEACH|+34.020|-118.820|+0006.0|low|3|B|Hot-Dry|CA_06 - 722955|03122,03174,99999|03174|ZAMPERINI FIELD AIRPORT|+33.803|-118.340|+0029.6|low|3|B|Hot-Dry|CA_06 - 722974|99999|99999|LONG BEACH|+33.767|-118.167|+0003.0|low|3|B|Hot-Dry|CA_06 - sqlite> .quit - -Usage Guides ------------- - -.. toctree:: - :maxdepth: 2 - - basics - advanced - api diff --git a/docs/make.bat b/docs/make.bat deleted file mode 100644 index 3bc632f..0000000 --- a/docs/make.bat +++ /dev/null @@ -1,36 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=. -set BUILDDIR=_build -set SPHINXPROJ=eeweather - -if "%1" == "" goto help - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% - -:end -popd diff --git a/docs/rtd-requirements.txt b/docs/rtd-requirements.txt deleted file mode 100644 index f256743..0000000 --- a/docs/rtd-requirements.txt +++ /dev/null @@ -1 +0,0 @@ -sphinxcontrib-spelling==4.0.1 diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt deleted file mode 100644 index 4682d29..0000000 --- a/docs/spelling_wordlist.txt +++ /dev/null @@ -1,17 +0,0 @@ -metadata -jupyter -EEmeter -shapefiles -EmptyMapping -ISDStationMapping -eeweather -resampled -oee -resample -matplotlib -cartopy -Deserialize -UnrecognizedZCTAError -UnrecognizedUSAFIDError -Validators -isd diff --git a/eeweather/__init__.py b/eeweather/__init__.py index 912a448..070fe62 100644 --- a/eeweather/__init__.py +++ b/eeweather/__init__.py @@ -29,78 +29,53 @@ EEWeatherError, UnrecognizedUSAFIDError, UnrecognizedZCTAError, - ISDDataNotAvailableError, - GSODDataNotAvailableError, + DataNotAvailableError, ) from .summaries import get_zcta_ids, get_isd_station_usaf_ids from .ranking import rank_stations, combine_ranked_stations, select_station from .stations import ( - ISDStation, - get_isd_filenames, - get_gsod_filenames, + WeatherStation, + get_ghcn_id, get_isd_station_metadata, + get_station_quality, + get_station_qualities, get_isd_file_metadata, - fetch_isd_raw_temp_data, - fetch_isd_hourly_temp_data, - fetch_isd_daily_temp_data, - fetch_gsod_raw_temp_data, - fetch_gsod_daily_temp_data, + fetch_hourly_data, fetch_tmy3_hourly_temp_data, fetch_cz2010_hourly_temp_data, - get_isd_hourly_temp_data_cache_key, - get_isd_daily_temp_data_cache_key, - get_gsod_daily_temp_data_cache_key, + get_hourly_data_cache_key, get_tmy3_hourly_temp_data_cache_key, get_cz2010_hourly_temp_data_cache_key, - cached_isd_hourly_temp_data_is_expired, - cached_isd_daily_temp_data_is_expired, - cached_gsod_daily_temp_data_is_expired, - validate_isd_hourly_temp_data_cache, - validate_isd_daily_temp_data_cache, - validate_gsod_daily_temp_data_cache, + cached_hourly_data_is_expired, + validate_hourly_data_cache, validate_tmy3_hourly_temp_data_cache, validate_cz2010_hourly_temp_data_cache, - serialize_isd_hourly_temp_data, - serialize_isd_daily_temp_data, - serialize_gsod_daily_temp_data, + serialize_hourly_data, serialize_tmy3_hourly_temp_data, serialize_cz2010_hourly_temp_data, - deserialize_isd_hourly_temp_data, - deserialize_isd_daily_temp_data, - deserialize_gsod_daily_temp_data, + deserialize_hourly_data, deserialize_tmy3_hourly_temp_data, deserialize_cz2010_hourly_temp_data, - read_isd_hourly_temp_data_from_cache, - read_isd_daily_temp_data_from_cache, - read_gsod_daily_temp_data_from_cache, + read_hourly_data_from_cache, read_tmy3_hourly_temp_data_from_cache, read_cz2010_hourly_temp_data_from_cache, - write_isd_hourly_temp_data_to_cache, - write_isd_daily_temp_data_to_cache, - write_gsod_daily_temp_data_to_cache, + write_hourly_data_to_cache, write_tmy3_hourly_temp_data_to_cache, write_cz2010_hourly_temp_data_to_cache, - destroy_cached_isd_hourly_temp_data, - destroy_cached_isd_daily_temp_data, - destroy_cached_gsod_daily_temp_data, + destroy_cached_hourly_data, destroy_cached_tmy3_hourly_temp_data, destroy_cached_cz2010_hourly_temp_data, - load_isd_hourly_temp_data_cached_proxy, - load_isd_daily_temp_data_cached_proxy, - load_gsod_daily_temp_data_cached_proxy, + load_hourly_data_cached_proxy, load_tmy3_hourly_temp_data_cached_proxy, load_cz2010_hourly_temp_data_cached_proxy, - load_isd_hourly_temp_data, - load_isd_daily_temp_data, - load_gsod_daily_temp_data, + load_data, load_tmy3_hourly_temp_data, load_cz2010_hourly_temp_data, - load_cached_isd_hourly_temp_data, - load_cached_isd_daily_temp_data, - load_cached_gsod_daily_temp_data, + load_cached_hourly_data, load_cached_tmy3_hourly_temp_data, load_cached_cz2010_hourly_temp_data, ) +from .utils import get_ghcn_ids from .visualization import plot_station_mapping, plot_station_mappings diff --git a/eeweather/access_api.py b/eeweather/access_api.py deleted file mode 100644 index 5a07bde..0000000 --- a/eeweather/access_api.py +++ /dev/null @@ -1,197 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" - -Copyright 2018-2023 OpenEEmeter contributors - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -""" -from __future__ import annotations - -import pytz -import datetime -import csv -import io - -from dataclasses import dataclass - -import requests - - - -API_REQUEST_TRIES = 3 - - -class DatasetType: - ISD = "ISD" - GSOD = "GSOD" - - -@dataclass -class FileParseResult: - """ - contains information about file that will be useful - for api requests - """ - - dataset_type: str - """ISD OR GSOD""" - - usaf_id: str - wban_id: str - year: int - - @classmethod - def from_file_path(cls, file_path: str): - """ - given a file path that refers to either an ISD or GSOD datafile, - parse the relevant information needed to make the correct api request - to retrieve the data. - - file formats should be similar to: - - GSOD -> '/pub/data/gsod/2025/690150-93121-2025.op.gz' - ISD -> '/pub/data/noaa/2025/690150-93121-2025.gz' - - In both cases: - - 690150 would refer to the usaf_id - - 93121 would refer to the wban_id - - 2025 would refer to the year - - File specific cases: - - if gsod is found in the path its dataset type would be GSOD - - if noaa is found in the path its dataset type would be ISD - """ - - dataset_type = None - - if "gsod" in file_path and "noaa" in file_path: - raise ValueError( - f"provided file_path contains both 'gsod' and 'noaa' making the dataset type to use ambiguous: {file_path}" - ) - - if "gsod" in file_path: - dataset_type = DatasetType.GSOD - - if "noaa" in file_path: - dataset_type = DatasetType.ISD - - if dataset_type is None: - raise ValueError( - f"provided file_path does not contain 'gsod' or 'noaa' so dataset_type cannot be determined: {file_path}" - ) - - file_name = file_path.split("/")[-1] - file_name_no_ext = file_name.split(".")[0] - - file_name_dash_split = file_name_no_ext.split("-") - usaf_id, wban_id, year = file_name_dash_split - year = int(year) - - result = FileParseResult( - dataset_type=dataset_type, usaf_id=usaf_id, wban_id=wban_id, year=year - ) - - return result - - -def _get_api_request_params(dataset_type: str, usaf_id: str, wban_id: str, year: int): - params = {} - - # DATE always seems to be included - data_types = [] - if dataset_type == DatasetType.ISD: - dataset = "global-hourly" - data_types.append("TMP") - elif dataset_type == DatasetType.GSOD: - dataset = "global-summary-of-the-day" - data_types.append("TEMP") - else: - raise ValueError("dataset_type not supported:", dataset_type) - - params["dataTypes"] = ",".join(data_types) - params["dataset"] = dataset - params["stations"] = f"{usaf_id}{wban_id}" - params["startDate"] = f"{year}-01-01" - params["endDate"] = f"{year}-12-31" - - return params - - -def make_api_request( - dataset_type: str, usaf_id: str, wban_id: str, year: int -) -> list[tuple[datetime.datetime, float]]: - """ - makes api request to the access api when given the necessary information about - the weather station to fetch data for. - - the request is retried on connection and http errors, as the api has been - shown to intermittently fail. - - returns a list of tuples where the first element is the datetime and the second - is the temperature that the datetime refers to - """ - params = _get_api_request_params( - dataset_type=dataset_type, usaf_id=usaf_id, wban_id=wban_id, year=year - ) - - for attempt in range(API_REQUEST_TRIES): - try: - resp = requests.get( - url="https://www.ncei.noaa.gov/access/services/data/v1", params=params - ) - resp.raise_for_status() - except requests.RequestException: - if attempt == API_REQUEST_TRIES - 1: - raise - else: - break - - csv_data = io.StringIO(resp.text) - dict_reader = csv.DictReader(csv_data) - - elements: list[tuple[datetime.datetime, float]] = [] - for record in dict_reader: - - if dataset_type == DatasetType.GSOD: - - date, temp = record["DATE"], str(record["TEMP"]).strip() - tempF = float(temp) - tempC = (5.0 / 9.0) * (tempF - 32.0) - parsed_dttm = pytz.UTC.localize( - datetime.datetime.strptime(date, "%Y-%m-%d") - ) - elements.append((parsed_dttm, tempC)) - - if dataset_type == DatasetType.ISD: - - date, temp = record["DATE"], str(record["TMP"]).strip() - temp_split = temp.split(",") - - parsed_dttm = pytz.UTC.localize( - datetime.datetime.strptime(date, "%Y-%m-%dT%H:%M:%S") - ) - - if len(temp_split) != 2: - raise ValueError("found unexpected temp value in ISD response", temp) - - temp_val, suffix = temp_split - if suffix == "9" or temp_val == "+9999": - parsed_temp = float("nan") - else: - parsed_temp = float(temp_val) / 10.0 - - elements.append((parsed_dttm, parsed_temp)) - - return elements diff --git a/eeweather/cli.py b/eeweather/cli.py index aad599b..fa929c2 100644 --- a/eeweather/cli.py +++ b/eeweather/cli.py @@ -25,8 +25,6 @@ from . import ( get_isd_station_metadata as _get_isd_station_metadata, get_isd_file_metadata as _get_isd_file_metadata, - get_isd_filenames as _get_isd_filenames, - get_gsod_filenames as _get_gsod_filenames, ) from .exceptions import UnrecognizedUSAFIDError @@ -98,24 +96,6 @@ def inspect_isd_file_years(usaf_id): click.echo(json.dumps(metadata, indent=2)) -@cli.command() -@click.argument("usaf_id") -@click.argument("year") -def inspect_isd_filenames(usaf_id, year): - filenames = _get_isd_filenames(usaf_id, year, with_host=True) - for f in filenames: - click.echo(f) - - -@cli.command() -@click.argument("usaf_id") -@click.argument("year") -def inspect_gsod_filenames(usaf_id, year): - filenames = _get_gsod_filenames(usaf_id, year, with_host=True) - for f in filenames: - click.echo(f) - - @cli.command() @click.option("--zcta-geometry/--no-zcta-geometry", default=False) @click.option( diff --git a/eeweather/connections.py b/eeweather/connections.py index 46d5bdb..841a22b 100644 --- a/eeweather/connections.py +++ b/eeweather/connections.py @@ -18,8 +18,6 @@ """ -import ftplib -from io import BytesIO import logging import os import sqlite3 @@ -29,66 +27,7 @@ logger = logging.getLogger(__name__) -__all__ = ("noaa_ftp_connection_proxy", "metadata_db_connection_proxy") - - -def _get_noaa_ftp_connection(n_tries=5, timeout=60): # pragma: no cover - host = "ftp.ncei.noaa.gov" - for i in range(n_tries): - # attempt anonymous connection - try: - ftp = ftplib.FTP(host, timeout=timeout) - ftp.login() # default u='anonymous' p='anonymous@' - logger.info("Connected to {}.".format(host)) - return ftp - except ftplib.all_errors as e: - logger.warn( - "Failed attempt ({} of {}) to connect to {}:\n{}".format( - i + 1, n_tries, host, e - ) - ) - - raise RuntimeError("Could not connect to {}.".format(host)) - - -class NOAAFTPConnectionProxy(object): - def __init__(self): - self._connection = None - - def get_connection(self): # pragma: no cover - if self._connection is None: - self._connection = _get_noaa_ftp_connection() - return self._connection - - def reconnect(self): # pragma: no cover - if self._connection is not None: - self._connection.close() - self._connection = None - return self.get_connection() - - def read_file_as_bytes(self, filename): # pragma: no cover - ftp = self.get_connection() - - bytes_string = BytesIO() - try: - try: - ftp.retrbinary("RETR {}".format(filename), bytes_string.write) - except (ftplib.error_temp, ftplib.error_perm, EOFError, IOError) as e: - # Bad connection. attempt to reconnect. - logger.warn( - "Failed RETR {}:\n{}\n" "Attempting reconnect.".format(filename, e) - ) - ftp = self.reconnect() - ftp.retrbinary("RETR {}".format(filename), bytes_string.write) - except Exception as e: - logger.warn( - "Failed RETR {}:\n{}\n" "Not attempting reconnect.".format(filename, e) - ) - return None - - bytes_string.seek(0) - logger.info("Successfully retrieved ftp://ftp.ncei.noaa.gov{}".format(filename)) - return bytes_string +__all__ = ("metadata_db_connection_proxy",) class MetadataDBConnectionProxy(object): @@ -133,6 +72,5 @@ def get_store(self): # pragma: no cover # Use proxies for lazy loading, abstraction -noaa_ftp_connection_proxy = NOAAFTPConnectionProxy() metadata_db_connection_proxy = MetadataDBConnectionProxy() key_value_store_proxy = KeyValueStoreProxy() diff --git a/eeweather/database.py b/eeweather/database.py index f33f351..eb0723c 100644 --- a/eeweather/database.py +++ b/eeweather/database.py @@ -29,7 +29,9 @@ import pandas as pd import numpy as np -from .connections import noaa_ftp_connection_proxy, metadata_db_connection_proxy +from .connections import metadata_db_connection_proxy +from .stations import QUALITY_WINDOW_YEARS, _quality_from_minimum + logger = logging.getLogger(__name__) @@ -205,9 +207,184 @@ def _load_isd_station_metadata(download_path): "state": recent.STATE, } + for usaf_id, (lat, lon) in ISD_COORDINATE_CORRECTIONS.items(): + if usaf_id in metadata: + metadata[usaf_id]["latitude"] = lat + metadata[usaf_id]["longitude"] = lon + metadata[usaf_id]["point"] = Point(float(lon), float(lat)) + return metadata +# Corrections to known-bad coordinates in the upstream isd-history registry, +# verified against the physical site location and the GHCNh station list. +ISD_COORDINATE_CORRECTIONS = { + # Ann Arbor Municipal (KARB): isd-history longitude is off by 4 degrees + "725374": ("+42.223", "-083.740"), +} + + +GHCN_MATCH_SANITY_KM = 50.0 +GHCN_NEAREST_NEIGHBOR_KM = 5.0 + + +def _haversine_km(lat1, lon1, lat2, lon2): + earth_radius_km = 6371.0 + p1, p2 = np.radians(lat1), np.radians(lat2) + dp, dl = np.radians(lat2 - lat1), np.radians(lon2 - lon1) + a = np.sin(dp / 2) ** 2 + np.cos(p1) * np.cos(p2) * np.sin(dl / 2) ** 2 + + return 2 * earth_radius_km * np.arcsin(np.sqrt(a)) + + +GHCNH_INVENTORY_MONTHS = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", + "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"] + + +def _load_ghcnh_inventory(download_path): + """Monthly observation counts per GHCNh station and year.""" + inventory = pd.read_csv( + os.path.join(download_path, "ghcnh-inventory.txt"), sep=r"\s+" + ) + + return inventory + + +def _ghcn_data_years(inventory): + """First and last year with observations per GHCNh station.""" + with_data = inventory[inventory[GHCNH_INVENTORY_MONTHS].sum(axis=1) > 0] + years = with_data.groupby("GHCNh_ID").YEAR.agg(["min", "max"]) + + return {gid: (int(row["min"]), int(row["max"])) for gid, row in years.iterrows()} + + +def _load_registry_ghcn_inventory(isd_station_metadata, inventory): + """Monthly observation counts per registry station and year.""" + ghcn_to_usaf = {} + for usaf_id, metadata in isd_station_metadata.items(): + ghcn_to_usaf.setdefault(metadata["ghcn_id"], []).append(usaf_id) + + rows = [] + for record in inventory.itertuples(index=False): + for usaf_id in ghcn_to_usaf.get(record.GHCNh_ID, ()): + rows.append( + (usaf_id, int(record.YEAR)) + + tuple(int(getattr(record, month)) for month in GHCNH_INVENTORY_MONTHS) + ) + + return rows + + +def _write_ghcn_inventory_table(conn, ghcn_inventory): + cur = conn.cursor() + cur.executemany( + """ + insert into ghcn_inventory( + usaf_id, year, jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec + ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?) + """, + ghcn_inventory, + ) + cur.execute( + """ + create index ghcn_inventory_usaf_id_year on ghcn_inventory(usaf_id, year) + """ + ) + cur.close() + conn.commit() + + +def _compute_station_quality_from_ghcnh( + isd_station_metadata, inventory, end_year=None, years_back=None +): + """Rate each station by its GHCNh observation counts. + + A station is high quality when every month of the last years_back + full years has more than 600 observations, medium above 360, low + otherwise or when any year is absent. + """ + if end_year is None: + end_year = datetime.now().year - 1 # last full year + if years_back is None: + years_back = QUALITY_WINDOW_YEARS + + year_range = set(range(end_year - (years_back - 1), end_year + 1)) + window = inventory[inventory.YEAR.isin(year_range)] + grouped = {gid: group for gid, group in window.groupby("GHCNh_ID")} + + def quality(ghcn_id): + group = grouped.get(ghcn_id) + if group is None or set(group.YEAR) != year_range: + return "low" + minimum = group.groupby("YEAR")[GHCNH_INVENTORY_MONTHS].sum().to_numpy().min() + + return _quality_from_minimum(minimum) + + for usaf_id, metadata in isd_station_metadata.items(): + metadata["quality"] = quality(metadata["ghcn_id"]) + + +def _map_isd_stations_to_ghcn(isd_station_metadata, download_path): + """Assign each station its GHCNh id; stations without one are removed. + + Match priority: shared ICAO code (nearest candidate, within + GHCN_MATCH_SANITY_KM), GHCNh id following the USW000{wban} pattern + (within GHCN_MATCH_SANITY_KM), then nearest GHCNh station within + GHCN_NEAREST_NEIGHBOR_KM. Each mapped station records the first and + last year its GHCNh record has observations. + """ + ghcn = pd.read_csv( + os.path.join(download_path, "ghcnh-station-list.csv"), dtype=str + ) + ghcn["lat"] = pd.to_numeric(ghcn.LATITUDE, errors="coerce") + ghcn["lon"] = pd.to_numeric(ghcn.LONGITUDE, errors="coerce") + ghcn = ghcn.dropna(subset=["lat", "lon"]).reset_index(drop=True) + ghcn_by_id = ghcn.set_index("GHCN_ID", drop=False) + data_years = _ghcn_data_years(_load_ghcnh_inventory(download_path)) + ghcn_by_icao = {icao: group for icao, group in ghcn.dropna(subset=["ICAO"]).groupby("ICAO")} + + unmapped = [] + for usaf_id, metadata in isd_station_metadata.items(): + lat = pd.to_numeric(metadata["latitude"], errors="coerce") + lon = pd.to_numeric(metadata["longitude"], errors="coerce") + ghcn_id, method = None, None + + if not pd.isna(lat): + icao_candidates = ghcn_by_icao.get(metadata["icao_code"]) + if icao_candidates is not None: + d = _haversine_km(lat, lon, icao_candidates.lat.values, icao_candidates.lon.values) + i = int(np.argmin(d)) + if d[i] <= GHCN_MATCH_SANITY_KM: + ghcn_id, method = icao_candidates.GHCN_ID.values[i], "icao" + + if ghcn_id is None: + wban_guess = "USW000" + str(metadata["recent_wban_id"]).zfill(5) + if wban_guess in ghcn_by_id.index: + row = ghcn_by_id.loc[wban_guess] + if _haversine_km(lat, lon, row.lat, row.lon) <= GHCN_MATCH_SANITY_KM: + ghcn_id, method = wban_guess, "wban" + + if ghcn_id is None: + d = _haversine_km(lat, lon, ghcn.lat.values, ghcn.lon.values) + i = int(np.argmin(d)) + if d[i] <= GHCN_NEAREST_NEIGHBOR_KM: + ghcn_id, method = ghcn.GHCN_ID.values[i], "latlon" + + if ghcn_id is None: + unmapped.append(usaf_id) + else: + metadata["ghcn_id"] = ghcn_id + metadata["ghcn_map_method"] = method + first_year, last_year = data_years.get(ghcn_id, (None, None)) + metadata["ghcn_first_year"] = first_year + metadata["ghcn_last_year"] = last_year + + for usaf_id in unmapped: + del isd_station_metadata[usaf_id] + + print("Removed {} stations with no GHCNh counterpart".format(len(unmapped))) + + def _load_isd_file_metadata(download_path, isd_station_metadata): """Collect data counts for isd files.""" @@ -249,49 +426,6 @@ def _load_isd_file_metadata(download_path, isd_station_metadata): return metadata -def _compute_isd_station_quality( - isd_station_metadata, - isd_file_metadata, - end_year=None, - years_back=None, - quality_func=None, -): - if end_year is None: - end_year = datetime.now().year - 1 # last full year - - if years_back is None: - years_back = 5 - - if quality_func is None: - - def quality_func(values): - minimum = values.min() - if minimum > 24 * 25: - return "high" - elif minimum > 24 * 15: - return "medium" - else: - return "low" - - # e.g., if end_year == 2017, year_range = ["2013", "2014", ..., "2017"] - year_range = set([str(y) for y in range(end_year - (years_back - 1), end_year + 1)]) - - def _compute_station_quality(usaf_id): - years_data = isd_file_metadata.get(usaf_id, {}).get("years", {}) - if not all([year in years_data for year in year_range]): - return quality_func(np.repeat(0, 60)) - counts = defaultdict(lambda: 0) - for y, year in enumerate(year_range): - for station in years_data[year]: - for m, month_counts in enumerate(station["counts"]): - counts[y * 12 + m] += int(month_counts) - return quality_func(np.array(list(counts.values()))) - - # figure out counts for years of interest - for usaf_id, metadata in isd_station_metadata.items(): - metadata["quality"] = _compute_station_quality(usaf_id) - - def _load_zcta_metadata(download_path): from shapely.geometry import shape @@ -673,6 +807,10 @@ def _create_table_structures(conn): , longitude text , elevation text , state text + , ghcn_id text not null + , ghcn_map_method text not null + , ghcn_first_year integer + , ghcn_last_year integer , quality text default 'low' , iecc_climate_zone text , iecc_moisture_regime text @@ -764,6 +902,27 @@ def _create_table_structures(conn): """ ) + cur.execute( + """ + create table ghcn_inventory ( + usaf_id text not null + , year integer not null + , jan integer not null + , feb integer not null + , mar integer not null + , apr integer not null + , may integer not null + , jun integer not null + , jul integer not null + , aug integer not null + , sep integer not null + , oct integer not null + , nov integer not null + , dec integer not null + ) + """ + ) + def _write_isd_station_metadata_table(conn, isd_station_metadata): cur = conn.cursor() @@ -779,6 +938,10 @@ def _write_isd_station_metadata_table(conn, isd_station_metadata): metadata["longitude"], metadata["elevation"], metadata["state"], + metadata["ghcn_id"], + metadata["ghcn_map_method"], + metadata["ghcn_first_year"], + metadata["ghcn_last_year"], metadata["quality"], metadata["iecc_climate_zone"], metadata["iecc_moisture_regime"], @@ -799,12 +962,16 @@ def _write_isd_station_metadata_table(conn, isd_station_metadata): , longitude , elevation , state + , ghcn_id + , ghcn_map_method + , ghcn_first_year + , ghcn_last_year , quality , iecc_climate_zone , iecc_moisture_regime , ba_climate_zone , ca_climate_zone - ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?) + ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) """, rows, ) @@ -1201,6 +1368,9 @@ def build_metadata_db( print("Loading ISD station metadata") isd_station_metadata = _load_isd_station_metadata(download_path) + print("Mapping ISD stations to GHCNh ids") + _map_isd_stations_to_ghcn(isd_station_metadata, download_path) + print("Loading ISD station file metadata") isd_file_metadata = _load_isd_file_metadata(download_path, isd_station_metadata) @@ -1211,10 +1381,17 @@ def build_metadata_db( cz2010_station_metadata = _load_cz2010_station_metadata() # Augment data in memory - print("Computing ISD station quality") - # add rough station quality to station metadata - # (all months in last 5 years have at least 600 points) - _compute_isd_station_quality(isd_station_metadata, isd_file_metadata) + print("Loading GHCNh inventory for registry stations") + ghcn_inventory = _load_registry_ghcn_inventory( + isd_station_metadata, _load_ghcnh_inventory(download_path) + ) + + print("Computing station quality from the GHCNh inventory") + # rough station quality: all months in the last 5 full years have + # more than 600 observations + _compute_station_quality_from_ghcnh( + isd_station_metadata, _load_ghcnh_inventory(download_path) + ) print("Mapping ZCTAs to climate zones") # add county and ca climate zone mappings @@ -1269,6 +1446,9 @@ def build_metadata_db( print("Writing ISD file metadata") _write_isd_file_metadata_table(conn, isd_file_metadata) + print("Writing GHCNh inventory") + _write_ghcn_inventory_table(conn, ghcn_inventory) + print("Writing TMY3 station metadata") _write_tmy3_station_metadata_table(conn, tmy3_station_metadata) diff --git a/eeweather/exceptions.py b/eeweather/exceptions.py index 8b18861..0e0c6c6 100644 --- a/eeweather/exceptions.py +++ b/eeweather/exceptions.py @@ -64,15 +64,15 @@ def __init__(self, value): ) -class ISDDataNotAvailableError(EEWeatherError): - """Raised when ISD data is not available for a particular station and year. +class DataNotAvailableError(EEWeatherError): + """Raised when data is not available for a particular station and year. Attributes ---------- usaf_id : str - the USAF ID for which ISD data does not exist. + the USAF ID for which data does not exist. year : int - the year for which ISD data does not exist. + the year for which data does not exist. message : str a message describing the error """ @@ -80,24 +80,7 @@ class ISDDataNotAvailableError(EEWeatherError): def __init__(self, usaf_id, year): self.usaf_id = usaf_id self.year = year - self.message = 'ISD data does not exist for station "{}" in year {}.'.format( - usaf_id, year - ) - - -class GSODDataNotAvailableError(EEWeatherError): - """Raised when GSOD data is not available for a particular station and year. - - Attributes - ---------- - usaf_id -- The USAF ID for which GSOD data does not exist. - year -- The year for which GSOD data does not exist. - """ - - def __init__(self, usaf_id, year): - self.usaf_id = usaf_id - self.year = year - self.message = 'GSOD data does not exist for station "{}" in year {}.'.format( + self.message = 'Data does not exist for station "{}" in year {}.'.format( usaf_id, year ) diff --git a/eeweather/ranking.py b/eeweather/ranking.py index 5c58963..533ddf1 100644 --- a/eeweather/ranking.py +++ b/eeweather/ranking.py @@ -22,10 +22,10 @@ import pyproj import eeweather.mockable -from .exceptions import ISDDataNotAvailableError +from .exceptions import DataNotAvailableError from .connections import metadata_db_connection_proxy from .geo import get_lat_long_climate_zones -from .stations import ISDStation +from .stations import WeatherStation, get_station_qualities from .utils import lazy_property from .warnings import EEWeatherWarning @@ -115,6 +115,7 @@ def rank_stations( match_ca_climate_zone=False, match_state=False, minimum_quality=None, + rating_period=None, minimum_tmy3_class=None, max_distance_meters=None, max_difference_elevation_meters=None, @@ -153,6 +154,13 @@ def rank_stations( If ``True``, filter candidate weather stations to those matching the US state of the target site, as specified by ``site_state=True``. + rating_period : tuple of (datetime.datetime, datetime.datetime), optional + When given, station quality is rated from GHCNh monthly + observation counts over the five calendar years ending two years + after the period's last date (sliding back to end no later than + the last full year), and the ``rough_quality`` column and + ``minimum_quality`` filter use that rating. When None, the rating + covers the last five full years. minimum_quality : str, ``'high'``, ``'medium'``, ``'low'`` If given, filter candidate weather stations to those meeting or exceeding the given quality, as summarized by the frequency and @@ -187,7 +195,7 @@ def rank_stations( - ``iecc_moisture_regime``: IECC Moisture Regime ID (A-C) - ``ba_climate_zone``: Building America climate zone name - ``ca_climate_zone``: Califoria climate zone number - - ``rough_quality``: Approximate measure of frequency of ISD + - ``rough_quality``: Approximate measure of frequency of GHCNh observations data at weather station. - ``elevation``: Elevation of weather station site, if available. - ``state``: US state of weather station site, if applicable. @@ -269,6 +277,13 @@ def rank_stations( if is_cz2010 is not None: filters.append(candidates.is_cz2010.isin([is_cz2010])) + if rating_period is not None: + start, end = rating_period + period_qualities = get_station_qualities(start, end) + candidates["rough_quality"] = period_qualities.reindex( + candidates.index, fill_value="low" + ) + if minimum_quality == "low": filters.append(candidates.rough_quality.isin(["high", "medium", "low"])) elif minimum_quality == "medium": @@ -351,13 +366,16 @@ def combine_ranked_stations(rankings): @eeweather.mockable.mockable() -def load_isd_hourly_temp_data( +def load_hourly_temp_data( station, start_date, end_date, fetch_from_web ): # pragma: no cover - return station.load_isd_hourly_temp_data( - start_date, end_date, fetch_from_web=fetch_from_web + df, warnings = station.load_data( + start_date, end_date, fetch_from_web=fetch_from_web, + error_on_missing_years=False, ) + return df["temperature"], warnings + def select_station( candidates, @@ -379,7 +397,7 @@ def select_station( Returns ------- - isd_station, warnings : tuple of (:any:`eeweather.ISDStation`, list of str) + station, warnings : tuple of (:any:`eeweather.WeatherStation`, list of str) A qualified weather station. ``None`` if no station meets criteria. """ @@ -389,10 +407,10 @@ def _test_station(station): else: start_date, end_date = coverage_range try: - tempC, warnings = eeweather.mockable.load_isd_hourly_temp_data( + tempC, warnings = eeweather.mockable.load_hourly_temp_data( station, start_date, end_date, fetch_from_web ) - except ISDDataNotAvailableError: + except DataNotAvailableError: return False, [] # reject # TODO(philngo): also need to incorporate within-day limits @@ -422,7 +440,7 @@ def _station_warnings(station, distance_meters): n_stations_passed = 0 for usaf_id, row in candidates.iterrows(): - station = ISDStation(usaf_id) + station = WeatherStation(usaf_id) test_result, warnings = _test_station(station) if test_result: n_stations_passed += 1 diff --git a/eeweather/resources/GSOD-MISSING.op.gz b/eeweather/resources/GSOD-MISSING.op.gz deleted file mode 100644 index 8edf4b1..0000000 Binary files a/eeweather/resources/GSOD-MISSING.op.gz and /dev/null differ diff --git a/eeweather/resources/GSOD.op.gz b/eeweather/resources/GSOD.op.gz deleted file mode 100644 index ed0973f..0000000 Binary files a/eeweather/resources/GSOD.op.gz and /dev/null differ diff --git a/eeweather/resources/ISD-MISSING.gz b/eeweather/resources/ISD-MISSING.gz deleted file mode 100644 index c266f7b..0000000 Binary files a/eeweather/resources/ISD-MISSING.gz and /dev/null differ diff --git a/eeweather/resources/ISD-NAN.gz b/eeweather/resources/ISD-NAN.gz deleted file mode 100644 index 88c33a1..0000000 Binary files a/eeweather/resources/ISD-NAN.gz and /dev/null differ diff --git a/eeweather/resources/ISD.gz b/eeweather/resources/ISD.gz deleted file mode 100644 index 0112d7a..0000000 Binary files a/eeweather/resources/ISD.gz and /dev/null differ diff --git a/eeweather/resources/metadata.db b/eeweather/resources/metadata.db index 7c4635c..4fab6fc 100644 Binary files a/eeweather/resources/metadata.db and b/eeweather/resources/metadata.db differ diff --git a/eeweather/sources/__init__.py b/eeweather/sources/__init__.py new file mode 100644 index 0000000..84ba50c --- /dev/null +++ b/eeweather/sources/__init__.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" + +Copyright 2018-2023 OpenEEmeter contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +""" +from .ghcnh import DEFAULT_VARIABLES, fetch_ghcnh_hourly + + + +__all__ = ("DEFAULT_VARIABLES", "fetch_ghcnh_hourly") diff --git a/eeweather/sources/ghcnh.py b/eeweather/sources/ghcnh.py new file mode 100644 index 0000000..ef15f38 --- /dev/null +++ b/eeweather/sources/ghcnh.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" + +Copyright 2018-2023 OpenEEmeter contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +""" +import io +import time + +import pandas as pd +import requests + + + +API_URL = "https://www.ncei.noaa.gov/access/services/data/v1" + +API_REQUEST_TRIES = 3 + +API_RETRY_BACKOFF_SECONDS = 5 + +DATASET = "global-historical-climatology-network-hourly" + +DEFAULT_VARIABLES = ("temperature",) + + +def _get_api_request_params(ghcn_id, year, variables): + params = { + "dataset": DATASET, + # DATE is only included in the response when explicitly requested + "dataTypes": ",".join(("DATE",) + tuple(variables)), + "stations": ghcn_id, + "startDate": "{}-01-01".format(year), + "endDate": "{}-12-31".format(year), + } + + return params + + +def fetch_ghcnh_hourly(ghcn_id, year, variables=DEFAULT_VARIABLES): + """Fetch one year of GHCNh observations for a station. + + The request is retried on connection and http errors, as the api has + been shown to intermittently fail. + + Parameters + ---------- + ghcn_id : str + GHCNh station id, e.g. ``'USW00023234'``. + year : int + Calendar year to fetch. + variables : tuple of str + GHCNh variable names, e.g. ``('temperature', 'wind_speed')``. + Temperatures are degrees Celsius; units for other variables follow + the GHCNh documentation. + + Returns + ------- + pandas.DataFrame + One column per requested variable, indexed by UTC observation time. + Observations sharing a timestamp are averaged. Values the station + did not report are NaN. Empty when the station has no data for the + year. + """ + params = _get_api_request_params(ghcn_id, year, variables) + + for attempt in range(API_REQUEST_TRIES): + try: + resp = requests.get(url=API_URL, params=params) + resp.raise_for_status() + except requests.RequestException: + if attempt == API_REQUEST_TRIES - 1: + raise + # the api intermittently returns 5xx bursts; immediate retries + # land inside the burst + time.sleep(API_RETRY_BACKOFF_SECONDS * (attempt + 1)) + else: + break + + empty_index = pd.DatetimeIndex([], tz="UTC") + if resp.text.strip() == "": + return pd.DataFrame(columns=list(variables), index=empty_index, dtype=float) + + raw = pd.read_csv(io.StringIO(resp.text), dtype=str) + if len(raw) == 0: + return pd.DataFrame(columns=list(variables), index=empty_index, dtype=float) + + index = pd.to_datetime(raw["DATE"]).dt.tz_localize("UTC").rename(None) + df = pd.DataFrame(index=index) + for variable in variables: + if variable in raw.columns: + df[variable] = pd.to_numeric(raw[variable], errors="coerce").values + else: + df[variable] = float("nan") + + df = df.groupby(df.index).mean() + df = df.sort_index() + + return df diff --git a/eeweather/stations.py b/eeweather/stations.py index 741f0c8..2158127 100644 --- a/eeweather/stations.py +++ b/eeweather/stations.py @@ -18,20 +18,16 @@ """ from datetime import datetime, timedelta, timezone -import gzip -import warnings as pywarnings +import numpy as np import pandas as pd import pytz -# this import allows monkeypatching noaa_ftp_connection_proxy in tests because -# the fully qualified package path name is preserved import requests from .exceptions import ( UnrecognizedUSAFIDError, - ISDDataNotAvailableError, - GSODDataNotAvailableError, + DataNotAvailableError, TMY3DataNotAvailableError, CZ2010DataNotAvailableError, NonUTCTimezoneInfoError, @@ -41,72 +37,47 @@ import eeweather.connections from eeweather.connections import metadata_db_connection_proxy import eeweather.mockable -import eeweather.access_api +from .sources.ghcnh import DEFAULT_VARIABLES, fetch_ghcnh_hourly DATA_EXPIRATION_DAYS = 1 __all__ = ( - "ISDStation", - "get_isd_filenames", - "get_gsod_filenames", + "WeatherStation", + "get_ghcn_id", "get_isd_station_metadata", + "get_station_quality", + "get_station_qualities", "get_isd_file_metadata", - "get_isd_raw_temp_data", # Not currently written - "get_isd_hourly_temp_data", # Not currently written - "get_isd_daily_temp_data", # Not currently written - "get_gsod_raw_temp_data", # Not currently written - "get_gsod_daily_temp_data", # Not currently written - "get_isd_hourly_temp_data_cache_key", - "get_isd_daily_temp_data_cache_key", - "get_gsod_daily_temp_data_cache_key", + "fetch_hourly_data", + "get_hourly_data_cache_key", "get_tmy3_hourly_temp_data_cache_key", "get_cz2010_hourly_temp_data_cache_key", - "cached_isd_hourly_temp_data_is_expired", - "cached_isd_daily_temp_data_is_expired", - "cached_gsod_daily_temp_data_is_expired", - "validate_isd_hourly_temp_data_cache", - "validate_isd_daily_temp_data_cache", - "validate_gsod_daily_temp_data_cache", + "cached_hourly_data_is_expired", + "validate_hourly_data_cache", "validate_tmy3_hourly_temp_data_cache", "validate_cz2010_hourly_temp_data_cache", - "serialize_isd_hourly_temp_data", - "serialize_isd_daily_temp_data", - "serialize_gsod_daily_temp_data", + "serialize_hourly_data", "serialize_tmy3_hourly_temp_data", "serialize_cz2010_hourly_temp_data", - "deserialize_isd_hourly_temp_data", - "deserialize_isd_daily_temp_data", - "deserialize_gsod_daily_temp_data", - "deserialize_tmy3_daily_temp_data", - "deserialize_cz2010_daily_temp_data", - "read_isd_hourly_temp_data_from_cache", - "read_isd_daily_temp_data_from_cache", - "read_gsod_daily_temp_data_from_cache", + "deserialize_hourly_data", + "deserialize_tmy3_hourly_temp_data", + "deserialize_cz2010_hourly_temp_data", + "read_hourly_data_from_cache", "read_tmy3_hourly_temp_data_from_cache", "read_cz2010_hourly_temp_data_from_cache", - "write_isd_hourly_temp_data_to_cache", - "write_isd_daily_temp_data_to_cache", - "write_gsod_daily_temp_data_to_cache", + "write_hourly_data_to_cache", "write_tmy3_hourly_temp_data_to_cache", "write_cz2010_hourly_temp_data_to_cache", - "destroy_cached_isd_hourly_temp_data", - "destroy_cached_isd_daily_temp_data", - "destroy_cached_gsod_daily_temp_data", + "destroy_cached_hourly_data", "destroy_cached_tmy3_hourly_temp_data", "destroy_cached_cz2010_hourly_temp_data", - "load_isd_hourly_temp_data_cached_proxy", - "load_isd_daily_temp_data_cached_proxy", - "load_gsod_daily_temp_data_cached_proxy", + "load_hourly_data_cached_proxy", "load_tmy3_hourly_temp_data_cached_proxy", "load_cz2010_hourly_temp_data_cached_proxy", - "load_isd_hourly_temp_data", - "load_isd_daily_temp_data", - "load_gsod_daily_temp_data", + "load_data", "load_tmy3_hourly_temp_data", "load_cz2010_hourly_temp_data", - "load_cached_isd_hourly_temp_data", - "load_cached_isd_daily_temp_data", - "load_cached_gsod_daily_temp_data", + "load_cached_hourly_data", "load_cached_tmy3_hourly_temp_data", "load_cached_cz2010_hourly_temp_data", ) @@ -121,7 +92,7 @@ def _datetime_is_utc(dt): INTERNAL_GAP_WARNING_THRESHOLD = timedelta(days=7) -def _data_gap_warnings(ts): +def _data_gap_warnings(ts, variable): """EEWeatherWarnings for requested ranges the returned data does not cover. Emitted when the series is entirely empty, when it ends more than @@ -138,6 +109,7 @@ def _data_gap_warnings(ts): qualified_name="eeweather.no_data_in_requested_range", description="No data was available within the requested range.", data={ + "variable": variable, "requested_start": ts.index[0].isoformat(), "requested_end": ts.index[-1].isoformat(), }, @@ -158,6 +130,7 @@ def _data_gap_warnings(ts): ) ), data={ + "variable": variable, "last_valid": last_valid.isoformat(), "requested_end": ts.index[-1].isoformat(), }, @@ -177,89 +150,286 @@ def _data_gap_warnings(ts): description=( "Data contains an internal gap of {}.".format(max_gap) ), - data={"max_gap_days": max_gap / timedelta(days=1)}, + data={ + "variable": variable, + "max_gap_days": max_gap / timedelta(days=1), + }, ) ) return warnings -def get_isd_filenames(usaf_id, target_year=None, filename_format=None, with_host=False): - valid_usaf_id_or_raise(usaf_id) - if filename_format is None: - filename_format = "/pub/data/noaa/{year}/{usaf_id}-{wban_id}-{year}.gz" - conn = metadata_db_connection_proxy.get_connection() - cur = conn.cursor() +def get_ghcn_id(usaf_id): + """GHCNh station id mapped to this USAF id.""" + metadata = get_isd_station_metadata(usaf_id) - if target_year is None: - # all years - cur.execute( - """ - select - wban_id - , year - from - isd_file_metadata - where - usaf_id = ? - order by - year - """, - (usaf_id,), - ) - else: - # single year - cur.execute( - """ - select - wban_id - , year - from - isd_file_metadata - where - usaf_id = ? and year = ? - """, - (usaf_id, target_year), - ) + return metadata["ghcn_id"] + + +def fetch_hourly_data(usaf_id, year, variables=DEFAULT_VARIABLES): + """Fetch one year of GHCNh observations resampled to an hourly frame. + + Raises DataNotAvailableError when the station has no observations at + all for the year. + """ + ghcn_id = get_ghcn_id(usaf_id) + raw = fetch_ghcnh_hourly(ghcn_id, year, variables) + if len(raw) == 0: + raise DataNotAvailableError(usaf_id, year) + + # CalTRACK 2.3.3 + df = ( + raw.resample("min") + .mean() + .interpolate(method="linear", limit=60, limit_direction="both") + .resample("h") + .mean() + ) + + return df + + +def get_hourly_data_cache_key(usaf_id, year): + return "ghcnh-hourly-{}-{}".format(usaf_id, year) + + +def cached_hourly_data_is_expired(usaf_id, year): + key = get_hourly_data_cache_key(usaf_id, year) + store = eeweather.connections.key_value_store_proxy.get_store() + last_updated = store.key_updated(key) + + return _expired(last_updated, year) + + +def validate_hourly_data_cache(usaf_id, year): + key = get_hourly_data_cache_key(usaf_id, year) + store = eeweather.connections.key_value_store_proxy.get_store() + + # fail if no key + if not store.key_exists(key): + return False + + # check for expired data, fail if so + if cached_hourly_data_is_expired(usaf_id, year): + store.clear(key) + return False + + return True - filenames = [] - for wban_id, year in cur.fetchall(): - filenames.append( - filename_format.format(usaf_id=usaf_id, wban_id=wban_id, year=year) + +def serialize_hourly_data(df): + rows = [ + [index.strftime("%Y%m%d%H")] + values + for index, values in zip( + df.index, df.astype(object).where(df.notna(), None).values.tolist() ) + ] + + return {"columns": list(df.columns), "rows": rows} + + +def deserialize_hourly_data(data): + index = pd.to_datetime( + [row[0] for row in data["rows"]], format="%Y%m%d%H", utc=True + ) + df = pd.DataFrame( + [row[1:] for row in data["rows"]], + index=index, + columns=data["columns"], + dtype=float, + ) + + return df.sort_index().resample("h").mean() + + +def read_hourly_data_from_cache(usaf_id, year): + key = get_hourly_data_cache_key(usaf_id, year) + store = eeweather.connections.key_value_store_proxy.get_store() + + return deserialize_hourly_data(store.retrieve_json(key)) + + +def write_hourly_data_to_cache(usaf_id, year, df): + key = get_hourly_data_cache_key(usaf_id, year) + store = eeweather.connections.key_value_store_proxy.get_store() + + return store.save_json(key, serialize_hourly_data(df)) + + +def destroy_cached_hourly_data(usaf_id, year): + key = get_hourly_data_cache_key(usaf_id, year) + store = eeweather.connections.key_value_store_proxy.get_store() + + return store.clear(key) + - if len(filenames) == 0 and target_year is not None: - # fallback - use most recent wban id - cur.execute( - """ - select - recent_wban_id - from - isd_station_metadata - where - usaf_id = ? - """, - (usaf_id,), +def load_hourly_data_cached_proxy( + usaf_id, + year, + variables=DEFAULT_VARIABLES, + read_from_cache=True, + write_to_cache=True, + fetch_from_web=True, +): + """One year of hourly data, from cache when it covers the request. + + A cache entry serves the request when it is fresh and holds every + requested variable. Fetches request the union of the requested and + already-cached variables so a cache refresh never drops columns. + """ + variables = tuple(variables) + cached = None + if validate_hourly_data_cache(usaf_id, year): + cached = read_hourly_data_from_cache(usaf_id, year) + + cache_covers_request = cached is not None and set(variables) <= set(cached.columns) + if read_from_cache and cache_covers_request: + return cached[list(variables)] + + if not fetch_from_web: + raise DataNotAvailableError(usaf_id, year) + + cached_columns = () if cached is None else tuple(cached.columns) + fetch_variables = tuple(dict.fromkeys(variables + cached_columns)) + df = fetch_hourly_data(usaf_id, year, fetch_variables) + if write_to_cache: + write_hourly_data_to_cache(usaf_id, year, df) + + return df[list(variables)] + + +def load_data( + usaf_id, + start, + end, + frequency="hourly", + variables=DEFAULT_VARIABLES, + read_from_cache=True, + write_to_cache=True, + fetch_from_web=True, + error_on_missing_years=True, +): + """Load a station's weather data between two dates (inclusive). + + This is the primary interface for loading observed weather data. + + Parameters + ---------- + usaf_id : str + Station USAF id. + start : datetime.datetime + The earliest date from which to load data. Must be UTC. + end : datetime.datetime + The latest date until which to load data. Must be UTC. + frequency : str + ``'hourly'`` or ``'daily'``. Daily values are means of the hourly + values within each day. + variables : tuple of str + GHCNh variable names. Temperatures are degrees Celsius; units for + other variables follow the GHCNh documentation. + read_from_cache : bool + Whether or not to load data from cache. + write_to_cache : bool + Whether or not to write newly loaded data to cache. + fetch_from_web : bool + Whether or not to fetch data from the web. + error_on_missing_years : bool + Whether to raise when data is unavailable for a year in the range, + or to warn and fill that year with NaN. + + Returns + ------- + tuple of (pandas.DataFrame, list of EEWeatherWarning) + One column per requested variable, indexed over the full requested + range at the requested frequency; periods without data are NaN. + Warnings describe years with no data and gaps in the returned data. + """ + # CalTRACK 2.3.3 + if not _datetime_is_utc(start): + raise NonUTCTimezoneInfoError(start) + if not _datetime_is_utc(end): + raise NonUTCTimezoneInfoError(end) + + if frequency == "hourly": + freq = "h" + elif frequency == "daily": + freq = "D" + else: + raise ValueError( + "frequency must be 'hourly' or 'daily', got: {}".format(frequency) ) - row = cur.fetchone() - if row is not None: - filenames.append( - filename_format.format( - usaf_id=usaf_id, wban_id=row[0], year=target_year + + variables = tuple(variables) + warnings = [] + data = [] + for year in range(start.year, end.year + 1): + try: + data.append( + load_hourly_data_cached_proxy( + usaf_id, + year, + variables=variables, + read_from_cache=read_from_cache, + write_to_cache=write_to_cache, + fetch_from_web=fetch_from_web, ) ) + except DataNotAvailableError: + if error_on_missing_years: + raise + warnings.append( + EEWeatherWarning( + qualified_name="eeweather.data_not_available", + description="Data not available", + data={"usaf_id": usaf_id, "year": year}, + ) + ) + + if data: + df = pd.concat(data) + if frequency == "daily": + df = df.resample("D").mean() + df = df[start:end] + else: + empty_index = pd.DatetimeIndex([], tz=pytz.UTC) + df = pd.DataFrame(columns=list(variables), index=empty_index, dtype=float) - if with_host: - filenames = ["ftp://ftp.ncei.noaa.gov{}".format(f) for f in filenames] + # because start and end dates need to fall exactly on period boundaries + if frequency == "hourly": + range_start = datetime( + start.year, start.month, start.day, start.hour, tzinfo=pytz.UTC + ) + if range_start < start: + range_start += timedelta(hours=1) + range_end = datetime(end.year, end.month, end.day, end.hour, tzinfo=pytz.UTC) + else: + range_start = datetime(start.year, start.month, start.day, tzinfo=pytz.UTC) + if range_start < start: + range_start += timedelta(days=1) + range_end = datetime(end.year, end.month, end.day, tzinfo=pytz.UTC) - return filenames + # fill in gaps, covering the full requested range even when no data loaded + df = df.reindex(pd.date_range(range_start, range_end, freq=freq, tz=pytz.UTC)) + for variable in variables: + warnings.extend(_data_gap_warnings(df[variable], variable)) + return df, warnings -def get_gsod_filenames(usaf_id, year=None, with_host=False): - filename_format = "/pub/data/gsod/{year}/{usaf_id}-{wban_id}-{year}.op.gz" - return get_isd_filenames( - usaf_id, year, filename_format=filename_format, with_host=with_host - ) + +def load_cached_hourly_data(usaf_id): + """All cached hourly data for a station, or None when none is cached.""" + store = eeweather.connections.key_value_store_proxy.get_store() + + data = [ + read_hourly_data_from_cache(usaf_id, year) + for year in range(2000, datetime.now().year + 1) + if store.key_exists(get_hourly_data_cache_key(usaf_id, year)) + ] + if data == []: + return None + + return pd.concat(data).resample("h").mean() def get_isd_station_metadata(usaf_id): @@ -282,6 +452,109 @@ def get_isd_station_metadata(usaf_id): return {col[0]: row[i] for i, col in enumerate(cur.description)} +GHCN_INVENTORY_MONTH_COLUMNS = ( + "jan", "feb", "mar", "apr", "may", "jun", + "jul", "aug", "sep", "oct", "nov", "dec", +) + + +QUALITY_WINDOW_YEARS = 5 + +# every month of the rating window above these observation counts +HIGH_MONTHLY_OBSERVATIONS = 600 +MEDIUM_MONTHLY_OBSERVATIONS = 360 + + +def _quality_rating_window(start, end): + """Calendar years rating a request: five years ending two years after + the request's last date, sliding back to end no later than the last + full year.""" + last_full_year = datetime.now().year - 1 + window_end = min(end.year + 2, last_full_year) + window_start = window_end - (QUALITY_WINDOW_YEARS - 1) + + return window_start, window_end + + +def _quality_from_minimum(minimum): + if minimum > HIGH_MONTHLY_OBSERVATIONS: + return "high" + elif minimum > MEDIUM_MONTHLY_OBSERVATIONS: + return "medium" + + return "low" + + +def get_station_quality(usaf_id, start, end): + """Station quality for a request period, from GHCNh observation counts. + + Rates the five calendar years ending two years after the request's + last date (sliding back so the window ends no later than the last + full year): every month over 600 observations is high, over 360 is + medium; anything less, including absent months or years, is low. + """ + window_start, window_end = _quality_rating_window(start, end) + conn = metadata_db_connection_proxy.get_connection() + cur = conn.cursor() + cur.execute( + """ + select year, {} + from ghcn_inventory + where usaf_id = ? and year between ? and ? + """.format( + ", ".join(GHCN_INVENTORY_MONTH_COLUMNS) + ), + (usaf_id, window_start, window_end), + ) + counts_by_year = {row[0]: row[1:] for row in cur.fetchall()} + + minimum = None + for year in range(window_start, window_end + 1): + year_counts = counts_by_year.get(year, (0,) * 12) + year_minimum = min(year_counts) + if minimum is None or year_minimum < minimum: + minimum = year_minimum + + return _quality_from_minimum(minimum) + + +def get_station_qualities(start, end): + """Quality for a request period for every station, as a usaf_id-indexed + Series. + + Same rating as get_station_quality, computed for the whole registry in + one query. + """ + window_start, window_end = _quality_rating_window(start, end) + conn = metadata_db_connection_proxy.get_connection() + inventory = pd.read_sql_query( + """ + select usaf_id, year, {} + from ghcn_inventory + where year between ? and ? + """.format( + ", ".join(GHCN_INVENTORY_MONTH_COLUMNS) + ), + conn, + params=(window_start, window_end), + ) + + months = list(GHCN_INVENTORY_MONTH_COLUMNS) + year_min = inventory[months].min(axis=1) + observed_min = year_min.groupby(inventory.usaf_id).min() + + # a station must have a row for every year of the window + n_years = window_end - window_start + 1 + year_counts = inventory.groupby("usaf_id").year.nunique() + observed_min = observed_min.where(year_counts >= n_years, 0) + + qualities = pd.Series("low", index=observed_min.index) + qualities[observed_min > MEDIUM_MONTHLY_OBSERVATIONS] = "medium" + qualities[observed_min > HIGH_MONTHLY_OBSERVATIONS] = "high" + + return qualities + + def get_isd_file_metadata(usaf_id): conn = metadata_db_connection_proxy.get_connection() cur = conn.cursor() @@ -342,156 +615,6 @@ def get_cz2010_station_metadata(usaf_id): return {col[0]: row[i] for i, col in enumerate(cur.description)} -def fetch_isd_raw_temp_data_old(usaf_id, year): - # possible locations of this data, errors if station is not recognized - filenames = get_isd_filenames(usaf_id, year) - - data = [] - for filename in filenames: - # using fully-qualified name facilitates monkeypatching - gzipped = eeweather.connections.noaa_ftp_connection_proxy.read_file_as_bytes( - filename - ) - - if gzipped is not None: - f = gzip.GzipFile(fileobj=gzipped) - for line in f.readlines(): - if line[87:92].decode("utf-8") == "+9999": - tempC = float("nan") - else: - tempC = float(line[87:92]) / 10.0 - date_str = line[15:27].decode("utf-8") - dt = pytz.UTC.localize(datetime.strptime(date_str, "%Y%m%d%H%M")) - data.append([dt, tempC]) - gzipped.close() - - if data == []: - raise ISDDataNotAvailableError(usaf_id, year) - - dates, temps = zip(*sorted(data)) - ts = pd.Series(temps, index=dates) - ts = ts.groupby(ts.index).mean() - return ts - - -def fetch_isd_raw_temp_data(usaf_id, year): - filenames = get_isd_filenames(usaf_id, year) - - file_parse_results = [ - eeweather.access_api.FileParseResult.from_file_path(file_name) - for file_name in filenames - ] - - data = [] - for file_parse_result in file_parse_results: - resp_data = eeweather.access_api.make_api_request( - dataset_type=file_parse_result.dataset_type, - usaf_id=file_parse_result.usaf_id, - wban_id=file_parse_result.wban_id, - year=file_parse_result.year, - ) - data.extend(resp_data) - - if data == []: - raise ISDDataNotAvailableError(usaf_id, year) - - dates, temps = zip(*sorted(data)) - ts = pd.Series(temps, index=dates) - ts = ts.groupby(ts.index).mean() - return ts - - -def fetch_isd_hourly_temp_data(usaf_id, year): - # TODO(philngo): allow swappable resample method - # TODO(philngo): record data sufficiency warnings - ts = fetch_isd_raw_temp_data(usaf_id, year) - - # CalTRACK 2.3.3 - return ( - ts.resample("Min") - .mean() - .interpolate(method="linear", limit=60, limit_direction="both") - .resample("h") - .mean() - ) - - -def fetch_isd_daily_temp_data(usaf_id, year): - # TODO(philngo): allow swappable resample method - # TODO(philngo): record data sufficiency warnings - ts = fetch_isd_raw_temp_data(usaf_id, year) - return ( - ts.resample("Min") - .mean() - .interpolate(method="linear", limit=60, limit_direction="both") - .resample("D") - .mean() - ) - - -def fetch_gsod_raw_temp_data_old(usaf_id, year): - filenames = get_gsod_filenames(usaf_id, year) - - data = [] - for filename in filenames: - # using fully-qualified name facilitates monkeypatching - gzipped = eeweather.connections.noaa_ftp_connection_proxy.read_file_as_bytes( - filename - ) - - if gzipped is not None: - f = gzip.GzipFile(fileobj=gzipped) - lines = f.readlines() - for line in lines[1:]: - columns = line.split() - date_str = columns[2].decode("utf-8") - tempF = float(columns[3]) - tempC = (5.0 / 9.0) * (tempF - 32.0) - dt = pytz.UTC.localize(datetime.strptime(date_str, "%Y%m%d")) - data.append([dt, tempC]) - gzipped.close() - - if data == []: - raise GSODDataNotAvailableError(usaf_id, year) - - dates, temps = zip(*sorted(data)) - ts = pd.Series(temps, index=dates) - ts = ts.groupby(ts.index).mean() - return ts - - -def fetch_gsod_raw_temp_data(usaf_id, year): - filenames = get_gsod_filenames(usaf_id, year) - - file_parse_results = [ - eeweather.access_api.FileParseResult.from_file_path(file_name) - for file_name in filenames - ] - - data = [] - for file_parse_result in file_parse_results: - resp_data = eeweather.access_api.make_api_request( - dataset_type=file_parse_result.dataset_type, - usaf_id=file_parse_result.usaf_id, - wban_id=file_parse_result.wban_id, - year=file_parse_result.year, - ) - data.extend(resp_data) - - if data == []: - raise GSODDataNotAvailableError(usaf_id, year) - - dates, temps = zip(*sorted(data)) - ts = pd.Series(temps, index=dates) - ts = ts.groupby(ts.index).mean() - return ts - - -def fetch_gsod_daily_temp_data(usaf_id, year): - ts = fetch_gsod_raw_temp_data(usaf_id, year) - return ts.resample("D").mean() - - def fetch_tmy3_hourly_temp_data(usaf_id): url = ( "https://storage.googleapis.com/openeemeter-public-resources/" @@ -552,18 +675,6 @@ def fetch_hourly_normalized_temp_data(usaf_id, url, source_name): return ts -def get_isd_hourly_temp_data_cache_key(usaf_id, year): - return "isd-hourly-{}-{}".format(usaf_id, year) - - -def get_isd_daily_temp_data_cache_key(usaf_id, year): - return "isd-daily-{}-{}".format(usaf_id, year) - - -def get_gsod_daily_temp_data_cache_key(usaf_id, year): - return "gsod-daily-{}-{}".format(usaf_id, year) - - def get_tmy3_hourly_temp_data_cache_key(usaf_id): return "tmy3-hourly-{}".format(usaf_id) @@ -582,75 +693,6 @@ def _expired(last_updated, year): return expiration_limit > last_updated and updated_during_data_year -def cached_isd_hourly_temp_data_is_expired(usaf_id, year): - key = get_isd_hourly_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - last_updated = store.key_updated(key) - return _expired(last_updated, year) - - -def cached_isd_daily_temp_data_is_expired(usaf_id, year): - key = get_isd_daily_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - last_updated = store.key_updated(key) - return _expired(last_updated, year) - - -def cached_gsod_daily_temp_data_is_expired(usaf_id, year): - key = get_gsod_daily_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - last_updated = store.key_updated(key) - return _expired(last_updated, year) - - -def validate_isd_hourly_temp_data_cache(usaf_id, year): - key = get_isd_hourly_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - - # fail if no key - if not store.key_exists(key): - return False - - # check for expired data, fail if so - if cached_isd_hourly_temp_data_is_expired(usaf_id, year): - store.clear(key) - return False - - return True - - -def validate_isd_daily_temp_data_cache(usaf_id, year): - key = get_isd_daily_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - - # fail if no key - if not store.key_exists(key): - return False - - # check for expired data, fail if so - if cached_isd_daily_temp_data_is_expired(usaf_id, year): - store.clear(key) - return False - - return True - - -def validate_gsod_daily_temp_data_cache(usaf_id, year): - key = get_gsod_daily_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - - # fail if no key - if not store.key_exists(key): - return False - - # check for expired data, fail if so - if cached_gsod_daily_temp_data_is_expired(usaf_id, year): - store.clear(key) - return False - - return True - - def validate_tmy3_hourly_temp_data_cache(usaf_id): key = get_tmy3_hourly_temp_data_cache_key(usaf_id) store = eeweather.connections.key_value_store_proxy.get_store() @@ -687,18 +729,6 @@ def _serialize(ts, freq): ] -def serialize_isd_hourly_temp_data(ts): - return _serialize(ts, "h") - - -def serialize_isd_daily_temp_data(ts): - return _serialize(ts, "D") - - -def serialize_gsod_daily_temp_data(ts): - return _serialize(ts, "D") - - def serialize_tmy3_hourly_temp_data(ts): return _serialize(ts, "h") @@ -722,18 +752,6 @@ def _deserialize(data, freq): ) -def deserialize_isd_hourly_temp_data(data): - return _deserialize(data, "h") - - -def deserialize_isd_daily_temp_data(data): - return _deserialize(data, "D") - - -def deserialize_gsod_daily_temp_data(data): - return _deserialize(data, "D") - - def deserialize_tmy3_hourly_temp_data(data): return _deserialize(data, "h") @@ -742,24 +760,6 @@ def deserialize_cz2010_hourly_temp_data(data): return _deserialize(data, "h") -def read_isd_hourly_temp_data_from_cache(usaf_id, year): - key = get_isd_hourly_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - return deserialize_isd_hourly_temp_data(store.retrieve_json(key)) - - -def read_isd_daily_temp_data_from_cache(usaf_id, year): - key = get_isd_daily_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - return deserialize_isd_daily_temp_data(store.retrieve_json(key)) - - -def read_gsod_daily_temp_data_from_cache(usaf_id, year): - key = get_gsod_daily_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - return deserialize_gsod_daily_temp_data(store.retrieve_json(key)) - - def read_tmy3_hourly_temp_data_from_cache(usaf_id): key = get_tmy3_hourly_temp_data_cache_key(usaf_id) store = eeweather.connections.key_value_store_proxy.get_store() @@ -772,24 +772,6 @@ def read_cz2010_hourly_temp_data_from_cache(usaf_id): return deserialize_cz2010_hourly_temp_data(store.retrieve_json(key)) -def write_isd_hourly_temp_data_to_cache(usaf_id, year, ts): - key = get_isd_hourly_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - return store.save_json(key, serialize_isd_hourly_temp_data(ts)) - - -def write_isd_daily_temp_data_to_cache(usaf_id, year, ts): - key = get_isd_daily_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - return store.save_json(key, serialize_isd_daily_temp_data(ts)) - - -def write_gsod_daily_temp_data_to_cache(usaf_id, year, ts): - key = get_gsod_daily_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - return store.save_json(key, serialize_gsod_daily_temp_data(ts)) - - def write_tmy3_hourly_temp_data_to_cache(usaf_id, ts): key = get_tmy3_hourly_temp_data_cache_key(usaf_id) store = eeweather.connections.key_value_store_proxy.get_store() @@ -802,318 +784,53 @@ def write_cz2010_hourly_temp_data_to_cache(usaf_id, ts): return store.save_json(key, serialize_cz2010_hourly_temp_data(ts)) -def destroy_cached_isd_hourly_temp_data(usaf_id, year): - key = get_isd_hourly_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - return store.clear(key) - - -def destroy_cached_isd_daily_temp_data(usaf_id, year): - key = get_isd_daily_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - return store.clear(key) - - -def destroy_cached_gsod_daily_temp_data(usaf_id, year): - key = get_gsod_daily_temp_data_cache_key(usaf_id, year) - store = eeweather.connections.key_value_store_proxy.get_store() - return store.clear(key) - - def destroy_cached_tmy3_hourly_temp_data(usaf_id): key = get_tmy3_hourly_temp_data_cache_key(usaf_id) store = eeweather.connections.key_value_store_proxy.get_store() return store.clear(key) -def destroy_cached_cz2010_hourly_temp_data(usaf_id): - key = get_cz2010_hourly_temp_data_cache_key(usaf_id) - store = eeweather.connections.key_value_store_proxy.get_store() - return store.clear(key) - - -def load_isd_hourly_temp_data_cached_proxy( - usaf_id, year, read_from_cache=True, write_to_cache=True, fetch_from_web=True -): - # take from cache? - data_ok = validate_isd_hourly_temp_data_cache(usaf_id, year) - - if not fetch_from_web and not data_ok: - raise ISDDataNotAvailableError(usaf_id, year) - elif fetch_from_web and (not read_from_cache or not data_ok): - # need to actually fetch the data - ts = fetch_isd_hourly_temp_data(usaf_id, year) - if write_to_cache: - write_isd_hourly_temp_data_to_cache(usaf_id, year, ts) - else: - # read_from_cache=True and data_ok=True - ts = read_isd_hourly_temp_data_from_cache(usaf_id, year) - return ts - - -def load_isd_daily_temp_data_cached_proxy( - usaf_id, year, read_from_cache=True, write_to_cache=True, fetch_from_web=True -): - # take from cache? - data_ok = validate_isd_daily_temp_data_cache(usaf_id, year) - - if not fetch_from_web and not data_ok: - raise ISDDataNotAvailableError(usaf_id, year) - elif fetch_from_web and (not read_from_cache or not data_ok): - # need to actually fetch the data - ts = fetch_isd_daily_temp_data(usaf_id, year) - if write_to_cache: - write_isd_daily_temp_data_to_cache(usaf_id, year, ts) - else: - # read_from_cache=True and data_ok=True - ts = read_isd_daily_temp_data_from_cache(usaf_id, year) - return ts - - -def load_gsod_daily_temp_data_cached_proxy( - usaf_id, year, read_from_cache=True, write_to_cache=True, fetch_from_web=True -): - # take from cache? - data_ok = validate_gsod_daily_temp_data_cache(usaf_id, year) - - if not fetch_from_web and not data_ok: - raise GSODDataNotAvailableError(usaf_id, year) - elif fetch_from_web and (not read_from_cache or not data_ok): - # need to actually fetch the data - ts = fetch_gsod_daily_temp_data(usaf_id, year) - if write_to_cache: - write_gsod_daily_temp_data_to_cache(usaf_id, year, ts) - else: - # read_from_cache=True and data_ok=True - ts = read_gsod_daily_temp_data_from_cache(usaf_id, year) - return ts - - -def load_tmy3_hourly_temp_data_cached_proxy( - usaf_id, read_from_cache=True, write_to_cache=True, fetch_from_web=True -): - # take from cache? - data_ok = validate_tmy3_hourly_temp_data_cache(usaf_id) - - if not fetch_from_web and not data_ok: - raise TMY3DataNotAvailableError(usaf_id) - elif fetch_from_web and (not read_from_cache or not data_ok): - # need to actually fetch the data - ts = fetch_tmy3_hourly_temp_data(usaf_id) - if write_to_cache: - write_tmy3_hourly_temp_data_to_cache(usaf_id, ts) - else: - # read_from_cache=True and data_ok=True - ts = read_tmy3_hourly_temp_data_from_cache(usaf_id) - return ts - - -def load_cz2010_hourly_temp_data_cached_proxy( - usaf_id, read_from_cache=True, write_to_cache=True, fetch_from_web=True -): - # take from cache? - data_ok = validate_cz2010_hourly_temp_data_cache(usaf_id) - - if not fetch_from_web and not data_ok: - raise CZ2010DataNotAvailableError(usaf_id) - elif fetch_from_web and (not read_from_cache or not data_ok): - # need to actually fetch the data - ts = fetch_cz2010_hourly_temp_data(usaf_id) - if write_to_cache: - write_cz2010_hourly_temp_data_to_cache(usaf_id, ts) - else: - # read_from_cache=True and data_ok=True - ts = read_cz2010_hourly_temp_data_from_cache(usaf_id) - return ts - - -def load_isd_hourly_temp_data( - usaf_id, - start, - end, - read_from_cache=True, - write_to_cache=True, - error_on_missing_years=True, - fetch_from_web=True, -): - warnings = [] - # CalTRACK 2.3.3 - if not _datetime_is_utc(start): - raise NonUTCTimezoneInfoError(start) - if not _datetime_is_utc(end): - raise NonUTCTimezoneInfoError(end) - if not error_on_missing_years: - data = [] - for year in range(start.year, end.year + 1): - try: - data.append( - load_isd_hourly_temp_data_cached_proxy( - usaf_id, - year, - read_from_cache=read_from_cache, - write_to_cache=write_to_cache, - fetch_from_web=fetch_from_web, - ) - ) - except ISDDataNotAvailableError: - warnings.append( - EEWeatherWarning( - qualified_name="eeweather.isd_data_not_available", - description=("ISD Data not available"), - data={"year": year}, - ) - ) - else: - data = [ - load_isd_hourly_temp_data_cached_proxy( - usaf_id, - year, - read_from_cache=read_from_cache, - write_to_cache=write_to_cache, - fetch_from_web=fetch_from_web, - ) - for year in range(start.year, end.year + 1) - ] - - if data: - # get raw data from loaded years into hourly form - ts = pd.concat(data).resample("h").mean() - - # whittle down to desired range - ts = ts[start:end] - else: - ts = pd.Series([], dtype=float, index=pd.DatetimeIndex([], tz=pytz.UTC)) - - # because start and end dates need to fall exactly on hours - ts_start = datetime(start.year, start.month, start.day, start.hour, tzinfo=pytz.UTC) - # add an hour if not already exactly on an hour, which guarantees - # that ts_start is greater than or equal to start. - if ts_start < start: - ts_start += timedelta(seconds=3600) - ts_end = datetime(end.year, end.month, end.day, end.hour, tzinfo=pytz.UTC) - - # fill in gaps, covering the full requested range even when no data loaded - ts = ts.reindex(pd.date_range(ts_start, ts_end, freq="h", tz=pytz.UTC)) - warnings.extend(_data_gap_warnings(ts)) - - return ts, warnings - - -def load_isd_daily_temp_data( - usaf_id, - start, - end, - read_from_cache=True, - write_to_cache=True, - error_on_missing_years=True, - fetch_from_web=True, -): - # CalTRACK 2.3.3 - if start.tzinfo != pytz.UTC: - raise NonUTCTimezoneInfoError(start) - if end.tzinfo != pytz.UTC: - raise NonUTCTimezoneInfoError(end) - - data = [] - for year in range(start.year, end.year + 1): - try: - data.append( - load_isd_daily_temp_data_cached_proxy( - usaf_id, - year, - read_from_cache=read_from_cache, - write_to_cache=write_to_cache, - fetch_from_web=fetch_from_web, - ) - ) - except ISDDataNotAvailableError: - if error_on_missing_years: - raise - pywarnings.warn( - "eeweather: ISD data not available for {} in {}".format(usaf_id, year) - ) - - if data: - # get raw data - ts = pd.concat(data).resample("D").mean() - - # whittle down - ts = ts[start:end] - else: - ts = pd.Series([], dtype=float, index=pd.DatetimeIndex([], tz=pytz.UTC)) - - # because start and end dates need to fall exactly on days - ts_start = datetime(start.year, start.month, start.day, tzinfo=pytz.UTC) - # add a day if not already exactly on a day, which guarantees - # that ts_start is greater than or equal to start. - if ts_start < start: - ts_start += timedelta(days=1) - ts_end = datetime(end.year, end.month, end.day, tzinfo=pytz.UTC) - - # fill in gaps, covering the full requested range even when no data loaded - ts = ts.reindex(pd.date_range(ts_start, ts_end, freq="D", tz=pytz.UTC)) - for warning in _data_gap_warnings(ts): - pywarnings.warn("eeweather: {}".format(warning.description)) - - return ts - - -def load_gsod_daily_temp_data( - usaf_id, - start, - end, - read_from_cache=True, - write_to_cache=True, - error_on_missing_years=True, - fetch_from_web=True, -): - # CalTRACK 2.3.3 - if start.tzinfo != pytz.UTC: - raise NonUTCTimezoneInfoError(start) - if end.tzinfo != pytz.UTC: - raise NonUTCTimezoneInfoError(end) +def destroy_cached_cz2010_hourly_temp_data(usaf_id): + key = get_cz2010_hourly_temp_data_cache_key(usaf_id) + store = eeweather.connections.key_value_store_proxy.get_store() + return store.clear(key) - data = [] - for year in range(start.year, end.year + 1): - try: - data.append( - load_gsod_daily_temp_data_cached_proxy( - usaf_id, - year, - read_from_cache=read_from_cache, - write_to_cache=write_to_cache, - fetch_from_web=fetch_from_web, - ) - ) - except GSODDataNotAvailableError: - if error_on_missing_years: - raise - pywarnings.warn( - "eeweather: GSOD data not available for {} in {}".format(usaf_id, year) - ) - if data: - # get raw data - ts = pd.concat(data).resample("D").mean() +def load_tmy3_hourly_temp_data_cached_proxy( + usaf_id, read_from_cache=True, write_to_cache=True, fetch_from_web=True +): + # take from cache? + data_ok = validate_tmy3_hourly_temp_data_cache(usaf_id) - # whittle down - ts = ts[start:end] + if not fetch_from_web and not data_ok: + raise TMY3DataNotAvailableError(usaf_id) + elif fetch_from_web and (not read_from_cache or not data_ok): + # need to actually fetch the data + ts = fetch_tmy3_hourly_temp_data(usaf_id) + if write_to_cache: + write_tmy3_hourly_temp_data_to_cache(usaf_id, ts) else: - ts = pd.Series([], dtype=float, index=pd.DatetimeIndex([], tz=pytz.UTC)) + # read_from_cache=True and data_ok=True + ts = read_tmy3_hourly_temp_data_from_cache(usaf_id) + return ts - # because start and end dates need to fall exactly on days - ts_start = datetime(start.year, start.month, start.day, tzinfo=pytz.UTC) - # add a day if not already exactly on a day, which guarantees - # that ts_start is greater than or equal to start. - if ts_start < start: - ts_start += timedelta(days=1) - ts_end = datetime(end.year, end.month, end.day, tzinfo=pytz.UTC) - # fill in gaps, covering the full requested range even when no data loaded - ts = ts.reindex(pd.date_range(ts_start, ts_end, freq="D", tz=pytz.UTC)) - for warning in _data_gap_warnings(ts): - pywarnings.warn("eeweather: {}".format(warning.description)) +def load_cz2010_hourly_temp_data_cached_proxy( + usaf_id, read_from_cache=True, write_to_cache=True, fetch_from_web=True +): + # take from cache? + data_ok = validate_cz2010_hourly_temp_data_cache(usaf_id) + if not fetch_from_web and not data_ok: + raise CZ2010DataNotAvailableError(usaf_id) + elif fetch_from_web and (not read_from_cache or not data_ok): + # need to actually fetch the data + ts = fetch_cz2010_hourly_temp_data(usaf_id) + if write_to_cache: + write_cz2010_hourly_temp_data_to_cache(usaf_id, ts) + else: + # read_from_cache=True and data_ok=True + ts = read_cz2010_hourly_temp_data_from_cache(usaf_id) return ts @@ -1183,45 +900,6 @@ def load_cz2010_hourly_temp_data( return ts -def load_cached_isd_hourly_temp_data(usaf_id): - store = eeweather.connections.key_value_store_proxy.get_store() - - data = [ - read_isd_hourly_temp_data_from_cache(usaf_id, year) - for year in range(2000, datetime.now().year + 1) - if store.key_exists(get_isd_hourly_temp_data_cache_key(usaf_id, year)) - ] - if data == []: - return None - return pd.concat(data).resample("h").mean() - - -def load_cached_isd_daily_temp_data(usaf_id): - store = eeweather.connections.key_value_store_proxy.get_store() - - data = [ - read_isd_daily_temp_data_from_cache(usaf_id, year) - for year in range(2000, datetime.now().year + 1) - if store.key_exists(get_isd_daily_temp_data_cache_key(usaf_id, year)) - ] - if data == []: - return None - return pd.concat(data).resample("D").mean() - - -def load_cached_gsod_daily_temp_data(usaf_id): - store = eeweather.connections.key_value_store_proxy.get_store() - - data = [ - read_gsod_daily_temp_data_from_cache(usaf_id, year) - for year in range(2000, datetime.now().year + 1) - if store.key_exists(get_gsod_daily_temp_data_cache_key(usaf_id, year)) - ] - if data == []: - return None - return pd.concat(data).resample("D").mean() - - def load_cached_tmy3_hourly_temp_data(usaf_id): store = eeweather.connections.key_value_store_proxy.get_store() @@ -1240,23 +918,26 @@ def load_cached_cz2010_hourly_temp_data(usaf_id): return None -class ISDStation(object): - """A representation of an Integrated Surface Database weather station. +class WeatherStation(object): + """A representation of a weather station. - Contains data about a particular ISD station, as well as methods to pull - data for this station. + Contains data about a particular weather station, as well as methods to + pull data for this station. Stations are keyed by their ISD-registry + USAF id; observed data is served from the station's GHCNh record. Parameters ---------- usaf_id : str - ISD station USAF ID + Station USAF ID load_metatdata : bool, optional Whether or not to auto-load metadata for this station Attributes ---------- usaf_id : str - ISD station USAF ID + Station USAF ID + ghcn_id : str + GHCNh station id observed data is fetched with iecc_climate_zone : str IECC Climate Zone iecc_moisture_regime : str @@ -1304,13 +985,16 @@ def __init__(self, usaf_id, load_metadata=True): self.quality = None self.wban_ids = None self.recent_wban_id = None + self.ghcn_id = None + self.ghcn_first_year = None + self.ghcn_last_year = None self.climate_zones = {} def __str__(self): return self.usaf_id def __repr__(self): - return "ISDStation('{}')".format(self.usaf_id) + return "WeatherStation('{}')".format(self.usaf_id) def _load_metadata(self): metadata = get_isd_station_metadata(self.usaf_id) @@ -1332,6 +1016,9 @@ def _float_or_none(field): self.quality = metadata.get("quality") self.wban_ids = metadata.get("wban_ids", "").split(",") self.recent_wban_id = metadata.get("recent_wban_id") + self.ghcn_id = metadata.get("ghcn_id") + self.ghcn_first_year = metadata.get("ghcn_first_year") + self.ghcn_last_year = metadata.get("ghcn_last_year") self.climate_zones = { "iecc_climate_zone": metadata.get("iecc_climate_zone"), "iecc_moisture_regime": metadata.get("iecc_moisture_regime"), @@ -1350,6 +1037,9 @@ def json(self): "quality": self.quality, "wban_ids": self.wban_ids, "recent_wban_id": self.recent_wban_id, + "ghcn_id": self.ghcn_id, + "ghcn_first_year": self.ghcn_first_year, + "ghcn_last_year": self.ghcn_last_year, "climate_zones": { "iecc_climate_zone": self.iecc_climate_zone, "iecc_moisture_regime": self.iecc_moisture_regime, @@ -1358,40 +1048,80 @@ def json(self): }, } - def get_isd_filenames(self, year=None, with_host=False): - """Get filenames of raw ISD station data.""" - return get_isd_filenames(self.usaf_id, year, with_host=with_host) + def load_data( + self, + start, + end, + frequency="hourly", + variables=DEFAULT_VARIABLES, + read_from_cache=True, + write_to_cache=True, + fetch_from_web=True, + error_on_missing_years=True, + ): + """Load this station's weather data between two dates (inclusive). + + This is the primary interface for loading observed weather data. + + Parameters + ---------- + start : datetime.datetime + The earliest date from which to load data. Must be UTC. + end : datetime.datetime + The latest date until which to load data. Must be UTC. + frequency : str + ``'hourly'`` or ``'daily'``. Daily values are means of the + hourly values within each day. + variables : tuple of str + GHCNh variable names. Temperatures are degrees Celsius; units + for other variables follow the GHCNh documentation. + read_from_cache : bool + Whether or not to load data from cache. + write_to_cache : bool + Whether or not to write newly loaded data to cache. + fetch_from_web : bool + Whether or not to fetch data from the web. + error_on_missing_years : bool + Whether to raise when data is unavailable for a year in the + range, or to warn and fill that year with NaN. + + Returns + ------- + tuple of (pandas.DataFrame, list of EEWeatherWarning) + One column per requested variable, indexed over the full + requested range at the requested frequency; periods without + data are NaN. + """ + return load_data( + self.usaf_id, + start, + end, + frequency=frequency, + variables=variables, + read_from_cache=read_from_cache, + write_to_cache=write_to_cache, + fetch_from_web=fetch_from_web, + error_on_missing_years=error_on_missing_years, + ) + + def get_quality(self, start, end): + """Station quality over a period, from GHCNh observation counts.""" + return get_station_quality(self.usaf_id, start, end) - def get_gsod_filenames(self, year=None, with_host=False): - """Get filenames of raw GSOD station data.""" - return get_gsod_filenames(self.usaf_id, year, with_host=with_host) + def load_cached_data(self): + """Load all cached hourly data for this station.""" + return load_cached_hourly_data(self.usaf_id) + + def destroy_cached_hourly_data(self, year): + """Remove cached hourly data for this station for the given year.""" + return destroy_cached_hourly_data(self.usaf_id, year) def get_isd_file_metadata(self): """Get raw file metadata for the station.""" return get_isd_file_metadata(self.usaf_id) # fetch raw data - def fetch_isd_raw_temp_data(self, year): - """Pull raw ISD data for the given year directly from FTP.""" - return fetch_isd_raw_temp_data(self.usaf_id, year) - - def fetch_gsod_raw_temp_data(self, year): - """Pull raw GSOD data for the given year directly from FTP.""" - return fetch_gsod_raw_temp_data(self.usaf_id, year) - # fetch raw data then frequency-normalize - def fetch_isd_hourly_temp_data(self, year): - """Pull raw ISD temperature data for the given year directly from FTP and resample to hourly time series.""" - return fetch_isd_hourly_temp_data(self.usaf_id, year) - - def fetch_isd_daily_temp_data(self, year): - """Pull raw ISD temperature data for the given year directly from FTP and resample to daily time series.""" - return fetch_isd_daily_temp_data(self.usaf_id, year) - - def fetch_gsod_daily_temp_data(self, year): - """Pull raw GSOD temperature data for the given year directly from FTP and resample to daily time series.""" - return fetch_gsod_daily_temp_data(self.usaf_id, year) - def fetch_tmy3_hourly_temp_data(self): """Pull hourly TMY3 temperature hourly time series directly from NREL.""" return fetch_tmy3_hourly_temp_data(self.usaf_id) @@ -1401,18 +1131,6 @@ def fetch_cz2010_hourly_temp_data(self): return fetch_cz2010_hourly_temp_data(self.usaf_id) # get key-value store key - def get_isd_hourly_temp_data_cache_key(self, year): - """Get key used to cache resampled hourly ISD temperature data for the given year.""" - return get_isd_hourly_temp_data_cache_key(self.usaf_id, year) - - def get_isd_daily_temp_data_cache_key(self, year): - """Get key used to cache resampled daily ISD temperature data for the given year.""" - return get_isd_daily_temp_data_cache_key(self.usaf_id, year) - - def get_gsod_daily_temp_data_cache_key(self, year): - """Get key used to cache resampled daily GSOD temperature data for the given year.""" - return get_gsod_daily_temp_data_cache_key(self.usaf_id, year) - def get_tmy3_hourly_temp_data_cache_key(self): """Get key used to cache TMY3 weather-normalized temperature data.""" return get_tmy3_hourly_temp_data_cache_key(self.usaf_id) @@ -1422,31 +1140,7 @@ def get_cz2010_hourly_temp_data_cache_key(self): return get_cz2010_hourly_temp_data_cache_key(self.usaf_id) # is cached data expired? boolean. true if expired or not in cache - def cached_isd_hourly_temp_data_is_expired(self, year): - """Return True if cache of resampled hourly ISD temperature data has expired or does not exist for the given year.""" - return cached_isd_hourly_temp_data_is_expired(self.usaf_id, year) - - def cached_isd_daily_temp_data_is_expired(self, year): - """Return True if cache of resampled daily ISD temperature data has expired or does not exist for the given year.""" - return cached_isd_daily_temp_data_is_expired(self.usaf_id, year) - - def cached_gsod_daily_temp_data_is_expired(self, year): - """Return True if cache of resampled daily GSOD temperature data has expired or does not exist for the given year.""" - return cached_gsod_daily_temp_data_is_expired(self.usaf_id, year) - # check if data is available and delete data in the cache if it's expired - def validate_isd_hourly_temp_data_cache(self, year): - """Delete cached resampled hourly ISD temperature data if it has expired for the given year.""" - return validate_isd_hourly_temp_data_cache(self.usaf_id, year) - - def validate_isd_daily_temp_data_cache(self, year): - """Delete cached resampled daily ISD temperature data if it has expired for the given year.""" - return validate_isd_daily_temp_data_cache(self.usaf_id, year) - - def validate_gsod_daily_temp_data_cache(self, year): - """Delete cached resampled daily GSOD temperature data if it has expired for the given year.""" - return validate_gsod_daily_temp_data_cache(self.usaf_id, year) - def validate_tmy3_hourly_temp_data_cache(self): """Check if TMY3 data exists in cache.""" return validate_tmy3_hourly_temp_data_cache(self.usaf_id) @@ -1456,18 +1150,6 @@ def validate_cz2010_hourly_temp_data_cache(self): return validate_cz2010_hourly_temp_data_cache(self.usaf_id) # pandas time series to json - def serialize_isd_hourly_temp_data(self, ts): - """Serialize resampled hourly ISD pandas time series as JSON for caching.""" - return serialize_isd_hourly_temp_data(ts) - - def serialize_isd_daily_temp_data(self, ts): - """Serialize resampled daily ISD pandas time series as JSON for caching.""" - return serialize_isd_daily_temp_data(ts) - - def serialize_gsod_daily_temp_data(self, ts): - """Serialize resampled daily GSOD pandas time series as JSON for caching.""" - return serialize_gsod_daily_temp_data(ts) - def serialize_tmy3_hourly_temp_data(self, ts): """Serialize hourly TMY3 pandas time series as JSON for caching.""" return serialize_tmy3_hourly_temp_data(ts) @@ -1477,39 +1159,15 @@ def serialize_cz2010_hourly_temp_data(self, ts): return serialize_cz2010_hourly_temp_data(ts) # json to pandas time series - def deserialize_isd_hourly_temp_data(self, data): - """Deserialize JSON representation of resampled hourly ISD into pandas time series.""" - return deserialize_isd_hourly_temp_data(data) - - def deserialize_isd_daily_temp_data(self, data): - """Deserialize JSON representation of resampled daily ISD into pandas time series.""" - return deserialize_isd_daily_temp_data(data) - - def deserialize_gsod_daily_temp_data(self, data): - """Deserialize JSON representation of resampled daily GSOD into pandas time series.""" - return deserialize_gsod_daily_temp_data(data) - def deserialize_tmy3_hourly_temp_data(self, data): """Deserialize JSON representation of hourly TMY3 into pandas time series.""" - return deserialize_isd_hourly_temp_data(data) + return deserialize_tmy3_hourly_temp_data(data) def deserialize_cz2010_hourly_temp_data(self, data): """Deserialize JSON representation of hourly CZ2010 into pandas time series.""" return deserialize_cz2010_hourly_temp_data(data) # return pandas time series of data from cache - def read_isd_hourly_temp_data_from_cache(self, year): - """Get cached version of resampled hourly ISD temperature data for given year.""" - return read_isd_hourly_temp_data_from_cache(self.usaf_id, year) - - def read_isd_daily_temp_data_from_cache(self, year): - """Get cached version of resampled daily ISD temperature data for given year.""" - return read_isd_daily_temp_data_from_cache(self.usaf_id, year) - - def read_gsod_daily_temp_data_from_cache(self, year): - """Get cached version of resampled daily GSOD temperature data for given year.""" - return read_gsod_daily_temp_data_from_cache(self.usaf_id, year) - def read_tmy3_hourly_temp_data_from_cache(self): """Get cached version of hourly TMY3 temperature data.""" return read_tmy3_hourly_temp_data_from_cache(self.usaf_id) @@ -1519,18 +1177,6 @@ def read_cz2010_hourly_temp_data_from_cache(self): return read_cz2010_hourly_temp_data_from_cache(self.usaf_id) # write pandas time series of data to cache for a particular year - def write_isd_hourly_temp_data_to_cache(self, year, ts): - """Write resampled hourly ISD temperature data to cache for given year.""" - return write_isd_hourly_temp_data_to_cache(self.usaf_id, year, ts) - - def write_isd_daily_temp_data_to_cache(self, year, ts): - """Write resampled daily ISD temperature data to cache for given year.""" - return write_isd_daily_temp_data_to_cache(self.usaf_id, year, ts) - - def write_gsod_daily_temp_data_to_cache(self, year, ts): - """Write resampled daily GSOD temperature data to cache for given year.""" - return write_gsod_daily_temp_data_to_cache(self.usaf_id, year, ts) - def write_tmy3_hourly_temp_data_to_cache(self, ts): """Write hourly TMY3 temperature data to cache for given year.""" return write_tmy3_hourly_temp_data_to_cache(self.usaf_id, ts) @@ -1540,18 +1186,6 @@ def write_cz2010_hourly_temp_data_to_cache(self, ts): return write_cz2010_hourly_temp_data_to_cache(self.usaf_id, ts) # delete cached data for a particular year - def destroy_cached_isd_hourly_temp_data(self, year): - """Remove cached resampled hourly ISD temperature data to cache for given year.""" - return destroy_cached_isd_hourly_temp_data(self.usaf_id, year) - - def destroy_cached_isd_daily_temp_data(self, year): - """Remove cached resampled daily ISD temperature data to cache for given year.""" - return destroy_cached_isd_daily_temp_data(self.usaf_id, year) - - def destroy_cached_gsod_daily_temp_data(self, year): - """Remove cached resampled daily GSOD temperature data to cache for given year.""" - return destroy_cached_gsod_daily_temp_data(self.usaf_id, year) - def destroy_cached_tmy3_hourly_temp_data(self): """Remove cached hourly TMY3 temperature data to cache.""" return destroy_cached_tmy3_hourly_temp_data(self.usaf_id) @@ -1561,22 +1195,6 @@ def destroy_cached_cz2010_hourly_temp_data(self): return destroy_cached_cz2010_hourly_temp_data(self.usaf_id) # load data either from cache if valid or directly from source - def load_isd_hourly_temp_data_cached_proxy(self, year, fetch_from_web=True): - """Load resampled hourly ISD temperature data from cache, or if it is expired or hadn't been cached, fetch from FTP for given year.""" - return load_isd_hourly_temp_data_cached_proxy( - self.usaf_id, year, fetch_from_web - ) - - def load_isd_daily_temp_data_cached_proxy(self, year, fetch_from_web=True): - """Load resampled daily ISD temperature data from cache, or if it is expired or hadn't been cached, fetch from FTP for given year.""" - return load_isd_daily_temp_data_cached_proxy(self.usaf_id, year, fetch_from_web) - - def load_gsod_daily_temp_data_cached_proxy(self, year, fetch_from_web=True): - """Load resampled daily GSOD temperature data from cache, or if it is expired or hadn't been cached, fetch from FTP for given year.""" - return load_gsod_daily_temp_data_cached_proxy( - self.usaf_id, year, fetch_from_web - ) - def load_tmy3_hourly_temp_data_cached_proxy(self, fetch_from_web=True): """Load hourly TMY3 temperature data from cache, or if it is expired or hadn't been cached, fetch from NREL.""" return load_tmy3_hourly_temp_data_cached_proxy(self.usaf_id, fetch_from_web) @@ -1586,120 +1204,6 @@ def load_cz2010_hourly_temp_data_cached_proxy(self, fetch_from_web=True): return load_cz2010_hourly_temp_data_cached_proxy(self.usaf_id, fetch_from_web) # main interface: load data from start date to end date - def load_isd_hourly_temp_data( - self, - start, - end, - read_from_cache=True, - write_to_cache=True, - fetch_from_web=True, - error_on_missing_years=True, - ): - """Load resampled hourly ISD temperature data from start date to end date (inclusive). - - This is the primary convenience method for loading resampled hourly ISD temperature data. - - Parameters - ---------- - start : datetime.datetime - The earliest date from which to load data. - end : datetime.datetime - The latest date until which to load data. - read_from_cache : bool - Whether or not to load data from cache. - fetch_from_web : bool - Whether or not to fetch data from ftp. - write_to_cache : bool - Whether or not to write newly loaded data to cache. - """ - return load_isd_hourly_temp_data( - self.usaf_id, - start, - end, - read_from_cache=read_from_cache, - write_to_cache=write_to_cache, - fetch_from_web=fetch_from_web, - error_on_missing_years=error_on_missing_years, - ) - - def load_isd_daily_temp_data( - self, - start, - end, - read_from_cache=True, - write_to_cache=True, - fetch_from_web=True, - error_on_missing_years=True, - ): - """Load resampled daily ISD temperature data from start date to end date (inclusive). - - This is the primary convenience method for loading resampled daily ISD temperature data. - - Parameters - ---------- - start : datetime.datetime - The earliest date from which to load data. - end : datetime.datetime - The latest date until which to load data. - read_from_cache : bool - Whether or not to load data from cache. - fetch_from_web : bool - Whether or not to fetch data from the web. - write_to_cache : bool - Whether or not to write newly loaded data to cache. - error_on_missing_years : bool - Whether to raise when data is unavailable for a year in the range, - or to warn and fill that year with NaN. - """ - return load_isd_daily_temp_data( - self.usaf_id, - start, - end, - read_from_cache=read_from_cache, - write_to_cache=write_to_cache, - fetch_from_web=fetch_from_web, - error_on_missing_years=error_on_missing_years, - ) - - def load_gsod_daily_temp_data( - self, - start, - end, - read_from_cache=True, - write_to_cache=True, - fetch_from_web=True, - error_on_missing_years=True, - ): - """Load resampled daily GSOD temperature data from start date to end date (inclusive). - - This is the primary convenience method for loading resampled daily GSOD temperature data. - - Parameters - ---------- - start : datetime.datetime - The earliest date from which to load data. - end : datetime.datetime - The latest date until which to load data. - read_from_cache : bool - Whether or not to load data from cache. - write_to_cache : bool - Whether or not to write newly loaded data to cache. - fetch_from_web : bool - Whether or not to fetch data from the web. - error_on_missing_years : bool - Whether to raise when data is unavailable for a year in the range, - or to warn and fill that year with NaN. - """ - return load_gsod_daily_temp_data( - self.usaf_id, - start, - end, - read_from_cache=read_from_cache, - write_to_cache=write_to_cache, - fetch_from_web=fetch_from_web, - error_on_missing_years=error_on_missing_years, - ) - def load_tmy3_hourly_temp_data( self, start, end, read_from_cache=True, write_to_cache=True, fetch_from_web=True ): @@ -1759,18 +1263,6 @@ def load_cz2010_hourly_temp_data( ) # load all cached data for this station - def load_cached_isd_hourly_temp_data(self): - """Load all cached resampled hourly ISD temperature data.""" - return load_cached_isd_hourly_temp_data(self.usaf_id) - - def load_cached_isd_daily_temp_data(self): - """Load all cached resampled daily ISD temperature data.""" - return load_cached_isd_daily_temp_data(self.usaf_id) - - def load_cached_gsod_daily_temp_data(self): - """Load all cached resampled daily GSOD temperature data.""" - return load_cached_gsod_daily_temp_data(self.usaf_id) - def load_cached_tmy3_hourly_temp_data(self): """Load all cached hourly TMY3 temperature data (the year is set to 1900)""" return load_cached_tmy3_hourly_temp_data(self.usaf_id) diff --git a/eeweather/testing.py b/eeweather/testing.py deleted file mode 100644 index dd2d02a..0000000 --- a/eeweather/testing.py +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" - -Copyright 2018-2023 OpenEEmeter contributors - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -""" -import datetime -import pytz - -from importlib.resources import files -from io import BytesIO -import re -import tempfile - -import eeweather.access_api -from eeweather.cache import KeyValueStore - - - -def _resource_bytes(name): - return files("eeweather.resources").joinpath(name).read_bytes() - - -def write_isd_file(bytes_string): - bytes_string.write(_resource_bytes("ISD.gz")) - - -def write_tmy3_file(): - return _resource_bytes("722880TYA.CSV").decode("ascii") - - -def write_cz2010_file(): - return _resource_bytes("722880_CZ2010.CSV").decode("ascii") - - -def write_missing_isd_file(bytes_string): - bytes_string.write(_resource_bytes("ISD-MISSING.gz")) - - -def write_nan_isd_file(bytes_string): - bytes_string.write(_resource_bytes("ISD-NAN.gz")) - - -def write_gsod_file(bytes_string): - bytes_string.write(_resource_bytes("GSOD.op.gz")) - - -def write_missing_gsod_file(bytes_string): - bytes_string.write(_resource_bytes("GSOD-MISSING.op.gz")) - - -def mock_request_text_tmy3(url): - match_url = ( - "https://storage.googleapis.com/openeemeter-public-resources/" - "tmy3_archive/722880TYA.CSV" - ) - if re.match(match_url, url): - return write_tmy3_file() - - -def mock_request_text_cz2010(url): - match_url = "https://storage.googleapis.com/oee-cz2010/csv/722880_CZ2010.CSV" - - if re.match(match_url, url): - return write_cz2010_file() - - -class MockNOAAFTPConnectionProxy: - def read_file_as_bytes(self, filename): - bytes_string = BytesIO() - - if re.match("/pub/data/noaa/2007/722874-93134-2007.gz", filename): - write_isd_file(bytes_string) - elif re.match("/pub/data/noaa/2006/722874-93134-2006.gz", filename): - write_missing_isd_file(bytes_string) - elif re.match("/pub/data/noaa/2013/994035-99999-2013.gz", filename): - write_nan_isd_file(bytes_string) - elif re.match("/pub/data/gsod/2007/722874-93134-2007.op.gz", filename): - write_gsod_file(bytes_string) - elif re.match("/pub/data/gsod/2006/722874-93134-2006.op.gz", filename): - write_missing_gsod_file(bytes_string) - - bytes_string.seek(0) - - return bytes_string - - -class MockKeyValueStoreProxy: - def __init__(self): - # create a new test store in a temporary folder - self.store = KeyValueStore("sqlite:///{}/cache.db".format(tempfile.mkdtemp())) - - def get_store(self): - return self.store - - -_original_make_api_request = eeweather.access_api.make_api_request - - -def monkey_patch_make_api_request_return_empty( - dataset_type: str, usaf_id: str, wban_id: str, year: int -): - if usaf_id == "722874" and year == 2006 and dataset_type == "GSOD": - single_nan_day = ( - datetime.datetime(2006, 1, 4, 0, 0, 0, tzinfo=pytz.UTC), - float("nan"), - ) - - return [single_nan_day] - - if usaf_id == "722874" and year == 2006: - return [] - - if usaf_id == "722874" and year == 2005: - single_naive_nan_day = (datetime.datetime(2005, 1, 1, 0, 0, 0), float("nan")) - - return [single_naive_nan_day] - - result = _original_make_api_request( - dataset_type=dataset_type, usaf_id=usaf_id, wban_id=wban_id, year=year - ) - - return result - - -def monkey_patch_make_api_request_return_empty_v2( - dataset_type: str, usaf_id: str, wban_id: str, year: int -): - if usaf_id == "722874" and year == 2006: - single_nan_day = ( - datetime.datetime(2006, 1, 4, 0, 0, 0, tzinfo=pytz.UTC), - float("nan"), - ) - - return [single_nan_day] - - if usaf_id == "722874" and year == 2005: - single_naive_nan_day = (datetime.datetime(2005, 1, 1, 0, 0, 0), float("nan")) - - return [single_naive_nan_day] - - if usaf_id == "994035": - start_date = datetime.datetime(2013, 1, 1, 0, 0, 0) - nan_hours = [ - (start_date + datetime.timedelta(hours=1) * i, float("nan")) - for i in range(8611) - ] - - return nan_hours - - result = _original_make_api_request( - dataset_type=dataset_type, usaf_id=usaf_id, wban_id=wban_id, year=year - ) - - return result diff --git a/eeweather/utils.py b/eeweather/utils.py index 758ceab..71a4cfc 100644 --- a/eeweather/utils.py +++ b/eeweather/utils.py @@ -17,6 +17,10 @@ limitations under the License. """ +import pandas as pd + +from .connections import metadata_db_connection_proxy + class lazy_property(object): @@ -44,3 +48,22 @@ def __get__(self, obj, cls): value = self.fget(obj) setattr(obj, self.func_name, value) return value + + +def get_ghcn_ids(usaf_ids=None): + """GHCNh station ids mapped to ISD USAF ids, as a usaf_id-indexed Series. + + Parameters + ---------- + usaf_ids : list of str, optional + USAF ids to map. When None, the whole registry is returned. + Unrecognized ids are absent from the result. + """ + conn = metadata_db_connection_proxy.get_connection() + mapping = pd.read_sql_query( + "select usaf_id, ghcn_id from isd_station_metadata", conn + ).set_index("usaf_id")["ghcn_id"] + if usaf_ids is not None: + mapping = mapping[mapping.index.isin(list(usaf_ids))] + + return mapping diff --git a/eeweather/visualization.py b/eeweather/visualization.py index d0394b9..7643114 100644 --- a/eeweather/visualization.py +++ b/eeweather/visualization.py @@ -21,7 +21,7 @@ from .connections import metadata_db_connection_proxy from .exceptions import UnrecognizedUSAFIDError -from .stations import ISDStation +from .stations import WeatherStation __all__ = ("plot_station_mapping", "plot_station_mappings") diff --git a/pyproject.toml b/pyproject.toml index 53070ad..049f632 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,7 +44,7 @@ eeweather = "eeweather.cli:cli" [project.urls] Homepage = "https://github.com/opendsm/eeweather" -Documentation = "https://eeweather.readthedocs.io" +Documentation = "https://opendsm.energy" Repository = "https://github.com/opendsm/eeweather" Issues = "https://github.com/opendsm/eeweather/issues" diff --git a/eeweather/resources/tmy3-stations.html b/scripts/data/tmy3-stations.html similarity index 100% rename from eeweather/resources/tmy3-stations.html rename to scripts/data/tmy3-stations.html diff --git a/scripts/download_primary_sources.sh b/scripts/download_primary_sources.sh index a678689..3cf4036 100755 --- a/scripts/download_primary_sources.sh +++ b/scripts/download_primary_sources.sh @@ -32,18 +32,26 @@ wget -N https://gist.githubusercontent.com/philngo/d3e251040569dba67942/raw/0c98 # NCEI station lat lngs and metadata echo Downloading isd-history.csv -wget -N ftp://ftp.ncei.noaa.gov/pub/data/noaa/isd-history.csv -P $DATA_DIR -q --show-progress +wget -N https://www.ncei.noaa.gov/pub/data/noaa/isd-history.csv -P $DATA_DIR -q --show-progress # NCEI weather data quality echo Downloading isd-inventory.csv -wget -N ftp://ftp.ncei.noaa.gov/pub/data/noaa/isd-inventory.csv -P $DATA_DIR -q --show-progress +wget -N https://www.ncei.noaa.gov/pub/data/noaa/isd-inventory.csv -P $DATA_DIR -q --show-progress # Scrape-friendly TMY3 station list echo Downloading tmy3-stations.html -cp /app/eeweather/resources/tmy3-stations.html $DATA_DIR +cp "$PARENT_PATH/data/tmy3-stations.html" $DATA_DIR # Add ZIP code prefix mapping echo Downloading state zipcode prefixes wget -N https://gist.githubusercontent.com/philngo/247226aa89e5abf5869b981b9b841245/raw/56e25d8d590c001a18a1c0bab3ac69c53c09117c/zipcode_prefixes.json -P $DATA_DIR -q --show-progress echo Finished downloading primary source files + +# GHCNh station list for the usaf -> ghcn id mapping +echo Downloading ghcnh-station-list.csv +wget -N https://www.ncei.noaa.gov/oa/global-historical-climatology-network/hourly/doc/ghcnh-station-list.csv -P $DATA_DIR -q --show-progress + +# GHCNh inventory for per-station data availability years +echo Downloading ghcnh-inventory.txt +wget -N https://www.ncei.noaa.gov/oa/global-historical-climatology-network/hourly/doc/ghcnh-inventory.txt -P $DATA_DIR -q --show-progress diff --git a/scripts/tutorial.ipynb b/scripts/tutorial.ipynb deleted file mode 100644 index c17fd6c..0000000 --- a/scripts/tutorial.ipynb +++ /dev/null @@ -1,1927 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Welcome to the EEweather Tutorial\n", - "\n", - "This notebook demonstrates using the EEweather package to find and load temperature data that approximates the\n", - "unobserved temperature at a building site.\n", - "\n", - "This task is surprisingly nuanced. The problem is that weather stations and buildings are scattered around\n", - "and sometimes situations like the following arise when matching a site to an appropriate weather station:\n", - "\n", - " - site location is not well described (no full address, unknown climate zone)\n", - " - site has no nearby weather stations\n", - " - site has too many nearby weather stations\n", - " - nearby weather stations are in a different climate zone (e.g., right on the coast)\n", - " - nearby weather station has low quality data\n", - " - nearby weather station has low frequency data\n", - " - nearby weather station has no weather normal data\n", - " \n", - "EEweather provides tools to help address some of these issues. This tutorial walks through those tools and provides\n", - "examples of usage. It is best used in combination with the [online documentation](http://eeweather.openee.io).\n", - " \n", - "Many building sites are \n", - "If the only building sites for which you were interested in finding an accurate source of data were located within a from which to load weather(using lat/long coordinates) and loading temperature data for that station.\n", - "\n", - "First, some imports and config:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "# show plots in notebook\n", - "%matplotlib inline\n", - "\n", - "# allows making live edits to library code\n", - "%load_ext autoreload\n", - "%autoreload 2" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from datetime import datetime\n", - "import json\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import pytz\n", - "\n", - "import eeweather" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To get started, eeweather provides some quick and dirty ZIP code geocoding. Actually, the library uses ZIP Code Tabulation Areas for geocoding instead of plain old ZIP Codes, since their boundaries are well defined and we can take the centroid. Caution: this is not very accurate. If you have better geocodes, use those. In a pinch, however, this will work quite well for the purpose of matching weather stations. The high quality weather stations in the datasets (NOAA ISD, TMY3, CZ2010) used in this library are much sparser than ZIP codes, so you can likely afford to be off by a little." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(34.044806210221, -118.240332216466)" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# convert ZCTA to coordinates\n", - "lat, lng = eeweather.zcta_to_lat_long('90013') # downtown LA\n", - "lat, lng" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "These lat/long coordinates can be used to rank nearby stations by distance:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
rankdistance_meterslatitudelongitudeiecc_climate_zoneiecc_moisture_regimeba_climate_zoneca_climate_zonerough_qualityelevationstatetmy3_classis_tmy3is_cz2010difference_elevation_meters
usaf_id
72287415217.25982434.024-118.2913BHot-DryCA_08high54.6CANoneFalseTrueNone
749169213922.01945834.133-118.1333BHot-DryCA_09low231.0CANoneFalseFalseNone
722956316045.49723133.923-118.3343BHot-DryCA_08high19.2CAIITrueTrueNone
722950418139.29336633.938-118.3893BHot-DryCA_06high29.6CAITrueTrueNone
722913519386.42228533.970-118.4303BHot-DryCA_06low8.0CANoneFalseFalseNone
747043619603.25623034.083-118.0333BHot-DryCA_09low90.2CANoneFalseFalseNone
747041719603.25623034.083-118.0333BHot-DryCA_09low91.1CANoneFalseFalseNone
722885819716.19812434.016-118.4513BHot-DryCA_06high53.0CAIITrueTrueNone
722880920445.35704734.201-118.3583BHot-DryCA_09high236.2CAIITrueTrueNone
9940281024326.95098134.008-118.5003BHot-DryNonelow2.0CANoneFalseFalseNone
\n", - "
" - ], - "text/plain": [ - " rank distance_meters latitude longitude iecc_climate_zone \\\n", - "usaf_id \n", - "722874 1 5217.259824 34.024 -118.291 3 \n", - "749169 2 13922.019458 34.133 -118.133 3 \n", - "722956 3 16045.497231 33.923 -118.334 3 \n", - "722950 4 18139.293366 33.938 -118.389 3 \n", - "722913 5 19386.422285 33.970 -118.430 3 \n", - "747043 6 19603.256230 34.083 -118.033 3 \n", - "747041 7 19603.256230 34.083 -118.033 3 \n", - "722885 8 19716.198124 34.016 -118.451 3 \n", - "722880 9 20445.357047 34.201 -118.358 3 \n", - "994028 10 24326.950981 34.008 -118.500 3 \n", - "\n", - " iecc_moisture_regime ba_climate_zone ca_climate_zone rough_quality \\\n", - "usaf_id \n", - "722874 B Hot-Dry CA_08 high \n", - "749169 B Hot-Dry CA_09 low \n", - "722956 B Hot-Dry CA_08 high \n", - "722950 B Hot-Dry CA_06 high \n", - "722913 B Hot-Dry CA_06 low \n", - "747043 B Hot-Dry CA_09 low \n", - "747041 B Hot-Dry CA_09 low \n", - "722885 B Hot-Dry CA_06 high \n", - "722880 B Hot-Dry CA_09 high \n", - "994028 B Hot-Dry None low \n", - "\n", - " elevation state tmy3_class is_tmy3 is_cz2010 \\\n", - "usaf_id \n", - "722874 54.6 CA None False True \n", - "749169 231.0 CA None False False \n", - "722956 19.2 CA II True True \n", - "722950 29.6 CA I True True \n", - "722913 8.0 CA None False False \n", - "747043 90.2 CA None False False \n", - "747041 91.1 CA None False False \n", - "722885 53.0 CA II True True \n", - "722880 236.2 CA II True True \n", - "994028 2.0 CA None False False \n", - "\n", - " difference_elevation_meters \n", - "usaf_id \n", - "722874 None \n", - "749169 None \n", - "722956 None \n", - "722950 None \n", - "722913 None \n", - "747043 None \n", - "747041 None \n", - "722885 None \n", - "722880 None \n", - "994028 None " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ranked_stations = eeweather.rank_stations(lat, lng) # this is a pandas DataFrame\n", - "ranked_stations.head(10)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "EEweather can create a weather station from this ranking:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ISDStation('722874')" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "selected_station, warnings = eeweather.select_station(ranked_stations)\n", - "selected_station" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The station object is an ``eeweather.ISDStation`` instance, which we'll see a lot more of a few cells down.\n", - "\n", - "We can also create these eeweather.ISDStation objects directly:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "other_station = eeweather.ISDStation('722884')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "See how station `722884` has no climate zone information? Let's compare these two stations matches to see what's going on." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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CxZo3rx5mj9/vh588EEFg+E/9998801ddNFFmjt3rubOnat169ZJkk6cOKGpU6cqFAopGOzQjh1vqaioSAcOHJAk1dbWasqUKQoGg7rxxhtVWlqqpqZGBYMdOnr0qMrLZ+sf//iHFi5cpIULF+n006dp9uw5Wrhwoa666ipJ0p49e3TllVfqy1/+sioqKvTAAw8oMzOgzMyAZs4s0/HjxyVJ1dXVKioq0ptvvmm1e9q0aTp27JjuvfdejR8/XocPH7bWFRcXO16bWbNmWdc5kjVr1mjs2LGqra2NuN3NN9+st956S5dddpneffdda/m//vUvnX/++ZKkxsZG3XDDDaqoqND555+vpUuXWmUgq6urdf3112v27NlatGiRVqxYoU8//bTHcfrazqm9r732moqKivSnP/3JWrZ7924VFRVZ753vfe97Ki8v14IFC7Rw4ULt3LlTkmI6n9bWVl166aX9Kh+G1OT3Z/SIhJrLnL6cRPp9Hmlf0RzDK8xztX8N1P4z/AFl+AOO1yYQCCgQCGhYTvjreFObjje1qb293fpyyzyWk3jcl/5cK/O1Ptt/Tsx1wVCHbcIkg1MUPZK06JgDA2ny5MnaunWrtm7dqi1btignJ0cXX3yxJKmiokJb/7pN//3/bNAHTUO16vZfSJJGjhypl55dr7+99ZpWP/CAVq1aJcl4rHb77bdrw4YN2rZtm8444ww9/PDDkqSHHnrIOs6SJUu0ZMmSLu248847tXDhwl7buWXLFk2fPl0FBQWSjMd1W7du1SuvvKI///nPqqys1H333SfJ6PB95zvf0X333afXX39dmzZt0rp16/TSSy+psLBQJ510kvbu3StJ2rlzl0pKZlidt127dunMM8+Uv3N6tIwMvx5//IkubZk2bZoqK7eosnKLLrzwQt155x3aUrlF69evV1NTk1auXKlVq1bp1Vdf1UsvvaRdu3bp0Ucfk8/n01lnzdKuXbskSTt27FBJSYl17E8++UTDhw/XiBEjJEkjRozQ73//+6jvaW82btyomTNn6oUXXoi43dtvv63y8vKI2zz00EMaNWqUtm3bpu3bt+vXv/61MjMzFQqFtHLlSs2dO1c7d+7Uli1bdNttt3X5A0OSq+16a++0adP07LPPdtlu+vTpXba56667tHXrVt1+++26+eabI55LpPPJysrSvHnz9Mwzz/S5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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "eeweather.plot_station_mapping(lat, lng, selected_station, distance_meters=10007)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "eeweather.plot_station_mapping(lat, lng, other_station, distance_meters=13693)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Oops! That match would have been off shore. We can eliminate poor matches like that by restricting on climate zones:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
rankdistance_meterslatitudelongitudeiecc_climate_zoneiecc_moisture_regimeba_climate_zoneca_climate_zonerough_qualityelevationstatetmy3_classis_tmy3is_cz2010difference_elevation_meters
usaf_id
749169113922.01945834.133-118.1333BHot-DryCA_09low231.0CANoneFalseFalseNone
747041219603.25623034.083-118.0333BHot-DryCA_09low91.1CANoneFalseFalseNone
747043319603.25623034.083-118.0333BHot-DryCA_09low90.2CANoneFalseFalseNone
722880420445.35704734.201-118.3583BHot-DryCA_09high236.2CAIITrueTrueNone
745057528601.87671734.259-118.4133BHot-DryCA_09low305.7CANoneFalseFalseNone
722886629359.11092534.210-118.4893BHot-DryCA_09high234.7CAIITrueTrueNone
722887742656.26163334.100-117.7833BHot-DryCA_09low308.2CANoneFalseFalseNone
720046847162.35747834.370-118.5703BHot-DryCA_09low427.0CANoneFalseFalseNone
\n", - "
" - ], - "text/plain": [ - " rank distance_meters latitude longitude iecc_climate_zone \\\n", - "usaf_id \n", - "749169 1 13922.019458 34.133 -118.133 3 \n", - "747041 2 19603.256230 34.083 -118.033 3 \n", - "747043 3 19603.256230 34.083 -118.033 3 \n", - "722880 4 20445.357047 34.201 -118.358 3 \n", - "745057 5 28601.876717 34.259 -118.413 3 \n", - "722886 6 29359.110925 34.210 -118.489 3 \n", - "722887 7 42656.261633 34.100 -117.783 3 \n", - "720046 8 47162.357478 34.370 -118.570 3 \n", - "\n", - " iecc_moisture_regime ba_climate_zone ca_climate_zone rough_quality \\\n", - "usaf_id \n", - "749169 B Hot-Dry CA_09 low \n", - "747041 B Hot-Dry CA_09 low \n", - "747043 B Hot-Dry CA_09 low \n", - "722880 B Hot-Dry CA_09 high \n", - "745057 B Hot-Dry CA_09 low \n", - "722886 B Hot-Dry CA_09 high \n", - "722887 B Hot-Dry CA_09 low \n", - "720046 B Hot-Dry CA_09 low \n", - "\n", - " elevation state tmy3_class is_tmy3 is_cz2010 \\\n", - "usaf_id \n", - "749169 231.0 CA None False False \n", - "747041 91.1 CA None False False \n", - "747043 90.2 CA None False False \n", - "722880 236.2 CA II True True \n", - "745057 305.7 CA None False False \n", - "722886 234.7 CA II True True \n", - "722887 308.2 CA None False False \n", - "720046 427.0 CA None False False \n", - "\n", - " difference_elevation_meters \n", - "usaf_id \n", - "749169 None \n", - "747041 None \n", - "747043 None \n", - "722880 None \n", - "745057 None \n", - "722886 None \n", - "722887 None \n", - "720046 None " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cz_stations = eeweather.rank_stations(\n", - " lat, lng,\n", - " match_iecc_climate_zone=True,\n", - " match_iecc_moisture_regime=True,\n", - " match_ba_climate_zone=True,\n", - " match_ca_climate_zone=True,\n", - ")\n", - "cz_stations.head(10)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With that restriction, we only have eight potential matches left. A few more restrictions and we're left with only two possible matches:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
rankdistance_meterslatitudelongitudeiecc_climate_zoneiecc_moisture_regimeba_climate_zoneca_climate_zonerough_qualityelevationstatetmy3_classis_tmy3is_cz2010difference_elevation_meters
usaf_id
722880120445.35704734.201-118.3583BHot-DryCA_09high236.2CAIITrueTrueNone
722886229359.11092534.210-118.4893BHot-DryCA_09high234.7CAIITrueTrueNone
\n", - "
" - ], - "text/plain": [ - " rank distance_meters latitude longitude iecc_climate_zone \\\n", - "usaf_id \n", - "722880 1 20445.357047 34.201 -118.358 3 \n", - "722886 2 29359.110925 34.210 -118.489 3 \n", - "\n", - " iecc_moisture_regime ba_climate_zone ca_climate_zone rough_quality \\\n", - "usaf_id \n", - "722880 B Hot-Dry CA_09 high \n", - "722886 B Hot-Dry CA_09 high \n", - "\n", - " elevation state tmy3_class is_tmy3 is_cz2010 \\\n", - "usaf_id \n", - "722880 236.2 CA II True True \n", - "722886 234.7 CA II True True \n", - "\n", - " difference_elevation_meters \n", - "usaf_id \n", - "722880 None \n", - "722886 None " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cz_strict_stations = eeweather.rank_stations(\n", - " lat, lng,\n", - " match_iecc_climate_zone=True,\n", - " match_iecc_moisture_regime=True,\n", - " match_ba_climate_zone=True,\n", - " match_ca_climate_zone=True,\n", - " minimum_quality='high', # find stations with reported high frequency data\n", - " is_tmy3=True, # find stations with TMY3 normal year data\n", - " is_cz2010=True, # find stations with CZ2010 normal year data\n", - ")\n", - "cz_strict_stations.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The library is designed to provide some flexibility when selecting weather stations - allowing you to be as strict or as flexible as you'd like. You can also restrict on distance or elevation difference." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
rankdistance_meterslatitudelongitudeiecc_climate_zoneiecc_moisture_regimeba_climate_zoneca_climate_zonerough_qualityelevationstatetmy3_classis_tmy3is_cz2010difference_elevation_meters
usaf_id
722880120445.35704734.201-118.3583BHot-DryCA_09high236.2CAIITrueTrueNone
\n", - "
" - ], - "text/plain": [ - " rank distance_meters latitude longitude iecc_climate_zone \\\n", - "usaf_id \n", - "722880 1 20445.357047 34.201 -118.358 3 \n", - "\n", - " iecc_moisture_regime ba_climate_zone ca_climate_zone rough_quality \\\n", - "usaf_id \n", - "722880 B Hot-Dry CA_09 high \n", - "\n", - " elevation state tmy3_class is_tmy3 is_cz2010 \\\n", - "usaf_id \n", - "722880 236.2 CA II True True \n", - "\n", - " difference_elevation_meters \n", - "usaf_id \n", - "722880 None " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "eeweather.rank_stations(\n", - " lat, lng,\n", - " match_iecc_climate_zone=True,\n", - " match_iecc_moisture_regime=True,\n", - " match_ba_climate_zone=True,\n", - " match_ca_climate_zone=True,\n", - " minimum_quality='high',\n", - " is_tmy3=True,\n", - " is_cz2010=True,\n", - " max_distance_meters=25000,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you're too strict, you'll end up with no matches at all, so be careful.\n", - "\n", - "In some cases, you'll want to have a \"fallback\" method for selecting a station if the preferred method does not succeed. For instance, you may first try to find an acceptable weather station in the same climate zone but fallback to a nearby station outside of the climate zone in the absence of a suitable match." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
rankdistance_meterslatitudelongitudeiecc_climate_zoneiecc_moisture_regimeba_climate_zoneca_climate_zonerough_qualityelevationstatetmy3_classis_tmy3is_cz2010difference_elevation_meters
usaf_id
722956116045.49723133.923-118.3343BHot-DryCA_08high19.2CAIITrueTrueNone
722950218139.29336633.938-118.3893BHot-DryCA_06high29.6CAITrueTrueNone
722885319716.19812434.016-118.4513BHot-DryCA_06high53.0CAIITrueTrueNone
722880420445.35704734.201-118.3583BHot-DryCA_09high236.2CAIITrueTrueNone
722970527256.36508133.812-118.1463BHot-DryCA_08high9.5CAITrueTrueNone
\n", - "
" - ], - "text/plain": [ - " rank distance_meters latitude longitude iecc_climate_zone \\\n", - "usaf_id \n", - "722956 1 16045.497231 33.923 -118.334 3 \n", - "722950 2 18139.293366 33.938 -118.389 3 \n", - "722885 3 19716.198124 34.016 -118.451 3 \n", - "722880 4 20445.357047 34.201 -118.358 3 \n", - "722970 5 27256.365081 33.812 -118.146 3 \n", - "\n", - " iecc_moisture_regime ba_climate_zone ca_climate_zone rough_quality \\\n", - "usaf_id \n", - "722956 B Hot-Dry CA_08 high \n", - "722950 B Hot-Dry CA_06 high \n", - "722885 B Hot-Dry CA_06 high \n", - "722880 B Hot-Dry CA_09 high \n", - "722970 B Hot-Dry CA_08 high \n", - "\n", - " elevation state tmy3_class is_tmy3 is_cz2010 \\\n", - "usaf_id \n", - "722956 19.2 CA II True True \n", - "722950 29.6 CA I True True \n", - "722885 53.0 CA II True True \n", - "722880 236.2 CA II True True \n", - "722970 9.5 CA I True True \n", - "\n", - " difference_elevation_meters \n", - "usaf_id \n", - "722956 None \n", - "722950 None \n", - "722885 None \n", - "722880 None \n", - "722970 None " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "relaxed_stations = eeweather.rank_stations(\n", - " lat, lng,\n", - " minimum_quality='high',\n", - " is_tmy3=True,\n", - " is_cz2010=True,\n", - ")\n", - "relaxed_stations.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The combine ranked stations helps create rankings which allow fallbacks, putting the `cz_strict` stations before the `relaxed` stations in order of preference." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "combined_stations = eeweather.combine_ranked_stations([\n", - " cz_strict_stations,\n", - " relaxed_stations.head(10)\n", - "])" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
rankdistance_meterslatitudelongitudeiecc_climate_zoneiecc_moisture_regimeba_climate_zoneca_climate_zonerough_qualityelevationstatetmy3_classis_tmy3is_cz2010difference_elevation_meters
usaf_id
722880120445.35704734.201-118.3583BHot-DryCA_09high236.2CAIITrueTrueNone
722886229359.11092534.210-118.4893BHot-DryCA_09high234.7CAIITrueTrueNone
722956316045.49723133.923-118.3343BHot-DryCA_08high19.2CAIITrueTrueNone
722950418139.29336633.938-118.3893BHot-DryCA_06high29.6CAITrueTrueNone
722885519716.19812434.016-118.4513BHot-DryCA_06high53.0CAIITrueTrueNone
722970627256.36508133.812-118.1463BHot-DryCA_08high9.5CAITrueTrueNone
722976730836.13482133.872-117.9793BHot-DryCA_08high29.3CAIITrueTrueNone
722977853264.95547733.680-117.8663BHot-DryCA_06high16.5CAIITrueTrueNone
722899956358.97357533.975-117.6363BHot-DryCA_10high198.1CAIIITrueTrueNone
7238201066381.17855434.629-118.0843BHot-DryCA_14high769.2CAIITrueTrueNone
\n", - "
" - ], - "text/plain": [ - " rank distance_meters latitude longitude iecc_climate_zone \\\n", - "usaf_id \n", - "722880 1 20445.357047 34.201 -118.358 3 \n", - "722886 2 29359.110925 34.210 -118.489 3 \n", - "722956 3 16045.497231 33.923 -118.334 3 \n", - "722950 4 18139.293366 33.938 -118.389 3 \n", - "722885 5 19716.198124 34.016 -118.451 3 \n", - "722970 6 27256.365081 33.812 -118.146 3 \n", - "722976 7 30836.134821 33.872 -117.979 3 \n", - "722977 8 53264.955477 33.680 -117.866 3 \n", - "722899 9 56358.973575 33.975 -117.636 3 \n", - "723820 10 66381.178554 34.629 -118.084 3 \n", - "\n", - " iecc_moisture_regime ba_climate_zone ca_climate_zone rough_quality \\\n", - "usaf_id \n", - "722880 B Hot-Dry CA_09 high \n", - "722886 B Hot-Dry CA_09 high \n", - "722956 B Hot-Dry CA_08 high \n", - "722950 B Hot-Dry CA_06 high \n", - "722885 B Hot-Dry CA_06 high \n", - "722970 B Hot-Dry CA_08 high \n", - "722976 B Hot-Dry CA_08 high \n", - "722977 B Hot-Dry CA_06 high \n", - "722899 B Hot-Dry CA_10 high \n", - "723820 B Hot-Dry CA_14 high \n", - "\n", - " elevation state tmy3_class is_tmy3 is_cz2010 \\\n", - "usaf_id \n", - "722880 236.2 CA II True True \n", - "722886 234.7 CA II True True \n", - "722956 19.2 CA II True True \n", - "722950 29.6 CA I True True \n", - "722885 53.0 CA II True True \n", - "722970 9.5 CA I True True \n", - "722976 29.3 CA II True True \n", - "722977 16.5 CA II True True \n", - "722899 198.1 CA III True True \n", - "723820 769.2 CA II True True \n", - "\n", - " difference_elevation_meters \n", - "usaf_id \n", - "722880 None \n", - "722886 None \n", - "722956 None \n", - "722950 None \n", - "722885 None \n", - "722970 None \n", - "722976 None \n", - "722977 None \n", - "722899 None \n", - "723820 None " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "combined_stations" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's now take a look at the select station function more closely. Why does it exist? We already explored how easy it is to create an ISDStation object without using this function. It exists to help filter by data quality, which would be too computationally intensive without first filtering and ranking the candidate selections. This way, we start at the top and only check data quality on the stations that really matter.\n", - "\n", - "Suppose we are interested in stations which have data with at least 99% coverage for all of 2017. Here's how we might do it." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ISDStation('722880')" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start_date = datetime(2017, 1, 1, tzinfo=pytz.UTC)\n", - "end_date = datetime(2017, 12, 31, 23, tzinfo=pytz.UTC)\n", - "station, warnings = eeweather.select_station(\n", - " combined_stations,\n", - " coverage_range=(start_date, end_date),\n", - " min_fraction_coverage=0.99,\n", - " rank=1 # if you want the nth viable choice (e.g., to check fallbacks for data coverage, set rank=n)\n", - ")\n", - "station" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "What if you want to check that the selected weather station is within a certain distance (let's say 5 km). Use the distance_warnings parameter to list out what distances should produce warnings during station selection." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "rank 1\n", - "distance_meters 20445.4\n", - "latitude 34.201\n", - "longitude -118.358\n", - "iecc_climate_zone 3\n", - "iecc_moisture_regime B\n", - "ba_climate_zone Hot-Dry\n", - "ca_climate_zone CA_09\n", - "rough_quality high\n", - "elevation 236.2\n", - "state CA\n", - "tmy3_class II\n", - "is_tmy3 True\n", - "is_cz2010 True\n", - "difference_elevation_meters None\n", - "Name: 722880, dtype: object" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "combined_stations.loc[station.usaf_id]" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[EEWeatherWarning(qualified_name=eeweather.exceeds_maximum_distance)]" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start_date = datetime(2017, 1, 1, tzinfo=pytz.UTC)\n", - "end_date = datetime(2017, 12, 31, 23, tzinfo=pytz.UTC)\n", - "station, warnings = eeweather.select_station(\n", - " combined_stations,\n", - " coverage_range=(start_date, end_date),\n", - " min_fraction_coverage=0.99,\n", - " rank=1, # if you want the nth viable choice (e.g., to check fallbacks for data coverage, set rank=n)\n", - " distance_warnings=[5000]\n", - ")\n", - "warnings" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'distance_meters': 20445.357047313344, 'max_distance_meters': 5000}" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "warnings[0].data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can be confident that this station `'722880'` has weather data for the requested period. The station object has plenty of metadata for us and can even serialize it into JSON:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"elevation\": 236.2,\n", - " \"latitude\": 34.201,\n", - " \"longitude\": -118.358,\n", - " \"icao_code\": \"KBUR\",\n", - " \"name\": \"BURBANK-GLENDALE-PASA ARPT\",\n", - " \"quality\": \"high\",\n", - " \"wban_ids\": [\n", - " \"23152\",\n", - " \"99999\"\n", - " ],\n", - " \"recent_wban_id\": \"23152\",\n", - " \"climate_zones\": {\n", - " \"iecc_climate_zone\": \"3\",\n", - " \"iecc_moisture_regime\": \"B\",\n", - " \"ba_climate_zone\": \"Hot-Dry\",\n", - " \"ca_climate_zone\": \"CA_09\"\n", - " }\n", - "}\n" - ] - } - ], - "source": [ - "print(json.dumps(station.json(), indent=2))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Best of all, now we can pull temperature data directly." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7AAAAEHCAYAAACX7aomAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XeYW2eZN/7vo95G0qhM7x53J66xU+yENAIEQiBA6KFsyFIWWPjx8rKUZdkfS7lY2AJLZwkbEsgmgYQQE9ITx4kdlzjuZXrXqIw06u15/zg6mqKukUYj+f5cV67YMyrHM6PRuc/dGOcchBBCCCGEEELISiep9AEQQgghhBBCCCH5oACWEEIIIYQQQkhVoACWEEIIIYQQQkhVoACWEEIIIYQQQkhVoACWEEIIIYQQQkhVoACWEEIIIYQQQkhVoACWEEIIIYQQQkhVoACWEEIIIYQQQkhVoACWEEIIIYQQQkhVkFX6APJhsVh4V1dXpQ+DEEIIIYQQQkgZHD582M45t+a6XVUEsF1dXTh06FClD4MQQgghhBBCSBkwxobyuR2VEBNCCCGEEEIIqQoUwBJCCCGEEEIIqQoUwBJCCCGEEEIIqQoUwBJCCCGEEEIIqQoUwBJCCCGEEEIIqQoUwBJCCCGEEEIIqQoUwBJCCCGEEFJhsTiv9CEQUhUogCWEEEIIIaSCDg85seFrf4FtNljpQyFkxaMAlhBCCCGEkAoatPsRisYx5gpU+lAIWfEogCWEEEIIIaSCApEYAMAbilb4SAhZ+SiAJYQQQgghpIKCYgAbpACWkFwogCWEEEIIIaSCxAB2ljKwhOREASwhhBBCCCEVFKAMLCF5owCWEEIIIYSQCgqE4wCoB5aQfFAASwghhBBShfxhCnZqBQ1xIiR/FMASQgghhFSR/mkv/ubuQ7jk63/F/j57pQ+HlEBI7IGlEmJCcqIAlhBCCCGkSvz+lWG8/gfP46U+O+o1cnzjT6cQi/NKHxZZIjED66MMLCE5UQBLCCGEEFIFDg+58JU/nsDlPWY8+4Vr8fVbNuLM5CweODxS6UMjS0QlxITkjwJYQgghhJAVzjYbxCd+exgtRjV+9N5tsNYpcfMlzdjWYcT3/nqOAp8qFwjTFGJC8kUBLCGEEELICvfPj56GOxDBT96/HQaNHADAGMOXb96A6dkQ/nh0rMJHSJYiGBWmENMeWEJyK2sAyxj7DGPsBGPsJGPss4mPmRhjTzDGzif+X1/OYyCEEEIIqXbHRmZww/pGrG/WL/j4pW0GAIDLF67EYZESCYoZ2FCkwkdCyMpXtgCWMbYJwJ0AdgLYDODNjLFeAP8XwFOc89UAnkr8nRBCCCGEpBGOxjHq8qPHqkv5nFwqgUzCkj2UpDole2CphJiQnMqZgV0P4ADn3M85jwJ4DsDbAbwVwN2J29wN4NYyHgMhhBBCSFUbdvoR50C3RZP282q5FMFIfJmPipTS/CFOnNNUaUKyKWcAewLAHsaYmTGmAfAmAO0AGjnnE4nbTAJoTHdnxtjHGGOHGGOHpqeny3iYhBBCCCEr14DdBwDotqRmYAFAKZdSBrbKBRPfv0iMIxSlixGEZFO2AJZzfhrAdwD8FcBfALwKILboNhxA2stMnPOfcc53cM53WK3Wch0mIYQQQsiKNmD3AgC6zdq0n1crJMkAiFSnYCSGOqUMAK3SISSXsg5x4pz/knO+nXN+NQAXgHMAphhjzQCQ+L+tnMdACCGEEFLNBux+mLSK5PThxYQSYgpgq1UkFkckxmGpUwKgPlhCcin3FOKGxP87IPS/3gvgEQB3JG5yB4CHy3kMhBBCCCHVbMDuRbclffYVAFRUQlzVxIsPVl0igKUMLCFZycr8+A8yxswAIgA+yTmfYYx9G8D9jLGPAhgC8K4yHwMhhBBCSNUasPuwZ3XmdiqVXIpAmALYaiUO4LImMrCzlIElJKuyBrCc8z1pPuYAcH05n5cQQgghpBb4QlFMeUJZM7BquRQzAdofWq2SGdg6ysASko+ylhATQgghhJDiDTrECcTZA9ggZWCrllj+bdEpAADeEF2MICQbCmAJIYQQQlaoQbsfQPYAViWXUA9sFRPLv600xImQvFAASwghhBCyQokrdLoyrNABALWChjhVs9QSYvpeEpINBbCEEEJIDRiw+yCsVye1pN/uQ7NBBbVCmvE2KlqjU9XEiw8GtQIyCaMSYkJyoACWEEIIqXIjTj+u/9dn8ZcTk5U+FFJig3Zf1uwrQAFstRO/d2q5FDqVjEqICcmBAlhCCCGkyp2dnEWcA8fH3JU+FFIC3lAUn/jtYbz1Ry/i+JgbXVn6XwEh8InEOKKx+DIdISklMQOrVkihU8owS1OICcmKAlhCCCGkyomTavumvRU+ElIKr43O4LHjk5Aw4E2XNON9uzqy3l4tF8qLg1EKYKuRuAdWLRcCWMrAEpJdWffAEkIIIaT8hhzCpNoLNgpga8GUJwgA+Nd3bkaPVZfz9qpEf2wgHINOSad21UacQqyWS1GnktEeWEJyoAwsIYQQUuXEDOyQw48IlZFWvUl3CADQqFfldXuVTDidoz7Y6iSWECvlEiEDSwEsIVlRAEsIIYRUuSGHHwqpBNE4T2ZjSfWa8gRRp5RBm2c2VZxQTKt0qlMwEgNjgFImgU4lpxJiQnKgAJYQQgipYuFoHKMuP3b1mABQH2wtmPIE0WjIL/sKzOuBpQC2KgUjMajlUjDGaIgTIXmgAJYQQgipYmMzAcQ5cP26BgDUB1sLJj1BNOqVed9eJZ/rgSXVJ5AIYAEIPbCUgSUkKwpgCSGEkCom9r9uajWgSa+iDGwNmHIH8+5/BeYFsJSBrUqBcDz5PdQpZQhEYrQSiZAsKIAlhBBCqtiQXQhgO81a9Dbo0EcZ2KoWj3PYZkNoKiCAnSshpqCnGgUjMajkwim5OEXaF6KLEYRkQgEsIYQQUsUGHX5oFVJYdAohgJ32gXNe6cMiRXL4wojGOZoK6IEVgx/qga1OwUgsOYhLpxIC2NlQpJKHRMiKRgEsIYQQUsWGHD50mrVgjGGVVQtvKIopT6jSh1VSA3YfPn//MZye8FT6UMpO3AHbUFdABpamEFe1BT2wiQwsrdIhJDMKYAkhhJAqNuTwo8uiAQCsatABqL1BTk+emsKDR0bx5v/ch2/tPV3T/YGTbiGALSQDS1OIq1sgEpvrgVWJJcQUwBKSCQWwhBBCSJWKxuIYcfnRadYCAHqtQgBba4Oc7L4QFFIJbt3Sip8+14/HT05V+pDKZjKRgS2kB5aGOFW3QHgugBV3/87SJGJCMqIAlhBCCKlSE+4gIjGOLrOQgbXWKWHUyPH8uekKH1lpOb1hmHUKfPNtmyBhwNnJ2i0ltnmCkDDAolPkfR+lTALGgCCt0alKoWicSogJKQAFsIQQQkiVElfoiBlYxhg+dnUPnjpjwxOnaidL6fAJAaxKLkVbvQZ9icnLtWjSE4RFp4RMmv8pGmMMKpmUMrBVKhCevwdWDgBwB2iIEyGZUABLCCGEVKlBhx8A0JnIwALAnXt6sLaxDl97+ETNZHEc3hDMWiUAYJVVi/7pWg5gQwX1v4rUCimt0alSgXlrdCw6BSRM2AVMCEmPAlhCCCGkTH7xQj/2nbeX7fFHXX4opBI0zptYK5dK8C9vvwQT7iD+7YlzZXvu5WT3hmHWCiW1PVYdBuxexOO1uSrI5gmisYD+V5FKJqEMbJUKRmJQJSZJy6QSNOlVGJ0JVPioCFm5KIAlhBBCyiAe5/ju42fx1YdPlC3YGnUF0FqvhkTCFnx8e2c9btrYiL0nJsvyvMuJcw6HLwSzTgxgtQhG4hh31+YJ/qQnWNAAJ5FKQSXE1Sge5wt6YAGgtV6NcQpgCcmIAlhCCCGkDGyzIYSjcQzYfXj6jK0szzHq9KOtXp32cxuaDRh3B6p+tYo/HEMwEodZJ5YQi5OWa6+MOBiJYcYfQaNeWfB91XIpQlX+vb4YBaPC92x+ANtiVGN8hkqICcmEAlhCCCGkDEZcQn8qY8CvXhwoy3OMugIZA9huqxacC3tiq5nDGwaAeSXEwsCq/hpbFQQAU4kVOsWUEKvllIGtRoHE5Gi1YmEAO+EO1GyZPCFLRQEsIYQQUgbDicDx9h3t2N/nwKnx0q5+8YejcPjCaKvXpP18j0UI9Abs1R3oOXwhAIAlkYG16pSoU8lqcpDTlEf4txYzxEkllyaDIVI9glFh8JZKNq+E2KhGJMYx7Q1V6rAIWdEogCWEEELKYNjpB2PA51+/Fmq5tORZ2FGX0COXKQPblQhg+6t85UwyA5vogWWMoceqQ18NZmAnExnYonpg5VIEaApx1REvOqgUCwNYABijPlhC0qIAlhBCCCmDEZcfzXoVrHVKXLvOikODzpI+/miiRDlTBlanlKGhTomBKs9UihlYsQcWqN1VOhOJgKWxyDU61ANbfcQe9cU9sABokBMhGVAASwghhJTBiNOPdpMQXJq0CrgDkZI+vpiBbTelz8ACQLdFi4Eqz8DaF/XAAsIgp0lPsGb23IpGXH4YNXLoVfKC70trdKpTIG0AK1zAGHNRAEtIOhTAEkIIIWUw7PSjIxHAGtRyeIJRcF66oSwjTj+UMgmsuswTa3us1R/AOrxhaBVSqOad4K9KDHKq9uzyYsPOQPJnplBqWqNTlcQMrEo+d0pep5JDr5JRBpaQDCiAJYQQQkosGIlhyhNKZmANajlicV7SjKE4gZgxlvE23RYtHL4w3P7SZn+Xk7ADdmGQ3pNYpdNf5QOqFhtx+tGeoSQ8F7VcWvUrky5GyR7YeRdoAKGMeIxW6RCSVlkDWMbY3zPGTjLGTjDG7mOMqRhj3YyxA4yxC4yx3zPGFLkfiRBCCKkeYnmvmE0zqoW3ulKWEY+4/Bn7X0XdFiHQG3BUb6bS4Q0nBziJOs0aSBjQZ6udADYW5xhzBZIXPQqllEsRjMSLXr0yYPdh0z8+jhNj7qLuT4qTLCFWLAxgW41qysASkkHZAljGWCuATwPYwTnfBEAK4N0AvgPgB5zzXgAuAB8t1zEQQgghlTDiFAYsicGIXi30NM6UMBOabQesqLsGVuk4fGGYtQszsEqZFE16VfJCQS2Y8gQRjsWLLyFOZPBC0eImET99xgZvKFryYWMku3RDnAAxA1s7P9+ElFK5S4hlANSMMRkADYAJANcBeCDx+bsB3FrmYyCEEEKW1XAigJ3fAwsAnhJlYGeDEcz4IzmzdR0mIVNZzb2iDm8IFl1qsVazUY1xd+2c4C/+mSmUOtFDWWwZ8cv9DgBAXxX/rFSjYGL10eIS4tZ6NdyBSM0NKiOkFMoWwHLOxwB8D8AwhMDVDeAwgBnOufhqHAXQmu7+jLGPMcYOMcYOTU9Pl+swCSGEkJIbdvqhlkuTgZcYwJaqhDjXDliRQiZBu0mDAYe/JM+73OJxDqcvtYQYAJoNKky4a6dHcMkBbKIEtZhBTvE4x8EBIfNai/t1V7J0U4iBuVU6E5SFJSRFOUuI6wG8FUA3gBYAWgBvyPf+nPOfcc53cM53WK3WMh0lIYSQbI4Ou4ruqbuYCSt05gYsGTXlCWDzGfgjrNKpzqDEE4wgGucpJcSAcII/4Q6WdLJzJY04/ZAwoNlY+A5YYC6DV0wAe2ZyFu5ABDqljALYZSYOcVLKFp6StyZ+DkYpgCUkRTlLiG8AMMA5n+acRwA8BOAqAMZESTEAtAEYK+MxEEIIKdKpcQ/e9l/78cTpqUofStWZv0IHmMvAzpQsgBWydbkysEAigJ32VWWgl9wBmyEDG47G4fCFl/uwymLE6UeLUQ25tLhTs2QAG54LYMdmAvjqH08gFM0e1B4YEMqHb93agilPCLPB6p1aXUkT7kDOr/ViwUgMKrkEEsnCaeKtRuH3Bw1yIiRVOQPYYQCXM8Y0TLgEfT2AUwCeAfCOxG3uAPBwGY+BEEJIkcRppENVPMG21KKxOL700GtZJ7VyzhMZ2LkAVqOQQiZhJcvAiiXKJm3uQf6rrDr4wrGqHHjk8IYAIG0GttkglljWRhnx4osehZob4jQXQP35tXH8z8tDODaSfbLwy/0OdJg02LNaqHjrpz7Ygj1zxoZrvvss/ulPpwq6nzcUhVYhS/m4tU4JmYRRAEtIGuXsgT0AYVjTEQDHE8/1MwBfBPA5xtgFAGYAvyzXMRBCCCne6UkPAGC8RgKEUth3wY77Do7gr6cyZ6WdvjB84diC8l7GGIwaeUkCWM45njljw5Z2Y9YdsKJNrQYAwMlxz5Kfe7k5fZkzsC2JEstaGeQ07AwsKYCdy8DOTSE+NyWUA5+eyPy9j8c5Dgw4savbhFWJ/bpURlyY585N4657DiMaj+ORV8fhD+c/eMnlDydbDOaTShiaDCr6/UtIGmWdQsw5/0fO+TrO+SbO+Qc45yHOeT/nfCfnvJdz/k7Oeaicx0AIIaQ4ZyZmAVAJ23wPvzoOAJiezXxSOZ3IGjbqF/Yy6tWlCWCPjsxg0OHH27alnYGYYl1THaQShpPj1bff054lgBUzsJM1MMjJH47C7g0VvQMWmMvAzu+BPT8lvIazBbDnbLOY8UdweY8ZnWYNZBKGCzW0X3ex/mkv1n11b/Jrs1Q2TxAf+80h9Fp1+PH7t8MbiuLxk5N539/li6Bek76SosWoxlgVVk4QUm7lXqNDCCGkCnHOcUbMwNZIhmup/OG5E9MpT+Zrr+7ErtfFWRWDWp783FI8dGQUSpkEb9zUlNftVXIpVjfocDxL2bOIcw5bluB8uYklxKY0J/hmrQIKqaQmfj6TQ7mWEsAqFq7Ricc5zttyZ2BfGXQBAHZ2myCXStBp1qzYDOzhIdeCHt9inJrwIBiJJ782S3V8zI1QNI5vvHUjblzfiHaTGg8ezn+8i8sfRn2GVoA22gVLSFoUwBJCCElhmw3B5Y9ALmU102O4VE+cmoI/HINJq8ga5ImDmsTBTSJDCTKw4Wgcj742gZs2NqFOlVp2mMnGFgNOjLmzDnI6NzWLd//sZez6l6dweMi1pOMsFYc3jHqNHLI0g40kiRLLWvj5HHYsbYUOkDqFeGwmAH84Br1KhrNTs4hlmCY+MROAVMLQmljbssqqW5G7YIccPtz24/24/9DIkh5HzNg7SzT8Swz2ext0kEgYbtvWhhf77HlXrsz4I6hPU0IMCBnYSU8w4/eOkIsVBbCEEEJSiBmby3vMcPjCyazOxeaF89P4+D2HcXLcjYdfHUezQYXr1zUUlYE1liCAfeasDTP+SN7lw6JLWvWwe8OwzaY/7r+cmMCb/v0FnJ2ahVYhw69eHFjScZbK9GwIFl3qACeRsAu2+jNUS90BC8wFsOJr9VyiRPbmS5sRjMQxmGEYm90bglmrSE7BXdWgw5DDh0gsnvb2lfL8eTsAYMC+tOBa3B084y9NANs/7YNZq4AxUSVw27Y2cA784WjuLCznHE5/OGsJcSzOMeWp/os0hJQSBbCEEEJSnJkUTn6vXdsAYO6k72Lzk+f6sPfEJN7yn/vw7FkbbtncgmaDCg5vCNEMJ/gzAeHE2LjopHSpGdhoLI57Xh6CRafEnl5LQfcVBzllmp780JExNNQp8fTnX4d3X9aOv5yYzNhbyjmHZ5nWrEx4gmgyZN6L2mJU18SQm2GnHzqlLGMmLh/qRWt0xAFOb9ncAiBzGbHDG15wkWCVVYdITJikvZLsOz8NYG6FVLEmPWIGtjQ/w33T3uTwK0AoA9/WYcSTeawfC0RiCEfjKb8rRK2JNVk0h4CQhSiAJYQQkuLMhAfNBhXWN+sBXJwnUA5vCC/3O/HBKzrxwSu6UK9R4J072mHVqxDnyLh/1B2IQCZh0CqkCz5uUMvhCUYQL6IccMYfxof++xW8cN6Oj13dnbakNpv1zXowBpwYSx/EHBudwc5uE0xaBT54RRfinOO3B4ZSbnd4yIW3/dd+7Pzmk8syPGnKHUwZhjVfs0GFqRoosey3+9Bh0uQ1VTqTuQyscGHl/NQsGvVKbO+sh0zCMgawdm8Ilrq5ALa3QZxEvHLKiKOxOPZfEHbVLnUd1GQZMrA9Vu2Cj7WbNHmVKLsS1RombfoLF62JSdvUB0vIQhTAEkIISXFmchbrmurmVpVchCdQT5yaQizO8a4d7fj6LRtx+Ks3ordBh8bEyb4tQxnxjD8Cg1qeEozo1XJwDswG81+xAQCRWBy3/Xg/Dg448d13XIqPXb2q4H+LVilDj0WLE2kmEU+6g5jyhLC53QgA6DBrcN3aBtx7YHjBTtF//etZ3Pbj/Rhy+BCMxPHcOVvBx1GIWJxj2htCU7YA1qhGNM5h96b/XpwYcy9YaWKbDeK+g8N4+NUxHBxwlvyYi3Vq3IMNLfolPYZUwqCQSpI9sOdss1jTWAelTIpVVh1OT6Sfumv3hmGZN+VZDMZW0iTiY6NuzIaiaDaoMOL0Z+3lziXZA1uCAHbGH4bDF16QgQWEi1UzeQxsc/nSV2uIxEnbtVBlQEgpUQBLCCEZ7D0+gUODK+ckd7mEo3H0TXuxrlmfLN+s5ROoWJzj968MwxdaGFjuPTGJDpMGGxcFFg2JgCpTX9pMIAJDmlJQ8SS10DLiUVcAfdM+fPXN6/GuHe0F3Xe+Ta0GnExTQnxsdAYAkgEsAHzoqi44fGF8/4lz4Jzj4VfH8J9PX8Bt29qw74vXoUmvwvPn7EUfSz7s3hBicY7GbCXEhswXWFy+MG790Yv4xG+PIB7nCEZieN/PD+BLDx3HZ373Kt7105fwWuLfXkk2TxB2byjl56wYKrkEwUgM8TjHBZsXqxvqAADrmuvSZmA5Fy4SWOeVEOtVcuhVshXVd/nC+WkwBrxjext84VhewWE68/tJXSWYCC5mqRdnYI15Vlu4EkF0ph5YrVIGo0aOsZmVVc5NSKVRAEsIIRl87ZGT+NEzFyp9GMuu3+5FJMaxrknI3lh0ypoYlJPJvgt2fPHB4/jSQ8eTmR23P4IXL9jxxk1NKZnURn0iA5thIJLbH4FRnRrAilOJxR7ZfIlf+8VZnkJtajFg3B1MrqYRHRuZgUzCsKF5LoDa3WvBO7e34afP9ePO3xzCFx98DZd11eNbb78EWqUMe1ZbsO+Cvaylu2KmLGsGNpGhStejfXDQiWic49mz0/jFvn78y2Oncd7mxU/evx1//vRuSCUMfz2Zu0+x3E4mAsv5X/9iqRVSBCMxjLj8CEbiWNsk/Mysb9Zjwh1MKZudDUURjsZT9uxadMrkPuOVYN95Oy5tNSR7uYstI3Z4Q4gmfmZdJZhCLE4gXvzaTFZbhLJXW4hBdLbe59Ya6fPOx4w/TOXSJC8UwBJCSBqeYATTs6GLcnjR2cQAp7VNQvamxaiq6ZMKMcv+yLFxPHB4FADw5OkpROMcb7ykOeX2Fp0SjGXLwIbTlgSKAWyhGVhxTUxzYs1JsbZ1ChnWD/zyIP5yYjKZHTo2OoP1zfpkDyUAMMbw3Xdcii++YR2ePG2DQS3Hj963DQqZcNpw9Ror3IFIMnsLCBnT9/78ZfzdfUeXdJwicdhOtgA2W4n7gX4nlDIJbtzQiO/85Sx+89IQ/mZ3N96wqQkbWwy4rKs+r0E75XZqXAhg15ckAyuFJxhJDnBa3Si8hsVe9lOLsrD2xEWYxZOeLTplyoWOSvEEIzg6MoPdqy1orxemNI8UOchJ/H3eVq9OZj+Xom/aC7mUoa1+4WtTfK17crzWxQsKmUqIAXFQWe3+/p3vG4+ewjXffQb/9uS5FTcFm6wsFMASQkga/YnSsIsxgBWv9osrPVoM6pr+Orwy6MTGFj2u6DHjaw+fxGd/dxTffOw0WgwqbG4zpNxeLpXArFVkzsAGIik7YIG5tToFB7CJDGy2QC4f2ztN+MHtm+EPR/G39xzG9584h3ic47URNza3p/47GWP4+OtW4cGPX4H777oCDXVzz7+71wLGgOfPCZNhT0948NYfvoj9fQ48fnIS4ejSTz7FCwSNhsxrdAxqOdRyadqfzwMDDmzrqMf33rkZLUYVNrXq8YU3rE1+/ob1jTgzOVvxabunxj3oMGmgL2CvbyaNehUeOz6JLzxwDACwOjGQaVMiOD46vLBk2u4VAqjFAaxZp0h+rtJeGXAiFufY3WtFm0kIFIudRCz+nKxv1mM2GF1ykNQ/7UOXWZsyVC1ZbZGjTNnlS79ya75WoxpjSxxcVS1GnQFIJAz/9uR5vPtnL2ec9E4IBbCEEJJGf6I0zB2ILBgCczFweENQy6XQKGQAgGajCuMzgSUNTlmpwtE4Xh2Zwa5uM35w+xZolTK8cN6OK3rM+I/3bM04FdZap4ItUwbWnz6ALToD6w6iXiOHetFU42K8bWsbnvzcNXjrlhb89Pk+PH3GhtlQFJvbjBnvs73ThE7zwh6/eq0Cl7Ya8MJ5O17qc+CdP3kJ0Xgcn7x2FcLReEqmb74XL9jxXCLwzWbSHYRMwmDRZg5gGWNoNqbugnUHIjg14cGuHhMMajke/+zVePDjV0Ipm/saXr++EQDwVIWzsCfH3SXpfwWAX9yxA19/ywY01qmwvbMedYmg2KxTYkOzHi+cX/h1F4dfpcvAZhqMtdxOjHnAGHBpmwF6lRwGtbzoEuLJxM+JWK5dbC+tqG/am9L/CuTf7+7yh1GnkkGeZap4i1GF2VB02VZXVZLdF8KN6xvxhZvW4vCQC4MO6v0l6VEASwghafTPWyFxsfQfiRy+MCx1cyVtrUY1/OEYPIHaC+RPjLsRjMRxWVc9mgwqvPSl63DoKzfgR+/bhh1dpoz3a9QrMTWb+nMRjcUxG4ymzajkm5VZbMIdTPZ6loJMKsGX37QeCqkEn/9fIVO3pT1zAJvJ1WusODrswh3/fRDNBhUe/uRufODyLgDAkSFX2vuEo3F86t4juONXB/G9x89mHXIz6QmioU4JiST7aplWoxpnJ2cXXGA5NOgE58CubjMAQKOQLQheAaDbokVvgw5Pni7vNOVsvKEoBh3+kvS/AsIApg9d1Y3H/14I2Ofbs9qCw0OuBcPKkgFs3cISVrNOgRl/ZEWUcZ4cd6PbooVWKVxQa6tXF501n/SEoJBKsCqRmV5KGXEkFseww5+2Nz3fi1UufzjjACdsAhrnAAAgAElEQVRRq1GohLkYyoidvjBMWgV2J/Zciz3GhCxGASwhhKTRb59746zlAUbp2L0hmOdlvcTgqRb7YMX+1+1d9QCE8uB8dnE21CnTrtHxJFbkpBvipJJLoZBJcvbFLSYEsEsrH16sQa/Cp65bDXcgAp1Shp4iBkRds8aKOAfWN9Xh/ruuQJNBhSaDCi0GFY4Mpw9gnzs3DZc/gh2d9fjhMxfwd787mjGzP+UJZp1ALHrLpS3om/bhpT5H8mMHBpxQSCXY2pE9ML9hfSNe7ndULLslTgbe2FqaADabPautiMT4gvVBdm8YjAEmTeoQJwB57TItt5PjHmxsmStxb6tXLykD22hQwqwV/r1LGeQ07PQjGudpXzv5B7CRrAOcgOx93rUkGotjxh+BWadIZrUpgCWZUABLCCFp9Nl8WJsYgDJxkWVgF++FFE+gajGQf2XQhS6zZkF/Zz4a9arkmpf5xBPWdGt0ACGwLaYHttlY2gAWAD6yuwvdFi22d9ZDmiPLmc6OLhPu+egu3Hvn5ajXzv28bO2sT+m1FP3h6CjMWgXu+9jl+LvrevHn1yZwdCT9bSfdwbz6fm/Z0gKLToFf7BtIfuxAvwNb2o0LBlOlc+OGBkTjvGJlxOIApw3NqT3Ipbajqx5KmQTPzysjtntDqNcoUno4xQC20mXE4lTa+SXW7fUajLqKa2mYcAfRrFcns55LycCKVTqr0pQQ5ztxfMYfXvDaSac1Mbyt1vtgxb28Zq0CdSo5GvXKFbWLmKwsFMASQsgisTjHgMOHK1YJ5YfjNRi4ZeNYlIFtSZxAjdfYICfOOQ4NOrOWCmfSUKdEnCNlUmtyqqg6/UmpocAANpDYeVnKEmKRUibFQx+/Ev/x7q1FP8bu1ZZkaadoW0c9xmYCKVOa3f4Injxlw1s2t0AuleCua1ZBp5Th7v2DaR97yhNCYx4BrEouxfsv78TTZ2y4YPPCG4rixLjQ/5rL1vZ6dJk1+PX+oYr0eJ8cd8OsVSRXM5WTSi7Fzm4T9p2f299rnw0tuFglEj9W6UFOYoA/P4Btq1cjEInBUUT2dNITRJNBhXqtEGA6fcVn3sUyZnHY3XwquQQKmSTna93py11CbNEpoZBKMFbjF1LFbL8p8d6zyqpL7tklZDEKYAmpEfcdHMZHfv1KpQ+jJozPBBCOxrGuqU7YgVrjJw7zxeMcTl94wV5Iq04JuZRhtMLTWkutb9oHlz+CyxLlw4VoSARWU4vKiGdyZGANanlBPbBi1rvUJcSieq0i47EWa1uibHdxH+yfj08gHIvj7dtaAQA6pQzv3NGGx45PwLaon9gbisIbiqIpz3/3+y/vhEImwVf+eBy3/HAfYnGOq9dYc95PImH4yO5uHBuZyVj2XE6nJjzY0KLPq2y9FPastuC8zZvcsWv3hlIGOAFzGdhKr9I5OZ66I7ctsUqn0DJizjkm3IkAtgQZWLs3BKmEpQ1AGWMwqOV5rNGJZJ1ADAg/o+IgvVrmTFwsEd97eht06Ld5a3J4IFk6CmAJqRF7T0zi6TM2BCOxSh9K1Usup2/QocWowkSGabO1yBOMIBrnMM87qZVIGDa1GvDyvN65WiD2v15WZAYWQErg5U4Ep+l6YIHCM7Di2o9yZGDLZWOLAQqZZEFAyDnHg0dG0dugwyWtc+WyH7yiC5EYx70Hhhc8xmTy351fAGvRKXHbtla83C/0vv70A9vz/r6+Y3sbDGo5fvHCQO4blxDnHH02H1Y31C3bc+5ZLQT14jRioV0gNYA1JzOwlQ5g3WjSqxb8Pmo3iQFsYRfUXP4IwtE4mvQqqORSqOXSJfXACrMCFBmHjOV6rYejcXhD0ZwZWEBYZVaLMwjms/vmSogBIQM7G4piOsO6MnJxowCWkBohllpVeqdhLRDLlnosWjQbVJio8ROH+eb2Qi48qbpmjRWvjc4s6YRvpXll0AWzVoFuS2oPWy6NmTKwYglxhpNSg6a4ALalDD2w5aKQSXBJqwFHEn2wDm8IH/n1Kzg85MJ7dnYsyDZ2W7R43VorfntgGC+cn05OyE3ugC1g9+2Xb96A++68HI99eg9u2tiU9/00Chneu6sDj5+cxPAyru1w+sIIRGJoNy3fxQmxqmTfBaGMOFMGVqeUQSmTwFHhEmJhgNPCAVet9cLXa8RZ2O/lxdUMJq0CriWs0ckU/ItyVVuI/bG5hjgBQpnygN1X09lIZ+JiiWleAAsAF2iQE0kjawDLGGtmjH2WMfYgY+wlxtjTjLH/YIzdxJar3oUQkpNtNpi8Uj5Ee9OWrH/aC4NaDpNWgWaDOhlEXAzEkkHzot2bV6+xgnMkT3xrwaEhJ3Z01RdVvimeuKZkYBOrhvQqWcp9AORVVjifePGkkEBuJdjWYcThIRcu++aTeN33nsWLfQ780y0b8ZGrulJu+4nX9cIdiOADvzyILd/4K544NZXMwOYzxEmkU8pwxSpzzrU76dxxRRckjOGeA0MF37dYI4kS2Pb61B7KcmGMYc9qC/adt8MXisIfjqWs0BFvZ9EpMV3BDGwgHEPftDclgNUpZajXyDFSYAZWvCgilqUbNfIllxBb6jIHsLkGtrkS/be5hjgBwpRqpy9c0+9FTp8wEVu8+LeqITGJmAY5kTQyBrCMsV8AuCdxm38H8GEAnwOwD8CtAF5kjO1ejoMkhKTinCevxorZV0AY7U+Wpn/ahx6rFowxtBhV8F4kS+QBJAejLD6p3dxmhEEtx3PnptPdrerYPEEMOfxFlQ8DQpbRrFWk6YENo04pS5nqKjKo5ZgNRRHNc7/muDsIs1aRc5ruSvOR3d341LW9uH5dA25Y34iHP3kV7riyK+3Fgp3dJhz+yg24+yM70WnW4luPnU72++XbA7tUTQYVLusyLVjFU25itUzbMmZgAWB3rwUOXzhZRmzRpg/CLDpFRTOwZ6dmEefAhpbUCc0tRnXyIke+FpfjCxnYJQSwsyFYsgSfuUqIxefOp4R4U6Ls/viYu8CjrB4OXxgmjSI5Eb1Jr4JWIaVBTiSt9JeIBf/JOT+W5uOvArifMaYC0FGewyKEZBOKxrDnO8/g869fg9sv68CpxC5BhUxCAWwJ9Nu92N0r9IqJJzsTM0Hom0o77GYlypSBlUoYdvda8ML5aXDOl23oTLm8Mij0ZxYzgVjUbFSl9OG5/ZGsQ5HEzO20N5RXX+ukO7BsQVwpNRvU+P9uWpv37etUclyzxorA69fgb+85gnsPDsOgli9r4L6t04ifPtePQDgGtaL8zytmEJczAwsIg5wA4A9HxwCkXqwSmXXKlEnSy+GhI6N4ud+R7H1cnIEFhOCm0Gzk+EwAMglLtkcYNYqiW24457D7wlkzsPocAexcu0Hu95UNzXpIJQwnxtwFlcdXE4c3nCwfBoQqgFUNOtoFS9LKVkKctU6Mcx7knJ8r8fEQQvIw5PDDNhvC/x4aBSBkYNvq1Vhl1VEAu0S+UBRTnlBykXpyiXyBq3RicY4D/Y6q61ma9gplXOn6sq5ZY8WUJ4SzU7MVOLLSemXQCZVckvbkOF/rmvQ4PeFZ8D2eCWSfKiqu3Mi313LCHayqAU5L9foNTVjXVCdMi13msuntnfWIxjleG02/l7bURl0BmLSKlDVE5dagV2FtYx2eOZPIwGbo46xEBnbKE8SXHjqOx45PYn+fA70NOrTVp/78N+hVKeX7uYy6hH3KYnWESSMvugd2NhRFOBpPu4JIZFDLMRuMpuyKFonPnU8GViWXYnWDrqYzsE7fwgAWSKzSoRJikka2APZP4h8YY/cvw7EQQvIk/kI/POyCbTYorGJo1qPTpMGQg8ptlkK8qi8uj2+al4EtxHcfP4Pbf/YyHn51POVznHN4E8NqVhqHN4R6jSJtCeyeNULm5vkaKCM+NOTE1vZ6yDOU+uZjY4sedm8YtnlTMt2BCAwZJhADQKdZCGCH8rzQNOEOVtUAp6WSSBg+e8NqAEDjMmeet7YL65TE4VPlNuL0pw3OlsOe1RaEE2XsmQJYs04Jhy+0rBfhfvTMBcTiHI99eg/O/v9vxBN/f3Xaao8mvQp2bxjhaH6l+IAQwLYZ57Ld9VoF3IFI3uX889kTr/lsQ5zEC1mZet7Fvaf5BLCAUEZ8YsxddRdF8+XwhRasbwOAVVYtxt3B5HA3QkTZ3rnn/8ZYXe4DIYTkTyyp4Rx45NVxDNh92NCiR4dZgxFXAPEMV3xJbuJV/Qa9cGLSWKeEhAmlnPnae3wCP32uHwDwyLGFAWwsznHX/xzGVd9+elknnubL4Q0n1xgs1mxQY02jDi+cr+5BTt5QFKfGPUXtf51vY6I37+T4XFZkxh+GUZ35hLTFqIZUwvL63vvDUbgDkaosIV6K129owlW9ZuzqLr68uxj1WgV6LFocHlqefbCjrsCylw+LdifKiAGkBA0ii06JSIzDE1ie4GHU5cd9B4dx+2Xt6Ehc6MnUqtConyvFL+Tx518wEAPH+WW+g3Yf9h6fyPlYc9Pas08hXvz48834w1DJJXmXq29KXDCbrNG1bg5fOKV1pbdBmERMZcRksWwBLM/wZ0JIhfVN+9BiUKHLrMFPnusH50KPTIdJg3A0jqkCS6vIHFtiKI849VUmlaChToXxPPutTo678YUHXsPmdiM+dGUXnj83vWD1zDf/fBp/PTWFQCSGT//uKCJFXP0vp3RXwefb2GLAgL26s/xHh12I86X1vwLA+mZhf+fJsbkhau5A9h5YuVSCFqMqr1L/8UTWv+UiKiEGhCzsb//mcnzy2t5lf+6tHfU4OuwqSZbrc79/Fd/886m0n4vHOcZcgWUf4CTa1W2GQiqBXiWDUpY+gBLLY5drEvF/PnUBjDF86rrc33cxO5/vIKdQNIYpTwht9QszsAAWDHL6r2cv4O/uO5ozKytO/V9KAOvyR/LOvgLAJW2JQU6jtVdGHI3FMeOPpJQQr28WWjyOjSxPVQSpHtkC2M2MMSdjzAXg0sSfnYwxF2OstrbZE1Jl+qa9WNWgw02bmpJvpBta9AX315FU6fZPNhtVyR2CmcTiHD99rg9v+9F+qBVS/Ph92/CO7W2Ixjn2npgEAPzPS4P41YsD+PBVXfjBu7bg1ZEZfP+JlTVKwOENw5zlpKzFqMKkO5ixr6savDLogoQBWzuMS3qcOpUcXWYNTiamgHPOMeOPwJilhBgAOk3avEqIl3sSLxEGOTl84ZwXGF4ZdGJ/X+ZKhNlgBI8cG8fdLw2l3Z1smw0hHIsvCKiWk1ohxa4eU9b+ajE4cyxDABuJxfHgkVG8a0dbXj3fjXXiHub8AljxYtDCDKzwOp3fB3t6YhbROE/ePpO5ADZ7Dywg9MWnM+MPZ9wXnc6GZgMkDDhRg32w4vdg8cXTDpMG7SY1nju3fFU/3lAUn7v/1WSJN1mZsgWwCgBWABYAysSfxb9by39ohJB0OOfos3mxyqpLTiPUq2RoNaoL7q8jqaY8IWgVUujmDVZpMahz9sB+7eET+NbeM7h2nRV7P7MHLUY1Nrbo0WPR4pFjY3jmrA3/+MhJ3LC+AV+5eQNuvrQZ79nZjh8/24ev/PF41mmVy8nuzb4aosWoRjTOCx6gspKcGvdglVWHOtXSp0pvaNEnp4D7wjFE4zxrDywAdJg1GM6jV13MOqxrqlvycZL8bOsQ+2AzlxGPuvz40K8O4q7fHM64XuvlfieicY5wNI6HEtN+55ubQFy57Pp3brsUP3zv1oyfF4MJ+zIMcpp0BxGNc1zSmroyJx3xok6+Aaw4LTxdCbEYqERj8eSAuiFn9tenPTHsbnHGcD6xBzbT73anL5x2WF4maoUUvQ06nJi3Nq9WiN+DxV9PxhiuXm3FS332ZatWOjrswkNHxvDKIOXqVrJsAayScx7L9B8AMMYqc+mQkIvYlCcEXziGVQ06bGkzokmvwsYWQ2JnqdBfV+xqAAJMzQYXZF+BxDTOLFdjZ4MRPHB4FO/Y3oafvH97MnPBGMNbNrfgwIATn/rtEaxv1uPf3701uefuH9+yER+6sgv3HhjG9f/6LC7YKjvdNxyNwxOMZi2LE4dbjbkKm8q8kkx5gmgxliZw2NhiwLDTD08wkjxRzbUWo9Okgcsfyblb+OCgE+ua6grK0pClWdNYB51ShiND6UsWOef4hz+cQDTOMRuK4rcvD6e93b7z01DLpbik1YB7DwyllCSLAVW7qXKnUS1GNVY3Zr44kszA+sqfgV28ozWXeo0cCqkk737Q0cTvqzZTmhLixO/2QYcvORRqKEcVkz3LsDuRPkcJscOXvdolnU2thpqcRJxpfRsA7FlthS8cw5Fl6k0XJ2+7i5xQTZZHtgD2UcbYdxhjVyZ2vgIAGGMdjLE7GGOPAXhz+Q+REDKfOMxglVULiYThF3fswD/fugnAXH9drjdfkpnNE4R10W4/g0YBTzCSsWx27/FJhKJxvHdXR8rQkbdsbgHnQrnpL++4bMHKDJVciq/fshF/+MRVsHvDePqMrfT/oAKIV8GznVQlA9iZ6g1gJz2lW9GyIbGG59S4J7nX0ZBliBMwN4k4W6l/NBbH4SEXdi7zIKOLnVTCsLndkHGQ00NHxvD8uWn8w5vWY89qC365bwDBSCzldi9csGNXjwkfuKITfdO+5N5h0YhTeP20luhCSjnUaxSQsLmJu+Uklsvne2GJMYYGvTI5syCXUZcfMglD47zf7abEhSHx4uSpibkLiLlKyO2zoazlw8BcCXGmKcT22RCsBQawG1sMmJ4NLUtZ93JyJN97Ur+mV/aaIZWwZRseKJaHr5SqKJJetgD2egAvAvgMgPOMsZlE7+sDALoA3Mk5p/U6hCwzMYDttQrT+Ta1GpKT+gChZ4RKiItnmw2lZGCNajk4FzKt6Tx4ZBTdFi22tqf2VPY26PDv796Ce+/clbGX8dI2A+RSVvROwlIR37izDXFqqfIANhKLw+4NlWxFi7hH9uS4J3nFPlcGtsMk7BjOdqHp5LgH/nCMAtgK2NFpwplJT0qGPBSN4ZuPncb2znp84PJOfPyaVbB7Q3jg8OiC243NBNA/7cOe1Va8+dJm1ClluO/gwkztiNOPhjolVPL8JtBWglTCYNIqML0MJcTinu1CVkY16lV5D3EaW7QDFhBKcjvNGhxKlIqemfBAJmHoNOdeR2f3hrJWqgCAUiaFSi5JGwj5w1H4wjFY6gqrrhCnLy9HWfdyylRCDAB6lRxb24144fzyrG8Tg+mZQG19jWtNxgCWCx7hnN/OOW/nnBs55ybO+U7O+T9xzlObOgghZddn86JOKUvJEoo6TFoqIS4S5xxTnmDyJEGUbZrkqMuPAwNOvH1ra8aVD2/d0ooeqy7t5wAhm2BQKzCzQgLYbJkFrVIGo0aezJhUm+nZEDhHyve4WA11KljrlDg67MKLiaE+OQNYMQOb5XV6cEA4qd65xEnJpHC7ekyIcyQDG9FTp21w+sL4zPWrIZEwXLHKjM3tRvzkuT74w3OrZvYlTrT3rLZAo5Dh1q2teOz4xIJdlqOuQEXLh/Nl1iqXJds3MROEQS2HRiHLfeOEJr0q74n7i3fAiq5d24D9fQ4EwjGcnvCgt0GHXqsujxLicM4AFhDeO2b8qYGQfTb3Gp50xBLbmsvAekNgLPNO3D2rrXhtzL0sg5UclIGtCsVvcM+BMbaWMfbqvP88jLHPMsZMjLEnGGPnE/9f2iI+Qi4yfdM+9DToMgZLHSYNnL5wxmwhycwTjCIYiadmYBMBSboA84+JAS23bm1d0nMbNXK4K3zFV+z9SdeHNF+LQV3WHth0JZmlIvbMlaqEGBCysI++NoEfPdOXXGeVjU4pg1mrwHCWQTEHB53oMmvQUMLjJPnZ2l4PuZThwMDCAPahI6No1CtxVa+wQ5Uxhi++YS3GZgL40kPHk32uz5+3o1GvxOpEZcybLmlGKBrHc+fmMkgji3aSrlSNBlWyP7WcxmcCBfelN+iVmMrz2EZdgbRf7+vWNSAUjeOlfjvOTM5iXVOdMGTN6c+6Ssnuzb5uTGRUK9IGQuJqokwXojMRnzPbTIZq5PCFUa9RJOdDLLZnjQWcAy9eKH8ZcbIHdpn2H5PilC2A5Zyf5Zxv4ZxvAbAdgB/AHwD8XwBPcc5XA3gq8XdCSJ4u2LxYZdVm/LxYTnxspPYGPZSbLRHcLA4akgFsmhORP746jl3dpiVnU4xqecUzsOKwllwnZq316pxrJorVP+3FJV9/PKUss1RsadYkLdV7dnbg5kubcc9Hd+HPn96dVxapw6zJmOWJxzleGXRS+XCFqBVSbG4z4kD/XABr94bw7Nlp3Lq1dcFJ9pWrLPjcDWvw8Kvj+Nnz/XjoyCiePzeN3b3W5EXGy7rqYdIq8JfEOq1oLI4JdxDtFVqhU4geixb9096S7MXNZtwdREuBZf1NehV84Ri8oeyBRigaw9RsMO3Kol09JmgUUjx0ZAwT7iDWN+vRadLAH45lLNP1h6Pwh2N5Z2DTBbBitUuhPbBiiW2trXhx+sJZJzpvbjNCJZcsyz5Yu1hCnCZzTlaOsgWwi1wPoI9zPgTgrQDuTnz8bgC3LtMxEFL1vKEoJj1BrMpSjrpntQVahRSPHKMq/0JNJQaCNC4e4pShhDgYieGCzYsrV1mW/NxGjbziPbAObxgKmWTBCqF0Wo3qspUQP33GhkiM42sPn8CgPfeqmUKJPXOl3K1608Ym/Oi927B7tSVjZcRinabMAex5mxcz/gh2dptLdoykMDu7TTgx5k6W/f7p2DiicY63b21Lue0nr+3F9esa8K29Z/C5+4/BoJbjw1d1JT8vk0pw4/pGPH3GhlA0hlcGXYjFObosmS9ErhSrrFr4wjHYyjzIaXxG6FEthHgRKlcf7MRMEJwLF94WU8qk2N1rwWPHJwAA65r16DQL35dMFRJihi6f4FOvlqfN5E3Piu0ahQWw9RoFGKvBEuIcAaxUwtCkV+U9dXopnIkLuZmGb5GVIa8AljF2KWPsE4yxjzPGLi3ied4N4L7Enxs55xOJP08CaMzwnB9jjB1ijB2anl6exm1CVrrziR112QJYlVyKmzY1Ye+JybKWYtaiqQwZWHGqrHvRFVkxAOnOkhHPl1GjSHn85Wb3hmHRKnIGYa1GNWZD0bL0CO3vc6DZoIJcKsFnfv9qyXf/TXpCkEtZcgJppXSYtZhwB5JrO+Y7MOAAAOyiDGzF7OoxIxrnyX2wDx4ZxaZWPdam2ckrkTB8//Yt+MJNa/HA316BF/7Ptdi0aJ/pGzY1wRuK4oVzdnzj0VNoMahw8yXNy/JvWQqxd7/P5i3bc/jDwu+SQkuIxQDWliOoSa7QyVCyfd26BogD5tc31yV71DNdYBLLf/MZwGRQy9P+Xs9nYF46UglDvSb7Wrdq5PDmnurcqFflvfd3accilhBTALuS5QxgGWNfhhB8tgJoA3AvY+xL+T4BY0wB4BYA/7v4c1yoSUlbl8I5/xnnfAfnfIfVas336QipaQ8dGYNCKsGOruyt47duacVsMIpnz1Z2LUu1EbMMDRkysItLfAcSGcJucwkCWLU8bYnycnL5w8ndiNmIJ5qlzsJGYnEc6HfgunUN+Je3XYJjIzP49YuDJX2OKU8QDXUqSDL0Wi2XTpMGcZ5+mvOjxybQbdFWRY9krdreWQ+phOHggBN/fm0CJ8Y8abOvIoNajk9e24sdXaa0F4Cu7DVDp5Thy388jtMTHvzDzeuhVqzcCcSinsTFub4yVEOIxHaEljx3wIrEQWy5snLizt1Mr6dr1zUAAMxaBaw6Jdrq1WAscwBrLyB7Ksw2SF9CXK+RQ55lj2wmJq2i5kqIXf5IxgFOoiZD+TOwYnk4kL5liKwc+bxyPgjgMs75lznnXwawE8CHCniONwI4wjmfSvx9ijHWDACJ/9MZNiGLvPfnL+Nnz/ct+NiMP4z/PTyCW7e25HzjvHKVGRadAg+/Ol7Ow6w5U54g6pSyBbtaAUAhk0CjkKaciIgBbJdl6b1sRo0c/nAMoWjlsuYufzjnSQQwt+qi1IOcXhudgS8cw1W9Ftx8aTO2dhjxyLHS/gxPulOnTFeCmLVfvBrigs2Lg4NO3H5Ze97lyKT0dEoZNrXocf+hEXz6d0exo7Me797ZXvTjKWVSXLeuAVOeEC7vMVVF9hUQ+kw1CmlZM7CF7oAViRnYqRy7YEddgWQJaqbH2dZhxNaOejDGoJRJ0WJQZ5wSLvbG5hPA1mvk8IVjKdVQ07O51/BkYtIqklnCWsA5hzsQSV4ozqRJr8KUJ1TWfmzx69qkV8ETiCCeYfc7qbx8AtgJAPPP5mSJj+XrPZgrHwaARwDckfjzHQAeLuCxCKl5/nAU+/sc+O5fzuLUuCf58d8eGEYwEsdHd/fkfAyZVII3X9qCp87YUnYZksxss0E0ZAhu0mVIB+0+WHRK1Kmyv/Hmw5AIHCtZtjTjj+RcAQPM9ZKJuxtL5cULDjAGXNEj9H7euKERx8fcmCjh80zNBkva/1qsLW1GXLnKjO/sPbNg7dXvXxmGTMJw27bM2T6yPHZ2mzDlCWFLuxG//sjOgla8pHPb9jbolDJ8/ZaNVXNxgjGGHqsW/WXMwIqv7+YCX5dapQx1SlnOstJRlx/NhoU7YBf77w/txA9u35z8e4cp8y5Ysfw3W8+mSOxzFve3zz1GuOAJxCKLTpEcuFcLfOEYYnGeO4A1qBCOxss6K0Isze6xahHnwGyOAWGkcvIJYJ0ATjLGfsEY+zmA4wDsjLHvM8a+n+2OjDEtgBsBPDTvw98GcCNj7DyAGxJ/J4QkiFmtaJzjiw++hmgsjnA0jrv3D2LPakvaHqx0btnSgnA0jmfOUJFDvqY8oYzTafVppgQP2H3oLkH2FRACZCD9qp7lkm8G1qJVQiGVlDwDu7/Pjg3N+mQZ8+s3CCMSnjxdup/hKXewpBOIiyWRMHz3HZeCMYb/87KAm/sAACAASURBVMBriMc5wtE4HjwyhhvWNxZ9cktK54NXdOFjV/fg1x++LOdgs3xcs8aK1/7x9VjXpC/B0S2fHosO/YkAzBuK4ifP9ZV0QuvYTBCMFTdYrUGvzBnA9tt96MrR5mHQyBdciOwwaTDsTP/7ze4NoU4lg0qeuwR8baPwfn1+anEAu7QMbC2VEIsXbfPJwAIo6QXNxcThWGLpPA1yWrnyCWD/DODrAF4C8DKAbwDYC+Bk4r+MOOc+zrmZc+6e9zEH5/x6zvlqzvkNnHNntscg5GIjDpz46O5uHB9z48O/fgXv+fnLsM2G8Dd7cmdfRZe2GqCQSnB6YrZch1oyP3z6PD74q4N44tQUYhUs2RH6IzNkYDXylDezAYcP3SWaJCoGjpUKYGNxoYyrPo8MrETC0GJUpe3fLFYgHMORoRlcuWpu8u4qqw7dFi2eODWV5Z75mw1G4AvHSroDdina6jX4ys3r8VK/A3fdcxj/9uQ5OH3hJZWqktJpN2nwD29aX5IKC1Gle6+Lscqqw9hMAMFIDPcdGMa3957B23+8H8MZekQLNTETQEOdsqh+0Fx9kfE4x/kpL1Y3Zh58mE6HWQO7N5ScQj3f+Ewg72xxl0ULuZTh7NTC9+GllRArMROIIFriAXeV4vbnF8A2GsSS8fL1wYolxOKgTBrktHLlvKTIOf/lchwIIUQwmggK7tzTA3cggmfPTqPVqMJdV/fg6tX5r2uRSSXosmhwoYy9S6Wy98QkTo578Py5aezsNuH+u65Y9mPgnMOWJQNrVCvQb5/7WnpDUUzPhkq2CiO5a7ZCk4jdgQg4F6Yh56PFqC5pAHtoyIlwLI4re+d+xhljuGF9A369fxCzwciSA4mpMuyAXarbL2vH2EwA//PyEJ44NYVWoxp7VtPgQrJy9Fi14FyoOHn0tXG0m9Rw+sJ423+9iDuv7sEVPWZsajUs2I9biAl3EM0FDnASNRvUePqMDbE4T/v8YzMBBCIxrGnMr3JJJGZsBx0+bGxZOFH6vM2LTYs+lolcKkGPRYdzk3MBrDgoqNgqC7NWAc6FwUe1UKkhtjnlm4GddJevfNruEzOwQgBb6d3sJLOcASxj7A0A/hlAZ+L2DMIAYZrvT0gZjLkCUEglaKhT4nvv3Jz7Dln0NuiqIgPr8oVx65YW6NVy/OalIfjD0SX3mxXKHYggHIunrNARGRaVEA+WcAKx+PhA5SYfuhKBc702vyCxxahOGUC0FIeHXGAMuKxr4VvLjRua8PMXBvD8OTtuvnRpg2/EE5+VFMAyxvD516/Fp67rxTNnptFqVBcdCBBSDmI26tmz0zg26saX3rgON2xoxGd+dxTf3nsGALCtw4iff3AHzIuyir5QNGUo3mLjMwGsay4swBRds8aKBw6P4pVBJy7vSd2bfN4mvP+tbigsAytmbC/YvAsC2GAkhmGnH7duaS3osY6NziT/bp8Vh0AVt8pLXL3j9BXfR7uSiFlOfY4A1lqnBGO5p04vhcMbhlYhTQbLlIFdufKp1/ghgLsgrNGxArAk/k8IKYNRlx/NxtKs+ei16jDk8JV9sq3bH8Gv9g0UtbOTcw6HL4wGvQqXJHYnim/wy0mcZJlpQu3idQjJFTol2AErPj5QuQys+Lz59MACQgBrmw2VbE/r6QkPus3alF7DbR1G1GvkeOLU5JKfQzzxWQlDnBZTyqR4w6YmXNKWX2aHkOUitkn84oV+AMCbLmnGKqsOj/7dHhz88vX45ts24eS4B7f9eH/ywh7nHD95rg+XfP1x/PDp8xkfm3OOcXeg4BU6ouvXN0CjkGacVn4u0Xu6uogMrFzKcHZy4QXgvmkvOEdBJclrG+sw4gwky5GnvcLvIUuRwac4PKpaBjl5Q1H4w5mHIeXbAyuXSmDRKTHlLmcAG4JZp5x3Qbl2eo1rTT4B7CiAVznnEc55TPyv3AdGyMVqbCZQsv2Pqxp0iHNg0F6aXqVM/nB0FN949BTueXmo4PsKq2PiMGkVyTd0cVH8chKDm4a6DBlYjRyhaDy5DkEMYDtNpQlgdUoZZBJWsZIll0943nwDWKtOLGMrzRv8qQkP1rekDreRSSW4dl0Dnj03veT+aLGEeKX0wBJSDdQKKVqNajh8YWxpN6LdNDe4rqFOhfft6sS9d14OdyCCG3/wHD7y61dw528O4dt7z6DZoMb3/noOj76WPsCc8UcQjMTRXOAKHZFGIcMN6xux9/hE2otp56Zm0ahX5gyOFlPIEqW/i3pXxZacQkqSxeBZvO904gKttcgeWLNWuF81rNJ57tw0rvjWU/jqHzOPzPHkmYEFhN/dE+XMwPrCMOsUyZ8XysCuXPkEsP8HwJ8YY19gjH1a/K/cB0bIxWrMFUBrkW/mi/U2zJVBldOJxLqff3vyPFwFTkcUpymaEkvkgblJgMtJnLLZZU4/VdiwaErwoN2HFoMKakXuSZT5YIzBqEld1bNcXAVmYMVJwaWYhukJRjDiDGBDc/rprNeta8CMP4JXR1xLep4pTxB6laxk3zNCLhbiVNY3Zyjj395Zj0c+tRsfurILZyY8ePqMDV964zo89flrsKOzHp+//xiOj7pT7if20bcsoSriLZtb4PJH8OIFe8rnLti8Bfe/itY01aUMXzo3NQuphOWcajyfuDlAfCxxDU/RPbC60v3uLadf7RvAh//7IGaDUZwYS/3ei9yBCBgD6vKY9N1kUJU1A2v3hmHWKqGSS6CQSSiAXcHyCWD/CUAMgBFC6bD4HyGkxIKRGGyzIbQaS7OapceiA2PLEMCOudFj1cIbiuIHT54r6L7i3jWzVpF8Y7ZX4MryeZsXBrU840mFUb1wT+uAw1eyAU4ig1qenMi43MTA3JhnD6xYxuYswffqTKJPO1MAu2e1FVIJwzNnltZzO7lCVugQUm3Ei6HZ+tDbTRp8+eYN2PfF63Din27CXdesgkouxU8/sB0quRR3vzSYcp9kJcsSZglcvcaCOpUMfzo2seDj4gTi3gL7X0VrGnQLSn8BYR1Ol1kDhSz/ickdJg2UMgnOJwLY6dn898imU69RgLG5986V6ILNi288egrXr2/Ee3Z2YMjpQzxDBY07EIFeJc+rbapJn33q9FI5vCFYdAowxir6fkxyy+cV2M45v4Vz/mXO+VfF/8p+ZIRchCYSVxZLVUIsln5dmC5fABuMxHDB5sUbNzXhfbs68NsDw7hgy39wlNM392YulkbZK5CBPT81izWNOjCW/k10cY/qgL30AaxRo6hYz43LH4ZMwvK6Cg7MK2MrwUnUqXHh6vyGNCXEgBDYb++sx9NL3Gk85QmuyP5XQla6O/f04Ocf3JHXtGCJhC0YwmfWKbGuqS7ZHzvfeZsXEjaX4S2GUibFGzY24a8nJxdU7xQ7gVi0JpE5PT/vAvAFmxerGwp7PKmEobdBh7OJfly7NwSTVlHU2iDx8YxqeUUqlfL1v4dHIJUw/MvbLsGGFj2CkThss+mP1x2I5F3i3WRQwR2IJFt5Sike53AmSogBYTc7ZWBXrnxePY8zxq4r+5EQQjDqEnpVW0sUwALClfNyZmDPTc0iGufY2GLAJ17Xi1ic4/lzqaVcmYh9PGatEgqZBAa1fNkDWM45zk15sw76mD8leMYfxow/gp5SB7BqebIXdbm5/BEYNfKMAfxiphKWEJ+a8MCsVWTcwQsA165twKkJDyaXUD42QRnY/8fefYfHeVZ54//e0/tI09S7ZMu9xiVxitMgtAQ2Cb1D6GV5dxd2l/dlYQssP2CXZWlZYAmEEDoJIQkkJsVO7Lj3Jku2ehlpNEXTy/P74ykaaYpmpCkq53NdvmxLUx49kmaec59zn0PIvNRWaHHH2qp537/Fpse1NHNjr4z50GjRQaNcWFn/u3Y3IxJPCDPT+dcIsQPxqjxnwIpWC+8H4giccCyOaxP+vGfKio/VlVRCPN8OxCKrQb1oS4ij8QR+c2wQt3Y6YDeqpW051yZSFzCA/ALYKmmUTuGzsN5QFLEEJy3OmimAXdRyCWDfB+BZxtgUY8zFGJtkjLmKfWCErESDk/x+oELtgQX4TsQ9zqkFN8DJ5Owgv/91fa0ZVSY1dCo5+idzbxol7YEV3tCtBlXJm1M4fWF4glGsylJqltzU4aJwQdM2z9K0TCp0qrK9YboDkZxnwAJApZCRznYR9dKVcfz70xfBcdl/9i4M+7CmxpQ1eL610wEAeP7S/LKwYnl+Q2VhyvMJIblrsuoxPhXGVHhmN1q+xHd+GdJkG+rN+N/3Xod+VxBv+f4hjHhCUgfi+T5+g0UHjVImNXK6Ou5HgsO8SpI7qowY9oTgCUbh9IVhm2cDJ5FFr1q0JcQvXHJifCqM+7c3AJieqdtbgABWmgVbhDJiceuSmIGdPTqPLC65BLA2AEoAZtAYHUKKatAdhFzGUFPAMsd2hwHhWEIKjgvt3JAHRo0CDRYtGGNoqNSh35X7c7n8EagUMuiFxjo2g7rkXYjFC51spWZmIWDzBKJSQwpx7E+hVOiUZRujMxmISEFpLhRyPlueLYD9xZF+fPf5bjxzfjTjbaLxBC6N+jKWD4tWVRlQa9bguXkGsGJ1Q1OGJl2EkOIRs3DJQUw0nph3RjOd69ts+Mn7d2DMF8b93z+IA13j8+pALJLLGDoc042cunJ4n8hEnHP7rX1dGPWGFzy/1apXLdoM7C+P9sNmUOOW1XyoUFuhhVLOcDXDNIT8Soj581aMDKxYki0uLph1C8vAToVjGbtvk4WbM4AVRubcB+Czwr9rAGwu9oERshINTAZRbdJAMc+9MelInYidue9LzcfZIS/W1U5nzxosWilYyMWEPwKLTiXd325Ql7yEWFxhz1ZCbFQrIJcxuIMRnBn0oMasWfAq+mwVWiX8kTgiscLMVs3HpD+aVwYWmPsiqmecv+D7ylMXM86L7XH6EYklMjZwEjHGsLfTgf1d41kvKgbdQVwY9qZ8vFcoX0weAUIIKY0mKQs3/d7QOxFANM6ho4CVLNc1W/DwB3bCHYjgwJXxee9/Fa2qMkrvD+J+3ZZ5bB25qcOON29vwA8OXMWgO1iYDOwi3AM7PhXGXy6O4a+21kl7fOUyhgaLLmMG1huM5jRCBwCqhT3YxcjAiu9lyRnYbO81c1UWPX5yCB9/5AT60pTOk4Wb8yqZMfbfAPYCeKfwoQCA7xXzoAhZqQo5QkckBrBPnhnBf+3rwh9PD89xj9zF4glcHPZife10JrK+UoeByeCcL+4ilz8yoxtjOUqIu8Z8qNAps+5LkroSBqM4M+ApePYVmG4UVY4y4skAv5CQD76MLf1FFMdxuOr0o8NhQM+4Hz8/3Jf2dmKwOVcGFgDeuqMRgUgcPzxwNeVzsXgCD77Yjdu+/jzu/97BlIC5z0UZWELKRfy9u5rUyEls9pdvU6S5bG6owCMf3AWrXoWtjZULeqzV1QaMesNwByK4MuZDk1U/r/26chnDv9+7Ed9+21ZUmdTY0lixoOOyGtRwB6NF2xo0X/sujCKW4HDPlroZH2+2pt8DzXFcXhlYg1oBg1pRlAzsuH+6HwfATx6YCscQm/VeEosn8OWnLmDTF/+MIXfmarMRD/+5UV/xuiavZLmkea7nOO5DAEIAwHGcC8DCdp8TUiCXRnw57bFbKgYmAwXrQCyq0KlQbdLg18cG8I1nLuNf/ni+YI/d7fQjHEtgXd108NFg0WEqHMt578hEUtc/gC/f8QSjRc9C/vrYAH51tB8AXxq2ymGcs4GRWavEwGQQPeP+IgWw/HkodRkxx3FwB6I5j9ARWbJkYJ2+MPyRON6xqwm7W634z2e7MJpm1fz8sBcqhSynhljr68y4a301fnTgasq84U/8/AT+7cmLqK/UwReO4dzQzCxsnysAnUoO6zxHVxBC5k+vVsBuVM/IwokluW2OwjbDA/jXipc+dys+fXvHgh5HrMr57G9O4/lLznk3hBK9dmMNXvmH2/G6jbULehyrXgWOm57fvVgcuDIBh5HvOp2sycpnYGdfqwWjcUTjXF5l3lUmddr3koUacgehlDNpQd2s5Ttpe0PT+7bdgQje/b+H8f0XeuANxXBxJLXaRyRuhXJm6L5MFiaXADbKGJMB4ACAMWYFUPr6NkLS+OOZYXz3+e6izgUrlWg8gRFvqKAdiEUPvW8HfvHALrz3hmaM+cIFW7UV94LOzMDyx59rIyeXPzwjAyuWVmXK7BVCIsHhK09dwD/+/iwGJgO4POrLaR+WWavE4at8D7v19cXLwLpLnIENROKIxBOozLeE2KCCK0PX5G4nf6HaatfjC29Yi3A0jrc8eChl5fzsoAerq4w5l83/9R2r4I/E8P0Xe6SPOX1hPH1uBB/Y04JHPrgTAHDk6sxeg/2uABotupy7LBNCCqvZqpuRhesam0JdhXbGyJ1C0ijlC/59X1tjgowBf7k4hltW2/G5u9YU6OgWRnzPLHW1UjaJBIeXroxjT7st5bw3W/UIROIp/S28QT44zCeArTFrMVSEDGzfRAD1lTrIhXm06RaUv/N8N17pceFvX7UaADDoznwcY97yBrAvXRlPyR4vJxmvGBhj4ivKtwH8BoCdMfZFAAcA/HsJjo2QOYkzRK860++tWEpGPCEkuMJ2IBatrjZiZ6sVrTY94gmuYMHhhWEvNEoZWu3TwZ/Y5TXXRk6T/mhKCTFQ2DdmTzCKT/78hBQ8nR/2Ynwqgkgsgc/+5jS8oVhOe6UqdEoEIvz8uaJkYLXiG2ZpA1hxFT+fJk787VWYDETSDqgXSwVb7QZ0Vpvwk/fvgNMXxpsfPCiNueA4DmcGPdiQx2LAqioj7t5Uix+/fFW6MPjz+RFwHHDv9no4jBq02PR4ZVYA2zvBB7CEkPJotupnZmDHpgrWwKlYqkwaPP7xPTj8D7fjO2/fNq/9r8UgvU8WcKHXE4ziVL8bT50ZnleG88KIFy5/BHs6bCmfE2em984qIxa3y+QXwGownKZ0NxyL4/ZvvICnz47kc9iSPtfM94jkyQOiU/1ubKg348M3t0EhY2mPQyQG62NlKCE+PeDG23/wCp6c57lYCrIteR8GAI7jfgLg8wC+BmASwH0cxz1agmMjZE7izMyeNAPSlxqxcZHDVNjGQMkcQgv6UU9h3vT6JwNoSFqxBPgmTuLn5hKOxTEVjs0o6xQzsIXsRHyoZwKPnxrCTw9dAwC8cNkJALh/ez1eujIBADlnYAEUpYETkJSBLXFZmBgw59vEyaJXIZ7g4A2lBtw9zilolDLUCD9z25oseOh9O9A7EcAvDvOl270TAfhCMWzMczHgk7d1IBJLSHthnz47ghabXprbeF1zJY72uqTAmuO4lIsTQkhpNdv0GPWGEYjEEE9w6HFOFbSBU7GsrzOjcpFtPRAXio9em0z5XCLB5d2heHwqjJ3/9izu/vZL+MjPjuP//v5s3sd0oIuf/35De5oAVpwFO+taTQwOTdrcs/C1FVo4p8Ip24xGPCFcGZvCTw5ey+Oop/VO+Gf0SDBpZ1ZEcRyH88NerK0xQS5jqDJpMJwlE1zODOyJPjcAoHtsquTPXSrZAljpipTjuHMcx32T47j/5Dgu/59qQopEfJG+ugwC2PmsROar0DPUhtwh1MzKGBs1SlTolCmdiGPxRErDA2kGrH46GLQLgeF4AV/0rwgv4r89Poh4gsMLl5zYUGfG51+3Vso65pSBFb43xci+AtOjesqXgc2/hBhA2nmEV8f9aLbqIUta3NjWVInOaqOUHT0tlqDneT5b7Qa8dmMtHj7Ui94JPw52T+BV66qlsrUdLVa4A1F0Cd93py+McCyBRmrgREjZiMFBnyuAgckAwrFEwRs4rRQNFh32rrbjoZevIRSNz/jcv/zxAm7+6nPwz5q5m83Ra5MIRRP4p9evxd2ba/FilxPBSHzuOyY5cGUcHQ4DqkypYwDrKrRQyJjQeTqBHif/2jyf6566Ci04DilZ4jHhmuFgzwTG8rzGcQci8IZiMxY5xQVlr3CMA5NB+EIxqeFgbYUmYxOnRIKTkhLlCGBPDfAB7LUMnZ+Xg2wBrJ0x9plMf0p2hIRkIQZA4ovhUlaSANZc2AB22BNEbZqZtelmwT56pB97v/b8jGydWCactoS4gDPuxAB22BPCn86N4FjfJG5eZYdJo8QXXr8Od66tyimjahYCvGIFsMmjekppUgiY8y0hFhceZjdUAvgAttWeWm63q9WKY72TiMQSODvogUohm9eoi4/e0oapcAwf+ukxxBIc7lpfLX1uR7MFAHD4Kp9d7xU6EFMGlpDyaRZG6VwbD0gNnNoXeQnxYvahm9sw4Y/g18cGpI9dGPbixy9fhS8cw/4uZ86PdaJ/Eiq5DG/d2Yj7tzcgFE3gxTzuH4rGcfiqK235MMDPDa+v1OLUgBvv+MEruP0bL+DquH9e1z21wqL54KzgUcx4chzfHyUffWneI2aXEJ8XO+YLI99qzNqMGdjJQAQxoQKo1HPtAeD0AL84nK7z83KRLYCVAzAAMGb4Q0jZuQLLJwPrlUppihfA2gxqyBjyXp1MJxyLY3wqIr2ZJKuv1KaUEB/vm0Q4lpgxE2323DWA71apVcrnzMCO+UL4r31dCMfmXiW+MjaFHS0WmDQKfOHxc4gnONwsDFm/Z0sdHnzX9jkfA5h+QytGAyeAH9VToVWWPAMrlizPZw4skLrYEI0n0OcKpN0vtrPFgmA0jjODbpwecGNNtREqRf5zj9fUmHD7GgcujvhQa9ZgY9L3pMGiRbVJg8NCeZ34M0cBLCHlI1ZAdDun8OiRPihkTBrzRvK3s8WCzQ0V+J/9PYgnOHAchy88dg5mrRJmrRLPnB/L+bFO9LmxttYEtUKOHS0WmLVK/PncaM73P97Lv7/vSVM+LGqy6rG/axxHrrmQ4Pj9pPMLYPlF89nZT3GvaV2FFo+fGsr58YDpvbnivOLkYxoXFtrPD3khY0BntRDAVmj43iVpekCI2WCjRlHyDKwvFEW3k59ZPLtkeznJdtUwzHHclziO+2K6PyU7QrJijflC+Na+rowdczmOw6Q/AhkD+ieDRR+7Mh/xBIcj11xz3xBJe0E0xQtg5TIGu1FdkBlq4mPUpMvAWvhZsMkv7BeG+Zl/yaXF0yXEMwMnm1Elld9k8vNX+vGNZy7j+y/0ZL1dIsGh2zmFdbUmvH5TLZy+MIwaBbY05D+Hb2O9Gc1WHbY2LGy2YDYWvarkb3ji96Ei3yZOwvdt9n6rflcAsQSHVlvqxemOFj47erB7AucGvXk1cJrto3vbAQCvWl89o+slYwzXtVhw+OqEtP+VMRSlwzchJDcmjRJWvQrffb4bz14Yw+dfu6ao73fLHWMMH765Fb0TAfyfX57EP/7+LA5fc+Gzr+7ErZ0O/OXiaE5daGPxBE4PuKXZtEq5DLd1OrAvx/sDfNmuXMaws9Wa8TY7Wy2oMqnx6AO7oVbIcHbQI133GPP4Oagx86/jqQFsGAoZw9t2NuJEnxv9rtyzj2IGVuzhAfDnYV2tCS8KPTPOD3vRYtNDq+LnANeatYjEE2mrxcT38LU1JoxPRUo6r/fMoAccx+9F9gSjJe+pUSo57YElpBx+eaQfX3/mMs4NedJ+3huKIZbgsKbGhHiCy3lsSyn96dwI7vveQVwYzjwrTOQNxaBWyOY1JD0f1SZNQUqIh4T28ekysA2VWkRiCSkIjcYT0tD6gcnpN50JaXD4zADWqldLq56ZiOVR//3clawl5EOeIAKRONodBty7rR4AsKfdlvPYlmTXNVvw/N/ulfaqFgM/L29hP8veUBT3f+8gnjmf2wq6OxCFUaOAMs9zYs0QwIoVES1pSoitBjVWVxnxq2MD8IVjCyrH3tpYiR+8azs+cWvqrMcdLRaMesM42e9GnyuAWrMWakVxf7cIIdk1Wfk54R/Y04L33NBS7sNZ8u5YW40711bh2QtjeOSVPmxtrMD92xtw+5oqTAaiOC4088nm4ogPoWgCWxqnF2bvXFcFdyCKI2maRKVzdtCDdrsBBnXmZkwfubkNh/7+NuxosaCz2ohzQ154g/x7T3IjyLloVXJY9KqUUTpj3jDsRjXesImfsZtPFrZvIgC7UZ0y0un1m2pxsp8Phs8PebE2aWSguHg/7EndBytmYNfVmhFPcCWd1yuWD79eOA/LoUIxnWxXK7eV7CgISeNkP//CK/4yziZeNG9r4l90F+MoHXHv5eVR35y39QSiRd3/KqoyaQoyBFxc/UyXga0XSjXFRYVu5xSicX4FMnlV1OUPQy5jKavwNoM6awbWG4riRL8bb97eALVChn/83dmUAeki8XvQ4TBic0MFPnxzGz5wY2uuX2bJNVv16HX505Yl5epLfziPw9dceOJ0bm/gk4FI3g2cAH7Ook4lTxl51CPOgM0wcmJnq0UK0jfU5Z8JT3b72qqUDD4A3L25FnajGp///Vn0jPtnrKwTQsrj3m0NeM/1zfiH1yyOeapLnVzG8OC7tuPsF1+F8196FX75od2QyRhuWmWDUs7w7IXURcx4gsPf//YM7v72SwjH4jghXGslVyXdtMoOtUKGP5/PbQzLuSEv1gnNjTJhjEmVMuvqzDg35IE7EJnXdU+6BkpjvhAcRjUaLDrc2GHDt5+7ktO1FwD0uvxpt5i8dkMNAODhV3ox6A5K+1/5YxAzwanXU1IGVjgnpayqOj3gRoNFi61CRn25NnLKGMByHJdb3SMhRcBxnNQG/EyuAewiXGUSXzi6cwiuPcHSBLDVZg1GvQt/MRVXHcVynmSzZ8FeFMqHtUr5jAysy88HTrJZq692oyprBvblKxOIJzi8aWsd/v6uNTjYM4GHD/Wmva0YwLY7DGCM4XN3dUo/M4tRk02PUDSB0XnOjnvm/Ch+fWwAGqVM+h2ay2QgmncDJ5FFr0pZXe4Z98OiV2XcU7tLKDNTKWRFmwNp0ijxxTesgzXbcgAAIABJREFUw7khL071u9FkWRzzGwlZyd62sxH/9IZ1Ka/5ZOF0KoVUWWTUKLG7zYZnZ1XhxBMc/vbXp/Dzw3041e/Gzw714UTfJGwGNeqTtljoVArsabdh34W599GO+UIY84WlYC0X62pN8IZiOD/snV8Aa9amBLBOXxh2I7+g/rX7NkGvVuCBnxyFJ4eeEn0TATSlCWAbLDpsbazAj1+6BgAzvsbsGdgQDGqF1Hm7lAHsqX4PNtZXoMGiA2N807TlKP8aOkJKYGAyiAl/BIxNj9qYTex82mLTw6JXLcpZsGLzmFy6JJcqgK0yaeAJRlNa7+dryBNCpU4p7QdJJr4RitnWC8NeqOQy7Gq1zCwhnoqklA8DfAmxyx/OuG9kf5cTepUcWxor8ZbrGnDzKjv++YkLOD2QGrBdGZuCRa9Km6VbjFqEJhL5LMh0O6fwD787g7/51Sl89jensbbGhE/c2oE+V2DOvcQA38Qp3wZOIqtelbIH6OKIN20DJ5G4D3ZtjSnvsuV83LW+Grd1OgCARugQQlaUO9Y40DPux2MnBwHwVV6ffPQEfnt8EH99+yrsabfhW3/pwis9LmxprJjRRwAAdrdZ0ecKzFmxdW6I3yK1rjb37SDrhdteHp2aZwZWm5L5dPrCcJj4zvhVJg2+946tGHQH8dFHjmEqy0ihcCyOYW8o43vE6zfVIiz0WEnOwFr0KqgVMqkT8fOXxnBWuF51+sJwGNXSWMBSBbATU2EMuoPYVG+GWiFHrVm78jKwhJTT8T5+38Utq+zoGvWlDbbEDGylToUWmx5XxxffKB1xfEeuGdhidiAWiTPaFtrIadgdTLv/FeBLS2vMGpwRXswvjPjQ7jCgxWZA/2RAKvd1+SNpA0ubQYUEh4zNB/Z3jWN3mw0qhQwyGcN/vnkzbAYVPvLw8ZT7XBmbWlKdLptt/JtoPvtgf3TgKn5xpB8HuydQY9bgP968WQoSc8nCOn3htAsJuajUq+DyT785v3DZiRN9bty5tirjfWwGNe5cWyWVZxULYwxfumc9VlcZsVM4H4QQshK8YXMdNjVU4FOPnsRHHj6G2//jBTx9dgSfu6sTn7q9A599dScmA1EMuoNSA6dk10njyLIXZJ4XAth8MrCrq43Svtf5lhBPhWPSWL6o0EzJYZweh7etyYKvvGkjDvW48KbvvITeDIHcwGQQHJe5S/1rN9ZAxgC7UQ170uMzxlBj5kuZw7E4Pv7ICfzLH88D4PfA2pJuX6pROuKWu431/PezxaZftqN0KIAli9LJfjc0Shnu3daAWIJL2wRJHKFj0YsB7OJaZQpEYnAKXfGujk/NuafRGypRCbEQwC50H+ywJ5S2fFj0hs212HdxDMOeIC4Me9FZY0R9pRaBSFyaO+ryR2AxpAlgs7zo90740ecK4KZV0+36K/UqfPvtW4XROlekj3Mch64lFsDWmLVQyWV5tb8/2D2BW1bZ8dLnbsUfP3kjVlcbsb7WDIWM4URf9iYcY74Qhj2hvC4+kln0KriEcu9oPIEv/eEcmq06vOeG5qz3e/Bd2/HBm4q/F7muQos//fVN2N5MASwhZOUwa5X49Yd345O3tuNP50Zg1avw2MduwIdvbgMAbKg3Sw2PtqTprL+u1gSdSj7nJIVzQx40WLR5Xb9olHK02w3SceZrev8pX9ElVho5jDN7cvzVtnr85H07MOYL443feTltOXGfNEInfQDrMGrwqnXVuHmVPeVzNUIp88vdE5gKx3Ciz41ILCFlYPVqBfQquTSjttgujMxcTGi26ZbtKB0KYMmidKLPjY11FdKq4Jk0ZcQufwRqhQw6lRwtNj1GvWH4s5SJlJrYlv26ZgtC0QSG5wgYS1dCzAeHC+1EPOgOSvPY0nnHziYkOA7/te8KnL4w1taYpNJicZSOKxCBJU3pqjh+5exg6sKF2NL+xo6ZbyZbGitxXbMFh69NSB8bn4rAE4xKb5RLgVzG0GjV5bwgM+wJomfcj91tM8cXaFVyrKkxzZmBPSl8fvM8xgoB0yXEHMfhoZevodvpx/993Vrq+EsIIWWmlMvwmTtX4+XP3YY/fGIP1s/q+v75167BJ29tx/bm1ABWIZdha2PlnBnYc0NerKvJv5v8ujo+yCpEACsGiMkZUtEN7TZ85+1b4fJHcLBnIuXz4rVaY5Y+Cd99xzZ87b5NaY9j2BOSZuaGYwmcGXQL+3HV0jHNXozP1HRyoXqcfjiMaqkxZrNVv2xH6VAASxadcCyO80NebGmsQI1ZA5tBlbYTsVh+yhiTup2+IAQ3i4FYAnqrsAcv2z7YeIKDLxQrTQmxeeEZ2KlwDL5QLGsGtsGiw22dDjx6pA8AP/y7wTLd3GnYE4Q7EE276tlZbYTNoMKBrtTv56GrLtRVaNGc5n6bGypwcXi65FzqQFykRkHF0pzHKJ2Xr/BvyNe3pQ6Q39pYgVMD7qwz6E72u6GQsZQLm1xZ9GqEYwkcuTaJ/3y2C7estks/84QQQsqv2qxJ22/AYdLgM3euztiL4LpmCy6N+qR5rbN5Q1H0TgSwvi7/Ch5xz+x8rntqhWuPQWEfrDi2xpEmgAWA7U0WqBWytNnk3okAdCo5bGmqweY8jgp+qsMz50exW2hO+MIlJ6bCMSkbbDeq4RSaMl4b9+PLT17A7i//BR/66dG8n28u3c4ptCaNr2ueR0+NpYICWLLonB/yIhJPYHMD31RgQ51Z2hifbDJp/+SuVisaLTp89GfH8ZlfnsRXn76It/3PIfxgf0+pD18i7rfYK1zMd49lDmB9wj6OUmRgjWoFdCo5RjzzL2kZFlY9s2VgAeBdu5shLjSuqTGiLikDK2ZS93SkBl4yGcMN7TYcuDKRslJ5qt8t/WzMtqmhArEEJ80OFlvoL6USYoB/07k2kdsonZe7J1CpU6Kz2pjyuS2NlQhE4llHCZzsd2NNjWne84fFvbPv/tFhmLVK/OsbN6T93hBCCFlarmupBMcBx3vTb0W5MI8GTqL1QpnrfAJYu1ENhYxNZ2CFAFFs4jSbSiHDlsaKtNnkPlcADZW6eb1v1Zi1SHB8CfNbdjSgza7HE2eG+WMRgmmHUQOnj68QvOc7L+GHB64iluDmzGzni+M49Dj9aEuqOBN7aizHRk4UwJJFR5z/ulkoH95QZ8blUR+CkZmNnCaSAthKvQp/+vRN+OgtbXj85BAefLEHJ/rc+N2JwdIefJLeiQDMWiXa7HoY1YqsXZLF1U2TJvMQ8EJhjKHapJn3mBYA0gDxTE2cRHvabWi16eEwqmE18GUtZq0SA5NBvHh5HFUmNVZXpQZe4n3Hp8K4ODIdfE1MhTEwGcSmhvRvluIcu5P9fAD74mUn6iu10r7fpaLZpkc4lshY5v3Vpy/i6bMj4DgOB7vHsbvNmnYshViCn6mMOJ7gpAWB+aoUfgfNWiUe+eBO1M3xM0EIIWRp2NJQCYWM4XCGfbDTHYjzz8BuaqjAvdvqcWN76iL2XOQyhmqzRlpMH/OGwRjfIDCTHS1WnBvySAkD0ZA7KC2u56tGWMRXyhn2djqwo8UqzUGfUULsC+P3JwfhDkTx8wd24UM3tWIyEM1pxE+uJvz8lqnkAHY5j9KhAJYs2IVhL166Ml6wxzs94IHDqJbKUzfUVyDBQcqqiSYD/AxRkVYlx9+9uhNHP387zn7xVXjT1joMulPnc5VKnyuAJiu/qtfqMEgvaul4g/ze3VJkYAF+lXJ0AV2IxTcNcQ5aJjIZw3+8eTO+eu9G6WP1lXxb9wNXxnFjhz3jqqe4x3V/Uhnx7A57szlMGtSYNTjZ70YgEsOBK+O4Y23VkssIimU/6VZNo/EEvvdCNz756Ak8fmoIQ54QdqcpHwb4rooWvUrq6j3blbEp+CPxtB0oc7W1sQJv2FSLRz64E01WmrVKCCHLhVYlx/o6M45kyBaeGnDDZlDDMY9FYo1Sjq/dtwnNWUauZZM8SmfMF4ZFp8o6lm1HswUJDjg+a0F32BOc81om4zEI16m7Wq0waZTY0TK9l1jMBtuNanhDMfzowFWsqzVhe1OltHWqkJlR8RozuYR4OY/SKWoAyxirYIz9mjF2kTF2gTG2mzFmYYw9wxjrEv5O3TlOlpQvP3UR7/jhK/jlkf6CPN7FER/WJM3aErNtR67NvAh3TaUfwVKhU0GjlKOuUgt3IFq2xk69EwHpgr7Npkd3lj2wYga2VAFstUmzoCZOQ+4gGJseyZPNpoYK3LJ6ek9kQ6UOr/S44AlGcVOarn7SMZo1aHcYsL9renHkZL8bMsZn5TPZ3FCBU/1u7O8aRziWwB1rMo9zWayksp80q6bD7hASHB/IfvoXJwEAN8xq4CRijGFbUyWOZlg9P9nP/04tJANrNajxX2/dgtYl1CiLEEJIbna0WHB6wCOV6QJ8uep/7evCYyeHcGtn5vfxYqo1a6QkRXLTpEy2NlXw2eSr042cgsJUhLmqyTJpsGhh1atw3/YGANOjhwBIM2DFv7udfrxzVxMYY1LQXsjAUrzGbJv1XrxcR+kUOwP7TQBPcxzXCWATgAsAPgdgH8dxHQD2Cf8nS1j32BRkjOHvfnMaDx/qXdBjReMJdI9NzdjP5zBqsLrKiANXpjNxkVgCvnAsbQArEksZy5GFjcYTGHQH0SQ0LWq16zHsCSEQSR9MSwGsrjQBbJVZgzFveN6d8IY8ITiM6qyrnZnUV2oRiSfAGOYsHdrTbsPhqy6pKdPpATc6HEbo1ZlLrTc1VKDPFcCvjvbDpFHguiU4/7PWrIVKIUv75iZ2cP7H16yBWiFDlUmNliwr2Ltarbg2EcCwJ/X34ESfG2atMuv9CSGErFz3bquHTAZ85OHjCMfiCEbi+NxvzuAbz1zGm7bU4V/u2VCW42q06jHsCWLMF4LTF5ozC6xTKbCuzowjV6eTIUPC++J8t77oVAoc/fzt0jii+kod6iq0UMiYVCFoFzKxRo0Cd2+u44/dkv+897n0OKegVshSvpblOkqnaAEsY8wM4CYAPwQAjuMiHMe5AdwN4CHhZg8BuKdYx0CKLxSNY8gTxIduasUtq+34wuPnFlTT3zvhRySewOpZDWlu7LDhyLVJKZBxJ82AzUQc2TI4WfoAdsgdRDzBodEqBrD8ilimMuJSZ2DrKvggcmieZcR8yc38XvDF78vGOrO0fzKTGztsCMcSONY7CY7jcGrAg4312ZtFiNnEZy+MYW+nY15BdrnJZAyNlvRvOv1CAPuqddV46L078LX7NmUtkd7Vygfwr/SkZmFP9ruxKUNDLEIIIWRVlRFfu28TjvVO4uOPnMCrv/kifnG0Hx/f246v378JKkV53mPv2VyLBAf8/JV+jAlzV+eys8WCk/1u6VpyKMftUNnMfv/c025Do1Un9aUQM7D3bWuAVsU3S9Qo5agxawqcgfWjxaZP6YexXEfpFPOnrgWAE8D/MsZOMMZ+wBjTA6jiOG5YuM0IgLT1fYyxBxhjRxljR53OxTMahczUOxEAxwGrq414x84mxBMcrmQplZ2L2LBndgC7p8OGSCwhdW2b8M8dwNZV8MHjQBkysGK5hpiBFUs6MjVy8obEJk6lCWB3Ce3eX5zH2KF4gsPFYd+8s3biKJ1s5cOiXa1W6FVy/GB/DwYmg3D5I9g0R7nrhjozxNfv25dg+bBI7EQ8W78rCLmMocaswc5Wa8o83NnWVJtg1ipxaNb8O18oisujPqnxFSGEEJLO6zbW4uN72/HMeX7e6aMP7MLfvGp1WRc/W+0G3LTKjp+90gtnjgHsdc0WROIJnBKahQ5JExUK13zw/71+LR794C7p/2tqTPjMHavw0b1tM27XlMe4vFz0OKdSyoeB5TtKp5gBrALAVgDf5ThuCwA/ZpULc3z9YtoaRo7jHuQ4bjvHcdvt9vLU15O5XR3ng9VWmwFtDjHLOP8A9tKID3IZS/kl3NlihUouwwGhWdSkEMAmN3GajS9xZWXJwPYJgYe4B7ZRmn+a/sXKE4xCIWPQqeY3yiRfHQ4D6iq0eO7iWN73PdnvxoQ/gltWz+/3cmN9BdbWmKSSm2z0agX++o5VeO6SE1/90yUAwKYMDZyS77OqygilnOHmeR7jYlBXocFwmgz5wGQA1SYNFDlmlmUyhh0tlpQA9rlLTiQ4fsg7IYQQks1n7liFh963A0996kZpEbzc3nN9E8Z8YcQS3Jx7YAG+6SAAnBFGMw65Q2CM77lRKHq1YkY5s1zG8MnbOlI6JDdb9dK4xYUKx+LocwXQZk9NLCzXUTrFDGAHAAxwHPeK8P9fgw9oRxljNQAg/J3/FfQy8u3nruBjjxzH+NT8Z3KWk5hRbLbp0FCphVLO0J2l2+5cLo340GzVpcyk1Krk2NZUKWUMxQysNcvgaZmMocasLcse2D5XAGqFTFoR1KrksOpVGMgQTHuCUZi1ypKtZjLGsLfTjgNXxhGOxee+Q5J9F0ahkDHcssox943TsBvVePJTN6Ijw/ic2d5zfTM6q434w6khqBSylOx8Ou/c3YQP3thasox2MdiNavhCManUSdQ/GUSDJb/V4nT7YJ8+Owy7UY1tTdRHjxBCSHYyGcPNq+zQqYo/7i9XN69ySAkCh3HuINRqUMNmUEvVfkPu4Lz7eSxUk1WP8alIylif+eibCCDBIW0zxeU6Sqdo3zGO40YA9DPGVgsfug3AeQCPA3i38LF3A3isWMewFDx1dhh/PD2M13xzP16ZlSFZCnqcfjiMahg1SijkMjRZ9QvLwI760Fmdfp7Yng4bLo744PSFMRmYOwML8Hs9BydL/0s75A6hrkI7Yy9CXWXmYFoMYEtp72oHApG4VJY94gmlDWZP9btx69efx1lhxfLZC6O4rtlSsoZTCrkM//rG9QCAtTWmnPbbvH1nE/7u1Z3FPrSiEleTZy9u9QtD1/Mxex9sIBLDcxedePW6asjTzI8lhBBCFju5jOFdu5sA5J5F7aw24pIQwA57QvPu57FQzdbCNXLK1IEYWL6jdIq95PAJAD9jjJ0GsBnAvwH4CoA7GGNdAG4X/r9ijXnD2NligV6twAceOop4Yn5dYcvl6rh/xl7IVps+4z7PuQQiMfS5AhkzbDd28KWOB644MTElBrDZg6hsQWMxDXmC0oBr6ViyBNPeYBTGEgew17fZoFLI8NxFJ070TeLm/+853P+9gylNuL7250vocfrxT4+fQ++EH5dHp3D72tLuLd3WZMGX7l6Hj+9tL+nzlpMYwDp90wFsKBrHmC8s7SPO1ex9sC9cciIYjeOuDdWFO2BCCCGkxN61uxnfeuuWnPs5rK424vKoD/EEhyF3cN4diBeqKcu893yJlY8taUqIgeU5SqeoASzHcSeFfawbOY67h+O4SY7jJjiOu43juA6O427nOC79gMIVIJ7gMOGP4LpmC969uwm+cEzqRrtYcRyHJ04PIRjhM3VXx/0zhia32g3onfAjFk/k/dhdo1PgOL7jXTrras2oNmnwpT+cx/OXnTBrlXPuA6yr0GLMF0Yklv/xLMSwO3VVr7aCD6bTja7xliEDq1XJsbvViqfPDuOBnx5DhU6J88NevO0Hh+ASSrSP901if9c4tjRW4GjvJP7u16cBALevmV/58EK8a3dzyQPnchL3yyQHsOJijNjJOVfiPtjnLzkx5g3hqbMjsOpV2NG89EYMEUIIISKVQobXb6pN6b6byepqI8KxBHon/BjyBFFbUbj9r/kQ96YWIgPb4/SjyqSGIcOIweU4SmfpzZdYRiYDEcSFjedW4WJ1YpHvhb044sPHHzmB/9nfA3cgApc/MiMD22bXIxrn0D+PxkliSUdnhgysXMbwsw/uRG2FFqf63Vk7EIvqKrXgOKSdgZlsYiq8oNLnZLF4AmO+EGrNqRnYUDQhBYfJylFCDAC3djow5AkhFInj4ffvxIPv2o6usSm86Tsv4cyAB9/a14VKnRI/ed8OrK8z4ZWrLnQ4DNLKISme6RLi6Z8XsQlYvhlYAHjv9c3wBKN47bcO4NkLo7hzXXXOjaAIIYSQ5UC8xjzYM4FQNFG2EmKdSgGHUV2QwLLP5c96XbYcR+nQ1UsZjXn5YJUPYPlgLPlidTG6OOIFAPz62IBUKtxim665n553mn8weGnUB61SLm3IT6fNbsBvP3o9PnlbB94t7HvIpr4it1mwX3nqIt75w8P5HXAGo74wEhxQM6sspU7Img25UzvL8gFs6Rsj3LW+GpsbKvDfb9+Kjioj9q524OH370QomsAbv/MSnrvkxAdubIVRo8T/e906AFhRWdBysupTM7BiE7B898ACwPXtNvzuY9dDr5IjEInjNVQ+TAghZIXpcBjBGKQpDIUcoZMvvhPxwjOwvRMBaWxjpucBltconcXTSmwFcgrZVrEJEgBM+Bd3BvbyKB+Y9rkC+OWRfgCYUUIstvDudk7htjxncF4a8WFVlWHOMhC1Qo7P3LEqp8cUg8a5ZsF2O6cw6A4WJBM6nGEwtrjPYtAdwIZ6s/RxjuPgDcXKkoF1mDT4/cdumPGxHS0WPPWpG/EPvzuDM4MeqUHCjhYLfvHALqytTd9kixSWSiFDpU4J59T0gkf/ZAAquSyneXfpdFab8NjH9+DIVRf20PgcQgghK4xWJUeLVY+XrvA9IcpVQgzws2BfEKZrzFcwwvfGaLJmCWCTRulsaVwekwcogC0jMbNiN6qhF+rW05WXLiaXR3xosuow7gvjV8cGIJexGdmgCp0KVr0KPWlG6XAcl3VMTI9zCrvaCjtbrMasBWNzZ2D7XPznu51T2LrAX+4hYXbn7FU9cd/i7FE6U+EY4gluUY18qdSr8N13bEv5nu1cJLPfVgqbQT0zA+sKoq5Sm/Nen3TMWiVl0QkhhKxYq6uNUhVhOTOwTVYdxnxhBCNxaFXyue+QRv/k3FuLluMoHSohLqMxHx/o2I1qVOpUYGzxlxBfGvVhY30FXruxBvEEh4ZKbcpYk1a7PiWA/dSjJ/DBnxxL28AIACKxBEa8oXmVRmajEmaxDmXJwAYjcWlUyZWxhe+DzZSBNWuV0KvkKV2RvaGY9PnFplRzaUl6dqN6xmvCwGQg7wZOhBBCCJkmTrtQKWSw5tBPpVgcJv46MXmhOl9iCXK2PbDLcZQOBbBl5PSFYVAroFMpIJcxVOpUi7qJkz8cw8BkEKurDLh3WwMAzGjgJGq1GaSZVAA/+uOpsyN49sIoHjs5lPaxRzwhJLjpkt9CqqvIPkpnIGm0TXchAlhPCEa1QioLFzHG+LE+szKw4tiaxRjAkvKyG2dmYPsng/Nq4EQIIYQQntjIqdasKetCvbgdKHmrUCYTU2F86Q/npSkgol4hKM22BxZYfqN0KIAtI6cvLHUaBQCrXiXNN12MuoTgrqPKiOuaK7G71YqbV9lTbtfm0GPCH5G6nR3rnUQklkCFTol/fuJ82i5oA27+l6oY2aW6Sl3WAFYsv5DL2IzAe76G3KkzYKVjSRNMi6OTKIAls9mFEmKO4+APx+DyRygDSwghhCzA6mq+l0c5y4eB6WkDYlPXbJ675MSPXrqK5y6Nzfh4vysAo1qBCl32a8iP7W3HZ1+9ev4Hu8hQAFtGTl8YdkNSAGtQLeo9sJeFMTerq4xgjOHnD+zCe25oSbldq9CVWAx493eNQyFj+OG7t8MdjOLLT15Muc9CuqvOpcmiw+BkEKFoPO3n+4X9r9saKwtSQjzkCWZsy16bJYA1UQBLZrEZ1QhG4/BH4lLpT7Yu3YQQQgjJrtGig1Ypl5prlotdysDOHcCOevks7f6umU2fel0BNFp1c2aSd7dZcX3b8mneSAFsGTl9YdhNyQGsGuNCF2KO4/CjA1eluY+LweVRH9QK2ZwljFubKqFSyPD7E4MAgJeujGNrYyW2NVnw5usa8JvjA4jFEzPuMzAZhIwB1ebCd4Pb1FCBWILDmUFP2s/3uQLQKGXY2WpBnyuQMdDN1bA7lLGrXV2lFu5AFP5wTPqYlzKwJANxgWvcF8b5IX6E1Zoa6gJNCCGEzJdcxvC9d27Dx/a2l/U4rHo1ZCy3PbDDHj758eLl8Rn9ZPomAlk7EC9XFMCWUUoGNqmEeNQbxpeeOI+fH+4r1+GluDTqQ0eVAfI5OqBa9CrcvakWvz0+iGvjfpwd8uAGYWTHuloTYgkOY7N+WQcng6g2aaCUF/5HcktjBQDgeO9k2s/3uwKor9Sh3WFAgsOCNrmHonFM+CMZM7DTo3Sms7DiypvNML/RKGT5Sl6dPTfkhV5o/08IIYSQ+bt5lR3Nafq4lJJcxmA1qHMqIR4RJlwMuoPSPNd4gsPACu2NQQFsmQQjcfjCsVl7YNXwBKOIxhPSD6c4dzVZt3MKH/7psQV1LZuPrtEprKoy5nTb997QgmA0js/88iQ4DtjTwQewtUJgJ64kifjuqsX5BbQZ1Giy6nC8L0MAOxlEQ6UW7Q6+9Ll7bP4BrPgCM7sDsUjcv5gcwA5MBmAzqObdQp0sX1IA6wvj7KAHa2tNCxqhQwghhJDFw25Q51RCPOwJodXOB9z7u8YBACPeECLxBJosK29hmwLYMhGDT4dx5h5YAJj0R6QsYNeYL+W++y878fS5Efz1L04inkg/lqbQPIEoRryhnAPYtbUm7Gyx4HifGwa1ApvqzQCmN8wPuWd2XBuYDBalA7Foa2Mljve5U8b4cByHAVcAjRYdWm0GMLawUTpDQmCeaV9FXQUfpCd3Ih6YDJZ9HwZZnMSs/Kg3hPPDXqyrNZf5iAghhBBSKA6TOqeE1Kg3hJ0tVjRadFIAK3UgphJiUipiy+zkDKxNCGDHp6YD2HR7MoeELN+BK+P41l+6SnG4uDw23cApV+8VGjztarVCIZQGi915k+eyxuL8DNhidlfd2lgBpy8sNYsSeYJR+MIxNFh00Kr4Df1XFtCJeFgIzGsyBKQOoxpKOZuVgQ0WLftMljaLXgUBB7zSAAAfp0lEQVQZA45ccyEQiWN9HQWwhBBCyHJhN6gx5ss+Ricci2N8KoJqkwY3dthwsHsc0XgCfcJYnJXY3JEC2BLwBKP4xZE+PH12GKcH+CyguNqSHMBa9Py/J/xhXBNKiDkuNSM46A6i2arDm7bU4Zv7urDvwmjRvwbxeMTyhVzcsbYKr91Yg7fvapQ+ZtIoYVQrMOyZ/mUd8YYQT3BFDWC3NFYCQEoZsdiBWAwg2x2GBWVgxdLoTCXEMhlDbYUWfUJzrkSCw6A7SKNRSFri/pj9l/nV1vV11MCJEEIIWS7sRjXGpyJIZKmoFPfI1pg1uLHDDn8kjiNXXehzBaCQsYzXnMsZBbAl8LNXevHZ35zBhx8+jjf890t48syI1MTIYZz+oRNLiCemIuidCEgrKrPLiIfdfLntv7xxPdbVmvCRnx3Hy1fGi/o1uAN8p1yLXpXzfeQyhm+/bSv2rnbM+HhNhWZGBlbMiorltcXQWW2ETiXHiT73jI+LgWSDhQ8g2+0G9Dinsr6QZDPkCcGiV0GjzLyftd1uQLcQJI9PhRGJJYpaPk2WNrtBDV84BrVChna7odyHQwghhJACcRjViCc4TAYyj9EcEUboVJs1uKHdCotehY8+chx/uTiG+kqtVOW4kqy8r7gMTvd70GDR4olP7EFdhRaPHumD0xeGjM0MCG1CBnZ8KoxrE37sXW2HQsZSGjkNuUOoMWuhUynwk/ftRLNVhw/85ChOZGhSVAieYBRyGYNBrVjwY9WYtdJeUWB6P2gxs5AKuQwb682pGdhJMYDlg+dVVUaEYwn0jM+vkdOwOzjnSlh7lQE9Tj9i8QT6S/C1k6XNJlRpdFYbV+SbFCGEELJc2YVE1uzpHMmGkxqEGjVK/PYj18NhVOPiiG9FdiAGKIAtiTODHmysr8D6OjPu216PA1fGcbLfDatBPWMkjUmrgELGcH7Yi1A0gfYqI1psenQlBbDReAKjvpDUDMmiV+HhD+yEQa3AN/cVbz+sJxiFSaOYc1ByLmortNJeUWA6A1uTYXZqoWxtrMT5Ie+MPcX9rgDMWiVMGn4G644WCwDgYM9E3o8fjsVxasCD1jmyZB0OIyLxBPpcAWkvLO2BJZmIo7bW0f5XQgghZFlJnjaQyYiQ9KkSEiTNNj1+99Eb8J7rm/G2HY0Z77ecUQBbZJP+CAbdQWwQLj7v3VYPgG+BndyBGAAYY7DoVTgmzCtttuqwqso4o4R41BsCxwG1SVk+h1GD12yowcHuCQQjMxs+FYo7GIVZqyzIY9WaNZjwR6RAcmAygCqTGmpFccfI7Gy1Ipbg8Mz56T3D/ZNBqXwY4Du51Zo1ONidf0n2U2dG4PJHcP/2+qy36xDG9XSNTWFAyABTF2KSifjmtp46EBNCCCHLiiOHAHbYE4JeJYcxqQpSr1bgn96wDndtqCn6MS5GFMAW2dkhDwBIAWx9pQ572vmZqPZZASwAWA1q9ApdxZqterQ7DOhzBaTAVBw/Uzsr4LltjQPhWAIvzwq8PMEoPv7I8ZS5q/nyFDCAFTv0DicNZS5FBvLGdhta7Xp89/lucBwHfziG80PeGfOzGGPY3WbDoR5X3vtgf3LwGlpsetzQZst6uzYhgL0yNoWBySAqdUroC1CaTZYnKYClBk6EEELIsiJlYLPMgh31hlBt1hSkCnK5oAC2yM4M8gFscvbkvu0NAKZLA5OJo3RUchlqK7RYVWUExwHdwmgXMRCdHcDuaLFAp5LjLxfHZnz85SvjeOL0MH57fHBBX4cnGIVZl3sDp2xqhVLhYaF8tlRzUGUyhg/f3Ibzw1682DWOr/35Esanwnj39c0zbnd9mxUufwSXRlNn8GZydtCD431uvGNXE2Sy7C8wBrUCdRVadI36aIQOmdOr1lXhwze3YW0NBbCEEELIcqJXK6BTyaVOw+kMe/jeN2QaBbBFdnaQb+Bk1k1nL+9cW4W6Ci3W1qZekIpNnRosWshlDKuqxHJTPpgS90zWztovqlbIsafdhucujoHjpjOHYgZ4oaN2vAUtIeZ/CYc8/PicoRKOkblncx2qTRp88fFz+PHL1/COXY3SvlfR7jYrAODl7tz3wT58qBcapQz3bs1ePixqdxjQNTaFwckANXAiWdVX6vC5uzqpgRMhhBCyDDmM6qwZ2BFPCFWmlTcqJxu6IiqyM4MeqXxYpFHK8eLf7cV7b2hJub1V6ETcbOXLWptt+hmdiIfcQVTolNCpUktOb+10YMgTmpE5PDvoBQCc6HdjIssvx1z4EuLClLlWC/t3h9xBnB30IJbg0O4ozXgQlUKGD9zYgp5xP6pNGnz21Z0pt6mt0KLZqst5H+ykP4LHTg7h7k11MxYqsukQ5s3yGVgKYAkhhBBCViK7UQ2nj99W5w/HZmxhiyc4jPnCK3LWazYUwBaRJxBFvyuI9Wm6h8ozlJmKs2CbbXwAq5TL0GY34KxQijzszlxGsLeTn7cqlhFzHIdzQx50VvNlyM9fcs7r6+A4rqB7YDVKOWwGFYY9QTxxeghKOcNta6oK8ti5eOuORty1vhrfuH8zjJr0X9PuNhte6XEhFk/M+Xg/PdSLYDSO9+1JXZDIpN1hQDiWQDiWoAZOhBBCCCErlN2oxpgvDKcvjN1f3oeHDl6TPjc+FUY8wUnJH8KjALaIZjdwyoW4B7bZOr0v8vp2Kw5fdSEYiWPQHURdhnEzVSYN1tWa8JcLfAA75gtjfCqC+7c3oMqkTtkfm6upcAzxBFewABbgZ8EOTAbxxOlh3LzKXtDHnotercB337FNKhVOZ3ebFb5wDGeHvFkfKxSN48cvX8OtnQ6srjbmfAwdVdMZZ9oDSwghhBCyMjmMGjh9YXzvhW54QzGc7HdLn0ueAUumUQBbROkaOM1F7EbWYpsOcG7t5DsMH+qZwJA7mNLAKdmda6txrG8So94QzokBdL0Zt3Y68OJlJyKxuTOKs3mCUQBAhbYwTZwA/hfxlR4Xhj0hvH5TbcEet1C2N1UCAM4MuLPe7lfHBuDyR/Chm1rzevx2+3SwW2+hDCwhhBBCyEpkN6rhC8Xw00O9AKYbtwL8/lcAtAd2Fgpgi+hUvxv1lVpU6nMP/Pa02/GVN22YkR3c0WKBVinHH04PwRuKZe1E9tqN1eA44Kkzwzg76AVjwJoaE27trIIvHMPRa668vw4xgDUVMEtaW6FFJJ6AWiEraflwrmrMGhjViqydiOMJDv/zYg82N1SkNIKai1mnlGZ/UQkxIYQQQsjKJE4lSSQ43L7Gge4xv7QPdkSYPkIZ2JkogC2SeILDS1fGsbs1c5lqOiqFDG/Z0Thjj6xaIccN7TY8cXoYQGoH4mTtDiM6q43445lhnBvyoMWqh0GtwA3tVqgVMjx5djjvr0UMYAtZ5it+DbetccCwCGegMsawqtooNc9KZ9+FUfS5AvjQTa3zms3VUWWAWavMuA+XEEIIIYQsb3YTH8Det70et6x2IBiNY9jLZ14H3UGoFDJpSgnhUQBbJKcG3PCGYrhplb0gj7e30y6V/86VsXvthhocuTaJQz0uaVSPTqXAazbU4LGTQwhG4nk9tydQ+AC2roLf9/m6jYuvfFi0qsqArlHfjLFEyX5xpB8Ooxp3rJ1fBvmdu5rx4ZvbFnKIhBBCCCFkCdvWVIm/2lqPT9++SprK0T3GJ1BODXiwpsY0r0TJckYBbIFwHF9OOiasmOy/PA7GgD3ttoI8/i2rHdK/a+YIYF+zsQYAnzlN7oD85usa4AvF8OSZ/LKwUgY2xxExubhtjQNf/auNeNW66oI9ZqF1OIyYDETTzuYa8YTw3KUx3Lutft7zOV+9vhofuYUCWEIIIYSQlcqkUeLr929ClUmDNrsQwDqnEIsncHrAja2NFWU+wsWHAtgC6Xb68a9PXsCXn7oIANjf5cTGOnNe+1+zqavQorPaCBkDqoS9k5m02Q3oFDrirhMysACws8WCFpsevzjSn9dzF6OEWKOU4/7rGjKOE1oMxK7CXWnKiH9zfAAJDrh/e0OpD4sQQgghhCxDNoMKJo0CV8amcHHEh1A0gS2NleU+rEWHAtgCEbuEPXZyEKcH3DjR78aNHYUpHxa9bWcjbu2syinj98YtdVApZDM6IDPG8ObrGnD4mguHr7rwN786hdd9az/6XYGsj+UJRqGQMehV8gV/DUuJOOrm8qxGTokEh18e7ceuVos0r5cQQgghhJCFYIyh3WFAt3MKJ/omAQBbGigDO1tRA1jG2DXG2BnG2EnG2FHhYxbG2DOMsS7h72WxrDAsdAnjAHzk4eOIJzjc2FGY8mHRu3Y34wfv3p7TbT9wYyv2febmlAzwX22th0LGcP/3D+Kxk4O4Nh7AWx48hN4Jf8bH8gSjMGuVK67+3m5Qo0KnTAlgX7nqQu9EAG++jrKvhBBCCCGkcNrsBnQ7/TjR54bdqEZ9JU2rmK0UGdi9HMdt5jhOjLw+B2Afx3EdAPYJ/1/yxAzs23c2YtAdhF4lx9am8sXmchlDg0WX8nG7UY33XN+MW1bb8dSnbsSjD+xCIBLDm79/SGrWNJtbCGBXGsYYVjlSOxE/crgPJo0Cd62vKdOREUIIIYSQ5ajNYYDTF8b+K+PY0lCx4hJIuShHCfHdAB4S/v0QgHvKcAwFN+wNwapX4ZO3dkCtkGF3mw3KeTb3KbbPv24tfvzeHWh3GLG+zoyv378JI94Qzg550t7eG4wWdAbsUrKq2oDLSZ2Inb4wnj47jPu2N0CjXFkl1YQQQgghpLjERk5OX5j2v2ZQ7AGcHIA/M8Y4AN/nOO5BAFUcx4ltcEcApJ1Bwhh7AMADANDY2Fjkw1y4EU8I1WYNHCYNHvngTjiMS2fgcLOV38c55gul/bwnGEWlbmXOn1pVZYQvFMOoN4xqswa/PNqPaJzD23cu/p9JQgghhBCytIijdABQB+IMih3A7uE4bpAx5gDwDGPsYvInOY7jhOA2hRDsPggA27dvTz+IcxEZ9oRQV8EHrduaLGU+mvzYha7GTl/quBiAD2BbVmizog4H34n40qgPdqMaPzvUiz3tNrTaDXPckxBCCCGEkPw0VGqhlDMkOGBDvXnuO6xARQ1gOY4bFP4eY4z9DsAOAKOMsRqO44YZYzUAxop5DKUy4gliW9PSXCUxqBXQKuUY82YOYFfiHlgAWCV0Iv7DqSF0jfow5Anh/71+bZmPihBCCCGELEcKuQwtNj2Uchl0qmLnGpemop0VxpgegIzjOJ/w7zsBfAnA4wDeDeArwt+PFesYSiUUjWMyEEWNeWl2CWOMwW5UwzmVGsAmEtyKDmCtBjXW1Jjw62MDAIBqkwa3r0lb9U4IIYQQQsiC/fPd66FULM5eOotBMcP6KgC/EzpnKQA8wnHc04yxIwB+yRh7P4BeAPcX8RhKQuxAXG1aOvteZ3MY1WkzsL5wDByHFRvAAsATn9iDwckgrjh9aKjU5TSHlxBCCCGEkPnY2Wot9yEsakULYDmO6wGwKc3HJwDcVqznLYdhIYCtMS/dANZuVKNrbCrl494gP1pnpXYhBviRRI1WHRqtqWOJCCGEEEIIIaVDqaQCGPEGAQDVSziA5TOwqV2IPUIAW7GCA1hCCCGEEELI4kABbAGIGdilHMDajWp4QzGEovEZHxcD2JVcQkwIIYQQQghZHCiALYARTwhmrXJJdwoT59bOHqXjDggBrI4CWEIIIYQQQkh5UQBbAMOe0JLe/wokzYKd1YmYMrCEEEIIIYSQxYIC2AIY9gSXdPkwMB3Azu5ETAEsIYQQQgghZLGgALYARpZBBtaRJQOrlDNolfJyHBYhhBBCCCGESCiAXaBwLI7xqQiqTdpyH8qCWPQqMDZzDyzHcTg35BE+x8p4dIQQQgghhBBCAeyCiSW3Sz0Dq5DLYNWr4fRNj9J58swI9neN4303tJTxyAghhBBCCCGERwHsAi2HEToiu1EtZWDdgQi+8PhZbKgz4/17KIAlhBBCCCGElN/SnfuySAx7ggCWfgYW4PfBjgkB7JefvIjJQBQPvW8HFHJa5yCEEEIIIYSUH0UmC7S71YoH37kNDRZduQ9lwcQMrCcQxe9ODOJtOxqxrtZc7sMihBBCCCGEEACUgV0wh0mDO9dVl/swCsIhBLB/PDOMSDyB+7bXl/uQCCGEEEIIIURCGVgisRvViCU4PPTyNbTa9dhQR9lXQgghhBBCyOJBASyROIz8Pt5Loz7cs7mORucQQgghhBBCFhUKYInEblRL/757c20Zj4QQQgghhBBCUlEASyQOIYDd0liBJqu+zEdDCCGEEEIIITNRAEsk1WYNbAY13rmrqdyHQgghhBBCCCEpqAsxkWiUchz5x9to7yshhBBCCCFkUaIMLJmBgldCCCGEEELIYkUBLCGEEEIIIYSQJYECWEIIIYQQQgghSwIFsIQQQgghhBBClgQKYAkhhBBCCCGELAkUwBJCCCGEEEIIWRIogCWEEEIIIYQQsiRQAEsIIYQQQgghZElgHMeV+xjmxBhzAujN8eZmAJ4FPN187m8DMF6A5y/HsRfzuZPPSzGfv5znLd39S/V1L/T+pXzudOdkqRx7oZ87n5+PQj//Yj1vuZyTxXrshb7/7HOx2F7fyvHc8/mdWe7nLds5WezHXuj7i+diuX/P87n/UrkOWej9y/m7spTP22K9DrEB0HMcZ5/zUTiOW1Z/ADxY6vsDOFqI5y/HsRfzuZPPy1I79oXcv1Rf91I6b+nOyVI59iI8d84/H4vw2Ivy3Lmck8V67IW+/+xzsdhe38rx3PP5nVnu5y3bOVnsx17o+4vnYrl/z/O5/1K5DinFeSvW78oSP2+L8jokn+NajiXEf1jC91+pz73Q+9OxL73nXuj9l/JzL9RKPW8r9djpvC29517o/enYl95zL/T+K/W5F3r/lfrchbh/uZ67IMe9JEqIFzvG2FGO47aX+zgWm5V6Xlbq150NnZNpdC5S0TmZRuciFZ2TVHROptG5SEXnZBqdi1SL9Zzkc1zLMQNbDg+W+wAWqZV6Xlbq150NnZNpdC5S0TmZRuciFZ2TVHROptG5SEXnZBqdi1SL9ZzkfFyUgSWEEEIIIYQQsiRQBpYQQgghhBBCyJJAASwhhBBCCCGEkCWBAtg8MMamyn0MiwVjLM4YO5n0pznLbW9hjD1RuqMrLsYYxxh7OOn/CsaYczl9jfPFGLtHOD+d5T6WcqCfjezoNXSmuc4HY+x5xtiia7RRaCv9dSMTxtg/MsbOMcZOC++zO8t9TOXCGKtnjD3GGOtijHUzxr7JGFNluf2nGWO6Uh5jKQm/L19P+v/fMMb+qYyHVBZJ16LnGGOnGGP/hzFGsY1gOb/n0jeZzFeQ47jNSX+ulfuASsgPYD1jTCv8/w4Ag/k8AGNMUfCjWhzeCuCA8HfOGGPy4hxOyS34Z4OQFWherxvLGWNsN4DXAdjKcdxGALcD6C/vUZUHY4wB+C2A33Mc1wFgFQADgH/NcrdPA1i2ASyAMIA3McZs5T6QMhOvRdeBf7+9C8AXynxMpAQogM0TY8zAGNvHGDvOGDvDGLtb+HgzY+wCY/9/e3cec0V1xnH8+3NpKaBUjVq0ro1L6CJKxWo0SjVtbE2VlgpUq9SldsMlMbGxpglpYq2FWhFbqSs1lqpRI6lGoApVo7HIIoJrKqKtVrRakCoE8Okf57wyvL4XXuDemffO+/sk5F7OuXfy3Jl5z8wz58wZXZ+vBM0onMT2CpK2lfRrSXPyFePzCtU7SrpP0vOSrqvBFbL7ga/n96OBqR0VkoZKelzSfEmPSTool4+RNE3SQ8CD5YfcWpL6A0cDZwOjctlxkh7uattLWilpgqSngCOri7zptmTfeFjS4MLnHpV0SKlRl6TziAxJkySNye9fljSu0L7WvkduY+ujN9hIu9FoH/mapOckzZU0scajGwYCb0XEaoCIeCsiXpM0RNLf8u+fLmkgfNhbf3XujVokaWil0TfXl4FVEXEzQESsAy4CzpLUT9L4/JsXShor6XxgD2CWpFkVxt1Ka0kztl7UuSKfjz6U18eDkvaWNEDS0sLxt5+kVyVtX3bgrRIRy4DvAz9R0vCcVNIl+RjzlKQrqou69eqat7R7ElGFVcDwiDgMGAZMyFcHAQ4Ars1Xgv4LfKuiGMvwCa0fPnxPLjsbWB4RhwOHA+dK2i/XDQXGAoOAzwDfLD3i5vozMEpSH+ALwBOFuueAYyLiUODnwOWFusOAERFxbGmRludk4IGIeAH4j6QhubzRtu8HPBERh0TEo6VH2zpbsm/cCIwBkHQg0Cciniot4p7lrdy+/h64uOpgrOUatRsfkf+mJgMnRsQQYNeSYqzCDGAvSS9I+p2kY3OycQ3pGDIEuIkNeyH7RsRg4Ee5ri4+C8wtFkTECuAV4BxgX2Bw7qm+LSImAq8BwyJiWMmxlula4DRJAzqVXwNM6VgfwMSIWA4sADrOPU4CpkfEmtKiLUFEvARsC+xGg3NSSSeS2p0jIuIQ4MrKAi5HLfMWJ7CbT8DlkhYCfwX2BHbPdUsiYkF+P5fUqNZVcQjx8Fz2FeAMSQtIJ+27kP44AP4eES/lK6dTSVfc21ZELCRt39GkHreiAcCdkhYBV5EOvh1mRsTbpQRZvtGk5I382jEcsNG2XwfcVW6IrbeF+8adwEn5BPUs4JZSgu2Z7s6vdW9DLWnUbnTlYOCliFiS/z91I59taxGxEhhC6lF6E7gdOA/4HDAzH2cvAz5d+NrU/N2HSaOePllq0NU4DpgcEWsBanx8/YicxP8ROL9T1ZHAn/L7W1l/zL0dGJnfj8r/r7NG56QnADdHxHvQK/aZWuYtdb0Pr5VOI131HRIRayS9DPTJdasLn1sHtE1XfJMIGBsR0zcolI4DOj9wuA4PIJ4GjCcdQHcplP8CmBURw5Umt5pdqPtfSbGVStLOpGFen5cUpCugAdxH422/Kie1dbRZ+0ZEvCdpJumq8KmkE9e6WsuGF0/7dKrvaEfX0TuOUZtaH7W1kXbjXnrpOinK7eNsYLakp4EfA4sjotEtF3U8zgI8A4woFkjaEdgbeLmKgHqQ3wLzgJu78dlppERmZ9Ix5qFWBlYFSfuTjh3LaHxO+tUqYqtQLfMW98BuvgHAsrwTDAP2qTqgHmQ68MOOeyokHSipX64bmodubEO6AliHIaM3AeMi4ulO5QNYP3HPmFIjqs4I4NaI2Cci9o2IvYAlwDHUc9tvypbsGzcAE4E5EfFOa8Or1FJgkKSP5x6i46sOqGK9eX00aje2oet18jywv9bPej+y8wLrQtJBkg4oFA0GngV2VZrgCUnbSyqO8BmZy48mDZ1cXlrArfUg0FfSGfDhpH8TSCNVpgPnKU+MmJMzgHeBHcoPtVy59/AO0nDZDo+R7ycnJS+P5M+uBOYAVwN/qdsFZEm7AtcBkyIiaHxOOhP4nvIs1YV9pq5qmbc4ge2m3DiuJt1P8MV8NfQM0j1tltxAulI6Lw+RnMz6HpQ5wCTSAXgJcE+XS2gjEfHPfK9NZ1cCv5Q0n97RgwRp2F/nbXpXLq/dtt+ULdk3ImIusILuXUlvOx1taES8SjrhWpRf51caWEW8PoDG7cYoulgnEfE+6f7OByTNJSUpdUnSOusPTJH0TB76N4h03/wI4FdKk98tAI4qfGdVbluuY8OEpq3lZGQ48G1JLwIvkO7ru5R03vEKsDCvk+/kr/2BtJ/UdRKnoglAcTbisaQEbSHwXeCCQt3twOnUZ/hwx3wsi0nDY2cA43Jdl+ekEfEAqTf6yTy8uJZzLdQ9b1FqF2xTlGYEvT4i6jSzn1lL5eHjF0fESVXH0tNJ2oM0XPDgiPig4nCazm3ohrw+toyk/hGxMk9Cci3wYkRcVXVcVZM0m9TWPll1LGZWvbofY9wD2w2SfkCaHOGyqmMxs/rJQ+OeAH5W0+TVbWiB18dWOTf3miwmDY2bXHE8ZmY9Sm84xrgH1szMzMzMzNqCe2DNzMzMzMysLTiB7YKkvSTNypMnLJZ0QS7fWdJMSS/m151y+cGSHpe0WtLFheUclG8u7/i3QtKFVf0uMzMzMzOrj2blLbnuoryMRZKmSuqRjzHzEOIuSBoIDIyIeZJ2ID3c9xTSYy/ejogrJP0U2CkiLpG0G2la6lOAdyJifBfL3Jb0+IwjImJpWb/FzMzMzMzqqVl5i6Q9SY86HBQR70u6A7g/Im4p/1dtnHtguxARr0fEvPz+XdLjP/YETgam5I9NIW14ImJZRMwB1mxksccD/3DyamZmZmZmzdDkvGU70uOJtgP6Aq+1OPwt4gR2E/ID0w8lzRC6e0S8nqv+Dey+GYsaRZoRzMzMzMzMrKm2Jm+JiH8B40nPVn4dWB4RM1oW7FZwArsRkvqTHqp+YUSsKNblB2t3a/y1pI8B3wDubHqQZmZmZmbWq21t3pLvkT0Z2A/YA+gn6fQWhbtVnMA2IGl70k5wW0TcnYvfyOPMO8abL+vm4k4E5kXEG82P1MzMzMzMeqsm5S0nAEsi4s2IWAPcDRzVqpi3hhPYLkgScCPwbET8plA1DTgzvz8TuLebixyNhw+bmZmZmVkTNTFveQX4kqS+eZnHk+6n7XE8C3EXJB0NPAI8DXyQiy8ljSe/A9gbWAqcGhFvS/oU8CSwY/78StIMXisk9SPtEPtHxPJyf4mZmZmZmdVVk/OWccBIYC0wHzgnIlaX+Xu6wwmsmZmZmZmZtQUPITYzMzMzM7O24ATWzMzMzMzM2oITWDMzMzMzM2sLTmDNzMzMzMysLTiBNTMzMzMzs7bgBNbMzMzMzMzaghNYMzMzMzMzawv/B3uGhcHH8PRcAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# pull temperature data over a range - make sure to use tz-aware datetimes!\n", - "temp_C = station.load_isd_daily_temp_data(start_date, end_date)\n", - "temp_F = temp_C * 1.8 + 32 # convert from Celsius to Fahrenheit\n", - "ax = temp_F.plot(figsize=(16,4))\n", - "ax.set_ylabel('Temp (F)')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This temperature data comes from the NOAA Integrated Surface Database (ISD). As alluded to earlier, data is also available for TMY3 and CZ2010 weather normal for some weather stations, including this one (that was one of our filtering criteria!)." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# pull normalized TMY3 temperature data over a range, tiling the normal year as necessary.\n", - "temp_C = station.load_tmy3_hourly_temp_data(start_date, end_date)\n", - "temp_F = temp_C * 1.8 + 32 # convert from Celsius to Fahrenheit\n", - "ax = temp_F.plot(figsize=(16,4))\n", - "ax.set_ylabel('Temp (F)')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# pull normalized CZ2010 temperature data over a range, tiling the normal year as necessary\n", - "temp_C = station.load_cz2010_hourly_temp_data(start_date, end_date)\n", - "temp_F = temp_C * 1.8 + 32 # convert from Celsius to Fahrenheit\n", - "ax = temp_F.plot(figsize=(16,4))\n", - "ax.set_ylabel('Temp (F)')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There is plenty more to do with the library, including a host of functions for pulling raw data files and caching the results. Here's a taste:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['ftp://ftp.ncei.noaa.gov/pub/data/noaa/2006/722880-23152-2006.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2007/722880-23152-2007.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2008/722880-23152-2008.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2009/722880-23152-2009.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2010/722880-23152-2010.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2011/722880-23152-2011.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2012/722880-23152-2012.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2013/722880-23152-2013.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2014/722880-23152-2014.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2015/722880-23152-2015.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2016/722880-23152-2016.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2017/722880-23152-2017.gz',\n", - " 'ftp://ftp.ncei.noaa.gov/pub/data/noaa/2018/722880-23152-2018.gz']" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# see raw data files - try downloading one of these!\n", - "station.get_isd_filenames(with_host=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.4" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/scripts/validate_ghcnh_against_isd.py b/scripts/validate_ghcnh_against_isd.py new file mode 100644 index 0000000..6279ff4 --- /dev/null +++ b/scripts/validate_ghcnh_against_isd.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +"""Compare GHCNh-served temperatures against the retired ISD dataset. + +Fetches both datasets from the NCEI access api for a stratified station +sample over their overlap years, runs both through the library's hourly +resampling pipeline, and reports per-station-year deviation statistics. +ISD stopped receiving data 2025-08-27 but still serves its history, which +makes this comparison reproducible. + +Run from the repository root: + + python scripts/validate_ghcnh_against_isd.py +""" +import csv +import io +import sqlite3 +import sys +import time + +import pandas as pd +import pytz +import requests + +from eeweather.sources.ghcnh import API_URL, fetch_ghcnh_hourly + + + +YEARS = [2016, 2019, 2022, 2024] + +STATIONS_PER_STATE_QUALITY = {"high": 2, "medium": 1, "low": 1} + + +def _sample_stations(): + """Deterministic stratified sample: per state, up to 2 high-quality + stations plus 1 medium and 1 low, covering every state and territory.""" + conn = sqlite3.connect("eeweather/resources/metadata.db") + cur = conn.cursor() + cur.execute( + """ + select quality, usaf_id, recent_wban_id, ghcn_id, coalesce(state, 'INTL') + from isd_station_metadata + order by state, quality, usaf_id + """ + ) + by_stratum = {} + for quality, usaf_id, wban_id, ghcn_id, state in cur.fetchall(): + by_stratum.setdefault((state, quality), []).append( + (quality, usaf_id, wban_id, ghcn_id, state) + ) + + stations = [] + for (state, quality), rows in sorted(by_stratum.items()): + n = STATIONS_PER_STATE_QUALITY[quality] + step = max(1, len(rows) // n) + stations.extend(rows[::step][:n]) + + return stations + + +def _caltrack_hourly(ts): + # CalTRACK 2.3.3 + resampled = ( + ts.resample("min") + .mean() + .interpolate(method="linear", limit=60, limit_direction="both") + .resample("h") + .mean() + ) + + return resampled + + +def _fetch_isd_hourly(usaf_id, wban_id, year): + resp = requests.get( + API_URL, + params={ + "dataset": "global-hourly", + "dataTypes": "TMP", + "stations": "{}{}".format(usaf_id, wban_id), + "startDate": "{}-01-01".format(year), + "endDate": "{}-12-31".format(year), + }, + timeout=120, + ) + resp.raise_for_status() + + data = [] + for record in csv.DictReader(io.StringIO(resp.text)): + date, temp = record["DATE"], str(record["TMP"]).strip() + temp_val, suffix = temp.split(",") + if suffix == "9" or temp_val == "+9999": + parsed = float("nan") + else: + parsed = float(temp_val) / 10.0 + data.append((pd.Timestamp(date, tz=pytz.UTC), parsed)) + + if not data: + return None + + ts = pd.Series(dict(data)).sort_index() + ts = ts.groupby(ts.index).mean() + + return _caltrack_hourly(ts) + + +def main(): + results = [] + for quality, usaf_id, wban_id, ghcn_id, state in _sample_stations(): + for year in YEARS: + try: + isd = _fetch_isd_hourly(usaf_id, wban_id, year) + ghcnh_raw = fetch_ghcnh_hourly(ghcn_id, year) + except requests.RequestException as e: + print("{} {} {}: fetch failed ({})".format(usaf_id, state, year, e)) + continue + if isd is None or len(ghcnh_raw) == 0: + if isd is None: + n_isd_obs = 0 + else: + n_isd_obs = len(isd) + print( + "{} {} {}: skipped (isd={}, ghcnh={} obs)".format( + usaf_id, state, year, n_isd_obs, len(ghcnh_raw) + ) + ) + continue + ghcnh = _caltrack_hourly(ghcnh_raw["temperature"]) + + both = pd.DataFrame({"isd": isd, "ghcnh": ghcnh}).dropna() + delta = (both.ghcnh - both.isd).abs() + results.append( + { + "usaf_id": usaf_id, "state": state, "quality": quality, + "year": year, "n_isd": int(isd.notna().sum()), + "n_ghcnh": int(ghcnh.notna().sum()), "n_both": len(both), + "mean_abs_delta": delta.mean(), "p99_abs_delta": delta.quantile(0.99), + "max_abs_delta": delta.max(), + "annual_mean_delta": abs(both.ghcnh.mean() - both.isd.mean()), + } + ) + r = results[-1] + print( + "{usaf_id} {state} {quality} {year}: n_isd={n_isd} n_ghcnh={n_ghcnh}" + " mean|d|={mean_abs_delta:.4f} p99|d|={p99_abs_delta:.4f}" + " max|d|={max_abs_delta:.2f} annual|d|={annual_mean_delta:.5f}".format(**r) + ) + + time.sleep(0.2) + pd.DataFrame(results).to_csv("validation_results.csv", index=False) + + df = pd.DataFrame(results) + print("\n=== summary over {} station-years ===".format(len(df))) + for col in ["mean_abs_delta", "p99_abs_delta", "annual_mean_delta"]: + print( + "{}: median={:.5f} p90={:.5f} max={:.5f}".format( + col, df[col].median(), df[col].quantile(0.9), df[col].max() + ) + ) + print("hourly coverage ratio ghcnh/isd: median={:.4f} min={:.4f}".format( + (df.n_ghcnh / df.n_isd).median(), (df.n_ghcnh / df.n_isd).min() + )) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tests/__snapshots__/test_database.ambr b/tests/__snapshots__/test_database.ambr index 83c634f..6cbad81 100644 --- a/tests/__snapshots__/test_database.ambr +++ b/tests/__snapshots__/test_database.ambr @@ -7,26 +7,30 @@ }) # --- # name: test_isd_file_metadata_table_count - 48113 + 47646 # --- # name: test_isd_station_metadata_table_content dict({ - 'ba_climate_zone': 'Very Cold', + 'ba_climate_zone': 'Hot-Humid', 'ca_climate_zone': None, - 'elevation': '+0032.5', - 'icao_code': 'PATO', - 'iecc_climate_zone': '7', - 'iecc_moisture_regime': None, - 'latitude': '+60.784', - 'longitude': '-148.848', - 'name': 'PORTAGE GLACIER', + 'elevation': '+0003.0', + 'ghcn_first_year': 1955, + 'ghcn_id': 'USW00003852', + 'ghcn_last_year': 2026, + 'ghcn_map_method': 'latlon', + 'icao_code': None, + 'iecc_climate_zone': '2', + 'iecc_moisture_regime': 'A', + 'latitude': '+30.433', + 'longitude': '-086.717', + 'name': 'HURLBURT FLD/EXERCIS', 'quality': 'high', - 'recent_wban_id': '26492', - 'state': 'AK', - 'usaf_id': '700001', - 'wban_ids': '26492,99999', + 'recent_wban_id': '99999', + 'state': 'FL', + 'usaf_id': '690090', + 'wban_ids': '99999', }) # --- # name: test_isd_station_metadata_table_count - 4845 + 4497 # --- diff --git a/tests/__snapshots__/test_ranking.ambr b/tests/__snapshots__/test_ranking.ambr index ecf4c60..6d192aa 100644 --- a/tests/__snapshots__/test_ranking.ambr +++ b/tests/__snapshots__/test_ranking.ambr @@ -1,7 +1,7 @@ # serializer version: 1 # name: test_rank_stations_is_cz2010[is_cz2010=False] tuple( - 4759, + 4411, 15, ) # --- @@ -13,19 +13,19 @@ # --- # name: test_rank_stations_is_tmy3[is_tmy3=False] tuple( - 3826, + 3479, 15, ) # --- # name: test_rank_stations_is_tmy3[is_tmy3=True] tuple( - 1019, + 1018, 15, ) # --- # name: test_rank_stations_match_climate_zones_not_null[match_ba_climate_zone] tuple( - 282, + 254, 15, ) # --- @@ -37,85 +37,85 @@ # --- # name: test_rank_stations_match_climate_zones_not_null[match_iecc_climate_zone] tuple( - 743, + 701, 15, ) # --- # name: test_rank_stations_match_climate_zones_not_null[match_iecc_moisture_regime] tuple( - 715, + 634, 15, ) # --- # name: test_rank_stations_match_climate_zones_null[match_ba_climate_zone] tuple( - 1504, + 1364, 15, ) # --- # name: test_rank_stations_match_climate_zones_null[match_ca_climate_zone] tuple( - 4611, + 4288, 15, ) # --- # name: test_rank_stations_match_climate_zones_null[match_iecc_climate_zone] tuple( - 1502, + 1364, 15, ) # --- # name: test_rank_stations_match_climate_zones_null[match_iecc_moisture_regime] tuple( - 1928, + 1754, 15, ) # --- # name: test_rank_stations_match_state[site_state=CA, match_state=False] tuple( - 4845, + 4497, 15, ) # --- # name: test_rank_stations_match_state[site_state=CA, match_state=True] tuple( - 298, + 241, 15, ) # --- # name: test_rank_stations_match_state[site_state=None, match_state=True] tuple( - 1141, + 1116, 15, ) # --- # name: test_rank_stations_max_difference_elevation_meters[max_difference_elevation_meters=200] tuple( - 4845, + 4497, 15, ) # --- # name: test_rank_stations_max_difference_elevation_meters[site_elevation=0, max_difference_elevation_meters=200] tuple( - 2756, + 2554, 15, ) # --- # name: test_rank_stations_max_difference_elevation_meters[site_elevation=0, max_difference_elevation_meters=50] tuple( - 1665, + 1506, 15, ) # --- # name: test_rank_stations_max_difference_elevation_meters[site_elevation=1000, max_difference_elevation_meters=50] tuple( - 50, + 44, 15, ) # --- # name: test_rank_stations_max_distance_meters[max_distance_meters=200000] tuple( - 50, + 43, 15, ) # --- @@ -127,31 +127,31 @@ # --- # name: test_rank_stations_minimum_quality[minimum_quality=high] tuple( - 1737, + 1858, 15, ) # --- # name: test_rank_stations_minimum_quality[minimum_quality=low] tuple( - 4845, + 4497, 15, ) # --- # name: test_rank_stations_minimum_quality[minimum_quality=medium] tuple( - 2283, + 2251, 15, ) # --- # name: test_rank_stations_minimum_tmy3_class[minimum_tmy3_class=III] tuple( - 1019, + 1018, 15, ) # --- # name: test_rank_stations_minimum_tmy3_class[minimum_tmy3_class=II] tuple( - 857, + 856, 15, ) # --- @@ -163,7 +163,7 @@ # --- # name: test_rank_stations_no_filter tuple( - 4845, + 4497, 15, ) # --- diff --git a/tests/__snapshots__/test_stations.ambr b/tests/__snapshots__/test_stations.ambr deleted file mode 100644 index 3a1da8e..0000000 --- a/tests/__snapshots__/test_stations.ambr +++ /dev/null @@ -1,117 +0,0 @@ -# serializer version: 1 -# name: test_get_gsod_filenames_multiple_year - list([ - '/pub/data/gsod/2006/722860-23119-2006.op.gz', - '/pub/data/gsod/2007/722860-23119-2007.op.gz', - '/pub/data/gsod/2008/722860-23119-2008.op.gz', - '/pub/data/gsod/2009/722860-23119-2009.op.gz', - '/pub/data/gsod/2010/722860-23119-2010.op.gz', - '/pub/data/gsod/2011/722860-23119-2011.op.gz', - '/pub/data/gsod/2012/722860-23119-2012.op.gz', - '/pub/data/gsod/2013/722860-23119-2013.op.gz', - '/pub/data/gsod/2014/722860-23119-2014.op.gz', - '/pub/data/gsod/2015/722860-23119-2015.op.gz', - '/pub/data/gsod/2016/722860-23119-2016.op.gz', - '/pub/data/gsod/2017/722860-23119-2017.op.gz', - '/pub/data/gsod/2018/722860-23119-2018.op.gz', - '/pub/data/gsod/2019/722860-23119-2019.op.gz', - '/pub/data/gsod/2020/722860-23119-2020.op.gz', - '/pub/data/gsod/2021/722860-23119-2021.op.gz', - '/pub/data/gsod/2022/722860-23119-2022.op.gz', - '/pub/data/gsod/2023/722860-23119-2023.op.gz', - '/pub/data/gsod/2024/722860-23119-2024.op.gz', - '/pub/data/gsod/2025/722860-23119-2025.op.gz', - ]) -# --- -# name: test_get_gsod_filenames_single_year - list([ - '/pub/data/gsod/2007/722860-23119-2007.op.gz', - ]) -# --- -# name: test_get_isd_filenames_multiple_year - list([ - '/pub/data/noaa/2006/722860-23119-2006.gz', - '/pub/data/noaa/2007/722860-23119-2007.gz', - '/pub/data/noaa/2008/722860-23119-2008.gz', - '/pub/data/noaa/2009/722860-23119-2009.gz', - '/pub/data/noaa/2010/722860-23119-2010.gz', - '/pub/data/noaa/2011/722860-23119-2011.gz', - '/pub/data/noaa/2012/722860-23119-2012.gz', - '/pub/data/noaa/2013/722860-23119-2013.gz', - '/pub/data/noaa/2014/722860-23119-2014.gz', - '/pub/data/noaa/2015/722860-23119-2015.gz', - '/pub/data/noaa/2016/722860-23119-2016.gz', - '/pub/data/noaa/2017/722860-23119-2017.gz', - '/pub/data/noaa/2018/722860-23119-2018.gz', - '/pub/data/noaa/2019/722860-23119-2019.gz', - '/pub/data/noaa/2020/722860-23119-2020.gz', - '/pub/data/noaa/2021/722860-23119-2021.gz', - '/pub/data/noaa/2022/722860-23119-2022.gz', - '/pub/data/noaa/2023/722860-23119-2023.gz', - '/pub/data/noaa/2024/722860-23119-2024.gz', - '/pub/data/noaa/2025/722860-23119-2025.gz', - ]) -# --- -# name: test_get_isd_filenames_single_year - list([ - '/pub/data/noaa/2007/722860-23119-2007.gz', - ]) -# --- -# name: test_isd_station_get_gsod_filenames - list([ - '/pub/data/gsod/2006/722860-23119-2006.op.gz', - '/pub/data/gsod/2007/722860-23119-2007.op.gz', - '/pub/data/gsod/2008/722860-23119-2008.op.gz', - '/pub/data/gsod/2009/722860-23119-2009.op.gz', - '/pub/data/gsod/2010/722860-23119-2010.op.gz', - '/pub/data/gsod/2011/722860-23119-2011.op.gz', - '/pub/data/gsod/2012/722860-23119-2012.op.gz', - '/pub/data/gsod/2013/722860-23119-2013.op.gz', - '/pub/data/gsod/2014/722860-23119-2014.op.gz', - '/pub/data/gsod/2015/722860-23119-2015.op.gz', - '/pub/data/gsod/2016/722860-23119-2016.op.gz', - '/pub/data/gsod/2017/722860-23119-2017.op.gz', - '/pub/data/gsod/2018/722860-23119-2018.op.gz', - '/pub/data/gsod/2019/722860-23119-2019.op.gz', - '/pub/data/gsod/2020/722860-23119-2020.op.gz', - '/pub/data/gsod/2021/722860-23119-2021.op.gz', - '/pub/data/gsod/2022/722860-23119-2022.op.gz', - '/pub/data/gsod/2023/722860-23119-2023.op.gz', - '/pub/data/gsod/2024/722860-23119-2024.op.gz', - '/pub/data/gsod/2025/722860-23119-2025.op.gz', - ]) -# --- -# name: test_isd_station_get_gsod_filenames_with_year - list([ - '/pub/data/gsod/2007/722860-23119-2007.op.gz', - ]) -# --- -# name: test_isd_station_get_isd_filenames - list([ - '/pub/data/noaa/2006/722860-23119-2006.gz', - '/pub/data/noaa/2007/722860-23119-2007.gz', - '/pub/data/noaa/2008/722860-23119-2008.gz', - '/pub/data/noaa/2009/722860-23119-2009.gz', - '/pub/data/noaa/2010/722860-23119-2010.gz', - '/pub/data/noaa/2011/722860-23119-2011.gz', - '/pub/data/noaa/2012/722860-23119-2012.gz', - '/pub/data/noaa/2013/722860-23119-2013.gz', - '/pub/data/noaa/2014/722860-23119-2014.gz', - '/pub/data/noaa/2015/722860-23119-2015.gz', - '/pub/data/noaa/2016/722860-23119-2016.gz', - '/pub/data/noaa/2017/722860-23119-2017.gz', - '/pub/data/noaa/2018/722860-23119-2018.gz', - '/pub/data/noaa/2019/722860-23119-2019.gz', - '/pub/data/noaa/2020/722860-23119-2020.gz', - '/pub/data/noaa/2021/722860-23119-2021.gz', - '/pub/data/noaa/2022/722860-23119-2022.gz', - '/pub/data/noaa/2023/722860-23119-2023.gz', - '/pub/data/noaa/2024/722860-23119-2024.gz', - '/pub/data/noaa/2025/722860-23119-2025.gz', - ]) -# --- -# name: test_isd_station_get_isd_filenames_with_year - list([ - '/pub/data/noaa/2007/722860-23119-2007.gz', - ]) -# --- diff --git a/tests/__snapshots__/test_summaries.ambr b/tests/__snapshots__/test_summaries.ambr index 97fa391..0f17fef 100644 --- a/tests/__snapshots__/test_summaries.ambr +++ b/tests/__snapshots__/test_summaries.ambr @@ -1,9 +1,9 @@ # serializer version: 1 # name: test_get_isd_station_usaf_ids - 4845 + 4497 # --- # name: test_get_isd_station_usaf_ids_by_state - 77 + 75 # --- # name: test_get_zcta_ids 33144 diff --git a/tests/conftest.py b/tests/conftest.py index 14a80a1..192f6f1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -18,11 +18,15 @@ """ import gzip +import re +import tempfile from pathlib import Path import pytest +from eeweather.cache import KeyValueStore + FIXTURE_DIR = Path(__file__).parent / "fixtures" @@ -65,4 +69,33 @@ def mock_get(url, params=None, **kwargs): return MockAccessAPIResponse(text) - monkeypatch.setattr("eeweather.access_api.requests.get", mock_get) + monkeypatch.setattr("eeweather.sources.ghcnh.requests.get", mock_get) + + +def _fixture_ascii(name): + return (FIXTURE_DIR / name).read_text(encoding="ascii") + + +def mock_request_text_tmy3(url): + match_url = ( + "https://storage.googleapis.com/openeemeter-public-resources/" + "tmy3_archive/722880TYA.CSV" + ) + if re.match(match_url, url): + return _fixture_ascii("722880TYA.CSV") + + +def mock_request_text_cz2010(url): + match_url = "https://storage.googleapis.com/oee-cz2010/csv/722880_CZ2010.CSV" + + if re.match(match_url, url): + return _fixture_ascii("722880_CZ2010.CSV") + + +class MockKeyValueStoreProxy: + def __init__(self): + # create a new test store in a temporary folder + self.store = KeyValueStore("sqlite:///{}/cache.db".format(tempfile.mkdtemp())) + + def get_store(self): + return self.store diff --git a/eeweather/resources/722880TYA.CSV b/tests/fixtures/722880TYA.CSV similarity index 100% rename from eeweather/resources/722880TYA.CSV rename to tests/fixtures/722880TYA.CSV diff --git a/eeweather/resources/722880_CZ2010.CSV b/tests/fixtures/722880_CZ2010.CSV similarity index 100% rename from eeweather/resources/722880_CZ2010.CSV rename to tests/fixtures/722880_CZ2010.CSV diff --git a/tests/fixtures/global-historical-climatology-network-hourly_USW00000117_2019.csv.gz b/tests/fixtures/global-historical-climatology-network-hourly_USW00000117_2019.csv.gz new file mode 100644 index 0000000..f58fd90 Binary files /dev/null and b/tests/fixtures/global-historical-climatology-network-hourly_USW00000117_2019.csv.gz differ diff --git a/tests/fixtures/global-historical-climatology-network-hourly_USW00023234_2025.csv.gz b/tests/fixtures/global-historical-climatology-network-hourly_USW00023234_2025.csv.gz new file mode 100644 index 0000000..5192b0a Binary files /dev/null and b/tests/fixtures/global-historical-climatology-network-hourly_USW00023234_2025.csv.gz differ diff --git a/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_1800.csv.gz b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_1800.csv.gz new file mode 100644 index 0000000..d30916d Binary files /dev/null and b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_1800.csv.gz differ diff --git a/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2005.csv.gz b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2005.csv.gz new file mode 100644 index 0000000..3767aba Binary files /dev/null and b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2005.csv.gz differ diff --git a/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2006.csv.gz b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2006.csv.gz new file mode 100644 index 0000000..46bc279 Binary files /dev/null and b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2006.csv.gz differ diff --git a/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2007.csv.gz b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2007.csv.gz new file mode 100644 index 0000000..a51fafd Binary files /dev/null and b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2007.csv.gz differ diff --git a/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2025.csv.gz b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2025.csv.gz new file mode 100644 index 0000000..80a6217 Binary files /dev/null and b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2025.csv.gz differ diff --git a/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2050.csv.gz b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2050.csv.gz new file mode 100644 index 0000000..753bae1 Binary files /dev/null and b/tests/fixtures/global-historical-climatology-network-hourly_USW00093134_2050.csv.gz differ diff --git a/tests/fixtures/global-historical-climatology-network-hourly_USW00093194_2013.csv.gz b/tests/fixtures/global-historical-climatology-network-hourly_USW00093194_2013.csv.gz new file mode 100644 index 0000000..1a9c4fd Binary files /dev/null and b/tests/fixtures/global-historical-climatology-network-hourly_USW00093194_2013.csv.gz differ diff --git a/tests/fixtures/global-hourly_72019300117_2019.csv.gz b/tests/fixtures/global-hourly_72019300117_2019.csv.gz deleted file mode 100644 index cb45a15..0000000 Binary files a/tests/fixtures/global-hourly_72019300117_2019.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-hourly_72287493134_1800.csv.gz b/tests/fixtures/global-hourly_72287493134_1800.csv.gz deleted file mode 100644 index 60ff10e..0000000 Binary files a/tests/fixtures/global-hourly_72287493134_1800.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-hourly_72287493134_2005.csv.gz b/tests/fixtures/global-hourly_72287493134_2005.csv.gz deleted file mode 100644 index a0d1030..0000000 Binary files a/tests/fixtures/global-hourly_72287493134_2005.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-hourly_72287493134_2006.csv.gz b/tests/fixtures/global-hourly_72287493134_2006.csv.gz deleted file mode 100644 index 3c567d3..0000000 Binary files a/tests/fixtures/global-hourly_72287493134_2006.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-hourly_72287493134_2007.csv.gz b/tests/fixtures/global-hourly_72287493134_2007.csv.gz deleted file mode 100644 index 5a3c56f..0000000 Binary files a/tests/fixtures/global-hourly_72287493134_2007.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-hourly_72287493134_2025.csv.gz b/tests/fixtures/global-hourly_72287493134_2025.csv.gz deleted file mode 100644 index 12d5d21..0000000 Binary files a/tests/fixtures/global-hourly_72287493134_2025.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-hourly_72287493134_2050.csv.gz b/tests/fixtures/global-hourly_72287493134_2050.csv.gz deleted file mode 100644 index 3fa97ef..0000000 Binary files a/tests/fixtures/global-hourly_72287493134_2050.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-hourly_72494023234_2025.csv.gz b/tests/fixtures/global-hourly_72494023234_2025.csv.gz deleted file mode 100644 index 05ac885..0000000 Binary files a/tests/fixtures/global-hourly_72494023234_2025.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-summary-of-the-day_72019300117_2019.csv.gz b/tests/fixtures/global-summary-of-the-day_72019300117_2019.csv.gz deleted file mode 100644 index b20c4c3..0000000 Binary files a/tests/fixtures/global-summary-of-the-day_72019300117_2019.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-summary-of-the-day_72287493134_1800.csv.gz b/tests/fixtures/global-summary-of-the-day_72287493134_1800.csv.gz deleted file mode 100644 index 80d7e70..0000000 Binary files a/tests/fixtures/global-summary-of-the-day_72287493134_1800.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-summary-of-the-day_72287493134_2005.csv.gz b/tests/fixtures/global-summary-of-the-day_72287493134_2005.csv.gz deleted file mode 100644 index 3d5862a..0000000 Binary files a/tests/fixtures/global-summary-of-the-day_72287493134_2005.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-summary-of-the-day_72287493134_2006.csv.gz b/tests/fixtures/global-summary-of-the-day_72287493134_2006.csv.gz deleted file mode 100644 index a0b0a7b..0000000 Binary files a/tests/fixtures/global-summary-of-the-day_72287493134_2006.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-summary-of-the-day_72287493134_2007.csv.gz b/tests/fixtures/global-summary-of-the-day_72287493134_2007.csv.gz deleted file mode 100644 index d82c4df..0000000 Binary files a/tests/fixtures/global-summary-of-the-day_72287493134_2007.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-summary-of-the-day_72287493134_2025.csv.gz b/tests/fixtures/global-summary-of-the-day_72287493134_2025.csv.gz deleted file mode 100644 index 4191d9f..0000000 Binary files a/tests/fixtures/global-summary-of-the-day_72287493134_2025.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-summary-of-the-day_72287493134_2050.csv.gz b/tests/fixtures/global-summary-of-the-day_72287493134_2050.csv.gz deleted file mode 100644 index b739853..0000000 Binary files a/tests/fixtures/global-summary-of-the-day_72287493134_2050.csv.gz and /dev/null differ diff --git a/tests/fixtures/global-summary-of-the-day_72494023234_2025.csv.gz b/tests/fixtures/global-summary-of-the-day_72494023234_2025.csv.gz deleted file mode 100644 index 8f405cb..0000000 Binary files a/tests/fixtures/global-summary-of-the-day_72494023234_2025.csv.gz and /dev/null differ diff --git a/tests/test_access_api.py b/tests/test_access_api.py deleted file mode 100644 index da64017..0000000 --- a/tests/test_access_api.py +++ /dev/null @@ -1,170 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" - -Copyright 2018-2023 OpenEEmeter contributors - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -""" -import gzip - -from pathlib import Path - -import pytest -import requests - -from eeweather.access_api import ( - API_REQUEST_TRIES, - DatasetType, - FileParseResult, - _get_api_request_params, - make_api_request, -) - - - -FIXTURE_DIR = Path(__file__).parent / "fixtures" - - -def _fixture_head(name, n_rows=1): - """Header plus the first n_rows data rows of a captured api payload.""" - with gzip.open(FIXTURE_DIR / name, "rb") as f: - lines = f.read().decode().strip().split("\n") - - return "\n".join(lines[: n_rows + 1]) + "\n" - - -class MockResponse: - def __init__(self, text): - self.text = text - - def raise_for_status(self): - pass - - -def test_file_parse_result_from_isd_file_path(): - result = FileParseResult.from_file_path("/pub/data/noaa/2007/722874-93134-2007.gz") - - assert result.dataset_type == DatasetType.ISD - assert result.usaf_id == "722874" - assert result.wban_id == "93134" - assert result.year == 2007 - - -def test_file_parse_result_from_gsod_file_path(): - result = FileParseResult.from_file_path( - "/pub/data/gsod/2007/722874-93134-2007.op.gz" - ) - - assert result.dataset_type == DatasetType.GSOD - assert result.usaf_id == "722874" - assert result.wban_id == "93134" - assert result.year == 2007 - - -def test_file_parse_result_ambiguous_path_raises(): - with pytest.raises(ValueError, match="ambiguous"): - FileParseResult.from_file_path("/pub/data/gsod/noaa/722874-93134-2007.gz") - - -def test_file_parse_result_unrecognized_path_raises(): - with pytest.raises(ValueError, match="cannot be determined"): - FileParseResult.from_file_path("/pub/data/other/722874-93134-2007.gz") - - -def test_get_api_request_params_unsupported_dataset_raises(): - with pytest.raises(ValueError, match="not supported"): - _get_api_request_params("UNSUPPORTED", "722874", "93134", 2007) - - -def test_make_api_request_retries_then_raises(monkeypatch): - calls = [] - - def failing_get(url, params=None): - calls.append(url) - raise requests.ConnectionError("refused") - - monkeypatch.setattr("eeweather.access_api.requests.get", failing_get) - - with pytest.raises(requests.ConnectionError): - make_api_request(DatasetType.ISD, "722874", "93134", 2007) - - assert len(calls) == API_REQUEST_TRIES - - -def test_make_api_request_succeeds_after_transient_failure(monkeypatch): - # first captured 2007 observation for 722874 is +0150,5 -> 15.0 C - payload = _fixture_head("global-hourly_72287493134_2007.csv.gz") - calls = [] - - def flaky_get(url, params=None): - calls.append(url) - if len(calls) == 1: - raise requests.ConnectionError("refused") - - return MockResponse(payload) - - monkeypatch.setattr("eeweather.access_api.requests.get", flaky_get) - - elements = make_api_request(DatasetType.ISD, "722874", "93134", 2007) - - assert len(calls) == 2 - assert len(elements) == 1 - assert elements[0][1] == pytest.approx(15.0, abs=1e-9) - - -def test_make_api_request_missing_isd_temp_parses_as_nan(monkeypatch): - # 722874's 2025 observations report temperature as missing (+9999,9) - payload = _fixture_head("global-hourly_72287493134_2025.csv.gz") - - def mock_get(url, params=None): - return MockResponse(payload) - - monkeypatch.setattr("eeweather.access_api.requests.get", mock_get) - - elements = make_api_request(DatasetType.ISD, "722874", "93134", 2025) - - assert len(elements) == 1 - assert elements[0][1] != elements[0][1] # NaN - - -def test_make_api_request_gsod_converts_fahrenheit_to_celsius(monkeypatch): - # first captured 2007 GSOD observation for 722874 is 56.0 F -> 13.333 C - payload = _fixture_head("global-summary-of-the-day_72287493134_2007.csv.gz") - - def mock_get(url, params=None): - return MockResponse(payload) - - monkeypatch.setattr("eeweather.access_api.requests.get", mock_get) - - elements = make_api_request(DatasetType.GSOD, "722874", "93134", 2007) - - assert len(elements) == 1 - assert elements[0][1] == pytest.approx((56.0 - 32.0) * 5.0 / 9.0, abs=1e-9) - - -def test_make_api_request_malformed_isd_temp_raises(monkeypatch): - # a captured observation with its scale suffix stripped; valid payloads - # always carry a "value,quality" pair, so a bare value must be rejected - payload = _fixture_head("global-hourly_72287493134_2007.csv.gz").replace( - "+0150,5", "+0150" - ) - - def mock_get(url, params=None): - return MockResponse(payload) - - monkeypatch.setattr("eeweather.access_api.requests.get", mock_get) - - with pytest.raises(ValueError, match="unexpected temp value"): - make_api_request(DatasetType.ISD, "722874", "93134", 2007) diff --git a/tests/test_cli.py b/tests/test_cli.py index 94a5a8c..5194e84 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -25,8 +25,6 @@ cli, inspect_isd_station, inspect_isd_file_years, - inspect_isd_filenames, - inspect_gsod_filenames, ) @@ -54,6 +52,10 @@ def test_inspect_isd_station(): "latitude": "+34.200", "longitude": "-118.365", "name": "BURBANK-GLENDALE-PASA ARPT", + "ghcn_id": "USW00023152", + "ghcn_map_method": "icao", + "ghcn_first_year": 1943, + "ghcn_last_year": 2026, "quality": "high", "recent_wban_id": "23152", "state": "CA", @@ -101,35 +103,3 @@ def test_inspect_isd_file_years_unrecognized(): runner = CliRunner() result = runner.invoke(inspect_isd_file_years, ["INVALID"]) assert result.exit_code == 1 - - -def test_inspect_isd_filenames(): - runner = CliRunner() - - result = runner.invoke(inspect_isd_filenames, ["722880", "2017"]) - assert result.exit_code == 0 - assert result.output == ( - "ftp://ftp.ncei.noaa.gov/pub/data/noaa/2017/722880-23152-2017.gz\n" - ) - - -def test_inspect_isd_filenames_unrecognized(): - runner = CliRunner() - result = runner.invoke(inspect_isd_filenames, ["INVALID", "2017"]) - assert result.exit_code == 1 - - -def test_inspect_gsod_filenames(): - runner = CliRunner() - - result = runner.invoke(inspect_gsod_filenames, ["722880", "2017"]) - assert result.exit_code == 0 - assert result.output == ( - "ftp://ftp.ncei.noaa.gov/pub/data/gsod/2017/722880-23152-2017.op.gz\n" - ) - - -def test_inspect_gsod_filenames_unrecognized(): - runner = CliRunner() - result = runner.invoke(inspect_gsod_filenames, ["INVALID", "2017"]) - assert result.exit_code == 1 diff --git a/tests/test_database.py b/tests/test_database.py index 880b0e7..68c9968 100644 --- a/tests/test_database.py +++ b/tests/test_database.py @@ -49,6 +49,7 @@ def test_database_tables(): "ca_climate_zone_metadata", "tmy3_station_metadata", "cz2010_station_metadata", + "ghcn_inventory", ] diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py index 55e1d7f..243b2e6 100644 --- a/tests/test_exceptions.py +++ b/tests/test_exceptions.py @@ -23,8 +23,7 @@ EEWeatherError, UnrecognizedUSAFIDError, UnrecognizedZCTAError, - ISDDataNotAvailableError, - GSODDataNotAvailableError, + DataNotAvailableError, ) @@ -53,21 +52,11 @@ def test_unrecognized_zcta_error(): ) -def test_isd_data_does_not_exist_error(): - with pytest.raises(ISDDataNotAvailableError) as excinfo: - raise ISDDataNotAvailableError("123456", 1800) +def test_data_does_not_exist_error(): + with pytest.raises(DataNotAvailableError) as excinfo: + raise DataNotAvailableError("123456", 1800) assert excinfo.value.usaf_id == "123456" assert excinfo.value.year == 1800 assert excinfo.value.message == ( - 'ISD data does not exist for station "123456" in year 1800.' - ) - - -def test_gsod_data_does_not_exist_error(): - with pytest.raises(GSODDataNotAvailableError) as excinfo: - raise GSODDataNotAvailableError("123456", 1800) - assert excinfo.value.usaf_id == "123456" - assert excinfo.value.year == 1800 - assert excinfo.value.message == ( - 'GSOD data does not exist for station "123456" in year 1800.' + 'Data does not exist for station "123456" in year 1800.' ) diff --git a/tests/test_ranking.py b/tests/test_ranking.py index 32682d5..d831a79 100644 --- a/tests/test_ranking.py +++ b/tests/test_ranking.py @@ -23,7 +23,7 @@ import pytz from eeweather import rank_stations, combine_ranked_stations, select_station -from eeweather.exceptions import ISDDataNotAvailableError +from eeweather.exceptions import DataNotAvailableError @pytest.fixture @@ -58,8 +58,9 @@ def test_rank_stations_no_filter(lat_long_fresno, snapshot): "difference_elevation_meters", ] assert round(df.distance_meters.iloc[0]) == 2723 - assert round(df.distance_meters.iloc[-10]) == 16565963.0 - assert pd.isnull(df.distance_meters.iloc[-1]) is True + assert round(df.distance_meters.iloc[-10]) == 15057891 + # every station in the registry has coordinates, so every distance is real + assert pd.notnull(df.distance_meters.iloc[-1]) def test_rank_stations_match_climate_zones_not_null(lat_long_fresno, snapshot): @@ -214,15 +215,14 @@ def test_combine_ranked_stations(cz_candidates, naive_candidates): assert list(cz_candidates.index) == [ "723890", "747020", - "723895", "723840", ] assert list(naive_candidates.index) == [ "723890", "747020", "724815", - "723895", "723965", + "724926", ] combined_candidates = combine_ranked_stations([cz_candidates, naive_candidates]) @@ -233,10 +233,10 @@ def test_combine_ranked_stations(cz_candidates, naive_candidates): assert list(combined_candidates.index) == [ "723890", "747020", - "723895", "723840", "724815", "723965", + "724926", ] @@ -246,8 +246,8 @@ def test_select_station_no_coverage_check(cz_candidates): @pytest.fixture -def monkeypatch_load_isd_hourly_temp_data(monkeypatch): - def load_isd_hourly_temp_data(station, start, end, fetch_from_web=True): +def monkeypatch_load_hourly_temp_data(monkeypatch): + def load_hourly_temp_data(station, start, end, fetch_from_web=True): # because result datetimes should fall exactly on hours normalized_start = datetime( start.year, start.month, start.day, start.hour, tzinfo=pytz.UTC @@ -263,11 +263,11 @@ def load_isd_hourly_temp_data(station, start, end, fetch_from_web=True): return pd.Series(1, index=index)[: -24 * 10].reindex(index), [] monkeypatch.setattr( - "eeweather.mockable.load_isd_hourly_temp_data", load_isd_hourly_temp_data + "eeweather.mockable.load_hourly_temp_data", load_hourly_temp_data ) -def test_select_station_full_data(cz_candidates, monkeypatch_load_isd_hourly_temp_data): +def test_select_station_full_data(cz_candidates, monkeypatch_load_hourly_temp_data): start = datetime(2017, 1, 1, tzinfo=pytz.UTC) end = datetime(2018, 1, 1, tzinfo=pytz.UTC) @@ -289,11 +289,11 @@ def test_select_station_full_data(cz_candidates, monkeypatch_load_isd_hourly_tem @pytest.fixture -def monkeypatch_load_isd_hourly_temp_data_with_error(monkeypatch): - def load_isd_hourly_temp_data(station, start, end, fetch_from_web=True): +def monkeypatch_load_hourly_temp_data_with_error(monkeypatch): + def load_hourly_temp_data(station, start, end, fetch_from_web=True): index = pd.date_range(start, end, freq="h", tz="UTC") if station.usaf_id == "723890": - raise ISDDataNotAvailableError( + raise DataNotAvailableError( "723890", start.year ) # first choice not available elif station.usaf_id == "747020": @@ -306,12 +306,12 @@ def load_isd_hourly_temp_data(station, start, end, fetch_from_web=True): ) monkeypatch.setattr( - "eeweather.mockable.load_isd_hourly_temp_data", load_isd_hourly_temp_data + "eeweather.mockable.load_hourly_temp_data", load_hourly_temp_data ) def test_select_station_with_isd_data_not_available_error( - cz_candidates, monkeypatch_load_isd_hourly_temp_data_with_error + cz_candidates, monkeypatch_load_hourly_temp_data_with_error ): start = datetime(2017, 1, 1, tzinfo=pytz.UTC) end = datetime(2018, 1, 1, tzinfo=pytz.UTC) @@ -324,8 +324,8 @@ def test_select_station_with_isd_data_not_available_error( @pytest.fixture -def monkeypatch_load_isd_hourly_temp_data_with_empty(monkeypatch): - def load_isd_hourly_temp_data(station, start, end, fetch_from_web=True): +def monkeypatch_load_hourly_temp_data_with_empty(monkeypatch): + def load_hourly_temp_data(station, start, end, fetch_from_web=True): index = pd.date_range(start, end, freq="h", tz="UTC") if station.usaf_id == "723890": return pd.Series(1, index=index)[:0], [] @@ -339,12 +339,12 @@ def load_isd_hourly_temp_data(station, start, end, fetch_from_web=True): ) monkeypatch.setattr( - "eeweather.mockable.load_isd_hourly_temp_data", load_isd_hourly_temp_data + "eeweather.mockable.load_hourly_temp_data", load_hourly_temp_data ) def test_select_station_with_empty_tempC( - cz_candidates, monkeypatch_load_isd_hourly_temp_data_with_empty, snapshot + cz_candidates, monkeypatch_load_hourly_temp_data_with_empty, snapshot ): start = datetime(2017, 1, 1, tzinfo=pytz.UTC) end = datetime(2018, 1, 1, tzinfo=pytz.UTC) @@ -375,7 +375,7 @@ def test_select_station_no_station_warnings_check(): def test_select_station_with_second_level_dates( - cz_candidates, monkeypatch_load_isd_hourly_temp_data, snapshot + cz_candidates, monkeypatch_load_hourly_temp_data, snapshot ): # dates don't fall exactly on the hour start = datetime(2017, 1, 1, 2, 3, 4, tzinfo=pytz.UTC) @@ -383,3 +383,24 @@ def test_select_station_with_second_level_dates( station, warnings = select_station(cz_candidates, coverage_range=(start, end)) assert station.usaf_id == snapshot + + +def test_rank_stations_rating_period_uses_era_quality(lat_long_fresno): + lat, lng = lat_long_fresno + start = datetime(2010, 1, 1, tzinfo=pytz.UTC) + end = datetime(2014, 12, 31, tzinfo=pytz.UTC) + + df = rank_stations( + lat, lng, minimum_quality="high", is_tmy3=True, is_cz2010=True, + rating_period=(start, end), + ) + + # 723895 and 723896 rate high in their active era despite being + # medium or low today + assert list(df.head().index) == [ + "723890", + "747020", + "723896", + "724815", + "723895", + ] diff --git a/tests/test_sources_ghcnh.py b/tests/test_sources_ghcnh.py new file mode 100644 index 0000000..e3cc4a8 --- /dev/null +++ b/tests/test_sources_ghcnh.py @@ -0,0 +1,154 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" + +Copyright 2018-2023 OpenEEmeter contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +""" +import gzip + +from pathlib import Path + +import pytest +import requests + +from eeweather.sources.ghcnh import ( + API_REQUEST_TRIES, + _get_api_request_params, + fetch_ghcnh_hourly, +) + + + +FIXTURE_DIR = Path(__file__).parent / "fixtures" + + +def _fixture_text(name): + with gzip.open(FIXTURE_DIR / name, "rb") as f: + return f.read().decode() + + +class MockResponse: + def __init__(self, text): + self.text = text + + def raise_for_status(self): + pass + + +@pytest.fixture +def no_sleep(monkeypatch): + sleeps = [] + monkeypatch.setattr("eeweather.sources.ghcnh.time.sleep", sleeps.append) + + return sleeps + + +def test_get_api_request_params_includes_date(): + params = _get_api_request_params("USW00093134", 2007, ("temperature",)) + + assert params["dataTypes"] == "DATE,temperature" + assert params["stations"] == "USW00093134" + assert params["startDate"] == "2007-01-01" + assert params["endDate"] == "2007-12-31" + + +def test_fetch_retries_with_backoff_then_raises(monkeypatch, no_sleep): + calls = [] + + def failing_get(url, params=None): + calls.append(url) + raise requests.ConnectionError("refused") + + monkeypatch.setattr("eeweather.sources.ghcnh.requests.get", failing_get) + + with pytest.raises(requests.ConnectionError): + fetch_ghcnh_hourly("USW00093134", 2007) + + assert len(calls) == API_REQUEST_TRIES + # backs off between attempts, not after the final failure + assert len(no_sleep) == API_REQUEST_TRIES - 1 + assert no_sleep[0] < no_sleep[1] + + +def test_fetch_succeeds_after_transient_failure(monkeypatch, no_sleep): + payload = _fixture_text( + "global-historical-climatology-network-hourly_USW00093134_2007.csv.gz" + ) + calls = [] + + def flaky_get(url, params=None): + calls.append(url) + if len(calls) == 1: + raise requests.ConnectionError("refused") + + return MockResponse(payload) + + monkeypatch.setattr("eeweather.sources.ghcnh.requests.get", flaky_get) + + df = fetch_ghcnh_hourly("USW00093134", 2007) + + assert len(calls) == 2 + assert len(df) == 10884 + # first captured 2007 observation is 15.0 C at 00:47 + assert df.temperature.iloc[0] == pytest.approx(15.0, abs=1e-9) + + +def test_fetch_empty_year_returns_empty_frame(monkeypatch): + def mock_get(url, params=None): + return MockResponse("") + + monkeypatch.setattr("eeweather.sources.ghcnh.requests.get", mock_get) + + df = fetch_ghcnh_hourly("USW00093134", 1800) + + assert len(df) == 0 + assert list(df.columns) == ["temperature"] + assert str(df.index.tz) == "UTC" + + +def test_fetch_unreported_variable_is_nan_column(monkeypatch): + payload = _fixture_text( + "global-historical-climatology-network-hourly_USW00093134_2007.csv.gz" + ) + + def mock_get(url, params=None): + return MockResponse(payload) + + monkeypatch.setattr("eeweather.sources.ghcnh.requests.get", mock_get) + + df = fetch_ghcnh_hourly( + "USW00093134", 2007, ("temperature", "snow_depth") + ) + + assert list(df.columns) == ["temperature", "snow_depth"] + assert df.snow_depth.isna().all() + assert df.temperature.notna().sum() > 0 + + +def test_fetch_averages_duplicate_timestamps(monkeypatch): + payload = _fixture_text( + "global-historical-climatology-network-hourly_USW00093134_2007.csv.gz" + ) + + def mock_get(url, params=None): + return MockResponse(payload) + + monkeypatch.setattr("eeweather.sources.ghcnh.requests.get", mock_get) + + df = fetch_ghcnh_hourly("USW00093134", 2007) + + assert df.index.is_unique + assert df.index.is_monotonic_increasing diff --git a/tests/test_stations.py b/tests/test_stations.py index 139786d..97ac997 100644 --- a/tests/test_stations.py +++ b/tests/test_stations.py @@ -25,88 +25,61 @@ import pytz from eeweather import ( - ISDStation, + WeatherStation, + get_ghcn_id, + get_ghcn_ids, get_isd_station_metadata, - get_isd_filenames, - get_gsod_filenames, + get_station_quality, + get_station_qualities, get_isd_file_metadata, - fetch_isd_raw_temp_data, - fetch_isd_hourly_temp_data, - fetch_isd_daily_temp_data, - fetch_gsod_raw_temp_data, - fetch_gsod_daily_temp_data, + fetch_hourly_data, fetch_tmy3_hourly_temp_data, fetch_cz2010_hourly_temp_data, - get_isd_hourly_temp_data_cache_key, - get_isd_daily_temp_data_cache_key, - get_gsod_daily_temp_data_cache_key, + get_hourly_data_cache_key, get_tmy3_hourly_temp_data_cache_key, get_cz2010_hourly_temp_data_cache_key, - cached_isd_hourly_temp_data_is_expired, - cached_isd_daily_temp_data_is_expired, - cached_gsod_daily_temp_data_is_expired, - validate_isd_hourly_temp_data_cache, - validate_isd_daily_temp_data_cache, - validate_gsod_daily_temp_data_cache, + cached_hourly_data_is_expired, + validate_hourly_data_cache, validate_tmy3_hourly_temp_data_cache, validate_cz2010_hourly_temp_data_cache, - serialize_isd_hourly_temp_data, - serialize_isd_daily_temp_data, - serialize_gsod_daily_temp_data, + serialize_hourly_data, serialize_tmy3_hourly_temp_data, serialize_cz2010_hourly_temp_data, - deserialize_isd_hourly_temp_data, - deserialize_isd_daily_temp_data, - deserialize_gsod_daily_temp_data, + deserialize_hourly_data, deserialize_tmy3_hourly_temp_data, deserialize_cz2010_hourly_temp_data, - read_isd_hourly_temp_data_from_cache, - read_isd_daily_temp_data_from_cache, - read_gsod_daily_temp_data_from_cache, + read_hourly_data_from_cache, read_tmy3_hourly_temp_data_from_cache, read_cz2010_hourly_temp_data_from_cache, - write_isd_hourly_temp_data_to_cache, - write_isd_daily_temp_data_to_cache, - write_gsod_daily_temp_data_to_cache, + write_hourly_data_to_cache, write_tmy3_hourly_temp_data_to_cache, write_cz2010_hourly_temp_data_to_cache, - destroy_cached_isd_hourly_temp_data, - destroy_cached_isd_daily_temp_data, - destroy_cached_gsod_daily_temp_data, + destroy_cached_hourly_data, destroy_cached_tmy3_hourly_temp_data, destroy_cached_cz2010_hourly_temp_data, - load_isd_hourly_temp_data_cached_proxy, - load_isd_daily_temp_data_cached_proxy, - load_gsod_daily_temp_data_cached_proxy, + load_hourly_data_cached_proxy, load_tmy3_hourly_temp_data_cached_proxy, load_cz2010_hourly_temp_data_cached_proxy, - load_isd_hourly_temp_data, - load_isd_daily_temp_data, - load_gsod_daily_temp_data, + load_data, load_tmy3_hourly_temp_data, load_cz2010_hourly_temp_data, - load_cached_isd_hourly_temp_data, - load_cached_isd_daily_temp_data, - load_cached_gsod_daily_temp_data, + load_cached_hourly_data, load_cached_tmy3_hourly_temp_data, load_cached_cz2010_hourly_temp_data, ) from eeweather.exceptions import ( UnrecognizedUSAFIDError, - ISDDataNotAvailableError, - GSODDataNotAvailableError, + DataNotAvailableError, TMY3DataNotAvailableError, CZ2010DataNotAvailableError, NonUTCTimezoneInfoError, ) -from eeweather.testing import ( +from conftest import ( MockKeyValueStoreProxy, mock_request_text_tmy3, mock_request_text_cz2010, ) -import eeweather.testing - @pytest.fixture @@ -129,29 +102,14 @@ def monkeypatch_key_value_store(monkeypatch): return key_value_store_proxy.get_store() -@pytest.fixture -def monkeypatch_make_api_request(monkeypatch, mock_api_transport): - monkeypatch.setattr( - "eeweather.access_api.make_api_request", - eeweather.testing.monkey_patch_make_api_request_return_empty, - ) - - -@pytest.fixture -def monkeypatch_make_api_request_v2(monkeypatch, mock_api_transport): - monkeypatch.setattr( - "eeweather.access_api.make_api_request", - eeweather.testing.monkey_patch_make_api_request_return_empty_v2, - ) - - - def _backdate_cache_key(store, key, updated): with contextlib.closing(sqlite3.connect(store._path)) as conn, conn: conn.execute( "update items set updated = ? where key = ?", (updated.isoformat(), key) ) + + def test_get_isd_station_metadata(): assert get_isd_station_metadata("722874") == { "ba_climate_zone": "Hot-Dry", @@ -163,6 +121,10 @@ def test_get_isd_station_metadata(): "latitude": "+34.024", "longitude": "-118.291", "name": "DOWNTOWN L.A./USC CAMPUS", + "ghcn_id": "USW00093134", + "ghcn_map_method": "icao", + "ghcn_first_year": 1893, + "ghcn_last_year": 2024, "quality": "low", "recent_wban_id": "93134", "state": "CA", @@ -172,7 +134,7 @@ def test_get_isd_station_metadata(): def test_isd_station_no_load_metadata(): - station = ISDStation("722880", load_metadata=False) + station = WeatherStation("722880", load_metadata=False) assert station.usaf_id == "722880" assert station.iecc_climate_zone is None assert station.iecc_moisture_regime is None @@ -189,16 +151,16 @@ def test_isd_station_no_load_metadata(): assert station.climate_zones == {} assert str(station) == "722880" - assert repr(station) == "ISDStation('722880')" + assert repr(station) == "WeatherStation('722880')" def test_isd_station_no_load_metadata_invalid(): with pytest.raises(UnrecognizedUSAFIDError): - station = ISDStation("FAKE", load_metadata=False) + station = WeatherStation("FAKE", load_metadata=False) def test_isd_station_with_load_metadata(): - station = ISDStation("722880", load_metadata=True) + station = WeatherStation("722880", load_metadata=True) assert station.usaf_id == "722880" assert station.iecc_climate_zone == "3" assert station.iecc_moisture_regime == "B" @@ -213,6 +175,9 @@ def test_isd_station_with_load_metadata(): assert station.quality == "high" assert station.wban_ids == ["23152", "99999"] assert station.recent_wban_id == "23152" + assert station.ghcn_id == "USW00023152" + assert station.ghcn_first_year == 1943 + assert station.ghcn_last_year == 2026 assert station.climate_zones == { "ba_climate_zone": "Hot-Dry", "ca_climate_zone": "CA_09", @@ -222,7 +187,7 @@ def test_isd_station_with_load_metadata(): def test_isd_station_json(): - station = ISDStation("722880", load_metadata=True) + station = WeatherStation("722880", load_metadata=True) assert station.json() == { "elevation": 222.7, "icao_code": "KBUR", @@ -231,6 +196,9 @@ def test_isd_station_json(): "name": "BURBANK-GLENDALE-PASA ARPT", "quality": "high", "recent_wban_id": "23152", + "ghcn_id": "USW00023152", + "ghcn_first_year": 1943, + "ghcn_last_year": 2026, "wban_ids": ["23152", "99999"], "climate_zones": { "ba_climate_zone": "Hot-Dry", @@ -243,103 +211,7 @@ def test_isd_station_json(): def test_isd_station_unrecognized_usaf_id(): with pytest.raises(UnrecognizedUSAFIDError): - station = ISDStation("FAKE", load_metadata=True) - - -def test_get_isd_filenames_bad_usaf_id(): - with pytest.raises(UnrecognizedUSAFIDError) as excinfo: - get_isd_filenames("000000", 2007) - assert excinfo.value.value == "000000" - - -def test_get_isd_filenames_single_year(snapshot): - filenames = get_isd_filenames("722860", 2007) - assert snapshot == filenames - - -def test_get_isd_filenames_multiple_year(snapshot): - filenames = get_isd_filenames("722860") - assert snapshot == filenames - - -def test_get_isd_filenames_future_year(): - filenames = get_isd_filenames("722860", 2050) - assert filenames == ["/pub/data/noaa/2050/722860-23119-2050.gz"] - - -def test_get_isd_filenames_with_host(): - filenames = get_isd_filenames("722860", 2017, with_host=True) - assert filenames == [ - "ftp://ftp.ncei.noaa.gov/pub/data/noaa/2017/722860-23119-2017.gz" - ] - - -def test_isd_station_get_isd_filenames(snapshot): - station = ISDStation("722860") - filenames = station.get_isd_filenames() - assert snapshot == filenames - - -def test_isd_station_get_isd_filenames_with_year(snapshot): - station = ISDStation("722860") - filenames = station.get_isd_filenames(2007) - assert snapshot == filenames - - -def test_isd_station_get_isd_filenames_with_host(): - station = ISDStation("722860") - filenames = station.get_isd_filenames(2017, with_host=True) - assert filenames == [ - "ftp://ftp.ncei.noaa.gov/pub/data/noaa/2017/722860-23119-2017.gz" - ] - - -def test_get_gsod_filenames_bad_usaf_id(): - with pytest.raises(UnrecognizedUSAFIDError) as excinfo: - get_gsod_filenames("000000", 2007) - assert excinfo.value.value == "000000" - - -def test_get_gsod_filenames_single_year(snapshot): - filenames = get_gsod_filenames("722860", 2007) - assert snapshot == filenames - - -def test_get_gsod_filenames_multiple_year(snapshot): - filenames = get_gsod_filenames("722860") - assert snapshot == filenames - - -def test_get_gsod_filenames_future_year(): - filenames = get_gsod_filenames("722860", 2050) - assert filenames == ["/pub/data/gsod/2050/722860-23119-2050.op.gz"] - - -def test_get_gsod_filenames_with_host(): - filenames = get_gsod_filenames("722860", 2017, with_host=True) - assert filenames == [ - "ftp://ftp.ncei.noaa.gov/pub/data/gsod/2017/722860-23119-2017.op.gz" - ] - - -def test_isd_station_get_gsod_filenames(snapshot): - station = ISDStation("722860") - filenames = station.get_gsod_filenames() - assert snapshot == filenames - - -def test_isd_station_get_gsod_filenames_with_year(snapshot): - station = ISDStation("722860") - filenames = station.get_gsod_filenames(2007) - assert snapshot == filenames - - -def test_isd_station_get_gsod_filenames_with_host(): - station = ISDStation("722860") - filenames = station.get_gsod_filenames(2017, with_host=True) - assert filenames == [ - "ftp://ftp.ncei.noaa.gov/pub/data/gsod/2017/722860-23119-2017.op.gz" - ] + station = WeatherStation("FAKE", load_metadata=True) def test_get_isd_file_metadata(): @@ -372,7 +244,7 @@ def test_get_isd_file_metadata(): def test_isd_station_get_isd_file_metadata(): - station = ISDStation("722874") + station = WeatherStation("722874") assert station.get_isd_file_metadata() == [ {"usaf_id": "722874", "wban_id": "93134", "year": "2006"}, {"usaf_id": "722874", "wban_id": "93134", "year": "2007"}, @@ -397,83 +269,6 @@ def test_isd_station_get_isd_file_metadata(): ] -# fetch raw -def test_fetch_isd_raw_temp_data(mock_api_transport): - data = fetch_isd_raw_temp_data("722874", 2007) - assert round(data.sum()) == pytest.approx(185945, 0.00001) - assert data.shape == (11094,) - - -def test_fetch_gsod_raw_temp_data(mock_api_transport): - data = fetch_gsod_raw_temp_data("722874", 2007) - assert data.sum() == pytest.approx(6509.5, 0.00001) - assert data.shape == (365,) - - -# station fetch raw -def test_isd_station_fetch_isd_raw_temp_data(mock_api_transport): - station = ISDStation("722874") - data = station.fetch_isd_raw_temp_data(2007) - assert round(data.sum()) == pytest.approx(185945, 0.00001) - assert data.shape == (11094,) - - -def test_isd_station_fetch_gsod_raw_temp_data(mock_api_transport): - station = ISDStation("722874") - data = station.fetch_gsod_raw_temp_data(2007) - assert data.sum() == pytest.approx(6509.5, 0.00001) - assert data.shape == (365,) - - -# fetch raw invalid station -def test_fetch_isd_raw_temp_data_invalid_station(): - with pytest.raises(UnrecognizedUSAFIDError): - fetch_isd_raw_temp_data("INVALID", 2007) - - -def test_fetch_gsod_raw_temp_data_invalid_station(): - with pytest.raises(UnrecognizedUSAFIDError): - fetch_gsod_raw_temp_data("INVALID", 2007) - - -# fetch raw invalid year -def test_fetch_isd_raw_temp_data_invalid_year(mock_api_transport): - with pytest.raises(ISDDataNotAvailableError): - fetch_isd_raw_temp_data("722874", 1800) - - -def test_fetch_gsod_raw_temp_data_invalid_year(mock_api_transport): - with pytest.raises(GSODDataNotAvailableError): - fetch_gsod_raw_temp_data("722874", 1800) - - -# fetch file full of nans -def test_isd_station_fetch_isd_raw_temp_data_all_nan(monkeypatch_make_api_request_v2): - station = ISDStation("994035") - data = station.fetch_isd_raw_temp_data(2013) - assert round(data.sum()) == 0 - assert data.shape == (8611,) - - -# fetch -def test_fetch_isd_hourly_temp_data(mock_api_transport): - data = fetch_isd_hourly_temp_data("722874", 2007) - assert data.sum() == pytest.approx(156160.0355, 0.00001) - assert data.shape == (8760,) - - -def test_fetch_isd_daily_temp_data(mock_api_transport): - data = fetch_isd_daily_temp_data("722874", 2007) - assert data.sum() == pytest.approx(6510.002260821784, 0.00001) - assert data.shape == (365,) - - -def test_fetch_gsod_daily_temp_data(mock_api_transport): - data = fetch_gsod_daily_temp_data("722874", 2007) - assert data.sum() == pytest.approx(6509.5, 0.00001) - assert data.shape == (365,) - - def test_fetch_tmy3_hourly_temp_data(monkeypatch_tmy3_request): data = fetch_tmy3_hourly_temp_data("722880") assert data.sum() == pytest.approx(156194.3, 0.00001) @@ -486,58 +281,20 @@ def test_fetch_cz2010_hourly_temp_data(monkeypatch_cz2010_request): assert data.shape == (8760,) -# station fetch -def test_isd_station_fetch_isd_hourly_temp_data(mock_api_transport): - station = ISDStation("722874") - data = station.fetch_isd_hourly_temp_data(2007) - assert data.sum() == pytest.approx(156160.0355, 0.00001) - assert data.shape == (8760,) - - -def test_isd_station_fetch_isd_daily_temp_data(mock_api_transport): - station = ISDStation("722874") - data = station.fetch_isd_daily_temp_data(2007) - assert data.sum() == pytest.approx(6510, 0.00001) - assert data.shape == (365,) - - -def test_isd_station_fetch_gsod_daily_temp_data(mock_api_transport): - station = ISDStation("722874") - data = station.fetch_gsod_daily_temp_data(2007) - assert data.sum() == pytest.approx(6509.5, 0.00001) - assert data.shape == (365,) - - def test_tmy3_station_hourly_temp_data(monkeypatch_tmy3_request): - station = ISDStation("722880") + station = WeatherStation("722880") data = station.fetch_tmy3_hourly_temp_data() assert data.sum() == pytest.approx(156194.3, 0.00001) assert data.shape == (8760,) def test_cz2010_station_hourly_temp_data(monkeypatch_cz2010_request): - station = ISDStation("722880") + station = WeatherStation("722880") data = station.fetch_cz2010_hourly_temp_data() assert data.sum() == pytest.approx(153430.9, 0.00001) assert data.shape == (8760,) -# fetch invalid station -def test_fetch_isd_hourly_temp_data_invalid(): - with pytest.raises(UnrecognizedUSAFIDError): - fetch_isd_hourly_temp_data("INVALID", 2007) - - -def test_fetch_isd_daily_temp_data_invalid(): - with pytest.raises(UnrecognizedUSAFIDError): - fetch_isd_daily_temp_data("INVALID", 2007) - - -def test_fetch_gsod_daily_temp_data_invalid(): - with pytest.raises(UnrecognizedUSAFIDError): - fetch_gsod_daily_temp_data("INVALID", 2007) - - def test_fetch_tmy3_hourly_temp_data_invalid(): with pytest.raises(TMY3DataNotAvailableError): fetch_tmy3_hourly_temp_data("INVALID") @@ -548,10 +305,7 @@ def test_fetch_cz2010_hourly_temp_data_invalid(): fetch_cz2010_hourly_temp_data("INVALID") -def test_fetch_tmy3_hourly_temp_data_not_in_tmy3_list(mock_api_transport): - data = fetch_isd_hourly_temp_data("722874", 2007) - assert data.sum() == pytest.approx(156160.0355, 0.00001) - assert data.shape == (8760,) +def test_fetch_tmy3_hourly_temp_data_not_in_tmy3_list(): with pytest.raises(TMY3DataNotAvailableError): fetch_tmy3_hourly_temp_data("722874") @@ -564,23 +318,6 @@ def test_fetch_cz2010_hourly_temp_data_not_in_cz2010_list(monkeypatch_cz2010_req fetch_cz2010_hourly_temp_data("725340") -# get cache key -def test_get_isd_hourly_temp_data_cache_key(): - assert ( - get_isd_hourly_temp_data_cache_key("722874", 2007) == "isd-hourly-722874-2007" - ) - - -def test_get_isd_daily_temp_data_cache_key(): - assert get_isd_daily_temp_data_cache_key("722874", 2007) == "isd-daily-722874-2007" - - -def test_get_gsod_daily_temp_data_cache_key(): - assert ( - get_gsod_daily_temp_data_cache_key("722874", 2007) == "gsod-daily-722874-2007" - ) - - def test_get_tmy3_hourly_temp_data_cache_key(): assert get_tmy3_hourly_temp_data_cache_key("722880") == "tmy3-hourly-722880" @@ -589,621 +326,182 @@ def test_get_cz2010_hourly_temp_data_cache_key(): assert get_cz2010_hourly_temp_data_cache_key("722880") == "cz2010-hourly-722880" -# station get cache key -def test_isd_station_get_isd_hourly_temp_data_cache_key(): - station = ISDStation("722874") - assert station.get_isd_hourly_temp_data_cache_key(2007) == "isd-hourly-722874-2007" - - -def test_isd_station_get_isd_daily_temp_data_cache_key(): - station = ISDStation("722874") - assert station.get_isd_daily_temp_data_cache_key(2007) == "isd-daily-722874-2007" - - -def test_isd_station_get_gsod_daily_temp_data_cache_key(): - station = ISDStation("722874") - assert station.get_gsod_daily_temp_data_cache_key(2007) == "gsod-daily-722874-2007" - - def test_tmy3_station_get_isd_hourly_temp_data_cache_key(): - station = ISDStation("722880") + station = WeatherStation("722880") assert station.get_tmy3_hourly_temp_data_cache_key() == "tmy3-hourly-722880" def test_cz2010_station_get_isd_hourly_temp_data_cache_key(): - station = ISDStation("722880") + station = WeatherStation("722880") assert station.get_cz2010_hourly_temp_data_cache_key() == "cz2010-hourly-722880" -# cache expired empty -def test_cached_isd_hourly_temp_data_is_expired_empty(monkeypatch_key_value_store): - assert cached_isd_hourly_temp_data_is_expired("722874", 2007) is True - - -def test_cached_isd_daily_temp_data_is_expired_empty(monkeypatch_key_value_store): - assert cached_isd_daily_temp_data_is_expired("722874", 2007) is True - - -def test_cached_gsod_daily_temp_data_is_expired_empty(monkeypatch_key_value_store): - assert cached_gsod_daily_temp_data_is_expired("722874", 2007) is True +def test_validate_tmy3_hourly_temp_data_cache_empty(monkeypatch_key_value_store): + assert validate_tmy3_hourly_temp_data_cache("722880") is False -# station cache expired empty -def test_isd_station_cached_isd_hourly_temp_data_is_expired_empty( - monkeypatch_key_value_store, -): - station = ISDStation("722874") - assert station.cached_isd_hourly_temp_data_is_expired(2007) is True +def test_validate_cz2010_hourly_temp_data_cache_empty(monkeypatch_key_value_store): + assert validate_cz2010_hourly_temp_data_cache("722880") is False -def test_isd_station_cached_isd_daily_temp_data_is_expired_empty( +def test_isd_station_validate_tmy3_hourly_temp_data_cache_empty( monkeypatch_key_value_store, ): - station = ISDStation("722874") - assert station.cached_isd_daily_temp_data_is_expired(2007) is True + station = WeatherStation("722880") + assert station.validate_tmy3_hourly_temp_data_cache() is False -def test_isd_station_cached_gsod_daily_temp_data_is_expired_empty( +def test_isd_station_validate_cz2010_hourly_temp_data_cache_empty( monkeypatch_key_value_store, ): - station = ISDStation("722874") - assert station.cached_gsod_daily_temp_data_is_expired(2007) is True - - -# cache expired false -def test_cached_isd_hourly_temp_data_is_expired_false( - mock_api_transport, monkeypatch_key_value_store -): - load_isd_hourly_temp_data_cached_proxy("722874", 2007) - assert cached_isd_hourly_temp_data_is_expired("722874", 2007) is False + station = WeatherStation("722880") + assert station.validate_cz2010_hourly_temp_data_cache() is False -def test_cached_isd_daily_temp_data_is_expired_false( +def test_raise_on_missing_tmy3_hourly_temp_data_cache_data_no_web_fetch( mock_api_transport, monkeypatch_key_value_store ): - load_isd_daily_temp_data_cached_proxy("722874", 2007) - assert cached_isd_daily_temp_data_is_expired("722874", 2007) is False + with pytest.raises(TMY3DataNotAvailableError): + load_tmy3_hourly_temp_data_cached_proxy("722874", fetch_from_web=False) -def test_cached_gsod_daily_temp_data_is_expired_false( +def test_raise_on_missing_cz2010_hourly_temp_data_cache_data_no_web_fetch( mock_api_transport, monkeypatch_key_value_store ): - load_gsod_daily_temp_data_cached_proxy("722874", 2007) - assert cached_gsod_daily_temp_data_is_expired("722874", 2007) is False + with pytest.raises(CZ2010DataNotAvailableError): + load_cz2010_hourly_temp_data_cached_proxy("722874", fetch_from_web=False) -# cache expired true -def test_cached_isd_hourly_temp_data_is_expired_true( - mock_api_transport, monkeypatch_key_value_store +def test_validate_tmy3_hourly_temp_data_cache_updated_recently( + monkeypatch_tmy3_request, monkeypatch_key_value_store ): - load_isd_hourly_temp_data_cached_proxy("722874", 2007) - - # manually expire key value item - key = get_isd_hourly_temp_data_cache_key("722874", 2007) - _backdate_cache_key( - monkeypatch_key_value_store, key, pytz.UTC.localize(datetime(2007, 3, 3)) - ) - - assert cached_isd_hourly_temp_data_is_expired("722874", 2007) is True + load_tmy3_hourly_temp_data_cached_proxy("722880") + assert validate_tmy3_hourly_temp_data_cache("722880") is True -def test_cached_isd_daily_temp_data_is_expired_true( - mock_api_transport, monkeypatch_key_value_store +def test_validate_cz2010_hourly_temp_data_cache_updated_recently( + monkeypatch_cz2010_request, monkeypatch_key_value_store ): - load_isd_daily_temp_data_cached_proxy("722874", 2007) + load_cz2010_hourly_temp_data_cached_proxy("722880") + assert validate_cz2010_hourly_temp_data_cache("722880") is True - # manually expire key value item - key = get_isd_daily_temp_data_cache_key("722874", 2007) - _backdate_cache_key( - monkeypatch_key_value_store, key, pytz.UTC.localize(datetime(2007, 3, 3)) - ) - assert cached_isd_daily_temp_data_is_expired("722874", 2007) is True +def test_serialize_tmy3_hourly_temp_data(): + ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) + assert serialize_tmy3_hourly_temp_data(ts) == [["2017010100", 1]] -def test_cached_gsod_daily_temp_data_is_expired_true( - mock_api_transport, monkeypatch_key_value_store -): - load_gsod_daily_temp_data_cached_proxy("722874", 2007) +def test_serialize_cz2010_hourly_temp_data(): + ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) + assert serialize_cz2010_hourly_temp_data(ts) == [["2017010100", 1]] - # manually expire key value item - key = get_gsod_daily_temp_data_cache_key("722874", 2007) - _backdate_cache_key( - monkeypatch_key_value_store, key, pytz.UTC.localize(datetime(2007, 3, 3)) - ) - assert cached_gsod_daily_temp_data_is_expired("722874", 2007) is True +def test_isd_station_serialize_tmy3_hourly_temp_data(): + station = WeatherStation("722880") + ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) + assert station.serialize_tmy3_hourly_temp_data(ts) == [["2017010100", 1]] -# validate cache empty -def test_validate_isd_hourly_temp_data_cache_empty(monkeypatch_key_value_store): - assert validate_isd_hourly_temp_data_cache("722874", 2007) is False +def test_isd_station_serialize_cz2010_hourly_temp_data(): + station = WeatherStation("722880") + ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) + assert station.serialize_cz2010_hourly_temp_data(ts) == [["2017010100", 1]] -def test_validate_isd_daily_temp_data_cache_empty(monkeypatch_key_value_store): - assert validate_isd_daily_temp_data_cache("722874", 2007) is False +def test_deserialize_tmy3_hourly_temp_data(): + ts = deserialize_tmy3_hourly_temp_data([["2017010100", 1]]) + assert ts.sum() == 1 + assert ts.index.freq.name == "h" -def test_validate_gsod_daily_temp_data_cache_empty(monkeypatch_key_value_store): - assert validate_gsod_daily_temp_data_cache("722874", 2007) is False +def test_deserialize_cz2010_hourly_temp_data(): + ts = deserialize_cz2010_hourly_temp_data([["2017010100", 1]]) + assert ts.sum() == 1 + assert ts.index.freq.name == "h" -def test_validate_tmy3_hourly_temp_data_cache_empty(monkeypatch_key_value_store): - assert validate_tmy3_hourly_temp_data_cache("722880") is False +def test_isd_station_deserialize_tmy3_hourly_temp_data(): + station = WeatherStation("722880") + ts = station.deserialize_tmy3_hourly_temp_data([["2017010100", 1]]) + assert ts.sum() == 1 + assert ts.index.freq.name == "h" -def test_validate_cz2010_hourly_temp_data_cache_empty(monkeypatch_key_value_store): - assert validate_cz2010_hourly_temp_data_cache("722880") is False +def test_isd_station_deserialize_cz2010_hourly_temp_data(): + station = WeatherStation("722880") + ts = station.deserialize_cz2010_hourly_temp_data([["2017010100", 1]]) + assert ts.sum() == 1 + assert ts.index.freq.name == "h" -# station validate cache empty -def test_isd_station_validate_isd_hourly_temp_data_cache_empty( +def test_write_read_destroy_tmy3_hourly_temp_data_to_from_cache( monkeypatch_key_value_store, ): - station = ISDStation("722874") - assert station.validate_isd_hourly_temp_data_cache(2007) is False + store = monkeypatch_key_value_store + key = get_tmy3_hourly_temp_data_cache_key("123456") + assert store.key_exists(key) is False + ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) + write_tmy3_hourly_temp_data_to_cache("123456", ts1) + assert store.key_exists(key) is True -def test_isd_station_validate_isd_daily_temp_data_cache_empty( - monkeypatch_key_value_store, -): - station = ISDStation("722874") - assert station.validate_isd_daily_temp_data_cache(2007) is False + ts2 = read_tmy3_hourly_temp_data_from_cache("123456") + assert store.key_exists(key) is True + assert int(ts1.sum()) == int(ts2.sum()) + assert ts1.shape == ts2.shape + destroy_cached_tmy3_hourly_temp_data("123456") + assert store.key_exists(key) is False -def test_isd_station_validate_gsod_daily_temp_data_cache_empty( + +def test_write_read_destroy_cz2010_hourly_temp_data_to_from_cache( monkeypatch_key_value_store, ): - station = ISDStation("722874") - assert station.validate_gsod_daily_temp_data_cache(2007) is False + store = monkeypatch_key_value_store + key = get_cz2010_hourly_temp_data_cache_key("123456") + assert store.key_exists(key) is False + ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) + write_cz2010_hourly_temp_data_to_cache("123456", ts1) + assert store.key_exists(key) is True -def test_isd_station_validate_tmy3_hourly_temp_data_cache_empty( - monkeypatch_key_value_store, -): - station = ISDStation("722880") - assert station.validate_tmy3_hourly_temp_data_cache() is False + ts2 = read_cz2010_hourly_temp_data_from_cache("123456") + assert store.key_exists(key) is True + assert int(ts1.sum()) == int(ts2.sum()) + assert ts1.shape == ts2.shape + + destroy_cached_cz2010_hourly_temp_data("123456") + assert store.key_exists(key) is False -def test_isd_station_validate_cz2010_hourly_temp_data_cache_empty( +def test_isd_station_write_read_destroy_tmy3_hourly_temp_data_to_from_cache( monkeypatch_key_value_store, ): - station = ISDStation("722880") - assert station.validate_cz2010_hourly_temp_data_cache() is False - + station = WeatherStation("722880") + store = monkeypatch_key_value_store + key = station.get_tmy3_hourly_temp_data_cache_key() + assert store.key_exists(key) is False -# error on non-existent when relying on cache -def test_raise_on_missing_isd_hourly_temp_data_cache_data_no_web_fetch( - mock_api_transport, monkeypatch_key_value_store -): - with pytest.raises(ISDDataNotAvailableError): - load_isd_hourly_temp_data_cached_proxy("722874", 1907, fetch_from_web=False) + ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) + station.write_tmy3_hourly_temp_data_to_cache(ts1) + assert store.key_exists(key) is True + ts2 = station.read_tmy3_hourly_temp_data_from_cache() + assert store.key_exists(key) is True + assert int(ts1.sum()) == int(ts2.sum()) + assert ts1.shape == ts2.shape -def test_raise_on_missing_isd_daily_temp_data_cache_data_no_web_fetch( - mock_api_transport, monkeypatch_key_value_store -): - with pytest.raises(ISDDataNotAvailableError): - load_isd_daily_temp_data_cached_proxy("722874", 1907, fetch_from_web=False) + station.destroy_cached_tmy3_hourly_temp_data() + assert store.key_exists(key) is False -def test_raise_on_missing_gsod_daily_temp_data_cache_data_no_web_fetch( - mock_api_transport, monkeypatch_key_value_store +def test_isd_station_write_read_destroy_cz2010_hourly_temp_data_to_from_cache( + monkeypatch_key_value_store, ): - with pytest.raises(GSODDataNotAvailableError): - load_gsod_daily_temp_data_cached_proxy("722874", 1907, fetch_from_web=False) - - -def test_raise_on_missing_tmy3_hourly_temp_data_cache_data_no_web_fetch( - mock_api_transport, monkeypatch_key_value_store -): - with pytest.raises(TMY3DataNotAvailableError): - load_tmy3_hourly_temp_data_cached_proxy("722874", fetch_from_web=False) - - -def test_raise_on_missing_cz2010_hourly_temp_data_cache_data_no_web_fetch( - mock_api_transport, monkeypatch_key_value_store -): - with pytest.raises(CZ2010DataNotAvailableError): - load_cz2010_hourly_temp_data_cached_proxy("722874", fetch_from_web=False) - - -# validate updated recently -def test_validate_isd_hourly_temp_data_cache_updated_recently( - mock_api_transport, monkeypatch_key_value_store -): - load_isd_hourly_temp_data_cached_proxy("722874", 2007) - assert validate_isd_hourly_temp_data_cache("722874", 2007) is True - - -def test_validate_isd_daily_temp_data_cache_updated_recently( - mock_api_transport, monkeypatch_key_value_store -): - load_isd_daily_temp_data_cached_proxy("722874", 2007) - assert validate_isd_daily_temp_data_cache("722874", 2007) is True - - -def test_validate_gsod_daily_temp_data_cache_updated_recently( - mock_api_transport, monkeypatch_key_value_store -): - load_gsod_daily_temp_data_cached_proxy("722874", 2007) - assert validate_gsod_daily_temp_data_cache("722874", 2007) is True - - -def test_validate_tmy3_hourly_temp_data_cache_updated_recently( - monkeypatch_tmy3_request, monkeypatch_key_value_store -): - load_tmy3_hourly_temp_data_cached_proxy("722880") - assert validate_tmy3_hourly_temp_data_cache("722880") is True - - -def test_validate_cz2010_hourly_temp_data_cache_updated_recently( - monkeypatch_cz2010_request, monkeypatch_key_value_store -): - load_cz2010_hourly_temp_data_cached_proxy("722880") - assert validate_cz2010_hourly_temp_data_cache("722880") is True - - -# validate expired -def test_validate_isd_hourly_temp_data_cache_expired( - mock_api_transport, monkeypatch_key_value_store -): - load_isd_hourly_temp_data_cached_proxy("722874", 2007) - - # manually expire key value item - key = get_isd_hourly_temp_data_cache_key("722874", 2007) - _backdate_cache_key( - monkeypatch_key_value_store, key, pytz.UTC.localize(datetime(2007, 3, 3)) - ) - - assert validate_isd_hourly_temp_data_cache("722874", 2007) is False - - -def test_validate_isd_daily_temp_data_cache_expired( - mock_api_transport, monkeypatch_key_value_store -): - load_isd_daily_temp_data_cached_proxy("722874", 2007) - - # manually expire key value item - key = get_isd_daily_temp_data_cache_key("722874", 2007) - _backdate_cache_key( - monkeypatch_key_value_store, key, pytz.UTC.localize(datetime(2007, 3, 3)) - ) - - assert validate_isd_daily_temp_data_cache("722874", 2007) is False - - -def test_validate_gsod_daily_temp_data_cache_expired( - mock_api_transport, monkeypatch_key_value_store -): - load_gsod_daily_temp_data_cached_proxy("722874", 2007) - - # manually expire key value item - key = get_gsod_daily_temp_data_cache_key("722874", 2007) - _backdate_cache_key( - monkeypatch_key_value_store, key, pytz.UTC.localize(datetime(2007, 3, 3)) - ) - - assert validate_gsod_daily_temp_data_cache("722874", 2007) is False - - -# serialize -def test_serialize_isd_hourly_temp_data(): - ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) - assert serialize_isd_hourly_temp_data(ts) == [["2017010100", 1]] - - -def test_serialize_isd_daily_temp_data(): - ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) - assert serialize_isd_daily_temp_data(ts) == [["20170101", 1]] - - -def test_serialize_gsod_daily_temp_data(): - ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) - assert serialize_gsod_daily_temp_data(ts) == [["20170101", 1]] - - -def test_serialize_tmy3_hourly_temp_data(): - ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) - assert serialize_tmy3_hourly_temp_data(ts) == [["2017010100", 1]] - - -def test_serialize_cz2010_hourly_temp_data(): - ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) - assert serialize_cz2010_hourly_temp_data(ts) == [["2017010100", 1]] - - -# station serialize -def test_isd_station_serialize_isd_hourly_temp_data(): - station = ISDStation("722874") - ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) - assert station.serialize_isd_hourly_temp_data(ts) == [["2017010100", 1]] - - -def test_isd_station_serialize_isd_daily_temp_data(): - station = ISDStation("722874") - ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) - assert station.serialize_isd_daily_temp_data(ts) == [["20170101", 1]] - - -def test_isd_station_serialize_gsod_daily_temp_data(): - station = ISDStation("722874") - ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) - assert station.serialize_gsod_daily_temp_data(ts) == [["20170101", 1]] - - -def test_isd_station_serialize_tmy3_hourly_temp_data(): - station = ISDStation("722880") - ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) - assert station.serialize_tmy3_hourly_temp_data(ts) == [["2017010100", 1]] - - -def test_isd_station_serialize_cz2010_hourly_temp_data(): - station = ISDStation("722880") - ts = pd.Series([1], index=[pytz.UTC.localize(datetime(2017, 1, 1))]) - assert station.serialize_cz2010_hourly_temp_data(ts) == [["2017010100", 1]] - - -# deserialize -def test_deserialize_isd_hourly_temp_data(): - ts = deserialize_isd_hourly_temp_data([["2017010100", 1]]) - assert ts.sum() == 1 - assert ts.index.freq.name == "h" - - -def test_deserialize_isd_daily_temp_data(): - ts = deserialize_isd_daily_temp_data([["20170101", 1]]) - assert ts.sum() == 1 - assert ts.index.freq.name == "D" - - -def test_deserialize_gsod_daily_temp_data(): - ts = deserialize_gsod_daily_temp_data([["20170101", 1]]) - assert ts.sum() == 1 - assert ts.index.freq.name == "D" - - -def test_deserialize_tmy3_hourly_temp_data(): - ts = deserialize_tmy3_hourly_temp_data([["2017010100", 1]]) - assert ts.sum() == 1 - assert ts.index.freq.name == "h" - - -def test_deserialize_cz2010_hourly_temp_data(): - ts = deserialize_cz2010_hourly_temp_data([["2017010100", 1]]) - assert ts.sum() == 1 - assert ts.index.freq.name == "h" - - -# station deserialize -def test_isd_station_deserialize_isd_hourly_temp_data(): - station = ISDStation("722874") - ts = station.deserialize_isd_hourly_temp_data([["2017010100", 1]]) - assert ts.sum() == 1 - assert ts.index.freq.name == "h" - - -def test_isd_station_deserialize_isd_daily_temp_data(): - station = ISDStation("722874") - ts = station.deserialize_isd_daily_temp_data([["20170101", 1]]) - assert ts.sum() == 1 - assert ts.index.freq.name == "D" - - -def test_isd_station_deserialize_gsod_daily_temp_data(): - station = ISDStation("722874") - ts = station.deserialize_gsod_daily_temp_data([["20170101", 1]]) - assert ts.sum() == 1 - assert ts.index.freq.name == "D" - - -def test_isd_station_deserialize_tmy3_hourly_temp_data(): - station = ISDStation("722880") - ts = station.deserialize_tmy3_hourly_temp_data([["2017010100", 1]]) - assert ts.sum() == 1 - assert ts.index.freq.name == "h" - - -def test_isd_station_deserialize_cz2010_hourly_temp_data(): - station = ISDStation("722880") - ts = station.deserialize_cz2010_hourly_temp_data([["2017010100", 1]]) - assert ts.sum() == 1 - assert ts.index.freq.name == "h" - - -# write read destroy -def test_write_read_destroy_isd_hourly_temp_data_to_from_cache( - monkeypatch_key_value_store, -): - store = monkeypatch_key_value_store - key = get_isd_hourly_temp_data_cache_key("123456", 1990) - assert store.key_exists(key) is False - - ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) - write_isd_hourly_temp_data_to_cache("123456", 1990, ts1) - assert store.key_exists(key) is True - - ts2 = read_isd_hourly_temp_data_from_cache("123456", 1990) - assert store.key_exists(key) is True - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - destroy_cached_isd_hourly_temp_data("123456", 1990) - assert store.key_exists(key) is False - - -def test_write_read_destroy_isd_daily_temp_data_to_from_cache( - monkeypatch_key_value_store, -): - store = monkeypatch_key_value_store - key = get_isd_daily_temp_data_cache_key("123456", 1990) - assert store.key_exists(key) is False - - ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) - write_isd_daily_temp_data_to_cache("123456", 1990, ts1) - assert store.key_exists(key) is True - - ts2 = read_isd_daily_temp_data_from_cache("123456", 1990) - assert store.key_exists(key) is True - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - destroy_cached_isd_daily_temp_data("123456", 1990) - assert store.key_exists(key) is False - - -def test_write_read_destroy_gsod_daily_temp_data_to_from_cache( - monkeypatch_key_value_store, -): - store = monkeypatch_key_value_store - key = get_gsod_daily_temp_data_cache_key("123456", 1990) - assert store.key_exists(key) is False - - ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) - write_gsod_daily_temp_data_to_cache("123456", 1990, ts1) - assert store.key_exists(key) is True - - ts2 = read_gsod_daily_temp_data_from_cache("123456", 1990) - assert store.key_exists(key) is True - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - destroy_cached_gsod_daily_temp_data("123456", 1990) - assert store.key_exists(key) is False - - -def test_write_read_destroy_tmy3_hourly_temp_data_to_from_cache( - monkeypatch_key_value_store, -): - store = monkeypatch_key_value_store - key = get_tmy3_hourly_temp_data_cache_key("123456") - assert store.key_exists(key) is False - - ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) - write_tmy3_hourly_temp_data_to_cache("123456", ts1) - assert store.key_exists(key) is True - - ts2 = read_tmy3_hourly_temp_data_from_cache("123456") - assert store.key_exists(key) is True - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - destroy_cached_tmy3_hourly_temp_data("123456") - assert store.key_exists(key) is False - - -def test_write_read_destroy_cz2010_hourly_temp_data_to_from_cache( - monkeypatch_key_value_store, -): - store = monkeypatch_key_value_store - key = get_cz2010_hourly_temp_data_cache_key("123456") - assert store.key_exists(key) is False - - ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) - write_cz2010_hourly_temp_data_to_cache("123456", ts1) - assert store.key_exists(key) is True - - ts2 = read_cz2010_hourly_temp_data_from_cache("123456") - assert store.key_exists(key) is True - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - destroy_cached_cz2010_hourly_temp_data("123456") - assert store.key_exists(key) is False - - -# station write read destroy -def test_isd_station_write_read_destroy_isd_hourly_temp_data_to_from_cache( - monkeypatch_key_value_store, -): - station = ISDStation("722874") - store = monkeypatch_key_value_store - key = station.get_isd_hourly_temp_data_cache_key(1990) - assert store.key_exists(key) is False - - ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) - station.write_isd_hourly_temp_data_to_cache(1990, ts1) - assert store.key_exists(key) is True - - ts2 = station.read_isd_hourly_temp_data_from_cache(1990) - assert store.key_exists(key) is True - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - station.destroy_cached_isd_hourly_temp_data(1990) - assert store.key_exists(key) is False - - -def test_isd_station_write_read_destroy_isd_daily_temp_data_to_from_cache( - monkeypatch_key_value_store, -): - station = ISDStation("722874") - store = monkeypatch_key_value_store - key = station.get_isd_daily_temp_data_cache_key(1990) - assert store.key_exists(key) is False - - ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) - station.write_isd_daily_temp_data_to_cache(1990, ts1) - assert store.key_exists(key) is True - - ts2 = station.read_isd_daily_temp_data_from_cache(1990) - assert store.key_exists(key) is True - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - station.destroy_cached_isd_daily_temp_data(1990) - assert store.key_exists(key) is False - - -def test_isd_station_write_read_destroy_gsod_daily_temp_data_to_from_cache( - monkeypatch_key_value_store, -): - station = ISDStation("722874") - store = monkeypatch_key_value_store - key = station.get_gsod_daily_temp_data_cache_key(1990) - assert store.key_exists(key) is False - - ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) - station.write_gsod_daily_temp_data_to_cache(1990, ts1) - assert store.key_exists(key) is True - - ts2 = station.read_gsod_daily_temp_data_from_cache(1990) - assert store.key_exists(key) is True - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - station.destroy_cached_gsod_daily_temp_data(1990) - assert store.key_exists(key) is False - - -def test_isd_station_write_read_destroy_tmy3_hourly_temp_data_to_from_cache( - monkeypatch_key_value_store, -): - station = ISDStation("722880") - store = monkeypatch_key_value_store - key = station.get_tmy3_hourly_temp_data_cache_key() - assert store.key_exists(key) is False - - ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) - station.write_tmy3_hourly_temp_data_to_cache(ts1) - assert store.key_exists(key) is True - - ts2 = station.read_tmy3_hourly_temp_data_from_cache() - assert store.key_exists(key) is True - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - station.destroy_cached_tmy3_hourly_temp_data() - assert store.key_exists(key) is False - - -def test_isd_station_write_read_destroy_cz2010_hourly_temp_data_to_from_cache( - monkeypatch_key_value_store, -): - station = ISDStation("722880") - store = monkeypatch_key_value_store - key = station.get_cz2010_hourly_temp_data_cache_key() - assert store.key_exists(key) is False + station = WeatherStation("722880") + store = monkeypatch_key_value_store + key = station.get_cz2010_hourly_temp_data_cache_key() + assert store.key_exists(key) is False ts1 = pd.Series([1], index=[pytz.UTC.localize(datetime(1990, 1, 1))]) station.write_cz2010_hourly_temp_data_to_cache(ts1) @@ -1218,40 +516,6 @@ def test_isd_station_write_read_destroy_cz2010_hourly_temp_data_to_from_cache( assert store.key_exists(key) is False -# load cached proxy -def test_load_isd_hourly_temp_data_cached_proxy( - mock_api_transport, monkeypatch_key_value_store -): - # doesn't yet guarantee that all code paths are taken, - # except that coverage picks it up either here or elsewhere - ts1 = load_isd_hourly_temp_data_cached_proxy("722874", 2007) - ts2 = load_isd_hourly_temp_data_cached_proxy("722874", 2007) - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - -def test_load_isd_daily_temp_data_cached_proxy( - mock_api_transport, monkeypatch_key_value_store -): - # doesn't yet guarantee that all code paths are taken, - # except that coverage picks it up either here or elsewhere - ts1 = load_isd_daily_temp_data_cached_proxy("722874", 2007) - ts2 = load_isd_daily_temp_data_cached_proxy("722874", 2007) - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - -def test_load_gsod_daily_temp_data_cached_proxy( - mock_api_transport, monkeypatch_key_value_store -): - # doesn't yet guarantee that all code paths are taken, - # except that coverage picks it up either here or elsewhere - ts1 = load_gsod_daily_temp_data_cached_proxy("722874", 2007) - ts2 = load_gsod_daily_temp_data_cached_proxy("722874", 2007) - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - def test_load_tmy3_hourly_temp_data_cached_proxy( monkeypatch_tmy3_request, monkeypatch_key_value_store ): @@ -1274,50 +538,10 @@ def test_load_cz2010_hourly_temp_data_cached_proxy( assert ts1.shape == ts2.shape -# station load cached proxy -def test_isd_station_load_isd_hourly_temp_data_cached_proxy( - mock_api_transport, monkeypatch_key_value_store -): - station = ISDStation("722874") - - # doesn't yet guarantee that all code paths are taken, - # except that coverage picks it up either here or elsewhere - ts1 = station.load_isd_hourly_temp_data_cached_proxy(2007) - ts2 = station.load_isd_hourly_temp_data_cached_proxy(2007) - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - -def test_isd_station_load_isd_daily_temp_data_cached_proxy( - mock_api_transport, monkeypatch_key_value_store -): - station = ISDStation("722874") - - # doesn't yet guarantee that all code paths are taken, - # except that coverage picks it up either here or elsewhere - ts1 = station.load_isd_daily_temp_data_cached_proxy(2007) - ts2 = station.load_isd_daily_temp_data_cached_proxy(2007) - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - -def test_isd_station_load_gsod_daily_temp_data_cached_proxy( - mock_api_transport, monkeypatch_key_value_store -): - station = ISDStation("722874") - - # doesn't yet guarantee that all code paths are taken, - # except that coverage picks it up either here or elsewhere - ts1 = station.load_gsod_daily_temp_data_cached_proxy(2007) - ts2 = station.load_gsod_daily_temp_data_cached_proxy(2007) - assert int(ts1.sum()) == int(ts2.sum()) - assert ts1.shape == ts2.shape - - def test_isd_station_load_tmy3_hourly_temp_data_cached_proxy( monkeypatch_tmy3_request, monkeypatch_key_value_store ): - station = ISDStation("722880") + station = WeatherStation("722880") # doesn't yet guarantee that all code paths are taken, # except that coverage picks it up either here or elsewhere @@ -1330,7 +554,7 @@ def test_isd_station_load_tmy3_hourly_temp_data_cached_proxy( def test_isd_station_load_cz2010_hourly_temp_data_cached_proxy( monkeypatch_cz2010_request, monkeypatch_key_value_store ): - station = ISDStation("722880") + station = WeatherStation("722880") # doesn't yet guarantee that all code paths are taken, # except that coverage picks it up either here or elsewhere @@ -1340,79 +564,6 @@ def test_isd_station_load_cz2010_hourly_temp_data_cached_proxy( assert ts1.shape == ts2.shape -# load data between dates -def test_load_isd_hourly_temp_data( - monkeypatch_make_api_request_v2, monkeypatch_key_value_store -): - start = datetime(2006, 1, 3, tzinfo=pytz.UTC) - end = datetime(2007, 4, 3, tzinfo=pytz.UTC) - ts, warnings = load_isd_hourly_temp_data("722874", start, end) - assert ts.index[0] == start - assert pd.isnull(ts.iloc[0]) - assert ts.index[-1] == end - assert pd.notnull(ts.iloc[-1]) - - -def test_load_isd_hourly_temp_data_non_normalized_dates( - monkeypatch_make_api_request_v2, monkeypatch_key_value_store -): - start = datetime(2006, 1, 3, 11, 12, 13, tzinfo=pytz.UTC) - end = datetime(2007, 4, 3, 12, 13, 14, tzinfo=pytz.UTC) - ts, warnings = load_isd_hourly_temp_data("722874", start, end) - assert ts.index[0] == datetime(2006, 1, 3, 12, tzinfo=pytz.UTC) - assert pd.isnull(ts.iloc[0]) - assert ts.index[-1] == datetime(2007, 4, 3, 12, tzinfo=pytz.UTC) - assert pd.notnull(ts.iloc[-1]) - - -def test_load_isd_daily_temp_data( - monkeypatch_make_api_request_v2, monkeypatch_key_value_store -): - start = datetime(2006, 1, 3, tzinfo=pytz.UTC) - end = datetime(2007, 4, 3, tzinfo=pytz.UTC) - ts = load_isd_daily_temp_data("722874", start, end) - assert ts.index[0] == start - assert pd.isnull(ts.iloc[0]) - assert ts.index[-1] == end - assert pd.notnull(ts.iloc[-1]) - - -def test_load_isd_daily_temp_data_non_normalized_dates( - monkeypatch_make_api_request_v2, monkeypatch_key_value_store -): - start = datetime(2006, 1, 3, 11, 12, 13, tzinfo=pytz.UTC) - end = datetime(2007, 4, 3, 12, 13, 14, tzinfo=pytz.UTC) - ts = load_isd_daily_temp_data("722874", start, end) - assert ts.index[0] == datetime(2006, 1, 4, tzinfo=pytz.UTC) - assert pd.isnull(ts.iloc[0]) - assert ts.index[-1] == datetime(2007, 4, 3, tzinfo=pytz.UTC) - assert pd.notnull(ts.iloc[-1]) - - -def test_load_gsod_daily_temp_data( - monkeypatch_make_api_request_v2, monkeypatch_key_value_store -): - start = datetime(2006, 1, 3, tzinfo=pytz.UTC) - end = datetime(2007, 4, 3, tzinfo=pytz.UTC) - ts = load_gsod_daily_temp_data("722874", start, end) - assert ts.index[0] == start - assert pd.isnull(ts.iloc[0]) - assert ts.index[-1] == end - assert pd.notnull(ts.iloc[-1]) - - -def test_load_gsod_daily_temp_data_non_normalized_dates( - monkeypatch_make_api_request, monkeypatch_key_value_store -): - start = datetime(2006, 1, 3, 11, 12, 13, tzinfo=pytz.UTC) - end = datetime(2007, 4, 3, 12, 13, 14, tzinfo=pytz.UTC) - ts = load_gsod_daily_temp_data("722874", start, end) - assert ts.index[0] == datetime(2006, 1, 4, tzinfo=pytz.UTC) - assert pd.isnull(ts.iloc[0]) - assert ts.index[-1] == datetime(2007, 4, 3, tzinfo=pytz.UTC) - assert pd.notnull(ts.iloc[-1]) - - def test_load_tmy3_hourly_temp_data( monkeypatch_tmy3_request, monkeypatch_key_value_store ): @@ -1437,44 +588,10 @@ def test_load_cz2010_hourly_temp_data( assert pd.notnull(ts.iloc[-1]) -# station load data between dates -def test_isd_station_load_isd_hourly_temp_data( - mock_api_transport, monkeypatch_key_value_store -): - station = ISDStation("722874") - start = datetime(2007, 3, 3, tzinfo=pytz.UTC) - end = datetime(2007, 4, 3, tzinfo=pytz.UTC) - ts, warnings = station.load_isd_hourly_temp_data(start, end) - assert ts.index[0] == start - assert ts.index[-1] == end - - -def test_isd_station_load_isd_daily_temp_data( - mock_api_transport, monkeypatch_key_value_store -): - station = ISDStation("722874") - start = datetime(2007, 3, 3, tzinfo=pytz.UTC) - end = datetime(2007, 4, 3, tzinfo=pytz.UTC) - ts = station.load_isd_daily_temp_data(start, end) - assert ts.index[0] == start - assert ts.index[-1] == end - - -def test_isd_station_load_gsod_daily_temp_data( - mock_api_transport, monkeypatch_key_value_store -): - station = ISDStation("722874") - start = datetime(2007, 3, 3, tzinfo=pytz.UTC) - end = datetime(2007, 4, 3, tzinfo=pytz.UTC) - ts = station.load_gsod_daily_temp_data(start, end) - assert ts.index[0] == start - assert ts.index[-1] == end - - def test_isd_station_load_tmy3_hourly_temp_data( monkeypatch_tmy3_request, monkeypatch_key_value_store ): - station = ISDStation("722880") + station = WeatherStation("722880") start = datetime(2007, 3, 3, tzinfo=pytz.UTC) end = datetime(2007, 4, 3, tzinfo=pytz.UTC) ts = station.load_tmy3_hourly_temp_data(start, end) @@ -1485,7 +602,7 @@ def test_isd_station_load_tmy3_hourly_temp_data( def test_isd_station_load_cz2010_hourly_temp_data( monkeypatch_cz2010_request, monkeypatch_key_value_store ): - station = ISDStation("722880") + station = WeatherStation("722880") start = datetime(2007, 3, 3, tzinfo=pytz.UTC) end = datetime(2007, 4, 3, tzinfo=pytz.UTC) ts = station.load_cz2010_hourly_temp_data(start, end) @@ -1493,55 +610,6 @@ def test_isd_station_load_cz2010_hourly_temp_data( assert ts.index[-1] == end -# load cached -def test_load_cached_isd_hourly_temp_data( - mock_api_transport, monkeypatch_key_value_store -): - ts = load_cached_isd_hourly_temp_data("722874") - assert ts is None - - # load data - ts = load_isd_hourly_temp_data_cached_proxy("722874", 2007) - assert int(ts.sum()) == 156160 - assert ts.shape == (8760,) - - ts = load_cached_isd_hourly_temp_data("722874") - assert int(ts.sum()) == 156160 - assert ts.shape == (8760,) - - -def test_load_cached_isd_daily_temp_data( - mock_api_transport, monkeypatch_key_value_store -): - ts = load_cached_isd_daily_temp_data("722874") - assert ts is None - - # load data - ts = load_isd_daily_temp_data_cached_proxy("722874", 2007) - assert int(ts.sum()) == 6510 - assert ts.shape == (365,) - - ts = load_cached_isd_daily_temp_data("722874") - assert int(ts.sum()) == 6510 - assert ts.shape == (365,) - - -def test_load_cached_gsod_daily_temp_data( - mock_api_transport, monkeypatch_key_value_store -): - ts = load_cached_gsod_daily_temp_data("722874") - assert ts is None - - # load data - ts = load_gsod_daily_temp_data_cached_proxy("722874", 2007) - assert int(ts.sum()) == 6509 - assert ts.shape == (365,) - - ts = load_cached_gsod_daily_temp_data("722874") - assert int(ts.sum()) == 6509 - assert ts.shape == (365,) - - def test_load_cached_tmy3_hourly_temp_data( monkeypatch_tmy3_request, monkeypatch_key_value_store ): @@ -1567,72 +635,17 @@ def test_load_cached_cz2010_hourly_temp_data( # load data ts = load_cz2010_hourly_temp_data_cached_proxy("722880") assert int(ts.sum()) == 153430 - assert ts.shape == (8760,) - - ts = load_cached_cz2010_hourly_temp_data("722880") - assert int(ts.sum()) == 153430 - assert ts.shape == (8760,) - - -# station load cached -def test_isd_station_load_cached_isd_hourly_temp_data( - mock_api_transport, monkeypatch_key_value_store -): - station = ISDStation("722874") - - ts = station.load_cached_isd_hourly_temp_data() - assert ts is None - - # load data - ts = station.load_isd_hourly_temp_data_cached_proxy(2007) - assert int(ts.sum()) == 156160 - assert ts.shape == (8760,) - - ts = station.load_cached_isd_hourly_temp_data() - assert int(ts.sum()) == 156160 - assert ts.shape == (8760,) - - -def test_isd_station_load_cached_isd_daily_temp_data( - mock_api_transport, monkeypatch_key_value_store -): - station = ISDStation("722874") - - ts = station.load_cached_isd_daily_temp_data() - assert ts is None - - # load data - ts = station.load_isd_daily_temp_data_cached_proxy(2007) - assert int(ts.sum()) == 6510 - assert ts.shape == (365,) - - ts = station.load_cached_isd_daily_temp_data() - assert int(ts.sum()) == 6510 - assert ts.shape == (365,) - - -def test_isd_station_load_cached_gsod_daily_temp_data( - mock_api_transport, monkeypatch_key_value_store -): - station = ISDStation("722874") - - ts = station.load_cached_gsod_daily_temp_data() - assert ts is None - - # load data - ts = station.load_gsod_daily_temp_data_cached_proxy(2007) - assert int(ts.sum()) == 6509 - assert ts.shape == (365,) + assert ts.shape == (8760,) - ts = station.load_cached_gsod_daily_temp_data() - assert int(ts.sum()) == 6509 - assert ts.shape == (365,) + ts = load_cached_cz2010_hourly_temp_data("722880") + assert int(ts.sum()) == 153430 + assert ts.shape == (8760,) def test_isd_station_load_cached_tmy3_hourly_temp_data( monkeypatch_tmy3_request, monkeypatch_key_value_store ): - station = ISDStation("722880") + station = WeatherStation("722880") ts = station.load_cached_tmy3_hourly_temp_data() assert ts is None @@ -1650,7 +663,7 @@ def test_isd_station_load_cached_tmy3_hourly_temp_data( def test_isd_station_load_cached_cz2010_hourly_temp_data( monkeypatch_cz2010_request, monkeypatch_key_value_store ): - station = ISDStation("722880") + station = WeatherStation("722880") ts = station.load_cached_cz2010_hourly_temp_data() assert ts is None @@ -1665,7 +678,6 @@ def test_isd_station_load_cached_cz2010_hourly_temp_data( assert ts.shape == (8760,) -# test slicing of normalized data def test_load_correctly_sliced_tmy3_hourly_temp_data( monkeypatch_tmy3_request, monkeypatch_key_value_store ): @@ -1700,55 +712,10 @@ def test_load_correctly_sliced_cz2010_hourly_temp_data( assert ts[i] == ts_orig[i.replace(year=1900)] -def test_isd_station_load_isd_hourly_temp_data_tz_exception( - monkeypatch_tmy3_request, monkeypatch_key_value_store -): - station = ISDStation("722880") - start = datetime(2007, 4, 10) - end = datetime(2007, 4, 12) - with pytest.raises(NonUTCTimezoneInfoError): - ts = station.load_isd_hourly_temp_data(start, end) - - start = datetime(2007, 4, 10, tzinfo=pytz.UTC) - end = datetime(2007, 4, 12) - with pytest.raises(NonUTCTimezoneInfoError): - ts = station.load_isd_hourly_temp_data(start, end) - - -def test_isd_station_load_isd_daily_temp_data_tz_exception( - monkeypatch_tmy3_request, monkeypatch_key_value_store -): - station = ISDStation("722880") - start = datetime(2007, 4, 10) - end = datetime(2007, 4, 12) - with pytest.raises(NonUTCTimezoneInfoError): - ts = station.load_isd_daily_temp_data(start, end) - - start = datetime(2007, 4, 10, tzinfo=pytz.UTC) - end = datetime(2007, 4, 12) - with pytest.raises(NonUTCTimezoneInfoError): - ts = station.load_isd_daily_temp_data(start, end) - - -def test_isd_station_load_gsod_daily_temp_data_tz_exception( - monkeypatch_tmy3_request, monkeypatch_key_value_store -): - station = ISDStation("722880") - start = datetime(2007, 4, 10) - end = datetime(2007, 4, 12) - with pytest.raises(NonUTCTimezoneInfoError): - ts = station.load_gsod_daily_temp_data(start, end) - - start = datetime(2007, 4, 10, tzinfo=pytz.UTC) - end = datetime(2007, 4, 12) - with pytest.raises(NonUTCTimezoneInfoError): - ts = station.load_gsod_daily_temp_data(start, end) - - def test_isd_station_load_tmy3_hourly_temp_data_tz_exception( monkeypatch_tmy3_request, monkeypatch_key_value_store ): - station = ISDStation("722880") + station = WeatherStation("722880") start = datetime(2007, 4, 10) end = datetime(2007, 4, 12) with pytest.raises(NonUTCTimezoneInfoError): @@ -1763,7 +730,7 @@ def test_isd_station_load_tmy3_hourly_temp_data_tz_exception( def test_isd_station_load_cz2010_hourly_temp_data_tz_exception( monkeypatch_tmy3_request, monkeypatch_key_value_store ): - station = ISDStation("722880") + station = WeatherStation("722880") start = datetime(2007, 4, 10) end = datetime(2007, 4, 12) with pytest.raises(NonUTCTimezoneInfoError): @@ -1776,289 +743,553 @@ def test_isd_station_load_cz2010_hourly_temp_data_tz_exception( def test_isd_station_metadata_null_elevation(): - usaf_id = "724953" + usaf_id = "722246" metadata = get_isd_station_metadata(usaf_id) assert metadata["elevation"] is None - isd_station = ISDStation(usaf_id) + isd_station = WeatherStation(usaf_id) assert isd_station.elevation is None -def test_load_isd_hourly_temp_data_missing_years( - monkeypatch_make_api_request, monkeypatch_key_value_store +# ghcn id lookup +def test_get_ghcn_id(): + assert get_ghcn_id("722874") == "USW00093134" + + +def test_get_ghcn_id_unrecognized(): + with pytest.raises(UnrecognizedUSAFIDError): + get_ghcn_id("FAKE") + + +# fetch +def test_fetch_hourly_data(mock_api_transport): + df = fetch_hourly_data("722874", 2007) + + assert list(df.columns) == ["temperature"] + assert df.shape == (8760, 1) + assert df.index[0] == datetime(2007, 1, 1, tzinfo=pytz.UTC) + assert df.temperature.sum() == pytest.approx(156159.5455, abs=1e-3) + + +def test_fetch_hourly_data_multiple_variables(mock_api_transport): + df = fetch_hourly_data( + "722874", 2007, variables=("temperature", "relative_humidity") + ) + + assert list(df.columns) == ["temperature", "relative_humidity"] + assert df.shape == (8760, 2) + + +def test_fetch_hourly_data_invalid_station(): + with pytest.raises(UnrecognizedUSAFIDError): + fetch_hourly_data("FAKE", 2007) + + +def test_fetch_hourly_data_missing_year_raises(mock_api_transport): + with pytest.raises(DataNotAvailableError): + fetch_hourly_data("722874", 1800) + + +def test_weather_station_fetch_hourly_data(mock_api_transport): + station = WeatherStation("722874") + df = fetch_hourly_data(station.usaf_id, 2007) + + assert df.shape == (8760, 1) + + +# cache keys +def test_get_hourly_data_cache_key(): + assert get_hourly_data_cache_key("722874", 2007) == "ghcnh-hourly-722874-2007" + + +# cache expiry +def test_cached_hourly_data_is_expired_empty(monkeypatch_key_value_store): + assert cached_hourly_data_is_expired("722874", 2007) is True + + +def test_cached_hourly_data_is_expired_false( + mock_api_transport, monkeypatch_key_value_store ): - usaf_id = "722874" - start = datetime(2005, 1, 1, tzinfo=pytz.UTC) - end = datetime(2007, 12, 31, tzinfo=pytz.UTC) - with pytest.raises(ISDDataNotAvailableError): - ts = load_isd_hourly_temp_data(usaf_id, start, end, error_on_missing_years=True) - ts, warnings = load_isd_hourly_temp_data( - usaf_id, start, end, error_on_missing_years=False + load_hourly_data_cached_proxy("722874", 2007) + + assert cached_hourly_data_is_expired("722874", 2007) is False + + +def test_cached_hourly_data_is_expired_true( + mock_api_transport, monkeypatch_key_value_store +): + load_hourly_data_cached_proxy("722874", 2007) + + # manually expire key value item + key = get_hourly_data_cache_key("722874", 2007) + _backdate_cache_key( + monkeypatch_key_value_store, key, pytz.UTC.localize(datetime(2007, 3, 3)) ) - assert ts.index[0] == start - assert pd.isnull(ts.iloc[0]) - assert ts.index[-1] == end - assert pd.notnull(ts.iloc[-1]) + + assert cached_hourly_data_is_expired("722874", 2007) is True + + +# validate cache +def test_validate_hourly_data_cache_empty(monkeypatch_key_value_store): + assert validate_hourly_data_cache("722874", 2007) is False + + +def test_validate_hourly_data_cache_updated_recently( + mock_api_transport, monkeypatch_key_value_store +): + load_hourly_data_cached_proxy("722874", 2007) + + assert validate_hourly_data_cache("722874", 2007) is True -def test_isd_station_load_isd_hourly_temp_data_missing_years( - monkeypatch_make_api_request, monkeypatch_key_value_store +def test_validate_hourly_data_cache_expired( + mock_api_transport, monkeypatch_key_value_store ): - usaf_id = "722874" - start = datetime(2005, 1, 1, tzinfo=pytz.UTC) - end = datetime(2007, 12, 31, tzinfo=pytz.UTC) - isd_station = ISDStation(usaf_id) - with pytest.raises(ISDDataNotAvailableError): - isd_station.load_isd_hourly_temp_data(start, end, error_on_missing_years=True) - ts, warnings = isd_station.load_isd_hourly_temp_data( - start, end, error_on_missing_years=False + load_hourly_data_cached_proxy("722874", 2007) + + key = get_hourly_data_cache_key("722874", 2007) + _backdate_cache_key( + monkeypatch_key_value_store, key, pytz.UTC.localize(datetime(2007, 3, 3)) ) - assert ts.index[0] == start - assert pd.isnull(ts.iloc[0]) - assert ts.index[-1] == end - assert pd.notnull(ts.iloc[-1]) + # expired cache entries are cleared on validation + assert validate_hourly_data_cache("722874", 2007) is False + assert monkeypatch_key_value_store.key_exists(key) is False -# station 720193's 2019 data has a real mid-year outage -def test_load_isd_hourly_temp_data_warns_on_internal_gap( + +def test_raise_on_missing_hourly_data_cache_no_web_fetch(monkeypatch_key_value_store): + with pytest.raises(DataNotAvailableError): + load_hourly_data_cached_proxy("722874", 2007, fetch_from_web=False) + + +# serialization round-trips +def test_serialize_deserialize_hourly_data_round_trip(mock_api_transport): + df = fetch_hourly_data("722874", 2007) + + serialized = serialize_hourly_data(df) + + assert serialized["columns"] == ["temperature"] + assert serialized["rows"][0][0] == "2007010100" + assert len(serialized["rows"]) == len(df) + + round_tripped = deserialize_hourly_data(serialized) + + pd.testing.assert_frame_equal(round_tripped, df, check_freq=False) + + +def test_serialize_hourly_data_nan_round_trips_as_null(mock_api_transport): + df = fetch_hourly_data("723826", 2013) # data ends 2013-11-04 + + serialized = serialize_hourly_data(df) + + assert any(row[1] is None for row in serialized["rows"]) + + round_tripped = deserialize_hourly_data(serialized) + + pd.testing.assert_frame_equal(round_tripped, df, check_freq=False) + + +def test_serialize_multivariable_round_trip(mock_api_transport): + df = fetch_hourly_data( + "722874", 2007, variables=("temperature", "wind_speed") + ) + + round_tripped = deserialize_hourly_data(serialize_hourly_data(df)) + + pd.testing.assert_frame_equal(round_tripped, df, check_freq=False) + + +# write read destroy +def test_write_read_destroy_hourly_data_to_from_cache( mock_api_transport, monkeypatch_key_value_store ): - start = datetime(2019, 1, 1, tzinfo=pytz.UTC) - end = datetime(2019, 12, 31, tzinfo=pytz.UTC) + store = monkeypatch_key_value_store + key = get_hourly_data_cache_key("722874", 2007) + assert store.key_exists(key) is False - ts, warnings = load_isd_hourly_temp_data("720193", start, end) + df = fetch_hourly_data("722874", 2007) + write_hourly_data_to_cache("722874", 2007, df) + assert store.key_exists(key) is True + + round_tripped = read_hourly_data_from_cache("722874", 2007) + pd.testing.assert_frame_equal(round_tripped, df, check_freq=False) + + destroy_cached_hourly_data("722874", 2007) + assert store.key_exists(key) is False - assert len(ts) == 8737 - assert int(ts.notna().sum()) == 8106 - assert [w.qualified_name for w in warnings] == ["eeweather.data_gap"] - assert warnings[0].data["max_gap_days"] == pytest.approx(16.125, abs=1e-9) +# cached proxy +def test_load_hourly_data_cached_proxy(mock_api_transport, monkeypatch_key_value_store): + # doesn't yet exist in cache, so fetched + df1 = load_hourly_data_cached_proxy("722874", 2007) -def test_load_gsod_daily_temp_data_warns_on_internal_gap( + # now exists in cache, so read + df2 = load_hourly_data_cached_proxy("722874", 2007) + + pd.testing.assert_frame_equal(df1, df2, check_freq=False) + + +def test_load_hourly_data_cached_proxy_variable_superset_refetches( mock_api_transport, monkeypatch_key_value_store ): - start = datetime(2019, 1, 1, tzinfo=pytz.UTC) - end = datetime(2019, 12, 31, tzinfo=pytz.UTC) + df1 = load_hourly_data_cached_proxy("722874", 2007) + assert list(df1.columns) == ["temperature"] + + # cache holds temperature only, so requesting more refetches the union + df2 = load_hourly_data_cached_proxy( + "722874", 2007, variables=("temperature", "wind_speed") + ) + assert list(df2.columns) == ["temperature", "wind_speed"] + + # the refreshed cache entry now covers both variables + cached = read_hourly_data_from_cache("722874", 2007) + assert set(cached.columns) == {"temperature", "wind_speed"} + + # a temperature-only request serves the requested subset from cache + df3 = load_hourly_data_cached_proxy("722874", 2007) + assert list(df3.columns) == ["temperature"] + + +# load data between dates +def test_load_data_hourly(mock_api_transport, monkeypatch_key_value_store): + start = datetime(2006, 1, 3, tzinfo=pytz.UTC) + end = datetime(2007, 4, 3, tzinfo=pytz.UTC) - with pytest.warns(UserWarning, match="internal gap of 25 days"): - ts = load_gsod_daily_temp_data("720193", start, end) + df, warnings = load_data("722874", start, end) - assert len(ts) == 365 - assert int(ts.notna().sum()) == 340 - assert ts.mean() == pytest.approx(12.24902, abs=1e-5) + assert df.index[0] == start + assert df.index[-1] == end + assert len(df) == 10921 + assert int(df.temperature.notna().sum()) == 10893 + assert warnings == [] -# a trailing gap shorter than a day does not warn: station 724940's last -# 2025 observation is 17 hours before the requested end -def test_load_isd_hourly_temp_data_short_trailing_gap_no_warning( +def test_load_data_hourly_non_normalized_dates( mock_api_transport, monkeypatch_key_value_store ): - start = datetime(2025, 6, 1, tzinfo=pytz.UTC) - end = datetime(2025, 8, 28, tzinfo=pytz.UTC) + start = datetime(2006, 1, 3, 11, 12, 13, tzinfo=pytz.UTC) + end = datetime(2007, 4, 3, 12, 13, 14, tzinfo=pytz.UTC) + + df, warnings = load_data("722874", start, end) + + assert df.index[0] == datetime(2006, 1, 3, 12, tzinfo=pytz.UTC) + assert df.index[-1] == datetime(2007, 4, 3, 12, tzinfo=pytz.UTC) + + +def test_load_data_daily(mock_api_transport, monkeypatch_key_value_store): + start = datetime(2006, 1, 3, tzinfo=pytz.UTC) + end = datetime(2007, 4, 3, tzinfo=pytz.UTC) + + df, warnings = load_data("722874", start, end, frequency="daily") + + assert df.index[0] == start + assert df.index[-1] == end + assert len(df) == 456 + assert int(df.temperature.notna().sum()) == 456 + assert warnings == [] + + +def test_load_data_daily_non_normalized_dates( + mock_api_transport, monkeypatch_key_value_store +): + start = datetime(2006, 1, 3, 11, 12, 13, tzinfo=pytz.UTC) + end = datetime(2007, 4, 3, 12, 13, 14, tzinfo=pytz.UTC) + + df, warnings = load_data("722874", start, end, frequency="daily") + + assert df.index[0] == datetime(2006, 1, 4, tzinfo=pytz.UTC) + assert df.index[-1] == datetime(2007, 4, 3, tzinfo=pytz.UTC) + + +def test_load_data_invalid_frequency(monkeypatch_key_value_store): + start = datetime(2007, 1, 1, tzinfo=pytz.UTC) + end = datetime(2007, 4, 3, tzinfo=pytz.UTC) + + with pytest.raises(ValueError, match="frequency"): + load_data("722874", start, end, frequency="weekly") + + +def test_load_data_tz_exception(): + start = datetime(2007, 1, 1) + end = datetime(2007, 4, 3) + + with pytest.raises(NonUTCTimezoneInfoError): + load_data("722874", start, end) - ts, warnings = load_isd_hourly_temp_data("724940", start, end) - assert len(ts) == 2113 - assert int(ts.notna().sum()) == 2096 - assert ts.last_valid_index() == datetime(2025, 8, 27, 7, tzinfo=pytz.UTC) +def test_load_data_multiple_variables(mock_api_transport, monkeypatch_key_value_store): + start = datetime(2007, 6, 1, tzinfo=pytz.UTC) + end = datetime(2007, 6, 30, tzinfo=pytz.UTC) + + df, warnings = load_data( + "722874", + start, + end, + variables=("temperature", "relative_humidity", "wind_speed"), + ) + + assert df.shape == (697, 3) + assert df.temperature.mean() == pytest.approx(19.304219, abs=1e-5) + assert df.relative_humidity.mean() == pytest.approx(67.903771, abs=1e-5) + assert df.wind_speed.mean() == pytest.approx(0.843799, abs=1e-5) assert warnings == [] # regression pins on real captured 2007 data -def test_load_isd_hourly_temp_data_2007_regression_values( +def test_load_data_hourly_2007_regression_values( mock_api_transport, monkeypatch_key_value_store ): start = datetime(2007, 1, 1, tzinfo=pytz.UTC) end = datetime(2007, 12, 31, tzinfo=pytz.UTC) - ts, warnings = load_isd_hourly_temp_data("722874", start, end) + df, warnings = load_data("722874", start, end) - assert len(ts) == 8737 - assert int(ts.notna().sum()) == 8732 - assert ts.mean() == pytest.approx(17.851869, abs=1e-5) - assert ts.first_valid_index() == datetime(2007, 1, 1, tzinfo=pytz.UTC) - assert ts.dropna().iloc[0] == pytest.approx(14.89, abs=1e-5) + assert len(df) == 8737 + assert int(df.temperature.notna().sum()) == 8732 + assert df.temperature.mean() == pytest.approx(17.851812, abs=1e-5) assert warnings == [] -def test_load_isd_daily_temp_data_2007_regression_values( +def test_load_data_daily_2007_regression_values( mock_api_transport, monkeypatch_key_value_store ): start = datetime(2007, 1, 1, tzinfo=pytz.UTC) end = datetime(2007, 12, 31, tzinfo=pytz.UTC) - ts = load_isd_daily_temp_data("722874", start, end) + df, warnings = load_data("722874", start, end, frequency="daily") - assert len(ts) == 365 - assert int(ts.notna().sum()) == 365 - assert ts.mean() == pytest.approx(17.835623, abs=1e-5) - assert ts.iloc[0] == pytest.approx(13.222929, abs=1e-5) + assert len(df) == 365 + assert int(df.temperature.notna().sum()) == 365 + assert df.temperature.mean() == pytest.approx(17.835431, abs=1e-5) + assert df.temperature.iloc[0] == pytest.approx(13.27734, abs=1e-5) -# truncated data warns: station 724940 ISD data ends 2025-08-27 -def test_load_isd_hourly_temp_data_warns_on_truncated_data( +# truncated data warns: station 723826 was decommissioned 2013-11-04 +def test_load_data_warns_on_truncated_data( mock_api_transport, monkeypatch_key_value_store ): - start = datetime(2025, 6, 1, tzinfo=pytz.UTC) - end = datetime(2025, 10, 1, tzinfo=pytz.UTC) + start = datetime(2013, 6, 1, tzinfo=pytz.UTC) + end = datetime(2013, 12, 31, tzinfo=pytz.UTC) + + df, warnings = load_data("723826", start, end) + + assert len(df) == 5113 + assert int(df.temperature.notna().sum()) == 1619 + assert df.temperature.last_valid_index() == datetime( + 2013, 11, 4, 19, tzinfo=pytz.UTC + ) + assert [w.qualified_name for w in warnings] == ["eeweather.data_truncated"] + assert warnings[0].data["variable"] == "temperature" + assert warnings[0].data["last_valid"] == "2013-11-04T19:00:00+00:00" + + +def test_load_data_daily_warns_on_truncated_data( + mock_api_transport, monkeypatch_key_value_store +): + start = datetime(2013, 6, 1, tzinfo=pytz.UTC) + end = datetime(2013, 12, 31, tzinfo=pytz.UTC) - ts, warnings = load_isd_hourly_temp_data("724940", start, end) + df, warnings = load_data("723826", start, end, frequency="daily") - assert len(ts) == 2929 - assert int(ts.notna().sum()) == 2096 - assert ts.last_valid_index() == datetime(2025, 8, 27, 7, tzinfo=pytz.UTC) + assert len(df) == 214 + assert int(df.temperature.notna().sum()) == 156 assert [w.qualified_name for w in warnings] == ["eeweather.data_truncated"] - assert warnings[0].data["last_valid"] == "2025-08-27T07:00:00+00:00" - assert warnings[0].data["requested_end"] == "2025-10-01T00:00:00+00:00" -def test_load_gsod_daily_temp_data_warns_on_truncated_data( +# station 720193's 2019 data has a real mid-year outage +def test_load_data_warns_on_internal_gap( + mock_api_transport, monkeypatch_key_value_store +): + start = datetime(2019, 1, 1, tzinfo=pytz.UTC) + end = datetime(2019, 12, 31, tzinfo=pytz.UTC) + + df, warnings = load_data("720193", start, end) + + assert len(df) == 8737 + assert int(df.temperature.notna().sum()) == 8106 + assert [w.qualified_name for w in warnings] == ["eeweather.data_gap"] + assert warnings[0].data["max_gap_days"] == pytest.approx(16.125, abs=1e-9) + + +# GHCNh continues past the ISD end-of-life: station 724940's 2025 data runs +# through the year while its ISD record stopped 2025-08-27 +def test_load_data_2025_extends_past_isd_end_of_life( mock_api_transport, monkeypatch_key_value_store ): start = datetime(2025, 6, 1, tzinfo=pytz.UTC) end = datetime(2025, 10, 1, tzinfo=pytz.UTC) - with pytest.warns(UserWarning, match="Data ends 35 days"): - ts = load_gsod_daily_temp_data("724940", start, end) + df, warnings = load_data("724940", start, end) - assert len(ts) == 123 - assert int(ts.notna().sum()) == 88 - assert ts.last_valid_index() == datetime(2025, 8, 27, tzinfo=pytz.UTC) + assert len(df) == 2929 + assert int(df.temperature.notna().sum()) == 2840 + assert df.temperature.last_valid_index() == end + assert warnings == [] -# all-years-missing behavior -def test_load_isd_hourly_temp_data_missing_year_strict_raises( +# missing years +def test_load_data_missing_year_strict_raises( mock_api_transport, monkeypatch_key_value_store ): start = datetime(2050, 1, 1, tzinfo=pytz.UTC) end = datetime(2050, 6, 1, tzinfo=pytz.UTC) - with pytest.raises(ISDDataNotAvailableError): - load_isd_hourly_temp_data("722874", start, end) + with pytest.raises(DataNotAvailableError): + load_data("722874", start, end) -def test_load_isd_hourly_temp_data_missing_year_tolerant_returns_nan_range( +def test_load_data_missing_year_tolerant_returns_nan_range( mock_api_transport, monkeypatch_key_value_store ): start = datetime(2050, 1, 1, tzinfo=pytz.UTC) end = datetime(2050, 6, 1, tzinfo=pytz.UTC) - ts, warnings = load_isd_hourly_temp_data( + df, warnings = load_data( "722874", start, end, error_on_missing_years=False ) - assert ts.index[0] == start - assert ts.index[-1] == end - assert ts.isna().all() + assert df.index[0] == start + assert df.index[-1] == end + assert df.temperature.isna().all() assert [w.qualified_name for w in warnings] == [ - "eeweather.isd_data_not_available", + "eeweather.data_not_available", "eeweather.no_data_in_requested_range", ] -def test_load_isd_daily_temp_data_missing_year_strict_raises( +# station 722874 has no GHCNh observations at all in 2025 +def test_load_data_year_with_no_observations( mock_api_transport, monkeypatch_key_value_store ): - start = datetime(2050, 1, 1, tzinfo=pytz.UTC) - end = datetime(2050, 6, 1, tzinfo=pytz.UTC) + start = datetime(2025, 1, 1, tzinfo=pytz.UTC) + end = datetime(2025, 6, 1, tzinfo=pytz.UTC) + + with pytest.raises(DataNotAvailableError): + load_data("722874", start, end) - with pytest.raises(ISDDataNotAvailableError): - load_isd_daily_temp_data("722874", start, end) + df, warnings = load_data( + "722874", start, end, error_on_missing_years=False + ) + + assert len(df) == 3625 + assert df.temperature.isna().all() + assert [w.qualified_name for w in warnings] == [ + "eeweather.data_not_available", + "eeweather.no_data_in_requested_range", + ] -def test_load_isd_daily_temp_data_missing_year_tolerant_warns_and_fills_nan( +# a sub-hour range contains no aligned hours; returns empty without warning +def test_load_data_sub_hour_range_returns_empty( mock_api_transport, monkeypatch_key_value_store ): - start = datetime(2050, 1, 1, tzinfo=pytz.UTC) - end = datetime(2050, 6, 1, tzinfo=pytz.UTC) + start = datetime(2007, 6, 1, 12, 30, tzinfo=pytz.UTC) + end = datetime(2007, 6, 1, 12, 45, tzinfo=pytz.UTC) - with pytest.warns(UserWarning) as record: - ts = load_isd_daily_temp_data( - "722874", start, end, error_on_missing_years=False - ) + df, warnings = load_data("722874", start, end) - messages = [str(w.message) for w in record] - assert any("ISD data not available for 722874 in 2050" in m for m in messages) - assert any("No data was available" in m for m in messages) + assert len(df) == 0 + assert warnings == [] - assert ts.index[0] == start - assert ts.index[-1] == end - assert ts.isna().all() +# station method +def test_weather_station_load_data(mock_api_transport, monkeypatch_key_value_store): + station = WeatherStation("722874") + start = datetime(2007, 1, 1, tzinfo=pytz.UTC) + end = datetime(2007, 4, 3, tzinfo=pytz.UTC) + + df, warnings = station.load_data(start, end) -def test_load_gsod_daily_temp_data_missing_year_strict_raises( - mock_api_transport, monkeypatch_key_value_store -): - start = datetime(2050, 1, 1, tzinfo=pytz.UTC) - end = datetime(2050, 6, 1, tzinfo=pytz.UTC) + assert df.index[0] == start + assert df.index[-1] == end + assert list(df.columns) == ["temperature"] + + +# load cached +def test_load_cached_hourly_data(mock_api_transport, monkeypatch_key_value_store): + assert load_cached_hourly_data("722874") is None + + df1, _ = load_data( + "722874", + datetime(2007, 1, 1, tzinfo=pytz.UTC), + datetime(2007, 4, 3, tzinfo=pytz.UTC), + ) + cached = load_cached_hourly_data("722874") - with pytest.raises(GSODDataNotAvailableError): - load_gsod_daily_temp_data("722874", start, end) + assert cached is not None + assert list(cached.columns) == ["temperature"] + # the cache holds the full fetched year, not just the requested slice + assert len(cached) == 8760 -def test_load_gsod_daily_temp_data_missing_year_tolerant_warns_and_fills_nan( +def test_weather_station_load_cached_data( mock_api_transport, monkeypatch_key_value_store ): - start = datetime(2050, 1, 1, tzinfo=pytz.UTC) - end = datetime(2050, 6, 1, tzinfo=pytz.UTC) + station = WeatherStation("722874") + station.load_data( + datetime(2007, 1, 1, tzinfo=pytz.UTC), + datetime(2007, 4, 3, tzinfo=pytz.UTC), + ) - with pytest.warns(UserWarning) as record: - ts = load_gsod_daily_temp_data( - "722874", start, end, error_on_missing_years=False - ) + cached = station.load_cached_data() - messages = [str(w.message) for w in record] - assert any("GSOD data not available for 722874 in 2050" in m for m in messages) - assert any("No data was available" in m for m in messages) + assert cached is not None + assert len(cached) == 8760 - assert ts.index[0] == start - assert ts.index[-1] == end - assert ts.isna().all() + station.destroy_cached_hourly_data(2007) + assert station.load_cached_data() is None -# a year that exists but contains no valid temperatures: 722874 in 2025 -# reports only daily summaries with missing temperature values -def test_fetch_isd_raw_temp_data_all_nan_year(mock_api_transport): - ts = fetch_isd_raw_temp_data("722874", 2025) - assert len(ts) == 206 - assert ts.isna().all() +# request-period quality ratings: five-year window ending two years +# after the request's last date, sliding back to the last full year +def test_get_station_quality_high_during_active_era(): + start = datetime(2008, 1, 1, tzinfo=pytz.UTC) + end = datetime(2012, 12, 31, tzinfo=pytz.UTC) + assert get_station_quality("722874", start, end) == "high" -def test_load_isd_hourly_temp_data_all_nan_year_warns_no_data( - mock_api_transport, monkeypatch_key_value_store -): - start = datetime(2025, 1, 1, tzinfo=pytz.UTC) - end = datetime(2025, 6, 1, tzinfo=pytz.UTC) - ts, warnings = load_isd_hourly_temp_data("722874", start, end) +def test_get_station_quality_low_after_station_went_quiet(): + start = datetime(2023, 1, 1, tzinfo=pytz.UTC) + end = datetime(2024, 12, 31, tzinfo=pytz.UTC) - assert ts.isna().all() - assert [w.qualified_name for w in warnings] == [ - "eeweather.no_data_in_requested_range" - ] + assert get_station_quality("722874", start, end) == "low" -# start not exactly on an hour rounds forward to the next hour -def test_load_isd_hourly_temp_data_start_mid_hour_aligns_forward( - mock_api_transport, monkeypatch_key_value_store -): - start = datetime(2007, 1, 1, 0, 30, tzinfo=pytz.UTC) - end = datetime(2007, 2, 1, tzinfo=pytz.UTC) +def test_get_station_quality_low_before_any_data(): + start = datetime(1850, 1, 1, tzinfo=pytz.UTC) + end = datetime(1851, 1, 1, tzinfo=pytz.UTC) - ts, warnings = load_isd_hourly_temp_data("722874", start, end) + assert get_station_quality("722874", start, end) == "low" - assert ts.index[0] == datetime(2007, 1, 1, 1, 0, tzinfo=pytz.UTC) - assert ts.index[-1] == end +def test_get_station_qualities_matches_single_station_rating(): + start = datetime(2010, 1, 1, tzinfo=pytz.UTC) + end = datetime(2014, 12, 31, tzinfo=pytz.UTC) -# a sub-hour range contains no aligned hours; returns empty without warning -def test_load_isd_hourly_temp_data_sub_hour_range_returns_empty( - mock_api_transport, monkeypatch_key_value_store -): - start = datetime(2007, 6, 1, 12, 30, tzinfo=pytz.UTC) - end = datetime(2007, 6, 1, 12, 45, tzinfo=pytz.UTC) + qualities = get_station_qualities(start, end) - ts, warnings = load_isd_hourly_temp_data("722874", start, end) + for usaf_id in ["722874", "722880", "723895"]: + assert qualities[usaf_id] == get_station_quality(usaf_id, start, end) - assert len(ts) == 0 - assert warnings == [] + +def test_weather_station_get_quality(): + station = WeatherStation("722874") + start = datetime(2008, 1, 1, tzinfo=pytz.UTC) + end = datetime(2012, 12, 31, tzinfo=pytz.UTC) + + assert station.get_quality(start, end) == "high" + + +def test_get_ghcn_ids_whole_registry(): + mapping = get_ghcn_ids() + + assert mapping["722874"] == "USW00093134" + assert mapping["722880"] == "USW00023152" + assert len(mapping) == 4497 + + +def test_get_ghcn_ids_subset_skips_unrecognized(): + mapping = get_ghcn_ids(["722874", "FAKE"]) + + assert mapping.to_dict() == {"722874": "USW00093134"}