Exemple #1
0
 def test_error(self):
     '''Test that using edges outside of x range raises ValueError'''
     nx = 10
     x = np.arange(nx)
     y = np.ones(nx)
     with self.assertRaises(ValueError):
         yy = rebin.trapz_rebin(x, y, edges=np.arange(-1, nx - 1))
     with self.assertRaises(ValueError):
         yy = rebin.trapz_rebin(x, y, edges=np.arange(1, nx + 1))
Exemple #2
0
 def test_error(self):
     '''Test that using edges outside of x range raises ValueError'''
     nx = 10
     x = np.arange(nx)
     y = np.ones(nx)
     with self.assertRaises(ValueError):
         yy = rebin.trapz_rebin(x, y, edges=np.arange(-1, nx-1))
     with self.assertRaises(ValueError):
         yy = rebin.trapz_rebin(x, y, edges=np.arange(1, nx+1))
Exemple #3
0
    def test_nonuniform(self):
        '''test rebinning a non-uniform density'''
        for nx in range(5, 12):
            x = np.linspace(0, 2 * np.pi, nx)
            y = np.sin(x)
            edges = [0, 2 * np.pi]
            yy = rebin.trapz_rebin(x, y, edges=edges)
            self.assertTrue(np.allclose(yy, 0.0))

        x = np.linspace(0, 2 * np.pi, 100)
        y = np.sin(x)
        edges = [0, 0.5 * np.pi, np.pi, 1.5 * np.pi, 2 * np.pi]
        yy = rebin.trapz_rebin(x, y, edges=edges)
        self.assertTrue(np.allclose(yy[0:2], 2 / np.pi, atol=5e-4))
        self.assertTrue(np.allclose(yy[2:4], -2 / np.pi, atol=5e-4))
Exemple #4
0
 def test_nonuniform(self):
     '''test rebinning a non-uniform density'''
     for nx in range(5,12):
         x = np.linspace(0, 2*np.pi, nx)
         y = np.sin(x)
         edges = [0, 2*np.pi]
         yy = rebin.trapz_rebin(x, y, edges=edges)
         self.assertTrue(np.allclose(yy, 0.0))
     
     x = np.linspace(0, 2*np.pi, 100)
     y = np.sin(x)
     edges = [0, 0.5*np.pi, np.pi, 1.5*np.pi, 2*np.pi]
     yy = rebin.trapz_rebin(x, y, edges=edges)
     self.assertTrue(np.allclose(yy[0:2], 2/np.pi, atol=5e-4))
     self.assertTrue(np.allclose(yy[2:4], -2/np.pi, atol=5e-4))
Exemple #5
0
 def test_centers(self):
     '''Test with centers instead of edges'''
     nx = 10
     x = np.arange(nx)
     y = np.ones(nx)
     xx = np.linspace(0.5, nx - 1.5)
     yy = rebin.trapz_rebin(x, y, xx)
     self.assertTrue(np.allclose(yy, 1.0), msg=str(yy))
Exemple #6
0
 def test_centers(self):
     '''Test with centers instead of edges'''
     nx = 10
     x = np.arange(nx)
     y = np.ones(nx)
     xx = np.linspace(0.5, nx-1.5)
     yy = rebin.trapz_rebin(x, y, xx)
     self.assertTrue(np.allclose(yy, 1.0), msg=str(yy))
Exemple #7
0
    def test_trapzrebin(self):
        '''Test constant flux density at various binnings'''
        nx = 10
        x = np.arange(nx) * 1.1
        y = np.ones(nx)

        #- test various binnings
        for nedge in range(3, 10):
            edges = np.linspace(min(x), max(x), nedge)
            yy = rebin.trapz_rebin(x, y, edges=edges)
            self.assertTrue(np.all(yy == 1.0), msg=str(yy))

        #- edges starting/stopping in the interior
        sum = rebin.trapz_rebin(x, y, edges=[0.5, 8.3])[0]
        for nedge in range(3, 3 * nx):
            edges = np.linspace(0.5, 8.3, nedge)
            yy = rebin.trapz_rebin(x, y, edges=edges)
            self.assertTrue(np.allclose(yy, 1.0), msg=str(yy))
Exemple #8
0
 def test_trapzrebin(self):
     '''Test constant flux density at various binnings'''
     nx = 10
     x = np.arange(nx)*1.1
     y = np.ones(nx)
     
     #- test various binnings
     for nedge in range(3,10):
         edges = np.linspace(min(x), max(x), nedge)
         yy = rebin.trapz_rebin(x, y, edges=edges)
         self.assertTrue(np.all(yy == 1.0), msg=str(yy))
         
     #- edges starting/stopping in the interior
     sum = rebin.trapz_rebin(x, y, edges=[0.5, 8.3])[0]
     for nedge in range(3, 3*nx):
         edges = np.linspace(0.5, 8.3, nedge)
         yy = rebin.trapz_rebin(x, y, edges=edges)
         self.assertTrue(np.allclose(yy, 1.0), msg=str(yy))
Exemple #9
0
 def eval(self, coeff, wave, z):
     '''
     Return template for given coefficients, wavelengths, and redshift
     
     Args:
         coeff : array of coefficients length self.nbasis
         wave : wavelengths at which to evaluate template flux
         z : redshift at which to evaluate template flux
     
     Returns:
         template flux array
     
     Notes:
         A single factor of (1+z)^-1 is applied to the resampled flux
         to conserve integrated flux after redshifting.
     '''
     assert len(coeff) == self.nbasis
     flux = self.flux.T.dot(coeff).T / (1 + z)
     return trapz_rebin(self.wave * (1 + z), flux, wave)