From 5d3b772a8942851948450ee2afa6c5c0283a1930 Mon Sep 17 00:00:00 2001 From: kohlhaasrebecca <rebecca.kohlhaas@outlook.com> Date: Mon, 26 Aug 2024 10:30:53 +0200 Subject: [PATCH] [tests] Update PCE tests --- .coverage | Bin 53248 -> 0 bytes .coverage.DESKTOP-ATMEKSV.10624.XjrvRHAx | 0 .coverage.DESKTOP-ATMEKSV.22780.XWOfrNvx | 0 .coverage.DESKTOP-ATMEKSV.25100.XbtpWDFx | 0 .coverage.DESKTOP-ATMEKSV.29056.XrBCQErx | Bin 53248 -> 0 bytes .coverage.DESKTOP-ATMEKSV.34604.XhfDgthx | 0 .coverage.DESKTOP-ATMEKSV.37188.XIOzbGrx | 0 .../bayes_inference/bayes_inference.py | 2 +- .../surrogate_models/polynomial_chaos.py | 6 +- .../surrogate_models/surrogate_models.py | 6 +- tests/test_BayesInference.py | 2 +- tests/test_MCMC.py | 6 +- tests/test_MetaModel.py | 6 +- tests/test_PolynomialChaosEmulator.py | 479 +++++++----------- tests/test_SequentialDesign.py | 44 +- tests/test_supplementary.py | 86 ++-- 16 files changed, 269 insertions(+), 368 deletions(-) delete mode 100644 .coverage create mode 100644 .coverage.DESKTOP-ATMEKSV.10624.XjrvRHAx create mode 100644 .coverage.DESKTOP-ATMEKSV.22780.XWOfrNvx create mode 100644 .coverage.DESKTOP-ATMEKSV.25100.XbtpWDFx delete mode 100644 .coverage.DESKTOP-ATMEKSV.29056.XrBCQErx create mode 100644 .coverage.DESKTOP-ATMEKSV.34604.XhfDgthx create mode 100644 .coverage.DESKTOP-ATMEKSV.37188.XIOzbGrx diff --git a/.coverage b/.coverage deleted file mode 100644 index 77770e96ea40081d86344c2d02b2a4fe13fed2cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 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 diff --git a/.coverage.DESKTOP-ATMEKSV.10624.XjrvRHAx b/.coverage.DESKTOP-ATMEKSV.10624.XjrvRHAx new file mode 100644 index 000000000..e69de29bb diff --git a/.coverage.DESKTOP-ATMEKSV.22780.XWOfrNvx b/.coverage.DESKTOP-ATMEKSV.22780.XWOfrNvx new file mode 100644 index 000000000..e69de29bb diff --git a/.coverage.DESKTOP-ATMEKSV.25100.XbtpWDFx b/.coverage.DESKTOP-ATMEKSV.25100.XbtpWDFx new file mode 100644 index 000000000..e69de29bb diff --git a/.coverage.DESKTOP-ATMEKSV.29056.XrBCQErx b/.coverage.DESKTOP-ATMEKSV.29056.XrBCQErx deleted file mode 100644 index e1f7e6f75f5aa9a7a33884193b67b7cc22082200..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 zcmeI)O>f&a7zc34ZmrmHpcX+O1VIsAHpi&r&d8zIcG$8lhhhb~Zow`C=F&2qXtg9q zlJjyH2DbwO4A?gq_MP?-b}M$-X{TNGJd$YHNnG?+)cXsuElVUt{`iozqqN^Vee5Ml z48q8liP$sl7^Z1_DuiJeReG$^LvI%C+|qC8)tuR1v|BaWgTL17Z;g88SHu2(?TNix z|84F4)j#Tf^_SJ(Em?Kx1U3jj00I#Be+x{W)-7jq(|qw`B6~xXMAB7J_PqA_*9ZHD z2jX!5v&RP_J0^B&g0|gVu`i<VOpH_{2HsE!FX(%&OuXPoB*#jp9>=QB3mqM!rH&J} z)BL>G_4<@6QAbq7DDr$6U5MxEqLn7dua>CuBs)NbDDNoX6k;dO-V~7<s7M8_inChm zc>QLr`SPcl<*cupmnv<Oj9mIzoofvpD4OzUKn1yB)aTmwA{n^HDsBlmZJ`@dJ<pS@ zwNdClNJ266g0z`I>?K|p2z9R9aiaP+Hn7ELdLz8q)=*i`xIxddocXn8bc)P3<jj-j znFmz4Ak?fyM!qy<PU{?u{T`A3F!o2>Ig}&2a1t)cxhQWE=8b*hzPX_<i}ucSrzYnf z&2o(c?_{i|o!=5g&Q{utAZ!V41VzAms}<+Nb<?1zROj)@kUnp9<v0n`_g(7zZik-g zKi^%kob7G%@+1uu=IQplB%bb6=YnQ>ctPm!`NeU=qhvlvcoYqXA{?YchI5Oob10f; z$IJtbAtN4WBFqy~P2Xy?ab>9vqBjhC^RbpjOsr^t&|ILC4aR}XLnY=mxZ$aa<dJIU zXR~SHZ3hyCPN!ON4z?GC&NKwNo#}3EvRSd5tu6CKH4US@xAGTjE`)SX-Y|{oQ@)b% zIMNfz>n2H^qnIW27|G92b9SwYv%j^dIeEHnC*N6_Shp-^W5b+eBZB88e%zjG1Rp7e zz?FsI&8t6>$+5UzcRoxNZ``gpA8#zGI9H+D;pfWB?@DQvFE>+tpC)~Nl;^6<M~W(c zsV;U;<&b8Rk@O-OvNQ*0D}dmHeMyOBFB~Un{PNp0JbCRY>YEi%yw~=Ws+lII;r&$@ z#~v-KylllE>7$}?EMuO9;)dvj;ZVsSTN^0HqnNJg#Uic4^;PMUqKx>0%Q!l1q;=AZ z3s3WhH0bpBq8;CtK|f!wcp1)0rMaI6CtoL<L@1+Z(4dTIh+ZjE7n+~t8B3Sn9+3%` z>dSsM+__U`N<2GO*NV$lqc3El63<tHlcbeN1M5u2!i^N2q_wo!D8DWYxVO3;e&%n< zEBsMzvTa(<{rl!*oDarqp6SN4sQXe^JAYf63z91*i+FiL6E1z)nT->+o8jQM*%f$l z%X+YvDd<%BXPsJ;zu=qpzXttag8&2|009U<00Izz00bZa0SG`~`2@;l$+Y<Uf64yS zu>YnfY!H9|1Rwwb2tWV=5P$##AOHafyqf~`Qu&^(|HR`1+bnN6`5ys1Z11)AYSgNd z{mQUk+5fzo4MeRW009U<00Izz00bZa0SG_<0uayw_3}Ma{}!NBD{ocvUjn56!2ga; zg;xkb00Izz00bZa0SG_<0uX=z1eQ^N@Bh<(`iBhy5P$##AOHafKmY;|fB*y_0D&bI z!2SOv?p!nt0uX=z1Rwwb2tWV=5P$##Adm~-{y#zi0uX=z1Rwwb2tWV=5P$##Ah7%b zxc|TWeT)`D00Izz00bZa0SG_<0uX=z1aSW!F#rJwKmY;|fB*y_009U<00IzLegWM7 zU;aKu3n2gj2tWV=5P$##AOHafKmY=`|Bo1e00bZa0SG_<0uX=z1Rwwb2rRz<?*A`; aAESj3fB*y_009U<00Izz00bZaf&Ty)+a0$6 diff --git a/.coverage.DESKTOP-ATMEKSV.34604.XhfDgthx b/.coverage.DESKTOP-ATMEKSV.34604.XhfDgthx new file mode 100644 index 000000000..e69de29bb diff --git a/.coverage.DESKTOP-ATMEKSV.37188.XIOzbGrx b/.coverage.DESKTOP-ATMEKSV.37188.XIOzbGrx new file mode 100644 index 000000000..e69de29bb diff --git a/src/bayesvalidrox/bayes_inference/bayes_inference.py b/src/bayesvalidrox/bayes_inference/bayes_inference.py index 728434826..c0c4cd08e 100644 --- a/src/bayesvalidrox/bayes_inference/bayes_inference.py +++ b/src/bayesvalidrox/bayes_inference/bayes_inference.py @@ -961,7 +961,7 @@ class BayesInference: output_names = self.engine.Model.Output.names # Evaluate MetaModel on the experimental design and ValidSet - OutputRS, stdOutputRS = MetaModel.eval_metamodel(samples=samples) + OutputRS, stdOutputRS = MetaModel.eval_metamodel(samples) logLik_data = np.zeros(n_samples) logLik_model = np.zeros(n_samples) diff --git a/src/bayesvalidrox/surrogate_models/polynomial_chaos.py b/src/bayesvalidrox/surrogate_models/polynomial_chaos.py index 7d2cf2616..25b1fdb52 100644 --- a/src/bayesvalidrox/surrogate_models/polynomial_chaos.py +++ b/src/bayesvalidrox/surrogate_models/polynomial_chaos.py @@ -55,8 +55,8 @@ class PCE(MetaModel): ---------- input_obj : obj Input object with the information on the model input parameters. - _meta_model_type : str - Surrogate model types. Three surrogate model types are supported: + meta_model_type : str + PCE-surrogate model types. Two surrogate model types are supported: polynomial chaos expansion (`PCE`), arbitrary PCE (`aPCE`). Default is PCE. _pce_reg_method : str @@ -729,8 +729,6 @@ class PCE(MetaModel): mean_pred = {} std_pred = {} for output, values in model_dict.items(): - print(output, values) - mean = np.empty((len(samples), len(values))) std = np.empty((len(samples), len(values))) idx = 0 diff --git a/src/bayesvalidrox/surrogate_models/surrogate_models.py b/src/bayesvalidrox/surrogate_models/surrogate_models.py index 131e59aa9..5a494135f 100644 --- a/src/bayesvalidrox/surrogate_models/surrogate_models.py +++ b/src/bayesvalidrox/surrogate_models/surrogate_models.py @@ -92,7 +92,6 @@ def _preprocessing_fit(fit_function): # Build the input space if self.InputSpace is None: - print(self.meta_model_type) self.InputSpace = InputSpace(self.input_obj, self.meta_model_type) n_init_samples = X.shape[0] self.InputSpace.n_init_samples = n_init_samples @@ -107,14 +106,14 @@ def _preprocessing_fit(fit_function): # --- Loop through data points and fit the surrogate --- if self.verbose: - print(f"\n>>>> Training the {self._meta_model_type} metamodel " + print(f"\n>>>> Training the {self.meta_model_type} metamodel " "started. <<<<<<\n") # Call the function for fitting fit_function(self, X, y, **kwargs) if self.verbose: - print(f"\n>>>> Training the {self._meta_model_type} metamodel" + print(f"\n>>>> Training the {self.meta_model_type} metamodel" " sucessfully completed. <<<<<<\n") return decorator @@ -415,6 +414,7 @@ class MetaModel: self.n_pca_components = None # Build general parameters + self._pce_deg = 1 # TODO: rename this more generally, so that it can be used for other types as well # General warnings if not self.is_gaussian: diff --git a/tests/test_BayesInference.py b/tests/test_BayesInference.py index 4b37f2cbb..9048776c8 100644 --- a/tests/test_BayesInference.py +++ b/tests/test_BayesInference.py @@ -112,7 +112,7 @@ def test_create_inference() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() mod.observations = {'Z': np.array([0.45])} diff --git a/tests/test_MCMC.py b/tests/test_MCMC.py index e38c93b0a..31b245986 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=np.max(mm.pce_deg)) + expdes.generate_ED(expdes.n_init_samples, 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=np.max(mm.pce_deg)) + expdes.generate_ED(expdes.n_init_samples, 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=np.max(mm.pce_deg)) + expdes.generate_ED(expdes.n_init_samples, max_pce_deg=2) mod = PL() mod.observations = {'Z': np.array([0.45]), 'x_values': np.array([0])} diff --git a/tests/test_MetaModel.py b/tests/test_MetaModel.py index dd1eb29f2..f2a4981ea 100644 --- a/tests/test_MetaModel.py +++ b/tests/test_MetaModel.py @@ -29,7 +29,7 @@ import numpy as np import pytest import sys -sys.path.append("src/") +sys.path.append("../src/") from bayesvalidrox.surrogate_models.inputs import Input from bayesvalidrox.surrogate_models.input_space import InputSpace @@ -250,7 +250,7 @@ def test_copy_meta_model_opts() -> None: #%% Test MetaModel.__select_degree -#%% Test Engine._compute_pce_moments +#%% Test MetaModel.compute_moments def test__compute_moments() -> None: """ @@ -262,7 +262,7 @@ def test__compute_moments() -> None: inp.Marginals[0].parameters = [0, 1] mm = MetaModel(inp) mm.fit([[0.2], [0.4], [0.8]], {'Z': [[0.4], [0.2], [0.5]]}) - mm._compute_moments() + mm.compute_moments() diff --git a/tests/test_PolynomialChaosEmulator.py b/tests/test_PolynomialChaosEmulator.py index fea710dd7..61c658897 100644 --- a/tests/test_PolynomialChaosEmulator.py +++ b/tests/test_PolynomialChaosEmulator.py @@ -26,7 +26,7 @@ import numpy as np import pytest import sys -sys.path.append("src/") +sys.path.append("../src/") from bayesvalidrox.surrogate_models.inputs import Input from bayesvalidrox.surrogate_models.input_space import InputSpace @@ -35,6 +35,23 @@ from bayesvalidrox.surrogate_models.polynomial_chaos import PCE from bayesvalidrox.surrogate_models.supplementary import gaussian_process_emulator, corr_loocv_error, create_psi +@pytest.fixture +def PCE_1DwithInputSpace(): + inp = Input() + inp.add_marginals() + inp.Marginals[0].dist_type = 'normal' + inp.Marginals[0].parameters = [0, 1] + #mm = MetaModel(inp) + samples = np.array([[0.2], [0.8]]) + mm = PCE(inp) + mm.CollocationPoints = samples + mm.InputSpace = InputSpace(mm.input_obj, mm.meta_model_type) + n_init_samples = samples.shape[0] + mm.InputSpace.n_init_samples = n_init_samples + # TODO: _pce_deg not necessarily available, generalize this! + mm.InputSpace.init_param_space(np.max(mm._pce_deg)) + return mm + #%% Test MetaMod constructor on its own @@ -51,66 +68,32 @@ def test_metamod() -> None: #%% Test PCE.build_metamodel -def test_build_metamodel_nosamples() -> None: - """ - Build PCE without collocation samples - """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) - with pytest.raises(AttributeError) as excinfo: - mm.build_metamodel() - assert str(excinfo.value) == 'Please provide samples to the metamodel before building it.' +#def test_build_metamodel_nosamples() -> None: +# """ +# Build PCE without collocation samples +# """ +# inp = Input() +# inp.add_marginals() +# inp.Marginals[0].dist_type = 'normal' +# inp.Marginals[0].parameters = [0, 1] +# mm = PCE(inp) +# with pytest.raises(AttributeError) as excinfo: +# mm.build_metamodel() +# assert str(excinfo.value) == 'Please provide samples to the metamodel before building it.' -def test_build_metamodel() -> None: +def test_build_metamodel(PCE_1DwithInputSpace) -> None: """ Build PCE """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace mm.CollocationPoints = np.array([[0.2], [0.8]]) mm.build_metamodel() -def test_build_metamodel_ninitsamples() -> None: - """ - Build PCE with n_init_samples - """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) - mm.CollocationPoints = np.array([[0.2], [0.8]]) - mm.build_metamodel(n_init_samples=2) +#%% Test PCE._generate_polynomials - - -def test_build_metamodel_coldimerr() -> None: - """ - Build PCE with wrong shape collocation samples - """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) - mm.CollocationPoints = [[0.2, 0.8]] - with pytest.raises(AttributeError) as excinfo: - mm.build_metamodel() - assert str( - excinfo.value) == 'The second dimension of X should be the same size as the number of marginals in the InputObj' - - -#%% Test MetaMod.generate_polynomials - -def test_generate_polynomials_noexp() -> None: +def test__generate_polynomials_noexp() -> None: """ Generate polynomials without ExpDeg """ @@ -120,11 +103,11 @@ def test_generate_polynomials_noexp() -> None: inp.Marginals[0].parameters = [0, 1] mm = PCE(inp) with pytest.raises(AttributeError) as excinfo: - mm.generate_polynomials() + mm._generate_polynomials() assert str(excinfo.value) == 'Generate or add InputSpace before generating polynomials' -def test_generate_polynomials_nodeg() -> None: +def test__generate_polynomials_nodeg() -> None: """ Generate polynomials without max_deg """ @@ -137,17 +120,17 @@ def test_generate_polynomials_nodeg() -> None: # Setup mm.InputSpace = InputSpace(inp) mm.InputSpace.n_init_samples = 2 - mm.InputSpace.init_param_space(np.max(mm.pce_deg)) + mm.InputSpace.init_param_space(np.max(mm._pce_deg)) mm.ndim = mm.InputSpace.ndim mm.n_params = len(mm.input_obj.Marginals) # Generate with pytest.raises(AttributeError) as excinfo: - mm.generate_polynomials() - assert str(excinfo.value) == 'PCE cannot generate polynomials in the given scenario!' + mm._generate_polynomials() + assert str(excinfo.value) == 'MetaModel cannot generate polynomials in the given scenario!' -def test_generate_polynomials_deg() -> None: +def test__generate_polynomials_deg() -> None: """ Generate polynomials with max_deg """ @@ -160,12 +143,12 @@ def test_generate_polynomials_deg() -> None: # Setup mm.InputSpace = InputSpace(inp) mm.InputSpace.n_init_samples = 2 - mm.InputSpace.init_param_space(np.max(mm.pce_deg)) + mm.InputSpace.init_param_space(np.max(mm._pce_deg)) mm.ndim = mm.InputSpace.ndim mm.n_params = len(mm.input_obj.Marginals) # Generate - mm.generate_polynomials(4) + mm._generate_polynomials(4) #%% Test MetaMod.add_InputSpace @@ -236,447 +219,381 @@ def test_fit_pca() -> None: #%% Test PCE.regression -def test_regression() -> None: +def test_regression(PCE_1DwithInputSpace) -> None: """ Regression without a method """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) mm.regression(samples, outputs, psi) -def test_regression_ols() -> None: +def test_regression_ols(PCE_1DwithInputSpace) -> None: """ Regression: ols """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='ols') + mm._pce_reg_method = 'ols' + mm.regression(samples, outputs, psi) -def test_regression_olssparse() -> None: +def test_regression_olssparse(PCE_1DwithInputSpace) -> None: """ Regression: ols and sparse """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='ols', sparsity=True) + mm._pce_reg_method = 'ols' + mm.regression(samples, outputs, psi, sparsity=True) -def test_regression_ard() -> None: +def test_regression_ard(PCE_1DwithInputSpace) -> None: """ Regression: ard """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2], [0.8]]) outputs = np.array([0.4, 0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='ard') + mm._pce_reg_method = 'ard' + mm.regression(samples, outputs, psi) -def test_regression_ardssparse() -> None: +def test_regression_ardssparse(PCE_1DwithInputSpace) -> None: """ Regression: ard and sparse """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2], [0.8]]) outputs = np.array([0.4, 0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='ard', sparsity=True) + mm._pce_reg_method = 'ard' + mm.regression(samples, outputs, psi, sparsity=True) -def test_regression_fastard() -> None: +def test_regression_fastard(PCE_1DwithInputSpace) -> None: """ Regression: fastard """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='fastard') + mm._pce_reg_method = 'fastard' + mm.regression(samples, outputs, psi) -def test_regression_fastardssparse() -> None: +def test_regression_fastardssparse(PCE_1DwithInputSpace) -> None: """ Regression: fastard and sparse """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='fastard', sparsity=True) + mm._pce_reg_method = 'fastard' + mm.regression(samples, outputs, psi, sparsity=True) -def test_regression_brr() -> None: +def test_regression_brr(PCE_1DwithInputSpace) -> None: """ Regression: brr """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='brr') + mm._pce_reg_method = 'brr' + mm.regression(samples, outputs, psi) -def test_regression_brrssparse() -> None: +def test_regression_brrssparse(PCE_1DwithInputSpace) -> None: """ Regression: brr and sparse """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='brr', sparsity=True) + mm._pce_reg_method = 'brr' + mm.regression(samples, outputs, psi, sparsity=True) if 0: # Could not figure out these errors, issue most likely in chosen samples/outputs - def test_regression_bcs() -> None: + def test_regression_bcs(PCE_1DwithInputSpace) -> None: """ Regression: bcs """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.0], [0.1], [0.2], [0.3], [0.4], [0.5], [0.6], [0.7], [0.8], [0.9]]) outputs = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]) - mm.pce_deg = 3 + mm._pce_deg = 3 mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(mm.pce_deg)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(mm._pce_deg)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='bcs') + mm._pce_reg_method = 'bcs' + mm.regression(samples, outputs, psi) - def test_regression_bcsssparse() -> None: + def test_regression_bcsssparse(PCE_1DwithInputSpace) -> None: """ Regression: bcs and sparse """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.0], [0.1], [0.2], [0.3], [0.4], [0.5], [0.6], [0.7], [0.8], [0.9], [1.0]]) outputs = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.1]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='bcs', sparsity=True) + mm._pce_reg_method = 'bcs' + mm.regression(samples, outputs, psi, sparsity=True) -def test_regression_lars() -> None: +def test_regression_lars(PCE_1DwithInputSpace) -> None: """ Regression: lars """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.0], [0.1], [0.2], [0.3], [0.4], [0.5], [0.6], [0.7], [0.8], [0.9], [1.0]]) outputs = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.1]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='lars') + mm._pce_reg_method = 'lars' + mm.regression(samples, outputs, psi) -def test_regression_larsssparse() -> None: +def test_regression_larsssparse(PCE_1DwithInputSpace) -> None: """ Regression: lars and sparse """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.0], [0.1], [0.2], [0.3], [0.4], [0.5], [0.6], [0.7], [0.8], [0.9], [1.0]]) outputs = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.1]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='lars', sparsity=True) + mm._pce_reg_method = 'lars' + mm.regression(samples, outputs, psi, sparsity=True) -def test_regression_sgdr() -> None: +def test_regression_sgdr(PCE_1DwithInputSpace) -> None: """ Regression: sgdr """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='sgdr') + mm._pce_reg_method = 'sgdr' + mm.regression(samples, outputs, psi) -def test_regression_sgdrssparse() -> None: +def test_regression_sgdrssparse(PCE_1DwithInputSpace) -> None: """ Regression: sgdr and sparse """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='sgdr', sparsity=True) + mm._pce_reg_method = 'sgdr' + mm.regression(samples, outputs, psi, sparsity=True) if 0: # Could not figure out these errors, issue most likely in chosen samples/outputs - def test_regression_omp() -> None: + def test_regression_omp(PCE_1DwithInputSpace) -> None: """ Regression: omp """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.0], [0.1], [0.2], [0.3], [0.4], [0.5], [0.6], [0.7], [0.8], [0.9], [1.0]]) outputs = np.array([0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) mm.regression(samples, outputs, psi, reg_method='omp') - def test_regression_ompssparse() -> None: + def test_regression_ompssparse(PCE_1DwithInputSpace) -> None: """ Regression: omp and sparse """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) mm.regression(samples, outputs, psi, reg_method='omp', sparsity=True) -def test_regression_vbl() -> None: +def test_regression_vbl(PCE_1DwithInputSpace) -> None: """ Regression: vbl """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='vbl') + mm._pce_reg_method = 'vbl' + mm.regression(samples, outputs, psi) -def test_regression_vblssparse() -> None: +def test_regression_vblssparse(PCE_1DwithInputSpace) -> None: """ Regression: vbl and sparse """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='vbl', sparsity=True) + mm._pce_reg_method = 'vbl' + mm.regression(samples, outputs, psi, sparsity=True) -def test_regression_ebl() -> None: +def test_regression_ebl(PCE_1DwithInputSpace) -> None: """ Regression: ebl """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='ebl') + mm._pce_reg_method = 'ebl' + mm.regression(samples, outputs, psi) -def test_regression_eblssparse() -> None: +def test_regression_eblssparse(PCE_1DwithInputSpace) -> None: """ Regression: ebl and sparse """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.5]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - mm.regression(samples, outputs, psi, reg_method='ebl', sparsity=True) + mm._pce_reg_method = 'ebl' + mm.regression(samples, outputs, psi, sparsity=True) #%% Test Model.update_pce_coeffs @@ -685,107 +602,87 @@ def test_regression_eblssparse() -> None: #%% Test PCE.univ_basis_vals -def test_univ_basis_vals() -> None: +def test_univ_basis_vals(PCE_1DwithInputSpace) -> None: """ Creates univariate polynomials """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2], [0.8]]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) + mm.build_metamodel() mm.univ_basis_vals(samples) #%% Test PCE.adaptive_regression -def test_adaptive_regression_fewsamples() -> None: +def test_adaptive_regression_fewsamples(PCE_1DwithInputSpace) -> None: """ Adaptive regression, no specific method, too few samples given """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.2]]) outputs = np.array([0.8]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) + mm.build_metamodel() # Evaluate the univariate polynomials on InputSpace mm.univ_p_val = mm.univ_basis_vals(mm.CollocationPoints) with pytest.raises(AttributeError) as excinfo: - mm.adaptive_regression(outputs, 0) + mm.adaptive_regression(samples, outputs, 0) assert str(excinfo.value) == ('There are too few samples for the corrected loo-cv error. Fit surrogate on at least as ' 'many samples as parameters to use this') -def test_adaptive_regression() -> None: +def test_adaptive_regression(PCE_1DwithInputSpace) -> None: """ Adaptive regression, no specific method """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.0], [0.1]]) outputs = np.array([0.0, 0.1]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) + mm.build_metamodel() # Evaluate the univariate polynomials on InputSpace mm.univ_p_val = mm.univ_basis_vals(mm.CollocationPoints) - mm.adaptive_regression(outputs, 0) + mm.adaptive_regression(samples, outputs, 0) -def test_adaptive_regression_verbose() -> None: +def test_adaptive_regression_verbose(PCE_1DwithInputSpace) -> None: """ Adaptive regression, no specific method, verbose output """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.0], [0.1]]) outputs = np.array([0.0, 0.1]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) + mm.build_metamodel() # Evaluate the univariate polynomials on InputSpace mm.univ_p_val = mm.univ_basis_vals(mm.CollocationPoints) - mm.adaptive_regression(outputs, 0, True) + mm.adaptive_regression(samples, outputs, 0, True) -def test_adaptive_regression_ols() -> None: +def test_adaptive_regression_ols(PCE_1DwithInputSpace) -> None: """ Adaptive regression, ols """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = PCE(inp) + mm = PCE_1DwithInputSpace samples = np.array([[0.0], [0.1], [0.2], [0.3], [0.4], [0.5], [0.6], [0.7], [0.8], [0.9], [1.0]]) outputs = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.1]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) + mm.build_metamodel() # Evaluate the univariate polynomials on InputSpace mm.univ_p_val = mm.univ_basis_vals(mm.CollocationPoints) - mm.pce_reg_method = 'ols' - mm.adaptive_regression(outputs, 0) + mm._pce_reg_method = 'ols' + mm.adaptive_regression(samples, outputs, 0) #%% Test PCE.pca_transformation @@ -915,9 +812,9 @@ def test_copy_meta_model_opts() -> None: #%% Test PCE.__select_degree -#%% Test Engine._compute_moments +#%% Test PCE.compute_moments -def test__compute_moments() -> None: +def test_compute_moments() -> None: """ Compute moments of a pce-surrogate """ @@ -927,10 +824,10 @@ def test__compute_moments() -> None: inp.Marginals[0].parameters = [0, 1] mm = PCE(inp) mm.fit([[0.2], [0.4], [0.8]], {'Z': [[0.4], [0.2], [0.5]]}) - mm._compute_moments() + mm.compute_moments() -def test__compute_moments_pca() -> None: +def test_compute_moments_pca() -> None: """ Compute moments of a pce-surrogate with pca """ @@ -941,7 +838,7 @@ def test__compute_moments_pca() -> None: mm = PCE(inp) mm.dim_red_method = 'pca' mm.fit([[0.2], [0.8]], {'Z': [[0.4, 0.4], [0.5, 0.6]]}) - mm._compute_moments() + mm.compute_moments() #%% Test PCE.update_metamodel diff --git a/tests/test_SequentialDesign.py b/tests/test_SequentialDesign.py index 52e54be03..f922a77d7 100644 --- a/tests/test_SequentialDesign.py +++ b/tests/test_SequentialDesign.py @@ -170,7 +170,7 @@ def test_choose_next_sample() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -200,7 +200,7 @@ def test_choose_next_sample_da_spaceparallel() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -231,7 +231,7 @@ def test_choose_next_sample_da_spacenoparallel() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -262,7 +262,7 @@ def test_choose_next_sample_loo_space() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -292,7 +292,7 @@ def test_choose_next_sample_vor_space() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -327,7 +327,7 @@ def test_choose_next_sample_latin_space() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -357,7 +357,7 @@ def test_choose_next_sample_latin_alphD() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -387,7 +387,7 @@ def test_choose_next_sample_latin_alphK() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -417,7 +417,7 @@ def test_choose_next_sample_latin_alphA() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -448,7 +448,7 @@ def test_choose_next_sample_latin_VarALM() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -479,7 +479,7 @@ def test_choose_next_sample_latin_VarEIGF() -> None: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -512,7 +512,7 @@ if 0: mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -543,7 +543,7 @@ def test_choose_next_sample_latin_BODMI() -> None: expdes.util_func = 'MI' mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -576,7 +576,7 @@ def test_choose_next_sample_vor_BODMI() -> None: expdes.util_func = 'MI' mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -614,7 +614,7 @@ def test_choose_next_sample_latin_BODALC() -> None: expdes.util_func = 'ALC' mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -647,7 +647,7 @@ def test_choose_next_sample_latin_BODDKL() -> None: expdes.util_func = 'DKL' mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -680,7 +680,7 @@ def test_choose_next_sample_latin_BODDPP() -> None: expdes.util_func = 'DPP' mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -713,7 +713,7 @@ def test_choose_next_sample_latin_BODAPP() -> None: expdes.util_func = 'APP' mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -746,7 +746,7 @@ def test_choose_next_sample_latin_BODMI_() -> None: expdes.util_func = 'MI' mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -779,7 +779,7 @@ if 0: expdes.util_func = 'BME' mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -813,7 +813,7 @@ if 0: expdes.util_func = 'DKL' mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) @@ -847,7 +847,7 @@ if 0: expdes.util_func = 'infEntropy' mm = MetaModel(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(expdes.n_init_samples, max_pce_deg=np.max(mm._pce_deg)) mod = PL() engine = Engine(mm, mod, expdes) diff --git a/tests/test_supplementary.py b/tests/test_supplementary.py index 7537b0ca3..1eea5b70b 100644 --- a/tests/test_supplementary.py +++ b/tests/test_supplementary.py @@ -14,7 +14,7 @@ import numpy as np import pytest import sys -sys.path.append("src/") +sys.path.append("../src/") from bayesvalidrox.surrogate_models.inputs import Input from bayesvalidrox.surrogate_models.input_space import InputSpace @@ -22,95 +22,101 @@ from bayesvalidrox.surrogate_models.surrogate_models import MetaModel from bayesvalidrox.surrogate_models.polynomial_chaos import PCE from bayesvalidrox.surrogate_models.supplementary import gaussian_process_emulator, corr_loocv_error, create_psi +@pytest.fixture +def PCE_withInputSpace(): + inp = Input() + inp.add_marginals() + inp.Marginals[0].dist_type = 'normal' + inp.Marginals[0].parameters = [0, 1] + #mm = MetaModel(inp) + samples = np.array([[0.2], [0.8]]) + mm = PCE(inp) + mm.CollocationPoints = samples + mm.InputSpace = InputSpace(mm.input_obj, mm.meta_model_type) + n_init_samples = samples.shape[0] + mm.InputSpace.n_init_samples = n_init_samples + mm.InputSpace.init_param_space(np.max(mm._pce_deg)) + return mm + + #%% Test create_psi -def test_create_psi() -> None: +def test_create_psi(PCE_withInputSpace) -> None: """ Create psi-matrix """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = MetaModel(inp) + mm = PCE_withInputSpace#(inp, samples) samples = np.array([[0.2], [0.8]]) - mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + #mm.InputSpace = InputSpace(mm.input_obj, mm.meta_model_type) + #n_init_samples = samples.shape[0] + #mm.InputSpace.n_init_samples = n_init_samples + # TODO: _pce_deg not necessarily available, generalize this! + #mm.InputSpace.init_param_space(np.max(mm._pce_deg)) + mm.build_metamodel() + + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) create_psi(BasisIndices, univ_bas) #%% Test corr_loocv_error -def test_corr_loocv_error_nosparse() -> None: +def test_corr_loocv_error_nosparse(PCE_withInputSpace) -> None: """ Corrected loocv error """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = MetaModel(inp) + mm = PCE_withInputSpace samples = np.array([[0.0], [0.1], [0.2], [0.3], [0.4], [0.5], [0.6], [0.7], [0.8], [0.9], [1.0]]) outputs = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.1]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - outs = mm.regression(samples, outputs, psi, reg_method='ebl') + outs = mm.regression(samples, outputs, psi) corr_loocv_error(outs['clf_poly'], outs['sparePsi'], outs['coeffs'], outputs) -def test_corr_loocv_error_singley() -> None: +def test_corr_loocv_error_singley(PCE_withInputSpace) -> None: """ Corrected loocv error """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = MetaModel(inp) + mm = PCE_withInputSpace samples = np.array([[0.2]]) outputs = np.array([0.1]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) - outs = mm.regression(samples, outputs, psi, reg_method='ols') + outs = mm.regression(samples, outputs, psi) corr_loocv_error(outs['clf_poly'], outs['sparePsi'], outs['coeffs'], outputs) -def test_corr_loocv_error_sparse() -> None: +def test_corr_loocv_error_sparse(PCE_withInputSpace) -> None: """ Corrected loocv error from sparse results """ - inp = Input() - inp.add_marginals() - inp.Marginals[0].dist_type = 'normal' - inp.Marginals[0].parameters = [0, 1] - mm = MetaModel(inp) + mm = PCE_withInputSpace samples = np.array([[0.0], [0.1], [0.2], [0.3], [0.4], [0.5], [0.6], [0.7], [0.8], [0.9], [1.0]]) outputs = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.1]) mm.CollocationPoints = samples - mm.build_metamodel(n_init_samples=2) - BasisIndices = mm.allBasisIndices[str(1)][str(1.0)] + mm.build_metamodel() + BasisIndices = mm._all_basis_indices[str(1)][str(1.0)] univ_bas = mm.univ_basis_vals(samples) psi = create_psi(BasisIndices, univ_bas) + mm._pce_reg_method='ebl' - outs = mm.regression(samples, outputs, psi, reg_method='ebl', - sparsity=True) + outs = mm.regression(samples, outputs, psi, sparsity=True) corr_loocv_error(outs['clf_poly'], outs['sparePsi'], outs['coeffs'], outputs) @@ -147,7 +153,7 @@ def test_gaussian_process_emulator_autosel() -> None: inp.add_marginals() inp.Marginals[0].dist_type = 'normal' inp.Marginals[0].parameters = [0, 1] - gaussian_process_emulator([[0.2], [0.8]], [0.4, 0.5], autoSelect=True) + gaussian_process_emulator([[0.2], [0.8]], [0.4, 0.5], auto_select=True) def test_gaussian_process_emulator_varidx() -> None: @@ -158,5 +164,5 @@ def test_gaussian_process_emulator_varidx() -> None: inp.add_marginals() inp.Marginals[0].dist_type = 'normal' inp.Marginals[0].parameters = [0, 1] - gaussian_process_emulator([[0.2], [0.8]], [0.4, 0.5], varIdx=1) + gaussian_process_emulator([[0.2], [0.8]], [0.4, 0.5], var_idx=1) -- GitLab