コード例 #1
0
def bkg_subtraction(time, flux, scope="tpf", sigma=3):
    """Subtracts background flux from target pixel file.

    Parameters
    ----------
    scope : string, "tpf" or "postcard"
        If `tpf`, will use data from the target pixel file only to estimate and remove the background.
        If `postcard`, will use data from the entire postcard region to estimate and remove the background.
    sigma : float
        The standard deviation cut used to determine which pixels are representative of the background in each cadence.
    """

    tpf_flux_bkg = []

    sigma_clip = SigmaClip(sigma=sigma)
    #    bkg = MMMBackground(sigma_clip=sigma_clip)
    bkg = SExtractorBackground(sigma_clip=sigma_clip)

    bkg_MMM = MMMBackground(sigma_clip=sigma_clip)
    bkg_ModeEstimator = ModeEstimatorBackground(median_factor=3.,
                                                mean_factor=2.,
                                                sigma_clip=sigma_clip)
    bkg_Mean = MeanBackground(sigma_clip)
    bkg_Median = MedianBackground(sigma_clip)
    bkg_SExtractor = SExtractorBackground(sigma_clip)

    bkg_MMM_value = bkg_MMM.calc_background(flux[0])
    bkg_ModeEstimator_value = bkg_ModeEstimator.calc_background(flux[0])
    bkg_Mean_value = bkg_Mean.calc_background(flux[0])
    bkg_Median_value = bkg_Median.calc_background(flux[0])
    bkg_SExtractor_value = bkg_SExtractor.calc_background(flux[0])

    print("MMM Background = {}".format(bkg_MMM_value))
    print("ModeEstimator Background = {}".format(bkg_ModeEstimator_value))
    print("Mean Background = {}".format(bkg_Mean_value))
    print("Median Background = {}".format(bkg_Median_value))
    print("SExtractor Background = {}".format(bkg_SExtractor_value))

    for i in range(len(time)):
        bkg_value = bkg.calc_background(flux[i])
        tpf_flux_bkg.append(bkg_value)

    tpf_flux_bkg = np.array(tpf_flux_bkg)

    return tpf_flux_bkg
コード例 #2
0
ファイル: test_flux.py プロジェクト: dannygoldstein/fakes
def test_recovered_flux_aperture(science_image):

    with fits.open(science_image) as hdul:
        header = hdul[0].header
        wcs = WCS(header)
        footprint = wcs.calc_footprint()

    # realize fakes randomly throughout the footprint
    rx = rng.uniform(size=N_FAKE)
    ry = rng.uniform(size=N_FAKE)

    # keep things bright
    mag = rng.uniform(low=15, high=18, size=N_FAKE)

    minra, mindec = footprint.min(axis=0)
    maxra, maxdec = footprint.max(axis=0)

    coord = SkyCoord(minra + (maxra - minra) * rx,
                     mindec + (maxdec - mindec) * ry,
                     unit='deg')

    fakes.inject_psf(science_image, mag, coord)

    with fits.open(science_image) as hdul:
        data = hdul[-2].data
        header = hdul[0].header
        table = hdul[-1].data

    # subtract off the background
    sigma_clip = SigmaClip(sigma=3.0)
    bkg = MedianBackground(sigma_clip)
    bkg_val = bkg.calc_background(data)
    bkgsub = data - bkg_val

    APERTURE_RADIUS = 3 * u.pixel

    for row in table:
        ra, dec, mag = row['fake_ra'], row['fake_dec'], row['fake_mag']
        coord = SkyCoord(ra, dec, unit='deg')
        apertures = photutils.SkyCircularAperture(coord, r=APERTURE_RADIUS)
        phot_table = photutils.aperture_photometry(bkgsub, apertures, wcs=wcs)
        flux = phot_table['aperture_sum'][0]

        assert abs(-2.5 * np.log10(flux) + header['MAGZP'] + header['APCOR4'] -
                   mag) < 0.05