From ff6db06170a3d1554fc38e6c413329b4b1863767 Mon Sep 17 00:00:00 2001 From: leufen1 <l.leufen@fz-juelich.de> Date: Wed, 15 Jun 2022 16:55:02 +0200 Subject: [PATCH] new meteo helpers and updates to_list method --- mlair/helpers/helpers.py | 2 +- mlair/helpers/meteo.py | 14 ++++++++++++++ test/test_helpers/test_helpers.py | 4 ++-- 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 mlair/helpers/meteo.py diff --git a/mlair/helpers/helpers.py b/mlair/helpers/helpers.py index f69e5b20..ca69f285 100644 --- a/mlair/helpers/helpers.py +++ b/mlair/helpers/helpers.py @@ -57,7 +57,7 @@ def to_list(obj: Any) -> List: :return: list containing obj, or obj itself (if obj was already a list) """ - if isinstance(obj, (set, tuple)): + if isinstance(obj, (set, tuple, type({}.keys()))): obj = list(obj) elif not isinstance(obj, list): obj = [obj] diff --git a/mlair/helpers/meteo.py b/mlair/helpers/meteo.py new file mode 100644 index 00000000..c43d4ff2 --- /dev/null +++ b/mlair/helpers/meteo.py @@ -0,0 +1,14 @@ + +import numpy as np + + +def relative_humidity_from_dewpoint(dew, temp): + return np.clip(100 * e_sat(dew) / e_sat(temp), 0, 100) + + +def e_sat(temperature): + a1 = 611.21 # Pa + a3 = 17.502 + a4 = 32.19 # K + T0 = 273.16 # K + return a1 * np.exp(a3 * (temperature - T0) / (temperature - a4)) diff --git a/test/test_helpers/test_helpers.py b/test/test_helpers/test_helpers.py index 87c0f9ec..6f787d58 100644 --- a/test/test_helpers/test_helpers.py +++ b/test/test_helpers/test_helpers.py @@ -499,9 +499,9 @@ class TestFilterDictByValue: def test_filter_dict_by_value(self): data_origin = {'o3': '', 'no': '', 'no2': '', 'relhum': 'REA', 'u': 'REA', 'cloudcover': 'REA', 'temp': 'era5'} expected = {'temp': 'era5'} - assert check_nested_equality(filter_dict_by_value(data_origin, "era", True), expected) is True + assert check_nested_equality(filter_dict_by_value(data_origin, "era5", True), expected) is True expected = {'o3': '', 'no': '', 'no2': '', 'relhum': 'REA', 'u': 'REA', 'cloudcover': 'REA'} - assert check_nested_equality(filter_dict_by_value(data_origin, "era", False), expected) is True + assert check_nested_equality(filter_dict_by_value(data_origin, "era5", False), expected) is True expected = {'o3': '', 'no': '', 'no2': ''} assert check_nested_equality(filter_dict_by_value(data_origin, "", True), expected) is True -- GitLab