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

Compare with Current View Page History

« Previous Version 3 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 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)
  • No labels