Beispiel #1
0
    def run_pa(self,
               input_image,
               psf,
               outwave,
               boxwidth,
               nspec,
               fibers=None,
               fibermap=None,
               dumpfile=None,
               maskFile=None,
               usesigma=False,
               quick_resolution=False):
        from desispec.boxcar import do_boxcar
        import desispec.psf
        if fibermap['OBJTYPE'][0] == 'ARC':
            psf = desispec.psf.PSF(psf)
        flux, ivar, Rdata = do_boxcar(input_image,
                                      psf,
                                      outwave,
                                      boxwidth=boxwidth,
                                      nspec=nspec,
                                      maskFile=maskFile,
                                      usesigma=usesigma,
                                      quick_resolution=quick_resolution)

        #- write to a frame object
        qndiag = 21
        wsigma = None
        if quick_resolution:
            if hasattr(psf, 'wcoeff'):
                wsigma = np.empty(flux.shape)
                if isinstance(nspec, (tuple, list, np.ndarray)):
                    for i, s in enumerate(nspec):
                        #- GD: Need confirmation, but this appears to be missing.
                        wsigma[i] = psf.wdisp(
                            s, outwave) / psf.angstroms_per_pixel(s, outwave)
                else:
                    for i in range(nspec):
                        wsigma[i] = psf.wdisp(
                            i, outwave) / psf.angstroms_per_pixel(i, outwave)
            elif hasattr(psf, 'xsigma_boot'):
                wsigma = np.tile(psf.xsigma_boot, (outwave.shape[0], 1))
        frame = fr(outwave,
                   flux,
                   ivar,
                   resolution_data=Rdata,
                   fibers=fibers,
                   meta=input_image.meta,
                   fibermap=fibermap,
                   wsigma=wsigma,
                   ndiag=qndiag)

        if dumpfile is not None:
            night = frame.meta['NIGHT']
            expid = frame.meta['EXPID']
            io.write_frame(dumpfile, frame)
            log.debug("Wrote intermediate file %s after %s" %
                      (dumpfile, self.name))

        return frame
Beispiel #2
0
    def run_pa(self,
               input_image,
               psf,
               specmin,
               nspec,
               wave,
               regularize=None,
               ndecorr=True,
               bundlesize=25,
               wavesize=50,
               outfile=None,
               fibers=None,
               fibermap=None):
        import specter
        from specter.extract import ex2d
        from desispec.frame import Frame as fr

        flux, ivar, Rdata = ex2d(input_image.pix,
                                 input_image.ivar * (input_image.mask == 0),
                                 psf,
                                 specmin,
                                 nspec,
                                 wave,
                                 regularize=regularize,
                                 ndecorr=ndecorr,
                                 bundlesize=bundlesize,
                                 wavesize=wavesize)

        #- Augment input image header for output
        input_image.meta['NSPEC'] = (nspec, 'Number of spectra')
        input_image.meta['WAVEMIN'] = (wave[0], 'First wavelength [Angstroms]')
        input_image.meta['WAVEMAX'] = (wave[-1], 'Last wavelength [Angstroms]')
        input_image.meta['WAVESTEP'] = (wave[1] - wave[0],
                                        'Wavelength step size [Angstroms]')
        input_image.meta['SPECTER'] = (specter.__version__,
                                       'https://github.com/desihub/specter')
        #input_image.meta['IN_PSF']  = (_trim(psf_file), 'Input spectral PSF')
        #input_image.meta['IN_IMG']  = (_trim(input_file), 'Input image')

        frame = fr(wave,
                   flux,
                   ivar,
                   resolution_data=Rdata,
                   fibers=fibers,
                   meta=input_image.meta,
                   fibermap=fibermap)

        if outfile is not None:  #- writing to a frame file if needed.
            from desispec import io
            io.write_frame(outfile, frame)
            log.info("wrote frame output file  %s" % outfile)

        return frame
