diff --git a/src/bayesvalidrox/surrogate_models/exp_designs.py b/src/bayesvalidrox/surrogate_models/exp_designs.py index b2a091a1e81c908f916d0ba581995cc8f74fd052..6b7c9600a50884cb8c0308ac2df2d2cf6a249891 100644 --- a/src/bayesvalidrox/surrogate_models/exp_designs.py +++ b/src/bayesvalidrox/surrogate_models/exp_designs.py @@ -249,14 +249,10 @@ class ExpDesigns(InputSpace): warnings.warn('The given model outputs will be overwritten for the chosen ExpDesign settings.') # Case 2 : X is not given + n_samples = int(self.n_init_samples) if n_samples < 0: raise ValueError('A negative number of samples cannot be created. ' 'Please provide positive n_samples') - n_samples = int(n_samples) - - if self.n_init_samples is None: - self.n_init_samples = n_samples - samples = None sampling_method = self.sampling_method diff --git a/tests/test_BayesInference.py b/tests/test_BayesInference.py index 59b554b1a437d7a21eb944bdccccb8420a18d803..32c28112ac42ddbaa19177229cfa6f0f168079ee 100644 --- a/tests/test_BayesInference.py +++ b/tests/test_BayesInference.py @@ -113,7 +113,7 @@ def test_create_inference() -> None: mm = PCE(inp) mm.fit(expdes.X, expdes.Y) - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) + expdes.generate_ED(max_pce_deg=np.max(mm._pce_deg)) mod = PL() mod.observations = {'Z': np.array([0.45])} @@ -395,7 +395,7 @@ def test_setup_inference_noobservation() -> None: mm = MetaModel(inp) mm.n_params = 1 - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) mod = PL() mod.Output.names = ['Z'] @@ -430,7 +430,7 @@ def test_setup_inference() -> None: mm = MetaModel(inp) mm.n_params = 1 - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) mod = PL() mod.observations = {'Z': np.array([0.45])} @@ -463,7 +463,7 @@ def test_setup_inference_priorsamples() -> None: mm = MetaModel(inp) mm.n_params = 1 - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) mod = PL() mod.observations = {'Z': np.array([0.45])} @@ -497,7 +497,7 @@ def test_setup_inference_valid() -> None: mm = MetaModel(inp) mm.n_params = 1 - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) mod = PL() mod.observations_valid = {'Z': np.array([0.45])} @@ -531,7 +531,7 @@ def test_setup_inference_noname() -> None: mm = MetaModel(inp) mm.n_params = 1 - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) mod = PL() mod.observations = {'Z': np.array([0.45])} @@ -574,7 +574,7 @@ def test_perform_bootstrap() -> None: mm = PCE(inp) mm.n_params = 1 mm.fit(expdes.X, expdes.Y) - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) mod = PL() mod.observations = {'Z': np.array([0.45])} @@ -617,7 +617,7 @@ def test_perform_bootstrap_bayesloocv() -> None: mm = PCE(inp) mm.n_params = 1 mm.fit(expdes.X, expdes.Y) - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) mod = PL() mod.observations = {'Z': np.array([0.45])} @@ -663,7 +663,7 @@ def create_error_model_prior() -> None: mm = PCE(inp) mm.n_params = 1 mm.fit(expdes.X, expdes.Y) - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) mod = PL() mod.observations = {'Z': np.array([0.45])} @@ -705,7 +705,7 @@ def create_error_model_posterior() -> None: mm = PCE(inp) mm.n_params = 1 mm.fit(expdes.X, expdes.Y) - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) mod = PL() mod.observations = {'Z': np.array([0.45])} @@ -754,7 +754,7 @@ def test_posterior_predictive() -> None: mm = PCE(inp) mm.n_params = 1 mm.fit(expdes.X, expdes.Y) - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) y_hat, y_std = mm.eval_metamodel(prior_samples) mod = PL() @@ -806,7 +806,7 @@ def test_posterior_predictive_rejection() -> None: mm = PCE(inp) mm.n_params = 1 mm.fit(expdes.X, expdes.Y) - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) y_hat, y_std = mm.eval_metamodel(prior_samples) mod = PL() @@ -1057,7 +1057,7 @@ if __name__ == '__main__': mm = PCE(inp) mm.n_params = 1 mm.fit(expdes.X, expdes.Y) - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=np.max(1)) + expdes.generate_ED(max_pce_deg=np.max(1)) # y_hat, y_std = mm.eval_metamodel(prior_samples) mod = PL() diff --git a/tests/test_ExpDesign.py b/tests/test_ExpDesign.py index aaf36be527eb6cef725c4a769ee62f8bea26169a..9cef6cd13faf6e79e9dea9539f28c70b1ae59215 100644 --- a/tests/test_ExpDesign.py +++ b/tests/test_ExpDesign.py @@ -206,7 +206,8 @@ def test_generate_ED() -> None: inp.add_marginals() inp.Marginals[0].input_data = x exp = ExpDesigns(inp) - exp.generate_ED(4) + exp.n_init_samples = 4 + exp.generate_ED() def test_generate_ED_negsamplenum(): """ @@ -216,9 +217,10 @@ def test_generate_ED_negsamplenum(): inp = Input() inp.add_marginals() inp.Marginals[0].input_data = x - exp = ExpDesigns(inp, sampling_method = 'random') + exp = ExpDesigns(inp, sampling_method = 'random') + exp.n_init_samples = -1 with pytest.raises(ValueError) as excinfo: - exp.generate_ED(-1) + exp.generate_ED() assert str(excinfo.value) == 'A negative number of samples cannot be created. Please provide positive n_samples' def test_generate_ED_usernoX() -> None: @@ -230,8 +232,9 @@ def test_generate_ED_usernoX() -> None: inp.add_marginals() inp.Marginals[0].input_data = x exp = ExpDesigns(inp, sampling_method = 'user') + exp.n_init_samples = 4 with pytest.raises(AttributeError) as excinfo: - exp.generate_ED(4) + exp.generate_ED() assert str(excinfo.value) == 'User-defined sampling cannot proceed as no samples provided. Please add them to this class as attribute X' def test_generate_ED_userXdimerr() -> None: @@ -244,9 +247,10 @@ def test_generate_ED_userXdimerr() -> None: inp.add_marginals() inp.Marginals[0].input_data = x exp = ExpDesigns(inp, sampling_method = 'user') + exp.n_init_samples = 4 exp.X = X with pytest.raises(AttributeError) as excinfo: - exp.generate_ED(4) + exp.generate_ED() assert str(excinfo.value) == 'The provided samples shuld have 2 dimensions' def test_generate_ED_Xnouser() -> None: @@ -259,8 +263,9 @@ def test_generate_ED_Xnouser() -> None: inp.Marginals[0].input_data = x exp = ExpDesigns(inp) exp.X = [[0],[1]] + exp.n_init_samples = 4 with pytest.warns(UserWarning) as excinfo: - exp.generate_ED(4) + exp.generate_ED() assert exp.sampling_method == 'user' def test_generate_ED_Ynouser() -> None: @@ -273,8 +278,9 @@ def test_generate_ED_Ynouser() -> None: inp.Marginals[0].input_data = x exp = ExpDesigns(inp) exp.Y = {'a': [1]} + exp.n_init_samples = 4 with pytest.warns(UserWarning) as excinfo: - exp.generate_ED(4) + exp.generate_ED() assert exp.Y is None if 0: # TODO: JDist not created? @@ -289,7 +295,8 @@ if 0: # TODO: JDist not created? inp.Marginals[0].input_data = x exp = ExpDesigns(inp, sampling_method = 'user') exp.X = X - exp.generate_ED(4) + exp.n_init_samples = 4 + exp.generate_ED() # TODO: this looks like a pcm-sampler issue if 0: @@ -302,7 +309,8 @@ if 0: inp.add_marginals() inp.Marginals[0].input_data = x exp = ExpDesigns(inp, sampling_method = 'PCM') - exp.generate_ED(4) + exp.n_init_samples = 4 + exp.generate_ED() def test_generate_ED_random() -> None: """ @@ -313,7 +321,8 @@ def test_generate_ED_random() -> None: inp.add_marginals() inp.Marginals[0].input_data = x exp = ExpDesigns(inp, sampling_method = 'random') - exp.generate_ED(4) + exp.n_init_samples = 4 + exp.generate_ED() if 0: # TODO: JDist not created? def test_generate_ED_usertrafo() -> None: @@ -328,7 +337,8 @@ if 0: # TODO: JDist not created? exp = ExpDesigns(inp, sampling_method = 'user') exp.meta_Model_type = 'gpe' exp.X = X - exp.generate_ED(4) + exp.n_init_samples = 4 + exp.generate_ED() def test_generate_ED_randomtrafo() -> None: """ @@ -339,7 +349,8 @@ def test_generate_ED_randomtrafo() -> None: inp.add_marginals() inp.Marginals[0].input_data = x exp = ExpDesigns(inp, sampling_method = 'random') - exp.generate_ED(4) + exp.n_init_samples = 4 + exp.generate_ED() def test_generate_ED_latin() -> None: """ @@ -350,7 +361,8 @@ def test_generate_ED_latin() -> None: inp.add_marginals() inp.Marginals[0].input_data = x exp = ExpDesigns(inp, sampling_method = 'latin-hypercube') - exp.generate_ED(4,1) + exp.n_init_samples = 4 + exp.generate_ED(1) #%% Test ExpDesign.read_from_file diff --git a/tests/test_MCMC.py b/tests/test_MCMC.py index 31b24598683befbbf38c31b1cbe1e7fd22409537..3732384904ec5373a5a9be50ba4b8bebcd97d734 100644 --- a/tests/test_MCMC.py +++ b/tests/test_MCMC.py @@ -54,7 +54,7 @@ def test_MCMC() -> None: mm = MetaModel(inp) mm.fit(expdes.X, expdes.Y) - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=2) + expdes.generate_ED(max_pce_deg=2) mod = PL() mod.observations = {'Z': np.array([0.45]), 'x_values': np.array([0])} @@ -102,7 +102,7 @@ if 0: # TODO: issue not resolved here, issue appears due to specific test setup, mm = MetaModel(inp) mm.fit(expdes.X, expdes.Y) - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=2) + expdes.generate_ED(max_pce_deg=2) mod = PL() mod.observations = {'Z': np.array([0.45]), 'x_values': np.array([0])} @@ -197,7 +197,7 @@ if __name__ == '__main__': mm = MetaModel(inp) mm.fit(expdes.X, expdes.Y) - expdes.generate_ED(expdes.n_init_samples, max_pce_deg=2) + expdes.generate_ED(max_pce_deg=2) mod = PL() mod.observations = {'Z': np.array([0.45]), 'x_values': np.array([0])} diff --git a/tests/test_engine.py b/tests/test_engine.py index 78ec29822f5fe91764965ff8c9c792aadbb5fa1f..eb034d6d9374c636487dcb47e9c0ac59b3008fc0 100644 --- a/tests/test_engine.py +++ b/tests/test_engine.py @@ -149,7 +149,8 @@ def test__BME_Calculator() -> None: mm = PCE(inp) mm.fit([[0.0], [0.5], [1.0]], {'Z': [[0.5], [0.4], [0.5]]}) expdes = ExpDesigns(inp) - expdes.generate_ED(2, max_pce_deg=1) + expdes.n_init_samples = 2 + expdes.generate_ED(max_pce_deg=1) mod = PL() mod.Output.names = ['Z'] engine = Engine(mm, mod, expdes) @@ -172,7 +173,8 @@ def test__BME_Calculator_rmse() -> None: mm = PCE(inp) mm.fit([[0.0], [0.5], [1.0]], {'Z': [[0.5], [0.4], [0.5]]}) expdes = ExpDesigns(inp) - expdes.generate_ED(2, max_pce_deg=1) + expdes.n_init_samples = 2 + expdes.generate_ED(max_pce_deg=1) mod = PL() mod.Output.names = ['Z'] engine = Engine(mm, mod, expdes) @@ -195,7 +197,8 @@ def test__BME_Calculator_lik() -> None: mm = PCE(inp) mm.fit([[0.0], [0.5], [1.0]], {'Z': [[0.5], [0.4], [0.5]]}) expdes = ExpDesigns(inp) - expdes.generate_ED(2, max_pce_deg=1) + expdes.n_init_samples = 2 + expdes.generate_ED(max_pce_deg=1) mod = PL() mod.Output.names = ['Z'] engine = Engine(mm, mod, expdes) @@ -223,7 +226,8 @@ def test__BME_Calculator_2d() -> None: mm = PCE(inp) mm.fit([[0.0, 0.0], [0.5, 0.1], [1.0, 0.9]], {'Z': [[0.5], [0.4], [0.5]]}) expdes = ExpDesigns(inp) - expdes.generate_ED(2, max_pce_deg=1) + expdes.n_init_samples = 2 + expdes.generate_ED(max_pce_deg=1) mod = PL() mod.n_obs = 1 mod.Output.names = ['Z'] @@ -301,7 +305,8 @@ def test__posteriorPlot() -> None: inp.Marginals[0].parameters = [0, 1] mm = MetaModel(inp) expdes = ExpDesigns(inp) - expdes.generate_ED(2, max_pce_deg=1) + expdes.n_init_samples = 2 + expdes.generate_ED(max_pce_deg=1) mod = PL() posterior = np.array([[0], [0.1], [0.2]]) engine = Engine(mm, mod, expdes) @@ -321,7 +326,8 @@ def test__posteriorPlot_2d() -> None: inp.Marginals[1].parameters = [0, 1] mm = MetaModel(inp) expdes = ExpDesigns(inp) - expdes.generate_ED(2, max_pce_deg=1) + expdes.n_init_samples = 2 + expdes.generate_ED(max_pce_deg=1) mod = PL() posterior = np.array([[0, 0], [0.1, 1.0], [0.2, 0.5]]) engine = Engine(mm, mod, expdes)