def addRoi(self, x=None, y=None, width=None, height=None, angle=0): #To get the current GUI situation guibean = SDAPlotter.getGuiBean(self.panel) #roi=gbean.get(GuiParameters.ROIDATA) roi = guibean[GuiParameters.ROIDATA] roiList = guibean[GuiParameters.ROIDATALIST] if None in [x, y, width, height, angle]: #No ROI parameter defined. print "Not enough ROI info defined in the command. Use GUI ROI box selection" if roi is None: # No ROI selection on the gui print "Can not add ROI. Please either give ROI five parameters or draw a box in the GUI" return else: roi = RectangularROI(x, y, width, height, angle) if roiList is None: #No ROI Table on the gui roiList = RectangularROIList() roiList.add(roi) #Update the view with new ROI table # guibean=GuiBean(); guibean[GuiParameters.ROIDATALIST] = roiList SDAPlotter.setGuiBean(self.panel, guibean) self.getRoiTable()
def getRoiSelectionBox(self): #Get current ROI info from the View guibean = SDAPlotter.getGuiBean(self.panel) #roi=gbean.get(GuiParameters.ROIDATA) roi = guibean[GuiParameters.ROIDATA] if roi is None: print None else: print self.getRoiParameters(roi) return roi
def clearRois(self): guibean = SDAPlotter.getGuiBean(self.panel) if GuiParameters.ROIDATALIST in guibean: #guibean[GuiParameters.ROIDATALIST]=None; guibean.clear() SDAPlotter.setGuiBean(self.panel, guibean) self.roiList = [] self.updateRoiList()
def updateRoiList(self): guibean = SDAPlotter.getGuiBean(self.panel) roiList = guibean[GuiParameters.ROIDATALIST] tempRoiList = [] if not isinstance( roiList, RectangularROIList): #No rectangular roi list defined. return else: for roi in roiList: if isinstance(roi, RectangularROI): tempRoiList.append(roi) tempRoiList.sort(key=lambda roi: roi.name) self.roiList = tempRoiList
def setPlotMode(self, plotmode=GuiPlotMode.TWOD): # guibean=GuiBean(); guibean = SDAPlotter.getGuiBean(self.panel) guibean[GuiParameters.PLOTMODE] = plotmode SDAPlotter.setGuiBean(self.panel, guibean)
def plot_getbean(name): jb = _plotter.getGuiBean(name) if jb is not None: return _wrap_gui_bean(jb, _guibean()) return jb
def plot_getbean(name): jb = _plotter.getGuiBean(name) if jb is not None: return _wrap_gui_bean(jb, _guibean()) return jb
def ncdredconf(self, detector, **kwords): """ if default None passed in no change is made default is everything off """ if detector.lower() == "Waxs".lower(): detector="Waxs" else: detector="Saxs" if not detector in self.settings: self.settings[detector] = {} for i in self.options: if not i in self.settings[detector]: self.settings[detector][i] = False if i in kwords: if kwords[i] == None: self.settings[detector][i] = False else: self.settings[detector][i] = kwords[i] realdet=ncdutils.getDetectorByType(self.detsystem, detector.upper()) realdetname = realdet.getName() ncdutils.removeDetectorByName(self.detsystem, detector+" chain") saxsrc=ReductionChain(detector+" chain", realdetname) saxsrclist=saxsrc.getChain() panel=detector+" Plot" beanbag=SDAPlotter.getGuiBean(panel) if beanbag == None: beanbag = {} sroi = None if self.is2D(realdet): if GuiParameters.ROIDATA in beanbag: roi = beanbag[GuiParameters.ROIDATA] if isinstance(roi, SectorROI): sroi = roi radii = sroi.getRadii() self.settings[detector]["length"]=int(math.ceil(radii[1]-radii[0])) self.settings[detector]["disttobeamstop"]=radii[0] length = self.settings[detector]["length"] slope = self.settings[detector]["slope"] intercept = self.settings[detector]["intercept"] if slope == 0 or slope == False: axisds=None else: axis=[] pis = realdet.getPixelSize()*1000 d2b = self.settings[detector]["disttobeamstop"] for i in range(length): axis.append(float((i+d2b)*pis*slope+intercept)) axisds=DataSet("qaxis", axis) mask = self.settings[detector]["mask"] sect = self.settings[detector]["sect"] if sroi != None: if sect or isinstance(axisds, DataSet): start = sroi.getPoint() realdet.setAttribute("beam_center_x", start[0]) realdet.setAttribute("beam_center_y", start[1]) else: realdet.setAttribute("beam_center_x", None) realdet.setAttribute("beam_center_y", None) cameralength = self.settings[detector]["cameralength"] if cameralength != False: realdet.setAttribute("distance", cameralength) else: realdet.setAttribute("distance", None) norm = self.settings[detector]["norm"] if (norm != False): saxsnorm=Normalisation(detector+"norm","ignored") saxsnorm.setCalibChannel(1) saxsnorm.setCalibName(ncdutils.getDetectorByType(self.detsystem, "CALIB").getName()) saxsrclist.add(saxsnorm) bg = self.settings[detector]["bg"] if bg != False: if os.path.isfile(bg): saxsbgs=BackgroundSubtraction(detector+"bg","ignored") sfh=ScanFileHolder() if (norm>=0): upstream=detector+"norm.data" else: upstream=realdetname+".data" sfh.load(NexusLoader(bg,[upstream])) ds=sfh.getAxis(upstream) saxsbgs.setBackground(ds) saxsrclist.add(saxsbgs) else: print "background file \"%s\" does not exist." % bg if (sect): if sroi != None: saxssect=SectorIntegration(detector+"sect","ignored") saxssect.setROI(sroi) if isinstance(axisds, DataSet): saxssect.setqAxis(axisds) if (mask): if not GuiParameters.MASKING in beanbag: print "no mask defined for %s" % panel else: mb=beanbag[GuiParameters.MASKING] if not isinstance(mb, MaskingBean): print "no mask defined for %s" % panel else: saxssect.setMask(mb.getMask()) saxsrclist.add(saxssect) else: print "sector integration requested but no ROI found" inv = self.settings[detector]["inv"] if (inv): saxsinvariant=Invariant(detector+"invariant", "ignored") saxsrclist.add(saxsinvariant) aver = self.settings[detector]["aver"] if (aver): saxsaver=Average(detector+"average", "ignored") saxsrclist.add(saxsaver) self.detsystem.addDetector(saxsrc)
def plot_getbean(name): jb = _plotter.getGuiBean(name) _wrap_gui_bean(jb) return jb
def ncdredconf(self, detector, **kwords): """ if default None passed in no change is made default is everything off """ if detector.lower() == "Waxs".lower(): detector = "Waxs" else: detector = "Saxs" if not detector in self.settings: self.settings[detector] = {} for i in self.options: if not i in self.settings[detector]: self.settings[detector][i] = False if i in kwords: if kwords[i] == None: self.settings[detector][i] = False else: self.settings[detector][i] = kwords[i] realdet = ncdutils.getDetectorByType(self.detsystem, detector.upper()) realdetname = realdet.getName() ncdutils.removeDetectorByName(self.detsystem, detector + " chain") saxsrc = ReductionChain(detector + " chain", realdetname) saxsrclist = saxsrc.getChain() panel = detector + " Plot" beanbag = SDAPlotter.getGuiBean(panel) if beanbag == None: beanbag = {} sroi = None if self.is2D(realdet): if GuiParameters.ROIDATA in beanbag: roi = beanbag[GuiParameters.ROIDATA] if isinstance(roi, SectorROI): sroi = roi radii = sroi.getRadii() self.settings[detector]["length"] = int( math.ceil(radii[1] - radii[0])) self.settings[detector]["disttobeamstop"] = radii[0] length = self.settings[detector]["length"] slope = self.settings[detector]["slope"] intercept = self.settings[detector]["intercept"] if slope == 0 or slope == False: axisds = None else: axis = [] pis = realdet.getPixelSize() * 1000 d2b = self.settings[detector]["disttobeamstop"] for i in range(length): axis.append(float((i + d2b) * pis * slope + intercept)) axisds = DataSet("qaxis", axis) mask = self.settings[detector]["mask"] sect = self.settings[detector]["sect"] if sroi != None: if sect or isinstance(axisds, DataSet): start = sroi.getPoint() realdet.setAttribute("beam_center_x", start[0]) realdet.setAttribute("beam_center_y", start[1]) else: realdet.setAttribute("beam_center_x", None) realdet.setAttribute("beam_center_y", None) cameralength = self.settings[detector]["cameralength"] if cameralength != False: realdet.setAttribute("distance", cameralength) else: realdet.setAttribute("distance", None) norm = self.settings[detector]["norm"] if (norm != False): saxsnorm = Normalisation(detector + "norm", "ignored") saxsnorm.setCalibChannel(1) saxsnorm.setCalibName( ncdutils.getDetectorByType(self.detsystem, "CALIB").getName()) saxsrclist.add(saxsnorm) bg = self.settings[detector]["bg"] if bg != False: if os.path.isfile(bg): saxsbgs = BackgroundSubtraction(detector + "bg", "ignored") sfh = ScanFileHolder() if (norm >= 0): upstream = detector + "norm.data" else: upstream = realdetname + ".data" sfh.load(NexusLoader(bg, [upstream])) ds = sfh.getAxis(upstream) saxsbgs.setBackground(ds) saxsrclist.add(saxsbgs) else: print "background file \"%s\" does not exist." % bg if (sect): if sroi != None: saxssect = SectorIntegration(detector + "sect", "ignored") saxssect.setROI(sroi) if isinstance(axisds, DataSet): saxssect.setqAxis(axisds) if (mask): if not GuiParameters.MASKING in beanbag: print "no mask defined for %s" % panel else: mb = beanbag[GuiParameters.MASKING] if not isinstance(mb, MaskingBean): print "no mask defined for %s" % panel else: saxssect.setMask(mb.getMask()) saxsrclist.add(saxssect) else: print "sector integration requested but no ROI found" inv = self.settings[detector]["inv"] if (inv): saxsinvariant = Invariant(detector + "invariant", "ignored") saxsrclist.add(saxsinvariant) aver = self.settings[detector]["aver"] if (aver): saxsaver = Average(detector + "average", "ignored") saxsrclist.add(saxsaver) self.detsystem.addDetector(saxsrc)