diff --git a/src/ert/data/_measured_data.py b/src/ert/data/_measured_data.py index d4db19ce067..eb4afdc27c5 100644 --- a/src/ert/data/_measured_data.py +++ b/src/ert/data/_measured_data.py @@ -13,6 +13,8 @@ import numpy as np import pandas as pd +from ert.realization_state import RealizationState + if TYPE_CHECKING: import numpy.typing as npt @@ -103,10 +105,13 @@ def _get_data( group, obs = observations.get_dataset(key) try: response = ensemble.load_response( - group, tuple(range(self._facade.get_ensemble_size())) + group, tuple(ensemble.realization_list(RealizationState.HAS_DATA)) ) - except KeyError: - raise ResponseError(f"No response loaded for observation key: {key}") + _msg = f"No response loaded for observation key: {key}" + if not response: + raise ResponseError(_msg) + except KeyError as e: + raise ResponseError(_msg) from e ds = obs.merge( response, join="left", diff --git a/tests/unit_tests/gui/test_full_manual_update_workflow.py b/tests/unit_tests/gui/test_full_manual_update_workflow.py index 8ed7c7a470f..1b8e9523e38 100644 --- a/tests/unit_tests/gui/test_full_manual_update_workflow.py +++ b/tests/unit_tests/gui/test_full_manual_update_workflow.py @@ -5,6 +5,7 @@ from qtpy.QtCore import Qt, QTimer from qtpy.QtWidgets import QApplication, QComboBox, QMessageBox, QPushButton, QWidget +from ert.data import MeasuredData from ert.gui.ertwidgets.caselist import CaseList from ert.gui.simulation.ensemble_experiment_panel import EnsembleExperimentPanel from ert.gui.simulation.run_dialog import RunDialog @@ -129,6 +130,9 @@ def handle_dialog(): df_prior = facade.load_all_gen_kw_data(storage.get_ensemble_by_name("iter-0")) df_posterior = facade.load_all_gen_kw_data(storage.get_ensemble_by_name("iter-1")) + # Making sure measured data works with failed realizations + MeasuredData(facade, storage.get_ensemble_by_name("iter-0"), ["POLY_OBS"]) + # We expect that ERT's update step lowers the # generalized variance for the parameters. assert (