mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 03:31:50 +02:00
fix: eiger_plot_hist.py removed
This commit is contained in:
@ -1,128 +0,0 @@
|
||||
import threading
|
||||
import numpy as np
|
||||
import pyqtgraph as pg
|
||||
from PyQt5.QtCore import pyqtProperty, pyqtSlot, pyqtSignal
|
||||
from PyQt5.QtWidgets import QHBoxLayout, QWidget, QCheckBox
|
||||
|
||||
import zmq
|
||||
import json
|
||||
import h5py
|
||||
import os
|
||||
|
||||
|
||||
|
||||
|
||||
class EigerPlot(QWidget):
|
||||
update_signale = pyqtSignal()
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.mask_file = os.path.expanduser('~/Data10/software/radial_integration_scipts/bad_pix_map_Eiger9M.h5')
|
||||
|
||||
pg.setConfigOptions(background="w", foreground="k", antialias=True)
|
||||
|
||||
self.layout = QHBoxLayout()
|
||||
|
||||
self.setLayout(self.layout)
|
||||
|
||||
self.hist_lim = [0,20]
|
||||
|
||||
|
||||
self.glw = pg.GraphicsLayoutWidget()
|
||||
self.use_fft = False
|
||||
|
||||
# self.glw.show()
|
||||
# self.setCentralItem(self.glw)
|
||||
|
||||
self.checkBox_FFT = QCheckBox("FFT")
|
||||
self.checkBox_FFT.stateChanged.connect(self.on_fft_changed)
|
||||
|
||||
self.layout.addWidget(self.checkBox_FFT)
|
||||
|
||||
self.layout.addWidget(self.glw)
|
||||
|
||||
|
||||
self.plot_item = pg.PlotItem()
|
||||
self.plot_item.setAspectLocked(True)
|
||||
self.imageItem = pg.ImageItem()
|
||||
self.plot_item.addItem(self.imageItem)
|
||||
|
||||
self.glw.addItem(self.plot_item)
|
||||
|
||||
self.hist = pg.HistogramLUTItem()
|
||||
self.hist.setImageItem(self.imageItem)
|
||||
self.hist.setLevels(min=self.hist_lim[0],max=self.hist_lim[1])
|
||||
self.hist.setHistogramRange(self.hist_lim[0] - 0.1 * self.hist_lim[0],self.hist_lim[1] + 0.1 * self.hist_lim[1])
|
||||
self.hist.disableAutoHistogramRange()
|
||||
|
||||
self.hist.gradient.loadPreset('magma')
|
||||
|
||||
self.glw.addItem(self.hist)
|
||||
|
||||
# self.plot_item.addItem(self.hist)
|
||||
|
||||
# add plot and histogram to glw
|
||||
# self.glw.addItem(self.plot_item)
|
||||
# self.glw.addItem(self.hist)
|
||||
|
||||
# self.imageItem.setImage([[0,1,2],[4,5,6]])
|
||||
self.update_signale.connect(self.on_image_update)
|
||||
self.mask = None
|
||||
self._load_mask()
|
||||
|
||||
self.start_zmq_consumer()
|
||||
|
||||
def start_zmq_consumer(self):
|
||||
consumer_thread = threading.Thread(target=self.zmq_consumer, daemon=True).start()
|
||||
|
||||
def _load_mask(self):
|
||||
with h5py.File(self.mask_file, "r") as f:
|
||||
self.mask = f["data"][...]
|
||||
|
||||
def zmq_consumer(self):
|
||||
try:
|
||||
print("starting consumer")
|
||||
live_stream_url = "tcp://129.129.95.38:20000"
|
||||
receiver = zmq.Context().socket(zmq.SUB)
|
||||
receiver.connect(live_stream_url)
|
||||
receiver.setsockopt_string(zmq.SUBSCRIBE, "")
|
||||
|
||||
while True:
|
||||
|
||||
raw_meta, raw_data = receiver.recv_multipart()
|
||||
meta = json.loads(raw_meta.decode('utf-8'))
|
||||
self.image = np.frombuffer(raw_data, dtype=meta['type']).reshape(meta['shape'])
|
||||
self.update_signale.emit()
|
||||
|
||||
finally:
|
||||
receiver.disconnect(live_stream_url)
|
||||
receiver.context.term()
|
||||
|
||||
@pyqtSlot()
|
||||
def on_fft_changed(self):
|
||||
self.update_signale.emit()
|
||||
|
||||
@pyqtSlot()
|
||||
def on_image_update(self):
|
||||
# if self.checkBox_FFT.isChecked():
|
||||
# img = np.log10(np.abs(np.fft.fftshift(np.fft.fft2(self.image*(1-self.mask.T)))))
|
||||
# else:
|
||||
|
||||
img = np.log10(self.image*(1-self.mask)+1)
|
||||
self.imageItem.setImage(img,autoLevels=False)
|
||||
|
||||
# hardcoded hist level
|
||||
# self.hist.setLevels(min=self.hist_lim[0],max=self.hist_lim[1])
|
||||
# self.hist.setHistogramRange(self.hist_lim[0] - 0.1 * self.hist_lim[0],self.hist_lim[1] + 0.1 * self.hist_lim[1])
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
plot = EigerPlot()
|
||||
|
||||
plot.show()
|
||||
|
||||
sys.exit(app.exec_())
|
Reference in New Issue
Block a user