def super_skyflat(self, ver=""): self.output = self.Sflat + ver print(" Creating super sky-flat with %s images" % len(self.scifiles), file=sys.stderr) extras.cl_bye() #mscred.sflatcombine.input = self.scilist #mscred.sflatcombine.output = self.output mscred.sflatcombine.combine = "average" #mscred.sflatcombine.combine = "median" mscred.sflatcombine.reject = "ccdclip" mscred.sflatcombine.ccdtype = "object" mscred.sflatcombine.subsets = "yes" mscred.sflatcombine.masktype = "!objmask" mscred.sflatcombine.maskvalue = "0.0" mscred.sflatcombine.scale = "mode" mscred.sflatcombine.statsec = "" mscred.sflatcombine.nkeep = "1" mscred.sflatcombine.nlow = "1" mscred.sflatcombine.nhigh = "1" mscred.sflatcombine.mclip = "yes" mscred.sflatcombine.lsigma = "6.0" mscred.sflatcombine.hsigma = "3.0" mscred.sflatcombine.rdnoise = "rdnoise" mscred.sflatcombine.gain = "gain" mscred.sflatcombine.snoise = "0." mscred.sflatcombine.pclip = "-0.5" mscred.sflatcombine.blank = "1.0" mscred.sflatcombine.grow = "3.0" mscred.sflatcombine.fd = "" mscred.sflatcombine.mode = "h" #mscred.sflatcombine() # Go filter by filter to avoid iraf's crash for filter in self.obsfilters: if filter not in self.skyfilters: print("# Skipping %s filter, no need for Sflat" % filter, file=sys.stderr) continue if len(self.forsky[filter]) < 4: print("# Skipping %s filter, no sky images available" % filter, file=sys.stderr) continue for l in self.forsky[filter]: print("\t%s" % l, file=sys.stderr) print("\t\t\t\t --> %s %s" % (self.output, filter), file=sys.stderr) #mscred.sflatcombine.input = self.objlist[filter] mscred.sflatcombine.input = extras.imfile(self.forsky[filter]) mscred.sflatcombine.output = self.output mscred.sflatcombine() extras.cl_bye(self.verb) extras.cl_bye(self.verb) return
def setNames(self): # Make the image lists and files lists self.Zero = "Zero" self.Dflat = "Dflat" self.Sflat = "Sflat" self.Fringe = os.path.join(self.BCSPIPE, 'LIB/SOI/Fringe/Fringe') # Zero self.zerolist = extras.imfile(self.zeros) self.zerofiles = self.zeros # Dome Flats and science files self.flatfiles = [] self.scifiles = [] self.bckfiles = [ ] # Files used for background, with exptime > 100 sec! for filter in self.filters: self.flatfiles = self.flatfiles + self.dflats[filter] self.scifiles = self.scifiles + self.object[filter] self.bckfiles = self.bckfiles + self.forsky[filter] # Dome flats, science and bad-pixel lists, etc... #self.flatlist = extras.imlist(self.flatfiles) #self.scilist = extras.imlist(self.scifiles) #self.msklist = extras.imlist_append(self.scilist,"_msk") #self.skylist = extras.imlist_append(self.scilist,"_sky") # Try with files instead of lists self.flatlist = extras.imfile(self.flatfiles) self.scilist = extras.imfile(self.scifiles) self.objlist = {} self.nfiles = {} self.obsfilters = [] # Filters that were actually observed for filter in self.filters: self.objlist[filter] = extras.imfile(self.object[filter]) self.nfiles[filter] = len(self.object[filter]) if self.nfiles[filter] > 0: self.obsfilters.append(filter) print(" %s files in filter %s" % (self.nfiles[filter], filter), file=sys.stderr) return
def correct_fringe(self): print(" Correcting images with fringe map", file=sys.stderr) # Run it for each filter with fringe for filter in self.frgfilters: print(" Correcting Fringe for filter %s " % filter, file=sys.stderr) # Set up names fringe = self.Fringe + filter # Avoid if not observed if filter not in self.obsfilters: print(" No %s-band observations... skipping" % filter, file=sys.stderr) continue for ima in self.forsky[filter]: print("\t%s" % ima, file=sys.stderr) print("\t\t\t\t with fringe: %s" % fringe, file=sys.stderr) #print images, fringe, extras.imlist_append(images,"_msk"), extras.imlist_append(images,"_sky") extras.cl_bye(self.verb) mscred.rmfringe.input = extras.imfile(self.forsky[filter]) mscred.rmfringe.output = '' mscred.rmfringe.fringe = fringe #mscred.rmfringe.masks = extras.imfile_append(self.forsky[filter],"_msk") #mscred.rmfringe.fringemasks = "" #mscred.rmfringe.background = extras.imfile_append(self.forsky[filter],"_sky") mscred.rmfringe.ncblk = "5" mscred.rmfringe.nlblk = "5" mscred.rmfringe.extfit = "" mscred.rmfringe.logfile = "" mscred.rmfringe.verbose = "yes" mscred.rmfringe.mode = "h" mscred.rmfringe() extras.cl_bye(self.verb) extras.cl_bye(self.verb) return
def objmasks(self): extras.cl_bye(self.verb) # Fix objmasks1 nproto.objmasks1.exps = "" nproto.objmasks1.gains = "" nproto.objmasks1.catalogs = "" nproto.objmasks1.catdefs = "" nproto.objmasks1.dodetect = "yes" nproto.objmasks1.dosplit = "no" nproto.objmasks1.dogrow = "yes" nproto.objmasks1.doevaluate = "no" nproto.objmasks1.skytype = "block" nproto.objmasks1.fitstep = "10" nproto.objmasks1.fitblk1d = "10" nproto.objmasks1.fithclip = "2.0" nproto.objmasks1.fitlclip = "3.0" nproto.objmasks1.fitxorder = "1" nproto.objmasks1.fityorder = "1" nproto.objmasks1.fitxterms = "half" nproto.objmasks1.blknsubblks = "2" nproto.objmasks1.updatesky = "yes" nproto.objmasks1.sigavg = "4.0" nproto.objmasks1.sigmax = "4.0" nproto.objmasks1.bpval = "INDEF" nproto.objmasks1.splitmax = "INDEF" nproto.objmasks1.splitstep = "0.4" nproto.objmasks1.splitthresh = "5.0" nproto.objmasks1.sminpix = "8" nproto.objmasks1.ssigavg = "10.0" nproto.objmasks1.ssigmax = "5.0" nproto.objmasks1.magzero = "INDEF" nproto.objmasks1.mode = "ql" # One filter at a time for filter in self.filters: print(" running object masks for filter %s on images" % filter, file=sys.stderr) for i in self.forsky[filter]: print("\t%s" % i, file=sys.stderr) # The old way -- all at one #nproto.objmasks.images = self.scilist #nproto.objmasks.objmasks = self.msklist #nproto.objmasks.skys = self.skylist nproto.objmasks.images = extras.imfile(self.forsky[filter]) nproto.objmasks.objmasks = extras.imfile_append( self.forsky[filter], "_msk") nproto.objmasks.omtype = "numbers" nproto.objmasks.skys = extras.imfile_append( self.forsky[filter], "_sky") nproto.objmasks.sigmas = "" nproto.objmasks.masks = "!BPM" nproto.objmasks.extnames = "" nproto.objmasks.logfiles = "STDOUT" nproto.objmasks.blkstep = "1" nproto.objmasks.blksize = "-10" nproto.objmasks.convolve = "block 3 3" nproto.objmasks.hsigma = "3.0" nproto.objmasks.lsigma = "10.0" nproto.objmasks.hdetect = "yes" nproto.objmasks.ldetect = "no" nproto.objmasks.neighbors = "8" nproto.objmasks.minpix = "6" nproto.objmasks.ngrow = "2" nproto.objmasks.agrow = "2.0" nproto.objmasks.mode = "h" # to avoid prompt # Run nproto.objmasks() extras.cl_bye(self.verb) return
def pass_three(self, skyfilters=('i', 'z')): self.skyfilters = skyfilters ''' Thrid pass of ccdproc ''' extras.cl_bye(self.verb) print(" Making 3rd pass on images: %s " % len(self.scifiles), file=sys.stderr) print(" \t\t\tsky flats", file=sys.stderr) # Set more params mscred.ccdproc.ccdtype = 'object' mscred.ccdproc.noproc = 'no' mscred.ccdproc.xtalkcor = 'no' mscred.ccdproc.fixpix = 'no' mscred.ccdproc.overscan = 'no' mscred.ccdproc.trim = 'no' mscred.ccdproc.zerocor = 'no' mscred.ccdproc.darkcor = 'no' mscred.ccdproc.flatcor = 'no' mscred.ccdproc.sflatcor = 'yes' mscred.ccdproc.split = 'no' mscred.ccdproc.merge = 'no' #mscred.ccdproc.xtalkfile = '!xtalkfil' #mscred.ccdproc.fixfile = 'BPM' mscred.ccdproc.saturation = '!saturate' mscred.ccdproc.sgrow = 1 mscred.ccdproc.bleed = 20000 mscred.ccdproc.btrail = 20 mscred.ccdproc.bgrow = 0 mscred.ccdproc.biassec = '!biassec' mscred.ccdproc.trimsec = '!trimsec' mscred.ccdproc.zero = self.Zero mscred.ccdproc.dark = 'Dark' mscred.ccdproc.flat = self.Dflat + "*" mscred.ccdproc.sflat = self.Sflat + "*" mscred.ccdproc.minreplace = 1.0 mscred.ccdproc.interactive = 'no' mscred.ccdproc.function = 'legendre' mscred.ccdproc.order = 1 mscred.ccdproc.sample = '*' mscred.ccdproc.naverage = 1 mscred.ccdproc.niterate = 1 mscred.ccdproc.low_reject = 3.0 mscred.ccdproc.high_reject = 3.0 mscred.ccdproc.grow = 0.0 mscred.ccdproc.fd = '' mscred.ccdproc.fd2 = '' mscred.ccdproc.mode = 'h' #mscred.ccdproc.images = self.scilist #mscred.ccdproc.output = '' #mscred.ccdproc.bpmasks = self.bplist # Do it filter by filter to avoid non Sflat images for filter in self.obsfilters: if len(self.forsky[filter]) < 1: print("# Skipping %s filter, no sky images available" % filter, file=sys.stderr) continue if filter not in self.skyfilters: print("# Skipping %s filter, no need sky image for " % filter, file=sys.stderr) continue mscred.ccdproc.images = extras.imfile(self.object[filter]) mscred.ccdproc.output = '' mscred.ccdproc.bpmasks = extras.imfile_append( self.object[filter], "_BPM") # Run it mscred.ccdproc() extras.cl_bye(self.verb) return