def fixpix(self): N = self.Namps for filter in self.obsfilters: # Avoid if Sflat was not created if len(self.forsky[filter]) < 4: print("# Skipping %s filter, no sky images available" % filter, file=sys.stderr) continue flat = self.Sflat + filter print("Fixpix %s" % flat) for i in range(N): image = "%s[%s]" % (flat, i + 1) mask = os.path.join( self.BCSPIPE, "LIB/MosaicII/BPM/bpmSum%s_0511.pl" % str(i + 1)) proto.fixpix(image, mask, linterp="INDEF", cinterp="INDEF", verbose="yes", pixels="no") extras.cl_bye() return
def badpix(self, fix=None): N = self.Namps express = "a > 1 ? 0 : 1" for filter in self.obsfilters: # Avoid if Sflat was not created if len(self.forsky[filter]) < 4: print("# Skipping %s filter, no sky images available" % filter, file=sys.stderr) continue flat = self.Sflat + filter bpmdir = "%s_BPM" % flat print("Making bpm for %s" % flat) # Check if the destination folder exists if os.path.exists(bpmdir): print("Will put mask files to: %s" % bpmdir, file=sys.stderr) else: print("Will create new folder: %s" % bpmdir, file=sys.stderr) os.mkdir(bpmdir) for i in range(N): image = "%s[%s]" % (flat, i + 1) mask = "%s/mask_%s.pl" % (bpmdir, i + 1) # make bpm images.imutil.imexpr(express, mask, image) extras.cl_bye() # Correct the Sky flat if fix: # Interpolate bad pixels proto.fixpix(image, mask, linterp="INDEF", cinterp="INDEF", verbose="yes", pixels="no") extras.cl_bye() return
def fixpix(self): N = self.Namps for file in self.scifiles: print("Fixpix %s" % file) for i in range(N): image = "%s[%s]" % (file, i + 1) mask = os.path.join( self.BCSPIPE, "LIB/MosaicII/BPM/bpmSum%s_0511.pl" % str(i + 1)) proto.fixpix(image, mask, linterp="INDEF", cinterp="INDEF", verbose="yes", pixels="no") extras.cl_bye() return
def fixpix_sky(self): N = self.Namps for filter in self.obsfilters: flat = self.Sflat + filter bpmdir = "%s_BPM" % flat print("Correcting for bpm for %s" % flat) for file in self.forsky[filter]: for i in range(N): mask = "%s/mask_%s.pl" % (bpmdir, i + 1) scifile = "%s[%s]" % (file, i + 1) proto.fixpix(scifile, mask, linterp="INDEF", cinterp="INDEF", verbose="yes", pixels="no") extras.cl_bye() return
def craverage(self): ''' Run IRAF craverage ''' N = self.Namps craverage.input = "List" craverage.output = "" craverage.crmask = "" craverage.average = "" craverage.sigma = "" craverage.navg = "7" craverage.nrej = "3" craverage.nbkg = "5" craverage.nsig = "50" craverage.var0 = "0.0" craverage.var1 = "0.0" craverage.var2 = "0.0" craverage.crval = "1" craverage.lcrsig = "10.0" craverage.hcrsig = "3.75" craverage.crgrow = "0.0" craverage.objval = "0" craverage.lobjsig = "10.0" craverage.hobjsig = "5.5" craverage.objgrow = "0.0" craverage.mode = "al" filenames = [] for line in open(self.scilist[1:]).readlines( ): # Trick to avoid the '@' in filenames file = line.split()[0] filenames.append(file) print("Doing file: %s" % file, file=sys.stderr) for i in range(N): print("craverage %s[%s]" % (file, i + 1), file=sys.stderr) input = "%s[%s]" % (file, i + 1) crmask = "%s_crmask_%s" % (file, i + 1) craverage(input, output="", crmask=crmask) extras.cl_bye() # And now we do the mask combination and fixpix express = "max(a,b)" for ima in filenames: # Merging masks print(" Merging masks for %s" % ima, file=sys.stderr) for i in range(N): n = i + 1 hfile = "%s[%s]" % (ima, n) mask1 = "%s_crmask_%s.fits[1]" % (ima, n) mask2 = "%s_BPM/bpm_im%s.pl" % (ima, n) maskout = "%s_BPM/bpmcr_im%s.fits" % (ima, n) images.imutil.imexpr(express, maskout, mask1, mask2) print("\t\tUpdating header information for %s" % hfile, file=sys.stderr) images.imutil.hedit(hfile, "BPM", maskout, add='no', delete='no', ver='no', show='yes', update='yes') images.imutil.hedit(maskout, "BPM", maskout, add='no', delete='no', ver='no', show='yes', update='yes') extras.cl_bye() # Fixing bad pixels print(" Fixpix Interpolating bad pixels %s" % ima, file=sys.stderr) for i in range(N): n = i + 1 image = "%s[%s]" % (ima, n) mask = "%s_BPM/bpmcr_im%s.fits" % (ima, n) proto.fixpix(image, mask, linterp="INDEF", cinterp="INDEF", verbose="yes", pixels="no") extras.cl_bye()