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 IMAGE (on the "local" machine) psplot -s <hostname> (on a "remote" machine, where <hostname> is the name of the host where the above script is running)
Overview
Content Tools