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 save(self, collectionNumber=None): voltages=[] electrometers=[] if collectionNumber == None: filename = self.filename+"_"+self.getName()+".dat" print "concatenating data points to produce P-E data..." for each in self.voltages: voltages += each voltages += [] for each in self.electrometers: electrometers += each electrometers += [] else: filename = self.filename+"_"+self.getName()+"_"+str(collectionNumber)+".dat" print "summing data points to produce P-E data..." voltages = sum_datasets(self.voltages) electrometers = sum_datasets(self.electrometers) print "%s: saving data to %s" % (self.getName(), filename) if len(voltages) != len(electrometers): print "***Warning: voltage nord: %d, electrometer nord: %d" % (len(voltages),len(electrometers)) self.file=open(filename, "w") for voltage, electrometer in zip(voltages, electrometers): self.file.write("%f\t%f\n"%(voltage, electrometer)) self.file.close() print "%s: save data to %s completed." % (self.getName(), filename) voltagearray=scisoftpy.array(voltages) electrometerarray=scisoftpy.array(electrometers) vds=scisoftpy.toDS(voltagearray) eds=scisoftpy.toDS(electrometerarray) print "plotting PE-loop in 'DataPlot' panel..." if self.firstData: Plotter.plot("DataPlot", vds, eds) self.firstData=False else: Plotter.plotOver("DataPlot", vds, eds)
def plotAxisToDataVectorPlot(self, plotName, xColumnName, yColumnName): print "plotAxisToDataVectorPlot", plotName, xColumnName, yColumnName xdataset = DatasetFactory.createFromObject(self.getColumn(xColumnName)) xdataset.setName(xColumnName) ydataset = DatasetFactory.createFromObject(self.getColumn(yColumnName)) ydataset.setName(yColumnName) if plotName is not None: Plotter.plot(plotName, xdataset, [ydataset])
def plotPEdata(self, *args, **kwargs): xarray=scisoftpy.array(kwargs[self.hv][args[0]]) yrarray=scisoftpy.array(kwargs[self.el][args[0]]) vds=scisoftpy.toDS(xarray) eds=scisoftpy.toDS(yrarray) print "plotting PE-loop in 'DataPlot' panel..." if self.firstData: Plotter.plot("DataPlot", vds, eds) self.firstData=False else: Plotter.plotOver("DataPlot", vds, eds)
def plotResult(self, result): if self.plotPanel is not None: try: if Plotter is not None: #swing Plotter.plot(self.plotPanel, *result.makeplotdata) else: #rcp dnp.plot.clear(self.plotPanel) result.plot(name=self.plotPanel, title=self.plotPanel) except Exception, e: print "Could not plot two gaussian fit" print e.message
def plotData(self): newHead = self.getDataNumbers() if self.arrayHead >= newHead: print "No new data added for plotting" return self.arrayHead = newHead #to get new data arrayEnergyPGM = self.energyPGM.cagetArrayDouble() arrayEnergyIDGAP = self.energyIDGAP.cagetArrayDouble() arrayChannel01 = self.channel01.cagetArrayDouble() arrayChannel02 = self.channel02.cagetArrayDouble() arrayChannel03 = self.channel03.cagetArrayDouble() arrayChannel04 = self.channel04.cagetArrayDouble() dataSetEnergyPGM = dnp.zeros([newHead]) dataSetEnergyPGM.setName("PGM Energy") dataSetEnergyIDGAP = dnp.zeros([newHead]) dataSetEnergyIDGAP.setName("ID Gap Energy") dataSetChannel01 = dnp.zeros([newHead]) dataSetChannel01.setName("Channel 1") dataSetChannel02 = dnp.zeros([newHead]) dataSetChannel02.setName("Channel 2") dataSetChannel03 = dnp.zeros([newHead]) dataSetChannel03.setName("Channel 3") dataSetChannel04 = dnp.zeros([newHead]) dataSetChannel04.setName("Channel 4") for i in range(0, newHead): #print i, arrayEnergyPGM[i], arrayEnergyIDGAP[i], arrayChannel01[i], arrayChannel02[i], arrayChannel03[i], arrayChannel04[i]; dataSetEnergyPGM[i] = arrayEnergyPGM[i] dataSetEnergyIDGAP[i] = arrayEnergyIDGAP[i] dataSetChannel01[i] = arrayChannel01[i] dataSetChannel02[i] = arrayChannel02[i] dataSetChannel03[i] = arrayChannel03[i] dataSetChannel04[i] = arrayChannel04[i] #print i, arrayEnergyPGM[i], arrayEnergyIDGAP[i], arrayChannel01[i], arrayChannel02[i], arrayChannel03[i], arrayChannel04[i]; dvp = Plotter() indexDataSet = dataSetEnergyPGM.getIndexDataSet() #dvp.plot("Data Vector", indexDataSet, [dataSetChannel01, dataSetChannel02, dataSetChannel03, dataSetChannel04]); dvp.plot("Fast Scan Panel", dataSetEnergyPGM, [ dataSetChannel01, dataSetChannel02, dataSetChannel03, dataSetChannel04 ])
def plotWholeData(self, numberOfPoints): arrayEnergyPGM = self.energyPGM.cagetArrayDouble() arrayEnergyIDGAP = self.energyIDGAP.cagetArrayDouble() arrayChannel01 = self.channel01.cagetArrayDouble() arrayChannel02 = self.channel02.cagetArrayDouble() arrayChannel03 = self.channel03.cagetArrayDouble() arrayChannel04 = self.channel04.cagetArrayDouble() dataSetPGM = DatasetFactory.zeros(numberOfPoints) for i in range(numberOfPoints): dataSetPGM.set(arrayEnergyPGM[i], i) dvp = Plotter() dvp.plotOver("Data Vector", dataSetPGM.getIndexDataSet(), dataSetPGM)
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 plot(filename, Overlay=True): '''Plot collected, rebinned MAC data on "MAC" Panel. syntax: plot(name,[True|False]) where: name is the file name or file number True means clear old plot data from the graph (Default) False means plot over the exist data on the graph Negative file number refers to the past data collected relative to the current one (0). e.g. plot(0) --> plot current data just collected plot(-1) --> plot the last data collected plot(1121) --> plot data with file number 1121 plot(0,False) --> clear graph before plotting current data ''' sfh = loadMacData(filename) print("Data plotting, please wait ...") if Overlay: Plotter.plotOver("MAC", sfh.getAxis(0), sfh.getAxis(1)) else: Plotter.plot("MAC", sfh.getAxis(0), sfh.getAxis(1))
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."