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 call(self): # 1. Register file if self.pathToRegister: self.fileRegistrar.registerFile(self.pathToRegister) # 2. generate position position = [self.collectionTime] if self.filepathToReport: position.append(self.filepathToReport) processorResults = [] for processor in self.processors: processorResults += list( processor.getPosition(self.datasetProvider.getDataset())) # 3. display image if self.panelName: #print "Plotter.plotImage(%r, ...)" % self.panelName Plotter.plotImage( self.panelName, self.renderer.renderShapesOntoDataset( self.datasetProvider.getDataset())) if self.panelNameRCP: #print "RCPPlotter.imagePlot(%r, ...)" % self.panelNameRCP SDAPlotter.imagePlot( self.panelNameRCP, self.renderer.renderShapesOntoDataset( self.datasetProvider.getDataset())) metricsResults = [time.time() - self.time_created ] if self.return_performance_metrics else [] return position + metricsResults + processorResults
def plot_viewnexustree(name, tree): if not isinstance(tree, _h5mgr): import sys #@Reimport print >> sys.stderr, "Only tree from loadnexus works for now" return # import jyhdf5io._tojavatree as _tojtree # tree = _tojtree(tree) _plotter.viewHDF5Tree(name, tree.gettree())
def plot_viewtree(name, tree): if not isinstance(tree, _h5mgr): import sys #@Reimport print >> sys.stderr, "Only tree from loadnexus works for now" return # import jyhdf5io._tojavatree as _tojtree # tree = _tojtree(tree) _plotter.viewTree(name, tree.gettree())
def imagePlot(self, panel=None): if panel is None: panel=self.panel; da=self.chData.cagetArrayUnsigned(); ds = IntegerDataset.createFromObject(da); newds=ds.reshape([self.height, self.width]); SDAPlotter.imagePlot(panel, newds);
def imagePlot0(self, panel=None): if panel is None: panel=self.panel; da=self.chData.cagetArrayByte() ds = ByteDataset.createFromObject(da); newds=ds.reshape([self.height, self.width]); SDAPlotter.imagePlot(panel, newds);
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 display(self, fileName): if fileName is None: print "Please give a full file name to display"; return; else: dataset = self.loadDataset(fileName) if self.panel: SDAPlotter.imagePlot(self.panel, dataset); else: print "No panel set to display" raise Exception("No panel_name set in %s. Set this or set %s.setAlive(False)" % (self.name,self.name));
def display(self,file=None): if file==None: file = self.getFullFileName() # self.data.loadPilatusData(file) self.data.load(PilatusTiffLoader(file)); dataset = self.data.getAxis(0); if self.panel: if self.logScale: SDAPlotter.imagePlot(self.panel, DatasetUtils.lognorm(dataset)); #For RCP GUI else: SDAPlotter.imagePlot(self.panel, dataset); #For RCP GUI else: print "No panel set to display" raise Exception("No panel_name set in %s. Set this or set %s.setAlive(False)" % (self.name,self.name));
def display(self, fileName=None): if fileName is None: fileName = self.fileName; self.dataHolder=dnp.io.load(fileName); dataset = self.dataHolder[0]; if self.panel: if self.logScale: SDAPlotter.imagePlot(self.panel, DatasetUtils.lognorm(dataset)); #For RCP GUI else: SDAPlotter.imagePlot(self.panel, dataset); #For RCP GUI else: print "No panel set to display" raise Exception("No panel_name set in %s. Set this or set %s.setAlive(False)" % (self.name,self.name));
def display(self, dataset=None): if dataset is None: if self.dataset is None: print "No dataset to display" return else: dataset = self.dataset if self.panel: SDAPlotter.imagePlot(self.panel, dataset) else: print "No panel set to display" raise Exception( "No panel_name set in %s. Set this or set %s.setAlive(False)" % (self.name, self.name))
def plot_getdatabean(name): jdb = _plotter.getDataBean(name) if jdb is not None: jgb = jdb.getGuiParameters() if jgb is not None: _wrap_gui_bean(jgb, jgb) return jdb
def display(self, dataset=None): if dataset is None: dataset = self.dataset if dataset is None: print("No dataset to display") return if self.panel: from uk.ac.diamond.scisoft.analysis import SDAPlotter SDAPlotter.imagePlot(self.panel, dataset) else: print("No panel set to display") raise ValueError( "No panel_name set in %s. Set this or set %s.setAlive(False)" % (self.name, self.name))
def imagePlot2(self, panel=None): if panel is None: panel=self.panel; da=self.chData.cagetArrayByte(); #To convert from singed to unsigned #method 2 da=[x&0xff for x in da] #method 3 # ds1=array.array('B' [x&0xff for x in ds1] ) ds = IntegerDataset.createFromObject(da); newds=ds.reshape([self.height, self.width]); SDAPlotter.imagePlot(panel, newds);
def display(self, retryUntilTimeout=True): if self.panel_name == None and self.panel_name_rcp == None: raise Exception("No panel_name or panel_name_rcp set in %s. " + "Set this or set %s.display_image=False" % (self.name, self.name)) if self.panel_name: #print "Plotter.plotImage(%r, ...)" % self.panel_name Plotter.plotImage( self.panel_name, self.renderer.renderShapesOntoDataset( self.getDataset(retryUntilTimeout))) if self.panel_name_rcp: #print "RCPPlotter.imagePlot(%r, ...)" % self.panel_name_rcp SDAPlotter.imagePlot( self.panel_name_rcp, self.renderer.renderShapesOntoDataset( self.getDataset(retryUntilTimeout)))
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 display(self, file=None): if file == None: file = self.getFullFileName() # self.data.loadPilatusData(file) self.data.load(PilatusTiffLoader(file)) dataset = self.data.getAxis(0) if self.panel: if self.logScale: SDAPlotter.imagePlot(self.panel, DatasetUtils.lognorm(dataset)) #For RCP GUI else: SDAPlotter.imagePlot(self.panel, dataset) #For RCP GUI else: print "No panel set to display" raise Exception( "No panel_name set in %s. Set this or set %s.setAlive(False)" % (self.name, self.name))
def display(self, file=None): if file is None: file = self.fileName # self.dataHolder.loadPilatusData(file) # self.dataHolder.load(PilatusTiffLoader(file)); # dataset = self.dataHolder.getAxis(0); self.dataHolder = dnp.io.load(file) dataset = self.dataHolder[0] if self.panel: if self.logScale: SDAPlotter.imagePlot(self.panel, DatasetMaths.lognorm(dataset)) #For RCP GUI else: SDAPlotter.imagePlot(self.panel, dataset) #For RCP GUI else: print "No panel set to display" raise Exception( "No panel_name set in %s. Set this or set %s.setAlive(False)" % (self.name, self.name))
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 plot_addline(*arg, **kwarg): _plotter.addPlot(*arg, **kwarg)
def plot_surface(*arg, **kwarg): _plotter.surfacePlot(*arg, **kwarg)
def plot_updatepoints2d(*arg, **kwarg): _plotter.scatter2DPlotOver(*arg, **kwarg)
def plot_image(*arg, **kwarg): _plotter.imagePlot(*arg, **kwarg)
def plot_setupimagegrid(*arg, **kwarg): _plotter.setupNewImageGrid(*arg, **kwarg)
def plot_updateline(*arg, **kwarg): _plotter.updatePlot(*arg, **kwarg)
def plot_addstack(*arg, **kwarg): _plotter.addStackPlot(*arg, **kwarg)
def plot_images(*arg, **kwarg): _plotter.imagesPlot(*arg, **kwarg)
def plot_setdatabean(name, bean): gb = bean.getGuiParameters() _unwrap_gui_bean(gb, gb) _plotter.setDataBean(name, bean)
def plot_updatestack(*arg, **kwarg): _plotter.updateStackPlot(*arg, **kwarg)
def plot_stack(*arg, **kwarg): _plotter.stackPlot(*arg, **kwarg)
def plot_line(*arg, **kwarg): _plotter.plot(*arg, **kwarg)
def plot_setbean(name, bean): _plotter.setGuiBean(name, _unwrap_gui_bean(bean, _jyguibean()))
def setPlotMode(self, plotmode=GuiPlotMode.TWOD): # guibean=GuiBean(); guibean = SDAPlotter.getGuiBean(self.panel) guibean[GuiParameters.PLOTMODE] = plotmode SDAPlotter.setGuiBean(self.panel, guibean)
def plot_viewtree(name, tree): _plotter.viewTree(name, tree._getnative())
def plot_getbean(name): jb = _plotter.getGuiBean(name) if jb is not None: return _wrap_gui_bean(jb, _guibean()) return jb
def plot_scanforimages(*arg, **kwarg): _plotter.scanForImages(*arg, **kwarg)
def plot_imagetogrid(*arg, **kwarg): _plotter.plotImageToGrid(*arg, **kwarg)
def plot_points3d(*arg, **kwarg): _plotter.scatter3DPlot(*arg, **kwarg)
def plot_points2d(*arg, **kwarg): _plotter.scatter2DPlot(*arg, **kwarg)
def plot_getdatabean(name): jdb = _plotter.getDataBean(name) jgb = jdb.getGuiParameters() _wrap_gui_bean(jgb) return jdb
def plot_volume(*arg, **kwarg): _plotter.volumePlot(*arg, **kwarg)
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 plotdata(filename, dataType=MAC, plotPane="DataPlot", Overlay=True): '''Plot existing data on "MAC, PSD", or "SRS" (if any) Panel, the default is MAC data on DataPlot panel and overlay is True. syntax: plotdata(filename,[MAC|SRS|PSD],["MAC"|"Mythen"|"DataPlot"],[True|False]) where: filename: the filename string in quote. dataType: the input data types or formats available MAC - plot MAC data on MAC panel PSD - plot PSD data on Mythen panel SRS - plot SRS data on SRS panel plotPane: the graph panel to display the plot Overlay: 'True': plot over the exist data on the graph (Default) 'False': clear existing plot data from the graph before plotting new data ''' print("Data plotting to " + plotPane + " panel, please wait ...") if dataType == MAC: sfh = loadMacData(filename) dataset=sfh.getAxis(1) dataset.setName(filename) if Overlay: Plotter.plotOver(plotPane, sfh.getAxis(0), dataset) else: Plotter.plot(plotPane, sfh.getAxis(0), dataset) elif dataType == SRS: sfh = loadSRSData(filename) if Overlay: Plotter.plotOver(plotPane, sfh.getAxis(0), sfh.getAxis(1)) else: Plotter.plot(plotPane, sfh.getAxis(0), sfh.getAxis(1)) elif dataType == PSD: if not str(filename).find("mythen") == -1: # mythen data file dataset = loadMythenData(filename) data=dataset.getCountDataSet() data.setName(filename) if Overlay: Plotter.plotOver(plotPane, dataset.getAngleDataSet(), data) else: Plotter.plot(plotPane, dataset.getAngleDataSet(), data) else: parts = str(filename).split(File.separator) name=parts[-1] names=str(name).split(".") if representsInt(names[0]): # Mythen SRS file for each in loadMythenSRSFile(filename): dataset = loadMythenData(str(each) + ".dat") data=dataset.getCountDataSet() data.setName(each) if Overlay: Plotter.plotOver(plotPane, dataset.getAngleDataSet(), data) else: Plotter.plot(plotPane, dataset.getAngleDataSet(), data) else: dataset = loadMythenData(filename) data=dataset.getCountDataSet() data.setName(filename) if Overlay: Plotter.plotOver(plotPane, dataset.getAngleDataSet(), data) else: Plotter.plot(plotPane, dataset.getAngleDataSet(), data) elif dataType == RAW: # mythen raw data file dataset = loadMythenRawData(filename) data=DoubleDataset(dataset.getCountArray(), dataset.getCountArray().length) channeldata=DoubleDataset(dataset.getChannelArray(),dataset.getChannelArray().length) data.setName(filename) if Overlay: Plotter.plotOver(plotPane, channeldata, data) SDAPlotter.addPlot(plotPane, "", channeldata, data, "delta", "counts") else: Plotter.plot(plotPane, channeldata, data) SDAPlotter.plot(plotPane, "", channeldata, data, "delta", "counts") else: print "Data Type is not recognised or supported." print "Plotting completed."
def plot_getbean(name): jb = _plotter.getGuiBean(name) _wrap_gui_bean(jb) return jb