Hooked up simulation to BEsim
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Mapping
|
||||
from dataclasses import dataclass
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Any
|
||||
|
||||
from bedit_core.models import ComponentID
|
||||
from bedit_gui.models import Simulation
|
||||
from bedit_simulation import SimulationResult
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -33,6 +34,8 @@ class SimulationRoot:
|
||||
component_path: str
|
||||
settings_name: str | None
|
||||
settings: Simulation
|
||||
current_end_time: float | None = None
|
||||
results: list[SimulationResult] = field(default_factory=list)
|
||||
|
||||
@classmethod
|
||||
def from_data(cls, data: Mapping[str, Any]) -> SimulationRoot:
|
||||
@@ -46,6 +49,8 @@ class SimulationRoot:
|
||||
component_path=str(data.get("component_path", "")),
|
||||
settings_name=str(data["settings_name"]) if data.get("settings_name") is not None else None,
|
||||
settings=Simulation.from_data(data["settings"]),
|
||||
current_end_time=float(data["current_end_time"]) if data.get("current_end_time") is not None else None,
|
||||
results=[_result_from_data(result) for result in data.get("results", [])],
|
||||
)
|
||||
|
||||
def to_data(self) -> dict[str, Any]:
|
||||
@@ -58,4 +63,18 @@ class SimulationRoot:
|
||||
"component_path": self.component_path,
|
||||
"settings_name": self.settings_name,
|
||||
"settings": self.settings.to_data(),
|
||||
"current_end_time": self.current_end_time,
|
||||
"results": [_result_to_data(result) for result in self.results],
|
||||
}
|
||||
|
||||
|
||||
def _result_from_data(data: Mapping[str, Any]) -> SimulationResult:
|
||||
raw_columns = data.get("data", {})
|
||||
if not isinstance(raw_columns, Mapping):
|
||||
raise TypeError("simulation result data must be a mapping")
|
||||
columns = {str(name): [float(value) for value in values] for name, values in raw_columns.items()}
|
||||
return SimulationResult(model_name=str(data.get("model_name", "")), data=columns, process_output=str(data.get("process_output", "")), process_errors=str(data.get("process_errors", "")))
|
||||
|
||||
|
||||
def _result_to_data(result: SimulationResult) -> dict[str, Any]:
|
||||
return {"model_name": result.model_name, "data": result.data, "process_output": result.process_output, "process_errors": result.process_errors}
|
||||
|
||||
Reference in New Issue
Block a user