Deltares-research / kenmerkendewaarden

Derive indicators from waterlevel measurements
https://deltares-research.github.io/kenmerkendewaarden/
GNU General Public License v3.0
2 stars 0 forks source link

catch zero stations in `kw.retrieve_measurements()` #122

Closed veenstrajelmer closed 2 weeks ago

veenstrajelmer commented 2 weeks ago

When retrieving extremes for A12 (for which there are none present), we get the following error (including traceback):

INFO:kenmerkendewaarden.data_retrieve:no stations present after station subsetting, skipping station:
Empty DataFrame
Columns: [Locatie_MessageID, Coordinatenstelsel, X, Y, Naam, Parameter_Wat_Omschrijving, Compartiment.Code, Eenheid.Code, Grootheid.Code, Hoedanigheid.Code, Parameter.Code, Typering.Code, Groepering.Code]
Index: []
INFO:kenmerkendewaarden.data_retrieve:retrieving meas data (extremes=True) from DDL for A12 to measurements_wl_18700101_20240101
Traceback (most recent call last):

  Cell In[3], line 1
    kw.retrieve_measurements(dir_output=dir_meas, station=current_station, extremes=True,

  File C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\DATA\kenmerkendewaarden\kenmerkendewaarden\data_retrieve.py:295 in retrieve_measurements
    location=loc_meas_one.iloc[0],

  File ~\Anaconda3\envs\dfm_tools_env\Lib\site-packages\pandas\core\indexing.py:1153 in __getitem__
    return self._getitem_axis(maybe_callable, axis=axis)

  File ~\Anaconda3\envs\dfm_tools_env\Lib\site-packages\pandas\core\indexing.py:1714 in _getitem_axis
    self._validate_integer(key, axis)

  File ~\Anaconda3\envs\dfm_tools_env\Lib\site-packages\pandas\core\indexing.py:1647 in _validate_integer
    raise IndexError("single positional indexer is out-of-bounds")

IndexError: single positional indexer is out-of-bounds

The indexerror is confusing, especially since the fact that there are no stations was already catched in earlier code. Make sure the station is indeed skipped.

To reproduce:

import pandas as pd
import kenmerkendewaarden as kw

# set logging level to INFO to get log messages
import logging
logging.basicConfig() # calling basicConfig is essential to set logging level for sub-modules
logging.getLogger("kenmerkendewaarden").setLevel(level="INFO")

start_date = pd.Timestamp(1870, 1, 1, tz="UTC+01:00")
end_date = pd.Timestamp(2024, 1, 1, tz="UTC+01:00")

kw.retrieve_measurements(dir_output=".", station='A12', extremes=True,
                             start_date=start_date, end_date=end_date)