def test_SpecFrameBasics(self): frame = ast.SpecFrame() self.assertEqual(frame.className, "SpecFrame") self.assertEqual(frame.nIn, 1) self.assertEqual(frame.nAxes, 1) self.assertEqual(frame.maxAxes, 1) self.assertEqual(frame.minAxes, 1) self.assertEqual(frame.alignSystem, "WAVE") self.assertEqual(frame.dut1, 0.0) self.assertEqual(frame.epoch, 2000.0) self.assertEqual(frame.obsAlt, 0.0) self.assertEqual(frame.obsLat, "N0:00:00.00") self.assertEqual(frame.obsLon, "E0:00:00.00") self.assertTrue(frame.permute) self.assertFalse(frame.preserveAxes) self.assertEqual(frame.system, "WAVE") self.assertEqual(frame.title, "Wavelength") self.assertGreater(abs(frame.getBottom(1)), 1e99) self.assertGreater(abs(frame.getTop(1)), 1e99) self.assertGreater(frame.getTop(1), frame.getBottom(1)) self.assertTrue(frame.getDirection(1)) self.assertEqual(frame.getInternalUnit(1), "Angstrom") self.assertEqual(frame.getNormUnit(1), "") self.assertEqual(frame.getSymbol(1), "WAVE") self.assertEqual(frame.getUnit(1), "Angstrom") self.checkCopy(frame) self.checkPersistence(frame)
def test_FitsChanTAB(self): """Test that FITS -TAB WCS can be created. """ wavelength = np.array([0., 0.5, 1.5, 3., 5.]) # Create a FrameSet using a LutMap with non-linear coordinates pixelFrame = ast.Frame(1, "Domain=PIXELS") wavelengthFrame = ast.SpecFrame("System=wave, unit=nm") lutMap = ast.LutMap(wavelength, 1, 1) frameSet = ast.FrameDict(pixelFrame) frameSet.addFrame("PIXELS", lutMap, wavelengthFrame) # Now serialize it using -TAB WCS fc = writeFitsWcs(frameSet, "TabOk=1") fv = fc.getFitsS("CTYPE1") self.assertEqual(fv.value, "WAVE-TAB") # PS1_0 is the table extension name fv = fc.getFitsS("PS1_0") waveext = fv.value self.assertEqual(waveext, "WCS-TAB") # PS1_1 is the column name for the wavelength fv = fc.getFitsS("PS1_1") wavecol = fv.value self.assertEqual(wavecol, "COORDS1") # Get the WCS table from the FitsChan km = fc.getTables() table = km.getA(waveext, 0) fc_bintab = table.getTableHeader() fv = fc_bintab.getFitsS("TDIM1") self.assertEqual(fv.value, "(1,5)") self.assertEqual(table.nRow, 1) self.assertEqual(table.nColumn, 1) # 1-based column numbering to match FITS cname = table.columnName(1) self.assertEqual(cname, "COORDS1") self.assertEqual(table.columnType(cname), ast.DataType.DoubleType) self.assertEqual(table.columnSize(cname), 40) self.assertEqual(table.columnNdim(cname), 2) self.assertEqual(table.columnUnit(cname), "nm") self.assertEqual(table.columnLength(cname), 5) self.assertEqual(table.columnShape(cname), [1, 5]) coldata = table.getColumnData1D(cname) self.assertEqual(list(coldata), list(wavelength)) # This will be shaped correctly as a numpy array with third dimension # the row count. coldata = table.getColumnData(cname) self.assertEqual(coldata.ndim, 3) self.assertEqual(coldata.shape, (1, 5, 1))
def test_SpecFrameSetGetRefPos(self): frame = ast.SpecFrame() self.assertEqual(frame.className, "SpecFrame") sky = ast.SkyFrame() frame.setRefPos(sky, 0, 1) refpos = frame.getRefPos(sky) self.assertAlmostEqual(refpos[0], 0, places=5) self.assertAlmostEqual(refpos[1], 1) self.assertEqual(frame.getInternalUnit(1), frame.getUnit(1)) self.assertEqual(frame.getInternalUnit(1), "Angstrom")