Exemple #1
0
def test_prf_vs_aperture_photometry():
    """Is the PRF photometry result consistent with simple aperture photometry?"""
    tpf_fn = get_pkg_data_filename(
        "data/ktwo201907706-c01-first-cadence.fits.gz")
    tpf = fits.open(tpf_fn)
    col, row = 173, 526
    prf = KeplerPRF(channel=tpf[0].header['CHANNEL'],
                    column=col,
                    row=row,
                    shape=tpf[1].data.shape)
    fluxo, colo, rowo, _ = models.get_initial_guesses(data=tpf[1].data,
                                                      X=prf.x,
                                                      Y=prf.y)
    bkgo = np.mean(tpf[1].data)
    aperture_flux = tpf[1].data.sum() - bkgo
    prior = JointPrior(GaussianPrior(mean=fluxo, var=math.sqrt(fluxo)),
                       UniformPrior(lb=prf.x[0], ub=prf.x[-1]),
                       UniformPrior(lb=prf.y[0], ub=prf.y[-1]),
                       GaussianPrior(mean=bkgo, var=bkgo))
    logL = PoissonPosterior(tpf[1].data, prf.evaluate, prior=prior)
    fitresult = logL.fit((fluxo, colo, rowo, bkgo))
    prf_flux, prf_col, prf_row, prf_bkg = fitresult.x
    assert np.isclose(prf_col, col + 9, rtol=1e-3)
    assert np.isclose(prf_row, row + 9, rtol=1e-3)
    assert np.isclose(prf_bkg, np.percentile(tpf[1].data, 10), rtol=0.1)
    assert np.isclose(aperture_flux, prf_flux, rtol=0.1)
Exemple #2
0
 def __init__(self,
              scale_col=GaussianPrior(mean=1, var=0.0001),
              scale_row=GaussianPrior(mean=1, var=0.0001),
              rotation_angle=UniformPrior(lb=-3.1415, ub=3.1415)):
     self.scale_col = self._parse_prior(scale_col)
     self.scale_row = self._parse_prior(scale_row)
     self.rotation_angle = self._parse_prior(rotation_angle)
Exemple #3
0
 def __init__(self,
              col,
              row,
              flux=UniformPrior(lb=0, ub=1e10),
              targetid=None):
     self.col = self._parse_prior(col)
     self.row = self._parse_prior(row)
     self.flux = self._parse_prior(flux)
     self.targetid = targetid
Exemple #4
0
def test_prf_vs_aperture_photometry():
    """Is the PRF photometry result consistent with simple aperture photometry?"""
    tpf_fn = get_pkg_data_filename(
        "data/ktwo201907706-c01-first-cadence.fits.gz")
    tpf = fits.open(tpf_fn)
    col, row = 173, 526
    prf = KeplerPRF(channel=tpf[0].header['CHANNEL'],
                    column=col,
                    row=row,
                    shape=tpf[1].data.shape)
    scene = SceneModel(prfs=prf)
    fluxo, colo, rowo, _ = get_initial_guesses(data=tpf[1].data,
                                               ref_col=prf.col_coord[0],
                                               ref_row=prf.row_coord[0])
    bkg = mode(tpf[1].data, None)[0]
    prior = JointPrior(UniformPrior(lb=0.1 * fluxo, ub=fluxo),
                       UniformPrior(lb=prf.col_coord[0], ub=prf.col_coord[-1]),
                       UniformPrior(lb=prf.row_coord[0], ub=prf.row_coord[-1]),
                       GaussianPrior(mean=1, var=1e-2),
                       GaussianPrior(mean=1, var=1e-2),
                       GaussianPrior(mean=0, var=1e-2),
                       UniformPrior(lb=bkg - .5 * bkg, ub=bkg + .5 * bkg))
    logL = PoissonPosterior(tpf[1].data, mean=scene, prior=prior)
    result = logL.fit(x0=prior.mean, method='powell')
    prf_flux, prf_col, prf_row, prf_scale_col, prf_scale_row, prf_rotation, prf_bkg = logL.opt_result.x
    assert result.success is True
    assert np.isclose(prf_col, colo, rtol=1e-1)
    assert np.isclose(prf_row, rowo, rtol=1e-1)
    assert np.isclose(prf_bkg, np.percentile(tpf[1].data, 10), rtol=0.1)

    # Test KeplerPRFPhotometry class
    kepler_phot = PRFPhotometry(scene_model=scene, prior=prior)
    tpf_flux = tpf[1].data.reshape(
        (1, tpf[1].data.shape[0], tpf[1].data.shape[1]))
    kepler_phot.fit(tpf_flux=tpf_flux)
    opt_params = kepler_phot.opt_params.reshape(-1)
    assert np.isclose(opt_params[0], prf_flux, rtol=0.1)
    assert np.isclose(opt_params[1], prf_col, rtol=1e-1)
    assert np.isclose(opt_params[2], prf_row, rtol=1e-1)
    assert np.isclose(opt_params[-1], prf_bkg, rtol=0.1)