Esempio n. 1
0
 def test_ids(self, get_image):
     hdr, im = get_image
     foreground_mask = np.full(shape=(41, 41), fill_value=True)
     background_mask = foreground_mask.copy()
     foreground_mask[25:28, 11:17] = False
     background_mask[26:30, 9:14] = False
     ap1 = image.Ap(im,
                    xy_center=(1000, 1100),
                    xy_offset=(980, 1080),
                    foreground_mask=foreground_mask,
                    background_mask=background_mask,
                    source_id='comp star 1',
                    obs_id='345')
     ap2 = image.Ap(im,
                    xy_center=(1000, 1100),
                    xy_offset=(980, 1080),
                    foreground_mask=foreground_mask,
                    background_mask=background_mask,
                    source_id='MP_3456',
                    obs_id='haha')
     ap3 = image.Ap(im,
                    xy_center=(1000, 1100),
                    xy_offset=(980, 1080),
                    foreground_mask=foreground_mask,
                    background_mask=background_mask)
     assert (ap1.source_id, ap1.obs_id) == ('comp star 1', '345')
     assert (ap2.source_id, ap2.obs_id) == ('MP_3456', 'haha')
     assert (ap3.source_id, ap3.obs_id) == ('', '')
Esempio n. 2
0
def make_test_ap_object(xy_center):
    """ So that we don't have to keep making this over and over; so that we have a standard object
        against which to test.
    :param xy_center: target (x,y) center of new ap object, in parent pixels. [2-tuple of floats]
    :return: standard test object with concentric circular masks. [Old_Ap class object]
    """
    im, hdr = get_test_image()
    cutout_radius = 22
    foreground_radius = 10
    gap = 6
    background_width = 5
    cutout_size = 2 * cutout_radius + 1
    xy_cutout_center = cutout_radius, cutout_radius
    radius_inside = foreground_radius + gap
    radius_outside = radius_inside + background_width
    fg_mask = image.make_circular_mask(cutout_size,
                                       xy_cutout_center,
                                       radius=foreground_radius)
    inner_bg_mask = np.logical_not(
        image.make_circular_mask(cutout_size, xy_cutout_center, radius_inside))
    outer_bg_mask = image.make_circular_mask(cutout_size,
                                             xy_cutout_center,
                                             radius=radius_outside)
    bg_mask = np.logical_or(inner_bg_mask, outer_bg_mask)
    ap_object = image.Ap(im,
                         xy_center=xy_center,
                         cutout_radius=cutout_radius,
                         foreground_mask=fg_mask,
                         background_mask=bg_mask)
    return ap_object
Esempio n. 3
0
 def test_constructor_exceptions(self, get_image):
     hdr, im = get_image
     foreground_mask = np.full(shape=(41, 41), fill_value=True)
     background_mask = np.full(shape=(40, 41), fill_value=True)
     with pytest.raises(image.MaskError) as e:
         ap = image.Ap(im,
                       xy_center=(1000, 1100),
                       xy_offset=(980, 1080),
                       foreground_mask=foreground_mask,
                       background_mask=background_mask)
     assert 'masks differ in shape' in str(e)
     with pytest.raises(image.MaskError) as e:
         ap = image.Ap(im,
                       xy_center=(1000, 1100),
                       xy_offset=(980, 1080),
                       foreground_mask=foreground_mask,
                       background_mask=True)
     assert 'mask type' in str(e) and 'bool' in str(
         e) and 'not valid' in str(e)
Esempio n. 4
0
 def test_make_new_object(self, get_image):
     hdr, im = get_image
     foreground_mask = np.full(shape=(41, 41), fill_value=True)
     background_mask = foreground_mask.copy()
     foreground_mask[25:28, 11:17] = False
     background_mask[26:30, 9:14] = False
     ap = image.Ap(im,
                   xy_center=(1000, 1100),
                   xy_offset=(980, 1080),
                   foreground_mask=foreground_mask,
                   background_mask=background_mask)
     with pytest.raises(NotImplementedError):
         _ = ap.make_new_object(new_xy_center=(445, 667))
Esempio n. 5
0
 def test_constructor_mask_overlap(self, get_image):
     hdr, im = get_image
     foreground_mask = np.full(shape=(41, 41), fill_value=True)
     background_mask = foreground_mask.copy()
     foreground_mask[25:28, 11:17] = False
     background_mask[26:30, 9:14] = False
     ap = image.Ap(im,
                   xy_center=(1000, 1100),
                   xy_offset=(980, 1080),
                   foreground_mask=foreground_mask,
                   background_mask=background_mask)
     # Quality criteria:
     assert ap.is_valid is True
     assert ap.all_inside_image is True
     assert ap.all_outside_image is False
     assert ap.any_foreground_outside_image is False
     assert ap.mask_overlap_pixel_count == 6
Esempio n. 6
0
 def test_constructor_background_mask_zero(self, get_image):
     hdr, im = get_image
     foreground_mask = np.full(shape=(41, 41), fill_value=True)
     foreground_mask[25:28, 11:17] = False
     ap = image.Ap(im,
                   xy_center=(1000, 1100),
                   xy_offset=(980, 1080),
                   foreground_mask=foreground_mask,
                   background_mask=0)
     # Quality criteria:
     assert ap.is_valid is True
     assert ap.all_inside_image is True
     assert ap.all_outside_image is False
     assert ap.any_foreground_outside_image is False
     assert ap.mask_overlap_pixel_count == 0
     # Verify background mask:
     expected_background_mask = np.full(shape=(41, 41), fill_value=True)
     assert np.array_equal(ap.background_mask, expected_background_mask)