replaced answer with a namedtuple

This commit is contained in:
Stephen M. McQuay
2011-09-17 15:39:01 -06:00
parent 837a72b246
commit 0577356cd7
8 changed files with 94 additions and 82 deletions
+1 -1
View File
@@ -21,4 +21,4 @@ if __name__ == '__main__':
]
for test in tests:
unittest.TextTestRunner(verbosity=3).run(test)
unittest.TextTestRunner(verbosity=1).run(test)
+26 -14
View File
@@ -3,6 +3,7 @@
import unittest
from interp import baker
from interp.baker import Answer
class Test(unittest.TestCase):
@@ -68,6 +69,17 @@ class Test(unittest.TestCase):
self.assertAlmostEqual(result, right_answer)
def testRunBaker_linear(self):
size_of_simplex = 3
R, R_q = (self.all_points[:size_of_simplex],
self.q[:size_of_simplex])
answer = baker.interpolate(self.X, R, R_q)
good_answer = Answer(qlin=0.5, final=None, error=None, abc={})
self.assertEqual(answer, good_answer)
def testRunBaker_1(self):
size_of_simplex = 3
extra_points = 3
@@ -79,11 +91,11 @@ class Test(unittest.TestCase):
+ extra_points],
self.q[size_of_simplex:size_of_simplex + extra_points])
answer = baker.run_baker(self.X, R, R_q, S, S_q)
answer = baker.interpolate(self.X, R, R_q, S, S_q)
a = answer['abc'][0]
b = answer['abc'][1]
c = answer['abc'][2]
a = answer.abc[0]
b = answer.abc[1]
c = answer.abc[2]
self.assertEqual(sorted((a, b, c)), sorted((0, 0.0, 1 / 3.)))
@@ -97,9 +109,9 @@ class Test(unittest.TestCase):
+ extra_points],
self.q[size_of_simplex:size_of_simplex + extra_points])
answer = baker.run_baker(self.X, R, R_q, S, S_q)
answer = baker.interpolate(self.X, R, R_q, S, S_q)
a, b, c = sorted(answer['abc'])
a, b, c = sorted(answer.abc)
aa, bb, cc = sorted((2 / 3.0, 2 / 3.0, 1 / 3.0))
self.assertAlmostEqual(a, aa)
@@ -115,11 +127,11 @@ class Test(unittest.TestCase):
S, S_q = (self.all_points[size_of_simplex:size_of_simplex \
+ extra_points],
self.q[size_of_simplex:size_of_simplex + extra_points])
answer = baker.run_baker(self.X, R, R_q, S, S_q)
answer = baker.interpolate(self.X, R, R_q, S, S_q)
a = answer['abc'][0]
b = answer['abc'][1]
c = answer['abc'][2]
a = answer.abc[0]
b = answer.abc[1]
c = answer.abc[2]
a, b, c = sorted((a, b, c))
aa, bb, cc = sorted((13 / 14., 2 / 7., 15 / 14.))
@@ -137,11 +149,11 @@ class Test(unittest.TestCase):
S, S_q = (self.all_points[size_of_simplex:size_of_simplex \
+ extra_points],
self.q[size_of_simplex:size_of_simplex + extra_points])
answer = baker.run_baker(self.X, R, R_q, S, S_q)
answer = baker.interpolate(self.X, R, R_q, S, S_q)
a = answer['abc'][0]
b = answer['abc'][1]
c = answer['abc'][2]
a = answer.abc[0]
b = answer.abc[1]
c = answer.abc[2]
a, b, c = sorted((a, b, c))
aa, bb, cc = sorted((48 / 53.0, 15 / 53.0, 54 / 53.0))
+5 -5
View File
@@ -77,7 +77,7 @@ class Test(unittest.TestCase):
self.phis, self.qlin = baker.qlinear(self.X, self.R, self.q)
self.exact = exact_func(self.X)
self.answer = baker.run_baker(self.X, self.R,
self.answer = baker.interpolate(self.X, self.R,
self.R_q, self.S, self.S_q)
def test_R_contains_X(self):
@@ -86,22 +86,22 @@ class Test(unittest.TestCase):
def test_1(self):
a, b, c, d, e, f = (0, 1, 1, 2, 2, 0)
err = calculate_error_term(self, a, b, c, d, e, f)
self.assertAlmostEqual(err, self.answer['error'])
self.assertAlmostEqual(err, self.answer.error)
def test_swap_first_elements(self):
a, b, c, d, e, f = (1, 0, 1, 2, 2, 0)
err = calculate_error_term(self, a, b, c, d, e, f)
self.assertAlmostEqual(err, self.answer['error'])
self.assertAlmostEqual(err, self.answer.error)
def test_swap_two_pairs(self):
a, b, c, d, e, f = (1, 2, 0, 1, 2, 0)
err = calculate_error_term(self, a, b, c, d, e, f)
self.assertAlmostEqual(err, self.answer['error'])
self.assertAlmostEqual(err, self.answer.error)
def test_swap_all_pairs(self):
a, b, c, d, e, f = (0, 2, 0, 1, 2, 1)
err = calculate_error_term(self, a, b, c, d, e, f)
self.assertAlmostEqual(err, self.answer['error'])
self.assertAlmostEqual(err, self.answer.error)
if __name__ == '__main__':
+17 -18
View File
@@ -2,9 +2,8 @@
import unittest
from interp.baker import run_baker
from interp.grid import contains
from interp.baker import interpolate
from interp.grid import contains
def exact_func(X):
@@ -36,42 +35,42 @@ class Test(unittest.TestCase):
def test_RunBaker_1_extra_point(self, extra=1):
S = self.g[3:3 + extra]
S_q = self.q[3:3 + extra]
answer = run_baker(self.X, self.R, self.R_q, S, S_q, order=3)
lin_err = abs(self.exact - answer['qlin'])
final_err = abs(self.exact - answer['final'])
answer = interpolate(self.X, self.R, self.R_q, S, S_q, order=3)
lin_err = abs(self.exact - answer.qlin)
final_err = abs(self.exact - answer.final)
# expected failure ...
self.assertTrue(lin_err >= final_err)
def test_RunBaker_2_extra_point(self, extra=2):
S = self.g[3: 3 + extra]
S_q = self.q[3:3 + extra]
answer = run_baker(self.X, self.R, self.R_q, S, S_q, order=3)
lin_err = abs(self.exact - answer['qlin'])
final_err = abs(self.exact - answer['final'])
answer = interpolate(self.X, self.R, self.R_q, S, S_q, order=3)
lin_err = abs(self.exact - answer.qlin)
final_err = abs(self.exact - answer.final)
self.assertTrue(lin_err >= final_err)
def test_RunBaker_3_extra_point(self, extra=3):
S = self.g[3: 3 + extra]
S_q = self.q[3:3 + extra]
answer = run_baker(self.X, self.R, self.R_q, S, S_q, order=3)
lin_err = abs(self.exact - answer['qlin'])
final_err = abs(self.exact - answer['final'])
answer = interpolate(self.X, self.R, self.R_q, S, S_q, order=3)
lin_err = abs(self.exact - answer.qlin)
final_err = abs(self.exact - answer.final)
self.assertTrue(lin_err >= final_err)
def test_RunBaker_4_extra_point(self, extra=4):
S = self.g[3: 3 + extra]
S_q = self.q[3:3 + extra]
answer = run_baker(self.X, self.R, self.R_q, S, S_q, order=3)
lin_err = abs(self.exact - answer['qlin'])
final_err = abs(self.exact - answer['final'])
answer = interpolate(self.X, self.R, self.R_q, S, S_q, order=3)
lin_err = abs(self.exact - answer.qlin)
final_err = abs(self.exact - answer.final)
self.assertTrue(lin_err >= final_err)
def test_RunBaker_5_extra_point(self, extra=5):
S = self.g[3: 3 + extra]
S_q = self.q[3:3 + extra]
answer = run_baker(self.X, self.R, self.R_q, S, S_q, order=3)
lin_err = abs(self.exact - answer['qlin'])
final_err = abs(self.exact - answer['final'])
answer = interpolate(self.X, self.R, self.R_q, S, S_q, order=3)
lin_err = abs(self.exact - answer.qlin)
final_err = abs(self.exact - answer.final)
self.assertTrue(lin_err >= final_err)
if __name__ == '__main__':
+16 -17
View File
@@ -2,8 +2,7 @@
import unittest
from interp.baker import run_baker
from interp.baker import interpolate
from interp.grid import grid
from interp.grid import contains
@@ -41,9 +40,9 @@ class Test(unittest.TestCase):
def test_RunBaker_1_extra_point(self, extra=1):
S = self.g[3: 3 + extra]
S_q = self.q[3: 3 + extra]
answer = run_baker(self.X, self.R, self.R_q, S, S_q)
lin_err = abs(self.exact - answer['qlin'])
final_err = abs(self.exact - answer['final'])
answer = interpolate(self.X, self.R, self.R_q, S, S_q)
lin_err = abs(self.exact - answer.qlin)
final_err = abs(self.exact - answer.final)
#XXX: not sure about this one:
self.assertEqual(lin_err, final_err)
@@ -51,33 +50,33 @@ class Test(unittest.TestCase):
def test_RunBaker_2_extra_point(self, extra=2):
S = self.g[3: 3 + extra]
S_q = self.q[3: 3 + extra]
answer = run_baker(self.X, self.R, self.R_q, S, S_q)
lin_err = abs(self.exact - answer['qlin'])
final_err = abs(self.exact - answer['final'])
answer = interpolate(self.X, self.R, self.R_q, S, S_q)
lin_err = abs(self.exact - answer.qlin)
final_err = abs(self.exact - answer.final)
self.assertTrue(lin_err >= final_err)
def test_RunBaker_3_extra_point(self, extra=3):
S = self.g[3: 3 + extra]
S_q = self.q[3: 3 + extra]
answer = run_baker(self.X, self.R, self.R_q, S, S_q)
lin_err = abs(self.exact - answer['qlin'])
final_err = abs(self.exact - answer['final'])
answer = interpolate(self.X, self.R, self.R_q, S, S_q)
lin_err = abs(self.exact - answer.qlin)
final_err = abs(self.exact - answer.final)
self.assertTrue(lin_err >= final_err)
def test_RunBaker_4_extra_point(self, extra=4):
S = self.g[3: 3 + extra]
S_q = self.q[3: 3 + extra]
answer = run_baker(self.X, self.R, self.R_q, S, S_q)
lin_err = abs(self.exact - answer['qlin'])
final_err = abs(self.exact - answer['final'])
answer = interpolate(self.X, self.R, self.R_q, S, S_q)
lin_err = abs(self.exact - answer.qlin)
final_err = abs(self.exact - answer.final)
self.assertTrue(lin_err >= final_err)
def test_RunBaker_5_extra_point(self, extra=5):
S = self.g[3: 3 + extra]
S_q = self.q[3: 3 + extra]
answer = run_baker(self.X, self.R, self.R_q, S, S_q)
lin_err = abs(self.exact - answer['qlin'])
final_err = abs(self.exact - answer['final'])
answer = interpolate(self.X, self.R, self.R_q, S, S_q)
lin_err = abs(self.exact - answer.qlin)
final_err = abs(self.exact - answer.final)
self.assertTrue(lin_err >= final_err)
if __name__ == '__main__':