コード例 #1
0
ファイル: test_sky.py プロジェクト: desihub/desispec
 def test_subtract_sky_with_gradient_using_compute_polynomial_times_sky(self):
     spectra = self._get_spectra(with_gradient=True)
     sky = compute_sky(spectra,angular_variation_deg=1,chromatic_variation_deg=1,add_variance=self.add_variance)
     subtract_sky(spectra, sky)
     
     #- allow some slop in the sky subtraction
     self.assertTrue(np.allclose(spectra.flux, 0, rtol=1e-3, atol=1.)) # this is not exact, it's an iterative fit
コード例 #2
0
ファイル: test_sky.py プロジェクト: desihub/desispec
 def test_subtract_sky_with_gradient_using_compute_non_uniform_sky(self):
     spectra = self._get_spectra(with_gradient=True)
     sky = compute_sky(spectra,angular_variation_deg=1,chromatic_variation_deg=-1,add_variance=self.add_variance)
     subtract_sky(spectra, sky)
     
     #- allow some slop in the sky subtraction
     self.assertTrue(np.allclose(spectra.flux, 0, rtol=1e-3, atol=1e-3))
コード例 #3
0
 def test_subtract_sky_with_gradient_using_compute_non_uniform_sky(self):
     spectra = self._get_spectra(with_gradient=True)
     sky = compute_sky(spectra,angular_variation_deg=1,chromatic_variation_deg=-1,add_variance=self.add_variance)
     subtract_sky(spectra, sky)
     
     #- allow some slop in the sky subtraction
     self.assertTrue(np.allclose(spectra.flux, 0, rtol=1e-3, atol=1e-3))
コード例 #4
0
ファイル: procalgs.py プロジェクト: gdhungana/desispec
    def run(self,*args,**kwargs):
        if len(args) == 0 :
            raise qlexceptions.ParameterException("Missing input parameter")
        if not self.is_compatible(type(args[0])):
            raise qlexceptions.ParameterException("Incompatible input. Was expecting %s got %s"%(type(self.__inpType__),type(args[0])))

        input_frame=args[0] #- this must be flat field applied before sky subtraction in the pipeline

        if "SkyFile" in kwargs:
            from desispec.io.sky import read_sky
            skyfile=kwargs["SkyFile"]    #- Read sky model file itself from an argument
            log.info("Using given sky file %s for subtraction"%skyfile)

            skymodel=read_sky(skyfile)

        else:
            if "Outskyfile" in kwargs:
                outskyfile=kwargs["Outskyfile"]
            else: outskyfile=None

            log.info("No sky file given. Computing sky first")
            from desispec.quicklook.quicksky import compute_sky
            fibermap=input_frame.fibermap
            skymodel=compute_sky(input_frame,fibermap)
            if outskyfile is not None:
                from desispec.io.sky import write_sky
                log.info("writing an output sky model file %s "%outskyfile)
                write_sky(outputfile,skymodel,input_frame.meta)

        #- now do the subtraction                   
        return self.run_pa(input_frame,skymodel)
コード例 #5
0
 def test_subtract_sky_with_gradient_using_compute_polynomial_times_sky(self):
     spectra = self._get_spectra(with_gradient=True)
     sky = compute_sky(spectra,angular_variation_deg=1,chromatic_variation_deg=1,add_variance=self.add_variance)
     subtract_sky(spectra, sky)
     
     #- allow some slop in the sky subtraction
     self.assertTrue(np.allclose(spectra.flux, 0, rtol=1e-3, atol=1e-3)) # this is not exact, it's an iterative fit
