From a5d4231cb2520a09a43906549a68c59c8838c0e8 Mon Sep 17 00:00:00 2001 From: MartinBelthle Date: Tue, 22 Oct 2024 15:47:24 +0200 Subject: [PATCH] fix(bc): display matrix index according to frequency (#2196) Fix [ANT-2364] --- .../bindingconstraints/bindingcontraints.py | 9 ++++-- .../test_study_matrix_index.py | 30 ++++++++++++------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingcontraints.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingcontraints.py index afa55a3f17..28dba53eb5 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingcontraints.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingcontraints.py @@ -43,6 +43,11 @@ class BindingConstraints(FolderNode): def build(self) -> TREE: cfg = self.config + frequency_mapping = { + BindingConstraintFrequency.HOURLY: MatrixFrequency.HOURLY, + BindingConstraintFrequency.DAILY: MatrixFrequency.DAILY, + BindingConstraintFrequency.WEEKLY: MatrixFrequency.DAILY, + } if cfg.version < 870: default_matrices = { BindingConstraintFrequency.HOURLY: default_bc_hourly_86, @@ -53,7 +58,7 @@ def build(self) -> TREE: binding.id: InputSeriesMatrix( self.context, self.config.next_file(f"{binding.id}.txt"), - freq=MatrixFrequency(binding.time_step), + freq=frequency_mapping[binding.time_step], nb_columns=3, default_empty=default_matrices[binding.time_step], ) @@ -73,7 +78,7 @@ def build(self) -> TREE: children[matrix_id] = InputSeriesMatrix( self.context, self.config.next_file(f"{matrix_id}.txt"), - freq=MatrixFrequency(binding.time_step), + freq=frequency_mapping[binding.time_step], nb_columns=1 if term in ["lt", "gt"] else None, default_empty=default_matrices[binding.time_step], ) diff --git a/tests/integration/studies_blueprint/test_study_matrix_index.py b/tests/integration/studies_blueprint/test_study_matrix_index.py index 759b43131b..4f540f4c30 100644 --- a/tests/integration/studies_blueprint/test_study_matrix_index.py +++ b/tests/integration/studies_blueprint/test_study_matrix_index.py @@ -28,7 +28,7 @@ def test_get_study_matrix_index( user_access_token: str, internal_study_id: str, ) -> None: - user_access_token = {"Authorization": f"Bearer {user_access_token}"} + client.headers = {"Authorization": f"Bearer {user_access_token}"} # Check the matrix index for Thermal clusters # =========================================== @@ -36,7 +36,6 @@ def test_get_study_matrix_index( # Check the Common matrix index res = client.get( f"/v1/studies/{internal_study_id}/matrixindex", - headers=user_access_token, params={"path": "input/thermal/prepro/fr/01_solar/modulation"}, ) assert res.status_code == 200, res.json() @@ -52,9 +51,7 @@ def test_get_study_matrix_index( # Check the TS Generator matrix index res = client.get( - f"/v1/studies/{internal_study_id}/matrixindex", - headers=user_access_token, - params={"path": "input/thermal/prepro/fr/01_solar/data"}, + f"/v1/studies/{internal_study_id}/matrixindex", params={"path": "input/thermal/prepro/fr/01_solar/data"} ) assert res.status_code == 200, res.json() actual = res.json() @@ -69,9 +66,7 @@ def test_get_study_matrix_index( # Check the time series res = client.get( - f"/v1/studies/{internal_study_id}/matrixindex", - headers=user_access_token, - params={"path": "input/thermal/series/fr/01_solar/series"}, + f"/v1/studies/{internal_study_id}/matrixindex", params={"path": "input/thermal/series/fr/01_solar/series"} ) assert res.status_code == 200, res.json() actual = res.json() @@ -87,7 +82,7 @@ def test_get_study_matrix_index( # Check the default matrix index # ============================== - res = client.get(f"/v1/studies/{internal_study_id}/matrixindex", headers=user_access_token) + res = client.get(f"/v1/studies/{internal_study_id}/matrixindex") assert res.status_code == 200 actual = res.json() expected = { @@ -103,10 +98,25 @@ def test_get_study_matrix_index( res = client.get( f"/v1/studies/{internal_study_id}/matrixindex", - headers=user_access_token, params={"path": "output/20201014-1427eco/economy/mc-all/areas/es/details-daily"}, ) assert res.status_code == 200 actual = res.json() expected = {"first_week_size": 7, "start_date": "2018-01-01 00:00:00", "steps": 7, "level": "daily"} assert actual == expected + + # Check the matrix index for a weekly binding constraint + # ========================================================================= + + res = client.post( + f"/v1/studies/{internal_study_id}/bindingconstraints", json={"name": "bc_1", "timeStep": "weekly"} + ) + res.raise_for_status() + + res = client.get( + f"/v1/studies/{internal_study_id}/matrixindex", params={"path": "input/bindingconstraints/bc_1"} + ) + assert res.status_code == 200 + actual = res.json() + expected = {"first_week_size": 7, "start_date": "2018-01-01 00:00:00", "steps": 365, "level": "daily"} + assert actual == expected