51 lines
1.6 KiB
Python
Executable File
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)
|
|
|