def test_wcsgroupcat_match2ref(mock_fits_wcs, rect_imcat): ra, dec = mock_fits_wcs.all_pix2world(rect_imcat.catalog['x'], rect_imcat.catalog['y'], 0) refcat = Table([ra[:-1], dec[:-1]], names=('RA', 'DEC')) ref = RefCatalog(refcat) # unequal catalog lengths g = WCSGroupCatalog(rect_imcat) with pytest.raises(ValueError): g.match2ref(ref, match=None) refcat = Table([ra, dec], names=('RA', 'DEC')) ref = RefCatalog(refcat) # call calc_tanp_xy before matching with pytest.raises(RuntimeError) as e: g.match2ref(ref, match=TPMatch()) assert (e.value.args[0] == "'calc_tanp_xy()' should have been run " "prior to match2ref()") ref.calc_tanp_xy(rect_imcat.tpwcs) g.calc_tanp_xy(rect_imcat.tpwcs) g.catalog['matched_ref_id'] = np.ones(5, dtype=bool) g.catalog['_raw_matched_ref_idx'] = np.ones(5, dtype=bool) g.match2ref(ref, match=TPMatch())
def test_wcsrefcat_guarded_intersection_area(mock_fits_wcs, rect_imcat): ra, dec = mock_fits_wcs.all_pix2world(10 * rect_imcat.catalog['x'], 10 * rect_imcat.catalog['y'], 0) refcat = Table([ra, dec], names=('RA', 'DEC')) ref = RefCatalog(refcat) ref.calc_tanp_xy(rect_imcat.tpwcs) assert np.allclose( ref._guarded_intersection_area(ref), 2.9902125220360176e-10, atol=0.0, rtol=0.005, )
def test_wcsgroupcat_fit2ref(mock_fits_wcs, caplog, rect_imcat): ra, dec = mock_fits_wcs.all_pix2world(rect_imcat.catalog['x'], rect_imcat.catalog['y'], 0) refcat = Table([ra, dec], names=('RA', 'DEC')) ref = RefCatalog(refcat) ref.calc_tanp_xy(rect_imcat.tpwcs) g = WCSGroupCatalog(rect_imcat) g.calc_tanp_xy(rect_imcat.tpwcs) g.match2ref(ref) g.fit2ref(ref, rect_imcat.tpwcs, fitgeom='shift') g.apply_affine_to_wcs(g[0].tpwcs, np.identity(2), np.zeros(2)) g._images = [] g.align_to_ref(ref) assert caplog.record_tuples[-1][-1].endswith("Nothing to align.")
def test_wcsrefcat_intersections(mock_fits_wcs, rect_imcat): ra, dec = mock_fits_wcs.all_pix2world(10 * rect_imcat.catalog['x'], 10 * rect_imcat.catalog['y'], 0) refcat = Table([ra, dec], names=('RA', 'DEC')) ref = RefCatalog(refcat) ref.calc_tanp_xy(rect_imcat.tpwcs) pts1 = list(ref.polygon.points)[0] pts2 = list(ref.intersection(ref.polygon).points)[0] for pt1 in pts1: assert any(np.allclose(pt1, pt2) for pt2 in pts2) pts2 = list(ref.intersection(ref).points)[0] for pt1 in pts1: assert any(np.allclose(pt1, pt2) for pt2 in pts2) assert np.allclose( ref.intersection_area(ref), 2.9902125220360176e-10, atol=0.0, rtol=0.005, )