コード例 #6
0
ファイル: desi_compute_sky.py プロジェクト: profxj/desispec
def main():

    parser = argparse.ArgumentParser(
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)

    parser.add_argument('--infile',
                        type=str,
                        default=None,
                        required=True,
                        help='path of DESI exposure frame fits file')
    parser.add_argument('--fibermap',
                        type=str,
                        default=None,
                        required=True,
                        help='path of DESI exposure frame fits file')
    parser.add_argument('--fiberflat',
                        type=str,
                        default=None,
                        required=True,
                        help='path of DESI fiberflat fits file')
    parser.add_argument('--outfile',
                        type=str,
                        default=None,
                        required=True,
                        help='path of DESI sky fits file')

    args = parser.parse_args()
    log = get_logger()

    log.info("starting")

    # read exposure to load data and get range of spectra
    frame = read_frame(args.infile)
    specmin = frame.header["SPECMIN"]
    specmax = frame.header["SPECMAX"]

    # read fibermap to locate sky fibers
    fibermap = read_fibermap(args.fibermap)
    selection = np.where((fibermap["OBJTYPE"] == "SKY")
                         & (fibermap["FIBER"] >= specmin)
                         & (fibermap["FIBER"] <= specmax))[0]
    if selection.size == 0:
        log.error("no sky fiber in fibermap %s" % args.fibermap)
        sys.exit(12)

    # read fiberflat
    fiberflat = read_fiberflat(args.fiberflat)

    # apply fiberflat to sky fibers
    apply_fiberflat(frame, fiberflat)

    # compute sky model
    skymodel = compute_sky(frame, fibermap)

    # write result
    write_sky(args.outfile, skymodel, frame.header)

    log.info("successfully wrote %s" % args.outfile)
コード例 #7
0
ファイル: procalgs.py プロジェクト: secroun/desispec
 def run_pa(self,input_frame,outputfile,fibermap=None): #- input frame should be already fiberflat fielded
     from desispec.io.sky import write_sky
     from desispec.quicklook.quicksky import compute_sky
    
     skymodel=compute_sky(input_frame,fibermap)                
     
     write_sky(outputfile,skymodel,input_frame.meta)
     log.info("Sky Model file wrtten. Exiting the pipeline for this configuration")
     sys.exit(0)
コード例 #8
0
ファイル: procalgs.py プロジェクト: rstaten/desispec
 def run_pa(self,input_frame,outputfile,fibermap=None): #- input frame should be already fiberflat fielded
     from desispec.io.sky import write_sky
     from desispec.quicklook.quicksky import compute_sky
    
     skymodel=compute_sky(input_frame,fibermap)                
     
     write_sky(outputfile,skymodel,input_frame.meta)
     log.info("Sky Model file wrtten. Exiting the pipeline for this configuration")
     sys.exit(0)
コード例 #9
0
ファイル: procalgs.py プロジェクト: rstaten/desispec
    def run_pa(self,input_frame,fiberflat,outputfile):
        from desispec.fiberflat import apply_fiberflat
        from desispec.sky import compute_sky
        from desispec.io.sky import write_sky

        #- First apply fiberflat to sky fibers
        apply_fiberflat(input_frame,fiberflat)

        #- calculate the model
        skymodel=compute_sky(input_frame)
        write_sky(outputfile,skymodel,input_frame.meta)
        log.info("Sky Model file wrtten. Exiting pipeline for this configuration")
        sys.exit(0)
コード例 #10
0
ファイル: procalgs.py プロジェクト: secroun/desispec
    def run_pa(self,input_frame,fiberflat,outputfile):
        from desispec.fiberflat import apply_fiberflat
        from desispec.sky import compute_sky
        from desispec.io.sky import write_sky

        #- First apply fiberflat to sky fibers
        apply_fiberflat(input_frame,fiberflat)

        #- calculate the model
        skymodel=compute_sky(input_frame)
        write_sky(outputfile,skymodel,input_frame.meta)
        log.info("Sky Model file wrtten. Exiting pipeline for this configuration")
        sys.exit(0)
