Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
thorbjoernl committed Aug 7, 2024
1 parent ca86168 commit 86a37b7
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 14 deletions.
17 changes: 14 additions & 3 deletions src/pyaro_readers/netcdf_rw/Netcdf_RWTimeseries.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,21 @@ def metadata(self):
date = datetime.datetime.min
for f in self.iterate_files():
with xr.open_dataset(f) as d:
hist: str = d.attrs.get("last_changed", "")
hist = d.attrs.get("last_changed", None)

if hist is not None:
datestr = hist.split("//")[0]

else:
hist = d.attrs.get("history", "")[-1]
datestr = " ".join(hist.split(" ")[:2])


datestr = hist.split("//")[0]
new_date = datetime.datetime.strptime(datestr, "%a %b %d %H:%M:%S %Y")
try:
new_date = datetime.datetime.strptime(datestr, "%a %b %d %H:%M:%S %Y")
except:
new_date = datetime.datetime.strptime(datestr, "%Y-%m-%d %H:%M:%S")

if new_date > date:
date = new_date

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from urllib.parse import urlparse
from pathlib import Path
import datetime
import re

from geocoder_reverse_natural_earth import Geocoder_Reverse_NE

Expand Down Expand Up @@ -178,9 +179,6 @@ def _process_open_file(

def metadata(self):
metadata = dict()

metadata["revision"] = None

return metadata

def _unfiltered_data(self, varname) -> Data:
Expand All @@ -207,7 +205,7 @@ def _lookup_function(self):
return lambda lat, lon: geo.lookup_nearest(lat, lon)["ISO_A2_EH"]


class NILUPMFAbsorptionTimeseriesEngine(AutoFilterReaderEngine.AutoFilterEngine):
class NILUPMFAbsorptionTimeseriesEngine(AutoFilterReaderEngine.AutoFilterEngine):#
def reader_class(self):
return NILUPMFAbsorptionReader

Expand Down
22 changes: 15 additions & 7 deletions src/pyaro_readers/nilupmfebas/EbasPmfReader.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@

from pathlib import Path
import re
import datetime


logger = logging.getLogger(__name__)

Expand All @@ -28,9 +30,9 @@ class EBASPMFReaderException(Exception):
class EbasPmfTimeseriesReader(AutoFilterReaderEngine.AutoFilterReader):
def __init__(
self,
filename: [Path, str],
filename: Path | str,
filters=[],
tqdm_desc: [str, None] = None,
tqdm_desc: str | None = None,
filemask: str = FILE_MASK,
vars_to_read: list[str] = None,
):
Expand All @@ -42,6 +44,7 @@ def __init__(
self._opts = {"default": ReadEbasOptions()}
self._variables = {}
self._metadata = {}
self._revision = datetime.datetime.min

# variable include filter comes like this
# {'variables': {'include': ['PM10_density']}}
Expand Down Expand Up @@ -72,13 +75,15 @@ def __init__(
else:
# filename is something else
raise EBASPMFReaderException(f"No such file or directory: {filename}")

def metadata(self):
return dict()

def metadata(self):
metadata = dict()
metadata["revision"] = str(self._revision)
return metadata

def read_file_basic(
self,
filename: [Path, str],
filename: Path | str,
):
"""Read EBAS NASA Ames file
Expand All @@ -96,12 +101,15 @@ def read_file_basic(

return data_out

def read_file(self, filename: [Path, str], vars_to_read: list[str] = None):
def read_file(self, filename: Path | str, vars_to_read: list[str] = None):
"""Read EBAS NASA Ames file and put the data in the object"""

_file_dummy = self.read_file_basic(filename)
self._revision = max([self._revision, datetime.datetime.strptime(_file_dummy.meta["revision_date"], "%Y%m%d%H%M%S")])

matrix = _file_dummy.meta["matrix"]
vars_read_in_file = []

# multicolumn file: ebas var names come from _file_dummy.col_names_vars
for var_idx, var_def in enumerate(_file_dummy.var_defs):
# continue if the variable is not an actual data variable (but e.g. time)
Expand Down
4 changes: 4 additions & 0 deletions tests/test_EbasPmfTimeSeriesReader.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,16 @@ def test_1open_single_file(self):
assert var in self.test_vars
self.assertEqual(len(ts.stations()), 1)

self.assertIn("revision", ts.metadata())

def test_2open_directory(self):
with pyaro.open_timeseries(self.engine, self.testdata_dir, filters=[]) as ts:
self.assertGreaterEqual(len(ts.variables()), 1)
for var in ts.variables():
assert var in self.test_vars

self.assertIn("revision", ts.metadata())

def test_3open_ebascsvfile(self):
dummy = read_ebas_flags_file(None)
assert isinstance(dummy, dict)
Expand Down

0 comments on commit 86a37b7

Please sign in to comment.