Example #1
0
    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)
Example #2
0
    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)
Example #3
0
 def pixelsize(self):
     return parse_pixelsize(self.wcs)