From f10de69e53632204c56d8e050a21a64dcb60754d Mon Sep 17 00:00:00 2001 From: Martin Vonk Date: Thu, 9 Dec 2021 11:58:46 +0100 Subject: [PATCH 1/6] Do correct checks for TarsoModel --- pastastore/base.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/pastastore/base.py b/pastastore/base.py index 0a436cbe..61f38aa7 100644 --- a/pastastore/base.py +++ b/pastastore/base.py @@ -1015,7 +1015,7 @@ def _parse_model_dict(self, mdict: dict, stress["settings"]["tmax"] = \ stress['series'].index[-1] - # RechargeModel + # RechargeModel, TarsoModel, WellModel if ("prec" in ts.keys()) and ("evap" in ts.keys()): for stress in [ts["prec"], ts["evap"]]: if 'series' not in stress: @@ -1095,28 +1095,28 @@ def _set_series_name(series, name): @staticmethod def _check_model_series_names_for_store(ml): + prec_evap_model = ["RechargeModel", "TarsoModel"] if isinstance(ml, ps.Model): series_names = [istress.series.name for sm in ml.stressmodels.values() - if sm._name != "RechargeModel" + if sm._name not in prec_evap_model for istress in sm.stress] - if "RechargeModel" in [i._name for i in ml.stressmodels.values()]: + if prec_evap_model in [i._name for i in ml.stressmodels.values()]: series_names += [istress.series.name for sm in ml.stressmodels.values() - if sm._name == "RechargeModel" + if sm._name in prec_evap_model for istress in sm.stress] elif isinstance(ml, dict): # non RechargeModel stressmodels series_names = [istress["name"] for sm in ml["stressmodels"].values() - if sm["stressmodel"] != "RechargeModel" + if sm["stressmodel"] not in prec_evap_model for istress in sm["stress"]] # RechargeModel - if "RechargeModel" in [i["stressmodel"] for i in - ml["stressmodels"].values()]: + if ["RechargeModel", "TarsoModel"] in [i["stressmodel"] for i in ml["stressmodels"].values()]: series_names += [istress["name"] for sm in ml["stressmodels"].values() - if sm["stressmodel"] == "RechargeModel" + if sm["stressmodel"] in prec_evap_model for istress in [sm["prec"], sm["evap"]]] else: raise TypeError("Expected pastas.Model or dict!") @@ -1160,9 +1160,10 @@ def _check_stresses_in_store(self, ml: Union[ps.Model, dict]): ml : Union[ps.Model, dict] pastas Model """ + prec_evap_model = ["RechargeModel", "TarsoModel"] if isinstance(ml, ps.Model): for sm in ml.stressmodels.values(): - if sm._name == "RechargeModel": + if sm._name in prec_evap_model: stresses = [sm.prec, sm.evap] else: stresses = sm.stress @@ -1179,7 +1180,7 @@ def _check_stresses_in_store(self, ml: Union[ps.Model, dict]): f"'{s.name}' is different from stored stress!") elif isinstance(ml, dict): for sm in ml["stressmodels"].values(): - if sm["stressmodel"] == "RechargeModel": + if sm["stressmodel"] in prec_evap_model: stresses = [sm["prec"], sm["evap"]] else: stresses = sm["stress"] From 891055ce2e13e4709ca562ee95e6211e959192d3 Mon Sep 17 00:00:00 2001 From: Martin Vonk Date: Thu, 9 Dec 2021 12:04:10 +0100 Subject: [PATCH 2/6] update comments --- pastastore/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pastastore/base.py b/pastastore/base.py index 61f38aa7..7c7f157d 100644 --- a/pastastore/base.py +++ b/pastastore/base.py @@ -1000,7 +1000,7 @@ def _parse_model_dict(self, mdict: dict, mdict["oseries"]["settings"]["tmax"] = \ mdict['oseries']['series'].index[-1] - # StressModel, StressModel2, WellModel + # StressModel, WellModel for ts in mdict["stressmodels"].values(): if "stress" in ts.keys(): for stress in ts["stress"]: @@ -1015,7 +1015,7 @@ def _parse_model_dict(self, mdict: dict, stress["settings"]["tmax"] = \ stress['series'].index[-1] - # RechargeModel, TarsoModel, WellModel + # RechargeModel, TarsoModel if ("prec" in ts.keys()) and ("evap" in ts.keys()): for stress in [ts["prec"], ts["evap"]]: if 'series' not in stress: From 986c97759d1ec298ee1162a9ad5697d025ccc3de Mon Sep 17 00:00:00 2001 From: Martin Vonk Date: Fri, 10 Dec 2021 08:19:05 +0100 Subject: [PATCH 3/6] fix some if statements --- pastastore/base.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pastastore/base.py b/pastastore/base.py index 7c7f157d..fcfab6fd 100644 --- a/pastastore/base.py +++ b/pastastore/base.py @@ -7,6 +7,7 @@ import pandas as pd import pastas as ps +from numpy import isin from pastas.io.pas import PastasEncoder from tqdm import tqdm @@ -1101,19 +1102,19 @@ def _check_model_series_names_for_store(ml): for sm in ml.stressmodels.values() if sm._name not in prec_evap_model for istress in sm.stress] - if prec_evap_model in [i._name for i in ml.stressmodels.values()]: + if sum(isin(prec_evap_model, [i._name for i in ml.stressmodels.values()])) > 1: series_names += [istress.series.name for sm in ml.stressmodels.values() if sm._name in prec_evap_model for istress in sm.stress] elif isinstance(ml, dict): - # non RechargeModel stressmodels + # non RechargeModel nor Tarsomodel stressmodels series_names = [istress["name"] for sm in ml["stressmodels"].values() if sm["stressmodel"] not in prec_evap_model for istress in sm["stress"]] - # RechargeModel - if ["RechargeModel", "TarsoModel"] in [i["stressmodel"] for i in ml["stressmodels"].values()]: + # RechargeModel, TarsoModel + if sum(isin(prec_evap_model), [i["stressmodel"] for i in ml["stressmodels"].values()]) > 1: series_names += [istress["name"] for sm in ml["stressmodels"].values() if sm["stressmodel"] in prec_evap_model From 0fa86ee5534536fdb12afe250dc08c1c1f41f25e Mon Sep 17 00:00:00 2001 From: Martin Vonk Date: Fri, 10 Dec 2021 08:38:31 +0100 Subject: [PATCH 4/6] typo --- pastastore/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pastastore/base.py b/pastastore/base.py index fcfab6fd..ca7d59a1 100644 --- a/pastastore/base.py +++ b/pastastore/base.py @@ -1114,7 +1114,7 @@ def _check_model_series_names_for_store(ml): if sm["stressmodel"] not in prec_evap_model for istress in sm["stress"]] # RechargeModel, TarsoModel - if sum(isin(prec_evap_model), [i["stressmodel"] for i in ml["stressmodels"].values()]) > 1: + if sum(isin(prec_evap_model, [i["stressmodel"] for i in ml["stressmodels"].values()])) > 1: series_names += [istress["name"] for sm in ml["stressmodels"].values() if sm["stressmodel"] in prec_evap_model From 8413c2d9f87b7da08645458e056b6c7d32a6bcb0 Mon Sep 17 00:00:00 2001 From: Martin Vonk Date: Fri, 10 Dec 2021 11:33:53 +0100 Subject: [PATCH 5/6] >= instead of > --- pastastore/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pastastore/base.py b/pastastore/base.py index ca7d59a1..4bbe6ed4 100644 --- a/pastastore/base.py +++ b/pastastore/base.py @@ -1102,7 +1102,7 @@ def _check_model_series_names_for_store(ml): for sm in ml.stressmodels.values() if sm._name not in prec_evap_model for istress in sm.stress] - if sum(isin(prec_evap_model, [i._name for i in ml.stressmodels.values()])) > 1: + if sum(isin(prec_evap_model, [i._name for i in ml.stressmodels.values()])) >= 1: series_names += [istress.series.name for sm in ml.stressmodels.values() if sm._name in prec_evap_model @@ -1114,7 +1114,7 @@ def _check_model_series_names_for_store(ml): if sm["stressmodel"] not in prec_evap_model for istress in sm["stress"]] # RechargeModel, TarsoModel - if sum(isin(prec_evap_model, [i["stressmodel"] for i in ml["stressmodels"].values()])) > 1: + if sum(isin(prec_evap_model, [i["stressmodel"] for i in ml["stressmodels"].values()])) >= 1: series_names += [istress["name"] for sm in ml["stressmodels"].values() if sm["stressmodel"] in prec_evap_model From d5f7c1f2f6fff0f259c2b96898599262228989a6 Mon Sep 17 00:00:00 2001 From: dbrakenhoff Date: Fri, 10 Dec 2021 12:23:59 +0100 Subject: [PATCH 6/6] minor adjustments --- pastastore/base.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pastastore/base.py b/pastastore/base.py index 4bbe6ed4..d782230e 100644 --- a/pastastore/base.py +++ b/pastastore/base.py @@ -1098,11 +1098,15 @@ def _set_series_name(series, name): def _check_model_series_names_for_store(ml): prec_evap_model = ["RechargeModel", "TarsoModel"] if isinstance(ml, ps.Model): + # non RechargeModel nor Tarsomodel stressmodels series_names = [istress.series.name for sm in ml.stressmodels.values() if sm._name not in prec_evap_model for istress in sm.stress] - if sum(isin(prec_evap_model, [i._name for i in ml.stressmodels.values()])) >= 1: + # RechargeModel, TarsoModel + if isin(prec_evap_model, + [i._name for i in ml.stressmodels.values()] + ).any(): series_names += [istress.series.name for sm in ml.stressmodels.values() if sm._name in prec_evap_model @@ -1114,7 +1118,9 @@ def _check_model_series_names_for_store(ml): if sm["stressmodel"] not in prec_evap_model for istress in sm["stress"]] # RechargeModel, TarsoModel - if sum(isin(prec_evap_model, [i["stressmodel"] for i in ml["stressmodels"].values()])) >= 1: + if isin(prec_evap_model, + [i["stressmodel"] for i in ml["stressmodels"].values()] + ).any(): series_names += [istress["name"] for sm in ml["stressmodels"].values() if sm["stressmodel"] in prec_evap_model