You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

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 in /reg/g/psdm/tutorials/examplePython/psmonLocal.py:

from psana import *
ds = DataSource('exp=xpptut15:run=54:smd')
det = Detector('cspad')
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 (see script in /reg/g/psdm/tutorials/examplePython/psmonRemote.py):

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

Then 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.

There are more sophisticated psmon examples demonstrating features like XYPlots, Multiplots etc. in /reg/g/psdm/sw/releases/ana-current/psmon/examples/.

  • No labels