Page History
In psana-python we support three types of visualization: the standard python matplotlib, a more interactive form of plotting that can also be used for real-time monitoring called "psmon" , (see https://github.com/lcls-psana/psmon) and the graphical analysis tool "psocake" which is described here.
A simple matplotlib script can be seen in this example. A corresponding version in psmon (which allows much more "interaction" with the plot) is in is in /reg/g/psdm/tutorials/examplePythonexamplePython3/psmonLocal.py:
Code Block |
---|
from psana import * ds = DataSource('exp=xpptut15:run=54:smd') det = Detector('cspad') for nevent,evt in enumerate(ds.events()): img = det.image(evt) y = img.sum(axis=0) break from psmon.plots import Image,XYPlot from psmon import publish publish.local = True publish.plot_opts.aspect = 1 # needed to get images with correct 1:1 aspect ratio plotimg = Image(0,"CsPad",img) publish.send('IMAGE',plotimg) plotxy = XYPlot(0,"Y vs. X",range(len(y)),y) publish.send('XY',plotxy) |
...
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 (see script in /reg/g/psdm/tutorials/examplePythonexamplePython3/psmonRemote.py):
Code Block |
---|
from psana import * from psmon.plots import Image from psmon import publish ds = DataSource('exp=xpptut15:run=54:smd') det = Detector('cspad') 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 |
...