pyiron/ironflow

Removing structure input breaks node control view

Closed this issue · 0 comments

When you ask for a .data() from a NodePort that has no connections, it attempts to serialize its .get_val(). This chain gets triggered by our control interface for nodes. Most of the time it's no problem, but when the value of the port is an Atoms instance, we run into trouble -- ASE Atoms objects (and thus ours) are not pickle-able, and base64.b64encode(pickle.dumps(object)).decode('ascii') is exactly the serialization that's being attempted here.

Practically speaking, this means that when you hook a structure up as input to the Lammps node (or any other node that takes structure as input, e.g. plot3d), the node controller interface is just a big error message until you reconnect the data.

ryvencore 0.4 handles data and serialization differently. To keep everything on conda-forge we still depend on 0.3. I just made a try/except workaround that solves the surface-level problem, but I'm going to avoid trying to actually get the serialization to work until we rely on the new data paradigm.