コード例 #11
0
def main(args) :

    log=get_logger()

    log.info("starting")

    # read exposure to load data and get range of spectra
    frame = read_frame(args.infile)
    specmin, specmax = np.min(frame.fibers), np.max(frame.fibers)

    if args.cosmics_nsig>0 : # Reject cosmics
        reject_cosmic_rays_1d(frame,args.cosmics_nsig)

    # read fiberflat
    fiberflat = read_fiberflat(args.fiberflat)

    # apply fiberflat to sky fibers
    apply_fiberflat(frame, fiberflat)

    # compute sky model
    skymodel = compute_sky(frame,add_variance=(not args.no_extra_variance),\
                           angular_variation_deg=args.angular_variation_deg,\
                           chromatic_variation_deg=args.chromatic_variation_deg,\
                           adjust_wavelength=args.adjust_wavelength,\
                           adjust_lsf=args.adjust_lsf)

    # QA
    if (args.qafile is not None) or (args.qafig is not None):
        log.info("performing skysub QA")
        # Load
        qaframe = load_qa_frame(args.qafile, frame_meta=frame.meta, flavor=frame.meta['FLAVOR'])
        # Run
        qaframe.run_qa('SKYSUB', (frame, skymodel))
        # Write
        if args.qafile is not None:
            write_qa_frame(args.qafile, qaframe)
            log.info("successfully wrote {:s}".format(args.qafile))
        # Figure(s)
        if args.qafig is not None:
            qa_plots.frame_skyres(args.qafig, frame, skymodel, qaframe)

    # record inputs
    frame.meta['IN_FRAME'] = shorten_filename(args.infile)
    frame.meta['FIBERFLT'] = shorten_filename(args.fiberflat)

    # write result
    write_sky(args.outfile, skymodel, frame.meta)
    log.info("successfully wrote %s"%args.outfile)
コード例 #12
0
 def test_uniform_resolution(self):        
     #- Setup data for a Resolution matrix
     spectra = self._get_spectra()
                     
     sky = compute_sky(spectra,add_variance=self.add_variance)
     self.assertEqual(sky.flux.shape, spectra.flux.shape)
     self.assertEqual(sky.ivar.shape, spectra.ivar.shape)
     self.assertEqual(sky.mask.shape, spectra.mask.shape)
     
     delta=spectra.flux[0]-sky.flux[0]
     d=np.inner(delta,delta)
     self.assertAlmostEqual(d,0.)
     
     delta=spectra.flux[-1]-sky.flux[-1]
     d=np.inner(delta,delta)
     self.assertAlmostEqual(d,0.)
コード例 #13
0
ファイル: test_sky.py プロジェクト: desihub/desispec
 def test_uniform_resolution(self):        
     #- Setup data for a Resolution matrix
     spectra = self._get_spectra()
                     
     sky = compute_sky(spectra,add_variance=self.add_variance)
     self.assertEqual(sky.flux.shape, spectra.flux.shape)
     self.assertEqual(sky.ivar.shape, spectra.ivar.shape)
     self.assertEqual(sky.mask.shape, spectra.mask.shape)
     
     delta=spectra.flux[0]-sky.flux[0]
     d=np.inner(delta,delta)
     self.assertAlmostEqual(d,0.)
     
     delta=spectra.flux[-1]-sky.flux[-1]
     d=np.inner(delta,delta)
     self.assertAlmostEqual(d,0.)
コード例 #14
0
ファイル: desi_compute_sky.py プロジェクト: profxj/desispec
def main() :

    parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)

    parser.add_argument('--infile', type = str, default = None, required=True,
                        help = 'path of DESI exposure frame fits file')
    parser.add_argument('--fibermap', type = str, default = None, required=True,
                        help = 'path of DESI exposure frame fits file')
    parser.add_argument('--fiberflat', type = str, default = None, required=True,
                        help = 'path of DESI fiberflat fits file')
    parser.add_argument('--outfile', type = str, default = None, required=True,
                        help = 'path of DESI sky fits file')


    args = parser.parse_args()
    log=get_logger()

    log.info("starting")

    # read exposure to load data and get range of spectra
    frame = read_frame(args.infile)
    specmin=frame.header["SPECMIN"]
    specmax=frame.header["SPECMAX"]

    # read fibermap to locate sky fibers
    fibermap = read_fibermap(args.fibermap)
    selection=np.where((fibermap["OBJTYPE"]=="SKY")&(fibermap["FIBER"]>=specmin)&(fibermap["FIBER"]<=specmax))[0]
    if selection.size == 0 :
        log.error("no sky fiber in fibermap %s"%args.fibermap)
        sys.exit(12)

    # read fiberflat
    fiberflat = read_fiberflat(args.fiberflat)

    # apply fiberflat to sky fibers
    apply_fiberflat(frame, fiberflat)

    # compute sky model
    skymodel = compute_sky(frame, fibermap)

    # write result
    write_sky(args.outfile, skymodel, frame.header)

    log.info("successfully wrote %s"%args.outfile)
