Esempio n. 1
0
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
Esempio n. 4
0
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()