def test_FluxfitDisplay(self): logger.info('== {} =='.format(self._testMethodName)) ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger) min_focpos_fwhm, val_fwhm, par, flag= ft.fitData() if flag!=None: resultFitFwhm=ResultFit( ambientTemp='20.1', ftName='UNK', extrFitPos=min_focpos_fwhm, extrFitVal=val_fwhm, fitPar=par, fitFlag=flag, color='blue', ylabel='FWHM [px]: blue', titleResult='fwhm:{0:5d}'.format(int(min_focpos_fwhm)) ) fd = FitDisplay(date=self.date, comment='unittest', logger=logger) fd.fitDisplay(dataFit=self.dataFitFwhm, resultFit=resultFitFwhm, xdisplay=False) x=np.array([p for p in self.dataFitFlux.pos]) y=np.array([v for v in self.dataFitFlux.val]) wmean= np.average(a=x, weights=y) xy= zip(x,y) wstd = np.std(a=xy) # scale the values [a.u.] sv = [max(self.dataFitFwhm.val) / max(self.dataFitFlux.val) * z for z in self.dataFitFlux.val] self.dataFitFlux.val=sv # gaussian self.parFlux= np.array([ 10., wmean, wstd/4., 2.]) ft = FitFunction(dataFit=self.dataFitFlux, logger=logger) max_focpos_flux, val_flux, par, flag= ft.fitData() if flag!=None: resultFitFlux=ResultFit( ambientTemp='20.1', ftName='UNK', extrFitPos=max_focpos_flux, extrFitVal=val_flux, fitPar=par, fitFlag=flag, color='red', ylabel='FWHM [px]: blue, Flux [a.u.]:red', titleResult='fwhm:{0:5d}, flux: {1:5d}'.format(int(resultFitFwhm.extrFitPos), int(max_focpos_flux)) ) fd.fitDisplay(dataFit=self.dataFitFlux, resultFit=resultFitFlux, xdisplay=False)
def test_FwhmfitDisplay(self): logger.info('== {} =='.format(self._testMethodName)) ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger) min_focpos_fwhm, val_fwhm, par, flag = ft.fitData() resultFitFwhm = ResultFit(ambientTemp='20.1', ftName='UNK', extrFitPos=min_focpos_fwhm, extrFitVal=val_fwhm, fitPar=par, fitFlag=flag, color='blue', ylabel='FWHM [px]: blue', titleResult='fwhm:{0:5d}'.format( int(min_focpos_fwhm))) self.fd = FitDisplay(date=self.date, comment='unittest', logger=logger) self.fd.fitDisplay(dataFit=self.dataFitFwhm, resultFit=resultFitFwhm, xdisplay=False)
def display(self): """Plot data, fitted function for FWHM and optionally flux. """ # plot them through ds9 in parallel to the fit ds9DisplayThread = None if self.Ds9Display and self.xdisplay: # start thread ds9DisplayThread = Ds9DisplayThread(debug=self.debug, dataSxtr=self.dataSxtr, logger= self.logger) ds9DisplayThread.start() elif self.Ds9Display and not self.xdisplay: self.logger.warn('analyze: OOOOOOOOPS, no ds9 display available') if self.dataSxtr[0].assocFn is not None: ft=FitDisplay(date = self.date, comment='ASSOC', logger=self.logger) else: ft=FitDisplay(date = self.date, logger=self.logger) if self.i_flux is None: ft.fitDisplay(dataFit=self.dataFitFwhm, resultFit=self.resultFitFwhm, display=self.FitDisplay, xdisplay = self.xdisplay) else: # plot FWHM but don't show ft.fitDisplay(dataFit=self.dataFitFwhm, resultFit=self.resultFitFwhm, show=False, display=self.FitDisplay, xdisplay = self.xdisplay) ft.fitDisplay(dataFit=self.dataFitFlux, resultFit=self.resultFitFlux, display=self.FitDisplay, xdisplay = self.xdisplay) # very important (otherwise all plots show up in next show()) ft.ax1=None # http://stackoverflow.com/questions/741877/how-do-i-tell-matplotlib-that-i-am-done-with-a-plot ft.fig.clf() ft.fig=None ft=None # stop ds9 display thread if self.Ds9Display and self.xdisplay: ds9DisplayThread.join(timeout=1.)
def test_FluxfitDisplay(self): logger.info('== {} =='.format(self._testMethodName)) ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger) min_focpos_fwhm, val_fwhm, par, flag = ft.fitData() if flag != None: resultFitFwhm = ResultFit(ambientTemp='20.1', ftName='UNK', extrFitPos=min_focpos_fwhm, extrFitVal=val_fwhm, fitPar=par, fitFlag=flag, color='blue', ylabel='FWHM [px]: blue', titleResult='fwhm:{0:5d}'.format( int(min_focpos_fwhm))) fd = FitDisplay(date=self.date, comment='unittest', logger=logger) fd.fitDisplay(dataFit=self.dataFitFwhm, resultFit=resultFitFwhm, xdisplay=False) x = np.array([p for p in self.dataFitFlux.pos]) y = np.array([v for v in self.dataFitFlux.val]) wmean = np.average(a=x, weights=y) xy = zip(x, y) wstd = np.std(a=xy) # scale the values [a.u.] sv = [ max(self.dataFitFwhm.val) / max(self.dataFitFlux.val) * z for z in self.dataFitFlux.val ] self.dataFitFlux.val = sv # gaussian self.parFlux = np.array([10., wmean, wstd / 4., 2.]) ft = FitFunction(dataFit=self.dataFitFlux, logger=logger) max_focpos_flux, val_flux, par, flag = ft.fitData() if flag != None: resultFitFlux = ResultFit( ambientTemp='20.1', ftName='UNK', extrFitPos=max_focpos_flux, extrFitVal=val_flux, fitPar=par, fitFlag=flag, color='red', ylabel='FWHM [px]: blue, Flux [a.u.]:red', titleResult='fwhm:{0:5d}, flux: {1:5d}'.format( int(resultFitFwhm.extrFitPos), int(max_focpos_flux))) fd.fitDisplay(dataFit=self.dataFitFlux, resultFit=resultFitFlux, xdisplay=False)
def test_FwhmfitDisplay(self): logger.info('== {} =='.format(self._testMethodName)) ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger) min_focpos_fwhm, val_fwhm, par, flag= ft.fitData() resultFitFwhm=ResultFit( ambientTemp='20.1', ftName='UNK', extrFitPos=min_focpos_fwhm, extrFitVal=val_fwhm, fitPar=par, fitFlag=flag, color='blue', ylabel='FWHM [px]: blue', titleResult='fwhm:{0:5d}'.format(int(min_focpos_fwhm)) ) self.fd = FitDisplay(date=self.date, comment='unittest', logger=logger) self.fd.fitDisplay(dataFit=self.dataFitFwhm, resultFit=resultFitFwhm, xdisplay=False)
class TestFitDisplay(unittest.TestCase): def tearDown(self): try: os.unlink(self.plotFnIn) except: pass def setUp(self): from rts2saf.data import DataFitFwhm, DataFitFlux, DataSxtr pos = np.asarray([ 2000., 2100., 2200., 2300., 2400., 2500., 2600., 2700., 2800., 2900., 3000.]) fwhm = np.asarray([ 40., 30., 20., 15., 10., 5., 10., 15., 20., 30., 40.]) stdFocPos = np.asarray([ 20., 20., 20., 20., 20., 20., 20., 20., 20., 20., 20.]) stdFwhm = np.asarray([ 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]) flux = np.asarray([ 2.2, 3.1, 4.8, 7.9, 10.1, 11.2, 11.1, 8.2, 5.4, 3.2, 2.2]) stdFlux = np.asarray([ 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]) dataSxtr=list() for i in range( 0, len(pos)-1): dataSxtr.append( DataSxtr( focPos=pos[i], stdFocPos=stdFocPos[i], fwhm=fwhm[i], stdFwhm=stdFwhm[i], flux=flux[i], stdFlux=stdFlux[i], catalog=[1, 2, 3] ) ) self.plotFnIn='./test-plot.png' self.date = '2013-09-08T09:30:09' self.dataFitFwhm=DataFitFwhm( dataSxtr=dataSxtr, ambientTemp='21.3', plotFn= self.plotFnIn) self.dataFitFlux=DataFitFlux( dataSxtr=dataSxtr, dataFitFwhm=self.dataFitFwhm, ambientTemp='21.3', plotFn= self.plotFnIn) #@unittest.skip('feature not yet implemented') def test_FwhmfitDisplay(self): logger.info('== {} =='.format(self._testMethodName)) ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger) min_focpos_fwhm, val_fwhm, par, flag= ft.fitData() resultFitFwhm=ResultFit( ambientTemp='20.1', ftName='UNK', extrFitPos=min_focpos_fwhm, extrFitVal=val_fwhm, fitPar=par, fitFlag=flag, color='blue', ylabel='FWHM [px]: blue', titleResult='fwhm:{0:5d}'.format(int(min_focpos_fwhm)) ) self.fd = FitDisplay(date=self.date, comment='unittest', logger=logger) self.fd.fitDisplay(dataFit=self.dataFitFwhm, resultFit=resultFitFwhm, xdisplay=False) #@unittest.skip('feature not yet implemented') def test_FluxfitDisplay(self): logger.info('== {} =='.format(self._testMethodName)) ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger) min_focpos_fwhm, val_fwhm, par, flag= ft.fitData() if flag!=None: resultFitFwhm=ResultFit( ambientTemp='20.1', ftName='UNK', extrFitPos=min_focpos_fwhm, extrFitVal=val_fwhm, fitPar=par, fitFlag=flag, color='blue', ylabel='FWHM [px]: blue', titleResult='fwhm:{0:5d}'.format(int(min_focpos_fwhm)) ) fd = FitDisplay(date=self.date, comment='unittest', logger=logger) fd.fitDisplay(dataFit=self.dataFitFwhm, resultFit=resultFitFwhm, xdisplay=False) x=np.array([p for p in self.dataFitFlux.pos]) y=np.array([v for v in self.dataFitFlux.val]) wmean= np.average(a=x, weights=y) xy= zip(x,y) wstd = np.std(a=xy) # scale the values [a.u.] sv = [max(self.dataFitFwhm.val) / max(self.dataFitFlux.val) * z for z in self.dataFitFlux.val] self.dataFitFlux.val=sv # gaussian self.parFlux= np.array([ 10., wmean, wstd/4., 2.]) ft = FitFunction(dataFit=self.dataFitFlux, logger=logger) max_focpos_flux, val_flux, par, flag= ft.fitData() if flag!=None: resultFitFlux=ResultFit( ambientTemp='20.1', ftName='UNK', extrFitPos=max_focpos_flux, extrFitVal=val_flux, fitPar=par, fitFlag=flag, color='red', ylabel='FWHM [px]: blue, Flux [a.u.]:red', titleResult='fwhm:{0:5d}, flux: {1:5d}'.format(int(resultFitFwhm.extrFitPos), int(max_focpos_flux)) ) fd.fitDisplay(dataFit=self.dataFitFlux, resultFit=resultFitFlux, xdisplay=False)
def display(self): """Plot data, fitted function for FWHM and optionally flux. """ # plot them through ds9 in parallel to the fit ds9DisplayThread = None if self.Ds9Display and self.xdisplay: # start thread ds9DisplayThread = Ds9DisplayThread(debug=self.debug, dataSxtr=self.dataSxtr, logger=self.logger) ds9DisplayThread.start() elif self.Ds9Display and not self.xdisplay: self.logger.warn('analyze: OOOOOOOOPS, no ds9 display available') if self.dataSxtr[0].assocFn is not None: ft = FitDisplay(date=self.date, comment='ASSOC', logger=self.logger) else: ft = FitDisplay(date=self.date, logger=self.logger) if self.i_flux is None: ft.fitDisplay(dataFit=self.dataFitFwhm, resultFit=self.resultFitFwhm, display=self.FitDisplay, xdisplay=self.xdisplay) else: # plot FWHM but don't show ft.fitDisplay(dataFit=self.dataFitFwhm, resultFit=self.resultFitFwhm, show=False, display=self.FitDisplay, xdisplay=self.xdisplay) ft.fitDisplay(dataFit=self.dataFitFlux, resultFit=self.resultFitFlux, display=self.FitDisplay, xdisplay=self.xdisplay) # very important (otherwise all plots show up in next show()) ft.ax1 = None # http://stackoverflow.com/questions/741877/how-do-i-tell-matplotlib-that-i-am-done-with-a-plot ft.fig.clf() ft.fig = None ft = None # stop ds9 display thread if self.Ds9Display and self.xdisplay: ds9DisplayThread.join(timeout=1.)
class TestFitDisplay(unittest.TestCase): def tearDown(self): try: os.unlink(self.plotFnIn) except: pass def setUp(self): from rts2saf.data import DataFitFwhm, DataFitFlux, DataSxtr pos = np.asarray([ 2000., 2100., 2200., 2300., 2400., 2500., 2600., 2700., 2800., 2900., 3000. ]) fwhm = np.asarray( [40., 30., 20., 15., 10., 5., 10., 15., 20., 30., 40.]) stdFocPos = np.asarray( [20., 20., 20., 20., 20., 20., 20., 20., 20., 20., 20.]) stdFwhm = np.asarray([2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]) flux = np.asarray( [2.2, 3.1, 4.8, 7.9, 10.1, 11.2, 11.1, 8.2, 5.4, 3.2, 2.2]) stdFlux = np.asarray( [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]) dataSxtr = list() for i in range(0, len(pos) - 1): dataSxtr.append( DataSxtr(focPos=pos[i], stdFocPos=stdFocPos[i], fwhm=fwhm[i], stdFwhm=stdFwhm[i], flux=flux[i], stdFlux=stdFlux[i], catalog=[1, 2, 3])) self.plotFnIn = './test-plot.png' self.date = '2013-09-08T09:30:09' self.dataFitFwhm = DataFitFwhm(dataSxtr=dataSxtr, ambientTemp='21.3', plotFn=self.plotFnIn) self.dataFitFlux = DataFitFlux(dataSxtr=dataSxtr, dataFitFwhm=self.dataFitFwhm, ambientTemp='21.3', plotFn=self.plotFnIn) #@unittest.skip('feature not yet implemented') def test_FwhmfitDisplay(self): logger.info('== {} =='.format(self._testMethodName)) ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger) min_focpos_fwhm, val_fwhm, par, flag = ft.fitData() resultFitFwhm = ResultFit(ambientTemp='20.1', ftName='UNK', extrFitPos=min_focpos_fwhm, extrFitVal=val_fwhm, fitPar=par, fitFlag=flag, color='blue', ylabel='FWHM [px]: blue', titleResult='fwhm:{0:5d}'.format( int(min_focpos_fwhm))) self.fd = FitDisplay(date=self.date, comment='unittest', logger=logger) self.fd.fitDisplay(dataFit=self.dataFitFwhm, resultFit=resultFitFwhm, xdisplay=False) #@unittest.skip('feature not yet implemented') def test_FluxfitDisplay(self): logger.info('== {} =='.format(self._testMethodName)) ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger) min_focpos_fwhm, val_fwhm, par, flag = ft.fitData() if flag != None: resultFitFwhm = ResultFit(ambientTemp='20.1', ftName='UNK', extrFitPos=min_focpos_fwhm, extrFitVal=val_fwhm, fitPar=par, fitFlag=flag, color='blue', ylabel='FWHM [px]: blue', titleResult='fwhm:{0:5d}'.format( int(min_focpos_fwhm))) fd = FitDisplay(date=self.date, comment='unittest', logger=logger) fd.fitDisplay(dataFit=self.dataFitFwhm, resultFit=resultFitFwhm, xdisplay=False) x = np.array([p for p in self.dataFitFlux.pos]) y = np.array([v for v in self.dataFitFlux.val]) wmean = np.average(a=x, weights=y) xy = zip(x, y) wstd = np.std(a=xy) # scale the values [a.u.] sv = [ max(self.dataFitFwhm.val) / max(self.dataFitFlux.val) * z for z in self.dataFitFlux.val ] self.dataFitFlux.val = sv # gaussian self.parFlux = np.array([10., wmean, wstd / 4., 2.]) ft = FitFunction(dataFit=self.dataFitFlux, logger=logger) max_focpos_flux, val_flux, par, flag = ft.fitData() if flag != None: resultFitFlux = ResultFit( ambientTemp='20.1', ftName='UNK', extrFitPos=max_focpos_flux, extrFitVal=val_flux, fitPar=par, fitFlag=flag, color='red', ylabel='FWHM [px]: blue, Flux [a.u.]:red', titleResult='fwhm:{0:5d}, flux: {1:5d}'.format( int(resultFitFwhm.extrFitPos), int(max_focpos_flux))) fd.fitDisplay(dataFit=self.dataFitFlux, resultFit=resultFitFlux, xdisplay=False)