コード例 #15
0
ファイル: procalgs.py プロジェクト: gnizq64/desispec
    def run_pa(self,
               input_frame,
               outputfile,
               fibermap=None,
               apply_resolution=False
               ):  #- input frame should be already fiberflat fielded
        from desispec.io.sky import write_sky
        from desispec.quicklook.quicksky import compute_sky

        skymodel = compute_sky(input_frame,
                               fibermap,
                               apply_resolution=apply_resolution)

        write_sky(outputfile, skymodel, input_frame.meta)
        # SEE ABOVE COMMENT!!!!
        log.debug(
            "Sky Model file wrtten. Exiting the pipeline for this configuration"
        )
        sys.exit(0)
コード例 #16
0
def main(args):

    log = get_logger()

    log.info("starting")

    # read exposure to load data and get range of spectra
    frame = read_frame(args.infile)
    specmin, specmax = np.min(frame.fibers), np.max(frame.fibers)

    # read fiberflat
    fiberflat = read_fiberflat(args.fiberflat)

    # apply fiberflat to sky fibers
    apply_fiberflat(frame, fiberflat)

    # compute sky model
    skymodel = compute_sky(frame)

    # QA
    if (args.qafile is not None) or (args.qafig is not None):
        log.info("performing skysub QA")
        # Load
        qaframe = load_qa_frame(args.qafile,
                                frame,
                                flavor=frame.meta['FLAVOR'])
        # Run
        qaframe.run_qa('SKYSUB', (frame, skymodel))
        # Write
        if args.qafile is not None:
            write_qa_frame(args.qafile, qaframe)
            log.info("successfully wrote {:s}".format(args.qafile))
        # Figure(s)
        if args.qafig is not None:
            qa_plots.frame_skyres(args.qafig, frame, skymodel, qaframe)

    # write result
    write_sky(args.outfile, skymodel, frame.meta)
    log.info("successfully wrote %s" % args.outfile)
コード例 #17
0
ファイル: sky.py プロジェクト: rstaten/desispec
def main(args) :

    log=get_logger()

    log.info("starting")

    # read exposure to load data and get range of spectra
    frame = read_frame(args.infile)
    specmin, specmax = np.min(frame.fibers), np.max(frame.fibers)

    # read fiberflat
    fiberflat = read_fiberflat(args.fiberflat)

    # apply fiberflat to sky fibers
    apply_fiberflat(frame, fiberflat)

    # compute sky model
    skymodel = compute_sky(frame)

    # QA
    if (args.qafile is not None) or (args.qafig is not None):
        log.info("performing skysub QA")
        # Load
        qaframe = load_qa_frame(args.qafile, frame, flavor=frame.meta['FLAVOR'])
        # Run
        qaframe.run_qa('SKYSUB', (frame, skymodel))
        # Write
        if args.qafile is not None:
            write_qa_frame(args.qafile, qaframe)
            log.info("successfully wrote {:s}".format(args.qafile))
        # Figure(s)
        if args.qafig is not None:
            qa_plots.frame_skyres(args.qafig, frame, skymodel, qaframe)

    # write result
    write_sky(args.outfile, skymodel, frame.meta)
    log.info("successfully wrote %s"%args.outfile)
コード例 #18
0
 def test_subtract_sky(self):
     spectra = self._get_spectra()
     sky = compute_sky(spectra,add_variance=self.add_variance)
     subtract_sky(spectra, sky)
     #- allow some slop in the sky subtraction
     self.assertTrue(np.allclose(spectra.flux, 0, rtol=1e-5, atol=1e-6))
コード例 #19
0
ファイル: test_sky.py プロジェクト: desihub/desispec
 def test_subtract_sky(self):
     spectra = self._get_spectra()
     sky = compute_sky(spectra,add_variance=self.add_variance)
     subtract_sky(spectra, sky)
     #- allow some slop in the sky subtraction
     self.assertTrue(np.allclose(spectra.flux, 0, rtol=1e-5, atol=1e-6))