@@ -2485,66 +2485,83 @@ def get_doe_solutions(
24852485 var_list : Optional [list ] = None ,
24862486 ) -> Optional [tuple [str ] | dict [str , dict [str , np .ndarray ]]]:
24872487 """
2488- Get all solutions of the DoE run. The following return values are possible:
2488+ Wrapper for doe_get_solutions()
2489+ """
2490+ if not isinstance (self ._mod , ModelicaSystemOMC ):
2491+ raise ModelicaSystemError (f"Invalid definition for mod: { type (self ._mod )} - expect ModelicaSystemOMC!" )
24892492
2490- * A list of variables if val_list == None
2493+ return doe_get_solutions (
2494+ msomc = self ._mod ,
2495+ resultpath = self ._resultpath ,
2496+ doe_def = self .get_doe_definition (),
2497+ var_list = var_list ,
2498+ )
24912499
2492- * The Solutions as dict[str, pd.DataFrame] if a value list (== val_list) is defined.
24932500
2494- The following code snippet can be used to convert the solution data for each run to a pandas dataframe:
2501+ def doe_get_solutions (
2502+ msomc : ModelicaSystemOMC ,
2503+ resultpath : OMCPath ,
2504+ doe_def : Optional [dict ] = None ,
2505+ var_list : Optional [list ] = None ,
2506+ ) -> Optional [tuple [str ] | dict [str , dict [str , np .ndarray ]]]:
2507+ """
2508+ Get all solutions of the DoE run. The following return values are possible:
24952509
2496- ```
2497- import pandas as pd
2510+ * A list of variables if val_list == None
24982511
2499- doe_sol = doe_mod.get_doe_solutions()
2500- for key in doe_sol:
2501- data = doe_sol[key]['data']
2502- if data:
2503- doe_sol[key]['df'] = pd.DataFrame.from_dict(data=data)
2504- else:
2505- doe_sol[key]['df'] = None
2506- ```
2512+ * The Solutions as dict[str, pd.DataFrame] if a value list (== val_list) is defined.
25072513
2508- """
2509- if not isinstance (self ._mod , ModelicaSystemOMC ):
2510- raise ModelicaSystemError (f"Invalid definition for mod: { type (self ._mod )} - expect ModelicaSystemOMC!" )
2514+ The following code snippet can be used to convert the solution data for each run to a pandas dataframe:
25112515
2512- if not isinstance ( self . _doe_def , dict ):
2513- return None
2516+ ```
2517+ import pandas as pd
25142518
2515- if len (self ._doe_def ) == 0 :
2516- raise ModelicaSystemError ("No result files available - all simulations did fail?" )
2519+ doe_sol = doe_mod.get_doe_solutions()
2520+ for key in doe_sol:
2521+ data = doe_sol[key]['data']
2522+ if data:
2523+ doe_sol[key]['df'] = pd.DataFrame.from_dict(data=data)
2524+ else:
2525+ doe_sol[key]['df'] = None
2526+ ```
25172527
2518- sol_dict : dict [ str , dict [ str , Any ]] = {}
2519- for resultfilename in self . _doe_def :
2520- resultfile = self . _resultpath / resultfilename
2528+ """
2529+ if not isinstance ( doe_def , dict ) :
2530+ return None
25212531
2522- sol_dict [resultfilename ] = {}
2532+ if len (doe_def ) == 0 :
2533+ raise ModelicaSystemError ("No result files available - all simulations did fail?" )
25232534
2524- if not self ._doe_def [resultfilename ][self .DICT_RESULT_AVAILABLE ]:
2525- msg = f"No result file available for { resultfilename } "
2526- logger .warning (msg )
2527- sol_dict [resultfilename ]['msg' ] = msg
2528- sol_dict [resultfilename ]['data' ] = {}
2529- continue
2535+ sol_dict : dict [str , dict [str , Any ]] = {}
2536+ for resultfilename in doe_def :
2537+ resultfile = resultpath / resultfilename
25302538
2531- if var_list is None :
2532- var_list_row = list (self ._mod .getSolutions (resultfile = resultfile ))
2533- else :
2534- var_list_row = var_list
2535-
2536- try :
2537- sol = self ._mod .getSolutions (varList = var_list_row , resultfile = resultfile )
2538- sol_data = {var : sol [idx ] for idx , var in enumerate (var_list_row )}
2539- sol_dict [resultfilename ]['msg' ] = 'Simulation available'
2540- sol_dict [resultfilename ]['data' ] = sol_data
2541- except ModelicaSystemError as ex :
2542- msg = f"Error reading solution for { resultfilename } : { ex } "
2543- logger .warning (msg )
2544- sol_dict [resultfilename ]['msg' ] = msg
2545- sol_dict [resultfilename ]['data' ] = {}
2546-
2547- return sol_dict
2539+ sol_dict [resultfilename ] = {}
2540+
2541+ if not doe_def [resultfilename ][ModelicaDoEABC .DICT_RESULT_AVAILABLE ]:
2542+ msg = f"No result file available for { resultfilename } "
2543+ logger .warning (msg )
2544+ sol_dict [resultfilename ]['msg' ] = msg
2545+ sol_dict [resultfilename ]['data' ] = {}
2546+ continue
2547+
2548+ if var_list is None :
2549+ var_list_row = list (msomc .getSolutions (resultfile = resultfile ))
2550+ else :
2551+ var_list_row = var_list
2552+
2553+ try :
2554+ sol = msomc .getSolutions (varList = var_list_row , resultfile = resultfile )
2555+ sol_data = {var : sol [idx ] for idx , var in enumerate (var_list_row )}
2556+ sol_dict [resultfilename ]['msg' ] = 'Simulation available'
2557+ sol_dict [resultfilename ]['data' ] = sol_data
2558+ except ModelicaSystemError as ex :
2559+ msg = f"Error reading solution for { resultfilename } : { ex } "
2560+ logger .warning (msg )
2561+ sol_dict [resultfilename ]['msg' ] = msg
2562+ sol_dict [resultfilename ]['data' ] = {}
2563+
2564+ return sol_dict
25482565
25492566
25502567class ModelicaSystemDoE (ModelicaDoEOMC ):
0 commit comments