def image_with_random_peaks(shape=(500, 500)): from psana.pyalgos.generic.NDArrUtils import print_ndarr print('XXX1 shape:', shape) img = ag.random_standard(shape, mu=0, sigma=10) print_ndarr(img, 'XXX ag.random_standard') peaks = ag.add_random_peaks(img, npeaks=50, amean=100, arms=50, wmean=1.5, wrms=0.3) ag.add_ring(img, amp=20, row=500, col=500, rad=300, sigma=50) return img
def keyPressEvent(self, e): #print('keyPressEvent, key=', e.key()) if e.key() == Qt.Key_Escape: print('Close app') self.close() elif e.key() == Qt.Key_R: print('Reset original size') self.reset_original_size() elif e.key() == Qt.Key_N: print('Set new pixel map') s = self.pmi.pixmap().size() img = image_with_random_peaks((s.height(), s.width())) self.set_pixmap_from_arr(img, set_def=False) elif e.key() in (Qt.Key_W, Qt.Key_D): change_def = e.key() == Qt.Key_D print('%s: change scene rect %s' % (self._name, 'set new default' if change_def else '')) v = ag.random_standard((4, ), mu=0, sigma=200, dtype=np.int) rs = QRectF(v[0], v[1], v[2] + 1000, v[3] + 1000) print('Set scene rect: %s' % str(rs)) #self.set_rect_scene(rs, set_def=change_def) img = image_with_random_peaks((int(rs.height()), int(rs.width()))) self.set_pixmap_from_arr(img, set_def=change_def) else: print(self.key_usage())
def keyPressEvent(self, e): #logger.debug('keyPressEvent, key=', e.key()) if e.key() == Qt.Key_Escape: self.close() elif e.key() == Qt.Key_R: print('Reset original size') #self.reset_original_size() self.set_scene_rect_default() elif e.key() == Qt.Key_U: print('Update default rect scene') #self.reset_original_size() self.set_scene_rect_default(rs=QRectF(-10, -10, 30, 30)) elif e.key() in (Qt.Key_W, Qt.Key_D): change_def = e.key() == Qt.Key_D print('%s: change scene rect %s' % (self._name, 'set new default' if change_def else '')) v = ag.random_standard((4, ), mu=0, sigma=20, dtype=np.int) rs = QRectF(v[0], v[1], v[2] + 100, v[3] + 100) print('Set scene rect: %s' % str(rs)) self.set_rect_scene(rs, set_def=change_def) else: print(self.key_usage())
def test_histogram(): import psana.pyalgos.generic.NDArrGenerators as ag from psana.pyalgos.generic.HBins import HBins nbins = 1000 arr = ag.random_standard((nbins,), mu=50, sigma=10, dtype=ag.np.float64) hb = HBins((0,nbins), nbins=nbins) hb.set_bin_data(arr, dtype=ag.np.float64) return hb
def get_test_nda(): """Returns random standard nupmpy array for test purpose. """ import psana.pyalgos.generic.NDArrGenerators as ag return ag.random_standard(shape=(32, 185, 388), mu=20, sigma=5, dtype=np.float)
def test_01(func): """ """ flimg = None for i in range(10): arr = img = ag.random_standard(shape=(256,256), mu=200, sigma=25, dtype=float) #amin, amax = ug.arr_median_limits(arr, nneg=1, npos=3) #if flimg is None: flimg = ug.fleximage(img, arr=arr, nneg=1, npos=3) if flimg is None: flimg = func(img, nneg=3, npos=3) else: flimg.update(img)#, arr=arr) flimg.axtitle(title='image %d' % i) ug.gr.show(mode='NO HOLD') ug.gr.show()
def test_mask_select(tname, mo): mask = None if tname == '9': import psana.pyalgos.generic.NDArrGenerators as ag status = mo.mask_from_status() sh = status.shape # (4, 352, 384) mask = ag.random_standard(shape=sh, mu=0, sigma=0.25, dtype=float) elif tname == '1': mask = mo.mask_from_status() # status_bits=0xffff, gain_range_inds=(0,1,2,3,4), dtype=DTYPE_MASK, **kwa) elif tname == '2': msts = mo.mask_from_status() mask = mo.mask_neighbors(msts, rad=9, ptrn='r') elif tname == '3': mask = mo.mask_edges(width=0, edge_rows=10, edge_cols=5) # dtype=DTYPE_MASK, **kwa) elif tname == '4': mask = mo.mask_center(wcenter=0, center_rows=5, center_cols=3) # dtype=DTYPE_MASK, **kwa) elif tname == '5': mask = mo.mask_calib_or_default() # dtype=DTYPE_MASK) elif tname == '6': mask = test_umask(mo) elif tname == '7': mask = mo.mask_comb(\ status=True, status_bits=0xffff, gain_range_inds=(0,1,2,3,4),\ neighbors=True, rad=5, ptrn='r',\ edges=True, width=0, edge_rows=10, edge_cols=5,\ center=True, wcenter=0, center_rows=5, center_cols=3,\ calib=True,\ umask=test_umask(mo),\ force_update=False) else: mask = None logger.info(info_ndarr(mask, 'mask')) return mask
def test_plot_quad(geometry): """ Tests geometry acess methods of the class GeometryAccess object for CSPAD quad """ ## get index arrays iX, iY = geometry.get_pixel_coord_indexes('QUAD:V1', 1, pix_scale_size_um=None, xy0_off_pix=None, do_tilt=True) # get intensity array arr = ag.cspad_ndarr(n2x1=iX.shape[0]) arr.shape = (8, 185, 388) amp_range = (0, 185 + 388) print('iX, iY, W shape:', iX.shape, iY.shape, arr.shape) img = img_from_pixel_arrays(iX, iY, W=arr) gg.plotImageLarge(img, amp_range=amp_range) gg.move(500, 10) gg.show()
def test_mask_select(tname, det): mask = None if tname == '9': import psana.pyalgos.generic.NDArrGenerators as ag sh = det.raw._shape_as_daq() # (4, 352, 384) mask = ag.random_standard(shape=sh, mu=0, sigma=0.25, dtype=float) elif tname == '1': mask = Mask(det, status=True, neighbors=False, edges=False, center=False, calib=False, umask=None)\ .mask() elif tname == '2': mask = Mask(det,\ status=True, status_bits=0xffff, gain_range_inds=(0,1,2,3,4),\ neighbors=True, rad=5, ptrn='r',\ edges=False, \ center=False,\ calib=False,\ umask=None).mask() elif tname == '3': mask = Mask(det,\ status=False,\ neighbors=False,\ edges=True, width=0, edge_rows=10, edge_cols=5,\ center=False,\ calib=False,\ umask=None).mask() elif tname == '4': mask = Mask(det,\ status=False,\ neighbors=False,\ edges=False,\ center=True, wcenter=0, center_rows=5, center_cols=3,\ calib=False,\ umask=None,\ force_update=False).mask() elif tname == '5': mask = Mask(det,\ status=False,\ neighbors=False,\ edges=False,\ center=False,\ calib=True,\ umask=None).mask() elif tname == '6': mask = Mask(det,\ status=False,\ neighbors=False,\ edges=False,\ center=False,\ calib=False,\ umask=test_umask(det)).mask() elif tname == '7': mask = Mask(det,\ status=True, status_bits=0xffff, gain_range_inds=(0,1,2,3,4),\ neighbors=True, rad=5, ptrn='r',\ edges=True, width=0, edge_rows=10, edge_cols=5,\ center=True, wcenter=0, center_rows=5, center_cols=3,\ calib=True,\ umask=test_umask(det),\ force_update=False).mask() elif tname == '11': mask = Mask(det).mask_from_status( status_bits=0xffff) # dtype=DTYPE_MASK, **kwa) elif tname == '12': o = Mask(det) msts = o.mask_from_status( status_bits=0xffff) # dtype=DTYPE_MASK, **kwa) mask = o.mask_neighbors(msts, rad=9, ptrn='r') elif tname == '13': mask = Mask(det).mask_edges(width=0, edge_rows=10, edge_cols=5) # dtype=DTYPE_MASK, **kwa) elif tname == '14': mask = Mask(det).mask_center(wcenter=0, center_rows=5, center_cols=3) # dtype=DTYPE_MASK, **kwa) elif tname == '15': mask = Mask(det).mask_calib_or_default() # dtype=DTYPE_MASK) elif tname == '16': mask = test_umask(det) elif tname == '17': mask = Mask(det).mask_comb(\ status=True, status_bits=0xffff, gain_range_inds=(0,1,2,3,4),\ neighbors=True, rad=5, ptrn='r',\ edges=True, width=0, edge_rows=10, edge_cols=5,\ center=True, wcenter=0, center_rows=5, center_cols=3,\ calib=True,\ umask=test_umask(det),\ force_update=False) # dtype=DTYPE_MASK) elif tname == '21': mask = det.raw._mask_from_status( status_bits=0xffff) # dtype=DTYPE_MASK, **kwa) elif tname == '22': msts = det.raw._mask_from_status( status_bits=0xffff) # dtype=DTYPE_MASK, **kwa) mask = det.raw._mask_neighbors(msts, rad=9, ptrn='r') elif tname == '23': mask = det.raw._mask_edges(width=0, edge_rows=10, edge_cols=5) # dtype=DTYPE_MASK, **kwa) elif tname == '24': mask = det.raw._mask_center(wcenter=0, center_rows=5, center_cols=3) # dtype=DTYPE_MASK, **kwa) elif tname == '25': mask = det.raw._mask_calib_or_default() # dtype=DTYPE_MASK) elif tname == '26': mask = test_umask(det) elif tname == '27': mask = det.raw._mask_comb(\ status=True, status_bits=0xffff, gain_range_inds=(0,1,2,3,4),\ neighbors=True, rad=5, ptrn='r',\ edges=True, width=0, edge_rows=10, edge_cols=5,\ center=True, wcenter=0, center_rows=5, center_cols=3,\ calib=True,\ umask=test_umask(det),\ force_update=False) # dtype=DTYPE_MASK) logger.info(info_ndarr(mask, '\nmask')) return mask