def test_Linefit(): hdu = fits.open(inimage) # create the data arra data = hdu[1].data # create the header information grating = hdu[1].header['GRATING'].strip() grang = hdu[1].header['GR-ANGLE'] arang = hdu[1].header['AR-ANGLE'] slit = float(hdu[1].header['MASKID']) xbin, ybin = hdu[1].header['CCDSUM'].strip().split() # print instrume, grating, grang, arang, filter # print xbin, ybin # print len(data), len(data[0]) # create the RSS Model rssmodel = RSSModel.RSSModel(grating_name=grating, gratang=grang, camang=arang, slit=slit, xbin=int(xbin), ybin=int(ybin)) alpha = rssmodel.rss.gratang beta = rssmodel.rss.gratang - rssmodel.rss.camang sigma = 1e7 * rssmodel.rss.calc_resolelement(alpha, beta) # create the observed spectrum midpoint = int(0.5 * len(data)) xarr = np.arange(len(data[0]), dtype='float') farr = data[midpoint, :] obs_spec = Spectrum(xarr, farr, stype='continuum') # create artificial spectrum stype = 'line' w, s = np.loadtxt(inspectra, usecols=(0, 1), unpack=True) cal_spec = Spectrum(w, s, wrange=[4000, 5000], dw=0.1, stype=stype, sigma=sigma) cal_spec.flux = cal_spec.set_dispersion(sigma=sigma) cal_spec.flux = cal_spec.flux * obs_spec.flux.max() / cal_spec.flux.max() + 1 lf = LF.LineFit(obs_spec, cal_spec, function='legendre', order=3) lf.set_coef([4.23180070e+03, 2.45517852e-01, -4.46931562e-06, -2.22067766e-10]) print(lf(2000)) print(lf.obs_spec.get_flux(2000), lf.flux(2000)) print('chisq ', (lf.errfit(lf.coef, xarr, farr) ** 2).sum() / 1e7) lf.set_coef([4.23280070e+03, 2.45517852e-01, -4.46931562e-06, -2.22067766e-10]) print(lf(2000)) print(lf.obs_spec.get_flux(2000), lf.flux(2000)) print('chisq ', (lf.errfit(lf.coef, xarr, farr) ** 2).sum() / 1e7) # print lf.lfit(xarr) # print lf.coef # print lf(2000) # print lf.results pl.figure() pl.plot(lf(lf.obs_spec.wavelength), lf.obs_spec.get_flux(xarr)) pl.plot(lf.cal_spec.wavelength, lf.cal_spec.flux) pl.show()
def test_Linefit(): hdu = fits.open(inimage) # create the header information grating = hdu[1].header['GRATING'].strip() grang = hdu[1].header['GR-ANGLE'] arang = hdu[1].header['AR-ANGLE'] slit = float(hdu[1].header['MASKID']) xbin, ybin = hdu[1].header['CCDSUM'].strip().split() # print instrume, grating, grang, arang, filter # print xbin, ybin # print len(data), len(data[0]) # create the RSS Model rssmodel = RSSModel.RSSModel(grating_name=grating, gratang=grang, camang=arang, slit=slit, xbin=int(xbin), ybin=int(ybin)) alpha = rssmodel.rss.gratang beta = rssmodel.rss.gratang - rssmodel.rss.camang sigma = 1e7 * rssmodel.rss.calc_resolelement(alpha, beta) # create artificial spectrum # create the spectrum stype = 'line' w, s = np.loadtxt(inspectra, usecols=(0, 1), unpack=True) spec = Spectrum(w, s, wrange=[4000, 5000], dw=0.1, stype=stype, sigma=sigma) spec.flux = spec.set_dispersion(sigma=sigma)
def test_Linefit(): hdu = pyfits.open(inimage) # create the data arra data = hdu[1].data # create the header information instrume = hdu[1].header['INSTRUME'].strip() grating = hdu[1].header['GRATING'].strip() grang = hdu[1].header['GR-ANGLE'] arang = hdu[1].header['AR-ANGLE'] filter = hdu[1].header['FILTER'].strip() slit = float(hdu[1].header['MASKID']) xbin, ybin = hdu[1].header['CCDSUM'].strip().split() # print instrume, grating, grang, arang, filter # print xbin, ybin # print len(data), len(data[0]) # create the RSS Model rssmodel = RSSModel.RSSModel(grating_name=grating, gratang=grang, camang=arang, slit=slit, xbin=int(xbin), ybin=int(ybin)) alpha = rssmodel.rss.gratang beta = rssmodel.rss.gratang - rssmodel.rss.camang sigma = 1e7 * rssmodel.rss.calc_resolelement(alpha, beta) # create artificial spectrum # create the spectrum stype = 'line' w, s = np.loadtxt(inspectra, usecols=(0, 1), unpack=True) spec = Spectrum(w, s, wrange=[4000, 5000], dw=0.1, stype='line', sigma=sigma) spec.flux = spec.set_dispersion(sigma=sigma) sw_arr, sf_arr = spec.wavelength, spec.flux
def test_Linefit(): hdu = fits.open(inimage) # create the data arra data = hdu[1].data # create the header information grating = hdu[1].header['GRATING'].strip() grang = hdu[1].header['GR-ANGLE'] arang = hdu[1].header['AR-ANGLE'] slit = float(hdu[1].header['MASKID']) xbin, ybin = hdu[1].header['CCDSUM'].strip().split() # print instrume, grating, grang, arang, filter # print xbin, ybin # print len(data), len(data[0]) # create the RSS Model rssmodel = RSSModel.RSSModel(grating_name=grating, gratang=grang, camang=arang, slit=slit, xbin=int(xbin), ybin=int(ybin)) alpha = rssmodel.rss.gratang beta = rssmodel.rss.gratang - rssmodel.rss.camang sigma = 1e7 * rssmodel.rss.calc_resolelement(alpha, beta) # create the observed spectrum midpoint = int(0.5 * len(data)) xarr = np.arange(len(data[0]), dtype='float') farr = data[midpoint, :] obs_spec = Spectrum(xarr, farr, stype='continuum') # create artificial spectrum stype = 'line' w, s = np.loadtxt(inspectra, usecols=(0, 1), unpack=True) cal_spec = Spectrum(w, s, wrange=[4000, 5000], dw=0.1, stype=stype, sigma=sigma) cal_spec.flux = cal_spec.set_dispersion(sigma=sigma) cal_spec.flux = cal_spec.flux * obs_spec.flux.max() / cal_spec.flux.max( ) + 1 lf = LF.LineFit(obs_spec, cal_spec, function='legendre', order=3) lf.set_coef( [4.23180070e+03, 2.45517852e-01, -4.46931562e-06, -2.22067766e-10]) print(lf(2000)) print(lf.obs_spec.get_flux(2000), lf.flux(2000)) print('chisq ', (lf.errfit(lf.coef, xarr, farr)**2).sum() / 1e7) lf.set_coef( [4.23280070e+03, 2.45517852e-01, -4.46931562e-06, -2.22067766e-10]) print(lf(2000)) print(lf.obs_spec.get_flux(2000), lf.flux(2000)) print('chisq ', (lf.errfit(lf.coef, xarr, farr)**2).sum() / 1e7) # print lf.lfit(xarr) # print lf.coef # print lf(2000) # print lf.results pl.figure() pl.plot(lf(lf.obs_spec.wavelength), lf.obs_spec.get_flux(xarr)) pl.plot(lf.cal_spec.wavelength, lf.cal_spec.flux) pl.show()