summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xupdatewcs/alignwcs.py95
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)