idaes-pse icon indicating copy to clipboard operation
idaes-pse copied to clipboard

Flowsheet diff crashes when unit is removed

Open dangunter opened this issue 3 years ago • 0 comments

When running the visualizer tutorial, if the saved file has F102 but the model does not (which happens when running again from the beginning), the flowsheet diff dumps the following stack trace:

------------------
model.fs.visualize("Hydrodealkylation")
------------------

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_38176\222046181.py in <cell line: 1>()
----> 1 model.fs.visualize("Hydrodealkylation")

c:\users\dangunter\src\idaes\dangunter\idaes-pse\idaes\core\base\flowsheet_model.py in visualize(self, model_name, **kwargs)
    238             None
    239         """
--> 240         visualize(self, model_name, **kwargs)
    241
    242     @deprecated(

c:\users\dangunter\src\idaes\dangunter\idaes-pse\idaes\core\ui\fsvis\fsvis.py in visualize(flowsheet, name, save, load_from_saved, save_dir, save_time_interval, overwrite, browser, port, log_level, quiet, loop_forever)
    166     # Add our flowsheet to it
    167     try:
--> 168         new_name = web_server.add_flowsheet(name, flowsheet, datastore)
    169     except (errors.ProcessingError, errors.DatastoreError) as err:
    170         raise errors.VisualizerError(f"Cannot add flowsheet: {err}")

c:\users\dangunter\src\idaes\dangunter\idaes-pse\idaes\core\ui\fsvis\model_server.py in add_flowsheet(self, id_, flowsheet, store)
    121         # First try to update, so as not to overwrite saved value
    122         try:
--> 123             self.update_flowsheet(id_)
    124         except errors.FlowsheetNotFoundInDatastore:
    125             _log.debug(f"No existing flowsheet found in {store}: saving new value")

c:\users\dangunter\src\idaes\dangunter\idaes-pse\idaes\core\ui\fsvis\model_server.py in update_flowsheet(self, id_)
    194             raise errors.ProcessingError(f"Cannot serialize flowsheet: {err}")
    195         # Compare saved and current value
--> 196         diff = FlowsheetDiff(saved, obj_dict)
    197         _log.debug(f"diff: {diff}")
    198         if not diff:

c:\users\dangunter\src\idaes\dangunter\idaes-pse\idaes\core\ui\flowsheet.py in __init__(self, old_flowsheet, new_flowsheet, validate)
    867         self._old, self._new = old_flowsheet, new_flowsheet
    868         self._len = None
--> 869         self._diff = self._compute_diff()
    870         self._layout = self._compute_layout() if self._diff else None
    871

c:\users\dangunter\src\idaes\dangunter\idaes-pse\idaes\core\ui\flowsheet.py in _compute_diff(self)
    927                         dest_unit_model = old_data[key]["dest"]
    928                         diff["change"]["unit_models"][src_unit_model] = copy.deepcopy(
--> 929                             new_model["unit_models"][src_unit_model]
    930                         )
    931                         diff["change"]["unit_models"][dest_unit_model] = copy.deepcopy(

KeyError: 'F102'
KeyError: 'F102'

dangunter avatar Jul 15 '22 12:07 dangunter