def test_cspad2x2(): """ Test cspad2x2 geometry table """ ## MecTargetChamber.0:Cspad2x2.1 basedir = '/reg/g/psdm/detector/alignment/cspad2x2/calib-cspad2x2-01-2013-02-13/' fname_geometry = basedir + 'calib/CsPad2x2::CalibV1/MecTargetChamber.0:Cspad2x2.1/geometry/0-end.data' fname_data = basedir + 'cspad2x2.1-ndarr-ave-meca6113-r0028.dat' ## MecTargetChamber.0:Cspad2x2.2 #basedir = '/reg/g/psdm/detector/alignment/cspad2x2/calib-cspad2x2-02-2013-02-13/' #fname_geometry = basedir + 'calib/CsPad2x2::CalibV1/MecTargetChamber.0:Cspad2x2.2/geometry/0-end.data' #fname_data = basedir + 'cspad2x2.2-ndarr-ave-meca6113-r0028.dat' geometry = GeometryAccess(fname_geometry, 0o377) amp_range = (0, 15000) # get pixel coordinate index arrays: #xyc = xc, yc = 1000, 1000 #iX, iY = geometry.get_pixel_coord_indexes(xy0_off_pix=xyc) iX, iY = geometry.get_pixel_coord_indexes(do_tilt=True) root, ext = os.path.splitext(fname_data) arr = np.load(fname_data) if ext == '.npy' else np.loadtxt(fname_data, dtype=np.float) arr.shape = (185, 388, 2) print('iX, iY, W shape:', iX.shape, iY.shape, arr.shape) img = img_from_pixel_arrays(iX, iY, W=arr) axim = gg.plotImageLarge(img, amp_range=amp_range) gg.move(500, 10) gg.show()
def test_epix100a(): """ Test test_epix100a geometry table """ basedir = '/reg/g/psdm/detector/alignment/cspad/calib-cxi-ds1-2014-05-15/' fname_geometry = basedir + 'calib/CsPad::CalibV1/CxiDs1.0:Cspad.0/geometry/2-end.data' fname_data = basedir + 'cspad-arr-cxid2714-r0023-lysozyme-rings.txt' #basedir = '/reg/g/psdm/detector/alignment/epix100/calib-xpp-Epix100a-2014-11-05/' #fname_geometry = basedir + 'calib/Epix100a::CalibV1/NoDetector.0:Epix100a.0/geometry/0-end.data' #fname_data = basedir + 'epix100a-ndarr-ave-clb-xppi0614-r0073.dat' geometry = GeometryAccess(fname_geometry, 0o177777) amp_range = (-4, 10) iX, iY = geometry.get_pixel_coord_indexes() root, ext = os.path.splitext(fname_data) arr = np.load(fname_data) if ext == '.npy' else np.loadtxt(fname_data, dtype=np.float) print('iX, iY, W shape:', iX.shape, iY.shape, arr.shape) img = img_from_pixel_arrays(iX, iY, W=arr) axim = gg.plotImageLarge(img, amp_range=amp_range) gg.move(500, 10) gg.show()
def __init__(self, img, **kwa): """ """ flexbase.__init__(self, **kwa) #arr = kwa.setdefault('arr', img) arr = kwa.get('arr', None) if arr is None: arr = img amin, amax = self._intensity_limits(arr, **kwa) self.hcolor = kwa.get('color', 'lightgreen') self.hbins = kwa.get('bins', 100) kwa.setdefault('w_in', 14) kwa.setdefault('h_in', 8) _fig = gr_figure(**kwa) kwfica = {} fymin, fymax = 0.04, 0.93 self.fig, self.axim, self.axcb, self.axhi = gr.fig_img_cbar_hist_axes(\ fig=_fig,\ win_axim = kwa.get('win_axim', (0.04, fymin, 0.71, fymax)),\ win_axhi = kwa.get('win_axhi', (0.76, fymin, 0.15, fymax)),\ win_axcb = kwa.get('win_axcb', (0.915, fymin, 0.01, fymax)), **kwfica) kwa.setdefault('amin', amin) kwa.setdefault('amax', amax) self.imsh, self.cbar = gr_imshow_cbar(self.fig, self.axim, self.axcb, img, **kwa) self.update_his(arr, **kwa) gr.draw_fig(self.fig)
def __init__(self, arr, **kwa): """ """ flexbase.__init__(self, **kwa) w_in = kwa.pop('w_in', 6) h_in = kwa.pop('h_in', 5) kwfig = {} _fig=gr.plt.figure(num = kwa.get('num',None),\ figsize = kwa.get('figsize',(w_in, h_in)),\ dpi = kwa.get('dpi',80),\ facecolor = kwa.get('facecolor','w'),\ edgecolor = kwa.get('edgecolor','w'),\ frameon = kwa.get('frameon',True),\ clear = kwa.get('clear',False),\ **kwfig) kwfia = {} self.fig, self.axhi = gr.fig_img_axes(\ fig=_fig,\ win_axim = kwa.get('win_axhi', (0.10, 0.05, 0.87, 0.90)),\ **kwfia) self.update(arr, **kwa) gr.draw_fig(self.fig)
def test_cspad2x2(): """ Test cspad2x2 geometry table. """ basedir = '/reg/g/psdm/detector/alignment/cspad2x2/calib-cspad2x2-01-2013-02-13/' fname_geometry = basedir + 'calib/CsPad2x2::CalibV1/MecTargetChamber.0:Cspad2x2.1/geometry/0-end.data' fname_data = basedir + 'cspad2x2.1-ndarr-ave-meca6113-r0028.dat' geometry = GeometryAccess(fname_geometry, pbits=0o377, use_wide_pix_center=False) amp_range = (0,15000) # get pixel coordinate index arrays: #xyc = xc, yc = 1000, 1000 #rows, cols = geometry.get_pixel_coord_indexes(xy0_off_pix=xyc) rows, cols = geometry.get_pixel_coord_indexes(do_tilt=True) root, ext = os.path.splitext(fname_data) arr = np.load(fname_data) if ext == '.npy' else np.loadtxt(fname_data, dtype=np.float) arr.shape= (185,388,2) logger.info('shapes rows: %s cols: %s weight: %s' % (str(rows.shape), str(cols.shape), str(arr.shape))) img = img_from_pixel_arrays(rows,cols,W=arr) axim = gg.plotImageLarge(img,amp_range=amp_range) gg.move(500,10) gg.show()
def test_cspad_xy_at_z(): """ Test cspad geometry table. """ ## 'CxiDs1.0:Cspad.0)' or 'DscCsPad' basedir = '/reg/g/psdm/detector/alignment/cspad/calib-cxi-camera1-2014-09-24/' fname_geometry = basedir + '2016-06-03-geometry-cxi06216-r25-camera1-z175mm.txt' fname_data = basedir + '2016-06-03-chun-cxi06216-0025-DscCsPad-max.txt' geometry = GeometryAccess(fname_geometry, pbits=0o377) # get pixel coordinate index arrays: xyc = xc, yc = 1000, 1000 #rows, cols = geometry.get_pixel_coord_indexes(xy0_off_pix=xyc) #rows, cols = geometry.get_pixel_coord_indexes(do_tilt=True) #rows, cols = geometry.get_pixel_xy_inds_at_z(zplane=None, xy0_off_pix=xyc) rows, cols = geometry.get_pixel_xy_inds_at_z(zplane=150000) root, ext = os.path.splitext(fname_data) arr = np.load(fname_data) if ext == '.npy' else np.loadtxt(fname_data, dtype=np.float) #logger.info('arr.shape=', arr.shape arr.shape= (32,185,388) #ave, rms = arr.mean(), arr.std() #amp_range = (ave-rms, ave+3*rms) amp_range = (0, 1000) logger.info('amp_range:' + str(amp_range)) logger.info('shapes rows: %s cols: %s weight: %s' % (str(rows.shape), str(cols.shape), str(arr.shape))) img = img_from_pixel_arrays(rows,cols,W=arr) axim = gg.plotImageLarge(img,amp_range=amp_range) gg.move(500,10) gg.show()
def test_2x2_img_easy(): w = SegGeometryEpixHR2x2V1(use_wide_pix_center=False) X, Y = w.get_seg_xy_maps_pix_with_offset() iX, iY = (X + 0.25).astype(int), (Y + 0.25).astype(int) img = gg.getImageFromIndexArrays(iY, iX, iX + 2 * iY) gg.plotImageLarge(img, amp_range=(0, 750), figsize=(10, 8)) gg.show()
def test_2x1_img() : from time import time t0_sec = time() w = SegGeometryCspad2x1V1(use_wide_pix_center=False) #w = SegGeometryCspad2x1V1(use_wide_pix_center=True) print('Consumed time for coordinate arrays (sec) =', time()-t0_sec) X,Y = w.get_seg_xy_maps_pix() w.print_seg_info(0o377) #print('X(pix) :\n', X) print('X.shape =', X.shape) xmin, ymin, zmin = w.get_xyz_min_um() xmax, ymax, zmax = w.get_xyz_max_um() xmin /= w.pixel_scale_size() xmax /= w.pixel_scale_size() ymin /= w.pixel_scale_size() ymax /= w.pixel_scale_size() xsize = xmax - xmin + 1 ysize = ymax - ymin + 1 print('xsize =', xsize) # 391.0 print('ysize =', ysize) # 185.0 H, Xedges, Yedges = np.histogram2d(X.flatten(), Y.flatten(), bins=[xsize,ysize], range=[[xmin, xmax], [ymin, ymax]], normed=False, weights=X.flatten()+Y.flatten()) print('Xedges:', Xedges) print('Yedges:', Yedges) print('H.shape:', H.shape) gg.plotImageLarge(H, amp_range=(-250, 250), figsize=(8,10)) # range=(-1, 2), gg.show()
def test_2x1_img(): w = SegGeometryCspad2x1V1(use_wide_pix_center=False) X, Y = w.get_seg_xy_maps_pix() w.print_seg_info(0o377) xmin, ymin, zmin = w.get_xyz_min_um() xmax, ymax, zmax = w.get_xyz_max_um() xmin /= w.pixel_scale_size() xmax /= w.pixel_scale_size() ymin /= w.pixel_scale_size() ymax /= w.pixel_scale_size() xsize = int(xmax - xmin + 1) ysize = int(ymax - ymin + 1) H, Xedges, Yedges = np.histogram2d(X.flatten(), Y.flatten(), bins=[xsize,ysize],\ range=[[xmin, xmax], [ymin, ymax]], normed=False, weights=X.flatten()+Y.flatten()) s = 'test_img'\ + '\n X.shape:' + str(X.shape)\ + '\n xsize = %.1f' % xsize\ + '\n ysize = %.1f' % ysize\ + '\n Xedges:' + str(Xedges)\ + '\n Yedges:' + str(Yedges)\ + '\n H.shape:' + str(H.shape) logger.info(s) gg.plotImageLarge(H, amp_range=(-250, 250), figsize=(7, 10)) # range=(-1, 2), gg.show()
def __init__(self, img, **kwa): flexbase.__init__(self, **kwa) arr = kwa.get('arr', None) if arr is None: arr = img #kwa['arr'] = arr = img amin, amax = self._intensity_limits(arr, **kwa) aspratio = float(img.shape[0]) / float(img.shape[1]) # heigh/width kwa.setdefault('w_in', 9) kwa.setdefault('h_in', 8) _fig = gr_figure(**kwa) kwfica = {} fymin, fymax = 0.04, 0.93 self.fig, self.axim, self.axcb = gr.fig_img_cbar_axes(\ fig=_fig,\ win_axim = kwa.get('win_axim', (0.05, fymin, 0.86, fymax)),\ win_axcb = kwa.get('win_axcb', (0.915, fymin, 0.01, fymax)), **kwfica) kwa.setdefault('amin', amin) kwa.setdefault('amax', amax) self.imsh, self.cbar = gr_imshow_cbar(self.fig, self.axim, self.axcb, img, **kwa) gr.draw_fig(self.fig)
def test_epix100a(): """ Test test_epix100a geometry table. """ basedir = '/reg/g/psdm/detector/alignment/cspad/calib-cxi-ds1-2014-05-15/' fname_geometry = basedir + 'calib/CsPad::CalibV1/CxiDs1.0:Cspad.0/geometry/2-end.data' fname_data = basedir + 'cspad-arr-cxid2714-r0023-lysozyme-rings.txt' #basedir = '/reg/neh/home1/dubrovin/LCLS/GeometryCalib/calib-xpp-Epix100a-2014-11-05/' #fname_geometry = basedir + 'calib/Epix100a::CalibV1/NoDetector.0:Epix100a.0/geometry/0-end.data' #fname_data = basedir + 'epix100a-ndarr-ave-clb-xppi0614-r0073.dat' geometry = GeometryAccess(fname_geometry, pbits=0o377) amp_range = (-4,10) rows, cols = geometry.get_pixel_coord_indexes() root, ext = os.path.splitext(fname_data) arr = np.load(fname_data) if ext == '.npy' else np.loadtxt(fname_data, dtype=np.float) logger.info('shapes rows: %s cols: %s weight: %s' % (str(rows.shape), str(cols.shape), str(arr.shape))) img = img_from_pixel_arrays(rows,cols,W=arr) axim = gg.plotImageLarge(img,amp_range=amp_range) gg.move(500,10) gg.show()
def update_his(self, nda, **kwa): """use kwa: arr=arr, nneg=1, npos=3 OR arr, fraclo=0.05, frachi=0.95 """ amp_range = amin, amax = self._intensity_limits(nda, kwa) self.axhi.cla() self.axhi.invert_xaxis() # anvert x-axis direction self.axhi.set_ylim(amp_range) self.axhi.set_yticklabels([]) # removes axes labels, not ticks self.axhi.tick_params(axis='y', direction='in') self.axhi.set_ylim(amp_range) #self.axhi.set_ylabel('V') #self.axhi.get_yaxis().set_visible(False) # hides axes labels and ticks kwh={'bins' : kwa.get('bins',self.hbins),\ 'range' : kwa.get('range',amp_range),\ 'weights' : kwa.get('weights',None),\ 'color' : kwa.get('color', self.hcolor),\ 'log' : kwa.get('log',False),\ 'bottom' : kwa.get('bottom', 0),\ 'align' : kwa.get('align', 'mid'),\ 'histtype' : kwa.get('histtype',u'bar'),\ 'label' : kwa.get('label', ''),\ 'orientation': kwa.get('orientation',u'horizontal'),\ } #self.his = gr.hist(self.axhi, nda, **kwh) self.his = pp_hist(self.axhi, nda.ravel(), **kwh) wei, bins, patches = self.his gr.add_stat_text(self.axhi, wei, bins)
def test_2x2_img_easy() : pc2x2 = SegGeometryEpix100V1(use_wide_pix_center=False) X,Y = pc2x2.get_seg_xy_maps_pix_with_offset() iX, iY = (X+0.25).astype(int), (Y+0.25).astype(int) img = gg.getImageFromIndexArrays(iX,iY,iX+iY) gg.plotImageLarge(img, amp_range=(0, 1500), figsize=(8,10)) gg.show()
def test_jungfrau_img_easy(): o = SegGeometryJungfrauV1() X, Y = o.get_seg_xy_maps_pix_with_offset() iX, iY = (X + 0.25).astype(int), (Y + 0.25).astype(int) img = gg.getImageFromIndexArrays(iY, iX, iX + iY) gg.plotImageLarge(img, amp_range=(0, 1500), figsize=(14, 6)) gg.show()
def test_mask(width=0, edge_rows=5, edge_cols=5): o = segment_one_v2 X, Y = o.get_seg_xy_maps_pix_with_offset() mask = o.pixel_mask_array(width=width, edge_rows=edge_rows, edge_cols=edge_cols) iX, iY = (X+0.25).astype(int), (Y+0.25).astype(int) img = gg.getImageFromIndexArrays(iY,iX,mask) gg.plotImageLarge(img, amp_range=(-1, 2), figsize=FIGSIZE_INCH) gg.show()
def test_mask(mbits=0o377): pc2x1 = SegGeometryMatrixV1() X, Y = pc2x1.get_seg_xy_maps_pix_with_offset() mask = pc2x1.pixel_mask_array(mbits) iX, iY = (X + 0.25).astype(int), (Y + 0.25).astype(int) img = gg.getImageFromIndexArrays(iX, iY, mask) gg.plotImageLarge(img, amp_range=(-1, 2), figsize=(8, 10)) gg.show()
def test_img_easy(): pc2x1 = SegGeometryMatrixV1() #X,Y = pc2x1.get_seg_xy_maps_pix() X, Y = pc2x1.get_seg_xy_maps_pix_with_offset() iX, iY = (X + 0.25).astype(int), (Y + 0.25).astype(int) img = gg.getImageFromIndexArrays(iX, iY, iX + iY) gg.plotImageLarge(img, amp_range=(0, 1100), figsize=(8, 10)) gg.show()
def test_mask(mbits=0o377, width=5): o = segment_one X, Y = o.get_seg_xy_maps_pix_with_offset() mask = o.pixel_mask_array(mbits, width) iX, iY = (X + 0.25).astype(int), (Y + 0.25).astype(int) img = gg.getImageFromIndexArrays(iX, iY, mask) gg.plotImageLarge(img, amp_range=(-1, 2), figsize=(8, 10)) gg.show()
def test_2x2_mask(width=0, wcenter=0, edge_rows=3, edge_cols=6, center_rows=2, center_cols=4): pc2x2 = SegGeometryEpix100V1(use_wide_pix_center=False) X, Y = pc2x2.get_seg_xy_maps_pix_with_offset() mask = 1+pc2x2.pixel_mask_array(width, wcenter, edge_rows, edge_cols, center_rows, center_cols)#, dtype=DTYPE_MASK, **kwa) iX, iY = (X+0.25).astype(int), (Y+0.25).astype(int) img = gg.getImageFromIndexArrays(iX,iY,mask) gg.plotImageLarge(img, amp_range=(0, 2), figsize=(11,10)) gg.show()
def test_2x2_mask(mbits=0o377) : pc2x2 = SegGeometryEpix100V1(use_wide_pix_center=False) X, Y = pc2x2.get_seg_xy_maps_pix_with_offset() mask = pc2x2.pixel_mask_array(mbits) mask[mask==0]=3 iX, iY = (X+0.25).astype(int), (Y+0.25).astype(int) img = gg.getImageFromIndexArrays(iX,iY,mask) gg.plotImageLarge(img, amp_range=(-1, 2), figsize=(8,10)) gg.show()
def test_jungfrau_mask(mbits=0o377, width=1): o = SegGeometryJungfrauV1() X, Y = o.get_seg_xy_maps_pix_with_offset() mask = o.pixel_mask_array(mbits, width) mask[mask == 0] = 4 iX, iY = (X + 0.25).astype(int), (Y + 0.25).astype(int) img = gg.getImageFromIndexArrays(iY, iX, mask) gg.plotImageLarge(img, amp_range=(-1, 4), figsize=(14, 6)) gg.show()
def test01(tname): PF = V3 if tname == '3' else V4 SHOW_PEAKS = tname != '0' ds = data_hdf5_v0(FNAME) #ds.print_images() alg = peak_finder_algos(pbits=0) if PF == V3: alg.set_peak_selection_parameters(npix_min=0, npix_max=1e6, amax_thr=0, atot_thr=0, son_min=6) if PF == V4: alg.set_peak_selection_parameters(npix_min=0, npix_max=1e6, amax_thr=0, atot_thr=0, son_min=6) img = ds.next_image() shape = img.shape mask = np.ones(shape, dtype=np.uint16) INDS = np.indices((shape[0], shape[1]), dtype=np.int64) imRow, imCol = INDS[0, :], INDS[1, :] fig1, axim1, axcb1 = gr.fig_img_cbar_axes(gr.figure(figsize=(8, 7))) for nev in range(min(EVTMAX, ds.nevmax)): img = ds.next_image() #ave, rms = img.mean(), img.std() #amin, amax = ave-1*rms, ave+8*rms #amin, amax = img.min(), img.max() amin, amax = 0, img.max() axim1.clear() axcb1.clear() #imsh1,cbar1=\ gr.imshow_cbar(fig1, axim1, axcb1, img, amin=amin, amax=amax, extent=None,\ interpolation='nearest', aspect='auto', origin='upper',\ orientation='vertical', cmap='inferno') fig1.canvas.set_window_title('Event: %04d random data' % nev) gr.move_fig(fig1, x0=400, y0=30) if SHOW_PEAKS: peaks = alg.peak_finder_v3r3_d2(img, mask, rank=5, r0=7, dr=2, nsigm=9) if PF == V3 else\ alg.peak_finder_v4r3_d2(img, mask, thr_low=100, thr_high=200, rank=5, r0=7, dr=2) if PF == V4 else\ None plot_peaks_on_img(peaks, axim1, imRow, imCol, color='w', lw=1) gr.show(mode='do not hold') gr.show()
def test_2x1_mask(mbits=0o377) : pc2x1 = SegGeometryCspad2x1V1(use_wide_pix_center=False) X, Y = pc2x1.get_seg_xy_maps_pix_with_offset() mask = pc2x1.pixel_mask_array(mbits) print('mask:\n%s' % mask) print('mask.shape: ', mask.shape) iX, iY = (X+0.25).astype(int), (Y+0.25).astype(int) img = gg.getImageFromIndexArrays(iX,iY,mask) gg.plotImageLarge(img, amp_range=(-1, 2), figsize=(8,10)) gg.show()
def test_img_easy(): o = segment_one_v2 X, Y = o.get_seg_xy_maps_pix() xmin, xmax, ymin, ymax = X.min(), X.max(), Y.min(), Y.max() Xoff, Yoff = X-xmin, Y-ymin iX, iY = (Xoff+0.25).astype(int), (Yoff+0.25).astype(int) img = gg.getImageFromIndexArrays(iY,iX,X+2*Y) gg.plotImageLarge(img, amp_range=(xmin+2*ymin, xmax+2*ymax), figsize=FIGSIZE_INCH) #gg.move(20,20) gg.show()
def draw_times(axis, pkvals, pkinds, wt) : """Adds to figure axis a set of vertical lines for found peaks. Parameters: - axis - figure axis to draw a single waveform - pkvals [np.array] - 1-d peak values - pkinds [np.array] - 1-d peak indexes in wt - wt [np.array] - 1-d waveform sample times - is used to get time [sec] from pkinds """ for v,i in zip(pkvals,pkinds) : t = wt[i] gr.drawLine(axis, (t,t), (-v,v), s=10, linewidth=1, color='k')
def test_jungfrau_img_easy(): o = jungfrau_front X, Y = o.get_seg_xy_maps_pix() xmin, xmax, ymin, ymax = X.min(), X.max(), Y.min(), Y.max() Xoff, Yoff = X - xmin, ymax - Y iX, iY = (Xoff + 0.25).astype(int), (Yoff + 0.25).astype(int) img = gg.getImageFromIndexArrays(iY, iX, X + 3 * Y) gg.plotImageLarge(img, amp_range=(xmin + 3 * ymin, xmax + 3 * ymax), figsize=(14, 7)) gg.show()
def plot_image(data): fig, axim, axcb = gr.fig_img_cbar_axes(gr.figure(figsize=(10, 5), dpi=80)) ave, rms = np.mean(data), np.std(data) _, _ = gr.imshow_cbar(fig, axim, axcb, data, amin=ave - 1 * rms, amax=ave + 5 * rms, extent=None, cmap='inferno') return axim
def test_mask(sg, width=6, wcenter=4): logging.getLogger('matplotlib').setLevel(logging.WARNING) import psana.pyalgos.generic.Graphics as gg X, Y = sg.get_seg_xy_maps_pix_with_offset() mask = 1 + sg.pixel_mask_array(width=width, wcenter=wcenter) #mask[mask==0]=3 iX, iY = (X + 0.25).astype(int), (Y + 0.25).astype(int) img = gg.getImageFromIndexArrays(iX, iY, mask) sh = sg.shape() h_in = 9. w_in = h_in * sh[0] / sh[1] * 1.2 gg.plotImageLarge(img, amp_range=(-1, 2), figsize=(w_in, h_in)) gg.show()
def plot_det_image(det, evt, nda, tit=''): """Plots averaged image """ import psana.pyalgos.generic.Graphics as gr from psana.pyalgos.generic.NDArrUtils import reshape_to_2d #img = det.image(evt, nda) img = np.array(nda) if img is None: sys.exit('Image is not available. PROCESSING IS TERMINATED') img = reshape_to_2d(img) ave, rms = nda.mean(), nda.std() gr.plotImageLarge(img, amp_range=(ave - 1 * rms, ave + 3 * rms), title=tit) gr.show()
def test_jungfrau_mask(width=0, wcenter=0, edge_rows=3, edge_cols=6, center_rows=2, center_cols=4): o = jungfrau_one X, Y = o.get_seg_xy_maps_pix_with_offset() mask = 1 + o.pixel_mask_array(width, wcenter, edge_rows, edge_cols, center_rows, center_cols) mask[mask == 0] = 4 iX, iY = (X + 0.25).astype(int), (Y + 0.25).astype(int) img = gg.getImageFromIndexArrays(iY, iX, mask) gg.plotImageLarge(img, amp_range=(0, 2), figsize=(14, 7)) gg.show()