diff --git a/tests/unit_tests/test_hetGP.py b/tests/unit_tests/test_hetGP.py index 427e714..c06560d 100644 --- a/tests/unit_tests/test_hetGP.py +++ b/tests/unit_tests/test_hetGP.py @@ -30,10 +30,10 @@ def test_fit(): test_model = emulator(x=X, theta=np.array([0]), f=Y, method="hetGP") test_model.fit() - assert test_model._info["ll"] == reference_model["ll"] - assert test_model._info["theta"] == reference_model["theta"] - assert test_model._info["g"] == reference_model["g"] - assert test_model._info["beta0"] == reference_model["beta0"] + assert np.allclose(test_model._info["ll"], reference_model["ll"]) + assert np.allclose(test_model._info["theta"], reference_model["theta"]) + assert np.allclose(test_model._info["g"], reference_model["g"]) + assert np.allclose(test_model._info["beta0"], reference_model["beta0"]) assert np.allclose(test_model._info["Delta"], reference_model["Delta"]) assert np.allclose(test_model._info["Lambda"], reference_model["Lambda"]) @@ -56,10 +56,10 @@ def test_matern(): ) test_model.fit() - assert test_model._info["ll"] == reference_model["ll"] - assert test_model._info["theta"] == reference_model["theta"] - assert test_model._info["g"] == reference_model["g"] - assert test_model._info["beta0"] == reference_model["beta0"] + assert np.allclose(test_model._info["ll"], reference_model["ll"]) + assert np.allclose(test_model._info["theta"], reference_model["theta"]) + assert np.allclose(test_model._info["g"], reference_model["g"]) + assert np.allclose(test_model._info["beta0"], reference_model["beta0"]) assert np.allclose(test_model._info["Delta"], reference_model["Delta"]) assert np.allclose(test_model._info["Lambda"], reference_model["Lambda"]) @@ -114,10 +114,10 @@ def test_hetGP_update_kriging_believer(): test_model.fit() test_model.update(Xnew) - assert test_model._info["ll"] == reference_model["ll"] - assert test_model._info["theta"] == reference_model["theta"] - assert test_model._info["g"] == reference_model["g"] - assert test_model._info["beta0"] == reference_model["beta0"] + assert np.allclose(test_model._info["ll"], reference_model["ll"]) + assert np.allclose(test_model._info["theta"], reference_model["theta"]) + assert np.allclose(test_model._info["g"], reference_model["g"]) + assert np.allclose(test_model._info["beta0"], reference_model["beta0"]) def test_hetGP_update(): @@ -132,16 +132,22 @@ def test_hetGP_update(): test_model.fit() test_model.update(x=Xnew, Y=Ypred) - assert test_model._info["ll"] == reference_model["ll"] - assert test_model._info["theta"] == reference_model["theta"] - assert test_model._info["g"] == reference_model["g"] - assert test_model._info["beta0"] == reference_model["beta0"] + assert np.allclose(test_model._info["ll"], reference_model["ll"]) + assert np.allclose(test_model._info["theta"], reference_model["theta"]) + assert np.allclose(test_model._info["g"], reference_model["g"]) + assert np.allclose(test_model._info["beta0"], reference_model["beta0"]) def test_conversion_to_homGP(): # should return homoskedastic GP X = np.linspace(0, 1, 20).reshape(-1, 1) - Y = X + rand = np.random.default_rng(2) + reps = rand.choice(len(X), size=len(X)) + X = X[reps, :] + Y = np.sin(X).squeeze() + noise = 0.2 * rand.normal(size=Y.shape[0]) + Y += noise + Y = Y.reshape(-1, 1) model = emulator(x=X, theta=np.array([0]), f=Y, method="hetGP") Xp = np.linspace(X.min(), X.max(), 100).reshape(-1, 1) preds = model.predict(Xp) diff --git a/tests/unit_tests/test_homGP.py b/tests/unit_tests/test_homGP.py index f5ce2d1..ca72d09 100644 --- a/tests/unit_tests/test_homGP.py +++ b/tests/unit_tests/test_homGP.py @@ -31,10 +31,10 @@ def test_fit(): test_model = emulator(x=X, theta=np.array([0]), f=Y, method="homGP") test_model.fit() - assert test_model._info["ll"] == reference_model["ll"] - assert test_model._info["theta"] == reference_model["theta"] - assert test_model._info["g"] == reference_model["g"] - assert test_model._info["beta0"] == reference_model["beta0"] + assert np.allclose(test_model._info["ll"], reference_model["ll"]) + assert np.allclose(test_model._info["theta"], reference_model["theta"]) + assert np.allclose(test_model._info["g"], reference_model["g"]) + assert np.allclose(test_model._info["beta0"], reference_model["beta0"]) def test_predict(): @@ -93,10 +93,10 @@ def test_matern(): ) test_model.fit() - assert test_model._info["ll"] == reference_model["ll"] - assert test_model._info["theta"] == reference_model["theta"] - assert test_model._info["g"] == reference_model["g"] - assert test_model._info["beta0"] == reference_model["beta0"] + assert np.allclose(test_model._info["ll"], reference_model["ll"]) + assert np.allclose(test_model._info["theta"], reference_model["theta"]) + assert np.allclose(test_model._info["g"], reference_model["g"]) + assert np.allclose(test_model._info["beta0"], reference_model["beta0"]) def test_homGP_update_kriging_believer(): @@ -111,10 +111,10 @@ def test_homGP_update_kriging_believer(): test_model.fit() test_model.update(Xnew) - assert test_model._info["ll"] == reference_model["ll"] - assert test_model._info["theta"] == reference_model["theta"] - assert test_model._info["g"] == reference_model["g"] - assert test_model._info["beta0"] == reference_model["beta0"] + assert np.allclose(test_model._info["ll"], reference_model["ll"]) + assert np.allclose(test_model._info["theta"], reference_model["theta"]) + assert np.allclose(test_model._info["g"], reference_model["g"]) + assert np.allclose(test_model._info["beta0"], reference_model["beta0"]) def test_homGP_update(): @@ -129,10 +129,10 @@ def test_homGP_update(): test_model.fit() test_model.update(x=Xnew, Y=Ypred) - assert test_model._info["ll"] == reference_model["ll"] - assert test_model._info["theta"] == reference_model["theta"] - assert test_model._info["g"] == reference_model["g"] - assert test_model._info["beta0"] == reference_model["beta0"] + assert np.allclose(test_model._info["ll"], reference_model["ll"]) + assert np.allclose(test_model._info["theta"], reference_model["theta"]) + assert np.allclose(test_model._info["g"], reference_model["g"]) + assert np.allclose(test_model._info["beta0"], reference_model["beta0"]) if __name__ == "__main__": diff --git a/tests/unit_tests/test_multihetGP.py b/tests/unit_tests/test_multihetGP.py index 15ee070..61c9dbd 100644 --- a/tests/unit_tests/test_multihetGP.py +++ b/tests/unit_tests/test_multihetGP.py @@ -8,11 +8,12 @@ from copy import deepcopy # create some noise 2D data +np.random.seed(1) rng = np.random.default_rng(1) lhs = qmc.LatinHypercube(d=2, rng=rng) X = lhs.random(n=100) -reps = rng.choice(len(X), size=100, replace=True) +reps = rng.choice(len(X), size=5000, replace=True) X = X[reps,] # prediction grid Xp = lhs.random(n=100) @@ -20,7 +21,7 @@ Y[:, 0] = np.sin(X[:, 0]) Y[:, 1] = np.cos(X[:, 1]) # varying noise field -noise = rng.normal(size=Y.shape) * np.exp(-(X**2)) +noise = rng.normal(size=Y.shape) noise *= 2 Y += noise @@ -41,7 +42,7 @@ } NOISECONTROL = {"k_theta_g_bounds": (1, 100), "g_max": 1e2, "g_bounds": (1e-6, 1)} -MAXIT = 100 +MAXIT = 200 def test_fit():