Exemplo n.º 1
0
def test_center_of_image():
    img = np.zeros((5, 5))
    assert center_of_image(img) == (2, 2)
    img = np.zeros((5, 7))
    xcenter, ycenter = center_of_image(img)
    assert xcenter == 3
    assert ycenter == 2
Exemplo n.º 2
0
def test_centroid_sym():
    y, x = centered_grid_quadratic(51)
    img = Gaussian2D()(x, y)
    assert np.all(np.isclose(centroid(img), center_of_image(img)))

    y, x = centered_grid((51, 71))
    img = Gaussian2D()(x, y)
    assert np.all(np.isclose(centroid(img), center_of_image(img)))
Exemplo n.º 3
0
def test_centroid_asym(xy):
    y_grid, x_grid = centered_grid_quadratic(101)
    xy = np.array(xy)
    xy_expected = xy + center_of_image(x_grid)

    img = Gaussian2D(x_mean=xy[0], y_mean=xy[1])(x_grid, y_grid)
    assert np.all(np.isclose(centroid(img), xy_expected))
Exemplo n.º 4
0
def test_anisocado_model_centered(anisocado_model):

    data = anisocado_model.render()
    actual = centroid_quadratic(data)
    expected = center_of_image(data)

    assert np.all(np.abs(np.array(actual) - np.array(expected)) < 1e-8)
Exemplo n.º 5
0
def test_anisocado_psf_even(psf_effect_even):
    data = psf_effect_even.data
    actual = centroid_quadratic(data, fit_boxsize=6)
    expected = center_of_image(data)

    # TODO ideally this should be a lot tighter, but honestly even arrays are probably bad anyway
    # TODO does this work wih <0.001 on different computer?
    assert np.all(np.abs(np.array(actual) - np.array(expected)) < 0.05)
Exemplo n.º 6
0
def test_single_star_image_scopesim_shift(single_star):
    """This test should not fail after scopesim fixes the coordinate transformation"""
    img, table = single_star

    xcenter, ycenter = center_of_image(img)
    xref, yref = table[INPUT_TABLE_NAMES[X]][0], table[INPUT_TABLE_NAMES[Y]][0]

    assert np.abs(xcenter-xref) < 0.01
    assert np.abs(ycenter-yref) < 0.01
Exemplo n.º 7
0
def test_single_star_image(single_star):
    img, table = single_star

    xcenter, ycenter = center_of_image(img)
    xcentroid, ycentroid = centroid_quadratic(img, fit_boxsize=5)
    xref, yref = table[INPUT_TABLE_NAMES[X]][0], table[INPUT_TABLE_NAMES[Y]][0]

    assert np.abs(xref-xcentroid) < 0.005
    assert np.abs(yref-ycentroid) < 0.005
Exemplo n.º 8
0
    grid_result_baseline['flux_fit'])
grid_result_epsf_plot['flux_fit'] /= offset

plot_dev_vs_mag(grid_result_baseline,
                create_figure=False,
                label='known PSF',
                alpha=0.4)
plot_dev_vs_mag(grid_result_epsf_plot,
                create_figure=False,
                label='with epsf',
                alpha=0.4)
plt.tight_layout()
save_plot(out_dir, 'synthetic_grid_magdevepsf')

# %%
center_of_image(epsf.data), centroid_quadratic(epsf.data, fit_boxsize=5)

# %%
plt.figure()
plt.imshow(pre_epsf.data, norm=LogNorm())
plt.colorbar()
save_plot(out_dir, 'failed_epsf_example')

# %%
img_grid, tab_grid = read_or_generate_image(
    'scopesim_grid_16_perturb2_mag18_24_subpixel')

guess_table = prepare_table(tab_grid)

photometry = grid_photometry_epsf()
photometry.psf_model = epsf
Exemplo n.º 9
0
def make_delta_model():
    from photutils import FittableImageModel
    data = np.zeros((401, 401))
    ycenter, xcenter = center_of_image(data)
    data[int(ycenter),int(xcenter)] = 1
    return FittableImageModel(data, oversampling=2, degree=5)
Exemplo n.º 10
0
def test_lowpass(xsize, ysize):
    img = np.ones((ysize, xsize))
    transform = lowpass(5)

    assert np.all(np.isclose(centroid(transform(img)), center_of_image(img)))
Exemplo n.º 11
0
def test_anisocado_psf_odd(psf_effect_odd):
    data = psf_effect_odd.data
    actual = centroid_quadratic(data)
    expected = center_of_image(data)

    assert np.all(np.abs(np.array(actual) - np.array(expected)) < 1e-8)