def test_invalid_method(self): n = 10 d = np.ones((10, 10)) l = [FrameData(d, unit='adu') for i in range(n)] comb = ImCombiner() with pytest.raises(ValueError, match='hulk-smash is not a valid ' 'combining method.'): comb.combine(l, method='hulk-smash')
def test_mergeheaders_no_merge(self): images = self.create_images() comb = ImCombiner(merge_header='no_merge') res = comb.combine(images, method='sum') assert_equal(res.meta, { 'astropop imcombine nimages': 30, 'astropop imcombine method': 'sum' }) # explicit setting comb = ImCombiner() comb.set_merge_header('no_merge') res = comb.combine(images, method='sum') assert_equal(res.meta, { 'astropop imcombine nimages': 30, 'astropop imcombine method': 'sum' })
def test_mergeheaders_first(self): images = self.create_images() expect = images[0].meta expect.update({ 'astropop imcombine nimages': 30, 'astropop imcombine method': 'sum' }) comb = ImCombiner(merge_header='first') res = comb.combine(images, method='sum') assert_equal(res.meta, expect) # explicit setting comb = ImCombiner() comb.set_merge_header('first') res = comb.combine(images, method='sum') assert_equal(res.meta, expect)
def test_mergeheaders_default(self): # default is 'no_merge' images = self.create_images() comb = ImCombiner() res = comb.combine(images, method='sum') assert_equal(res.meta, { 'astropop imcombine nimages': 30, 'astropop imcombine method': 'sum' })
def test_mergeheaders_only_equal(self): images = self.create_images() expect = { 'astropop imcombine nimages': 30, 'astropop imcombine method': 'sum', 'first_equal': 1, 'second_equal': 2 } comb = ImCombiner(merge_header='only_equal') res = comb.combine(images, method='sum') assert_equal(res.meta, expect) # explicit setting comb = ImCombiner() comb.set_merge_header('only_equal') res = comb.combine(images, method='sum') assert_equal(res.meta, expect)
def test_mergeheaders_selected_keys(self): images = self.create_images() keys = ['first_equal', 'third_differ', 'first_differ'] expect = { 'astropop imcombine nimages': 30, 'astropop imcombine method': 'sum', 'first_equal': 1, 'third_differ': 0, 'first_differ': 0 } comb = ImCombiner(merge_header='selected_keys', merge_header_keys=keys) res = comb.combine(images, method='sum') assert_equal(res.meta, expect) # explicit setting comb = ImCombiner() comb.set_merge_header('selected_keys', keys=keys) res = comb.combine(images, method='sum') assert_equal(res.meta, expect)
def test_combine_median_simple(self): arr, base = self.create_framedata_array([0.8, 1.0, 1.2, 1.0, 1.2], size=[1024, 1024], unct=0.1) comb = ImCombiner() # the unclipped median of [0.8, 1.0, 1.2, 1.0, 1.2] is 1.0 # std([0.8, 1.0, 1.2, 1.0, 1.2])/sqrt(5) = 0.06693280212272602 res = comb.combine(arr, method='median') assert_equal(res.data, base) assert_almost_equal(res.uncertainty, 0.06693280212272602 * base) assert_equal(res.meta['astropop imcombine nimages'], 5) assert_equal(res.meta['astropop imcombine method'], 'median') # same for 3 sigma clipping comb.set_sigma_clip(3, 'median', 'mad_std') res = comb.combine(arr, method='median') assert_equal(res.data, base) assert_almost_equal(res.uncertainty, 0.06693280212272602 * base) assert_equal(res.meta['astropop imcombine nimages'], 5) assert_equal(res.meta['astropop imcombine method'], 'median')
def test_combine_mask_mean(self): comb = ImCombiner() images = [None] * 10 shape = (10, 10) for i in range(10): mask = np.zeros(shape) # all (2, 5) elements are masked, so the result must be mask[2, 5] = 1 images[i] = FrameData(np.ones(shape), unit='adu', mask=mask) # these points in result must no be masked images[5].mask[7, 7] = 1 images[2].mask[7, 7] = 1 images[8].mask[8, 8] = 1 expect = np.zeros(shape) expect[2, 5] = 1 res = comb.combine(images, 'mean') assert_equal(res.mask, expect)