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

Compare with Current View Page History

« Previous Version 5 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',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 (see script in This script lives 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',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

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.

  • No labels