mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-30 03:20:41 +01:00
Results: Compare scenarios.
This commit is contained in:
1 parent
bc08d06bb1
commit
188486f33a
5 files changed
+426
-124
No files matched your search
+76
-17
@@ -84,10 +84,12 @@ from View.SolverParameters.Window import SolverParametersWindow
|
||||
from View.RunSolver.Window import (
|
||||
SelectSolverWindow,
|
||||
SolverLogWindow,
|
||||
CompareSolversWindow
|
||||
)
|
||||
|
||||
from View.Results.Window import ResultsWindow
|
||||
from View.Results.CompareDialog import (
|
||||
CompareSolversWindow, CompareScenariosWindow
|
||||
)
|
||||
|
||||
from View.RunSolver.WindowAdisTS import (
|
||||
SelectSolverWindowAdisTS,
|
||||
@@ -128,8 +130,8 @@ no_model_action = [
|
||||
model_action = [
|
||||
"action_menu_close", "action_menu_edit", "action_menu_save",
|
||||
"action_menu_save_as", "action_toolBar_close", "action_toolBar_save",
|
||||
"action_menu_numerical_parameter", "action_open_results_from_file",
|
||||
"action_open_results_adists",
|
||||
"action_menu_numerical_parameter", "action_menu_open_results_from_file",
|
||||
"action_menu_open_results_adists",
|
||||
]
|
||||
|
||||
other_model_action = [
|
||||
@@ -150,8 +152,9 @@ define_model_action = [
|
||||
"action_menu_run_solver", "action_menu_sediment_layers",
|
||||
"action_menu_edit_reach_sediment_layers", "action_menu_edit_reservoirs",
|
||||
"action_menu_edit_hydraulic_structures", "action_menu_additional_file",
|
||||
"action_menu_results_last", "action_open_results_from_file",
|
||||
"action_compare_results", "action_menu_boundary_conditions_sediment",
|
||||
"action_menu_results_last", "action_menu_open_results_from_file",
|
||||
"action_menu_compare_results", "action_menu_compare_scenarios_results",
|
||||
"action_menu_boundary_conditions_sediment",
|
||||
"action_menu_rep_additional_lines", "action_menu_output_rk",
|
||||
"action_menu_run_adists", "action_menu_pollutants",
|
||||
"action_menu_d90", "action_menu_dif",
|
||||
@@ -296,9 +299,10 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||
"action_menu_rep_additional_lines": self.open_rep_lines,
|
||||
"action_menu_close": self.close_model,
|
||||
"action_menu_results_last": self.open_last_results,
|
||||
"action_open_results_from_file": self.open_results_from_file,
|
||||
"action_compare_results": self.compare_results,
|
||||
"action_open_results_adists": self.open_results_adists,
|
||||
"action_menu_open_results_from_file": self.open_results_from_file,
|
||||
"action_menu_compare_results": self.compare_results,
|
||||
"action_menu_compare_scenarios_results": self.compare_results_scenarios,
|
||||
"action_menu_open_results_adists": self.open_results_adists,
|
||||
# Help
|
||||
"action_menu_pamhyr_users_wiki": self.open_doc_user,
|
||||
"action_menu_pamhyr_developers_pdf":
|
||||
@@ -1641,13 +1645,16 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||
)
|
||||
res.show()
|
||||
|
||||
def _solver_workdir(self, solver):
|
||||
def _solver_workdir(self, solver, scenario=None):
|
||||
if scenario is None:
|
||||
scenario = self._study.status.scenario
|
||||
|
||||
workdir = os.path.join(
|
||||
os.path.dirname(self._study.filename),
|
||||
"_PAMHYR_",
|
||||
self._study.name.replace(" ", "_"),
|
||||
solver.name.replace(" ", "_"),
|
||||
self._study.status.scenario.workdir(),
|
||||
scenario.workdir(),
|
||||
)
|
||||
|
||||
return workdir
|
||||
@@ -1724,7 +1731,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||
|
||||
# Windows already opened
|
||||
if self.sub_window_exists(
|
||||
ResultsWindow,
|
||||
CompareSolversWindow,
|
||||
data=[self._study, None] +
|
||||
[r._solver for r in results] +
|
||||
[r._repertory for r in results] +
|
||||
@@ -1739,6 +1746,46 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||
)
|
||||
res.show()
|
||||
|
||||
def compare_results_scenarios(self):
|
||||
if self._study is None:
|
||||
return
|
||||
|
||||
dlg = CompareScenariosWindow(
|
||||
study=self._study,
|
||||
config=self.conf,
|
||||
parent=self
|
||||
)
|
||||
if not dlg.exec():
|
||||
return
|
||||
|
||||
results = self.diff_results(
|
||||
dlg.solver1, dlg.solver2,
|
||||
scenario1=dlg.scenario1,
|
||||
scenario2=dlg.scenario2
|
||||
)
|
||||
|
||||
# At least one result not available
|
||||
if results is None:
|
||||
return
|
||||
|
||||
# Windows already opened
|
||||
if self.sub_window_exists(
|
||||
CompareScenariosWindow,
|
||||
data=[self._study, None] +
|
||||
[r._solver for r in results] +
|
||||
[r._repertory for r in results] +
|
||||
[r._name for r in results] +
|
||||
[dlg.scenario1, dlg.scenario2]
|
||||
):
|
||||
return
|
||||
|
||||
res = ResultsWindow(
|
||||
study=self._study,
|
||||
results=results,
|
||||
parent=self
|
||||
)
|
||||
res.show()
|
||||
|
||||
def msg_diff_results_param(self):
|
||||
self.message_box(
|
||||
window_title=self._trad["Error"],
|
||||
@@ -1754,21 +1801,33 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||
)
|
||||
|
||||
@timer
|
||||
def diff_results(self, solver1, solver2):
|
||||
def diff_results(self, solver1, solver2,
|
||||
scenario1=None, scenario2=None):
|
||||
if solver1 is None or solver2 is None:
|
||||
self.msg_diff_results_param()
|
||||
return None
|
||||
|
||||
solver3 = GenericSolver(solver1.name + " <> " + solver2.name)
|
||||
study1 = self._study
|
||||
study2 = self._study
|
||||
|
||||
s3_name = solver1.name + " <> " + solver2.name
|
||||
|
||||
if not (scenario2 is None or scenario2 is None):
|
||||
study1 = self._study.copy_from_scenario(scenario1)
|
||||
study2 = self._study.copy_from_scenario(scenario2)
|
||||
|
||||
s3_name = scenario1.name + " <> " + scenario2.name
|
||||
|
||||
solver3 = GenericSolver(s3_name)
|
||||
|
||||
result1 = solver1.results(
|
||||
self._study,
|
||||
self._solver_workdir(solver1),
|
||||
study1,
|
||||
self._solver_workdir(solver1, scenario=scenario1),
|
||||
)
|
||||
|
||||
result2 = solver2.results(
|
||||
self._study,
|
||||
self._solver_workdir(solver2),
|
||||
study2,
|
||||
self._solver_workdir(solver2, scenario=scenario2),
|
||||
)
|
||||
|
||||
if result1 is None or result2 is None:
|
||||
|
||||
Reference in new issue
Block a user