Coverage for pydelica/solutions.py: 95%
20 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-19 07:38 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-19 07:38 +0000
1from pydelica.exception import ResultRetrievalError
2import pandas as pd
3import pathlib
4import logging
7class SolutionHandler:
8 """Stores solutions extracted from a Modelica simulation"""
10 def __init__(self, session_directory: str) -> None:
11 """Extract solution information from a given session directory
13 Parameters
14 ----------
15 session_directory : str
16 directory from a simulation session
17 """
18 self._logger = logging.getLogger("PyDelica.Solutions")
19 self._session_dir = session_directory
20 self._solutions: dict[str, pd.DataFrame] = {}
22 def retrieve_session_solutions(
23 self, run_directory: pathlib.Path
24 ) -> dict[str, pd.DataFrame]:
25 """Retrieve any stored solutions
27 Parameters
28 ----------
29 run_directory: pathlib.Path
30 directory containing run outputs
32 Returns
33 -------
34 dict[str, pd.DataFrame]
35 solutions extracted from valid results files
37 Raises
38 ------
39 ResultRetrievalError
40 If no CSV result files were found within the session directory
41 """
42 _has_csv = run_directory.glob("*_res.csv")
44 if not _has_csv:
45 raise ResultRetrievalError
47 for out_file in _has_csv:
48 self._logger.debug("Reading results from output file '%s'", out_file)
49 _key = f"{out_file}".split("_res")[0]
50 self._solutions[_key] = pd.read_csv(out_file)
51 return self._solutions
53 def get_solutions(self) -> dict[str, pd.DataFrame]:
54 return self._solutions