Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #4
0
    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
Beispiel #5
0
    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