Ejemplo n.º 1
0
 def _processScienceIm(self, input, masterdir):        
     """Takes in science images to be reduced, checks that they are in fact science images,
     then calls to the iraf task ccdproc to reduce the science images.  Input can be a file location
     or a directory.
     
     @param input: file or directory location of science images to be reduced
     @type input: str
     @param masterdir: directory location of master calibration images
     @type masterdir: str
     """
     
     sciencelist = []
     reducedlist = None
     
     
     if os.path.isfile(input):
         
         if os.path.splitext(os.path.split(input)[-1])[-1]=='.fits':
             iraf.images.imutil.imgets(image=input, param='imagetyp')
             imagetyp = iraf.images.imutil.imgets.value
             if imagetyp=='object':
                 sciencelist.append(input)
         
         sciencelist = reduction_tools.copyNewFits(sciencelist, os.path.split(input)[0]+'/ReducedImages/')
         
         for im in sciencelist:
             iraf.noao.imred.ccdred.ccdproc(images=im, fixpix='no', oversca='no', trim='no', zero=masterdir+'Zero', dark=masterdir+'Dark', flat=masterdir+'Flat*')
             os.remove(input)
         
         reducedlist = sciencelist
     
     
     elif os.path.isdir(input):
         
         for im in glob(input+'/*'):
             if os.path.splitext(os.path.split(im)[-1])[-1]=='.fits':
                 iraf.images.imutil.imgets(image=im, param='imagetyp')
                 imagetyp = iraf.images.imutil.imgets.value
                 if imagetyp=='object':
                     sciencelist.append(im)
                
         sciencelist = reduction_tools.copyNewFits(sciencelist, input+'ReducedImages/')
         
         for im in sciencelist:
             iraf.noao.imred.ccdred.ccdproc(images=im, fixpix='no', oversca='no', trim='no', zero=masterdir+'Zero',dark=masterdir+'Dark', flat=masterdir+'Flat*')
             os.remove(input+os.path.split(im)[-1])
             
         reducedlist = sciencelist
         
     
     
                 
     
     return reducedlist
Ejemplo n.º 2
0
    def _processScienceIm(self, input, masterdir):
        """Takes in science images to be reduced, checks that they are in fact science images,
        then calls to the iraf task ccdproc to reduce the science images.  Input can be a file location
        or a directory.
        
        @param input: file or directory location of science images to be reduced
        @type input: str
        @param masterdir: directory location of master calibration images
        @type masterdir: str
        """

        sciencelist = []
        reducedlist = None

        if os.path.isfile(input):

            if os.path.splitext(os.path.split(input)[-1])[-1] == '.fits':
                iraf.images.imutil.imgets(image=input, param='imagetyp')
                imagetyp = iraf.images.imutil.imgets.value
                if imagetyp == 'object':
                    sciencelist.append(input)

            sciencelist = reduction_tools.copyNewFits(
                sciencelist,
                os.path.split(input)[0] + '/ReducedImages/')

            for im in sciencelist:
                iraf.noao.imred.ccdred.ccdproc(images=im,
                                               fixpix='no',
                                               oversca='no',
                                               trim='no',
                                               zero=masterdir + 'Zero',
                                               dark=masterdir + 'Dark',
                                               flat=masterdir + 'Flat*')
                os.remove(input)

            reducedlist = sciencelist

        elif os.path.isdir(input):

            for im in glob(input + '/*'):
                if os.path.splitext(os.path.split(im)[-1])[-1] == '.fits':
                    iraf.images.imutil.imgets(image=im, param='imagetyp')
                    imagetyp = iraf.images.imutil.imgets.value
                    if imagetyp == 'object':
                        sciencelist.append(im)

            sciencelist = reduction_tools.copyNewFits(sciencelist,
                                                      input + 'ReducedImages/')

            for im in sciencelist:
                iraf.noao.imred.ccdred.ccdproc(images=im,
                                               fixpix='no',
                                               oversca='no',
                                               trim='no',
                                               zero=masterdir + 'Zero',
                                               dark=masterdir + 'Dark',
                                               flat=masterdir + 'Flat*')
                os.remove(input + os.path.split(im)[-1])

            reducedlist = sciencelist

        return reducedlist
