Skip to content

Commit 9e2a60a

Browse files
Reset Invalid Cells (#59)
* When the complete PEtab model is checked and passes. Reset all indices * Also resetting indices when overwriting a table * Running model check after upload
1 parent 770729c commit 9e2a60a

4 files changed

Lines changed: 28 additions & 0 deletions

File tree

src/petab_gui/controllers/mother_controller.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,7 @@ def open_yaml_and_load_files(self, yaml_path=None, mode="overwrite"):
548548
"All files opened successfully from the YAML configuration.",
549549
color="green"
550550
)
551+
self.check_model()
551552
# rerun the completers
552553
for controller in self.controllers:
553554
if controller == self.sbml_controller:
@@ -604,6 +605,8 @@ def check_model(self):
604605
# Log the consistency check result
605606
if not failed:
606607
self.logger.log_message("Model is consistent.", color="green")
608+
for model in self.model.pandas_models.values():
609+
model.reset_invalid_cells()
607610
else:
608611
self.logger.log_message("Model is inconsistent.", color="red")
609612
finally:

src/petab_gui/controllers/table_controllers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ def open_table(self, file_path=None, separator=None, mode="overwrite"):
144144
self.append_df(new_df)
145145
elif mode == "overwrite":
146146
self.overwrite_df(new_df)
147+
self.model.reset_invalid_cells()
147148

148149
def overwrite_df(self, new_df: pd.DataFrame):
149150
# TODO: Mother controller connects to overwritten_df signal. Set df

src/petab_gui/models/pandas_table_model.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,11 @@ def check_selection(self):
283283
rows = set([index.row() for index in selected])
284284
return len(rows) > 1 and len(cols) == 1, selected
285285

286+
def reset_invalid_cells(self):
287+
"""Reset the invalid cells."""
288+
self._invalid_cells = set()
289+
self.layoutChanged.emit()
290+
286291

287292

288293
class IndexedPandasTableModel(PandasTableModel):

src/petab_gui/models/petab_model.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,25 @@ def __init__(
6262
sbml_model=self.problem.model,
6363
)
6464

65+
@property
66+
def models(self):
67+
return {
68+
"measurement": self.measurement,
69+
"observable": self.observable,
70+
"parameter": self.parameter,
71+
"condition": self.condition,
72+
"sbml": self.sbml,
73+
}
74+
75+
@property
76+
def pandas_models(self):
77+
return {
78+
"measurement": self.measurement,
79+
"observable": self.observable,
80+
"parameter": self.parameter,
81+
"condition": self.condition,
82+
}
83+
6584
@staticmethod
6685
def from_petab_yaml(
6786
petab_yaml_path: str,

0 commit comments

Comments
 (0)