From 830879cbe605932d26b00473eacea23442402506 Mon Sep 17 00:00:00 2001 From: Stalberg Jonathan Date: Fri, 14 Apr 2023 18:15:06 +0200 Subject: [PATCH] changes at beamline --- grum/BECAdapter.py | 78 +++++++++++++++++++++++++------------------ grum/imgdesc.py | 15 +++++++-- grum/mdi/mdisubimg.py | 3 ++ 3 files changed, 61 insertions(+), 35 deletions(-) diff --git a/grum/BECAdapter.py b/grum/BECAdapter.py index ff00610..14c2f56 100644 --- a/grum/BECAdapter.py +++ b/grum/BECAdapter.py @@ -5,6 +5,8 @@ from os import listdir from os.path import isfile, join import h5py import time +import numpy as np +from PIL import Image class BECAdapter: @@ -16,8 +18,8 @@ class BECAdapter: # self.file_reader = .... # add file reader here self.grum_client = RPCClient("localhost", 8000) # this is outgoing - self.last_plotted_scan_nr = 6755 - self.scan_nr = 6757 + self.last_plotted_scan_nr = 6760 + self.scan_nr = None def start(self): self.start_scan_status_sub() @@ -52,47 +54,59 @@ class BECAdapter: # point = [2, 3] # self.grum_client.append_data(name, point) - def get_data_from_file(self): + def plot_img_from_h5(self): while True: - print('checking for new scan_nr') - self.check_for_new_scan_nr() + print('update for new scan_nr') + self.update_scan_nr() if self.scan_nr > self.last_plotted_scan_nr: - scan = "S0" + str(self.last_plotted_scan_nr + 1) - mypath = "/sls/X12SA/data/e20632/Data10/analysis/S06000-06999/" + scan - # mypath = "/home/stalbe_j/Documents" # for test on own computer - files = [f for f in listdir(mypath) if isfile(join(mypath, f))] - print(files) - recon_files = [] - while not recon_files: - recon_files = [ - file for file in files if file.endswith("recons.h5")] - print('this are recon_files: ', recon_files) - if recon_files: - break - print('sleeping 1') - time.sleep(10) + # scan = "S0" + str(self.last_plotted_scan_nr + 1) + ending_path = self._get_scan_dir(1000, self.last_plotted_scan_nr + 1, leading_zeros = 5) + mypath = "/sls/X12SA/data/e20632/Data10/analysis/" + ending_path + files = [f for f in listdir(mypath) if isfile(join(mypath, f))] + recon_files = [ + file for file in files if file.endswith("recons.h5")] + hf = h5py.File(mypath + '/' + recon_files[0], 'r') - print(hf.keys()) recon = hf.get('reconstruction') - print(recon.keys()) recon_object = hf.get('reconstruction/object') recon_probes = hf.get('reconstruction/probes') - print(recon_object) - print(recon_probes) + + recon_probes_1 = recon_probes[0] + recon_probes_2 = recon_probes[1] + + recon_object =np.array(recon_object) + recon_object_abs = np.abs(recon_object) + recon_object_angle = np.angle(recon_object) - # PLOT self.grum_client.new_image(self.last_plotted_scan_nr+1, {'img': recon_object}) - self.last_plotted_scan_nr +=1 + recon_img_abs = recon_object_abs.tolist() + recon_img_angle = recon_object_angle.tolist() - print('sleeping 2') - time.sleep(5) + # PLOT + self.grum_client.new_image("Absorption", {'image': recon_img_abs, "xlabel": str(self.scan_nr)}) + self.grum_client.new_image("Phase", {'image': recon_img_angle, "xlabel": str(self.scan_nr), "colormap":"CET-C1"}) - def check_for_new_scan_nr(self): - print('From checking: ') - print('scan_nr: ', self.scan_nr) - print('last_plotted_scan_nr: ', self.last_plotted_scan_nr) + self.last_plotted_scan_nr = self.scan_nr + + time.sleep(10) + + def update_scan_nr(self): + # return (self.last_plotted_scan_nr == self.scan_nr) + mypath = '/sls/X12SA/Data10/e20632/analysis/online/ptycho/gallery' + file_list = listdir(mypath) + scans = [file_name.split('_')[0] for file_name in file_list] + max_scan_nr = max([int(scan[1:6]) for scan in scans]) + print(max_scan_nr) + + self.scan_nr = max_scan_nr + + def _get_scan_dir(self, scan_bundle, scan_number, leading_zeros=None): + if leading_zeros is None: + leading_zeros = len(str(scan_bundle)) + floor_dir = scan_number // scan_bundle * scan_bundle + return f"S{floor_dir:0{leading_zeros}d}-{floor_dir+scan_bundle-1:0{leading_zeros}d}/S{scan_number:0{leading_zeros}d}" if __name__ == "__main__": @@ -102,4 +116,4 @@ if __name__ == "__main__": redis_connector = RedisConnector(redis_url) ba = BECAdapter(redis_connector) ba.start() - ba.get_data_from_file() + ba.plot_img_from_h5() diff --git a/grum/imgdesc.py b/grum/imgdesc.py index 5b171d5..e2435c2 100644 --- a/grum/imgdesc.py +++ b/grum/imgdesc.py @@ -1,14 +1,16 @@ import numpy as np +import pyqtgraph as pg class ImageDescription: - def __init__(self, name, title=None, xlabel=None, ylabel=None, image=None): + def __init__(self, name, title=None, xlabel=None, ylabel=None, image=None, colormap=None): self.name = name self.title = title self.xlabel = xlabel self.ylabel = ylabel self.image = image + self.colormap = colormap @property def data(self): @@ -28,16 +30,23 @@ class ImageDescription: def make_plot(self, plotwidget, style): res = plotwidget.setImage(self.data) - + # plotwidget.colormap() if self.title: plotwidget.setTitle(self.title) if self.xlabel: - plotwidget.setLabel("bottom", self.xlabel) + # vbox = plotwidget.getView() + # vbox.addItem(pg.LabelItem(self.xlabel)) + plotwidget.setHistogramLabel(self.xlabel) + # plotwidget.setLabel("bottom", self.xlabel) if self.ylabel: plotwidget.setLabel("left", self.ylabel) + if self.colormap: + cm = pg.colormap.get(self.colormap) + plotwidget.setColorMap(cm) + return res diff --git a/grum/mdi/mdisubimg.py b/grum/mdi/mdisubimg.py index a3adce1..fff0666 100644 --- a/grum/mdi/mdisubimg.py +++ b/grum/mdi/mdisubimg.py @@ -15,6 +15,9 @@ class MDISubImage(MDISubWindow): style = pg_plot_style() + # cm = pg.colormap.get('CET-C1') + # pw.setColorMap(cm) + plot = desc.make_plot(self.pw, style) self.plots = {name: plot}