def test_stack_calibrations(self, mock_get_instrument, mock_get_calibration_images, mock_process_master_maker, setup): mock_get_instrument.return_value = self.fake_inst mock_get_calibration_images.return_value = [ FakeBiasImage(), FakeBiasImage() ] stack_calibrations(self.min_date, self.max_date, 1, self.frame_type, self.context, [self.fake_blocks_response_json['results'][0]]) mock_process_master_maker.assert_called_with(self.fake_inst, self.frame_type, self.min_date, self.max_date, ANY)
def test_stack_calibrations_not_enough_images(self, mock_get_instrument, mock_get_calibration_images, mock_process_master_maker, setup): mock_get_instrument.return_value = self.fake_inst mock_get_calibration_images.return_value = [FakeBiasImage()] with pytest.raises(Retry) as e: stack_calibrations(self.min_date, self.max_date, 1, self.frame_type, self.context, [self.fake_blocks_response_json['results'][0]]) assert e.type is Retry
def test_header_cal_type_bias(mock_frame, mock_namer): mock_namer.return_value = lambda *x: 'foo.fits' nx = 101 ny = 103 context = make_context_with_master_bias(bias_level=0.0, readnoise=10.0, nx=nx, ny=ny) maker = BiasMaker(context) images = maker.do_stage([FakeBiasImage(nx=nx, ny=ny) for x in range(6)]) assert images[0].header['OBSTYPE'].upper() == 'BIAS'
def test_makes_a_sensible_master_bias(mock_frame, mock_namer): mock_namer.return_value = lambda *x: 'foo.fits' nimages = 20 expected_readnoise = 15.0 images = [FakeBiasImage() for x in range(nimages)] for image in images: image.data = np.random.normal(loc=0.0, scale=expected_readnoise, size=(image.ny, image.nx)) maker = BiasMaker(FakeContext(frame_class=FakeBiasImage)) stacked_images = maker.do_stage(images) master_bias = stacked_images[0].data assert np.abs(np.mean(master_bias)) < 0.1 actual_readnoise = np.std(master_bias) assert np.abs(actual_readnoise - expected_readnoise / (nimages**0.5)) < 0.2
def test_bias_level_is_average_of_inputs(mock_instrument_info, mock_namer): mock_namer.return_value = lambda *x: 'foo.fits' nimages = 20 bias_levels = np.arange(nimages, dtype=float) images = [FakeBiasImage(bias_level=i) for i in bias_levels] mock_instrument_info.return_value = None, None, None fake_context = FakeContext() fake_context.db_address = '' maker = BiasMaker(fake_context) master_bias = maker.do_stage(images)[0] header = master_bias.header assert header['BIASLVL'] == np.mean(bias_levels)