diff --git a/src/badger/gui/mini/components/env_cbox.py b/src/badger/gui/mini/components/env_cbox.py index 29327a0a..8074ba77 100644 --- a/src/badger/gui/mini/components/env_cbox.py +++ b/src/badger/gui/mini/components/env_cbox.py @@ -27,6 +27,7 @@ QLabel, ) from PyQt5.QtCore import QRegExp, pyqtSignal +import numpy as np from badger.gui.components.obs_table import ObservableTable from badger.settings import init_settings from pydantic_core import ValidationError @@ -659,6 +660,15 @@ def filter_var(self): self.var_table.update_variables(_variables, 1) + def get_nan_vars(self) -> list[str]: + """Return keys of var_table entries with NaN values""" + current_values = self.var_table.current_values + return [ + key + for key, value in current_values.items() + if isinstance(value, (float, np.floating)) and np.isnan(value) + ] + def toggle_obj_show_mode(self, _): self.obj_table.update_show_selected_only(self.check_only_obj.isChecked()) diff --git a/src/badger/gui/mini/pages/routine_page.py b/src/badger/gui/mini/pages/routine_page.py index 4bed3b91..889ae4af 100644 --- a/src/badger/gui/mini/pages/routine_page.py +++ b/src/badger/gui/mini/pages/routine_page.py @@ -1184,6 +1184,19 @@ def select_env(self, i: int): # Update the docs self.window_env_docs.update_docs(env.name, "environment") + self.check_for_nan_vars() + + def check_for_nan_vars(self) -> None: + """Show a warning popup to notify user if any var_table values are NaN""" + nan_value_keys = self.env_box.get_nan_vars() + if nan_value_keys: + nan_vars = "\n".join(f" - {key}" for key in nan_value_keys) + QMessageBox.warning( + self, + "Variables with invalid values", + f"Failed to get values for the following variables:\n{nan_vars}", + ) + def get_init_table_header(self): table = self.env_box.init_table header_list = []