Exemple #1
0
 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)
Exemple #2
0
 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
Exemple #3
0
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'
Exemple #4
0
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
Exemple #5
0
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)