From 88d697b0e3b90fd7854c03522bad5ba1ddb32b6b Mon Sep 17 00:00:00 2001 From: Mads Jakobsen <mads.jakobsen@xfel.eu> Date: Thu, 13 Mar 2025 10:58:02 +0100 Subject: [PATCH] trying static method --- .../onlinemid/dataplotters/agipd_module.py | 45 +++++++++---------- .../src/onlinemid/utils/image_plotting.py | 5 +-- 2 files changed, 23 insertions(+), 27 deletions(-) diff --git a/python_package/src/onlinemid/dataplotters/agipd_module.py b/python_package/src/onlinemid/dataplotters/agipd_module.py index 43baee2..6484c1c 100644 --- a/python_package/src/onlinemid/dataplotters/agipd_module.py +++ b/python_package/src/onlinemid/dataplotters/agipd_module.py @@ -9,33 +9,11 @@ from matplotlib.backends.backend_agg import FigureCanvasAgg import numpy as np -def plot_data(data): - - plt.switch_backend("agg") - fig = plt.figure(figsize=(15,10)) - - plt.imshow(data, interpolation=None) - - plt.title(f"this is my plot") - plt.xlabel('kbar') - plt.ylabel('Pk') - - canvas = FigureCanvasAgg(fig) - canvas.draw() - image_buffer = np.frombuffer(canvas.buffer_rgba(), dtype=np.uint8).reshape( - canvas.get_width_height()[::-1] + (4,)) - - plt.close(fig) - return image_buffer - - class AgipdModulePlotter(): def __init__(self): self.onlineImagePlotter = OnlineImagePlotter(figsize=(15,10)) - - def plot(self, train_id, module_data): print("type trainid", type(train_id)) @@ -43,10 +21,31 @@ class AgipdModulePlotter(): print(f"Error, AgipdModulePlotter.plot received data must be of shape (512, 128), and not {module_data.shape}") return - img = self.onlineImagePlotter.get_image_buffer_if_ready_and_make_new_image(train_id, plot_data, module_data) + img = self.onlineImagePlotter.get_image_buffer_if_ready_and_make_new_image(train_id, AgipdModulePlotter.make_plot, module_data) return img + @staticmethod + def make_plot(data): + + plt.switch_backend("agg") + fig = plt.figure(figsize=(15,10)) + + plt.imshow(data, interpolation=None) + + plt.title(f"this is my plot") + plt.xlabel('kbar') + plt.ylabel('Pk') + + canvas = FigureCanvasAgg(fig) + canvas.draw() + image_buffer = np.frombuffer(canvas.buffer_rgba(), dtype=np.uint8).reshape( + canvas.get_width_height()[::-1] + (4,)) + + plt.close(fig) + return image_buffer + + \ No newline at end of file diff --git a/python_package/src/onlinemid/utils/image_plotting.py b/python_package/src/onlinemid/utils/image_plotting.py index 4eb51fb..087667f 100644 --- a/python_package/src/onlinemid/utils/image_plotting.py +++ b/python_package/src/onlinemid/utils/image_plotting.py @@ -106,16 +106,13 @@ class DataToPlotToHash(): print(f"key {hash_key} does not exist, init plotter") self.hash_keys_and_plotter[hash_key] = Plotter() else: - print(f"self.hash_keys_and_plotter[{hash_key}] is of type", type(Plotter)) if not isinstance(self.hash_keys_and_plotter[hash_key], Plotter): print("wrong type, initializing!") self.hash_keys_and_plotter[hash_key] = Plotter() - print(f"self.hash_keys_and_plotter[{hash_key}] is of type", type(Plotter)) - + # plotter is initialized, give plotter data current_img = self.hash_keys_and_plotter[hash_key].plot(*args) - from karabo.bound import Hash, Schema, ImageData if current_img is not None: -- GitLab