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)
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))
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)))
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)
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)
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)))
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)
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)
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)
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)