In psana-python we support two types of visualization: the standard python matplotlib, and a more interactive form of plotting that can also be used for real-time monitoring called "psmon".
A simple matplotlib script can be seen in this example. A corresponding version in psmon (which allows much more "interaction" with the plot) is here:
from psana import * ds = DataSource('exp=xpptut15:run=54:smd') det = Detector('cspad',ds.env()) for nevent,evt in enumerate(ds.events()): img = det.image(evt) break from psmon.plots import Image from psmon import publish # to display the plot from within this script publish.local = True plotimg = Image(0,"CsPad",img) publish.send('IMAGE',plotimg)
psmon is also able to send plots over the network, which is useful for real-time monitoring. To do this, do not set publish.local=True:
from psana import * from psmon.plots import Image from psmon import publish ds = DataSource('exp=xpptut15:run=54:smd') det = Detector('cspad',ds.env()) for nevent,evt in enumerate(ds.events()): img = det.image(evt) plotimg = Image(0,"CsPad",img) publish.send('IMAGE',plotimg) raw_input('Hit <CR> for next event') if nevent>=2: break
This plot can then be viewed (by multiple people, if desired) using:
psplot -s <hostname> IMAGE
The "-s <hostname>" argument does not need to be included if "psplot" is run on the same machine as the script that is providing the plot.