You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While current SasView is quite nice and does some stuff quite ok, every increase in functionality increases the complexity of the underlying code and introduces a host of new issues. Batch fit, new fitting engines, composite models, structure factors, new file loaders, etc.
So taking hints from some other pieces of software out there (e.g. BornAgain and others), I've mocked up a possible node-red-style interface that could be kept modular while allowing easy extension. This would force modularity of the code, breaking down the maintenance into much more bite-size chunks. It does look a little LabView-y, but could be a solution for a future interface.
I'm generally a fan of these interfaces, but they do have some drawbacks.
In things like blender, where there are very few different types of data being passed around it works well because most things can be plugged into most other things. If the data is specialised there can be a lot of complexity around deciding what can be plugged into what.
They also work best when the data flow can be represented as a directly acyclic graph, once there loops, there's a lot of difficulties surrounding evaluation order, and the potential for locking up because of "feedback".
Sometimes, enforced modularity can get in the way of things. If you get the modules right, and nothing ever changes, it's good, but when things are in flux, a high degree of modularity turn small problems into giant refactoring projects.
Not that I think its a bad idea. Just highlighting some things that need to be considered before committing to this kind of change.
While current SasView is quite nice and does some stuff quite ok, every increase in functionality increases the complexity of the underlying code and introduces a host of new issues. Batch fit, new fitting engines, composite models, structure factors, new file loaders, etc.
So taking hints from some other pieces of software out there (e.g. BornAgain and others), I've mocked up a possible node-red-style interface that could be kept modular while allowing easy extension. This would force modularity of the code, breaking down the maintenance into much more bite-size chunks. It does look a little LabView-y, but could be a solution for a future interface.
Opinions?
Here's a framework that might help realize this: https://github.com/Bycelium/PyFlow
This one looks like a closer match, but hasn't been touched in two years: https://github.com/wonderworks-software/PyFlow
This looks like a nice and current option: https://ryven.org
The text was updated successfully, but these errors were encountered: