diff options
| -rwxr-xr-x | updatewcs/alignwcs.py | 95 | 
1 files changed, 0 insertions, 95 deletions
| diff --git a/updatewcs/alignwcs.py b/updatewcs/alignwcs.py deleted file mode 100755 index 6d54eee..0000000 --- a/updatewcs/alignwcs.py +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env python - -from pydrizzle import process_input -import pywcs, pyfits, numpy as np -from stwcs.distortion import utils -from pytools import fileutil as fu -from stwcs import wcsutil - - -def align_wcs(input, shiftfile=None, writeasn=False, asnname=None): -    """ -    Purpose -    ======= -    Correct the WCS of a fits file, so that multidrizzle aligns the images. -    To view the format of the shift file: -    >>>from pytools.asnutil import ShiftFile   -    >>>print ShiftFile.__doc__ - -    Example -    ======= -    >>>import alignwcs -    >>>alignwcs.align_wcs('*flt.fits', shiftfile='shifts.txt') -    It works also on the command line: -    %./alignwcs.py *flt.fits shifts.txt -     -    Dependencies  -    ============ -    `pytools` -    `pyfits` -    `pywcs` -    `numpy` -    `pydrizzle` - -    :Parameters: -    `input`: a python list of file names or a string (wild card characters allowed) -             input files may be in fits, geis or waiver fits format -    `shiftfile`: a shift file, as the output of tweakshifts -    `writeasn`: boolean -                defines whether to write out the asn table updated with shift information -    `asnname`: string -                name for the output asn table -    """ -    if shiftfile == None: -        print 'A shift file is required but was not provided\n' -        return -     -    asndict,b,c = process_input.process_input(input, shiftfile=shiftfile, updatewcs=False) -    if writeasn: -        if asnname == None: -            asnname = c.split('.fits')[0] + '_shifts' + '.fits' -        a.write(asnname) -    outwcs = get_outwcs(asndict) -    apply_shifts(asndict, outwcs) - -def apply_shifts(asndict, outwcs): -    for mem in asndict['members']: -        filename = fu.buildRootname(mem) -        xsh = asndict['members'][mem]['xshift'] -        ysh = asndict['members'][mem]['yshift'] -        shifts = np.array([[xsh, ysh]]) -        f = pyfits.open(filename) -        for extn in f: -            if extn.header.has_key('extname') and extn.header['extname'].lower() == 'sci': -                extver = extn.header['extver'] -                owcs = pywcs.WCS(extn.header, f) -                crvals = np.array([owcs.wcs.crval]) -                px = outwcs.wcs.s2p(crvals, 1)['pixcrd'] + shifts -                ncrvals = outwcs.all_pix2sky(px, 1) -                pyfits.setval(filename, 'CRVAL1', value=ncrvals[0,0], ext=extver) -                pyfits.setval(filename, 'CRVAL2', value=ncrvals[0,1], ext=extver) -                print 'Updated %s with shifts ' % filename, shifts -        f.close() - - -def get_outwcs(asndict): -    wcslist = [] -    for mem in asndict['members']: -        filename = fu.buildRootname(mem) -        f = pyfits.open(filename) -        hdr0 = f[0].header -        for extn in f: -            if extn.header.has_key('extname') and extn.header['extname'].lower() == 'sci': -                owcs = wcsutil.HSTWCS(hdr0, extn.header,f) -                wcslist.append(owcs) -        f.close() -    outwcs = utils.output_wcs(wcslist) -    return outwcs - -if __name__ == '__main__': -    import sys -    args = sys.argv[1:] -    input = args[:-1] -    shifts = args[-1] -     -    align_wcs(input, shiftfile=shifts) | 
