Skip to content

Commit

Permalink
Mark ES_MDA as recommended algorithm in GUI
Browse files Browse the repository at this point in the history
  • Loading branch information
berland committed Jan 21, 2025
1 parent bc8a611 commit a010628
Show file tree
Hide file tree
Showing 9 changed files with 41 additions and 22 deletions.
8 changes: 5 additions & 3 deletions src/ert/gui/simulation/experiment_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ def addExperimentConfigPanel(
experiment_type = panel.get_experiment_type()
self._experiment_widgets[experiment_type] = panel
self._experiment_type_combo.addDescriptionItem(
experiment_type.name(),
experiment_type.display_name(),
experiment_type.description(),
experiment_type.group(),
)
Expand Down Expand Up @@ -220,9 +220,11 @@ def getActions() -> list[QAction]:
return []

def get_current_experiment_type(self) -> Any:
experiment_type_name = self._experiment_type_combo.currentText()
experiment_type_display_name = self._experiment_type_combo.currentText()
return next(
w for w in self._experiment_widgets if w.name() == experiment_type_name
w
for w in self._experiment_widgets
if w.display_name() == experiment_type_display_name
)

def get_experiment_arguments(self) -> Any:
Expand Down
4 changes: 4 additions & 0 deletions src/ert/run_models/base_run_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,10 @@ def log_at_startup(self) -> None:
@abstractmethod
def name(cls) -> str: ...

@classmethod
def display_name(cls) -> str:
return cls.name()

@classmethod
@abstractmethod
def description(cls) -> str: ...
Expand Down
2 changes: 1 addition & 1 deletion src/ert/run_models/iterated_ensemble_smoother.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,4 +224,4 @@ def name(cls) -> str:

@classmethod
def description(cls) -> str:
return "Sample parameters → [evaluate → update] several iterations"
return "Sample parameters → [evaluate → update] several iterations.\nDeprecated algorithm. Prefer ES-MDA."
6 changes: 5 additions & 1 deletion src/ert/run_models/multiple_data_assimilation.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,9 +192,13 @@ def parse_weights(weights: str) -> list[float]:
def name(cls) -> str:
return "Multiple data assimilation"

@classmethod
def display_name(cls) -> str:
return cls.name() + " - Recommended algorithm"

@classmethod
def description(cls) -> str:
return "[Sample|restart] → [evaluate → update] for each weight"
return "[Sample|restart] → [evaluate → update] for each weight."

@classmethod
def group(cls) -> str | None:
Expand Down
4 changes: 2 additions & 2 deletions tests/ert/ui_tests/gui/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ def func(experiment_mode, gui, click_done=True):
assert isinstance(experiment_panel, ExperimentPanel)
simulation_mode_combo = experiment_panel.findChild(QComboBox)
assert isinstance(simulation_mode_combo, QComboBox)
simulation_mode_combo.setCurrentText(experiment_mode.name())
simulation_mode_combo.setCurrentText(experiment_mode.display_name())
simulation_settings = experiment_panel._experiment_widgets[
experiment_panel.get_current_experiment_type()
]
Expand All @@ -255,7 +255,7 @@ def handle_dialog():
lambda: handle_run_path_dialog(gui, qtbot, delete_run_path=False),
)

