Código-fonte para app.model.scenario.scenariosynthesis

from dataclasses import dataclass
from typing import Optional

from app.internal.constants import (
    END_DATE_COL,
    LTA_VALUE_COL,
    START_DATE_COL,
    VALUE_COL,
)
from app.internal.constants import (
    SCENARIO_SYNTHESIS_COMMON_COLUMNS as COLUMNS,
)
from app.model.scenario.spatialresolution import SpatialResolution
from app.model.scenario.step import Step
from app.model.scenario.unit import Unit
from app.model.scenario.variable import Variable


[documentos] @dataclass class ScenarioSynthesis: variable: Variable spatial_resolution: SpatialResolution step: Step def __repr__(self) -> str: return "_".join( [ self.variable.value, self.spatial_resolution.value, self.step.value, ] ) def __hash__(self) -> int: return hash( f"{self.variable.value}_" + f"{self.spatial_resolution.value}_" + f"{self.step.value}" ) def __eq__(self, o: object) -> bool: if not isinstance(o, ScenarioSynthesis): return False else: return all( [ self.variable == o.variable, self.spatial_resolution == o.spatial_resolution, self.step == o.step, ] )
[documentos] @classmethod def factory(cls, synthesis: str) -> Optional["ScenarioSynthesis"]: data = synthesis.split("_") if len(data) != 3: return None else: return cls( Variable.factory(data[0]), SpatialResolution.factory(data[1]), Step.factory(data[2]), )
@property def entity_df_columns(self) -> list[str]: return ( self.spatial_resolution.entity_df_columns + self.step.entity_df_columns ) @property def all_synthesis_df_columns(self) -> list[str]: return self.entity_df_columns + COLUMNS @property def entity_synthesis_df_columns(self) -> list[str]: all_columns = self.all_synthesis_df_columns return [c for c in all_columns if c not in [LTA_VALUE_COL, VALUE_COL]] @property def sorting_synthesis_df_columns(self) -> list[str]: all_columns = self.all_synthesis_df_columns return [ c for c in all_columns if c not in [START_DATE_COL, END_DATE_COL, VALUE_COL, LTA_VALUE_COL] ] @property def non_entity_sorting_synthesis_df_columns(self) -> list[str]: sorting_columns = self.sorting_synthesis_df_columns return [ c for c in sorting_columns if c not in self.entity_synthesis_df_columns ]
SUPPORTED_SYNTHESIS: list[str] = [ "ENAA_REE_FOR", "ENAA_REE_BKW", "ENAA_REE_SF", "ENAA_SBM_FOR", "ENAA_SBM_BKW", "ENAA_SBM_SF", "ENAA_SIN_FOR", "ENAA_SIN_BKW", "ENAA_SIN_SF", "QINC_UHE_FOR", "QINC_UHE_BKW", "QINC_UHE_SF", "QINC_REE_FOR", "QINC_REE_BKW", "QINC_REE_SF", "QINC_SBM_FOR", "QINC_SBM_BKW", "QINC_SBM_SF", "QINC_SIN_FOR", "QINC_SIN_BKW", "QINC_SIN_SF", ] UNITS: dict[ScenarioSynthesis, Unit] = { ScenarioSynthesis( Variable.ENA_ABSOLUTA, SpatialResolution.RESERVATORIO_EQUIVALENTE, Step.FORWARD, ): Unit.MWmes, ScenarioSynthesis( Variable.ENA_ABSOLUTA, SpatialResolution.RESERVATORIO_EQUIVALENTE, Step.BACKWARD, ): Unit.MWmes, ScenarioSynthesis( Variable.ENA_ABSOLUTA, SpatialResolution.RESERVATORIO_EQUIVALENTE, Step.FINAL_SIMULATION, ): Unit.MWmes, ScenarioSynthesis( Variable.ENA_ABSOLUTA, SpatialResolution.SUBMERCADO, Step.FORWARD, ): Unit.MWmes, ScenarioSynthesis( Variable.ENA_ABSOLUTA, SpatialResolution.SUBMERCADO, Step.BACKWARD, ): Unit.MWmes, ScenarioSynthesis( Variable.ENA_ABSOLUTA, SpatialResolution.SUBMERCADO, Step.FINAL_SIMULATION, ): Unit.MWmes, ScenarioSynthesis( Variable.ENA_ABSOLUTA, SpatialResolution.SISTEMA_INTERLIGADO, Step.FORWARD, ): Unit.MWmes, ScenarioSynthesis( Variable.ENA_ABSOLUTA, SpatialResolution.SISTEMA_INTERLIGADO, Step.BACKWARD, ): Unit.MWmes, ScenarioSynthesis( Variable.ENA_ABSOLUTA, SpatialResolution.SISTEMA_INTERLIGADO, Step.FINAL_SIMULATION, ): Unit.MWmes, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.USINA_HIDROELETRICA, Step.FORWARD, ): Unit.m3s, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.USINA_HIDROELETRICA, Step.BACKWARD, ): Unit.m3s, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.USINA_HIDROELETRICA, Step.FINAL_SIMULATION, ): Unit.m3s, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.RESERVATORIO_EQUIVALENTE, Step.FORWARD, ): Unit.m3s, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.RESERVATORIO_EQUIVALENTE, Step.BACKWARD, ): Unit.m3s, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.RESERVATORIO_EQUIVALENTE, Step.FINAL_SIMULATION, ): Unit.m3s, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.SUBMERCADO, Step.FORWARD, ): Unit.m3s, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.SUBMERCADO, Step.BACKWARD, ): Unit.m3s, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.SUBMERCADO, Step.FINAL_SIMULATION, ): Unit.m3s, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.SISTEMA_INTERLIGADO, Step.FORWARD, ): Unit.m3s, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.SISTEMA_INTERLIGADO, Step.BACKWARD, ): Unit.m3s, ScenarioSynthesis( Variable.VAZAO_INCREMENTAL, SpatialResolution.SISTEMA_INTERLIGADO, Step.FINAL_SIMULATION, ): Unit.m3s, }