From 00a5afc2fc4deb9a2ec027bddc0ccfcc78394939 Mon Sep 17 00:00:00 2001 From: Alina Lacheim <a.lacheim@outlook.de> Date: Thu, 26 Sep 2024 10:28:06 +0200 Subject: [PATCH] changed MetaModel to PCE in examples --- examples/OHagan-function/example_OHagan.py | 13 +- .../example_analytical_function.ipynb | 4 +- .../example_analytical_function_gp.py | 3 +- .../example_analytical_function.ipynb | 4 +- .../example_analytical_function.py | 15 +- examples/beam/example_beam.py | 13 +- examples/borehole/example_borehole.py | 12 +- .../example_trainingconvergence.py | 6 +- examples/ishigami/example_ishigami.py | 14 +- ...mple_analytical_function_NoSigmaMetaMod.py | 13 +- .../example_analytical_function_noMetaMod.py | 8 +- examples/pollution/example_pollution.py | 10 +- examples/pollution/example_valid_pollution.py | 13 +- .../example_principalcomponentanalysis.py | 13 +- examples/sinusoidal-function/test.ipynb | 207 ------------------ .../example_umbridge_testmodel.py | 12 +- .../example_umbridge_tsunamitutorial.py | 25 ++- .../umbridge_tsunamitutorial/testmodel.pk1 | Bin 0 -> 10816 bytes .../post_processing/post_processing.py | 2 +- 19 files changed, 50 insertions(+), 337 deletions(-) delete mode 100644 examples/sinusoidal-function/test.ipynb create mode 100644 examples/umbridge_tsunamitutorial/testmodel.pk1 diff --git a/examples/OHagan-function/example_OHagan.py b/examples/OHagan-function/example_OHagan.py index 8c7690767..28010a4fc 100644 --- a/examples/OHagan-function/example_OHagan.py +++ b/examples/OHagan-function/example_OHagan.py @@ -26,15 +26,8 @@ import joblib import sys sys.path.append("../../src/bayesvalidrox/") -from bayesvalidrox.pylink.pylink import PyLinkForwardModel -from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns -from bayesvalidrox.surrogate_models.surrogate_models import MetaModel -#from bayesvalidrox.surrogate_models.meta_model_engine import MetaModelEngine -from bayesvalidrox.post_processing.post_processing import PostProcessing -from bayesvalidrox.bayes_inference.bayes_inference import BayesInference -from bayesvalidrox.bayes_inference.discrepancy import Discrepancy -from bayesvalidrox.surrogate_models.engine import Engine +from bayesvalidrox import PyLinkForwardModel, Input, ExpDesigns, PCE, PostProcessing, BayesInference, Discrepancy, Engine + import matplotlib matplotlib.use('agg') @@ -68,7 +61,7 @@ if __name__ == "__main__": # ===================================================== # ====== POLYNOMIAL CHAOS EXPANSION METAMODELS ====== # ===================================================== - MetaModelOpts = MetaModel(Inputs) + MetaModelOpts = PCE(Inputs) # Select your metamodel method # 1) PCE (Polynomial Chaos Expansion) 2) aPCE (arbitrary PCE) diff --git a/examples/analytical-function/example_analytical_function.ipynb b/examples/analytical-function/example_analytical_function.ipynb index e63948ddc..04396bb4b 100644 --- a/examples/analytical-function/example_analytical_function.ipynb +++ b/examples/analytical-function/example_analytical_function.ipynb @@ -382,8 +382,8 @@ "metadata": {}, "outputs": [], "source": [ - "from bayesvalidrox import MetaModel\n", - "MetaModelOpts = MetaModel(Inputs)" + "from bayesvalidrox import PCE\n", + "MetaModelOpts = PCE(Inputs)" ] }, { diff --git a/examples/analytical-function/example_analytical_function_gp.py b/examples/analytical-function/example_analytical_function_gp.py index 2d94a00a1..a01ec4305 100644 --- a/examples/analytical-function/example_analytical_function_gp.py +++ b/examples/analytical-function/example_analytical_function_gp.py @@ -29,8 +29,7 @@ matplotlib.use('agg') sys.path.append("../../src/") print(sys.path) -from bayesvalidrox import PyLinkForwardModel, Input, ExpDesigns, GPESkl, PostProcessing, BayesInference, Discrepancy, \ - Engine +from bayesvalidrox import PyLinkForwardModel, Input, ExpDesigns, GPESkl, PostProcessing, BayesInference, Discrepancy, Engine if __name__ == "__main__": diff --git a/examples/analytical-function_sequentialdesign/example_analytical_function.ipynb b/examples/analytical-function_sequentialdesign/example_analytical_function.ipynb index e63948ddc..04396bb4b 100644 --- a/examples/analytical-function_sequentialdesign/example_analytical_function.ipynb +++ b/examples/analytical-function_sequentialdesign/example_analytical_function.ipynb @@ -382,8 +382,8 @@ "metadata": {}, "outputs": [], "source": [ - "from bayesvalidrox import MetaModel\n", - "MetaModelOpts = MetaModel(Inputs)" + "from bayesvalidrox import PCE\n", + "MetaModelOpts = PCE(Inputs)" ] }, { diff --git a/examples/analytical-function_sequentialdesign/example_analytical_function.py b/examples/analytical-function_sequentialdesign/example_analytical_function.py index 09261acba..8feac878e 100644 --- a/examples/analytical-function_sequentialdesign/example_analytical_function.py +++ b/examples/analytical-function_sequentialdesign/example_analytical_function.py @@ -28,19 +28,8 @@ matplotlib.use('agg') sys.path.append("src/") sys.path.append("../../src/") -import bayesvalidrox -from bayesvalidrox import PyLinkForwardModel +from bayesvalidrox import PyLinkForwardModel, Input, ExpDesigns, PCE, PostProcessing, BayesInference, Discrepancy, Engine -from bayesvalidrox.pylink.pylink import PyLinkForwardModel -from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns -from bayesvalidrox.surrogate_models.surrogate_models import MetaModel -#from bayesvalidrox.surrogate_models.meta_model_engine import MetaModelEngine -from bayesvalidrox.post_processing.post_processing import PostProcessing -from bayesvalidrox.bayes_inference.bayes_inference import BayesInference -from bayesvalidrox.bayes_inference.discrepancy import Discrepancy - -from bayesvalidrox.surrogate_models.engine import Engine if __name__ == "__main__": @@ -95,7 +84,7 @@ if __name__ == "__main__": # ===================================================== # ========== DEFINITION OF THE METAMODEL ============ # ===================================================== - MetaModelOpts = MetaModel(Inputs)#, Model) + MetaModelOpts = PCE(Inputs)#, Model) # Select if you want to preserve the spatial/temporal depencencies # MetaModelOpts.dim_red_method = 'PCA' diff --git a/examples/beam/example_beam.py b/examples/beam/example_beam.py index 84b88255f..c9d608f1a 100644 --- a/examples/beam/example_beam.py +++ b/examples/beam/example_beam.py @@ -18,16 +18,7 @@ Pfaffenwaldring 61 import sys sys.path.append("../../src/bayesvalidrox/") -from bayesvalidrox.pylink.pylink import PyLinkForwardModel -from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns -from bayesvalidrox.surrogate_models.surrogate_models import MetaModel -#from bayesvalidrox.surrogate_models.meta_model_engine import MetaModelEngine -from bayesvalidrox.post_processing.post_processing import PostProcessing -from bayesvalidrox.bayes_inference.bayes_inference import BayesInference -from bayesvalidrox.bayes_inference.discrepancy import Discrepancy - -from bayesvalidrox.surrogate_models.engine import Engine +from bayesvalidrox import PyLinkForwardModel, Input, ExpDesigns, PCE, PostProcessing, BayesInference, Discrepancy, Engine if __name__ == "__main__": @@ -84,7 +75,7 @@ if __name__ == "__main__": # ===================================================== # ========== DEFINITION OF THE METAMODEL ============ # ===================================================== - MetaModelOpts = MetaModel(Inputs, Model) + MetaModelOpts = PCE(Inputs, Model) # Select if you want to preserve the spatial/temporal depencencies # MetaModelOpts.dim_red_method = 'PCA' diff --git a/examples/borehole/example_borehole.py b/examples/borehole/example_borehole.py index 869a05320..9eae7ffc5 100644 --- a/examples/borehole/example_borehole.py +++ b/examples/borehole/example_borehole.py @@ -27,15 +27,7 @@ import joblib import sys sys.path.append("../../src/bayesvalidrox/") -from bayesvalidrox.pylink.pylink import PyLinkForwardModel -from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns -from bayesvalidrox.surrogate_models.surrogate_models import MetaModel -#from bayesvalidrox.surrogate_models.meta_model_engine import MetaModelEngine -from bayesvalidrox.post_processing.post_processing import PostProcessing -from bayesvalidrox.bayes_inference.bayes_inference import BayesInference -from bayesvalidrox.bayes_inference.discrepancy import Discrepancy -from bayesvalidrox.surrogate_models.engine import Engine +from bayesvalidrox import PyLinkForwardModel, Input, ExpDesigns, PCE, PostProcessing, BayesInference, Discrepancy, Engine import matplotlib matplotlib.use('agg') @@ -115,7 +107,7 @@ if __name__ == "__main__": # ===================================================== # ====== POLYNOMIAL CHAOS EXPANSION METAMODELS ====== # ===================================================== - MetaModelOpts = MetaModel(Inputs, Model) + MetaModelOpts = PCE(Inputs, Model) # Select your metamodel method # 1) PCE (Polynomial Chaos Expansion) 2) aPCE (arbitrary PCE) diff --git a/examples/convergence/example_trainingconvergence.py b/examples/convergence/example_trainingconvergence.py index bfe8819bd..56cf407ef 100644 --- a/examples/convergence/example_trainingconvergence.py +++ b/examples/convergence/example_trainingconvergence.py @@ -11,10 +11,8 @@ import numpy as np import matplotlib.pyplot as plt import random -from bayesvalidrox.pylink.pylink import PyLinkForwardModel -from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.engine import Engine -from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns +from bayesvalidrox import PyLinkForwardModel, Input, ExpDesigns, PCE, Engine + import bayesvalidrox.surrogate_models.surrogate_models as sm from convergence import convergence diff --git a/examples/ishigami/example_ishigami.py b/examples/ishigami/example_ishigami.py index 72c9dc2d3..c74a6bcdb 100644 --- a/examples/ishigami/example_ishigami.py +++ b/examples/ishigami/example_ishigami.py @@ -25,16 +25,8 @@ import joblib import sys sys.path.append("../../src/bayesvalidrox/") -from bayesvalidrox.pylink.pylink import PyLinkForwardModel -from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns -from bayesvalidrox.surrogate_models.surrogate_models import MetaModel -#from bayesvalidrox.surrogate_models.meta_model_engine import MetaModelEngine -from bayesvalidrox.post_processing.post_processing import PostProcessing -from bayesvalidrox.bayes_inference.bayes_inference import BayesInference -from bayesvalidrox.bayes_inference.discrepancy import Discrepancy - -from bayesvalidrox.surrogate_models.engine import Engine +from bayesvalidrox import PyLinkForwardModel, Input, ExpDesigns, PCE, PostProcessing, BayesInference, Discrepancy, Engine + import matplotlib matplotlib.use('agg') @@ -75,7 +67,7 @@ if __name__ == "__main__": # ===================================================== # ====== POLYNOMIAL CHAOS EXPANSION METAMODELS ====== # ===================================================== - MetaModelOpts = MetaModel(Inputs, Model) + MetaModelOpts = PCE(Inputs, Model) # Select your metamodel method # 1) PCE (Polynomial Chaos Expansion) 2) aPCE (arbitrary PCE) diff --git a/examples/only-model/example_analytical_function_NoSigmaMetaMod.py b/examples/only-model/example_analytical_function_NoSigmaMetaMod.py index 9e8e68afb..0525ede53 100644 --- a/examples/only-model/example_analytical_function_NoSigmaMetaMod.py +++ b/examples/only-model/example_analytical_function_NoSigmaMetaMod.py @@ -25,15 +25,8 @@ import joblib # Add BayesValidRox path sys.path.append("../../src/bayesvalidrox/") -#import bayesvalidrox as bv -from bayesvalidrox.pylink.pylink import PyLinkForwardModel -from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.surrogate_models import MetaModel -from bayesvalidrox.surrogate_models.meta_model_engine import MetaModelEngine -from bayesvalidrox.post_processing.post_processing import PostProcessing -from bayesvalidrox.bayes_inference.bayes_inference import BayesInference -from bayesvalidrox.bayes_inference.discrepancy import Discrepancy -import matplotlib +from bayesvalidrox import PyLinkForwardModel, Input, PCE, MetaModelEngine, PostProcessing, BayesInference, Discrepancy + matplotlib.use('agg') @@ -93,7 +86,7 @@ if __name__ == "__main__": # ===================================================== # ========== DEFINITION OF THE METAMODEL ============ # ===================================================== - MetaModelOpts = MetaModel(Inputs, Model) + MetaModelOpts = PCE(Inputs, Model) # Select if you want to preserve the spatial/temporal depencencies # MetaModelOpts.dim_red_method = 'PCA' diff --git a/examples/only-model/example_analytical_function_noMetaMod.py b/examples/only-model/example_analytical_function_noMetaMod.py index 7419d20a9..bae6018c2 100644 --- a/examples/only-model/example_analytical_function_noMetaMod.py +++ b/examples/only-model/example_analytical_function_noMetaMod.py @@ -24,12 +24,8 @@ import joblib # Add BayesValidRox path sys.path.append("../../src/") -from bayesvalidrox.pylink.pylink import PyLinkForwardModel -from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.engine import Engine -from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns -from bayesvalidrox.bayes_inference.bayes_inference import BayesInference -from bayesvalidrox.bayes_inference.discrepancy import Discrepancy +from bayesvalidrox import PyLinkForwardModel, Input, ExpDesigns, BayesInference, Discrepancy, Engine, BayesModelComparison + from bayesvalidrox.bayes_inference.bayes_model_comparison import BayesModelComparison import matplotlib matplotlib.use('agg') diff --git a/examples/pollution/example_pollution.py b/examples/pollution/example_pollution.py index f2de52e2c..02b25ec4d 100644 --- a/examples/pollution/example_pollution.py +++ b/examples/pollution/example_pollution.py @@ -26,12 +26,8 @@ import joblib import sys sys.path.append("../../src/bayesvalidrox/") -from pylink.pylink import PyLinkForwardModel -from surrogate_models.inputs import Input -from surrogate_models.surrogate_models import MetaModel -from post_processing.post_processing import PostProcessing -from bayes_inference.bayes_inference import BayesInference -from bayes_inference.discrepancy import Discrepancy +from bayesvalidrox import PyLinkForwardModel, Input, PCE, PostProcessing, BayesInference, Discrepancy + if __name__ == "__main__": @@ -93,7 +89,7 @@ if __name__ == "__main__": # ===================================================== # ====== POLYNOMIAL CHAOS EXPANSION METAMODELS ====== # ===================================================== - MetaModelOpts = MetaModel(Inputs, Model) + MetaModelOpts = PCE(Inputs, Model) # Select if you want to preserve the spatial/temporal depencencies # MetaModelOpts.dim_red_method = 'PCA' diff --git a/examples/pollution/example_valid_pollution.py b/examples/pollution/example_valid_pollution.py index 74b87787b..ea3d45ecd 100644 --- a/examples/pollution/example_valid_pollution.py +++ b/examples/pollution/example_valid_pollution.py @@ -23,15 +23,8 @@ import joblib import sys sys.path.append("../../src/bayesvalidrox/") -from bayesvalidrox.pylink.pylink import PyLinkForwardModel -from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns -from bayesvalidrox.surrogate_models.surrogate_models import MetaModel -#from bayesvalidrox.surrogate_models.meta_model_engine import MetaModelEngine -from bayesvalidrox.post_processing.post_processing import PostProcessing -from bayesvalidrox.bayes_inference.bayes_inference import BayesInference -from bayesvalidrox.bayes_inference.discrepancy import Discrepancy -from bayesvalidrox.surrogate_models.engine import Engine +from bayesvalidrox import PyLinkForwardModel, Input, PCE, PostProcessing, BayesInference, Discrepancy, Engine, ExpDesigns + if __name__ == "__main__": @@ -93,7 +86,7 @@ if __name__ == "__main__": # ===================================================== # ====== POLYNOMIAL CHAOS EXPANSION METAMODELS ====== # ===================================================== - MetaModelOpts = MetaModel(Inputs) + MetaModelOpts = PCE(Inputs) # Select if you want to preserve the spatial/temporal depencencies MetaModelOpts.dim_red_method = 'PCA' diff --git a/examples/principal_component_analysis/example_principalcomponentanalysis.py b/examples/principal_component_analysis/example_principalcomponentanalysis.py index 69cb4aa8f..bc36876a1 100644 --- a/examples/principal_component_analysis/example_principalcomponentanalysis.py +++ b/examples/principal_component_analysis/example_principalcomponentanalysis.py @@ -24,15 +24,8 @@ import joblib # Add BayesValidRox path sys.path.append("../../src/") -from bayesvalidrox.pylink.pylink import PyLinkForwardModel -from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.engine import Engine -from bayesvalidrox.surrogate_models.surrogate_models import MetaModel -from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns -from bayesvalidrox.bayes_inference.bayes_inference import BayesInference -from bayesvalidrox.bayes_inference.discrepancy import Discrepancy -from bayesvalidrox.post_processing.post_processing import PostProcessing -from bayesvalidrox.bayes_inference.bayes_model_comparison import BayesModelComparison +from bayesvalidrox import PyLinkForwardModel, Input, PCE, PostProcessing, BayesInference, Discrepancy, Engine, ExpDesigns, BayesModelComparison + import matplotlib matplotlib.use('agg') @@ -104,7 +97,7 @@ if __name__ == "__main__": # ------------------------------------------------ # ------------- PCE Specification ---------------- # ------------------------------------------------ - MetaModelOpts = MetaModel(Inputs) + MetaModelOpts = PCE(Inputs) # Select if you want to preserve the spatial/temporal depencencies MetaModelOpts.dim_red_method = 'PCA' diff --git a/examples/sinusoidal-function/test.ipynb b/examples/sinusoidal-function/test.ipynb deleted file mode 100644 index 0ff49e1e7..000000000 --- a/examples/sinusoidal-function/test.ipynb +++ /dev/null @@ -1,207 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "There are no estimations of surrogate uncertainty available for the chosen regression options. This might lead to issues in later steps.\n", - "\n", - " Now the forward model needs to be run!\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Computing orth. polynomial coeffs: 100%|##########| 1/1 [00:01<00:00, 1.61s/it]\n", - "Running forward model valid: 100%|██████████| 3/3 [00:00<00:00, 4.28it/s]\n", - "Running forward model valid: 100%|██████████| 1000/1000 [00:01<00:00, 775.69it/s]\n", - "Running forward model validSet: 100%|██████████| 3/3 [00:00<00:00, 4.29it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - ">>>>> Errors of Z <<<<<\n", - "\n", - "Index | RMSE | Validation Error\n", - "-----------------------------------\n", - "1 | 1.319e-07 | 4.873e-13\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import sys\n", - "import matplotlib\n", - "import matplotlib.pyplot as plt\n", - "matplotlib.use('agg')\n", - "\n", - "sys.path.append(\"../../src/\")\n", - "\n", - "from bayesvalidrox import PyLinkForwardModel, Input, ExpDesigns, PCE, PostProcessing, Discrepancy, Engine\n", - "\n", - "if __name__ == \"__main__\":\n", - " \n", - " # =====================================================\n", - " # ============= COMPUTATIONAL MODEL ================\n", - " # =====================================================\n", - " Model=PyLinkForwardModel()\n", - "\n", - " Model.link_type = 'Function'\n", - " Model.py_file = 'sinusoidal_function'\n", - " Model.name = 'SinusoidalFunc'\n", - "\n", - " Model.Output.names = ['Z']\n", - "\n", - " # =====================================================\n", - " # ========= PROBABILISTIC INPUT MODEL ==============\n", - " # =====================================================\n", - " # Define the uncertain parameters with their mean and\n", - " # standard deviation\n", - " Inputs = Input()\n", - "\n", - " Inputs.add_marginals()\n", - " Inputs.Marginals[0].name = 'X'\n", - " Inputs.Marginals[0].dist_type = 'uniform'\n", - " Inputs.Marginals[0].parameters = [0,10]\n", - "\n", - " # =====================================================\n", - " # ========== DEFINITION OF THE METAMODEL ============\n", - " # =====================================================\n", - " MetaModelOpts = PCE(Inputs)\n", - "\n", - " MetaModelOpts.meta_model_type = 'aPCE'\n", - "\n", - " # ------------------------------------------------\n", - " # ------------- PCE Specification ----------------\n", - " # ------------------------------------------------\n", - " MetaModelOpts._pce_reg_method = 'OLS'\n", - "\n", - " MetaModelOpts.bootstrap_method = 'fast'\n", - " MetaModelOpts.n_bootstrap_itrs = 1\n", - "\n", - " MetaModelOpts._pce_deg = 15\n", - "\n", - " MetaModelOpts._pce_q_norm = 1\n", - "\n", - " # ------------------------------------------------\n", - " # ------ Experimental Design Configuration -------\n", - " # ------------------------------------------------\n", - " ExpDesign = ExpDesigns(Inputs)\n", - "\n", - " #ExpDesign.method = 'sequential'\n", - " ExpDesign.n_init_samples = 100\n", - "\n", - " ExpDesign.sampling_method = 'latin_hypercube' #is this correct? \n", - "\n", - " ExpDesign.n_new_samples = 1\n", - " ExpDesign.n_max_samples = 3\n", - " ExpDesign.mod_LOO_threshold = 1e-16\n", - "\n", - " ExpDesign.tradeoff_scheme = None\n", - " ExpDesign.explore_method = 'latin_hypercube' #is this correct? How do I choose this?\n", - "\n", - " ExpDesign.n_canddidate = 1000\n", - " ExpDesign.n_cand_groups = 4\n", - "\n", - " # -------- Exploitation ------\n", - " ExpDesign.exploit_method = 'Space-filling'\n", - "\n", - " #BayesOptDesign -> when data is available \n", - "\n", - " # VarBasedOptDesign -> when data is not available\n", - " ExpDesign.util_func = 'ALM'\n", - "\n", - " ExpDesign.valid_samples = np.load(\"./data/valid_samples.npy\")\n", - " ExpDesign.valid_model_runs = {'Z': np.load(\"./data/valid_samples.npy\")}\n", - "\n", - " # >>>>>>>>>>>>>>>>>>>>>> Build Surrogate <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", - " MetaModelOpts.ExpDesign = ExpDesign\n", - " egine = Engine(MetaModelOpts, Model, ExpDesign)\n", - " egine.start_engine()\n", - " egine.train_normal()\n", - "\n", - " # =====================================================\n", - " # ========= POST PROCESSING OF METAMODELS ===========\n", - " # =====================================================\n", - " PostPCE = PostProcessing(egine)\n", - "\n", - " #Plot to check validation visually\n", - " PostPCE.valid_metamodel(n_samples=3)\n", - "\n", - " #Check the quality of your regression model \n", - " PostPCE.check_reg_quality()\n", - "\n", - " #Compute and print RMSE error\n", - " PostPCE.check_accuracy(n_samples=3)\n", - "\n", - " PostPCE.plot_moments()\n", - "\n", - " # if MetaModelOpts.ExpDesign.method == 'sequential':\n", - " # PostPCE.plot_seq_design_diagnostics()\n", - "\n", - " total_sobol = PostPCE.sobol_indices()\n", - "\n", - " X = list(ExpDesign.X)\n", - " Y = list(ExpDesign.Y.values())\n", - "\n", - " X = [float(x[0]) for x in X]\n", - " Y = [float(y) for sublist in Y for y in sublist]\n", - "\n", - " #print(f\"x-values {len(X)} \\n y-values {len(Y)}\")\n", - "\n", - " plt.plot(X, Y, 'g', label='PCE predictor - LSTSQ')\n", - " plt.scatter(X, Y, label='training data')\n", - " #plt.plot(x_, f, 'm', label='function')\n", - " plt.title('PCE surrogate - prediction accuracy')\n", - " plt.legend()\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "plt.plot(X, Y, 'g', label='PCE predictor - LSTSQ')\n", - "plt.scatter(X, Y, label='training data')\n", - "#plt.plot(x_, f, 'm', label='function')\n", - "plt.title('PCE surrogate - prediction accuracy')\n", - "plt.legend()\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "meta_models", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.14" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/examples/umbridge_tsunamitutorial/example_umbridge_testmodel.py b/examples/umbridge_tsunamitutorial/example_umbridge_testmodel.py index 22a0f750e..5f813b322 100644 --- a/examples/umbridge_tsunamitutorial/example_umbridge_testmodel.py +++ b/examples/umbridge_tsunamitutorial/example_umbridge_testmodel.py @@ -12,21 +12,15 @@ An example for using UM-Bridge with an explicitly defined model can be found in import joblib import numpy as np import umbridge -import bayesvalidrox as bv -from bayesvalidrox.pylink.pylink import PyLinkForwardModel -from bayesvalidrox.surrogate_models.inputs import Input -from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns -from bayesvalidrox.surrogate_models.surrogate_models import MetaModel -from bayesvalidrox.post_processing.post_processing import PostProcessing -from bayesvalidrox.surrogate_models.engine import Engine +from bayesvalidrox import PyLinkForwardModel, Input, PCE, PostProcessing, Engine, ExpDesigns if __name__ == '__main__': # This model has 2 inputs and four outputs n_prior_sample = 1000 - priors = bv.Input() + priors = Input() priors.add_marginals() priors.Marginals[0].name = 'x' priors.Marginals[0].input_data = np.random.uniform(50,150,n_prior_sample) @@ -41,7 +35,7 @@ if __name__ == '__main__': model.x_values = np.array([0]) # Create the surrogate - surrogate_opts = MetaModel(priors) + surrogate_opts = PCE(priors) # Select the surrogate type and properties surrogate_opts.meta_model_type = 'aPCE' diff --git a/examples/umbridge_tsunamitutorial/example_umbridge_tsunamitutorial.py b/examples/umbridge_tsunamitutorial/example_umbridge_tsunamitutorial.py index c456787d0..0d9912b94 100644 --- a/examples/umbridge_tsunamitutorial/example_umbridge_tsunamitutorial.py +++ b/examples/umbridge_tsunamitutorial/example_umbridge_tsunamitutorial.py @@ -19,12 +19,13 @@ import pandas as pd import umbridge import bayesvalidrox as bv +from bayesvalidrox import PCE, PostProcessing, Engine, ExpDesigns, Input, PyLinkForwardModel from tsunami_model import tsunami_model if __name__ == '__main__': # This model has 2 inputs and four outputs n_prior_sample = 1000 - priors = bv.Input() + priors = Input() priors.add_marginals() priors.Marginals[0].name = 'x' priors.Marginals[0].input_data = np.random.uniform(50,150,n_prior_sample) @@ -33,7 +34,7 @@ if __name__ == '__main__': priors.Marginals[1].input_data = np.random.uniform(50,150,n_prior_sample) # Define the model - level 0 - model0 = bv.PyLinkForwardModel() + model0 = PyLinkForwardModel() model0.link_type = 'function' model0.py_file = 'tsunami_model' model0.name = 'tsunami_model' @@ -41,7 +42,7 @@ if __name__ == '__main__': #model.observations = data_dict1_times # Define the model - level 1 - model1 = bv.PyLinkForwardModel() + model1 = PyLinkForwardModel() model1.link_type = 'function' model1.py_file = 'tsunami_model1' model1.name = 'tsunami_model1' @@ -49,7 +50,7 @@ if __name__ == '__main__': #model.observations = data_dict1_times # Create the surrogate - surrogate_opts0 = bv.MetaModel(priors, model0) + surrogate_opts0 = PCE(priors, model0) # Select your metamodel method surrogate_opts0.meta_model_type = 'aPCE' @@ -58,21 +59,21 @@ if __name__ == '__main__': surrogate_opts0.pce_q_norm = 0.4#1.0 # Define ExpDesign - this is the same for both models - ExpDesign0 = bv.ExpDesigns(priors) + ExpDesign0 = ExpDesigns(priors) ExpDesign0.method = 'normal' ExpDesign0.n_init_samples = 50 ExpDesign0.sampling_method = 'latin-hypercube' ExpDesign1 = copy.deepcopy(ExpDesign0) # Start and run the engine - engine0 = bv.Engine(surrogate_opts0, model0, ExpDesign0) + engine0 = Engine(surrogate_opts0, model0, ExpDesign0) engine0.start_engine() engine0.train_normal(parallel = False) print('Surrogate 0 completed') print('') # Create the surrogate - surrogate_opts1 = bv.MetaModel(priors, model1) + surrogate_opts1 = PCE(priors, model1) # Select your metamodel method surrogate_opts1.meta_model_type = 'aPCE' @@ -81,7 +82,7 @@ if __name__ == '__main__': surrogate_opts1.pce_q_norm = 0.4#1.0 # Start and run the engine - engine1 = bv.Engine(surrogate_opts1, model1, ExpDesign1) + engine1 = Engine(surrogate_opts1, model1, ExpDesign1) engine1.start_engine() engine1.train_normal(parallel = False) print('Surrogate 1 completed') @@ -96,7 +97,7 @@ if __name__ == '__main__': joblib.dump(engine1.MetaModel, output, 2) # Post processing on model 1 - L2_PostPCE = bv.PostProcessing(engine1) + L2_PostPCE = PostProcessing(engine1) L2_PostPCE.plot_moments(plot_type='line') # Plot to check validation visually. L2_PostPCE.valid_metamodel(n_samples=1) @@ -118,12 +119,12 @@ if __name__ == '__main__': # Bayesian Inference # Set uncertainty obsData = pd.DataFrame(true_data_nox, columns=model0.Output.names) - DiscrepancyOpts = bv.Discrepancy('') + DiscrepancyOpts = Discrepancy('') DiscrepancyOpts.type = 'Gaussian' DiscrepancyOpts.parameters = (obsData*0.15)**2 # Parameter estimation / single model validation via TOM for model 1 - BayesOpts = bv.BayesInference(engine1) + BayesOpts = BayesInference(engine1) BayesOpts.emulator= True BayesOpts.plot_post_pred = True #BayesOpts.inference_method = 'rejection' @@ -167,7 +168,7 @@ if __name__ == '__main__': } # Run model comparison - BayesOpts = bv.BayesModelComparison( + BayesOpts = BayesModelComparison( justifiability=True, n_bootstarp=10, just_n_meas=2 diff --git a/examples/umbridge_tsunamitutorial/testmodel.pk1 b/examples/umbridge_tsunamitutorial/testmodel.pk1 new file mode 100644 index 0000000000000000000000000000000000000000..6021864ade548d6adb3202eaa24924932eef03d7 GIT binary patch literal 10816 zcmb_iRZ|=cki;Dpmq2ir;O-XO0>Oi8a0{-xxVr>*_u#g;dvJGxJM1F&-EX*i>6+?? zewyl<u4yl$3x98k7>D)NN7*D+I)%t{1({GGl!}T9t1K(0qpX(9EGsT0<^uWta*j|m zR2+rTH2R6pjTS12q971H?q%2U;z0oU)tleb-TT|rE9Z#evd86w3)!*v+tDkXt@Y;O z$--Nr%8|*9>7H)P3_1bo{`t_iM0w(1g?`<+{#lNm6|t|Q@kA&^-o$wX{X-zLcIAm} z^B%usKf^}93cu>fAclxUMO`V?VnaR%#r!|4sBg13-`=0odHgsv5Y&QhhFnXtt5_DU zy5CtMT418Fk|%if4!D5oxw`#HgCn4^8?FIjWl*kszsz`>xg`*B{v^W-ie11sDW*T3 ze$A1H5}iKbK14-KfmeWFDYPk>fN`M;zd48DnO3J@z{W5-ve#_!sp-H=WDCjwaSz;u z$RCga{Bu=${0j<*Mm04AY6X|arF*}Bd$=7VQJtyb$TU^c1exI~e<3AiI=J>GgI-SR za&{#!iZOq{bltkfH7Z-+5aQvLvL;s2Jq&$QMWMipKHMna5|y-38%sqbbmP=g-(J?Q znhjOQk1`wM5jikKuT7oA-oFct)|;EtjS*29Cs{q5>|Ibr==>3li5X>k{bKUC`shR~ zQ2i=U$DM*^{m7ZcW3(sX{@309jKYHP2iHWnj}S^rE$cKz?qFCry3!j_gTLg{?JmOz zb)@=>jqYV%GO<@N8QbQqHFh@JGzalk407jlTGIf<{I34Xt|;5x>yFoLCm<OPUQ)y) zWP;L+GRE}IagYKtjM?ZtzsbyaCDHy6dk!0A?w~?b?q;m-q}t2%>I>GtX+Yq=Y{{^C z;n!q770K&={*sW~G!tEF8ZNUk?ELQm{pL@GSRCCmHSeqp1KC^?M*>Ow?j?&06Th7E zoh^jvzDA=$vh@x_JiJc0`oB!q4d&x+h%m(7!3lS+sq8y`3tk^t50t7ArxoKeYG_M? z;cT7P!Mz~fp~q}brz!1w$iow@-RI2sOSFKxWGYE<0p5OE)+|VFeToMyNiaIkzjyE_ zq4AE<j4wIngG;Z^>(B>uovi}4Th17JhAGHq7-%@;nRad`hmrbsIw_t4E-hedOWdKg zUnw$fxbIU6@Zi514}ETH%|?n&GGA~ALx#;!{jm@jO(9}P-AU6a0cYMsRkx0X)PKh4 zjS6KXaV@pue^#c3eS(lpulSP**sCA7aRU(uanh(#w?lR{ms%T!8hE^xY@CBT<FGv2 zS8Ix$dQ39!&6OHcFr$8d?>h5Qw(<UTJUapF9?_7?@acD~<W~EXmGRel(`niwm!lcy z9s6|~?nPKYiTHemTGZH18avtZIST29{Eby@ygF1&eEIqpIsqe*j=<)nG~#~9aKGM} z0A(YCs%wBmNU>}V-Y84T#i-wwJ3ls3b<fsvWe(!2{O7wpEM~2R&D--L4wG3YOvY!a zpjWYbgrj>(#-0hk^6n6rPIKcUABU&VoW;gia$B)$i_G{RuS{AqGs3L=Kc0Xi6&`!u zp74E(vcIvLV&TT%%Ep@XZLVi+tsnA(?Xf>!FF3FOLQI<E+-k}8gUX&~P<kc!My=e) zWMd?B1NFBayQzuY^<(0@C;BP79akW9zAM*D-R(PlgzR35({@YFhcMH}zpCYQu>ID& zUX3okU~D;25Y@CPBd3?7q_D?=gI*lVWGAg97Y`2zcJFjexJ~QNnAwmpI-YHx@fO9j zKXuLOL1gML^Ta+Tk;#Zvw_Jan2Vjw99^BlFz;c~OZ+50I7J*wqW3??dUEIdm)!X&( z$T7>$XOD?Il&cEqtRg^g`hAM9Ac^wI=j_CaClC_8OX7^fn@QV=Zl<_!Jp4j>^_GV$ z0O&EIqW4EDu+6Y%r1&I_|M|SDM!-J>M%dtU*ph0#lo+^g?ueU&j4kgd`wuwy>|dL| z=Lcn9`o7~@iQ22_Y)*v8wz#cHLDOp?0U?5$_Viwy=n!Zzi?pdfmwPvPPkp!6nc1E~ zu+Jtp2%glzs;B9t4;1<|{!i7XVfP;gVmm~D;F~ypOD(Z9BBsbq^NlB5oBbC~-m`eg z{kd?^h8aC8RM5oy2P5*dYJ1B%iCXX-9`qAtH!g~6S(GR;-Mjkg$_YW<F0y8NCqc{A zby#2O>ou3!C*?pFI-U1iOgrPbWwj;@81^(M-;tkC@u`dI>P(T87EfTH0s%aItpT4{ zQv%}Ek2FY5?IUbp(OzM?aJlo}vsJTXk6;PzjJ#sOEmFhEM~0MIK$wETH=_&z?gHMy zpDrWylwM7i17npupAbfAbvHGg%K6A42lv)UT?e9k{o;TiJR(0qI&X^zU3U-V1%3)* znbH<VHf!mMJBE2?L+tbV-#o*lBXCn+Cst16?8_;mc*<tXLgsj$PHqFXOd8IPp#xEr zql(YNBtF!{JxG5uy)<ohaQ{BuVts+(`Y|(9%aaf9xc)M`?<iJZL2#UF`490*(Pp9L zE9dTA?5s`zi=YX0_giCb802^l$W3&F3_~}9LFSaW6L;=vWGzlTX-9{ZkYgrk>8P;! zgvLi)vmq*c;mA=>Hc@?ac@t`zX`E>wKt}w2Jm!`(ptWMWz9@-rX2NOP`S`VffAA*c zK0a*UM6K&I4zsg6xZmoov=$J8kUTrNs$$QP!<l|9Mg`M>M9&lZ5)AH3<vr8xLJw=6 zAb_n3<A!BXW_VnW0{2^1JWQ{V!8H9<@q9$?F9Usk?vKa6ZgcQyHHSrNw^*(VCgMEV z-*ERS@rJR7v^4+9!GfLl;H&*`Ss<DxWpY7x<(Qp@3VNJbU`=l1@aPy#ha3_aBuy;b z%xd%P?~U2;(aMkn`tna8e?^^{Hg<`I;aL_Bm9DN(PsnRYDi{ggyD?4Y8=41unaHi; ze8ry3xh-uMiNqLKZ*tFz49UN;HTUC7$CPD=?Kc;Nr))c%e<a;OAF61qv8zKEXngUI zHP}X$EWT(XMkYbRM2xk4v=Bm}5iTAn!=*fIfGXJ2!O{=<YR$HCnX<--TC~z5x?kCd z{_{J5k13)U{+<6`m*My7EJubE{*||k6EN2&-0bQ%>F*SQ;pgJGPlG0qZZ(_~pdRFF zeo)RdIxVpRbhvxM&Nt58ukthw38oOQ-!VZ(zdrD_dyNoS;h;NBGiYN^$+$AIN|y#Q z<i)Q8s&^!Ynle;a#7#N;@un<yz4;b10Rhdiprf1RsG2{k@3XE)qfdU70Fia`Rwaf> zius+3OoNv#lUI~@|D2fMz~g%sU`?dSyb)1)$qYi|OO`}q2uf%gl@4FmE&L|#Q@~OB zTS5Hv^0<F_FZ<;dSnbblA0v76&q}4x*(@R~hL(f^d(ZH;EQOHiLUI3M29$a}7hPR< z7J|t$`NSFx1eA*yVx!}*;5YQ`DE15G>&q3rf$y`X<K#XNLSe%CwzuQc-Aof9UWY4* zB=*IB1pDY7ne~nC%d=w`)D~w3imY5KK_kbEOVl4jSuftLbU46825kcWM1OKA0kJ|# zMBrIq8VQErc*tWBh{o|sfrITZTrSQNo9B_A93mf&@z-C)%}Tr!u14uP0<_=9+4Gkg zx@tfB_AggHQzi6H{Fkk><3fI2wzwPSe4Zy-)#?va)`(1w0U`c4*kk_Onk=3Ogybp} z0z{oiXZN(xX{SbZ4*#C-gS7*}l4po(Y1kNF#krYO>|`ECU(*i8G?)_{s<+}W0YRW& z6;JU{V#61~zmbv0eSc_^=~}?}0u2}QrvrHk9OnMEb1_m#qazS4y_JH;H$rtYYt@kP z2v5?y?m{54d4CR#HK$jN<_F^M6T}h&wUr0Y!C>j(38F}JriAppUp@m!gj&kt5}nRT zup5&-13m7uluWHE`psA`9;^d$G>Mybn{M^{7o0-)OUtXpxT_p~CW2*CfYsB?PxBQ{ zqm($U6x+ITAmrhicEotj@(E#9{l-~}QbEkFL%Zo<-ieQl+q)3{*Og++xhqQ4Qh+;; z5k3V%3(ItUDHbN^wC4MHp@L1%K^>t=&Uo-W3zJ(5)_`<oz{0>Tg?xhb(}5E0Ewsl= zPh?5vasBW5%D*yx*d>On<LcKjB!dMO7n&=C;HS4V79AJ)z(wM+Y!T(~AqoWJJ!(|v zyN$aPJMPzl-GM<l9r}7nnib!{3oUw!uI9~*eA)1&Az#4P?g5iR*u=)75R`Dj4b|N{ zf64}dN)6#GG}5VT0!h-*Ycq<o1YN)?`pnDUJNCpK&4nM*ANKAa7wWe^mMOh91e;Ei znMhQPgmj(d!ZEJmFYJVCN5bsjA5ZUO?90cw+9ve&5ZMyPkc%7=-j?Kz9#2KG#OY4| zq7^%(v*T+GxiQUp2Zqjso02`>h*6@^C++@_`3R~ec&GIB1bje{Nr@>uYyPS|B1?8W zL=OR0uBR%Whej!Ao!!V?_8*8asvY@LQ}SIm8&#svxl5%l{}RnH5F+$5?YE--I_svq zjMx4sY}XQyDlgUkgl*auJ;!i7fgzu=9E*ovc;mVU9b9=LZpJW3$G7_$tcm>DC7q9J z=Y(K=ynI?he%3Sd>Q@3h-f-R08ukHl&&vum`K=S~L~duUF9C`r?_CcGYFFPp_X^WG z$_q>C#@I3`e18A&^TfUbYl6k31M1U(#K1#I|920`z8r&no~mqAji<&74lHzXKBSme z9w6%cQ0E>d5>kkf^o~2G(5=C7tU=v(#gI*?&gHC#G$`tGyfj?Ee7^U_+1X6uCi62{ z=3el5{>|yH=p8)^=PzCFU1AaNZ)e2Fs|$iA0%9K?2{fpN1E*(=fe^5F!~0$4DRD;G z;<UUPY7pIBgAkDpdq$#FiObI{@f{NJpBJr7J6U$baZ;8+9tC5k=tLyf<|S1;iJ|w( zu0`<NK-iXevGW47)oa)9f4<Kn6Y6fUp!ka-yrj~+mRe;$24@p_c`q`t>r!Uw8cj() zqFX!L&dUjT#eN|p6rLyIgOV6Ho|9svumItY4&3_K3MdOR<U@StoC0I?rr_jqoaFFM zU^&cK)?a{~{Im^5T+%a?-DR40ddRE4Q3!3#k_FMjikIGABi8=dnj9{g0AXMz%9Fh7 zINGdM1@GL6ki2NNs>WI{i21u?M2c2OBlgEXSeZ~k1n676s=8|7z*Bg~WvY*Zv)q&t zmbzq#6SHJO+u;!U=vkcg82Fu2$mVY}JH~`=Ee7_61WY-{T4M7nh46m?3yoq0-Y5OB zmCeQqVZNqT@&5J-loL}mE-wn8RAhQX&jFjhwKa7uktIN3+qsw+5NKM*n&GIS1Z%3W zy?4c{HTy2JJ;7@(0sUjeXD0}2uN3#`LK!>|A*t~xvBS%&ou@)R;=F=-zy6_;v}e}! zN!4S^UL2)nngaqFJ{x@bGRd-pU_*XKY4bBs2>aO_pxQYR7BiQ(TbhDJM6dsMrv4yk z=c1IZWR=YMN!;6X5Qn`@wDaw`XgxUpt@_?_vROjcvqH)Dh>?sHYQl9A8-dU??tbO` zLD`RyG_>LjfXk-fcho;;qbQ#iv$u)8SLn4v<oBBsYL4;|H>Yh(j=eA**k&!2JTSui zd`d}}ajFv*<t0Peaq(_w-5>S?)kxDk@#Edu_Vb-YG?DX<ODiP2m4tq$T7Tgjgn9U5 z=w8e2&U00H*nybWjxn$Md(@Jf+Dw4!=FVu?4Pf0ZxA2BMS^urkln~X&lVY!Dw&?0p z0YndDCTc?!SVR!=O!ULu>ovei$JYWTOZ)|CkAQe|_$u2wfEiWBx{9z^1w3$`hdD8I zw7)x9bm~#2n!Llv+r-)s2SYSojyyxM8|*ssZ)m21SOAcXpYM-0wXU*mHS9LVLI3j* zT2$s|VrF!FeA^_MPYiju#1<BDc9V8=@Rdg1gRb)@EpzQo{E<EG)~TnuyHHq<F3;)b zBA=Kkdf*9okPx4m!e?B0ecuV9@?s36D^U?q2n}6dC$gpT&wQkRo9q&|sn4)7TfL7& zj31G$d7oXTAjgL$=-s^*1on2i-T#9({nwhQX&80Q!T-<qHT)|^)+T#SU5UEnf}2cn z3Ei#I6^S;Vnsxtk$?w6(2c9;44Fv-hbkO8qA%5C{RTC*91?~W@J`QtnULR#_WtuML z0}`|RnTVb&SKJ3V@cenZCcNbMAJ=9cOX-b-F<{uXH85{ixRRog^si|ekSmemz4{L7 zx@Lza(spQP21JxPm}bW-AyvR8U4J%{!bU<(esUL;hO%r`=%A!QFmzLU&2>g`1MAzA z)lY<Q3a%hSa=%)+O&)ge^0o!@AAVZbE)RXBw(ozc(LsPn{C9iC{howrTxzIw8^UNa zHrIK#<slg#VI8B-D-510T5jb2Yo8(dQ)``Bnkymh{22f6TfSMBZ0rI+NXt*wNQ?m` zZYqW~AZavs7N{fFLpl!P5uXCevBH^1E0n*|R$AL`(Hax3b#U<((MLgC`skmsEv5<K znol%a)}8wM?k4=#@qVw&R->ME25|HR_<^PiWGzs-6RxdQF_B7t^KaPyGMD<@*?+Vq z%ymu~ON%dv0KaTLab`VQ$36<>X=(_B(M1>F|79e7#}tz#^ni-TCxh77c+~*z`*~li z;-8^jC>k%LVA?-*&{_yJf7{(>K7U5tlo(ZtHve{o44lf2C!Cq<0WY!F)SGeKA{*EJ zJ3&ThOX5NF99bfzk8-lTAd?DBi9$xFn2|ceE-(0Xgd`2tZVJbPLI;M>iK;e?7ARf5 z-yObElErX+PFV|k?S63ZcmD-4cjlsdkbje9&c3(5WyEoXiRbOS`cu|d#a*<D`sPv( zm9bj+uJlQZk1jrUDI6)@vHFXV;W(V0hpy84R}3+KsJrxIFq)6%S~smmut_#;$|Qw! zunf3tc90XJ?aln)uwckNf$ZlkHKpjE5|z8|Dni6>0RQC}sQ{4GUWihQC2@>G1*@l@ z8b~L)l#S$Nj$$i2;BnD0orpFO;stFtS8p+w3V1=odY)nXymSZ-n`-G%RureV7p3Sf zRLX<l|5kEbcJXz$#jlIo8@>@4q#izrfFZPXw0hVzED3pYxwT%iuQw+2y$=vY+KzP% z+2BQ$n6Y1byeCILpRh9Os0U$w0|v)971>}HcYAM)<=7Jwdg@%SrXkhQ7^Y9xQw?~5 z<req_$xf>Kkz1R6rKxSBJh^Vy2|vd~|K~{gR^UVR<0}~(fA@w;e;UNFF0odhOPXRG z`CJ<I(0x<&B{-sZ4_Nj4W3V7za(DiK>+(M$e?Q4Ukmh|m7Fw5pf%rff4NTX9)xr5# zet&mQ8b7X;=`7z0W4AxkJdtNKP-<4l@#{@ovMH$_71yzrGfX3Vvfl(e#F#$hG&(fg znz}-%b*)qIH`Xd|{JWPM2<}gVK7ce1yKjGF&<_JWjDJ@zx);l|&*f$m9BM!!;i+g; z-$g;{)9P+&VAS}|igt2AQQY+Dh5N#igd)m+PVDQ*t@8eu{mR=H&%iJm%&pIrYhGdF z2+~vW!T@{v;5RGHvj+xZ=Q%S-ysrc8b-O5Z-&F*j@Z{9+zqkd4CJ=vEGHyRl;&iE6 zuv;`%o&7W)<@j}X%l`DGDZf}?ey5EW=`BxNmrK#M-ed)_CM48-ROsjV!j&m@hOp&U z2UreLZ3aR5@^hpfSpi+!2TA(c@5OJ8nh*aAiA(E80LC7V64br;8+h|jF^c^Nu-akH ziqwH8;j8t{av)E+T=h$a7xNIs^zgZFE0_@YxORr4AlxmHZub5>LP&p3hSzc&4G({L z;0R{Gum*b%9JL-ME6gVCw@-V*!WUDe(KVnlz9wd{b-@O!UwFE$yIaUToW*<ReTCMA ztdgyNIY8D>uynR0SR-1q#d}hZMx1s!Gse2Ll0HFC)NUX}?UF*5%Mm7pIfeIns3qqq zW<Od?q4C!+<C;}Wk9_^pb=R-w8zSl2K3NV}lOyGH^%z|vV=u?dFouePP}rI>tKROq zgM$AEbQJlwHM+bGJwZ53l*VCq3;k_+2qsj?3}at)8y<S>Na0OJzNfitsT@!U-LYF= zpE!#eHZmV8V`r~4w}X{H5L9i3+=vnBxDzu<h2da8AV@$o5F6w1dlWmMLtdSHm7p^? z_TTY=u1YN(@P_etcvHJvluXV*E>IGBjF~LmbeACBOakh}4cQ5A>I}<}0cPgj6g`5x zB$tOX?Y`s<OWrZWZ)&0^<k@Aom%s7AVpNS*>=D@ubbi~PdQ#^yoSa=h4_N|Q2Gap@ zixDNet*=e{ZOCRFFGX?7BE!`PWQlrG3jEcUU2`7`Buq%pGj#R92>RQa@Z?5j;6%1* zr89oWK(ZoU&S`u?-t*xut34(xH7~9<Mw}$H!&q3cHfIRz9{O?6d9;PC{FLcKKLeO{ ztp1$!J?K%COpwO4m-%gXuj%Oz{7!D{(qnSbtWcf9=ho&iK$5fVZ;IxIV5?TQv@>e7 zYs*j2rF@UEXGq$Uk@={}i)+*08L$m`+R%n*)Ns*uL0w1Z?0ee!PK}i~1)|gjoepsJ z%E%-;jN<0dj8bI7-nHmMky_q9XTxqzEFy3tVvd_mK>p9kYl{gLR^0ST3Ox=sc<K@* zkbljX_d2q1>sJgKR6j5bLjt;ynHinLHYcXiv)sCbAJ}~5?FUwYdQsc7IXyeNG7$6C zUM+Zctf6PQb!@3VkB4*~(|h?MCj?#iyv?gL*L|P0QBjX6>0@-bEPX?t3((;<5>LJa z6q%Jhu}Qpdl_^<g*3??qcz5snZ<3--a`@@E^dSQa7sC+ezOn0?^L9G!np#+6J`Y0` zfjg(=WOu*4-P>-d4w+uK(JMF8OA&_Dch{RHviGRmi500abeS<hxVKZS$X%nef8x3( zjxlbPs^W}=i;n@8zc%uN=mHYfMyk)JFbGAuYpS^I@d@;CEjLIf-b@Yz(8qru-5SqV zZ_dQ-N=#Hp;??=l_xYb<&3TdX8Mfwm0;l%-N|N`N*3jXo%IF;obSyYxZdN=y9E9Kn z(k=|d3;o&WVpd(`dbxKNAfIm8nw_reTNs;gV~v+diX1QUBJX3~_b(o4LQIYi86Gg> zwi4J6RiZ{^ppdlU1g0gPw#|;B!7f;!We#56p>BS_FE36j&Ptu{b8dD1rL@F9^-J<L z!C|%onW;H8e$4!`^gIyBn`4$QyhVxPQZiR9s@S{ney=1V+{BM^>+UJMFVdHff9HcS zK7netel~X@o<978W|i8!>2`~l$BK?o1SA}{*O=Fvz|`%&paba1SoC{!0IM}&vfHJf z_%uusHeK+J)g%*ey-^$s-W<&vRa1~|b&O`$f8M8Sn7C-}!LyOAu`6(@MP!6Ou12-^ zDomlwW;74lE<{MQwHs;;8c&6lfS>fq$#?o#hkujCV({@KTt?JrBMu<I8^u0(!x{3A z|9!Ix1*f31?H49ebX428OV^5_x*mBo-<KhPLC07IU(S4`SJQ`C&p*L;QOkJ@ZUbO& zB-LgYmBW~b{LRj)x+KY7t+qz2s0SU!RR11gQzoX?djcJ>4VeY7Q#MWkI*?6UeGyh- z9zjXR9$MxTQtXUNWiAVYj2luHua)f{i(z>Kv{@|8&sS~gl=|HMQ?&y3?_UfSgv}G# z4-VLQ*5j5q@4_f*i$zNYg1;vFrsvYUrK(l1sqObQdTz!2;w|reiH6VKngeg;Xlo}c zAwcb>hR2pOuJ>bA=;=UkF)DNo=5d^+>K;Ox)>ue%#<D~<>l%R;t%qd}m|@-svJdtw z%~u;{+@wZ`1y2b{pALO%pL_gW4ZO;GJ>>gOQ(y!F^__>B03=D)fg1_&OGSW2rz7pZ z-jWt2nj>VGa51?bE>NZBfVI2{I?ztn+<RNkdxSUHwSy?WCKo+6p}Xahy$WVndhu?j z?P$D*$lkJK;4YvQX^V8&e-E>B<cT-#bF`!v<;A-FA_Y-Ju0s=o*G|fD?emQgaZQ=a zd-PVl$t;Ik+M_y#U!A?ZK2g-L^~apsq`RO=53ku<GA*;N?%k7GZe(~3eaI@qG9)A? zvchN;2CIuooppQWF8Gb%J*9Jafl{5+9NF46|F!C^ID(zF&Hr~cY0&x8+Id9s_a4~3 zhFq?N2Nz0wtYpGG^F-636X4?+Ix0t8pnRujI9%{nK`bKBR^9bWp+?Zwh(kPze}mQz zdI-9-RcFz|bQJOuZ4S$OkP06vWub@B<bd;Oe+P`N`k(C|NrW)z_~s`~Mw|uUzD(Ke z&j^n>YuThV_%>c`V61Ifq;rRp6kHtiuZoT1s)gQv0ydAH7S89qVtel|&II5P01z6N z13@_T1)@*!b|^@}v77u;@QTp4Nfe!Z01bJZ4s9=Wut4hJqX{80M3mE~sT*!JGp?xZ zJrJSKC|rx3<dYoD<JD|&iEr@Eb%d#dr$T}mSAiG&JTU&44zuTEB-n%HykdK)G1$%} z_;Gd!V9zizrKj14)VTp$^i*{7$*%UU>!J!k{Pzn_mT@##3|Kg#HYW3&UvK+G^)@se zz5h269n!!Q>1C;{1(x6GGC#Wz3A}xEL2>dK=4WkRyKO^DVCS*^O^}Spj=dxKmAXj+ zn;U;gxLJKmLnwX$4h(PbYStv8eR<DPuk8yTJ(-}R5gpdoE9);0a5VRYp>w8i2s#q= zA-T(Mp#1=E_Bs81V{Dl9+XFk}jwx*_m|`+zD|zgw0R%EJ`oz&?dBMhal<c5~ASNFU zbS?*F)ck}@XOL8+ZiqSzD?W$?BXy#AfU^NX6sP{(XE>SC0$x?xiflaEDzaZH5OE0~ z<*>0wgp&m>Ici8mnbMeMAsQ3UMg9Gx%#?pPgcuk~xdMLvK*|8)dLkeByobu4s15)m zh1-w}`D;6sS&$HQX}I@LN<!4rWIhc5q-{bSSqH_zG~W(Ux=e0~q(TV5|LHN>mF|lI zV1;I-T~Gj${DZj4)GgMsp@pub4@))BTb=g%6l`>t44LWA+rXS1)jicCp&cG<8S3xT z9tW!5rD)m~7QIk-$)#e$)%U6X|Hc!rw7^p~-ke-1PNkn-9hG{nH06Rd8`i$8Gmg;S zwlUZ<PvhE&eJ2p#zw2V+##2YhL%4h-*oVCQAxIzae}UJJYUIX3ALG8WdIZzm-OAo| zPo_-N4Q?MS@`Tecb1K{d`G-k{qq%?2!Tg(@GfWAY^(h}|)}biooH#;s5-)&{?RVbz zh35;kJD)FCQwqmRQcEdYUC;{LU9?oxH#f9I)R^i`H*4uMe<!rCk90V%89&L@+DKqE zYWLiO)cblh>UTGxV-O&`8oqb$HWa5?{m=zgv>KB?K7jX*`^;9zT?$xRhn$!`J5@)y zK$ve%m?D4-Ul2hw=f(kRWECV&ud4_b<rsjb={^cfA}E3iARm6tgr(ohcl*Sl(M6X0 z5Q}pID%={tC+70UX=&?xc-N__P-9VV;xAt%T|CG9`G~~p3(V@4oZ8B_a{52gyH2a5 z(~ph(#OS&ruxkCd=5w30hyrr=rP~sWsjoiq><j8WHT>AGO4ymX@p2jRpdfs&%*gn> zJUMJ7GHU$L1}Sf<h<uY<@p{IH5=KV^depN5U+f9X0Y97<U>yffj8nV<os>2!dm7O+ zI+#|ZAU}LsqIAeqCDF|dJ07-GZnSwX)w81jO%x?;iJUfEm-VRj8<!-b9`(CfL_*mZ z1Pz;+MyRwbLkWkRDw{z{Qr+QDNuyEuUR1l3q90)Wzb~`QP=P3lut<bQzg(EH+`Y9X zfe205U0J^lC)|E&8Pf=z!q)t8T1aRS;UOxmX<<S=v5XVd0w&JzU=w3GN(Y>FaRSX( z%rXiZ{5#r+4OmgRZfx=}g<?iJ{CK(%+i`a(km+vqb^~@+Z_cOStJ1X{@S|e@rtzpN zBs2uaG^G481!GV|5|k1@{-IWpQ`I%Yp2G>(LF?B!7-5?5=Yxp(P{%>nRqgMT7z$U> zPfEhQg%d}(%xQdR#iQndVw-$<qa}9KaJH~=>6qL97Gq+a`OIDPH*o%|#TcMYp1$`# zB#sJ_Ln?7r%aCJ>n&c_*WhX>84SZcS`KY8GUIXHgE-6S4*lkpsQ`mP4j%0yaW5YLB zJLFS=uuobZ+-CPnjje`yTfLu(d`Iz8Y2L4fDTMBeJbhl%BKMuT(|g`gxu1iQ%?wvY z0YVL$_+ofvD&qRb)n0F@{73Wyk{ZX4&znX)K(qI7fQ(c%Q0kZ9vtR#LqM=>taSf{! zpp<8!U%Yuauu$eKf6%82xMzO8g%r@)R2U6w{+s4AJ|~6s@lQwxV<{~k#COYCeWQIj zzsWW}nOgIAtF=vSw3L<CHg)&7tV^rQX^^upgY1UL#j?kZDw;5w-6=!}d5G+c?(=6e zyCENNpVG~b=_ob!v*l7vGJLCAytPXMRgK9X69;6pLW~)8%fo|n+4ye&iJ#iZz&%CX zKf4>USW#zNnvq0$SZGDj?dfM{pYhRMxXdmHt%oq1a!R-t$nc-I(cf8R9z+`WN~nHy z1N#GBCge|jtz|WvUTx>US<43B{n`DUCdlHb*2<L8J0^K!FY&&>Jy6Ps5f{lPhVG)S zwPwMimny_aPSA66Dn6l*=-O-E#=5F^(`N?ns09L=O&TC2PrInQ%aWJr*SM-@|GB&M zatd7&WVijJP!FU&gy>G&2Lq}1?02LCI-02Mx+|kgGIYmwLket#V8CGA69%Pz*`{Qc zgK*~5+<a)-w@eho%>#a~%ofH^6^J}_b2P=M1Jo(k<?owBh4m4}?mYSdVlsnr3;uyP zRlW%yaokXclzZmZY9zM5h9~j3T1+`cKlrpu=?;oC{IQu76H#mzKZ-l{=2p@len(S9 zsyiYW*?^KbzLthYN*!+SHwL(&+`X%mjNPaF)Oyk4+oibgXw2FaY8Ac@>P^xMax8T3 zyxRrkzkZBKy(&h=4_$X=dLw=K{uHZ(GRis>uc{~U1sa<c_ogD^%3Nzu`}=b==$-)k zeG!<@i`e2&WF2@fuZp7R`mw)6O`)60M%1g5|Fa%!mcBoCps;vPA&@ec_~P~!UWyZi z?WO@z54zEt%b*2C^Kh|zWyV$VW}GSr=*@*xl0&L;nYbekuRq!^I`6C>R+!o+d2BAX zbr~|Xi4~c@k=pWPp1$^?Q^_)Sd-kE3r!47IH%D&hjEbby;<y>J)R1zSidd|5xCH6r zQW;;Krm1hIX}Z`@q0uZ1JaZai=vk?GMxVwyv5C?@Y`MOkrKPMFDz~_+6mv3TC^9yR zC-s`iWVsu^xcNB+vO;hKcZ}<bHvpm<iAo{#fMFde+y$Tc%<{S9>2u^rwaaA|Ri*Ze zz;qQSmy!*v@7+CBNsIBrds?YVq$|lw#=(J)2yu&2LmF?3XYY}(bc@<^<&-uYwqddp zL*EV&<i3E$tqLghITfuBw;kdLFFgrM9h?8n04}>*%5)&2sjhWV&|Lqeu0@F9?X>ZX zg9A~(WUmlXsf?_w%Bt_3GO3k}@S&RPOksstl!jz6oDnNa7(w(+;x8^sQ@@^hpd?7Q zSGi!mD#^BdgC%nb-#2_a8e*I=VuVno%gU`)DPD{yqx*V=YWw=lQB?ae-Q%!AakA#@ z*R2IowQ+#%Ozg)247rwuL2B(Tx#~VS*e$+xH*J@veI%gu`r|+-_L2?Egx~o}VfMkU z6S+y+d7B<MC^{g@a!Bck?;)iY?Fk+Excc{+w~6cLq*LS<lc4a;M?qA3_akLa{EzBk zujPVy`+Kx~fS~iZ6~_rV(T6NehFjHto0>Wo8`xUn(;X&Tx@_kbc*b|}!Lh;f{f~y; zqS#vH8LRPM0K$*=2?^hh?d{6f1In_`cm=5V!*Z&fu*c$p$$>B4fme#}Wg8w^nP-*7 zxr&ub{QekP%VEr`I&`sGjd_Znsw@Iic{IjgnQbeR;J>>jC}L@kQ8C+=CLJ*gYSFQ2 zxn?NpR~|U0Hh&w#VYaPF;$s&4M(6O|HAV4pT0;2m192)@RnoqeYnS3<;TA(>EklJx Y9dlN7$1nA<tv^92<{#oCVVMg51Ca?!GXMYp literal 0 HcmV?d00001 diff --git a/src/bayesvalidrox/post_processing/post_processing.py b/src/bayesvalidrox/post_processing/post_processing.py index 0d7fbad16..1b244516d 100644 --- a/src/bayesvalidrox/post_processing/post_processing.py +++ b/src/bayesvalidrox/post_processing/post_processing.py @@ -1146,7 +1146,7 @@ class PostProcessing: # the total number of explanatory variables in the model # (not including the constant term) length_list = [] - for key, value in PCEModel.coeffs_dict['b_1'][key].items(): + for key, value in PCEModel._coeffs_dict['b_1'][key].items(): length_list.append(len(value)) n_predictors = min(length_list) n_samples = x_val.shape[0] -- GitLab