pcdshub / lightpath

LCLS Lightpath Module
https://pcdshub.github.io/lightpath
Other
4 stars 9 forks source link

GUI: option to display a facility graph #166

Open tangkong opened 1 year ago

tangkong commented 1 year ago

Current Behavior

Currently the only view of the facility is through a singular BeamPath, which is workable if you're not considering other beamlines

Possible Solution

A button that displays an image of the facility, based off the LightController.graph. Could condense nodes between branching nodes, with an option to expand a branch by clicking on it. It would be a good place to also show the beam path through the facility from beginning to end.

Context

Currently there is no way to see the facility layout within lightpath itself. We have been referring users to an facility map, which may be inconvenient. With different endstations possibly changing their respective happi databases and configurations, it would be good to give people the ability to check what their changes have done.

Throughout development / testing, I've used pygraphviz to create some facility graphs which were honestly... ugly.

Screen Shot 2022-07-27 at 3 50 03 PM

pygraphviz tries to keep each depth at the same level, which does not at all work for the facility graph.

This was something that was spitballed early on during the lightpath rework, but tabled.

Your Environment

lightpath master

klauer commented 1 year ago

I think a manual layout will be not too difficult though and provide a better output in the end. It'll be extra work, of course.

(Though I do wonder, for the graphviz stuff, did you use dot and specify L-to-R layouts (via rankdir)?)

tangkong commented 1 year ago

I didn't try a L-to-R layout, but that image did use dot (which worked the best of all the other options I tried).

I briefly looked at rolling my own layout, but after seeing things like spring constants for node spacing, I decided to do more impactful lightpath work

ZLLentz commented 1 year ago

it might be possible to use a simple grid layout with precisely-placed widgets to draw a fully-functional branching lightpath

klauer commented 1 year ago

Grid layout could be quick and might look pretty good - I like the idea