示例#1
0
    def test_ex2d(self):
        flux, ivar, Rdata = ex2d(self.image, self.ivar, self.psf, 0, self.nspec,
            self.ww, wavesize=len(self.ww)//5, nsubbundles=1)
        self.assertEqual(flux.shape, (self.nspec, len(self.ww)))
        self.assertEqual(ivar.shape, (self.nspec, len(self.ww)))

        self.assertEqual(Rdata.ndim, 3)
        self.assertEqual(Rdata.shape[0], self.nspec)
        self.assertEqual(Rdata.shape[2], len(self.ww))
        self.assertGreater(Rdata.shape[1], 13)

        flux3, ivar3, Rdata3 = ex2d(self.image, self.ivar, self.psf, 0, self.nspec,
            self.ww, wavesize=len(self.ww)//2, nsubbundles=2)

        self.assertEqual(flux.shape, flux3.shape)
        self.assertEqual(ivar.shape, ivar3.shape)
        self.assertEqual(Rdata.shape, Rdata3.shape)

        err = np.sqrt(1/ivar + 1/ivar3)
        chi = (flux-flux3)/err
        errchi = (np.sqrt(1/ivar)-np.sqrt(1/ivar3))/err

        self.assertLess(np.max(np.abs(chi)), 0.1)
        self.assertLess(np.max(np.abs(errchi)), 0.1)
        for i in range(Rdata.shape[0]):
            dR = (Rdata[i] - Rdata3[i]) / np.max(Rdata[i])
            self.assertLess(np.max(np.abs(dR)), 0.01)
示例#2
0
    def test_ex2d(self):
        flux, ivar, Rdata = ex2d(self.image, self.ivar, self.psf, 0, self.nspec,
            self.ww, wavesize=len(self.ww)//5, nsubbundles=1)
        self.assertEqual(flux.shape, (self.nspec, len(self.ww)))
        self.assertEqual(ivar.shape, (self.nspec, len(self.ww)))

        self.assertEqual(Rdata.ndim, 3)
        self.assertEqual(Rdata.shape[0], self.nspec)
        self.assertEqual(Rdata.shape[2], len(self.ww))
        self.assertGreater(Rdata.shape[1], 13)

        flux3, ivar3, Rdata3 = ex2d(self.image, self.ivar, self.psf, 0, self.nspec,
            self.ww, wavesize=len(self.ww)//2, nsubbundles=2)

        self.assertEqual(flux.shape, flux3.shape)
        self.assertEqual(ivar.shape, ivar3.shape)
        self.assertEqual(Rdata.shape, Rdata3.shape)

        err = np.sqrt(1/ivar + 1/ivar3)
        chi = (flux-flux3)/err
        errchi = (np.sqrt(1/ivar)-np.sqrt(1/ivar3))/err

        self.assertLess(np.max(np.abs(chi)), 0.1)
        self.assertLess(np.max(np.abs(errchi)), 0.1)
        for i in range(Rdata.shape[0]):
            dR = (Rdata[i] - Rdata3[i]) / np.max(Rdata[i])
            self.assertLess(np.max(np.abs(dR)), 0.01)
示例#3
0
    def test_ex2d_reproducibility(self):
        pix = np.random.normal(0, 3.0, size=(400,400))
        ivar = np.ones_like(pix) / 3.0**2

        wave = np.arange(7500, 7600, 0.75)
        flux1, ivar1, R1 = ex2d(pix, ivar, self.psf, 0, 3, wave)
        flux2, ivar2, R2 = ex2d(pix, ivar, self.psf, 0, 3, wave)

        #- first check if they are allclose as a hint in case they later fail
        #- the exact bitwise check
        self.assertTrue(np.allclose(flux1, flux2))
        self.assertTrue(np.allclose(ivar1, ivar2))
        self.assertTrue(np.allclose(R1, R2))

        self.assertTrue(np.all(flux1 == flux2))
        self.assertTrue(np.all(ivar1 == ivar2))
        self.assertTrue(np.all(R1 == R2))
示例#4
0
    def test_subbundles(self):
        #- should work even if nsubbundles > bundlesize
        for nsubbundles in (2,3, 2*self.nspec):
            flux, ivar, Rdata = ex2d(self.image, self.ivar, self.psf, 0,
                self.nspec, self.ww, wavesize=len(self.ww)//5,
                bundlesize=self.nspec, nsubbundles=nsubbundles)

            self.assertEqual(flux.shape, (self.nspec, len(self.ww)))
            self.assertEqual(ivar.shape, (self.nspec, len(self.ww)))
示例#5
0
    def test_subbundles(self):
        #- should work even if nsubbundles > bundlesize
        for nsubbundles in (2,3, 2*self.nspec):
            flux, ivar, Rdata = ex2d(self.image, self.ivar, self.psf, 0,
                self.nspec, self.ww, wavesize=len(self.ww)//5,
                bundlesize=self.nspec, nsubbundles=nsubbundles)

            self.assertEqual(flux.shape, (self.nspec, len(self.ww)))
            self.assertEqual(ivar.shape, (self.nspec, len(self.ww)))
示例#6
0
    def test_ex2d(self):
        flux, ivar, Rdata = ex2d(self.image, self.ivar, self.psf, 0, self.nspec,
            self.ww, wavesize=len(self.ww)//5)
        self.assertEqual(flux.shape, (self.nspec, len(self.ww)))
        self.assertEqual(ivar.shape, (self.nspec, len(self.ww)))

        self.assertEqual(Rdata.ndim, 3)
        self.assertEqual(Rdata.shape[0], self.nspec)
        self.assertEqual(Rdata.shape[2], len(self.ww))
        self.assertGreater(Rdata.shape[1], 15)
示例#7
0
 def test_ex2d_xyrange(self):
     xyrange = xmin, xmax, ymin, ymax = self.psf.xyrange([0, self.nspec],
                                                         self.ww)
     subimage = self.image[ymin:ymax, xmin:xmax]
     subivar = self.ivar[ymin:ymax, xmin:xmax]
     flux, ivar, Rdata = ex2d(subimage,
                              subivar,
                              self.psf,
                              0,
                              self.nspec,
                              self.ww,
                              wavesize=len(self.ww) // 5,
                              xyrange=xyrange)
示例#8
0
    def test_subbundles(self):
        for nsubbundles in (2, 3):
            flux, ivar, Rdata = ex2d(self.image,
                                     self.ivar,
                                     self.psf,
                                     0,
                                     self.nspec,
                                     self.ww,
                                     wavesize=len(self.ww) // 5,
                                     nsubbundles=nsubbundles)

            self.assertEqual(flux.shape, (self.nspec, len(self.ww)))
            self.assertEqual(ivar.shape, (self.nspec, len(self.ww)))
示例#9
0
 def test_ex2d_full_output(self):
     xyrange = xmin, xmax, ymin, ymax = self.psf.xyrange([0, self.nspec],
                                                         self.ww)
     subimage = self.image[ymin:ymax, xmin:xmax]
     subivar = self.ivar[ymin:ymax, xmin:xmax]
     results = ex2d(subimage,
                    subivar,
                    self.psf,
                    0,
                    self.nspec,
                    self.ww,
                    wavesize=len(self.ww) // 5,
                    xyrange=xyrange,
                    full_output=True)
示例#10
0
    def test_ex2d(self):
        flux, ivar, Rdata = ex2d(self.image,
                                 self.ivar,
                                 self.psf,
                                 0,
                                 self.nspec,
                                 self.ww,
                                 wavesize=len(self.ww) // 5)
        self.assertEqual(flux.shape, (self.nspec, len(self.ww)))
        self.assertEqual(ivar.shape, (self.nspec, len(self.ww)))

        self.assertEqual(Rdata.ndim, 3)
        self.assertEqual(Rdata.shape[0], self.nspec)
        self.assertEqual(Rdata.shape[2], len(self.ww))
        self.assertGreater(Rdata.shape[1], 15)
示例#11
0
 def test_ex2d_full_output(self):
     xyrange = xmin,xmax,ymin,ymax = self.psf.xyrange([0,self.nspec], self.ww)
     subimage = self.image[ymin:ymax, xmin:xmax]
     subivar = self.ivar[ymin:ymax, xmin:xmax]
     results = ex2d(subimage, subivar, self.psf, 0, self.nspec,
         self.ww, wavesize=len(self.ww)//5, xyrange=xyrange, full_output=True)
示例#12
0
 def test_ex2d_xyrange(self):
     xyrange = xmin,xmax,ymin,ymax = self.psf.xyrange([0,self.nspec], self.ww)
     subimage = self.image[ymin:ymax, xmin:xmax]
     subivar = self.ivar[ymin:ymax, xmin:xmax]
     flux, ivar, Rdata = ex2d(subimage, subivar, self.psf, 0, self.nspec,
         self.ww, wavesize=len(self.ww)//5, xyrange=xyrange)