def test_fit_wcs_missing_req_col_names(empty_refcat, mock_fits_wcs): tpwcs = FITSWCS(mock_fits_wcs) imcat = Table([[], []], names=('x', 'weird')) with pytest.raises(ValueError) as e: fit_wcs(empty_refcat, imcat, tpwcs) assert (e.value.args[0] == "An image catalog must contain 'x' " "and 'y' columns!")
def test_fit_wcs_1_image_source_empty_ref(empty_refcat, mock_fits_wcs): tpwcs = FITSWCS(mock_fits_wcs) imcat = Table([[1], [2]], names=('x', 'y')) with pytest.raises(ValueError) as e: fit_wcs(empty_refcat, imcat, tpwcs) assert (e.value.args[0] == "Reference catalog must contain at " "least one source.")
def test_fit_wcs_less_than_minsrc(mock_fits_wcs): x = [1, 20] y = [1, 20] tpwcs = FITSWCS(mock_fits_wcs) imcat = Table([x, y], names=('x', 'y')) ra, dec = mock_fits_wcs.all_pix2world(x, y, 0) refcat = Table([ra, dec], names=('RA', 'DEC')) tpwcs = fit_wcs(refcat, imcat, tpwcs, fitgeom='general') assert tpwcs.meta['fit_info']['status'] == 'FAILED: not enough matches'
def test_fit_wcs_minsrc_img_ref(mock_fits_wcs, x, y, fitgeom): tpwcs = FITSWCS(mock_fits_wcs) imcat = Table([x, y], names=('x', 'y')) ra, dec = mock_fits_wcs.all_pix2world(x, y, 0) refcat = Table([ra, dec], names=('RA', 'DEC')) tpwcs = fit_wcs(refcat, imcat, tpwcs, fitgeom=fitgeom) fi = tpwcs.meta['fit_info'] assert fi['status'] == 'SUCCESS' assert np.allclose(fi['shift'], (0, 0), rtol=0, atol=1e4 * _ATOL) assert np.max(np.abs(fi['matrix'] - np.identity(2))) < 1e4 * _ATOL
def test_fit_wcs_unsupported_fitgeom(mock_fits_wcs): tpwcs = FITSWCS(mock_fits_wcs) x = list(range(10)) y = [10 * random.random() for _ in range(10)] imcat = Table([x, y], names=('x', 'y')) ra, dec = mock_fits_wcs.all_pix2world(x, y, 0) refcat = Table([ra, dec], names=('RA', 'DEC')) with pytest.raises(ValueError) as e: tpwcs = fit_wcs(refcat, imcat, tpwcs, fitgeom='unsupported') assert (e.value.args[0] == "Unsupported 'fitgeom'. Valid values are: " "'shift', 'rshift', 'rscale', or 'general'")
def test_fit_wcs_malformed_meta(mock_fits_wcs): tpwcs = FITSWCS(mock_fits_wcs) tpwcs._meta = None # bad x = list(range(10)) y = [10 * random.random() for _ in range(10)] imcat = Table([x, y], names=('x', 'y')) ra, dec = mock_fits_wcs.all_pix2world(x, y, 0) refcat = Table([ra, dec], names=('RA', 'DEC')) with pytest.raises(AttributeError) as e: tpwcs = fit_wcs(refcat, imcat, tpwcs, fitgeom='shift') assert e.value.args[0] == "Unable to set/modify tpwcs.meta attribute."
def test_fit_wcs_empty_cat(empty_refcat, empty_imcat, mock_fits_wcs): tpwcs = FITSWCS(mock_fits_wcs) with pytest.raises(ValueError) as e: fit_wcs(empty_refcat, empty_imcat, tpwcs) assert e.value.args[0] == "Image catalog must contain at least one entry."