def test_only_one_file(instrument, mode, files, extension): files = [files["bias"][0]] bias, bhead = combine_bias(files, instrument, mode, extension=extension, window=50) assert isinstance(bias, np.ma.masked_array) assert isinstance(bhead, fits.Header) assert bias.ndim == bhead["NAXIS"] assert bias.shape[0] == bhead["NAXIS1"] - 100 # remove window from both sides assert bias.shape[1] == bhead["NAXIS2"]
def test_only_one_file(instrument, mode, files, mask): if len(files["bias"]) == 0: pytest.skip(f"No bias files for instrument {instrument}") files = [files["bias"][0]] bias, bhead = combine_bias(files, instrument, mode, window=50, mask=mask) assert isinstance(bias, np.ma.masked_array) assert isinstance(bhead, fits.Header) assert bias.ndim == 2 assert bias.shape[0] == mask.shape[0] assert bias.shape[1] == mask.shape[1]
def test_simple_input(tempfiles): n = 2 files = tempfiles[:n] for i in range(n): data = np.full((100, 100), i, dtype=float) fits.writeto(files[i], data) bias, bhead = combine_bias(files, "common", "", extension=0) assert isinstance(bias, np.ndarray) assert bias.shape[0] == 100 assert bias.shape[1] == 100 assert np.all(bias == sum(range(n)) / n)
def bias(instrument, mode, files, extension, mask, output_dir): """Load or if necessary create the bias calibration Parameters ---------- instrument : str instrument name mode : str observing mode files : dict(str:str) calibration files extension : int fits extension mask : array(bool) Bad pixel mask output_dir : str directory conatining the bias data Returns ------- bias : array(float) bias calibration data bhead : fits.header bias information """ biasfile = os.path.join(output_dir, "test_bias.fits") try: bias = fits.open(biasfile) bhead, bias = bias[0].header, bias[0].data bias = np.ma.masked_array(bias, mask=mask) except FileNotFoundError: bias, bhead = combine_bias(files["bias"], instrument, mode, extension=extension, window=50, mask=mask) fits.writeto(biasfile, data=bias.data, header=bhead, overwrite=True) return bias, bhead
def test_wrong_data_type(): with pytest.raises(TypeError): combine_bias(None, None, "") with pytest.raises(ValueError): combine_bias([None], None, "")
def test_no_data_files(): with pytest.raises(FileNotFoundError): combine_bias([], "", "")