#!/usr/bin/python # -*- coding: utf-8 -*- # Example python script for extracting lightcurve data from WTS binary fits files # This topic was discussed at the RoPACS meeting in Munich, 2010. # Gabor Kovacs # Please note that objects are indexed from zero in fits files # numbering goes from 1 however when referring to candidates on the WTS webpage, etc. try: import numpy as np import pyfits as pf from optparse import OptionParser import sys except ImportError: print "This program requires Python 2.6 or higher and pyfits,numpy packages installed." sys.exit(1) def parseopts(): usage = "usage: %prog [options] input.fits" parser = OptionParser(usage=usage) parser.add_option("-o", type="string", dest="outfile", default=None, help="Output file name (default: stdout)") parser.add_option("-e", type="int", dest="ext", default=1, help="Extension number: 1,2,3 or 4 (default:1)") parser.add_option("-j", type="int", dest="object", default=0, help="Object index (default: 0)") (option, args) = parser.parse_args() try: infile=args[0] except IndexError: parser.print_help() sys.exit(1) return (option, args) # === main option, args = parseopts() hdu=pf.open(args[0]) tbd=hdu[option.ext].data iobj = option.object # === Dropping lines with NaN values. hjds=tbd[iobj]['hjd'] filter=np.isfinite(hjds) fluxs=tbd[iobj]['flux'] filter=np.logical_and(filter, np.isfinite(fluxs)) fluxerrs=tbd[iobj]['fluxerr'] filter=np.logical_and(filter, np.isfinite(fluxerrs)) lcascii=np.column_stack( (hjds, fluxs, fluxerrs) ) norig=len(lcascii) lcascii=lcascii[filter] # Keeping only rows where all 3 columns are finite print >>sys.stderr,"Object index %d: %d rows dropped %d rows remain" % (iobj, norig - len(lcascii), len(lcascii)) #Occfit takes 80 characters per line maximum! if option.outfile is None: f=sys.stdout else: f=option.outfile np.savetxt(f, lcascii, fmt="%.8f")