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) == ('', '')
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
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)
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))
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
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)