Beispiel #1
0
    def create(self, shiftfile=None):
        members = {}
        row = 0
        dshift = False
        abshift = False

        # Parse out shift file, if provided
        if shiftfile != None:
            sdict = ShiftFile(shiftfile)
        elif self.shiftfile != None:
            sdict = ShiftFile(self.shiftfile)

            shift_frame = sdict['frame']
            shift_units = sdict['units']
            refimage = sdict['refimage']
            if sdict['form']=='delta':
                dshift = True
            else:
                abshift = True

            for f in self.input:
                xshift = sdict[f][0]
                yshift = sdict[f][1]
                rot = sdict[f][2]
                scale = sdict[f][3]
                #This may not be the right thing to do, may want to keep _flt in rootname
                # to distinguish between _c0h.fits, _c0f.fits and '.c0h'
                fname = fu.buildNewRootname(f)
                members[fname] = ASNMember(row=row, dshift=dshift, abshift=abshift, rot=rot, xshift=xshift,
                                  yshift=yshift, scale=scale, refimage=refimage, shift_frame=shift_frame,
                                  shift_units=shift_units)
                row+=1
        else:
            for f in self.input:
                # also here

                fname = fu.buildNewRootname(f)
                members[fname] = ASNMember(row=row)
                row+=1

        self['members'].update(members)
        self['order']=self.order
Beispiel #2
0
    def __init__(self, inlist=None, output=None, shiftfile=None):
        """
        Parameters
        ===========
        `inlist`: a list
                  a python list of filenames
        `output`  a string
                  a user specified output name or 'final'
        `shiftfile`: a string
                  a name of a shift file, if given, the association table will be
                  updated with the values in the shift file

        """

        if output == None:
            if len(inlist) == 1:
                self.output = fu.buildNewRootname(inlist[0])
            else:
                self.output = 'final'
        else:
            self.output = fu.buildNewRootname(output)
            # Ensure that output name does not already contain '_drz'
            _indx = self.output.find('_drz')
            if _indx > 0:
                self.output = self.output[:_indx]

        self.order = []
        if inlist != None:
            for fn in inlist:
                if fu.findFile(fu.buildRootname(fn)):
                    self.order.append(fu.buildNewRootname(fn))
                else:
                    # This may mean corrupted asn table in which a file is listed as present
                    # when it is missing.
                    raise IOError,  'File %s not found.\n' %fn
        dict.__init__(self, output=self.output, order=[], members={})
        if inlist != None:
            self.input = [fu.buildRootname(f) for f in inlist]
        self.shiftfile = shiftfile
Beispiel #3
0
    def buildPrimary(self, fasn, output=None):
        _prihdr = fits.Header([fits.Card('SIMPLE', True, 'Fits standard'),
                    fits.Card('BITPIX  ',                    16 ,' Bits per pixel'),
                    fits.Card('NAXIS   ',                     0 ,' Number of axes'),
                    fits.Card('ORIGIN  ',  'NOAO-IRAF FITS Image Kernel July 1999' ,'FITS file originator'),
                    fits.Card('IRAF-TLM',  '18:26:13 (27/03/2000)' ,' Time of last modification'),
                    fits.Card('EXTEND  ', True ,' File may contain standard extensions'),
                    fits.Card('NEXTEND ',                     1 ,' Number of standard extensions'),
                    fits.Card('DATE    ',  '2001-02-14T20:07:57',' date this file was written (yyyy-mm-dd)'),
                    fits.Card('FILENAME',  'hr_box_asn.fits'            ,' name of file'),
                    fits.Card('FILETYPE',  'ASN_TABLE'          ,' type of data found in data file'),
                    fits.Card('TELESCOP',  'HST'                ,' telescope used to acquire data'),
                    fits.Card('INSTRUME',  'ACS   '             ,' identifier for instrument used to acquire data'),
                    fits.Card('EQUINOX ',                2000.0 ,' equinox of celestial coord. system'),
                    fits.Card('ROOTNAME',  'hr_box  '              ,' rootname of the observation set'),
                    fits.Card('PRIMESI ',  'ACS   '             ,' instrument designated as prime'),
                    fits.Card('TARGNAME',  'SIM-DITHER'                     ,'proposer\'s target name'),
                    fits.Card('RA_TARG ',                    0. ,' right ascension of the target (deg) (J2000)'),
                    fits.Card('DEC_TARG',                    0. ,' declination of the target (deg) (J2000)'),
                    fits.Card('DETECTOR',  'HRC     '           ,' detector in use: WFC, HRC, or SBC'),
                    fits.Card('ASN_ID  ',  'hr_box  '           ,' unique identifier assigned to association'),
                    fits.Card('ASN_TAB ',  'hr_box_asn.fits'         ,' name of the association table')])

        # Format time values for keywords IRAF-TLM, and DATE
        _ltime = time.localtime(time.time())
        tlm_str = time.strftime('%H:%M:%S (%d/%m/%Y)',_ltime)
        date_str = time.strftime('%Y-%m-%dT%H:%M:%S',_ltime)
        origin_str = 'FITS Version '+ astropy.__version__
        # Build PRIMARY HDU
        _hdu = fits.PrimaryHDU(header=_prihdr)
        fasn.append(_hdu)

        newhdr = fasn['PRIMARY'].header
        mem0name = self['order'][0]
        refimg = self['members'][mem0name]['refimage']
        shframe = self['members'][mem0name]['shift_frame']
        fullname = fu.buildRootname(mem0name,ext=['_flt.fits', '_c0h.fits', '_c0f.fits'])
        try:
            # Open img1 to obtain keyword values for updating template
            fimg1 = fits.open(fullname)
        except:
            print 'File %s does not exist' % fullname


        kws = ['INSTRUME', 'PRIMESI', 'TARGNAME', 'DETECTOR', 'RA_TARG', 'DEC_TARG']
        mem0hdr = fimg1['PRIMARY'].header
        default = 'UNKNOWN'
        for kw in kws:
            try:
                newhdr[kw] = mem0hdr[kw]
            except:
                newhdr[kw] = default
        fimg1.close()

        if not output:
            output = self['output']

        outfilename = fu.buildNewRootname(output, extn='_asn.fits')
        newhdr['IRAF-TLM']=tlm_str
        newhdr['DATE'] = date_str
        newhdr['ORIGIN'] = origin_str
        newhdr['ROOTNAME'] = output

        newhdr['FILENAME'] = outfilename
        newhdr['ASN_ID'] = output
        newhdr['ASN_TAB'] = outfilename
        newhdr['SHFRAME'] = (shframe, "Frame which shifts are measured")
        newhdr['REFIMAGE'] = (refimg, "Image shifts were measured from")