Coverage for mlair/helpers/data_sources/toar_data.py: 50%

18 statements  

« prev     ^ index     » next       coverage.py v6.4.2, created at 2023-12-18 17:51 +0000

1__author__ = "Lukas Leufen" 

2__date__ = "2022-07-05" 

3 

4from . import join, toar_data_v2 

5 

6import requests 

7import pandas as pd 

8from .data_loader import EmptyQueryResult 

9import xarray as xr 

10 

11 

12def download_toar(station, toar_stats, sampling, data_origin, window_dim, time_dim, target_dim): 

13 try: 

14 # load data from toar-data (v2) 

15 df_toar, meta_toar = toar_data_v2.download_toar(station, toar_stats, sampling=sampling, data_origin=data_origin) 

16 except (AttributeError, EmptyQueryResult, KeyError, requests.ConnectionError, ValueError, IndexError): 

17 df_toar, meta_toar = None, None 

18 

19 df_toar_xr = xr.DataArray(df_toar, dims=[time_dim, target_dim]) 

20 df_toar_xr = df_toar_xr.expand_dims({window_dim: [0]}) 

21 return df_toar_xr, meta_toar 

22 

23 

24def merge_toar_join(df_toar, df_join, sampling): 

25 start_date = min([df_toar.index.min(), df_join.index.min()]) 

26 end_date = max([df_toar.index.max(), df_join.index.max()]) 

27 freq = {"hourly": "1H", "daily": "1d"}.get(sampling) 

28 full_time = pd.date_range(start_date, end_date, freq=freq) 

29 full_data = df_toar.reindex(full_time) 

30 full_data.update(df_join, overwrite=False) 

31 return full_data