Skip to content
Snippets Groups Projects
Commit 4fabc891 authored by leufen1's avatar leufen1
Browse files

skill score statistics require now more explicitly named indicators for...

skill score statistics require now more explicitly named indicators for forecast, observation and reference to prevent error arising from auto-filling
parent ac9366d7
No related branches found
No related tags found
3 merge requests!253include current develop,!252Resolve "release v1.3.0",!196Resolve "Competitor Models"
...@@ -209,7 +209,7 @@ class SkillScores: ...@@ -209,7 +209,7 @@ class SkillScores:
def skill_scores(self, window_lead_time: int) -> pd.DataFrame: def skill_scores(self, window_lead_time: int) -> pd.DataFrame:
""" """
Calculate skill scores for all combinations of CNN, persistence and OLS. Calculate skill scores for all combinations of model names.
:param window_lead_time: length of forecast steps :param window_lead_time: length of forecast steps
...@@ -228,7 +228,7 @@ class SkillScores: ...@@ -228,7 +228,7 @@ class SkillScores:
return skill_score return skill_score
def climatological_skill_scores(self, external_data: Data, window_lead_time: int, def climatological_skill_scores(self, external_data: Data, window_lead_time: int,
forecast_name: str = "cnn") -> xr.DataArray: forecast_name: str) -> xr.DataArray:
""" """
Calculate climatological skill scores according to Murphy (1988). Calculate climatological skill scores according to Murphy (1988).
...@@ -273,8 +273,8 @@ class SkillScores: ...@@ -273,8 +273,8 @@ class SkillScores:
kwargs = {"external_data": external_data} if external_data is not None else {} kwargs = {"external_data": external_data} if external_data is not None else {}
return self.__getattribute__(f"skill_score_mu_case_{mu_type}")(data, observation_name, forecast_name, **kwargs) return self.__getattribute__(f"skill_score_mu_case_{mu_type}")(data, observation_name, forecast_name, **kwargs)
@staticmethod def general_skill_score(self, data: Data, forecast_name: str, reference_name: str,
def general_skill_score(data: Data, observation_name: str, forecast_name: str, reference_name: str) -> np.ndarray: observation_name: str = None) -> np.ndarray:
r""" r"""
Calculate general skill score based on mean squared error. Calculate general skill score based on mean squared error.
...@@ -285,6 +285,8 @@ class SkillScores: ...@@ -285,6 +285,8 @@ class SkillScores:
:return: skill score of forecast :return: skill score of forecast
""" """
if observation_name is None:
observation_name = self.observation_name
data = data.dropna("index") data = data.dropna("index")
observation = data.sel(type=observation_name) observation = data.sel(type=observation_name)
forecast = data.sel(type=forecast_name) forecast = data.sel(type=forecast_name)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment