Page History
...
For reference, here we include a 39-line example script that incorporates several of the building blocks (described with the comments after the "#" character). See the topics available by expanding the topics box on the left of this confluence page to learn how to modify this to match your applicationmore about the individual building blocks.
Code Block |
---|
from psana import * ds = DataSource('exp=xpptut15:run=54:idx') # run online/offline det = Detector('cspad', ds.env()) # simple detector interface from mpi4py import MPI # large-scale parallelization rank = MPI.COMM_WORLD.Get_rank() size = MPI.COMM_WORLD.Get_size() img = None for run in ds.runs(): times = run.times() mylength = len(times)//size mytimes= times[rank*mylength:(rank+1)*mylength] for n,t in enumerate(mytimes): evt = run.event(t) # random access if img is None: img = det.image(evt) # many complex run-dependent calibrations else: img += det.image(evt) if n>5: break import numpy as np img_all = np.empty_like(img) MPI.COMM_WORLD.Reduce(img,img_all) if rank==0: from pypsalg.AngularIntegrationM import * # algorithms ai = AngularIntegratorM() ai.setParameters(img_all.shape[0],img_all.shape[1], mask=np.ones_like(img_all)) bins,intensity = ai.getRadialHistogramArrays(img_all) from psmon import publish # real time plotting from psmon.plots import Image publish.local = True img = Image(0,"CsPad",img_all) publish.send('image',img) MPI.Finalize() |
Overview
Content Tools