if not experiment_mode.name() in {
if experiment_mode.name() not in {
"Ensemble experiment",
"Evaluate ensemble",
}:
Expand Down
2 changes: 1 addition & 1 deletion tests/ert/ui_tests/gui/test_csv_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def test_csv_export(esmda_has_run, qtbot, ensemble_select):
def run_experiment_via_gui(gui, qtbot):
experiment_panel = get_child(gui, ExperimentPanel)
simulation_mode_combo = get_child(experiment_panel, QComboBox)
simulation_mode_combo.setCurrentText(EnsembleExperiment.name())
simulation_mode_combo.setCurrentText(EnsembleExperiment.display_name())
ensemble_experiment_panel = get_child(experiment_panel, EnsembleExperimentPanel)
ensemble_experiment_panel._ensemble_name_field.setText("iter-0")

Expand Down
15 changes: 9 additions & 6 deletions tests/ert/ui_tests/gui/test_main_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ def test_that_es_mda_is_disabled_when_weights_are_invalid(qtbot):
combo_box = get_child(gui, QComboBox, name="experiment_type")
combo_box.setCurrentIndex(3)

assert combo_box.currentText() == "Multiple data assimilation"
assert combo_box.currentText() == MultipleDataAssimilation.display_name()

es_mda_panel = get_child(gui, QWidget, name="ES_MDA_panel")
assert es_mda_panel
Expand Down Expand Up @@ -702,7 +702,7 @@ def test_that_es_mda_restart_run_box_is_disabled_when_there_are_no_cases(qtbot):
assert combo_box.count() == 7
combo_box.setCurrentIndex(3)

assert combo_box.currentText() == "Multiple data assimilation"
assert combo_box.currentText() == MultipleDataAssimilation.display_name()

es_mda_panel = get_child(gui, QWidget, name="ES_MDA_panel")
assert es_mda_panel
Expand Down Expand Up @@ -752,10 +752,13 @@ def test_validation_of_experiment_names_in_run_models(
run_experiment = get_child(experiment_panel, QWidget, name="run_experiment")

experiment_types_to_test = (
(EnsembleExperiment.name(), "Ensemble_experiment_panel"),
(EnsembleSmoother.name(), "ensemble_smoother_panel"),
(MultipleDataAssimilation.name(), "ES_MDA_panel"),
(IteratedEnsembleSmoother.name(), "iterated_ensemble_smoother_panel"),
(EnsembleExperiment.display_name(), "Ensemble_experiment_panel"),
(EnsembleSmoother.display_name(), "ensemble_smoother_panel"),
(
MultipleDataAssimilation.display_name(),
"ES_MDA_panel",
),
(IteratedEnsembleSmoother.display_name(), "iterated_ensemble_smoother_panel"),
)
for exp_type, panel_name in experiment_types_to_test:
experiment_types.setCurrentText(exp_type)
Expand Down
14 changes: 10 additions & 4 deletions tests/ert/ui_tests/gui/test_missing_parameters_to_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@
from qtpy.QtWidgets import QComboBox

from ert.gui.simulation.experiment_panel import ExperimentPanel
from ert.run_models import (
EnsembleExperiment,
EnsembleSmoother,
IteratedEnsembleSmoother,
MultipleDataAssimilation,
)
from tests.ert.ui_tests.gui.conftest import get_child, open_gui_with_config


Expand All @@ -20,19 +26,19 @@ def test_no_updateable_parameters(qtbot):
for gui in open_gui_with_config("poly.ert"):
experiment_panel = get_child(gui, ExperimentPanel)
simulation_mode_combo = get_child(experiment_panel, QComboBox)
idx = simulation_mode_combo.findText("Ensemble smoother")
idx = simulation_mode_combo.findText(EnsembleSmoother.display_name())
assert not (
simulation_mode_combo.model().item(idx).flags() & Qt.ItemFlag.ItemIsEnabled
)
idx = simulation_mode_combo.findText("Multiple data assimilation")
idx = simulation_mode_combo.findText(MultipleDataAssimilation.display_name())
assert not (
simulation_mode_combo.model().item(idx).flags() & Qt.ItemFlag.ItemIsEnabled
)
idx = simulation_mode_combo.findText("Iterated ensemble smoother")
idx = simulation_mode_combo.findText(IteratedEnsembleSmoother.display_name())
assert not (
simulation_mode_combo.model().item(idx).flags() & Qt.ItemFlag.ItemIsEnabled
)
idx = simulation_mode_combo.findText("Ensemble experiment")
idx = simulation_mode_combo.findText(EnsembleExperiment.display_name())
assert (
simulation_mode_combo.model().item(idx).flags() & Qt.ItemFlag.ItemIsEnabled
)
8 changes: 4 additions & 4 deletions tests/ert/ui_tests/gui/test_restart_esmda.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def test_restart_esmda(ensemble_experiment_has_run_no_failure, qtbot):

experiment_panel = get_child(gui, ExperimentPanel)
simulation_mode_combo = get_child(experiment_panel, QComboBox)
simulation_mode_combo.setCurrentText(MultipleDataAssimilation.name())
simulation_mode_combo.setCurrentText(MultipleDataAssimilation.display_name())

es_mda_panel = gui.findChild(QWidget, name="ES_MDA_panel")
assert es_mda_panel
Expand Down Expand Up @@ -49,7 +49,7 @@ def test_active_realizations_esmda(opened_main_window_poly, qtbot):

experiment_panel = get_child(gui, ExperimentPanel)
simulation_mode_combo = get_child(experiment_panel, QComboBox)
simulation_mode_combo.setCurrentText(SingleTestRun.name())
simulation_mode_combo.setCurrentText(SingleTestRun.display_name())

single_test_run_panel = gui.findChild(QWidget, name="Single_test_run_panel")
assert single_test_run_panel
Expand All @@ -63,7 +63,7 @@ def test_active_realizations_esmda(opened_main_window_poly, qtbot):
== "Total progress 100% — Experiment completed."
)

simulation_mode_combo.setCurrentText(MultipleDataAssimilation.name())
simulation_mode_combo.setCurrentText(MultipleDataAssimilation.display_name())
es_mda_panel = gui.findChild(QWidget, name="ES_MDA_panel")
assert es_mda_panel
active_reals = gui.findChild(StringBox, "active_realizations_box")
Expand All @@ -88,7 +88,7 @@ def test_custom_weights_stored_and_retrieved_from_metadata_esmda(

experiment_panel = get_child(gui, ExperimentPanel)
simulation_mode_combo = get_child(experiment_panel, QComboBox)
simulation_mode_combo.setCurrentText(MultipleDataAssimilation.name())
simulation_mode_combo.setCurrentText(MultipleDataAssimilation.display_name())

es_mda_panel = gui.findChild(QWidget, name="ES_MDA_panel")
assert es_mda_panel
Expand Down

0 comments on commit a010628

Please sign in to comment.