Files
x11ma/script/devices/norm.py
2021-03-12 12:19:10 +01:00

51 lines
1.6 KiB
Python
Executable File

import ch.psi.pshell.ui.App as App
import ch.psi.pshell.imaging.DeviceSource as DeviceSource
class ImgageNorm (DeviceSource):
def __init__(self, name, dev):
DeviceSource.__init__(self, name, dev)
self.filenane = get_setting("NORM_FILE")
try:
ip=open_image(self.filenane)
#TRANSPOSE - ImageJ stores the data transposed
ip.getProcessor().rotate(-90)
ip.getProcessor().flipVertical()
array = get_ip_array(ip)
self.ref = Data(array)
threshold = get_outliers_threshold()
self.outliers_mask = get_outliers_mask()
if self.outliers_mask is not None:
self.ref.mult(self.outliers_mask)
if threshold>0:
self.ref.threshold(threshold, False, None)
except:
self.ref = None
self.pushData(None)
print sys.exc_info()[1]
def onDataReceived(self,val):
if self.ref:
n = Data(eiger.getDataMatrix().take())
if self.outliers_mask is not None:
n.mult(self.outliers_mask)
threshold = get_outliers_threshold()
if threshold>0:
n.threshold(threshold, False, None)
n.div(self.ref)
self.pushData(n)
norm = ImgageNorm("norm", eiger.dataArray)
norm.monitored=True
add_device(norm, True)
show_panel(norm)
dlg = App.getInstance().getDevicePanelManager().getPanelDialog("norm");
dlg.setSize(800,800)