def test_wl_to_index(ws, result): "wavelength to index" # header h_dict = {"CRVAL1": 3500, 'CDELT1': 2} h = Header() for k, v in h_dict.items(): h.set(k, v) out = ft.wavelength_to_index(h, ws) assert out == result
def test_post_sanitize_header(): test_subject = FITSHelper(io.BytesIO(), io.BytesIO()) data = np.arange(10000).reshape(100, 100) header = Header() wcs = WCS(fix=False) header.set('REMAIN1', 'VALUE1') header.set('DQ1', 'dqvalue1') header.set('NAXIS', 2) header.set('NAXIS1', 88) header.set('NAXIS2', 212) result = CutoutResult(data, wcs=wcs) test_subject._post_sanitize_header(header, result) assert 'VALUE1' == header.get('REMAIN1'), 'REMAIN1 should still be there.'
def test_cd_pc_header_fix(): test_subject = FITSHelper(io.BytesIO(), io.BytesIO()) data = np.arange(10000).reshape(100, 100) header = Header() wcs = WCS() header.set('NAXIS', 2) header.set('NAXIS1', 88) header.set('NAXIS2', 212) header.set('CD1_1', 44) header.set('CD1_2', 88) header.set('CD2_1', 22) header.set('CD2_2', 33) result = CutoutResult(data, wcs=wcs) test_subject._post_sanitize_header(header, result) assert not header.get('CD1_2'), 'CD1_2 should be renamed.' assert not header.get('CD1_1'), 'CD1_1 should be renamed.' assert 44 == header.get('PC1_1'), 'PC1_1 should be 44.' assert 33 == header.get('PC2_2'), 'PC2_2 should be 33.'
def test_pc_leading_zeroes_header_fix(): test_subject = FITSHelper(io.BytesIO(), io.BytesIO()) data = np.arange(10000).reshape(100, 100) header = Header() wcs = WCS() header.set('NAXIS', 2) header.set('NAXIS1', 88) header.set('NAXIS2', 212) header.set('PC01_01', 44) header.set('PC01_02', 88) header.set('PC02_01', 22) header.set('PC02_02', 33) result = CutoutResult(data, wcs=wcs) test_subject._post_sanitize_header(header, result) assert not header.get('PC01_02'), 'PC01_02 should be renamed.' assert not header.get('PC01_01'), 'PC01_01 should be renamed.' assert 22 == header.get('PC2_1'), 'PC2_1 should be 22.' assert 88 == header.get('PC1_2'), 'PC1_2 should be 88.'
def test_with_wcs(): data = np.arange(100).reshape(10, 10) header = Header() wcs = WCS(fix=False) wcs.wcs.cd = [[0.9, 0.8], [0.7, 0.6]] header.set('REMAIN1', 'VALUE1') header.set('DQ1', 'dqvalue1') header.set('NAXIS', 2) test_subject = CutoutND(data, wcs=wcs) cutout_result = test_subject.extract([(1, 6, 2), (4, 10, 2)]) result_wcs = cutout_result.wcs np.testing.assert_array_equal([[1.8, 1.6], [1.4, 1.2]], result_wcs.wcs.cd, 'Wrong CD output.')
def test_post_sanitize_header_pc(): test_subject = FITSHelper(io.BytesIO(), io.BytesIO()) data = np.arange(10000).reshape(100, 100) header = Header() wcs = WCS(fix=False) wcs.wcs.pc = [[0.9, 0.8], [0.7, 0.6]] header.set('REMAIN1', 'VALUE1') header.set('DQ1', 'dqvalue1') header.set('NAXIS', 2) header.set('NAXIS1', 88) header.set('NAXIS2', 212) header.set('CRPIX1', 77.0) header.set('WCSAXES', 2) header.set('CTYPE1', 'ctype1value') assert header.get('PC1_1') is None, 'Should not contain PC1_1' assert header.get('PC2_1') is None, 'Should not contain PC2_1' assert header.get('PC1_2') is None, 'Should not contain PC1_2' assert header.get('PC2_2') is None, 'Should not contain PC2_2' result = CutoutResult(data, wcs=wcs) assert header.index('WCSAXES') > header.index('CRPIX1'), \ 'Start with bad indexes...' test_subject._post_sanitize_header(header, result) assert header.get('PC1_1') == 0.9, 'Wrong PC1_1 value.' assert header.get('PC2_1') == 0.7, 'Wrong PC2_1 value.' assert header.get('PC1_2') == 0.8, 'Wrong PC1_2 value.' assert header.get('PC2_2') == 0.6, 'Wrong PC2_2 value.' assert 'VALUE1' == header.get('REMAIN1'), 'REMAIN1 should still be there.'
def test_post_sanitize_header_crpix(): test_subject = FITSHelper(io.BytesIO(), io.BytesIO()) data = np.arange(10000).reshape(100, 100) header = Header() wcs = WCS(fix=False) header.set('REMAIN1', 'VALUE1') header.set('DQ1', 'dqvalue1') header.set('NAXIS', 2) header.set('NAXIS1', 88) header.set('NAXIS2', 212) header.set('CRPIX1', 77.0) header.set('WCSAXES', 2) header.set('CTYPE1', 'ctype1value') result = CutoutResult(data, wcs=wcs) assert header.index('WCSAXES') > header.index('CRPIX1'), \ 'Start with bad indexes...' test_subject._post_sanitize_header(header, result) assert 'VALUE1' == header.get('REMAIN1'), 'REMAIN1 should still be there.'
def fits_header(self) -> Header: hdr = Header() hdr.set("INSTRUME", self.camera) hdr.set("EXPTIME", self.exp) hdr.set("GAIN", self.gain) hdr.set("CCD-TEMP", self.temp) if self.image_type == "LIGHT": hdr.set("IMAGETYP", "Light Frame") hdr.set("OBJECT", self.target) hdr.set("FILTER", self.filter) elif self.image_type == "FLAT": hdr.set("IMAGETYP", "Flat Frame") hdr.set("FILTER", self.filter) elif self.image_type == "DARK": hdr.set("IMAGETYP", "Dark Frame") hdr.set("SUBCOUNT", self.subcount) return hdr