def get_coord_system_name(self, header): coordsys = common.get_coord_system_name(header) coordsys = coordsys.upper() if coordsys in ('FK4',): return 'b1950' elif coordsys in ('FK5', 'ICRS'): return 'j2000' elif coordsys in ('PIXEL',): return 'pixel' #raise common.WCSError("Cannot determine appropriate coordinate system from FITS header") # noqa return 'j2000'
def load_header(self, header, fobj=None): try: # reconstruct a pyfits header, because otherwise we take an # incredible performance hit in astropy.wcs self.logger.debug("Reconstructing PyFITS header") self.header = pyfits.Header(header.items()) self.logger.debug("Trying to make astropy-- wcs object") self.wcs = pywcs.WCS(self.header, fobj=fobj, relax=True) self.logger.debug("made astropy wcs object") self.coordsys = common.get_coord_system_name(self.header) self.logger.debug("Coordinate system is: %s" % (self.coordsys)) except Exception as e: self.logger.error("Error making WCS object: %s" % (str(e))) self.wcs = None
def load_header(self, header, fobj=None): try: # reconstruct a FITS because otherwise we take an # incredible performance hit in astropy.wcs self.logger.debug("Reconstructing astropy.io.fits header") self.header = fits.Header(header.items()) self.logger.debug("Trying to make astropy-- wcs object") self.wcs = wcs.WCS(self.header, fobj=fobj, relax=True) self.logger.debug("made astropy wcs object") self.coordsys = common.get_coord_system_name(self.header) self.logger.debug("Coordinate system is: {}".format(self.coordsys)) except Exception as e: self.logger.error("Error making WCS object: {}".format(str(e))) self.wcs = None
def load_header(self, header, fobj=None): # For kapteyn, header just needs to be duck-typed like a dict self.header = {} self.header.update(header.items()) self.fix_bad_headers() try: self.logger.debug("Trying to make kapteyn wcs object") self.wcs = kapwcs.Projection(self.header, skyout=self._skyout) self.coordsys = common.get_coord_system_name(self.header) self.logger.debug("Coordinate system is: %s" % (self.coordsys)) except Exception as e: self.logger.error("Error making WCS object: %s" % (str(e))) self.wcs = None
def load_header(self, header, fobj=None): from astropy.wcs.utils import wcs_to_celestial_frame try: # reconstruct a pyfits header, because otherwise we take an # incredible performance hit in astropy.wcs self.header = pyfits.Header(header.items()) self.logger.debug("Trying to make astropy wcs object") self.wcs = pywcs.WCS(self.header, fobj=fobj, relax=True) try: self.coordframe = wcs_to_celestial_frame(self.wcs) except ValueError: sysname = common.get_coord_system_name(self.header) if sysname in ('raw', 'pixel'): self.coordframe = sysname else: raise except Exception as e: self.logger.error("Error making WCS object: %s" % (str(e))) self.wcs = None
def load_nddata(self, ndd): try: # reconstruct a pyfits header, because otherwise we take an # incredible performance hit in astropy.wcs self.logger.debug("Reconstructing astropy.io.fits header") self.header = pyfits.Header(ndd.meta) if ndd.wcs is None: self.logger.debug("Trying to make astropy FITS WCS object") self.wcs = pywcs.WCS(self.header, relax=True) self.logger.debug("made astropy wcs object") else: self.logger.debug("reused nddata wcs object") self.wcs = ndd.wcs self.coordsys = common.get_coord_system_name(self.header) self.logger.debug("Coordinate system is: %s" % (self.coordsys)) except Exception as e: self.logger.error("Error making WCS object: %s" % (str(e))) self.wcs = None
def load_header(self, header, fobj=None): self.header = {} self.header.update(header.items()) self.fix_bad_headers() source = [] for key, value in header.items(): source.append("%-8.8s= %-70.70s" % (key, repr(value))) # following https://gist.github.com/dsberry/4171277 to get a # usable WCS in Ast try: self.logger.debug("Trying to make starlink wcs object") # read in the header and create the default WCS transform # adapter = Atl.PyFITSAdapter(hdu) # fitschan = Ast.FitsChan(adapter) fitschan = Ast.FitsChan(source) self.wcs = fitschan.read() # self.wcs is a FrameSet, with a Mapping # self.wcs.Report = True self.coordsys = common.get_coord_system_name(self.header) self.logger.debug("Coordinate system is: %s" % (self.coordsys)) except Exception as e: self.logger.error("Error making WCS object: %s" % (str(e))) self.wcs = None try: # define a transform from this destination frame to icrs/j2000 refframe = self.wcs.getframe(2) toframe = Ast.SkyFrame("System=ICRS, Equinox=J2000") self.icrs_trans = refframe.convert(toframe) except Exception as e: self.logger.error("Error making ICRS transform: %s" % (str(e)))