Beispiel #3
0
    def run_pa(self, input_image, psf, outwave, boxwidth, nspec,fibers=None, fibermap=None,outfile=None):
        from desispec.boxcar import do_boxcar
        from desispec.frame import Frame as fr
        
        flux,ivar,Rdata=do_boxcar(input_image, psf, outwave, boxwidth=boxwidth, 
nspec=nspec)

        #- write to a frame object
        
        frame = fr(outwave, flux, ivar, resolution_data=Rdata,fibers=fibers, meta=input_image.meta, fibermap=fibermap)
        
        if outfile is not None:  #- writing to a frame file if needed.
            from desispec import io
            io.write_frame(outfile,frame)
            log.info("wrote frame output file  %s"%outfile)

        return frame
Beispiel #4
0
    def run_pa(self, input_image, psf, outwave, boxwidth, nspec,fibers=None, fibermap=None,dump=False,dumpfile=None):
        from desispec.boxcar import do_boxcar
        from desispec.frame import Frame as fr
        
        flux,ivar,Rdata=do_boxcar(input_image, psf, outwave, boxwidth=boxwidth, 
nspec=nspec)

        #- write to a frame object
        
        frame = fr(outwave, flux, ivar, resolution_data=Rdata,fibers=fibers, meta=input_image.meta, fibermap=fibermap)
        
        if dump and dumpfile is not None:
            from desispec import io
            night = frame.meta['NIGHT']
            expid = frame.meta['EXPID']
            io.write_frame(dumpfile, frame)
            log.info("Wrote intermediate file %s after %s"%(dumpfile,self.name))

        return frame
Beispiel #5
0
    def run_pa(self, input_image, psf, outwave, boxwidth, nspec,
               fibers=None, fibermap=None,dump=False,dumpfile=None,
               maskFile=None):
        from desispec.boxcar import do_boxcar
        from desispec.frame import Frame as fr
        flux,ivar,Rdata=do_boxcar(input_image, psf, outwave, boxwidth=boxwidth, 
                                  nspec=nspec,maskFile=maskFile)

        #- write to a frame object
        
        frame = fr(outwave, flux, ivar, resolution_data=Rdata,fibers=fibers, meta=input_image.meta, fibermap=fibermap)
        
        if dump and dumpfile is not None:
            from desispec import io
            night = frame.meta['NIGHT']
            expid = frame.meta['EXPID']
            io.write_frame(dumpfile, frame)
            log.info("Wrote intermediate file %s after %s"%(dumpfile,self.name))

        return frame
Beispiel #6
0
    def run_pa(self,input_image,psf,specmin,nspec,wave,regularize=None,ndecorr=True,bundlesize=25,wavesize=50, outfile=None,fibers=None,fibermap=None):
        import specter
        from specter.extract import ex2d
        from desispec.frame import Frame as fr

        flux,ivar,Rdata=ex2d(input_image.pix,input_image.ivar*(input_image.mask==0),psf,specmin,nspec,wave,regularize=regularize,ndecorr=ndecorr,bundlesize=bundlesize,wavesize=wavesize)

        #- Augment input image header for output
        input_image.meta['NSPEC']   = (nspec, 'Number of spectra')
        input_image.meta['WAVEMIN'] = (wave[0], 'First wavelength [Angstroms]')
        input_image.meta['WAVEMAX'] = (wave[-1], 'Last wavelength [Angstroms]')
        input_image.meta['WAVESTEP']= (wave[1]-wave[0], 'Wavelength step size [Angstroms]')
        input_image.meta['SPECTER'] = (specter.__version__, 'https://github.com/desihub/specter')
        #input_image.meta['IN_PSF']  = (_trim(psf_file), 'Input spectral PSF')
        #input_image.meta['IN_IMG']  = (_trim(input_file), 'Input image')

        frame = fr(wave, flux, ivar, resolution_data=Rdata,fibers=fibers, meta=input_image.meta, fibermap=fibermap)
        
        if outfile is not None:  #- writing to a frame file if needed.
            from desispec import io
            io.write_frame(outfile,frame)
            log.info("wrote frame output file  %s"%outfile)

        return frame