mirror of https://gitlab.com/pamhyr/pamhyr2
Merge branch 'scenario-dev-pa' into scenarios
commit
abe24611b3
|
|
@ -482,6 +482,8 @@ class Study(SQLModel):
|
||||||
river = self.load_scenario(scenario)
|
river = self.load_scenario(scenario)
|
||||||
self._river = river
|
self._river = river
|
||||||
|
|
||||||
|
self.status.scenario = scenario
|
||||||
|
|
||||||
if reduce(
|
if reduce(
|
||||||
lambda a, s: a or (s.parent is scenario),
|
lambda a, s: a or (s.parent is scenario),
|
||||||
self.scenarios.lst,
|
self.scenarios.lst,
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ from View.RunSolver.Window import (
|
||||||
|
|
||||||
from View.Results.Window import ResultsWindow
|
from View.Results.Window import ResultsWindow
|
||||||
from View.Results.CompareDialog import (
|
from View.Results.CompareDialog import (
|
||||||
CompareSolversWindow, CompareScenariosWindow
|
CompareScenariosWindow
|
||||||
)
|
)
|
||||||
|
|
||||||
from View.RunSolver.WindowAdisTS import (
|
from View.RunSolver.WindowAdisTS import (
|
||||||
|
|
@ -153,7 +153,6 @@ define_model_action = [
|
||||||
"action_menu_edit_reach_sediment_layers", "action_menu_edit_reservoirs",
|
"action_menu_edit_reach_sediment_layers", "action_menu_edit_reservoirs",
|
||||||
"action_menu_edit_hydraulic_structures", "action_menu_additional_file",
|
"action_menu_edit_hydraulic_structures", "action_menu_additional_file",
|
||||||
"action_menu_results_last", "action_menu_open_results_from_file",
|
"action_menu_results_last", "action_menu_open_results_from_file",
|
||||||
# "action_menu_compare_results",
|
|
||||||
"action_menu_compare_scenarios_results",
|
"action_menu_compare_scenarios_results",
|
||||||
"action_menu_boundary_conditions_sediment",
|
"action_menu_boundary_conditions_sediment",
|
||||||
"action_menu_rep_additional_lines", "action_menu_output_rk",
|
"action_menu_rep_additional_lines", "action_menu_output_rk",
|
||||||
|
|
@ -301,7 +300,6 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||||
"action_menu_close": self.close_model,
|
"action_menu_close": self.close_model,
|
||||||
"action_menu_results_last": self.open_last_results,
|
"action_menu_results_last": self.open_last_results,
|
||||||
"action_menu_open_results_from_file": self.open_results_from_file,
|
"action_menu_open_results_from_file": self.open_results_from_file,
|
||||||
# "action_menu_compare_results": self.compare_results,
|
|
||||||
"action_menu_compare_scenarios_results":
|
"action_menu_compare_scenarios_results":
|
||||||
self.compare_results_scenarios,
|
self.compare_results_scenarios,
|
||||||
"action_menu_open_results_adists": self.open_results_adists,
|
"action_menu_open_results_adists": self.open_results_adists,
|
||||||
|
|
@ -1711,43 +1709,6 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||||
results=file_name[0]
|
results=file_name[0]
|
||||||
)
|
)
|
||||||
|
|
||||||
# def compare_results(self):
|
|
||||||
# if self._study is None:
|
|
||||||
# return
|
|
||||||
|
|
||||||
# run = CompareSolversWindow(
|
|
||||||
# study=self._study,
|
|
||||||
# config=self.conf,
|
|
||||||
# parent=self
|
|
||||||
# )
|
|
||||||
# if not run.exec():
|
|
||||||
# return
|
|
||||||
|
|
||||||
# results = self.diff_results(
|
|
||||||
# run.solver1, run.solver2
|
|
||||||
# )
|
|
||||||
|
|
||||||
# # At least one result not available
|
|
||||||
# if results is None:
|
|
||||||
# return
|
|
||||||
|
|
||||||
# # Windows already opened
|
|
||||||
# if self.sub_window_exists(
|
|
||||||
# CompareSolversWindow,
|
|
||||||
# data=[self._study, None] +
|
|
||||||
# [r._solver for r in results] +
|
|
||||||
# [r._repertory for r in results] +
|
|
||||||
# [r._name for r in results]
|
|
||||||
# ):
|
|
||||||
# return
|
|
||||||
|
|
||||||
# res = ResultsWindow(
|
|
||||||
# study=self._study,
|
|
||||||
# results=results,
|
|
||||||
# parent=self
|
|
||||||
# )
|
|
||||||
# res.show()
|
|
||||||
|
|
||||||
def compare_results_scenarios(self):
|
def compare_results_scenarios(self):
|
||||||
if self._study is None:
|
if self._study is None:
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -32,106 +32,14 @@ _translate = QCoreApplication.translate
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
class CompareSolversWindow(PamhyrDialog):
|
|
||||||
_pamhyr_ui = "CompareSolvers"
|
|
||||||
_pamhyr_name = "Compare solvers"
|
|
||||||
|
|
||||||
def __init__(self, study=None, config=None,
|
|
||||||
parent=None):
|
|
||||||
self._solver1 = None
|
|
||||||
self._solver2 = None
|
|
||||||
|
|
||||||
name = _translate("Solver", "Compare solvers")
|
|
||||||
super(CompareSolversWindow, self).__init__(
|
|
||||||
title=name,
|
|
||||||
study=study,
|
|
||||||
config=config,
|
|
||||||
options=[],
|
|
||||||
parent=parent
|
|
||||||
)
|
|
||||||
|
|
||||||
self.setup_solvers()
|
|
||||||
self.setup_connections()
|
|
||||||
self.select_last_solver()
|
|
||||||
|
|
||||||
def setup_solvers(self):
|
|
||||||
solvers = self._config.solvers
|
|
||||||
solvers_name = list(
|
|
||||||
map(
|
|
||||||
self._format_solver_name,
|
|
||||||
solvers
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
self.combobox_add_items("comboBox1", solvers_name)
|
|
||||||
self.combobox_add_items("comboBox2", solvers_name)
|
|
||||||
|
|
||||||
def setup_connections(self):
|
|
||||||
self.find(QPushButton, "pushButton_ok").clicked.connect(self.accept)
|
|
||||||
self.find(QPushButton, "pushButton_cancel")\
|
|
||||||
.clicked.connect(self.reject)
|
|
||||||
|
|
||||||
def select_last_solver(self):
|
|
||||||
solvers = self._config.solvers
|
|
||||||
last = self._config.last_solver_name
|
|
||||||
|
|
||||||
solver = list(
|
|
||||||
filter(
|
|
||||||
lambda s: s.name == last,
|
|
||||||
solvers
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if len(solver) != 0:
|
|
||||||
self.set_combobox_text(
|
|
||||||
"comboBox1",
|
|
||||||
self._format_solver_name(solver[0])
|
|
||||||
)
|
|
||||||
|
|
||||||
def _format_solver_name(self, solver):
|
|
||||||
return f"{solver.name} - ({solver._type})"
|
|
||||||
|
|
||||||
@property
|
|
||||||
def solver1(self):
|
|
||||||
return self._solver1
|
|
||||||
|
|
||||||
@property
|
|
||||||
def solver2(self):
|
|
||||||
return self._solver2
|
|
||||||
|
|
||||||
def accept(self):
|
|
||||||
solver_name1 = self.get_combobox_text("comboBox1")
|
|
||||||
solver_name1 = solver_name1.rsplit(" - ", 1)[0]
|
|
||||||
|
|
||||||
self._solver1 = next(
|
|
||||||
filter(
|
|
||||||
lambda s: s.name == solver_name1,
|
|
||||||
self._config.solvers
|
|
||||||
)
|
|
||||||
)
|
|
||||||
solver_name2 = self.get_combobox_text("comboBox2")
|
|
||||||
solver_name2 = solver_name2.rsplit(" - ", 1)[0]
|
|
||||||
|
|
||||||
self._solver2 = next(
|
|
||||||
filter(
|
|
||||||
lambda s: s.name == solver_name2,
|
|
||||||
self._config.solvers
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
super(CompareSolversWindow, self).accept()
|
|
||||||
|
|
||||||
|
|
||||||
class CompareScenariosWindow(PamhyrDialog):
|
class CompareScenariosWindow(PamhyrDialog):
|
||||||
_pamhyr_ui = "CompareScenarios"
|
_pamhyr_ui = "CompareScenarios"
|
||||||
_pamhyr_name = "Compare scenarios"
|
_pamhyr_name = "Compare scenarios"
|
||||||
|
|
||||||
def __init__(self, study=None, config=None,
|
def __init__(self, study=None, config=None,
|
||||||
parent=None):
|
parent=None):
|
||||||
self._solver1 = None
|
self._solvers = []
|
||||||
self._solver2 = None
|
self._scenarios = []
|
||||||
self._scenario1 = None
|
|
||||||
self._scenario2 = None
|
|
||||||
|
|
||||||
name = _translate("Solver", "Compare solvers")
|
name = _translate("Solver", "Compare solvers")
|
||||||
super(CompareScenariosWindow, self).__init__(
|
super(CompareScenariosWindow, self).__init__(
|
||||||
|
|
@ -200,53 +108,42 @@ class CompareScenariosWindow(PamhyrDialog):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def solver1(self):
|
def solver1(self):
|
||||||
return self._solver1
|
return self._solvers[0]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def solver2(self):
|
def solver2(self):
|
||||||
return self._solver2
|
return self._solvers[1]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def scenario1(self):
|
def scenario1(self):
|
||||||
return self._scenario1
|
return self._scenarios[0]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def scenario2(self):
|
def scenario2(self):
|
||||||
return self._scenario2
|
return self._scenarios[1]
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
solver_name1 = self.get_combobox_text("comboBoxSolver1")
|
for cb in ["comboBoxSolver1", "comboBoxSolver2"]:
|
||||||
solver_name1 = solver_name1.rsplit(" - ", 1)[0]
|
name = self.get_combobox_text(cb)
|
||||||
self._solver1 = next(
|
name = name.rsplit(" - ", 1)[0]
|
||||||
|
self._solvers.append(
|
||||||
|
next(
|
||||||
filter(
|
filter(
|
||||||
lambda s: s.name == solver_name1,
|
lambda s: s.name == name,
|
||||||
self._config.solvers
|
self._config.solvers
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
solver_name2 = self.get_combobox_text("comboBoxSolver2")
|
|
||||||
solver_name2 = solver_name2.rsplit(" - ", 1)[0]
|
|
||||||
self._solver2 = next(
|
|
||||||
filter(
|
|
||||||
lambda s: s.name == solver_name2,
|
|
||||||
self._config.solvers
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
scenario_name1 = self.get_combobox_text("comboBoxScenario1")
|
for cb in ["comboBoxScenario1", "comboBoxScenario2"]:
|
||||||
self._scenario1 = next(
|
name = self.get_combobox_text(cb)
|
||||||
|
self._scenarios.append(
|
||||||
|
next(
|
||||||
filter(
|
filter(
|
||||||
lambda s: s.name == scenario_name1,
|
lambda s: s.name == name,
|
||||||
self._study.scenarios
|
self._study.scenarios.lst
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
scenario_name2 = self.get_combobox_text("comboBoxScenario2")
|
|
||||||
self._scenario2 = next(
|
|
||||||
filter(
|
|
||||||
lambda s: s.name == scenario_name2,
|
|
||||||
self._study.scenarios
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
super(CompareScenariosWindow, self).accept()
|
super(CompareScenariosWindow, self).accept()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue