-
Notifications
You must be signed in to change notification settings - Fork 109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve handling of missing responses.json #9589
base: main
Are you sure you want to change the base?
Conversation
CodSpeed Performance ReportMerging #9589 will not alter performanceComparing Summary
|
d644aee
to
2fe1d74
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #9589 +/- ##
==========================================
- Coverage 91.85% 91.83% -0.03%
==========================================
Files 433 433
Lines 26768 26879 +111
==========================================
+ Hits 24587 24683 +96
- Misses 2181 2196 +15
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
src/ert/gui/ertnotifier.py
Outdated
@@ -63,3 +64,10 @@ def set_current_ensemble(self, ensemble: Ensemble | None = None) -> None: | |||
@Slot(bool) | |||
def set_is_simulation_running(self, is_running: bool) -> None: | |||
self._is_simulation_running = is_running | |||
|
|||
def refresh(self): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add None
return
and not ensemble.experiment.is_valid() | ||
): | ||
index = self.count() - 1 | ||
model_item = model.item(index) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it works well. Should I use ItemData instead?
return default_flags | ||
item = index.internalPointer() | ||
if isinstance(item, ExperimentModel) and not item._is_valid: | ||
return default_flags & ~Qt.ItemFlag.ItemIsEnabled |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could the be resolved if you create a typed variable and apply the flag change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had to wrap the itemflag in ItemFlags, and then mypy was happy :)
@@ -108,7 +111,7 @@ def __init__( | |||
search_bar.setPlaceholderText("Filter") | |||
proxy_model = _SortingProxyModel(storage_model) | |||
proxy_model.setFilterKeyColumn(-1) # Search all columns. | |||
proxy_model.setSourceModel(storage_model) | |||
proxy_model.setSourceModel(storage_model) # JONAK - CAN THIS BE REMOVED? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This requires a bigger rewrite of the GUI, so it will be in a separate PR.
abb616c
to
d6e1bdd
Compare
@@ -154,6 +154,7 @@ def right_clicked(self) -> None: | |||
def select_central_widget(self) -> None: | |||
actor = self.sender() | |||
if actor: | |||
self.notifier.refresh() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This refreshes storage to make sure the experiment files (responses, index, metadata, and parameters) are still valid.
There is a bug where it crashes if you are already in the manage experiment window, tab out to delete the responses.json file, and then put focus back on the ert window. I am trying to have ert refresh storage when gaining focus, but reimplementing |
The handling of the missing file should in the future be extended to also handle the other experiment files in a similar manner (index.json, metadata.json, and parameters.json) This commit: * Makes storage reload and re-validate when changing between ert modes (manage experient, run experiment, and plot tool) * Disables ensemble with invalid experiments from ensemble_selectors (error is shown as tooltip on hover) * Filters out invalid experiments from dark storage, so plotter won't attempt to plot them. * Reloads and re-validates storage on end of experiment, so ert won't crash if responses.json is deleted mid-run.
4658d21
to
5226e19
Compare
Issue
Resolves #9493
Approach
The commit in this PR:
(Screenshot of new behavior in GUI if applicable)
(This is when the responses.json file is deleted mid run. Prior to this PR, ert would crash with
ValueError: responses.json does not exist
)(This is when responses.json is deleted, and we open the plotter. The ensemble exists, but is not given as a option to plot due to it having an invalid experiment)
(This is when responses.json is deleted and we open manage-experiment. The experiment is shown, but cannot be selected. It is greyed out, and gives error as a tooltip when hovered)
git rebase -i main --exec 'pytest tests/ert/unit_tests -n logical -m "not integration_test"'
)When applicable