def setUp(self): from rts2saf.data import DataFitFwhm, DataSxtr import numpy as np 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.ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger)
def _fitFwhm(self): minFitPos, minFitFwhm, fitPar, fitFlag = FitFunction( dataFit=self.dataFitFwhm, logger=self.logger, ).fitData() if minFitPos: self.logger.info( '_fitFwhm: FWHM FOC_DEF: {0:5d} : fitted minimum position, {1:4.1f}px FWHM, {2} ambient temperature' .format(int(minFitPos), minFitFwhm, self.dataFitFwhm.ambientTemp)) else: self.logger.warn('analyze: fit failed') self.resultFitFwhm = ResultFit() return self.resultFitFwhm = ResultFit( ambientTemp=self.dataFitFwhm.ambientTemp, ftName=self.dataFitFwhm.ftName, extrFitPos=minFitPos, extrFitVal=minFitFwhm, fitPar=fitPar, fitFlag=fitFlag, color='blue', ylabel='FWHM [px]: blue', titleResult='fwhm:{0:5d}'.format(int(minFitPos)))
def _fitFlux(self): maxFitPos, maxFitFlux, fitPar, fitFlag = FitFunction( dataFit=self.dataFitFlux, logger=self.logger, ).fitData() if fitFlag: self.logger.info( 'analyze: Flux FOC_DEF: {0:5d} : fitted maximum position, {1:4.1f}[a.u.] Flux, {2} ambient temperature' .format(int(maxFitPos), maxFitFlux, self.dataFitFlux.ambientTemp)) else: self.logger.warn('analyze: fit flux failed') self.resultFitFlux = ResultFit() return self.resultFitFlux = ResultFit( ambientTemp=self.dataFitFlux.ambientTemp, ftName=self.dataFitFlux.ftName, extrFitPos=maxFitPos, extrFitVal=maxFitFlux, fitPar=fitPar, fitFlag=fitFlag, color='red', ylabel='FWHM [px]: blue Flux [a.u.]: red', titleResult='fwhm:{0:5d}, flux: {1:5d}'.format( int(self.resultFitFwhm.extrFitPos), int(maxFitPos)))
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 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 TestFitFunction(unittest.TestCase): def tearDown(self): try: os.unlink(self.plotFnIn) except: pass def setUp(self): from rts2saf.data import DataFitFwhm, DataSxtr import numpy as np 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.ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger) def test_fitData(self): logger.info('== {} =='.format(self._testMethodName)) min_focpos_fwhm, val_fwhm, par, flag = self.ft.fitData() self.assertAlmostEqual(min_focpos_fwhm, 2507.66745331, places=3, msg='return value: {}'.format(min_focpos_fwhm))
def setUp(self): from rts2saf.data import DataFitFwhm, DataSxtr import numpy as np 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.ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger)
class TestFitFunction(unittest.TestCase): def tearDown(self): try: os.unlink(self.plotFnIn) except: pass def setUp(self): from rts2saf.data import DataFitFwhm, DataSxtr import numpy as np 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.ft = FitFunction(dataFit=self.dataFitFwhm, logger=logger) def test_fitData(self): logger.info('== {} =='.format(self._testMethodName)) min_focpos_fwhm, val_fwhm, par, flag= self.ft.fitData() self.assertAlmostEqual(min_focpos_fwhm, 2507.66745331, places=3, msg='return value: {}'.format(min_focpos_fwhm))
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)