def get_coeffs_position(t, ra, dec, draskydt, ddecdt, ng, npo, coeff, multiplier=(None, None)): p, dec_resid, dec_rms = cg.chebfit(t, dec, ddecdt, xMultiplier=multiplier[0], dxMultiplier=multiplier[1], nPoly=coeff) rap, ra_coord_resid, ra_rms = cg.chebfit(t, ra, draskydt / np.cos(np.pi * dec / 180.), xMultiplier=multiplier[0], dxMultiplier=multiplier[1], nPoly=coeff) ra_sky_resid = (ra_coord_resid) * np.cos(np.pi * dec / 180.) return p, rap, 3600.0 * 1000.0 * np.max( np.sqrt(dec_resid**2 + ra_sky_resid**2))
def get_coeffs_position(t, ra, dec, dracoorddt, ddecdt, ng, npo, coeff, multiplier=(None, None)): p, dec_resid, dec_rms = cg.chebfit(t, dec, ddecdt, xMultiplier=multiplier[0], dxMultiplier=multiplier[1], nPoly=coeff) rap, ra_resid, ra_rms = cg.chebfit(t, ra, dracoorddt, xMultiplier=multiplier[0], dxMultiplier=multiplier[1], nPoly=coeff) ra_real_resid = (ra_resid)*np.cos(np.pi*dec/180.) return p, rap, 3600.0*1000.0*np.max(np.sqrt(dec_resid**2 + ra_real_resid**2))
def get_coeffs_se(t, se, ng, npo, coeff, multiplier=None): p, resid, rms = cg.chebfit(t, se, None, xMultiplier=multiplier, nPoly=coeff) return p, np.max(np.abs(resid))
def test_raise_error(self): x = np.linspace(-1, 1, 9) y = np.sin(x) dy = np.cos(x) p, resid, rms = cf.chebfit(x, y, dy, nPoly=4) with self.assertRaises(RuntimeError): ce.chebeval(np.linspace(-1, 1, 17), p, interval=[1, 2, 3])
def get_coeffs_dist(t, dist, distdt, ng, npo, coeff, multiplier=(None, None)): p, resid, rms = cg.chebfit(t, dist, distdt, xMultiplier=multiplier[0], dxMultiplier=multiplier[1], nPoly=coeff) return p, np.max(np.abs(resid))
def test_eval(self): x = np.linspace(-1, 1, 9) y = np.sin(x) dy = np.cos(x) p, resid, rms = cf.chebfit(x, y, dy, nPoly=4) yy_wVel, vv = ce.chebeval(np.linspace(-1, 1, 17), p) yy_woutVel, vv = ce.chebeval(np.linspace(-1, 1, 17), p, doVelocity=False) self.assertTrue(np.allclose(yy_woutVel, yy_wVel))
def test_ends_locked(self): x = np.linspace(-1, 1, 9) y = np.sin(x) dy = np.cos(x) for polynomial in range(4, 10): p, resid, rms = cf.chebfit(x, y, dy, nPoly=4) yy, vv = ce.chebeval(np.linspace(-1, 1, 17), p) self.assertAlmostEqual(yy[0], y[0], places=13) self.assertAlmostEqual(yy[-1], y[-1], places=13) self.assertAlmostEqual(vv[0], dy[0], places=13) self.assertAlmostEqual(vv[-1], dy[-1], places=13)
def test_accuracy(self): """If nPoly is greater than number of values being fit, then fit should be exact. """ x = np.linspace(0, np.pi, 9) y = np.sin(x) dy = np.cos(x) p, resid, rms = cf.chebfit(x, y, dy, nPoly=16) print p yy, vv = ce.chebeval(x, p, interval=np.array([0, np.pi])) self.assertTrue(np.allclose(yy, y, rtol=1e-13)) self.assertTrue(np.allclose(vv, dy, rtol=1e-13)) self.assertLess(np.sum(resid), 1e-13)
def test_real_mba(self): for day in range(2, 4): p, dec_resid, dec_rms = cf.chebfit( self.mbaDict[day]["t"], self.mbaDict[day]["dec"], self.mbaDict[day]["ddecdt"], nPoly=self.mbaDict[day]["coeff"], ) rap, ra_resid, ra_rms = cf.chebfit( self.mbaDict[day]["t"], self.mbaDict[day]["ra"], self.mbaDict[day]["dradt"] / np.cos(np.pi * self.mbaDict[day]["dec"] / 180.0), nPoly=self.mbaDict[day]["coeff"], ) self.assertTrue(np.allclose(self.mbaDict[day]["rap"], rap)) self.assertTrue(np.allclose(self.mbaDict[day]["ra_resid"], ra_resid)) self.assertTrue(np.allclose(self.mbaDict[day]["ra_rms"], ra_rms)) self.assertTrue(np.allclose(self.mbaDict[day]["p"], p)) self.assertTrue(np.allclose(self.mbaDict[day]["dec_resid"], dec_resid)) self.assertTrue(np.allclose(self.mbaDict[day]["dec_rms"], dec_rms))
def test_real_mba(self): for day in range(2, 4): p, dec_resid, dec_rms = cf.chebfit( self.mbaDict[day]['t'], self.mbaDict[day]['dec'], self.mbaDict[day]['ddecdt'], nPoly=self.mbaDict[day]['coeff']) rap, ra_resid, ra_rms = cf.chebfit( self.mbaDict[day]['t'], self.mbaDict[day]['ra'], self.mbaDict[day]['dradt'] / np.cos(np.pi * self.mbaDict[day]['dec'] / 180.), nPoly=self.mbaDict[day]['coeff']) self.assertTrue(np.allclose(self.mbaDict[day]['rap'], rap)) self.assertTrue( np.allclose(self.mbaDict[day]['ra_resid'], ra_resid)) self.assertTrue(np.allclose(self.mbaDict[day]['ra_rms'], ra_rms)) self.assertTrue(np.allclose(self.mbaDict[day]['p'], p)) self.assertTrue( np.allclose(self.mbaDict[day]['dec_resid'], dec_resid)) self.assertTrue(np.allclose(self.mbaDict[day]['dec_rms'], dec_rms))
def test_accuracy_prefit_c1c2(self): """If nPoly is greater than number of values being fit, then fit should be exact. """ NPOINTS = 8 NPOLY = 16 x = np.linspace(0, np.pi, NPOINTS + 1) y = np.sin(x) dy = np.cos(x) xmatrix, dxmatrix = cf.makeChebMatrix(NPOINTS + 1, NPOLY) p, resid, rms = cf.chebfit(x, y, dy, xMultiplier=xmatrix, dxMultiplier=dxmatrix, nPoly=NPOLY) yy, vv = ce.chebeval(x, p, interval=np.array([0, np.pi])) self.assertTrue(np.allclose(yy, y, rtol=1e-13)) self.assertTrue(np.allclose(vv, dy, rtol=1e-13)) self.assertLess(np.sum(resid), 1e-13)
def get_coeffs_position(t, ra, dec, draskydt, ddecdt, ng, npo, coeff): p, dec_resid, dec_rms = cg.chebfit(t, dec, ddecdt, nPoly=coeff) rap, ra_coord_resid, ra_rms = cg.chebfit(t, ra, draskydt/np.cos(np.pi*dec/180.), nPoly=coeff) ra_sky_resid = (ra_coord_resid)*np.cos(np.pi*dec/180.) return p, rap, 3600.0*1000.0*np.max(np.sqrt(dec_resid**2 + ra_sky_resid**2))
def get_coeffs_dist2(t, dist, ng, npo, coeff): p, resid, rms = cg.chebfit(t, dist, None, nPoly=coeff) return p, np.max(np.abs(resid))
def get_coeffs_vmag(t, vmag, ng, npo, coeff): p, resid, rms = cg.chebfit(t, vmag, None, nPoly=coeff) return p, np.max(np.abs(resid))