Skip to content

Commit

Permalink
Update test assertions to use assert_allclose
Browse files Browse the repository at this point in the history
  • Loading branch information
robertapplin committed Apr 7, 2024
1 parent 39eb1c0 commit 1bbc9b7
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 95 deletions.
86 changes: 41 additions & 45 deletions quasielasticbayes/test/Four_test.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Characterization tests for Four module"""
import unittest
import numpy as np

from quasielasticbayes.Four import four


Expand All @@ -17,15 +18,14 @@ def test_Four_PPN_Re(self):
for i in range(nonzero_entries)]
y = x
out = four(y, 8, 1, 1, -1)
dp = 3
self.assertAlmostEqual(-1.6806+3.6243j, out[0], dp)
self.assertAlmostEqual(1.4300-0.4846j, out[1], dp)
self.assertAlmostEqual(0.5016-0.4846j, out[2], dp)
self.assertAlmostEqual(1.4299+3.6243j, out[3], dp)
self.assertAlmostEqual(-0.5748, out[4], dp)
self.assertAlmostEqual(0.3780, out[5], dp)
self.assertAlmostEqual(0.9833, out[6], dp)
self.assertAlmostEqual(0.6845, out[7], dp)
np.testing.assert_allclose(-1.6806+3.6243j, out[0], rtol=1e-3)
np.testing.assert_allclose(1.4300-0.4846j, out[1], rtol=1e-3)
np.testing.assert_allclose(0.5016-0.4846j, out[2], rtol=1e-3)
np.testing.assert_allclose(1.4299+3.6243j, out[3], rtol=1e-3)
np.testing.assert_allclose(-0.5748, out[4], rtol=1e-3)
np.testing.assert_allclose(0.3780, out[5], rtol=1e-3)
np.testing.assert_allclose(0.9833, out[6], rtol=1e-3)
np.testing.assert_allclose(0.6845, out[7], rtol=1e-3)

# In the code it only seems to use 1,-1,-1 and 1,1,0
# So these are the two we will test
Expand All @@ -36,15 +36,14 @@ def test_Four_PNN_Re(self):
for i in range(nonzero_entries)]
y = x
out = four(y, 8, 1, -1, -1)
dp = 3
self.assertAlmostEqual(-1.681+3.6243j, out[0], dp)
self.assertAlmostEqual(1.4299-0.4846j, out[1], dp)
self.assertAlmostEqual(0.5016-0.4846j, out[2], dp)
self.assertAlmostEqual(1.4299+3.6243j, out[3], dp)
self.assertAlmostEqual(-0.5748, out[4], dp)
self.assertAlmostEqual(0.37800, out[5], dp)
self.assertAlmostEqual(0.9833, out[6], dp)
self.assertAlmostEqual(0.6845, out[7], dp)
np.testing.assert_allclose(-1.681+3.6243j, out[0], rtol=1e-3)
np.testing.assert_allclose(1.4299-0.4846j, out[1], rtol=1e-3)
np.testing.assert_allclose(0.5016-0.4846j, out[2], rtol=1e-3)
np.testing.assert_allclose(1.4299+3.6243j, out[3], rtol=1e-3)
np.testing.assert_allclose(-0.5748, out[4], rtol=1e-3)
np.testing.assert_allclose(0.37800, out[5], rtol=1e-3)
np.testing.assert_allclose(0.9833, out[6], rtol=1e-3)
np.testing.assert_allclose(0.6845, out[7], rtol=1e-3)

def test_Four_PNN_Im(self):
x = np.zeros(4098, dtype=complex)
Expand All @@ -53,15 +52,14 @@ def test_Four_PNN_Im(self):
for i in range(nonzero_entries)]
y = x
out = four(y, 8, 1, -1, -1)
dp = 3
self.assertAlmostEqual(-1.681+13.2812j, out[0], dp)
self.assertAlmostEqual(-2.5701+1.1722j, out[1], dp)
self.assertAlmostEqual(0.5016-2.1415j, out[2], dp)
self.assertAlmostEqual(5.4299-6.0326j, out[3], dp)
self.assertAlmostEqual(-0.5748+4j, out[4], dp)
self.assertAlmostEqual(0.3780+5j, out[5], dp)
self.assertAlmostEqual(0.9833+6j, out[6], dp)
self.assertAlmostEqual(0.6845+7j, out[7], dp)
np.testing.assert_allclose(-1.681+13.2812j, out[0], rtol=1e-3)
np.testing.assert_allclose(-2.5701+1.1722j, out[1], rtol=1e-3)
np.testing.assert_allclose(0.5016-2.1415j, out[2], rtol=1e-3)
np.testing.assert_allclose(5.4299-6.0326j, out[3], rtol=1e-3)
np.testing.assert_allclose(-0.5748+4j, out[4], rtol=1e-3)
np.testing.assert_allclose(0.3780+5j, out[5], rtol=1e-3)
np.testing.assert_allclose(0.9833+6j, out[6], rtol=1e-3)
np.testing.assert_allclose(0.6845+7j, out[7], rtol=1e-3)

def test_Four_PPZ_Re(self):
x = np.zeros(4098, dtype=complex)
Expand All @@ -70,15 +68,14 @@ def test_Four_PPZ_Re(self):
for i in range(nonzero_entries)]
y = x
out = four(y, 8, 1, 1, 0)
dp = 3
self.assertAlmostEqual(-0.0553, out[0], dp)
self.assertAlmostEqual(1.5000+1.4527j, out[1], dp)
self.assertAlmostEqual(1.0357, out[2], dp)
self.assertAlmostEqual(1.5000-1.4527j, out[3], dp)
self.assertAlmostEqual(-0.0554, out[4], dp)
self.assertAlmostEqual(0.3780, out[5], dp)
self.assertAlmostEqual(0.9833, out[6], dp)
self.assertAlmostEqual(0.6845, out[7], dp)
np.testing.assert_allclose(-0.0553, out[0], rtol=1e-2)
np.testing.assert_allclose(1.5000+1.4527j, out[1], rtol=1e-2)
np.testing.assert_allclose(1.0357, out[2], rtol=1e-2)
np.testing.assert_allclose(1.5000-1.4527j, out[3], rtol=1e-2)
np.testing.assert_allclose(-0.0554, out[4], rtol=1e-2)
np.testing.assert_allclose(0.3780, out[5], rtol=1e-2)
np.testing.assert_allclose(0.9833, out[6], rtol=1e-2)
np.testing.assert_allclose(0.6845, out[7], rtol=1e-2)

def test_Four_PPZ_Im(self):
x = np.zeros(4098, dtype=complex)
Expand All @@ -87,15 +84,14 @@ def test_Four_PPZ_Im(self):
for i in range(nonzero_entries)]
y = x
out = four(y, 8, 1, 1, 0)
dp = 3
self.assertAlmostEqual(5.9446, out[0], dp)
self.assertAlmostEqual(1.4999-1.3757j, out[1], dp)
self.assertAlmostEqual(1.0357-2j, out[2], dp)
self.assertAlmostEqual(1.4999-4.2812j, out[3], dp)
self.assertAlmostEqual(-6.0554, out[4], dp)
self.assertAlmostEqual(0.3780+5j, out[5], dp)
self.assertAlmostEqual(0.9833+6j, out[6], dp)
self.assertAlmostEqual(0.6845+7j, out[7], dp)
np.testing.assert_allclose(5.9446, out[0], rtol=1e-3)
np.testing.assert_allclose(1.4999-1.3757j, out[1], rtol=1e-3)
np.testing.assert_allclose(1.0357-2j, out[2], rtol=1e-3)
np.testing.assert_allclose(1.4999-4.2812j, out[3], rtol=1e-3)
np.testing.assert_allclose(-6.0554, out[4], rtol=1e-3)
np.testing.assert_allclose(0.3780+5j, out[5], rtol=1e-3)
np.testing.assert_allclose(0.9833+6j, out[6], rtol=1e-3)
np.testing.assert_allclose(0.6845+7j, out[7], rtol=1e-3)


if __name__ == '__main__':
Expand Down
19 changes: 7 additions & 12 deletions quasielasticbayes/test/qldata_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
import os.path
import unittest
import numpy as np
from quasielasticbayes.testing import load_json, add_path, get_OS_precision
import tempfile

from quasielasticbayes.testing import load_json, add_path
from quasielasticbayes.QLdata import qldata


Expand Down Expand Up @@ -45,18 +46,12 @@ def test_qlres_minimal_input(self):
with open(os.path.join(DATA_DIR, 'qldata', cf), 'r') as fh:
reference = load_json(fh)

dp = get_OS_precision()
self.assertEqual(reference['nd'], nd)
np.testing.assert_almost_equal(reference['xout'], xout,
decimal=dp)
np.testing.assert_almost_equal(reference['yout'], yout,
decimal=dp)
np.testing.assert_almost_equal(reference['eout'], eout,
decimal=dp)
np.testing.assert_almost_equal(reference['yfit'], yfit,
decimal=dp)
np.testing.assert_almost_equal(reference['yprob'],
yprob, decimal=dp)
np.testing.assert_allclose(reference['xout'], xout, rtol=1e-3)
np.testing.assert_allclose(reference['yout'], yout, rtol=1e-3)
np.testing.assert_allclose(reference['eout'], eout, rtol=1e-3)
np.testing.assert_allclose(reference['yfit'], yfit, rtol=1e-3)
np.testing.assert_allclose(reference['yprob'], yprob, rtol=1e-3)


if __name__ == '__main__':
Expand Down
13 changes: 6 additions & 7 deletions quasielasticbayes/test/qlres_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import unittest
import numpy as np
import sys
from quasielasticbayes.testing import add_path, get_OS_precision, load_json

from quasielasticbayes.testing import add_path, load_json
from quasielasticbayes.QLres import qlres

DATA_DIR = os.path.join(os.path.dirname(__file__), 'data')
Expand Down Expand Up @@ -37,13 +37,12 @@ def test_qlres_minimal_input(self):
with open(os.path.join(DATA_DIR, 'qlres', 'qlres-output-spec-0.json'), 'r') as fh:
reference = load_json(fh)

dp = get_OS_precision()
self.assertEqual(reference['nd'], nd)
np.testing.assert_almost_equal(reference['xout'], xout, decimal=dp)
np.testing.assert_almost_equal(reference['yout'], yout, decimal=dp)
np.testing.assert_almost_equal(reference['eout'], eout, decimal=dp)
np.testing.assert_almost_equal(reference['yfit'], yfit, decimal=dp)
np.testing.assert_allclose(reference['yprob'], yprob, rtol=1e-2)
np.testing.assert_allclose(reference['xout'], xout, rtol=1e-3)
np.testing.assert_allclose(reference['yout'], yout, rtol=1e-3)
np.testing.assert_allclose(reference['eout'], eout, rtol=1e-3)
np.testing.assert_allclose(reference['yfit'], yfit, rtol=1e-3)
np.testing.assert_allclose(reference['yprob'], yprob, rtol=1e-3)

if __name__ == '__main__':
unittest.main()
24 changes: 8 additions & 16 deletions quasielasticbayes/test/qlse_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
import os.path
import unittest
import numpy as np
from quasielasticbayes.testing import load_json, add_path
from quasielasticbayes.testing import get_OS_precision, get_qlse_prob
import tempfile

from quasielasticbayes.testing import load_json, add_path
from quasielasticbayes.QLres import qlres


Expand Down Expand Up @@ -44,23 +44,15 @@ def test_qlres_minimal_input(self):
inputs['lwrk'])

# verify
cf = 'qlse_output.json'
with open(os.path.join(DATA_DIR, 'qlse', cf), 'r') as fh:
with open(os.path.join(DATA_DIR, 'qlse', 'qlse_output.json'), 'r') as fh:
reference = load_json(fh)

dp = get_OS_precision()
self.assertEqual(reference['nd'], nd)
np.testing.assert_almost_equal(reference['xout'], xout,
decimal=dp)
np.testing.assert_almost_equal(reference['yout'], yout,
decimal=dp)
np.testing.assert_almost_equal(reference['eout'], eout,
decimal=dp)
np.testing.assert_almost_equal(reference['yfit'], yfit,
decimal=dp)
ref_prob = get_qlse_prob(reference['yprob'])
np.testing.assert_almost_equal(ref_prob, yprob,
decimal=dp)
np.testing.assert_allclose(reference['xout'], xout, rtol=1e-3)
np.testing.assert_allclose(reference['yout'], yout, rtol=1e-3)
np.testing.assert_allclose(reference['eout'], eout, rtol=1e-3)
np.testing.assert_allclose(reference['yfit'], yfit, rtol=1e-3)
np.testing.assert_allclose(reference['yprob'], yprob, rtol=1e-3)


if __name__ == '__main__':
Expand Down
20 changes: 5 additions & 15 deletions quasielasticbayes/testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import json
import numpy as np
import os
import sys


def _json_numpy_obj_hook(dct):
Expand Down Expand Up @@ -35,17 +34,8 @@ def add_path(file_path, file_name):
return os.path.join(file_path, file_name)


def get_OS_precision():
if sys.platform == 'win32':
# Windows
return 7
else:
# Linux or Mac OS
return 1


def get_qlse_prob(ref):
if sys.platform == 'win32':
return ref
else:
return [-2.7656994e+04, -1.8887866e+2, 0.0, -5.8251953e-1]
# def get_qlse_prob(ref):
# if sys.platform == 'win32':
# return ref
# else:
# return [-2.7656994e+04, -1.8887866e+2, 0.0, -5.8251953e-1]

0 comments on commit 1bbc9b7

Please sign in to comment.