def load_hdu(self, hdu, dstobj=None, **kwargs): typ = self.get_hdu_type(hdu) if typ == 'image': # <-- data is an image ahdr = AstroHeader() self.fromHDU(hdu, ahdr) metadata = dict(header=ahdr) data = hdu.read() if dstobj is None: dstobj = AstroImage(logger=self.logger) dstobj.load_data(data, metadata=metadata) else: dstobj.load_data(data, metadata=metadata) elif typ == 'table': # <-- data is a table raise FITSError( "FITS tables are not yet readable using ginga/fitsio") dstobj.io = self return dstobj
def load_hdu(self, hdu, dstobj=None, **kwargs): typ = self.get_hdu_type(hdu) if typ == 'image': if dstobj is None: dstobj = AstroImage(logger=self.logger) dstobj.load_hdu(hdu, **kwargs) else: # TODO: migrate code from AstroImage to here dstobj.load_hdu(hdu, **kwargs) elif typ == 'table': # <-- data may be a table if hdu.name == 'ASDF': if dstobj is not None: raise ValueError( "It is not supported to load ASDF HDU with dstobj != None" ) self.logger.debug('Attempting to load {} extension from ' 'FITS'.format(hdu.name)) from ginga.util.io import io_asdf opener = io_asdf.ASDFFileHandler(self.logger) return opener.load_asdf_hdu_in_fits(self.fits_f, hdu, **kwargs) if dstobj is None: dstobj = AstroTable(logger=self.logger) self.logger.debug('Attempting to load table from FITS') # TODO: migrate code from AstroTable to here dstobj.load_hdu(hdu, **kwargs) else: raise FITSError("I don't know how to read this HDU") dstobj.io = self return dstobj