From beebff79acea9f2815c9b7829163f62dcacaf8e9 Mon Sep 17 00:00:00 2001 From: dencheva Date: Mon, 22 Dec 2008 14:07:16 +0000 Subject: Renamed updatewcs to hstwcs git-svn-id: http://svn.stsci.edu/svn/ssb/stsci_python/development/trunk/hstwcs@7406 fe389314-cf27-0410-b35b-8c050e845b92 --- updatewcs/__init__.py | 180 -------------------------------------------------- 1 file changed, 180 deletions(-) delete mode 100644 updatewcs/__init__.py (limited to 'updatewcs/__init__.py') diff --git a/updatewcs/__init__.py b/updatewcs/__init__.py deleted file mode 100644 index efa9287..0000000 --- a/updatewcs/__init__.py +++ /dev/null @@ -1,180 +0,0 @@ -import os -import pyfits -#from .. wcsutil import HSTWCS -from hstwcs.wcsutil import HSTWCS - -#from .. mappings import allowed_corrections -from hstwcs import utils -import corrections, makewcs -import dgeo -import time -from pytools import parseinput, fileutil -import apply_corrections - -#Note: The order of corrections is important - -__docformat__ = 'restructuredtext' - - -def updatewcs(input, vacorr=True, tddcorr=True, dgeocorr=True, checkfiles=True): - """ - Purpose - ======= - Applies corrections to the WCS keywords. - - Example - ======= - >>>from hstwcs import updatewcs - >>>updatewcs.updatewcs(filename) - - Dependencies - ============ - `pytools` - `pyfits` - `pywcs` - `numpy` - - :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 - `vacorr`: boolean - If True, vecocity aberration correction will be applied - `tddcorr`: boolean - If True, time dependent distortion correction will be applied - `checkfiles`: boolean - If True, the format of the input files will be checked, - geis and waiver fits files will be converted to MEF format. - Default value is True for standalone mode. - """ - - files = parseinput.parseinput(input)[0] - if checkfiles: - files = checkFiles(files) - if not files: - print 'No valid input, quitting ...\n' - return - for f in files: - acorr = apply_corrections.setCorrections(f, vacorr=vacorr, tddcorr=tddcorr,dgeocorr=dgeocorr) - #restore the original WCS keywords - utils.restoreWCS(f) - makecorr(f, acorr) - return files - -def makecorr(fname, allowed_corr): - """ - Purpose - ======= - Applies corrections to the WCS of a single file - - :Parameters: - `fname`: string - file name - `acorr`: list - list of corrections to be applied - - """ - f = pyfits.open(fname, mode='update') - #Determine the reference chip and make a copy of its restored header. - nrefchip, nrefext = getNrefchip(f) - primhdr = f[0].header - ref_hdr = f[nrefext].header.copy() - utils.write_archive(ref_hdr) - - for extn in f: - # Perhaps all ext headers should be corrected (to be consistent) - if extn.header.has_key('extname') and extn.header['extname'].lower() == 'sci': - ref_wcs = HSTWCS(primhdr, ref_hdr, fobj=f) - ref_wcs.readModel(update=True, header=ref_hdr) - hdr = extn.header - ext_wcs = HSTWCS(primhdr, hdr, fobj=f) - utils.write_archive(hdr) - ext_wcs.readModel(update=True,header=hdr) - for c in allowed_corr: - if c != 'DGEOCorr': - corr_klass = corrections.__getattribute__(c) - kw2update = corr_klass.updateWCS(ext_wcs, ref_wcs) - for kw in kw2update: - hdr.update(kw, kw2update[kw]) - - if 'DGEOCorr' in allowed_corr: - kw2update = dgeo.DGEOCorr.updateWCS(f) - for kw in kw2update: - f[1].header.update(kw, kw2update[kw]) - - f.close() - -def getNrefchip(fobj): - """ - This handles the fact that WFPC2 subarray observations - may not include chip 3 which is the default reference chip for - full observations. Also for subarrays chip 3 may not be the third - extension in a MEF file. - """ - Nrefext = 1 - instrument = fobj[0].header['INSTRUME'] - if instrument == 'WFPC2': - detectors = [img.header['DETECTOR'] for img in fobj[1:]] - - if 3 not in detectors: - Nrefchip=detectors[0] - Nrefext = 1 - else: - Nrefchip = 3 - Nrefext = detectors.index(3) + 1 - elif instrument == 'ACS': - detector = fobj[0].header['DETECTOR'] - if detector == 'WCS': - Nrefchip =2 - else: - Nrefchip = 1 - elif instrument == 'NICMOS': - Nrefchip = fobj[0].header['CAMERA'] - return Nrefchip, Nrefext - -def checkFiles(input): - """ - Purpose - ======= - Checks that input files are in the correct format. - Converts geis and waiver fits files to multietension fits. - """ - from pytools.check_files import geis2mef, waiver2mef - removed_files = [] - newfiles = [] - for file in input: - try: - imgfits,imgtype = fileutil.isFits(file) - except IOError: - print "Warning: File %s could not be found\n" %file - print "Removing file %s from input list" %file - removed_files.append(file) - continue - # Check for existence of waiver FITS input, and quit if found. - # Or should we print a warning and continue but not use that file - if imgfits: - if imgtype == 'waiver': - newfilename = waiver2mef(file, convert_dq=True) - if newfilename == None: - print "Removing file %s from input list - could not convert waiver to mef" %file - removed_files.append(file) - else: - newfiles.append(newfilename) - else: - newfiles.append(file) - - # If a GEIS image is provided as input, create a new MEF file with - # a name generated using 'buildFITSName()' - # Convert the corresponding data quality file if present - if not imgfits: - newfilename = geis2mef(file, convert_dq=True) - if newfilename == None: - print "Removing file %s from input list - could not convert geis to mef" %file - removed_files.append(file) - else: - newfiles.append(newfilename) - if removed_files: - print 'The following files will be removed from the list of files to be processed :\n' - for f in removed_files: - print f - return newfiles - -- cgit