def __init__(self, url, plane=0, beam=None): super(CasaImage, self).__init__() # Set defaults self.url = url self.table = pyrap_table(self.url.encode(), ack=False) self.telescope = self.table.getkeyword('coords')['telescope'] self.data = parse_data(self.table, plane) self.wcs = parse_coordinates(self.table) self.pixelsize = parse_pixelsize(self.wcs) self.centre_ra, self.centre_decl = parse_phase_centre(self.table) self.freq_eff, self.freq_bw = parse_frequency(self.table) if beam: (bmaj, bmin, bpa) = beam self.beam = degrees2pixels(bmaj, bmin, bpa, self.pixelsize[0], self.pixelsize[1]) else: self.beam = parse_beam(self.table, self.pixelsize)
def __init__(self, url, plane=None, beam=None, hdu=0): """ Args: - url: location of FITS file - beam: (optional) beam parameters in degrees, in the form (bmaj, bmin, bpa). Will attempt to read from header if not supplied. """ # NB: pyfits bogs down reading parameters from FITS files with very # long headers. This code should run in a fraction of a second on most # files, but can take several seconds given a huge header. super(FitsImage, self).__init__() # Set defaults self.url = url self.beam = beam hdulist = pyfits.open(url) hdu = hdulist[hdu] self.header = hdu.header.copy() if 'TELESCOP' in self.header: # Otherwise, it defaults to None. self.telescope = self.header['TELESCOP'] self.data = read_data(hdu, plane) hdulist.close() self.wcs = parse_coordinates(self.header) self.pixelsize = parse_pixelsize(self.wcs) self.centre_ra, self.centre_decl = calculate_phase_centre(self.data.shape, self.wcs) self.freq_eff, self.freq_bw = parse_frequency(self.header) if beam: (bmaj, bmin, bpa) = beam self.beam = degrees2pixels(bmaj, bmin, bpa, self.pixelsize[0], self.pixelsize[1]) else: self.beam = parse_beam(self.header, self.pixelsize) self.taustart_ts, self.tau_time = parse_times(self.header)
def pixelsize(self): return parse_pixelsize(self.wcs)