Ejemplo n.º 3
0
    def reduce(self, input, coordsList=None, subset='filter'):
        """The method in the pipeline that performs the complete reduction.  Input
        should first be a directory containing at least the calibration images.  Science
        images to be reduced can also be included.  Can also pass just a filename as input, however
        single images passed in can only be science images.  Nothing will be done if just a single 
        calibration images is passed.
        
        @param input: directory where calibration and science images are stored or filename of an image to be reduced.
        @type input: str
        @param coordsList: future work: will give a set of coordinates for photometry
        @type coordsList: list
        @param subset: subset by which to reduce science images.  Default is filter.  If this is changed, it must be present in the headers to take effect.
        @type subset: str
        
        @return: images that have been reduced. the images are given as the location in the 'ReducedImages/' directory, which is automatically created.
        @rtype: list
        
        """

        self.imagedate = os.path.split(os.path.split(input)[0])[-1]
        print os.path.split(input)[0]
        print self.imagedate

        self.reduction_dir = self["calibration_dir"] + self.imagedate + '/'

        masterdir = self.reduction_dir + 'Masters/'

        if os.path.isfile(input):

            imagelist = []
            filename = os.path.split(input)[-1]
            imagelist.append(input)
            reduction_tools.copyNewFits(imagelist, self.reduction_dir)

            if not self._haveMasters(self.reduction_dir):
                print "No master calibration images found for this date."
                return None

            else:

                subset_file = open(self.reduction_dir + 'instruments', 'w')
                print >> subset_file, "subset   %s" % subset
                subset_file.close()

                reduced_images = self._processScienceIm(
                    self.reduction_dir + filename, masterdir)
                return reduced_images

        elif os.path.isdir(input):
            print input

            copylist = glob(input + '*')

            reduction_tools.copyNewFits(copylist, self.reduction_dir)

            subset_file = open(self.reduction_dir + 'instruments', 'w')
            print >> subset_file, "subset   %s" % subset
            subset_file.close()

            if not self._haveMasters(self.reduction_dir):
                self._createMasters()

            reduced_images = self._processScienceIm(self.reduction_dir,
                                                    masterdir)

            self.reductionComplete(imageRequest)
            return reduced_images

        else:

            self.err.info("Input is not a valid input type")
            return None
Ejemplo n.º 4
0
    def reduce(self, input, coordsList=None, subset='filter'):
        """The method in the pipeline that performs the complete reduction.  Input
        should first be a directory containing at least the calibration images.  Science
        images to be reduced can also be included.  Can also pass just a filename as input, however
        single images passed in can only be science images.  Nothing will be done if just a single 
        calibration images is passed.
        
        @param input: directory where calibration and science images are stored or filename of an image to be reduced.
        @type input: str
        @param coordsList: future work: will give a set of coordinates for photometry
        @type coordsList: list
        @param subset: subset by which to reduce science images.  Default is filter.  If this is changed, it must be present in the headers to take effect.
        @type subset: str
        
        @return: images that have been reduced. the images are given as the location in the 'ReducedImages/' directory, which is automatically created.
        @rtype: list
        
        """
        
        self.imagedate = os.path.split(os.path.split(input)[0])[-1]
        print os.path.split(input)[0]
        print self.imagedate
        
        self.reduction_dir = self["calibration_dir"]+self.imagedate+'/'
        
        masterdir = self.reduction_dir+'Masters/'
                                
        
        if os.path.isfile(input):
            
            imagelist = []
            filename = os.path.split(input)[-1]
            imagelist.append(input)
            reduction_tools.copyNewFits(imagelist, self.reduction_dir)
            
            if not self._haveMasters(self.reduction_dir):
                print "No master calibration images found for this date."
                return None
                        
            else:
                
                subset_file = open(self.reduction_dir+'instruments', 'w')
                print >> subset_file, "subset   %s" % subset
                subset_file.close()
                    
                reduced_images = self._processScienceIm(self.reduction_dir+filename, masterdir)
                return reduced_images
            
             
        elif os.path.isdir(input):
            print input
            
            copylist = glob(input+'*')
            
            reduction_tools.copyNewFits(copylist, self.reduction_dir)
            
            subset_file = open(self.reduction_dir+'instruments', 'w')
            print >> subset_file, "subset   %s" % subset
            subset_file.close()            
            
            if not self._haveMasters(self.reduction_dir):
                self._createMasters()
               
            reduced_images = self._processScienceIm(self.reduction_dir, masterdir)

            self.reductionComplete(imageRequest)
            return reduced_images
                
                       
        else:
            
            self.err.info("Input is not a valid input type")
            return None