From f9ecb004512cda69f574b0381ea3c589dd19b14f Mon Sep 17 00:00:00 2001 From: Alina Lacheim <a.lacheim@outlook.de> Date: Wed, 11 Dec 2024 18:49:36 +0100 Subject: [PATCH] delted test for seq_design --- tests/test_PostProcessing.py | 89 +++++++++++++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 7 deletions(-) diff --git a/tests/test_PostProcessing.py b/tests/test_PostProcessing.py index df049e0bd..322fdc5c3 100644 --- a/tests/test_PostProcessing.py +++ b/tests/test_PostProcessing.py @@ -23,7 +23,6 @@ import pytest from bayesvalidrox.post_processing.post_processing import PostProcessing from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.input_space import InputSpace from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns from bayesvalidrox.surrogate_models.surrogate_models import MetaModel from bayesvalidrox.surrogate_models.polynomial_chaos import PCE @@ -46,9 +45,88 @@ def basic_engine(): engine.emulator = True return engine +@pytest.fixture +def basic_engine_trained(): + inp = Input() + inp.add_marginals() + inp.Marginals[0].dist_type = 'normal' + inp.Marginals[0].parameters = [0, 1] + + # Create and configure the MetaModel + mm = MetaModel(inp) + + # Create the engine object + engine = type('Engine', (object,), {})() + engine.trained = True + engine.MetaModel = mm + + # Set up sequential design diagnostics data + engine.SeqModifiedLOO = {'Z': np.array([0.1, 0.2, 0.3])} + engine.seqValidError = {'Z': np.array([0.15, 0.25, 0.35])} + engine.SeqKLD = {'Z': np.array([0.05, 0.1, 0.15])} + engine.SeqBME = {'Z': np.array([0.02, 0.04, 0.06])} + engine.seqRMSEMean = {'Z': np.array([0.12, 0.14, 0.16])} + engine.seqRMSEStd = {'Z': np.array([0.03, 0.05, 0.07])} + engine.SeqDistHellinger = {'Z': np.array([0.08, 0.09, 0.1])} + + # Configure experiment design + expdes = ExpDesigns(inp) + expdes.par_names = ["Parameter 1", "Parameter 2"] # Names for the two input parameters + expdes.x_values = {'X1': [0.1, 0.2, 0.3], 'X2': [0.4, 0.5, 0.6]} # Mock parameter values per design step + expdes.X = np.array([[0, 0], [1, 1], [0.5, 0.5], [0.1, 0.5]]) # Two input dimensions + expdes.Y = {'Z': [[0.4], [0.5], [0.3], [0.4]]} # Output values + engine.out_names = ['Z'] + engine.ExpDesign = expdes + + return engine + +@pytest.fixture +def basic_engine_sequential(): + + inp = Input() + inp.add_marginals() + inp.Marginals[0].dist_type = 'normal' + inp.Marginals[0].parameters = [0, 1] + + mm = MetaModel(inp) + mod = PL() + + expdes = ExpDesigns(inp) + expdes.n_init_samples = 4 + expdes.n_max_samples = 4 + expdes.X = np.array([[0, 0], [1, 1], [0.5, 0.5], [0.1, 0.5]]) # Two input dimensions + expdes.Y = {'Z': [[0.4], [0.5], [0.3], [0.4]]} # Output values + expdes.x_values = np.array([0]) + + engine = Engine(mm, mod, expdes) + engine.out_names = ['Z'] + engine.train = True + engine.emulator = True + + engine.train_sequential() + + engine.SeqModifiedLOO = {'DKL_rep_1': np.array([[1.31565589e-10], + [1.31413432e-10]])} + engine.seqValidError = {} + engine.SeqKLD = {'DKL_rep_1': np.array([[2.6296851 ], + [2.60875351]])} + engine.SeqBME = {'DKL_rep_1': np.array([[-19.33941695], + [-19.29572507]])} + engine.seqRMSEMean = {'DKL_rep_1': np.array([[1.02174823], + [1.02174727]])} + engine.seqRMSEStd = {'DKL_rep_1': np.array([[0.76724993], + [0.76725023]])} + engine.SeqDistHellinger = {} + + for key, array in engine.SeqModifiedLOO.items(): + assert np.all(array != None), f"Array {key} contains None values." + + return engine + @pytest.fixture def pce_engine(): inp = Input() + inp.add_marginals() inp.Marginals[0].dist_type = 'normal' inp.Marginals[0].parameters = [0, 1] @@ -96,7 +174,7 @@ def gpe_engine(): inp.Marginals[0].dist_type = 'normal' inp.Marginals[0].parameters = [0, 1] expdes = ExpDesigns(inp) - expdes.init_param_space(max_deg=1) + expdes.init_param_space() expdes.X = np.array([[0], [1], [0.5]]) expdes.Y = {'Z': [[0.4], [0.5], [0.45]]} expdes.x_values = [0] @@ -254,11 +332,8 @@ def test_plot_metamodel_3d_nopce(basic_engine) -> None: assert str(excinfo.value) == 'This function is only applicable if the MetaModel input dimension is 2.' -#%% _get_sample -#%% _eval_model -#%% _plot_validation - -def test_plot_validation_nopce(basic_engine) -> None: +#%% plot_metamodel_3d +def test_plot_metamodel_3d_pce(pce_engine_3d_plot) -> None: """ Plot validation of non-PCE metamodel """ -- GitLab