Skip to content

Commit

Permalink
Add an index column to the update log table
Browse files Browse the repository at this point in the history
  • Loading branch information
frode-aarstad committed May 22, 2024
1 parent 0ec73be commit b63ebb1
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 8 deletions.
28 changes: 27 additions & 1 deletion src/ert/analysis/_es_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,14 @@ def _get_observations_and_responses(
npt.NDArray[np.float_],
npt.NDArray[np.float_],
npt.NDArray[np.str_],
npt.NDArray[np.str_],
]:
"""Fetches and aligns selected observations with their corresponding simulated responses from an ensemble."""
filtered_responses = []
observation_keys = []
observation_values = []
observation_errors = []
indexes = []
observations = ensemble.experiment.observations
for obs in selected_observations:
observation = observations[obs]
Expand All @@ -167,6 +169,26 @@ def _get_observations_and_responses(
) from e

observation_keys.append([obs] * observations_and_responses["observations"].size)

if group == "summary":
indexes.append(
[
np.datetime_as_string(e, unit="s")
for e in observations_and_responses["time"].data
]
)
else:
indexes.append(
[
f"{e[0]}, {e[1]}"
for e in zip(
list(observations_and_responses["report_step"].data)
* len(observations_and_responses["index"].data),
observations_and_responses["index"].data,
)
]
)

observation_values.append(
observations_and_responses["observations"].data.ravel()
)
Expand All @@ -183,6 +205,7 @@ def _get_observations_and_responses(
np.concatenate(observation_values),
np.concatenate(observation_errors),
np.concatenate(observation_keys),
np.concatenate(indexes),
)


Expand Down Expand Up @@ -211,7 +234,7 @@ def _load_observations_and_responses(
List[ObservationAndResponseSnapshot],
],
]:
S, observations, errors, obs_keys = _get_observations_and_responses(
S, observations, errors, obs_keys, indexes = _get_observations_and_responses(
ensemble,
selected_observations,
iens_active_index,
Expand Down Expand Up @@ -250,6 +273,7 @@ def _load_observations_and_responses(
response_std,
response_mean_mask,
response_std_mask,
index,
) in zip(
obs_keys,
observations,
Expand All @@ -259,6 +283,7 @@ def _load_observations_and_responses(
ens_std,
ens_mean_mask,
ens_std_mask,
indexes,
):
update_snapshot.append(
ObservationAndResponseSnapshot(
Expand All @@ -270,6 +295,7 @@ def _load_observations_and_responses(
response_std=response_std,
response_mean_mask=response_mean_mask,
response_std_mask=response_std_mask,
index=index,
)
)

Expand Down
1 change: 1 addition & 0 deletions src/ert/analysis/snapshots.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class ObservationAndResponseSnapshot(BaseModel):
response_std: float
response_mean_mask: bool
response_std_mask: bool
index: str

@property
def status(self) -> ObservationStatus:
Expand Down
16 changes: 9 additions & 7 deletions src/ert/gui/simulation/view/update.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,17 +121,18 @@ def _insert_report_tab(self, smoother_snapshot: SmootherSnapshot) -> None:
grid_layout.addWidget(QLabel(str(obs_info[ObservationStatus.OUTLIER])), 3, 3)

table = QTableWidget()
table.setColumnCount(4)
table.setColumnCount(5)
table.setAlternatingRowColors(True)
table.setRowCount(len(update_step))
table.setHorizontalHeaderLabels(
["", "Observed history", "Simulated data", "Status"]
["", "Index", "Observed history", "Simulated data", "Status"]
)
table.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)
table.horizontalHeader().setStretchLastSection(True)
table.setColumnWidth(0, 200)
table.setColumnWidth(1, 350)
table.setColumnWidth(2, 250)
table.setColumnWidth(1, 200)
table.setColumnWidth(2, 350)
table.setColumnWidth(3, 250)

for nr, step in enumerate(update_step):
obs_std = (
Expand All @@ -140,19 +141,20 @@ def _insert_report_tab(self, smoother_snapshot: SmootherSnapshot) -> None:
else f"{step.obs_std * step.obs_scaling:.3f} ({step.obs_std:<.3f} * {step.obs_scaling:.3f})"
)
table.setItem(nr, 0, QTableWidgetItem(f"{step.obs_name:20}"))
table.setItem(nr, 1, QTableWidgetItem(f"{step.index:20}"))
table.setItem(
nr,
1,
2,
QTableWidgetItem(f"{step.obs_val:>16.3f} +/- {obs_std:<21}"),
)
table.setItem(
nr,
2,
3,
QTableWidgetItem(
f"{step.response_mean:>21.3f} +/- {step.response_std:<16.3f}"
),
)
table.setItem(nr, 3, QTableWidgetItem(f"{step.get_status().capitalize()}"))
table.setItem(nr, 4, QTableWidgetItem(f"{step.get_status().capitalize()}"))

layout.addWidget(table)
layout.addSpacing(10)
Expand Down

0 comments on commit b63ebb1

Please sign in to comment.