From 911d1924cbe8d1a84f3907693f04357a8f86716a Mon Sep 17 00:00:00 2001
From: kohlhaasrebecca <rebecca.kohlhaas@outlook.com>
Date: Wed, 24 Jan 2024 15:20:21 +0100
Subject: [PATCH] Added simple constraint and example

OLS constraint directly to be set in the MetaModel source code. Small regression comparison as example for the constraint. No unit tests yet for the feature
---
 .coverage                                     |  Bin 53248 -> 0 bytes
 .coverage.DESKTOP-ATMEKSV.10616.XTfwDWtx      |    0
 .coverage.DESKTOP-ATMEKSV.12272.XtVlLrXx      |    0
 .coverage.DESKTOP-ATMEKSV.12632.XFsLVCEx      |    0
 .coverage.DESKTOP-ATMEKSV.12712.XTfzFmnx      |    0
 .coverage.DESKTOP-ATMEKSV.12824.XsNQEeax      |    0
 .coverage.DESKTOP-ATMEKSV.13164.XMerVQGx      |    0
 .coverage.DESKTOP-ATMEKSV.14180.XbsXbgvx      |    0
 .coverage.DESKTOP-ATMEKSV.14476.XuUyQWDx      |    0
 .coverage.DESKTOP-ATMEKSV.14520.XbJgzpTx      |    0
 .coverage.DESKTOP-ATMEKSV.14712.XMgYrQCx      |    0
 .coverage.DESKTOP-ATMEKSV.15144.XkcHTkix      |    0
 .coverage.DESKTOP-ATMEKSV.15284.XMONvZEx      |    0
 .coverage.DESKTOP-ATMEKSV.15440.XIuChHnx      |    0
 .coverage.DESKTOP-ATMEKSV.16012.XGeLQTlx      |    0
 .coverage.DESKTOP-ATMEKSV.17012.XcDINRSx      |    0
 .coverage.DESKTOP-ATMEKSV.18500.XGbXmSjx      |    0
 .coverage.DESKTOP-ATMEKSV.18844.XDPLaYqx      |    0
 .coverage.DESKTOP-ATMEKSV.19440.XUospmUx      |    0
 .coverage.DESKTOP-ATMEKSV.19500.XYuOMLJx      |    0
 .coverage.DESKTOP-ATMEKSV.20080.XqjMBHMx      |    0
 .coverage.DESKTOP-ATMEKSV.20784.XvtbIeRx      |    0
 .coverage.DESKTOP-ATMEKSV.21516.XyAVyWNx      |  Bin 8192 -> 0 bytes
 .coverage.DESKTOP-ATMEKSV.22012.XZkqdGCx      |    0
 .coverage.DESKTOP-ATMEKSV.22436.XLHoKASx      |    0
 .coverage.DESKTOP-ATMEKSV.22632.XQfiQacx      |    0
 .coverage.DESKTOP-ATMEKSV.22836.XaSNeVKx      |    0
 .coverage.DESKTOP-ATMEKSV.22988.XTBOmFhx      |    0
 .coverage.DESKTOP-ATMEKSV.23568.XYxMRfbx      |    0
 .coverage.DESKTOP-ATMEKSV.23860.XYIorGax      |    0
 .coverage.DESKTOP-ATMEKSV.24016.XyQmgPnx      |    0
 .coverage.DESKTOP-ATMEKSV.24380.XNVSylrx      |    0
 .coverage.DESKTOP-ATMEKSV.24560.XYUIvLux      |    0
 .coverage.DESKTOP-ATMEKSV.24800.XXnYmDJx      |    0
 .coverage.DESKTOP-ATMEKSV.25428.XVVrZIbx      |    0
 .coverage.DESKTOP-ATMEKSV.26276.XmpaSHVx      |    0
 .coverage.DESKTOP-ATMEKSV.26332.XgxWdWdx      |    0
 .coverage.DESKTOP-ATMEKSV.26388.XIWhjYox      |    0
 .coverage.DESKTOP-ATMEKSV.26448.XEujWYRx      |    0
 .coverage.DESKTOP-ATMEKSV.26780.XoqRisNx      |    0
 .coverage.DESKTOP-ATMEKSV.27032.XbZUsCZx      |    0
 .coverage.DESKTOP-ATMEKSV.27288.XZlyvVqx      |    0
 .coverage.DESKTOP-ATMEKSV.27372.XepoDlGx      |    0
 .coverage.DESKTOP-ATMEKSV.28092.XXuBidHx      |    0
 .coverage.DESKTOP-ATMEKSV.28420.XDzinShx      |    0
 .coverage.DESKTOP-ATMEKSV.28452.XeVLFCHx      |    0
 .coverage.DESKTOP-ATMEKSV.28556.XrWyCSOx      |    0
 .coverage.DESKTOP-ATMEKSV.28620.XTgkXKsx      |    0
 .coverage.DESKTOP-ATMEKSV.28764.XdZVRgcx      |    0
 .coverage.DESKTOP-ATMEKSV.29316.XAELrPgx      |    0
 .coverage.DESKTOP-ATMEKSV.29508.XebbGpLx      |    0
 .coverage.DESKTOP-ATMEKSV.29692.XbSwKvzx      |    0
 .coverage.DESKTOP-ATMEKSV.29708.XxOJAAMx      |    0
 .coverage.DESKTOP-ATMEKSV.29716.XPHrvILx      |    0
 .coverage.DESKTOP-ATMEKSV.29800.XEZtVFex      |    0
 .coverage.DESKTOP-ATMEKSV.30072.XoxDTLSx      |    0
 .coverage.DESKTOP-ATMEKSV.30104.XgFimZxx      |    0
 .coverage.DESKTOP-ATMEKSV.30364.XLrThOtx      |    0
 .coverage.DESKTOP-ATMEKSV.30652.XXqFtKkx      |    0
 .coverage.DESKTOP-ATMEKSV.32204.XCbTXmgx      |  Bin 16384 -> 0 bytes
 .coverage.DESKTOP-ATMEKSV.36684.XKrSwPEx      |  Bin 53248 -> 0 bytes
 .coverage.DESKTOP-ATMEKSV.4220.XvYRULHx       |    0
 .coverage.DESKTOP-ATMEKSV.6072.XZIEcISx       |    0
 .coverage.DESKTOP-ATMEKSV.6276.XTHKMAtx       |    0
 .coverage.DESKTOP-ATMEKSV.8092.XHklueAx       |    0
 .coverage.DESKTOP-ATMEKSV.8348.XnOVMQzx       |    0
 .coverage.DESKTOP-ATMEKSV.8736.XGwoASwx       |    0
 Outputs_Bayes_None_Calib/emcee_sampler.h5     |  Bin 0 -> 3281440 bytes
 .../posterior/Z.npy                           |  Bin 0 -> 176 bytes
 .../convergence_tests/convergence_test.py     |  103 +
 .../example_trainingconvergence.py            |  179 ++
 examples/convergence_tests/testfunction.py    |   17 +
 .../bayesvalidrox/__init__.py                 |   25 -
 .../__pycache__/__init__.cpython-310.pyc      |  Bin 795 -> 0 bytes
 .../__pycache__/__init__.cpython-311.pyc      |  Bin 968 -> 0 bytes
 .../__pycache__/__init__.cpython-39.pyc       |  Bin 860 -> 0 bytes
 .../bayesvalidrox/bayes_inference/__init__.py |    9 -
 .../__pycache__/__init__.cpython-310.pyc      |  Bin 303 -> 0 bytes
 .../__pycache__/__init__.cpython-311.pyc      |  Bin 354 -> 0 bytes
 .../__pycache__/__init__.cpython-39.pyc       |  Bin 368 -> 0 bytes
 .../bayes_inference.cpython-310.pyc           |  Bin 31276 -> 0 bytes
 .../bayes_inference.cpython-311.pyc           |  Bin 60952 -> 0 bytes
 .../bayes_inference.cpython-39.pyc            |  Bin 31419 -> 0 bytes
 .../bayes_model_comparison.cpython-310.pyc    |  Bin 15645 -> 0 bytes
 .../bayes_model_comparison.cpython-311.pyc    |  Bin 27157 -> 0 bytes
 .../bayes_model_comparison.cpython-39.pyc     |  Bin 15716 -> 0 bytes
 .../__pycache__/discrepancy.cpython-310.pyc   |  Bin 3806 -> 0 bytes
 .../__pycache__/discrepancy.cpython-311.pyc   |  Bin 4661 -> 0 bytes
 .../__pycache__/discrepancy.cpython-39.pyc    |  Bin 3869 -> 0 bytes
 .../__pycache__/mcmc.cpython-310.pyc          |  Bin 18924 -> 0 bytes
 .../__pycache__/mcmc.cpython-311.pyc          |  Bin 35893 -> 0 bytes
 .../__pycache__/mcmc.cpython-39.pyc           |  Bin 18959 -> 0 bytes
 .../bayes_inference/bayes_inference.py        | 1532 ------------
 .../bayes_inference/bayes_model_comparison.py |  658 -----
 .../bayes_inference/discrepancy.py            |  103 -
 .../bayesvalidrox/bayes_inference/mcmc.py     |  909 -------
 .../bayesvalidrox/bayesvalidrox.mplstyle      |   16 -
 .../bayesvalidrox/post_processing/__init__.py |    7 -
 .../__pycache__/__init__.cpython-310.pyc      |  Bin 261 -> 0 bytes
 .../__pycache__/__init__.cpython-311.pyc      |  Bin 295 -> 0 bytes
 .../__pycache__/__init__.cpython-39.pyc       |  Bin 326 -> 0 bytes
 .../post_processing.cpython-310.pyc           |  Bin 28679 -> 0 bytes
 .../post_processing.cpython-311.pyc           |  Bin 58838 -> 0 bytes
 .../post_processing.cpython-39.pyc            |  Bin 28771 -> 0 bytes
 .../post_processing/post_processing.py        | 1338 ----------
 .../bayesvalidrox/pylink/__init__.py          |    7 -
 .../__pycache__/__init__.cpython-310.pyc      |  Bin 247 -> 0 bytes
 .../__pycache__/__init__.cpython-311.pyc      |  Bin 281 -> 0 bytes
 .../__pycache__/__init__.cpython-39.pyc       |  Bin 312 -> 0 bytes
 .../pylink/__pycache__/pylink.cpython-310.pyc |  Bin 18654 -> 0 bytes
 .../pylink/__pycache__/pylink.cpython-311.pyc |  Bin 35406 -> 0 bytes
 .../pylink/__pycache__/pylink.cpython-39.pyc  |  Bin 18646 -> 0 bytes
 .../bayesvalidrox/pylink/pylink.py            |  799 ------
 .../surrogate_models/__init__.py              |    7 -
 .../__pycache__/__init__.cpython-310.pyc      |  Bin 258 -> 0 bytes
 .../__pycache__/__init__.cpython-311.pyc      |  Bin 292 -> 0 bytes
 .../__pycache__/__init__.cpython-39.pyc       |  Bin 323 -> 0 bytes
 .../__pycache__/adaptPlot.cpython-311.pyc     |  Bin 4921 -> 0 bytes
 .../apoly_construction.cpython-310.pyc        |  Bin 2815 -> 0 bytes
 .../apoly_construction.cpython-311.pyc        |  Bin 5228 -> 0 bytes
 .../apoly_construction.cpython-39.pyc         |  Bin 2886 -> 0 bytes
 .../__pycache__/bayes_linear.cpython-310.pyc  |  Bin 14412 -> 0 bytes
 .../__pycache__/bayes_linear.cpython-311.pyc  |  Bin 21706 -> 0 bytes
 .../__pycache__/bayes_linear.cpython-39.pyc   |  Bin 14506 -> 0 bytes
 .../__pycache__/engine.cpython-311.pyc        |  Bin 84465 -> 0 bytes
 .../__pycache__/eval_rec_rule.cpython-310.pyc |  Bin 5560 -> 0 bytes
 .../__pycache__/eval_rec_rule.cpython-311.pyc |  Bin 8154 -> 0 bytes
 .../__pycache__/eval_rec_rule.cpython-39.pyc  |  Bin 5648 -> 0 bytes
 .../__pycache__/exp_designs.cpython-310.pyc   |  Bin 17477 -> 0 bytes
 .../__pycache__/exp_designs.cpython-311.pyc   |  Bin 19555 -> 0 bytes
 .../__pycache__/exp_designs.cpython-39.pyc    |  Bin 17597 -> 0 bytes
 .../__pycache__/exp_designs_.cpython-311.pyc  |  Bin 20552 -> 0 bytes
 .../__pycache__/exploration.cpython-310.pyc   |  Bin 8154 -> 0 bytes
 .../__pycache__/exploration.cpython-311.pyc   |  Bin 12405 -> 0 bytes
 .../__pycache__/exploration.cpython-39.pyc    |  Bin 8190 -> 0 bytes
 .../__pycache__/glexindex.cpython-310.pyc     |  Bin 7185 -> 0 bytes
 .../__pycache__/glexindex.cpython-311.pyc     |  Bin 7952 -> 0 bytes
 .../__pycache__/glexindex.cpython-39.pyc      |  Bin 7232 -> 0 bytes
 .../__pycache__/input_space.cpython-311.pyc   |  Bin 16785 -> 0 bytes
 .../__pycache__/inputs.cpython-310.pyc        |  Bin 2413 -> 0 bytes
 .../__pycache__/inputs.cpython-311.pyc        |  Bin 2860 -> 0 bytes
 .../__pycache__/inputs.cpython-39.pyc         |  Bin 2474 -> 0 bytes
 .../__pycache__/loss_function.cpython-311.pyc |  Bin 13488 -> 0 bytes
 .../meta_model_engine.cpython-310.pyc         |  Bin 42392 -> 0 bytes
 .../meta_model_engine.cpython-311.pyc         |  Bin 87304 -> 0 bytes
 .../meta_model_engine.cpython-39.pyc          |  Bin 42705 -> 0 bytes
 ...rthogonal_matching_pursuit.cpython-310.pyc |  Bin 8915 -> 0 bytes
 ...rthogonal_matching_pursuit.cpython-311.pyc |  Bin 14832 -> 0 bytes
 ...orthogonal_matching_pursuit.cpython-39.pyc |  Bin 8930 -> 0 bytes
 .../__pycache__/reg_fast_ard.cpython-310.pyc  |  Bin 11629 -> 0 bytes
 .../__pycache__/reg_fast_ard.cpython-311.pyc  |  Bin 19787 -> 0 bytes
 .../__pycache__/reg_fast_ard.cpython-39.pyc   |  Bin 11717 -> 0 bytes
 .../reg_fast_laplace.cpython-310.pyc          |  Bin 9509 -> 0 bytes
 .../reg_fast_laplace.cpython-311.pyc          |  Bin 19040 -> 0 bytes
 .../reg_fast_laplace.cpython-39.pyc           |  Bin 9581 -> 0 bytes
 .../sequential_design.cpython-311.pyc         |  Bin 87535 -> 0 bytes
 .../surrogate_models.cpython-310.pyc          |  Bin 35103 -> 0 bytes
 .../surrogate_models.cpython-311.pyc          |  Bin 61708 -> 0 bytes
 .../surrogate_models.cpython-39.pyc           |  Bin 35188 -> 0 bytes
 .../surrogate_models/adaptPlot.py             |  109 -
 .../surrogate_models/apoly_construction.py    |  124 -
 .../surrogate_models/bayes_linear.py          |  523 ----
 .../bayesvalidrox/surrogate_models/engine.py  | 2195 -----------------
 .../surrogate_models/eval_rec_rule.py         |  197 --
 .../surrogate_models/exp_designs.py           |  493 ----
 .../surrogate_models/exploration.py           |  364 ---
 .../surrogate_models/glexindex.py             |  161 --
 .../surrogate_models/input_space.py           |  395 ---
 .../bayesvalidrox/surrogate_models/inputs.py  |   76 -
 .../orthogonal_matching_pursuit.py            |  366 ---
 .../surrogate_models/reg_fast_ard.py          |  475 ----
 .../surrogate_models/reg_fast_laplace.py      |  452 ----
 .../surrogate_models/sequential_design.py     | 2187 ----------------
 .../surrogate_models/surrogate_models.py      | 1473 -----------
 .../test_umbridge.py                          |  183 --
 .../test_umbridge_testmodel.py                |   80 -
 .../testmodel.py                              |   18 -
 .../tsunami_model.py                          |   18 -
 .../tsunami_model1.py                         |   16 -
 .../bayesvalidrox/__init__.py                 |   25 -
 .../__pycache__/__init__.cpython-310.pyc      |  Bin 795 -> 0 bytes
 .../__pycache__/__init__.cpython-311.pyc      |  Bin 968 -> 0 bytes
 .../__pycache__/__init__.cpython-39.pyc       |  Bin 860 -> 0 bytes
 .../bayesvalidrox/bayes_inference/__init__.py |    9 -
 .../__pycache__/__init__.cpython-310.pyc      |  Bin 303 -> 0 bytes
 .../__pycache__/__init__.cpython-311.pyc      |  Bin 354 -> 0 bytes
 .../__pycache__/__init__.cpython-39.pyc       |  Bin 368 -> 0 bytes
 .../bayes_inference.cpython-310.pyc           |  Bin 31276 -> 0 bytes
 .../bayes_inference.cpython-311.pyc           |  Bin 60952 -> 0 bytes
 .../bayes_inference.cpython-39.pyc            |  Bin 31419 -> 0 bytes
 .../bayes_model_comparison.cpython-310.pyc    |  Bin 15645 -> 0 bytes
 .../bayes_model_comparison.cpython-311.pyc    |  Bin 27157 -> 0 bytes
 .../bayes_model_comparison.cpython-39.pyc     |  Bin 15716 -> 0 bytes
 .../__pycache__/discrepancy.cpython-310.pyc   |  Bin 3806 -> 0 bytes
 .../__pycache__/discrepancy.cpython-311.pyc   |  Bin 4661 -> 0 bytes
 .../__pycache__/discrepancy.cpython-39.pyc    |  Bin 3869 -> 0 bytes
 .../__pycache__/mcmc.cpython-310.pyc          |  Bin 18924 -> 0 bytes
 .../__pycache__/mcmc.cpython-311.pyc          |  Bin 35893 -> 0 bytes
 .../__pycache__/mcmc.cpython-39.pyc           |  Bin 18959 -> 0 bytes
 .../bayes_inference/bayes_inference.py        | 1532 ------------
 .../bayes_inference/bayes_model_comparison.py |  658 -----
 .../bayes_inference/discrepancy.py            |  103 -
 .../bayesvalidrox/bayes_inference/mcmc.py     |  909 -------
 .../bayesvalidrox/bayesvalidrox.mplstyle      |   16 -
 .../bayesvalidrox/post_processing/__init__.py |    7 -
 .../__pycache__/__init__.cpython-310.pyc      |  Bin 261 -> 0 bytes
 .../__pycache__/__init__.cpython-311.pyc      |  Bin 295 -> 0 bytes
 .../__pycache__/__init__.cpython-39.pyc       |  Bin 326 -> 0 bytes
 .../post_processing.cpython-310.pyc           |  Bin 28679 -> 0 bytes
 .../post_processing.cpython-311.pyc           |  Bin 58838 -> 0 bytes
 .../post_processing.cpython-39.pyc            |  Bin 28771 -> 0 bytes
 .../post_processing/post_processing.py        | 1338 ----------
 .../bayesvalidrox/pylink/__init__.py          |    7 -
 .../__pycache__/__init__.cpython-310.pyc      |  Bin 247 -> 0 bytes
 .../__pycache__/__init__.cpython-311.pyc      |  Bin 281 -> 0 bytes
 .../__pycache__/__init__.cpython-39.pyc       |  Bin 312 -> 0 bytes
 .../pylink/__pycache__/pylink.cpython-310.pyc |  Bin 18654 -> 0 bytes
 .../pylink/__pycache__/pylink.cpython-311.pyc |  Bin 35776 -> 0 bytes
 .../pylink/__pycache__/pylink.cpython-39.pyc  |  Bin 18646 -> 0 bytes
 .../bayesvalidrox/pylink/pylink.py            |  797 ------
 .../surrogate_models/__init__.py              |    7 -
 .../__pycache__/__init__.cpython-310.pyc      |  Bin 258 -> 0 bytes
 .../__pycache__/__init__.cpython-311.pyc      |  Bin 292 -> 0 bytes
 .../__pycache__/__init__.cpython-39.pyc       |  Bin 323 -> 0 bytes
 .../__pycache__/adaptPlot.cpython-311.pyc     |  Bin 4921 -> 0 bytes
 .../apoly_construction.cpython-310.pyc        |  Bin 2815 -> 0 bytes
 .../apoly_construction.cpython-311.pyc        |  Bin 5228 -> 0 bytes
 .../apoly_construction.cpython-39.pyc         |  Bin 2886 -> 0 bytes
 .../__pycache__/bayes_linear.cpython-310.pyc  |  Bin 14412 -> 0 bytes
 .../__pycache__/bayes_linear.cpython-311.pyc  |  Bin 21706 -> 0 bytes
 .../__pycache__/bayes_linear.cpython-39.pyc   |  Bin 14506 -> 0 bytes
 .../__pycache__/engine.cpython-311.pyc        |  Bin 84465 -> 0 bytes
 .../__pycache__/eval_rec_rule.cpython-310.pyc |  Bin 5560 -> 0 bytes
 .../__pycache__/eval_rec_rule.cpython-311.pyc |  Bin 8154 -> 0 bytes
 .../__pycache__/eval_rec_rule.cpython-39.pyc  |  Bin 5648 -> 0 bytes
 .../__pycache__/exp_designs.cpython-310.pyc   |  Bin 17477 -> 0 bytes
 .../__pycache__/exp_designs.cpython-311.pyc   |  Bin 19555 -> 0 bytes
 .../__pycache__/exp_designs.cpython-39.pyc    |  Bin 17597 -> 0 bytes
 .../__pycache__/exp_designs_.cpython-311.pyc  |  Bin 20552 -> 0 bytes
 .../__pycache__/exploration.cpython-310.pyc   |  Bin 8154 -> 0 bytes
 .../__pycache__/exploration.cpython-311.pyc   |  Bin 12405 -> 0 bytes
 .../__pycache__/exploration.cpython-39.pyc    |  Bin 8190 -> 0 bytes
 .../__pycache__/glexindex.cpython-310.pyc     |  Bin 7185 -> 0 bytes
 .../__pycache__/glexindex.cpython-311.pyc     |  Bin 7952 -> 0 bytes
 .../__pycache__/glexindex.cpython-39.pyc      |  Bin 7232 -> 0 bytes
 .../__pycache__/input_space.cpython-311.pyc   |  Bin 16785 -> 0 bytes
 .../__pycache__/inputs.cpython-310.pyc        |  Bin 2413 -> 0 bytes
 .../__pycache__/inputs.cpython-311.pyc        |  Bin 2860 -> 0 bytes
 .../__pycache__/inputs.cpython-39.pyc         |  Bin 2474 -> 0 bytes
 .../__pycache__/loss_function.cpython-311.pyc |  Bin 13488 -> 0 bytes
 .../meta_model_engine.cpython-310.pyc         |  Bin 42392 -> 0 bytes
 .../meta_model_engine.cpython-311.pyc         |  Bin 87304 -> 0 bytes
 .../meta_model_engine.cpython-39.pyc          |  Bin 42705 -> 0 bytes
 ...rthogonal_matching_pursuit.cpython-310.pyc |  Bin 8915 -> 0 bytes
 ...rthogonal_matching_pursuit.cpython-311.pyc |  Bin 14832 -> 0 bytes
 ...orthogonal_matching_pursuit.cpython-39.pyc |  Bin 8930 -> 0 bytes
 .../__pycache__/reg_fast_ard.cpython-310.pyc  |  Bin 11629 -> 0 bytes
 .../__pycache__/reg_fast_ard.cpython-311.pyc  |  Bin 19787 -> 0 bytes
 .../__pycache__/reg_fast_ard.cpython-39.pyc   |  Bin 11717 -> 0 bytes
 .../reg_fast_laplace.cpython-310.pyc          |  Bin 9509 -> 0 bytes
 .../reg_fast_laplace.cpython-311.pyc          |  Bin 19040 -> 0 bytes
 .../reg_fast_laplace.cpython-39.pyc           |  Bin 9581 -> 0 bytes
 .../sequential_design.cpython-311.pyc         |  Bin 87535 -> 0 bytes
 .../surrogate_models.cpython-310.pyc          |  Bin 35103 -> 0 bytes
 .../surrogate_models.cpython-311.pyc          |  Bin 61708 -> 0 bytes
 .../surrogate_models.cpython-39.pyc           |  Bin 35188 -> 0 bytes
 .../surrogate_models/adaptPlot.py             |  109 -
 .../surrogate_models/apoly_construction.py    |  124 -
 .../surrogate_models/bayes_linear.py          |  523 ----
 .../bayesvalidrox/surrogate_models/engine.py  | 2195 -----------------
 .../surrogate_models/eval_rec_rule.py         |  197 --
 .../surrogate_models/exp_designs.py           |  493 ----
 .../surrogate_models/exploration.py           |  364 ---
 .../surrogate_models/glexindex.py             |  161 --
 .../surrogate_models/input_space.py           |  395 ---
 .../bayesvalidrox/surrogate_models/inputs.py  |   76 -
 .../orthogonal_matching_pursuit.py            |  366 ---
 .../surrogate_models/reg_fast_ard.py          |  475 ----
 .../surrogate_models/reg_fast_laplace.py      |  452 ----
 .../surrogate_models/sequential_design.py     | 2187 ----------------
 .../surrogate_models/surrogate_models.py      | 1473 -----------
 src/bayesvalidrox/pylink/pylink.py            |   14 +-
 .../surrogate_models/surrogate_models.py      |   97 +-
 tests/test_MetaModel.py                       |   18 +
 284 files changed, 416 insertions(+), 30325 deletions(-)
 delete mode 100644 .coverage
 create mode 100644 .coverage.DESKTOP-ATMEKSV.10616.XTfwDWtx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.12272.XtVlLrXx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.12632.XFsLVCEx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.12712.XTfzFmnx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.12824.XsNQEeax
 create mode 100644 .coverage.DESKTOP-ATMEKSV.13164.XMerVQGx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.14180.XbsXbgvx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.14476.XuUyQWDx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.14520.XbJgzpTx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.14712.XMgYrQCx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.15144.XkcHTkix
 create mode 100644 .coverage.DESKTOP-ATMEKSV.15284.XMONvZEx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.15440.XIuChHnx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.16012.XGeLQTlx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.17012.XcDINRSx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.18500.XGbXmSjx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.18844.XDPLaYqx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.19440.XUospmUx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.19500.XYuOMLJx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.20080.XqjMBHMx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.20784.XvtbIeRx
 delete mode 100644 .coverage.DESKTOP-ATMEKSV.21516.XyAVyWNx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.22012.XZkqdGCx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.22436.XLHoKASx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.22632.XQfiQacx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.22836.XaSNeVKx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.22988.XTBOmFhx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.23568.XYxMRfbx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.23860.XYIorGax
 create mode 100644 .coverage.DESKTOP-ATMEKSV.24016.XyQmgPnx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.24380.XNVSylrx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.24560.XYUIvLux
 create mode 100644 .coverage.DESKTOP-ATMEKSV.24800.XXnYmDJx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.25428.XVVrZIbx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.26276.XmpaSHVx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.26332.XgxWdWdx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.26388.XIWhjYox
 create mode 100644 .coverage.DESKTOP-ATMEKSV.26448.XEujWYRx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.26780.XoqRisNx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.27032.XbZUsCZx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.27288.XZlyvVqx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.27372.XepoDlGx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.28092.XXuBidHx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.28420.XDzinShx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.28452.XeVLFCHx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.28556.XrWyCSOx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.28620.XTgkXKsx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.28764.XdZVRgcx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.29316.XAELrPgx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.29508.XebbGpLx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.29692.XbSwKvzx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.29708.XxOJAAMx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.29716.XPHrvILx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.29800.XEZtVFex
 create mode 100644 .coverage.DESKTOP-ATMEKSV.30072.XoxDTLSx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.30104.XgFimZxx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.30364.XLrThOtx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.30652.XXqFtKkx
 delete mode 100644 .coverage.DESKTOP-ATMEKSV.32204.XCbTXmgx
 delete mode 100644 .coverage.DESKTOP-ATMEKSV.36684.XKrSwPEx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.4220.XvYRULHx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.6072.XZIEcISx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.6276.XTHKMAtx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.8092.XHklueAx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.8348.XnOVMQzx
 create mode 100644 .coverage.DESKTOP-ATMEKSV.8736.XGwoASwx
 create mode 100644 Outputs_Bayes_None_Calib/emcee_sampler.h5
 create mode 100644 Outputs_SeqPosteriorComparison/posterior/Z.npy
 create mode 100644 examples/convergence_tests/convergence_test.py
 create mode 100644 examples/convergence_tests/example_trainingconvergence.py
 create mode 100644 examples/convergence_tests/testfunction.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__init__.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__pycache__/__init__.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__pycache__/__init__.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__pycache__/__init__.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__init__.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/bayes_inference.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/bayes_model_comparison.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/discrepancy.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/mcmc.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayesvalidrox.mplstyle
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__init__.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/__init__.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/__init__.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/__init__.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/post_processing.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__init__.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/__init__.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/__init__.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/__init__.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/pylink.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/pylink.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/pylink.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/pylink.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__init__.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/adaptPlot.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/engine.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs_.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/input_space.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/loss_function.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/sequential_design.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/adaptPlot.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/apoly_construction.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/bayes_linear.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/engine.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/eval_rec_rule.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/exp_designs.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/exploration.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/glexindex.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/input_space.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/inputs.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/orthogonal_matching_pursuit.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/reg_fast_ard.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/reg_fast_laplace.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/sequential_design.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/surrogate_models.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/test_umbridge.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/test_umbridge_testmodel.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/testmodel.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/tsunami_model.py
 delete mode 100644 examples/umbridge_tsunamitutorial - Copy/tsunami_model1.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/__init__.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/__pycache__/__init__.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/__pycache__/__init__.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/__pycache__/__init__.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__init__.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/bayes_inference.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/bayes_model_comparison.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/discrepancy.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/mcmc.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/bayesvalidrox.mplstyle
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__init__.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/__init__.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/__init__.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/__init__.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/post_processing.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__init__.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/__init__.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/__init__.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/__init__.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/pylink.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/pylink.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/pylink.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/pylink.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__init__.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/adaptPlot.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/engine.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs_.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/input_space.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/loss_function.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/sequential_design.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-310.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-311.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-39.pyc
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/adaptPlot.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/apoly_construction.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/bayes_linear.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/engine.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/eval_rec_rule.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/exp_designs.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/exploration.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/glexindex.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/input_space.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/inputs.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/orthogonal_matching_pursuit.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/reg_fast_ard.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/reg_fast_laplace.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/sequential_design.py
 delete mode 100644 examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/surrogate_models.py

diff --git a/.coverage b/.coverage
deleted file mode 100644
index e0d3c5dd968abbcd19e4a6ac381bc5572b7a3059..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 53248
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

diff --git a/.coverage.DESKTOP-ATMEKSV.10616.XTfwDWtx b/.coverage.DESKTOP-ATMEKSV.10616.XTfwDWtx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.12272.XtVlLrXx b/.coverage.DESKTOP-ATMEKSV.12272.XtVlLrXx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.12632.XFsLVCEx b/.coverage.DESKTOP-ATMEKSV.12632.XFsLVCEx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.12712.XTfzFmnx b/.coverage.DESKTOP-ATMEKSV.12712.XTfzFmnx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.12824.XsNQEeax b/.coverage.DESKTOP-ATMEKSV.12824.XsNQEeax
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.13164.XMerVQGx b/.coverage.DESKTOP-ATMEKSV.13164.XMerVQGx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.14180.XbsXbgvx b/.coverage.DESKTOP-ATMEKSV.14180.XbsXbgvx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.14476.XuUyQWDx b/.coverage.DESKTOP-ATMEKSV.14476.XuUyQWDx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.14520.XbJgzpTx b/.coverage.DESKTOP-ATMEKSV.14520.XbJgzpTx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.14712.XMgYrQCx b/.coverage.DESKTOP-ATMEKSV.14712.XMgYrQCx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.15144.XkcHTkix b/.coverage.DESKTOP-ATMEKSV.15144.XkcHTkix
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.15284.XMONvZEx b/.coverage.DESKTOP-ATMEKSV.15284.XMONvZEx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.15440.XIuChHnx b/.coverage.DESKTOP-ATMEKSV.15440.XIuChHnx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.16012.XGeLQTlx b/.coverage.DESKTOP-ATMEKSV.16012.XGeLQTlx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.17012.XcDINRSx b/.coverage.DESKTOP-ATMEKSV.17012.XcDINRSx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.18500.XGbXmSjx b/.coverage.DESKTOP-ATMEKSV.18500.XGbXmSjx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.18844.XDPLaYqx b/.coverage.DESKTOP-ATMEKSV.18844.XDPLaYqx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.19440.XUospmUx b/.coverage.DESKTOP-ATMEKSV.19440.XUospmUx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.19500.XYuOMLJx b/.coverage.DESKTOP-ATMEKSV.19500.XYuOMLJx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.20080.XqjMBHMx b/.coverage.DESKTOP-ATMEKSV.20080.XqjMBHMx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.20784.XvtbIeRx b/.coverage.DESKTOP-ATMEKSV.20784.XvtbIeRx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.21516.XyAVyWNx b/.coverage.DESKTOP-ATMEKSV.21516.XyAVyWNx
deleted file mode 100644
index 00020484238401dae7e558e5d5f97fb6fd041d2d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8192
zcmeI#%WA?v7zN-N5ek7)cU^jxEnYT#0aM9ND7LOEQU90$&A?=;YhSld;h&Uj+;lJJ
zFhe-ZCGhR$Yq@YyQ221nBi_uwSZij0F~;ib>Fm<<epmF{^#5YbwD^70UH0kQ=wK*7
z0SZun0u-PC1t>rP3Q&LocPMZf+K1=S$X<S8zB$O&pCsgaS=ZZAj`>aP%|Ekrm0^{>
zFEZRL;w6D*GQmeB2>v`q^ay%o*ddkzy}5S2f-l<o_XoI2o2#+gOxyF_E>}g_OGsXu
fx4Az0846H<0u-PC1t>rP3Q&Lo6rcbF?pWXo?EXFK

diff --git a/.coverage.DESKTOP-ATMEKSV.22012.XZkqdGCx b/.coverage.DESKTOP-ATMEKSV.22012.XZkqdGCx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.22436.XLHoKASx b/.coverage.DESKTOP-ATMEKSV.22436.XLHoKASx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.22632.XQfiQacx b/.coverage.DESKTOP-ATMEKSV.22632.XQfiQacx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.22836.XaSNeVKx b/.coverage.DESKTOP-ATMEKSV.22836.XaSNeVKx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.22988.XTBOmFhx b/.coverage.DESKTOP-ATMEKSV.22988.XTBOmFhx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.23568.XYxMRfbx b/.coverage.DESKTOP-ATMEKSV.23568.XYxMRfbx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.23860.XYIorGax b/.coverage.DESKTOP-ATMEKSV.23860.XYIorGax
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.24016.XyQmgPnx b/.coverage.DESKTOP-ATMEKSV.24016.XyQmgPnx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.24380.XNVSylrx b/.coverage.DESKTOP-ATMEKSV.24380.XNVSylrx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.24560.XYUIvLux b/.coverage.DESKTOP-ATMEKSV.24560.XYUIvLux
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.24800.XXnYmDJx b/.coverage.DESKTOP-ATMEKSV.24800.XXnYmDJx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.25428.XVVrZIbx b/.coverage.DESKTOP-ATMEKSV.25428.XVVrZIbx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.26276.XmpaSHVx b/.coverage.DESKTOP-ATMEKSV.26276.XmpaSHVx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.26332.XgxWdWdx b/.coverage.DESKTOP-ATMEKSV.26332.XgxWdWdx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.26388.XIWhjYox b/.coverage.DESKTOP-ATMEKSV.26388.XIWhjYox
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.26448.XEujWYRx b/.coverage.DESKTOP-ATMEKSV.26448.XEujWYRx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.26780.XoqRisNx b/.coverage.DESKTOP-ATMEKSV.26780.XoqRisNx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.27032.XbZUsCZx b/.coverage.DESKTOP-ATMEKSV.27032.XbZUsCZx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.27288.XZlyvVqx b/.coverage.DESKTOP-ATMEKSV.27288.XZlyvVqx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.27372.XepoDlGx b/.coverage.DESKTOP-ATMEKSV.27372.XepoDlGx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.28092.XXuBidHx b/.coverage.DESKTOP-ATMEKSV.28092.XXuBidHx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.28420.XDzinShx b/.coverage.DESKTOP-ATMEKSV.28420.XDzinShx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.28452.XeVLFCHx b/.coverage.DESKTOP-ATMEKSV.28452.XeVLFCHx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.28556.XrWyCSOx b/.coverage.DESKTOP-ATMEKSV.28556.XrWyCSOx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.28620.XTgkXKsx b/.coverage.DESKTOP-ATMEKSV.28620.XTgkXKsx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.28764.XdZVRgcx b/.coverage.DESKTOP-ATMEKSV.28764.XdZVRgcx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.29316.XAELrPgx b/.coverage.DESKTOP-ATMEKSV.29316.XAELrPgx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.29508.XebbGpLx b/.coverage.DESKTOP-ATMEKSV.29508.XebbGpLx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.29692.XbSwKvzx b/.coverage.DESKTOP-ATMEKSV.29692.XbSwKvzx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.29708.XxOJAAMx b/.coverage.DESKTOP-ATMEKSV.29708.XxOJAAMx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.29716.XPHrvILx b/.coverage.DESKTOP-ATMEKSV.29716.XPHrvILx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.29800.XEZtVFex b/.coverage.DESKTOP-ATMEKSV.29800.XEZtVFex
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.30072.XoxDTLSx b/.coverage.DESKTOP-ATMEKSV.30072.XoxDTLSx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.30104.XgFimZxx b/.coverage.DESKTOP-ATMEKSV.30104.XgFimZxx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.30364.XLrThOtx b/.coverage.DESKTOP-ATMEKSV.30364.XLrThOtx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.30652.XXqFtKkx b/.coverage.DESKTOP-ATMEKSV.30652.XXqFtKkx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.32204.XCbTXmgx b/.coverage.DESKTOP-ATMEKSV.32204.XCbTXmgx
deleted file mode 100644
index 7bbc0492e89f5b6036087acc5429a3437d52f490..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 16384
zcmeI%&u`i=6bJAGrgcI>^n%b%dpC+&kfz<X!`5ybrd47;&@PjP40(XHByM9v%dy&F
z|LgvW`6UfuOzM5;8z~_#cAlR<@x|iHr%Uaa<|a#&qZh$(5Qf1Uq96!r{(R)m^4O2V
zvf+W>S}>UZZnnM#_2wvOeQ%Ch{ReuZ2?7v+00bZa0SG_<0uX?}|0D48TkWXRZil~~
zIyH?sVW;G*zx_Ns9}j7KesMV@c|s=*@<+c<A9&MWt9Zq9rF3S`$QjCbX0j;n7%AUb
zP0h-YTQW(QzxjhV<oMQ|<x!EKidU(=_8CunuU<LOM`Nw_MUj7KUzSg)yHs|fvYGAD
z)R>r6Duv~xy|;c$ZSz6zYtre0rkP4-OSZ489Cjl)7VB<aQ<0#^G4@5z%$hT`keeh?
zX+*J3*{Ak9&SIt<Z6`OVlKPjdHtAkYF_WbCtz_og{DUiRB3Tm^Nq)bt)iLj6yjk);
z>54MnDaTGHOwwihD%~hcvy6RXG-&j?^~ar8?J&@3#JBc3_B-c^S~-))6Zx!@=W>-@
z^AlOLchAD3&gp4*x5}48=`gXLFHw78?XN|$*I2EWk*CYd&F(spneK2%Sd2hg<|1Ek
zS}2sgbn1A)S)<pKGLPkg0|F3$00bZa0SG_<0uX=z1Rwx`LlwaO|4_dy<^=%=KmY;|
ufB*y_009U<00I!G1R8RS|Nkox+(7^W5P$##AOHafKmY;|fB*yzP~Z=)jN9@6

diff --git a/.coverage.DESKTOP-ATMEKSV.36684.XKrSwPEx b/.coverage.DESKTOP-ATMEKSV.36684.XKrSwPEx
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.4220.XvYRULHx b/.coverage.DESKTOP-ATMEKSV.4220.XvYRULHx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.6072.XZIEcISx b/.coverage.DESKTOP-ATMEKSV.6072.XZIEcISx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.6276.XTHKMAtx b/.coverage.DESKTOP-ATMEKSV.6276.XTHKMAtx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.8092.XHklueAx b/.coverage.DESKTOP-ATMEKSV.8092.XHklueAx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.8348.XnOVMQzx b/.coverage.DESKTOP-ATMEKSV.8348.XnOVMQzx
new file mode 100644
index 000000000..e69de29bb
diff --git a/.coverage.DESKTOP-ATMEKSV.8736.XGwoASwx b/.coverage.DESKTOP-ATMEKSV.8736.XGwoASwx
new file mode 100644
index 000000000..e69de29bb
diff --git a/Outputs_Bayes_None_Calib/emcee_sampler.h5 b/Outputs_Bayes_None_Calib/emcee_sampler.h5
new file mode 100644
index 0000000000000000000000000000000000000000..5f687b4869be7ca86bec96c8a797a2e33b6ffd55
GIT binary patch
literal 3281440
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%0Ar7K8?;*5UtOKlC^HgrfQkTokT!5i}^qOq(@Z
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%0A<kyK>vhR;#@wUhI
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
zK!5-N0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&U
zAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~Qp
zKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~QpKLSsb009C7
z2oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk
z1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYb
zC}R>JK!5-N0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N
z0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7cs
zfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~QpKLSsb
z009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~QpKLSsb009C72oNAZ
zfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|
zp#LYbC}R>JK!5-N0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>J
zK!5-N0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&U
zAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~Qp
zKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~QpKLSsb009C7
z2oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk
z1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYb
zC}R>JK!5-N0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N
z0t5&UAV7csfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7cs
zfd~QpKLSsb009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfd~QpKLSsb
s009C72oNAZfB*pk1PCM|p#LYbC}R>JK!5-N0t5&UAV7csfe3+r0r!$8)c^nh

literal 0
HcmV?d00001

diff --git a/Outputs_SeqPosteriorComparison/posterior/Z.npy b/Outputs_SeqPosteriorComparison/posterior/Z.npy
new file mode 100644
index 0000000000000000000000000000000000000000..8d89efa6714257ec2d867aa5eb95b7f23b915010
GIT binary patch
literal 176
zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh=
qXCxM+0{I%oItoUbItsN4WCJb+G%#x>2<)_n2!F7L@J~Yd59|R^<R<I@

literal 0
HcmV?d00001

diff --git a/examples/convergence_tests/convergence_test.py b/examples/convergence_tests/convergence_test.py
new file mode 100644
index 000000000..95fded1e4
--- /dev/null
+++ b/examples/convergence_tests/convergence_test.py
@@ -0,0 +1,103 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+import numpy as np
+import math
+import os
+import matplotlib.pyplot as plt
+import time
+# Load the mplstyle
+#plt.style.use(os.path.join(os.path.split(__file__)[0],
+#                           '../', 'bayesvalidrox.mplstyle'))
+
+
+def convergence_test(engine, steps, error, train_samples, test_samples, test_data, plot = True, write = True, Engine = False):
+    """
+    Tests the convergence for a metamodel over the number of given training 
+    samples in its experimental design.
+    The results are written out and plotted.
+    
+    Conditions: 
+        if data is not given, then arbitrary samples will be chosen to run the model on
+
+    Parameters
+    ----------
+    MetaModel : TYPE
+        DESCRIPTION.
+        
+    model : 
+        
+    steps : list of ints in increasing order
+        The number of samples to train on per iteration
+        
+    error : function(test_mean, test_std, test_data)
+        The function ued to calculate the accuracy of the surrogate, e.g. the L2-norm
+
+    Returns
+    -------
+    None.
+
+    """
+    print('')
+    print('STARTING THE CONVERGENCE TEST')
+    # Define output lists
+    engines = []
+    test_runs = {}
+    test_runs['mean'] = []
+    test_runs['std']=[]
+    accuracy = {}
+    
+    for n in steps:
+        print('')
+        print(f'---- {n} TRAINING POINTS ----')
+        print('')
+        samples = train_samples[:n]
+        
+        # Redo the explerimental design
+        engine.ExpDesign.method = 'normal'
+        engine.ExpDesign.n_init_samples = n
+        engine.ExpDesign.sampling_method = 'user'
+        engine.ExpDesign.X = samples
+        engine.ExpDesign.Y = None
+        engine.start_engine()
+        
+        # Train and evaluate
+        start = time.time()
+        engine.train_normal()
+        end = time.time()
+        
+        print('')
+        print('Evaluating the metamodel')
+        surrogate = engine.MetaModel
+        test_mean, test_std = surrogate.eval_metamodel(test_samples)
+        
+        # Add the results
+        engines.append(engine)
+        test_runs['mean'].append(test_mean)
+        test_runs['std'].append(test_std)
+        
+        # Add training time
+        if 'time' not in accuracy.keys():
+            accuracy['time'] = []
+        accuracy['time'].append(end-start)
+        
+        # Add error measures
+        er = error(test_mean, test_std, test_data)
+        for key in er:
+            if key not in accuracy.keys():
+                accuracy[key] = []
+            accuracy[key].append(er[key])
+    
+    # Save the results?
+    if write:
+        None
+    
+    # Plot the results
+    for key in accuracy:
+        if plot: 
+            plt.plot(steps, accuracy[key], linestyle = 'dashed')
+            plt.scatter(steps, accuracy[key], label = key)
+            plt.legend()
+            plt.show()
+        
+    return engines, accuracy
diff --git a/examples/convergence_tests/example_trainingconvergence.py b/examples/convergence_tests/example_trainingconvergence.py
new file mode 100644
index 000000000..f9314ab1f
--- /dev/null
+++ b/examples/convergence_tests/example_trainingconvergence.py
@@ -0,0 +1,179 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+import numpy as np
+import math
+import os
+import matplotlib.pyplot as plt
+# Load the mplstyle
+#plt.style.use(os.path.join(os.path.split(__file__)[0],
+#                           '../', 'bayesvalidrox.mplstyle'))
+
+#import pandas as pd
+import random
+
+# Import all from the 'original' bvr
+import bayesvalidrox as bv
+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
+import bayesvalidrox.surrogate_models.surrogate_models as sm
+
+from convergence_test import convergence_test
+from testfunction import testfunction
+
+def error(mean, std, true):
+    """
+    Error function to evaluate the metamodels
+    Returns a dictionary of measures.
+    Here:
+        'L2': standard L2 error
+
+    Parameters
+    ----------
+    mean : dict
+        Mean-part of surrogate evaluation
+    std : dict
+        Std-part of surrogate evaluation
+    true : dict
+        Mean-part of model evaluation
+
+    Returns
+    -------
+    dict
+        Results of error measures
+
+    """
+    m = mean['Z']
+    t = true['Z']
+    diff = m-t
+    return {'L2': np.linalg.norm(diff)}
+    
+    
+if __name__=="__main__":
+    random.seed(15)
+
+    # Some model properties and settings
+    t = np.linspace(0,10,10)
+    ndim = 2
+    
+    # Plot some evaluations of the model 
+    xx, yy = np.meshgrid(np.linspace(0,1,10),np.linspace(0,1,10))
+    x = np.swapaxes(np.vstack([ xx.reshape(-1), yy.reshape(-1) ]),0,1)
+    out_list = []
+    for x_ in x:
+        out_list.append(test_function([x_],t)['Z'])
+    out = np.array(out_list)
+    mean_out = np.mean(out, axis = 0)
+    std_out = np.std(out, axis = 0)
+    
+    for i in out:
+        plt.plot(t,i,alpha = 0.2, color = 'blue')
+    plt.show()
+    plt.plot(t, mean_out)
+    plt.show()
+    plt.plot(t, std_out)
+    plt.show()
+    
+    # Define the model
+    Model = PyLinkForwardModel()
+    Model.link_type = 'Function'
+    Model.py_file = 'testfunction'
+    Model.name = 'testfunction'
+    Model.Output.names = ['Z']
+    Model.func_args = {'t':t}
+
+    # Define the uncertain parameters with their mean and
+    # standard deviation
+    Inputs = Input()
+    priors = []
+    for i in range(ndim):
+        Inputs.add_marginals()
+        Inputs.Marginals[i].name = "$\\theta_{"+str(i+1)+"}$"
+        Inputs.Marginals[i].dist_type = 'uniform'
+        Inputs.Marginals[i].parameters = [0, 1]
+        priors.append(np.random.uniform(0,1,1000))
+    priors= np.swapaxes(np.array(priors),0,1)
+    
+    
+    # Parameters for the convergence test
+    mini = 2**ndim
+    steps = [10,20,50]
+    steps = [mini, 6, 8, 10, 15,20,25,30,35,40,50]
+    
+    # Get the samples and model evaluations
+    train_samples = priors[:steps[-1]]
+    test_samples = priors[steps[-1]:]
+    test_data, test_std = Model.run_model_parallel(test_samples, mp = False)
+    
+#%% RUN THE SURROGATES ON THE FIRST BVR CODE
+
+    # Set the surrogate parameters    
+    MetaMod = sm.MetaModel(Inputs)
+    MetaMod.meta_model_type = 'aPCE'
+    MetaMod.pce_reg_method = 'FastARD'
+    MetaMod.bootstrap_method = 'fast'
+    MetaMod.n_bootstrap_itrs = 1
+    MetaMod.pce_deg = np.arange(1,2)
+    MetaMod.pce_q_norm = 0.85 if ndim < 5 else 0.5
+    
+    # Properties for Physics-informed training
+    #MetaMod.LAR = True
+    MetaMod.apply_constraints = False
+    
+    # Init ExpDesign
+    ExpDesign = ExpDesigns(Inputs)
+    
+    # Start engine
+    engine = Engine(MetaMod, Model, ExpDesign)
+
+    # Run the convergence test
+    results_FastArd = convergence_test(engine, steps, error, train_samples, test_samples, test_data)
+    
+    # Change the loss function base-type
+    new_type = 'ols'
+    engine.MetaModel.pce_reg_method = new_type
+    results_OLS = convergence_test(engine, steps, error, train_samples, test_samples, test_data)
+    
+    # Do OLS with Constraints
+    # The actual constraints can be found and changed in bayesvalidrox.surrogate_models.MetaModel.regression()
+    engine.MetaModel.apply_constraints = True
+    engine.MetaModel.init_type = 'zeros'
+    results_PI_0rand = convergence_test(engine, steps, error, train_samples, test_samples, test_data)
+    
+    # Plot all the results
+    # Plot the results
+    for key in results_FastArd[1]:
+        plt.plot(steps, results_OLS[1][key], linestyle = 'dashdot')
+        plt.scatter(steps, results_OLS[1][key], label = 'OLS')
+        plt.plot(steps, results_FastArd[1][key], linestyle = 'dashed')
+        plt.scatter(steps, results_FastArd[1][key], label = 'FastARD')
+        plt.plot(steps, results_PI_0rand[1][key], linestyle = 'dotted')
+        plt.scatter(steps, results_PI_0rand[1][key], label = 'constrained')
+        plt.legend()
+        plt.title(f'Results for {key}')
+        plt.show()
+        
+    # Test statistics
+    meanOLS, test_std = results_OLS[0][-1].eval_metamodel(test_samples)
+    meanARD, test_std = results_FastArd[0][-1].eval_metamodel(test_samples)
+    meanPI, test_std = results_PI_0rand[0][-1].eval_metamodel(test_samples)
+    
+    # Plot test statistics
+    plt.plot(t, np.mean(meanOLS['Z'], axis = 0), label = 'OLS', linestyle = 'dashdot')
+    plt.plot(t, np.mean(meanARD['Z'], axis = 0), label = 'FastARD', linestyle = 'dashed')
+    plt.plot(t, np.mean(meanPI['Z'], axis = 0), label = 'constrained', linestyle = 'dotted')
+    plt.plot(t, mean_out, label = 'data')
+    plt.title('Approximation of mean')
+    plt.legend()
+    plt.show()
+    plt.plot(t, np.std(meanOLS['Z'], axis = 0), label = 'OLS', linestyle = 'dashdot')
+    plt.plot(t, np.std(meanARD['Z'], axis = 0), label = 'FastARD', linestyle = 'dashed')
+    plt.plot(t, np.std(meanPI['Z'], axis = 0), label = 'constrained', linestyle = 'dotted')
+    plt.plot(t, std_out, label = 'data')
+    plt.title('Approximation of std')
+    plt.legend()
+    plt.show()
+ 
+    
\ No newline at end of file
diff --git a/examples/convergence_tests/testfunction.py b/examples/convergence_tests/testfunction.py
new file mode 100644
index 000000000..9b79f62ec
--- /dev/null
+++ b/examples/convergence_tests/testfunction.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Tue Nov 28 14:33:57 2023
+
+@author: rkohlhaas
+"""
+import numpy as np
+
+def testfunction(x, t): 
+    def sig(x):
+        return 1/(1 + np.exp(-x))
+    # X is 2d array
+    x = x[0]
+    out = 30-np.sqrt(t*(x[1]+0.00000001))-x[0]*t-2*np.log(t+1)+x[0]/3-10*x[1]*np.tanh(t-5) -7/(x[0]+0.1)*x[1]*sig(t-9)
+    #out = -10*sig(t-8)
+    out /= 40
+    return {'x_values': t, 'Z': out}
\ No newline at end of file
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__init__.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__init__.py
deleted file mode 100644
index 8e865af80..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__init__.py	
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-__version__ = "0.0.5"
-
-from .pylink.pylink import PyLinkForwardModel
-from .surrogate_models.surrogate_models import MetaModel
-#from .surrogate_models.meta_model_engine import MetaModelEngine
-from .surrogate_models.engine import Engine
-from .surrogate_models.inputs import Input
-from .post_processing.post_processing import PostProcessing
-from .bayes_inference.bayes_inference import BayesInference
-from .bayes_inference.bayes_model_comparison import BayesModelComparison
-from .bayes_inference.discrepancy import Discrepancy
-
-__all__ = [
-    "__version__",
-    "PyLinkForwardModel",
-    "Input",
-    "Discrepancy",
-    "MetaModel",
-    #"MetaModelEngine",
-    "Engine",
-    "PostProcessing",
-    "BayesInference",
-    "BayesModelComparison"
-    ]
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__pycache__/__init__.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index beaab3c798a63fcfbc361982388fdf10830a787e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 795
zcmZWn%Wl*#6m>Gm%w#4reNc%7iwY!=W|MT&9YUy-LJ>tHAvWGvZenJv`VrYl%kVku
z_$5oMSn&(2uy5%A!BI}mJ-L3IBkS30g8WGCJ!aoxguaL3@8LD{+`qQ*P$P`$sE$P>
zV;o0;55zzwI02rBR1WbFcq&G6jK{!-B9jw50X`B_nd2PzSj^-c&w*!RNABX?2(3^(
z`4Zv1diowM^3Ul}aa0`ti2Ux0$n7sTZ@IcU)8>Yn`a;)Ccs09VExjvtw#7@e;)?nI
z>A7mU)|2^C+jePm#jNFO6_gXYVfI{oWQM6KG#`KhtG&>&p@v(nygohUwlb`ts@g0v
zHznkn8OyaI#DtJc8XyZW2#^FA1{ehxdw93lHz92|Yc|5$C~iM6-95COF?vN?Mr811
zi@pHsx<`Gvkly|69Kygd?CtLV*T_Q*77pqT8y^K}wpkRt8jkJ`FGD<p-{n*EYVhWs
z^wi&7V1rcK5FrEipx<2o$ra*rBSNSUgnUKjAVe47=bKWhwyeqz)~8;YE4>zLN^N<n
zt4=c2+VT}|Uw4<~nb0>&+OA93=b8#$8~v#y-UM$6@tM2vQ-8EhuxH^`*|2;P<#8VU
H^TfXZNO$QO

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__pycache__/__init__.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index 522dab9e775d3ce6f28ac1ac7102d1843b71523e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 968
zcmZuvO>5LZ7@q7$vb)(`Yw-(uC|-nB3_U1_iU(V@1uF~UB?N}qWV#(XA7Lh`T~GTj
zyn7KZ`d4yXa$4}@ZK1cGoEf{7geEV~Jnxe?Gw=H(-v@&p(AQ-C6K^#E_-&H))wm?*
zQj@PB0U=17q(L3l2pf*!P1<Cwuw{9RwwW8cmba<LI$_6hmv&h%>{;$npY_AO<sCX;
z!*FPMm)>9-;f4dIAnAQ`!kdZz5sdm@+B?Bc@br(P&mTGE=6Lp=@RPSfenv7m6bYtU
z?H=L`trPbRpAwF>+&<uGo@p{13zdzfh_O<HPmS^#&9FM)M_6JWo8ntmv777)mLf@%
z;9B?hh>9gn5szo1Zs|jKilrigLnyUdK)MEugR*6yZNM|oG0@fUVYDfIy_SP?Ms@eW
zzs0^@-dDMlVu~^hnHfg~b;0gi-mS|4wsYD8uX#$$?8<gmZl`*Fm|htW)N<QzxjiwS
zK(aO^sO5H`@<C0#tg^ks_{upuc)3+CPX3!|Ju5v35v36R0O#5vaKUz;N1v2-IFcvg
zm>wgfqCFAk4D(Dy??|?vPa?bPDWW8i;w-{vh@}*(C}$H%k|~Cn$~j^r%QGPfqP2Rc
zM<f}9`ZHW~Uh2kkieJfl`gHS?sb3maO~-MT!`pLz2_6^KSb%3mHJ0E}QH=$7SX5&H
gUKG{1PT4O&B^KaGQH@p0_uUm(!`w5syrX;m3*dMy2><{9

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__pycache__/__init__.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index d5ebaedb4c8b77b5d7dbd0a6945f09079d8b10e4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 860
zcmZWm&x_MQ6i(8gY18gn1P>k-JqSG{?6T}dM8vK_!Ae02G6aU%%(M=jnS`07Zujif
zf5Mypf>*&mqE}D;3!Z#4b*sh+`SQIlZ{E!N9vKXJ9;^>vzS3`j=Y6-q-wQPF8N8+d
zpdRw5PXpo000q9~4bhNI)O5TlTC$DWj<-Zdc2U>ywg_bp^&IbrzKl@hcvlSM5Dgs<
z#gRNl$G*4nXz!Dc?$G`lZyepUPLtE*;)f5XkNw?fzJ0~j`em-)6HRA1WdhW2#!7M<
z936reYQ+_U|E;MisuIX>o||&6^Nbn8)ygW*$(EU^S~AU4W|Qwa#Z{Z+vLKq9T!G%d
z<R;UsAS&CA!(AWa4bz6_3S(_e(k%<2g@%Qug|>x`g)YGB@km>@(V*B0Xd~Hw+;;T9
zR9fdNQZg)UUnZ#wt}c35mlFxy@AqKlT6Slnd;cYJYlCqYMJEMVfs2C|NiB9)M<-X-
z9?Wn3Nouj{4Lz!<zq4E$I6Ii=JV5vB$@Gt}&c0m-V<H5`pFJH}>n!~IIC-2d3^<-@
zw$9H|TFL5qkFkU?Ya;j!DPbP*l995~ES^s0@#SK+czd2)q*oOeG|nVhvy>EtNO@MI
z3?P=vbjcMFnwd(JW^?uq+bmtF)LnH0m8s6JQw%=v5@Q(KuKNVKs|0&$M{h;|%^>ps
Gd4gX;Q2|8&

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__init__.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__init__.py
deleted file mode 100644
index df8d93568..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__init__.py	
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from .bayes_inference import BayesInference
-from .mcmc import MCMC
-
-__all__ = [
-    "BayesInference",
-    "MCMC"
-    ]
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 430b9885a8c8bd658da24bbc4ac1a6a0a74f69e6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 303
zcmYjNJ5B>J5cMx4LJ1UHffU=|3m}9D;!`9-LNwc0j&0Z#_8Qq<AV=W{T*)mJSD-+Q
z7ez4AJilkZnbFwKX1fT29n8%eoF7H}4+7#8G9ChGq_IT~*BBR0EOE4^z^P^rq-J__
zi>jSZ4Au(gy)(Hn@w&S=!F0;N4O=dji%?ny3b3k1d4F9@qTRZN*UX%9YVhQ-5Yk#9
z-ccBr!UA74cU|I&-$fH550AdFjg*m}d(}JBrN}Sabk(o<h4n8tGBtb{^DJ$vgMa;1
ie?z$d-X<ZAo;G=M?7Z%+IVo$z@;g&9#e@<(`ThY0HBIvX

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index b22adcbe445e7b81edc8dac6cb9ba03678c61ab9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 354
zcmZ3^%ge<81T4a;sWXA}V-N=hn4pZ$YCy(xh7^Vr#vF!R#wbQc5SuB7DVI5l8OUZ%
zVM%9-Vo6~QX3%7N$p}=e$#{#;DX}uO*fTFJwJ0?&ITa|v;_K||T*M5NE@A-^ewwVe
z_>(}2;xl2Yz_Pbka+7nD!D?=?$Hyn;<iy9XWcUo!!tg81*(xTqIJKxarYJi<BPSy<
zu{g#hKe;qFHLs*N#yzvdqckbTEhoP`Ah9GP25fp+VoqjCQGNx4hp;Oq9>~rtiI3MS
zsQkrYlbfGXnv-f*#0|6t<b`58An}2jk&*EO8v~=x1qN+obb~?c0xANkVimo?!u5fb
PnVYSF9R!OwfkprT7ZzXr

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index 287257c1ca9b3f3a6d7e176e006ad432f8c685bf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 368
zcmYk1K}rKL6ow}=(^{m}OStJ`3Ps$Ah&XP#s0cD3Lm;G+HyWDE49TRlE<J%4@Bm)H
zt+$x1E3e=}d}$GVkT3tA{CT|a(P%%wdU|^o&$xeh^S?qg7r5*ZLIi@SK$DyhuR|5;
zD34G_BEApvSoCg#asQKGbWFN~OTGa+t4c6X6@Vx4Je{Y;w=@yrdfe*{7e2(~Z)$s+
z$GXtPHq-4f#+731H86eu(BtbRJ*AliW2u2<J*C2Fx85<)vI4`EeB`aHtE2?pIs?fp
zy-BXJd3JX^IiU+Dl}HNBmq2;bC@PDF0wU2REoH@(0qaz2SJMaPQ^r+vJLw8L3sbLm
h?r(0&P|KFFNwet&XSx<n!MXpX9Uz8e7=<MK{sG1iY1;q*

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-310.pyc
deleted file mode 100644
index e89dfb5e6b3a873ac2f40dcc2084aa52caaedcd6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 31276
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-311.pyc
deleted file mode 100644
index f059bde3e71ad6231b8a26e02849bd6298052797..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 60952
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-39.pyc
deleted file mode 100644
index a37330680c29bbfdba5a1bfd98041dda24957604..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 31419
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-310.pyc
deleted file mode 100644
index 57322b839ff7d50ea32d3b36ce011c09cf91e232..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15645
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-311.pyc
deleted file mode 100644
index 37d75830876e7d6e44eb45cc242d1f6636c8d2f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27157
zcmdUYYj7J^mR<uOK!9xU36cQC2lx<0NFqgwdRq@uBt<<b+tT=<*b9MdkOBn)bOY3b
z2D8eRw+v~O81iaj+9PK$E{}&^b9Omf-U@e<%_>zh$t0Cc0ZdmB=_+Nl*>ZN3{GsD<
zGV9t@@}1j2qZ_1b*)yqBTHr;a``q`v=brPObFY46x0i6Z!Z&{3|L)5i_gC~IcNJ%E
zK5sB^+}oVMUEl<RU<?{A7}>Y!f(hTIV9}KMg4v+Fvs@@<@2pd{3%2aDlBv=QeD>Zx
zRd%5q_eFv^STR+3q0+$l%O|UHSthG<ciL~iY0{DVovg{-X}@(8wc0nidw<=BsKv+l
zQ!c^a%H48;MJWEzgtz!pE<LS*GjhY6V11nvY#$myhd<@I;1rDKI8Vv!?veq~?~D2c
zcR1ue=Zm`gXC~Y`ce#7_9O&6~pl6SJXHW0`l9H!=Gto<7@ql~WCkBL)N0iEl#~_;{
zQC~Fjh)RcFWk-G2{gD%)alhyfjrnIy-Q7E8Ye(tf6<;tQh~aD9Q`5mn^m@=grW8a8
zbLIN{0)D^E`MC=Q^cs5Wg2~3&IH6i7e%)}Ph-z}dEI5P`{Iak&H3E<OV!@6#R-r~H
z!!Mgqj$b801;SFHR;a==UNE7)b+UsM@l06o2M5Aa)2K}(9P<4p3Q*$4)$bk)`XUi`
zH0+-Ci{oK&%FQAKd?9y#$QQgG2}HU}N)*~?R1A#HMEw!=vrE0$&&iocG%z0UjRt~&
z=ymr2_h>jA-0lufM+3+($Y?0X7cTjum;9nONBnjdMEB+LcAv*f!9VVs2}a!kC1*<J
z;(2k#f3ce-i;_oY#8JQC6?{=2vi6Ch@47oY?v7mYP5a%QAukFOjYLJ?v^NkHBir2}
zZ+JA~*`RpeiJ)xAFA%~IQ4@Ak!rcXBabFw>hjL}eW#JR2QGh@ws#bVpW@;2^qBLqD
z+<~ZH^ijjCPqVkDrzcx4%G4VQ2O@rN(0|1rM8f02urHr<zni^vD{qxPq?T|~i?X(e
z_@nEy=;`k1&1ON(?hSdT{JzLzi%l<QME{gO6pgsY!l6h&z<3wj7%lEAfyfL-`Yfvq
z)e$+XH81E>(H}u4(r}^<JU{a2Z!nGj`ZdSz5C7%t>qj2ZoEWocW(hr@iT?R%1aEUO
zLyYsPuVY61Qkg`|gkMC@u2>O%sVpL9#;>B>JApgLePkH%nB_8k@#HeKx7jd~OEq08
zR}}VzT&ih0k3}wu_=Dr39odLw6qHj?K|v*g2-S;f?RJ0pI|Bz^rcoAoS-c#+6uji~
zMP42ZkIk_5eR((#Jw7w~vW|zm?7!v%8}Ub8#!vz~n(%w0k(rQhDiEEChQ)v{SU}HW
zdjmPXq`dV`5fku^sa&9Y`nqiOf-DgAdS@FqVieuE*W0NQI}zOA)+}6eSG-8FZpt)m
zSH3rO(6=+=?xF9-O!jxm>cr=B#Nx)(?!XT-{#eJpiyL$-m&Et_3mtCMbMcqa#dD^)
zB6N3=V7O<TL)T8KgFxK;RVfL^MU#H*V5wQ=ier|TStvS)0>p}OXJ&V1a8HZxGK#4V
z=W|h?h#5e0D|$8Dg_U5!?`DmPS&?I{3P+-j207lJIN(<JZk9CSo{0oP6AG8b>N187
z#FU^2bY&y0k98&Bdn}JsCKN?~#wYrw{9rD5MyYb?E;SQnAP9l6DCRtUsc$Hae)fo%
zws;+kY%Dk<P=Tr1NZQ9DYf20TAMrj>S`&dQ{t!#&A{%S!x_L3XO5|7rm4dDzW!N9c
z*H3xwb{{@`nBqk8eBFJ>{hF>CInq{@>$V<n)1t9`W3rGpqD(T75fAQp4BcQLGA8<`
zeW9`Ipw#?2i}E}sj(=(<=tD<;bqS_};iz{y42C=n_L`;Lu&{Ia7J1GOh96qj-D<S(
zOmuqY>-!mOJ?aA|$aZvibkaYDvF-~AO2-rHa9{NYCNAMAF@7zdr>4%&fQ<$?OGwXe
z@kkXfa((47&Q`FY;m#G{=&{*~GrG)=9y{+bFh*NQd$PZf_GG`uD3>Wk^DF!>!lHVt
zB8jqcNq#EGHgzP+c7=h`sP>MI%QXsBw)$+a(_@R$wmRxb--gtazK9k1<?1Pt^eoq5
z96=IY$CqcfZ^()tL%jz{MSceXIP=p6u4mWkj-x9(j%N7UdD~|uV^7&HI0R|y_P9M&
zw|%XIYw6CocdwaERb^`&g1BXk=lBY#v}ujA*p6iS_OA9FTj@KNsi>bnu_UaSxLw1B
z&p6|*DkQY4D$V!A&!jf>tXa9Od*jDa)tl3NN5*qFcl)rsCT<r=_CGeJF1q+d)n`2a
z--7$U%|%tN4X$g5s!KP=={bI+JW8uY_7V(wdH=Tz6Nvpj2?px=61C;1DdnUlcK-Q?
zxcylDsZUcdYV-|L{vNAN(WEM#By&2KnhM?M(=~9~7?acj>_TbPGGhH=dL6yEVa2af
zg$C=KIaH;6JIUwXXiG>dV3MScbr)7oQ_Q?*)~|VUmH>wp&yXY`W!<GO{~-6u7jxEV
zbDm7F=-bM`>E0G6N#I#`#jN^R`d>(+EguD?w&vShPdR6c8K0y-QEq{)?Im-iv67fg
zqqROkt*>z6V5~&2US?xb?9z?Y(#MZf(HY&MsfP_Ym+I<*5t`Rq4czT>>*@7<1sXqO
z6Ps5ZA?Q(?SJkj%wvBaceJ?_$v64ii>#249c>8}u)frScj_3GT@e{Ut7i)L>Tv@a$
z-xiZ~x%*hzq%(IPC6O|FO{!hKSfIDZ_?Vqaf4dvwygo;-{RYKG<Geg(5=SwA)LP9|
z#43`Tv@vt{f>9{Za~+IHZTTB=l(F(yxn>?}xC3%h=kzS*uwYs&)%WIHB{X*~`cy70
zaHon`r9R)m0uC})6*`4_H|68x?_%YGT^}3#hD&N@tA>^r$_i--GtiYr(^j!^J@xu>
zVN_L(6QWY#8%7hW;>I%o6a0#djO7$UB!d<LAqdN%XaK97@=h=RWibd6EBwB(OKM_l
z*=3@`^!jAS#qgB-qPk{ZWNL0`J5*~oGRq3;YEmQv%mBKf66K}s6H&J>7zw+Tr4`~1
zM4KR#Tb5_UcO_d|A>f;UTn*U3-#yX2T_?M%Igs?Woz&xT2>8I3rhGt4t|3ZvEUWR-
z>i_?}fSwa!3WT}G!aYR)Yl3_zsf)+ZVT8G;?f!KFa9))AT4m>IAbQEYUN=!>;ryss
zFAaWe$_3)JGO)Aqq^2&j{pZ7OaR!5jiM)#7N~3AJ`+9iB9r6QpA(V#@JD*lf1MtG4
zM7l*<wnUP=09P^;V%CvY0rPjW^=u9j&Zpu8gx|b2*Igo)YSbD6J%#A?X}?^0b`-G1
z6*h@JGRQ@~YfyzWavVpwl4SciG3vLu0Qk`>R<<G-=8UAx|E}@24e$#m(n|S}Nj7%(
z$fnEw>vD0nEh5CO(alUi{<7pCN#N89hiCV0EE6-mJ15$A9}I@aFg^}<=Og|M2}XJl
zKs@FQt-}Uw_>+T6eapqkw&YdqQ{|q?u(Dm(*|PPr;P=u@|2FkzwN`>oDwVdbBCUqs
zx{_&qC6BX8=0bfXb5E&~#|^BK9=BW)04PB`ddx2uQKQSYp=)D)#=+%Mr44{L`6F^s
zFc68#W&oH|5!rl(#;IHZJw_lvH8(nBGs9P9i-IiX5i#KBgviPj6aEk(pne9m0i=|R
zFbt63v<T=_wh#~v{z<|+K~zi;^UB2_^Z|sH?F@U%DUfnSRy9%wvTO`Z%O?M|X}LHU
zp70($GbEP;!=VWwJTn?Z?ieIltxFkqvIVsVh>YS*1HG0_vw>;3is|F}{;y=u6qcf3
zH=b&yNs1)bh$O}^{Zh6Jg(d(Yvk53$sknmxbLEmeH<HaPY1zgGHh~A?R;sQUmV+6;
zY(=5HgRCbQ-3VG=wzBAFM<+!RPsBc=ucQv~vW|E`(a+^7U7=a)MQC1PVijI&qKPD+
z&9<?Eu!IKkaF)V@ax?5Q2qQxnxHq^j_HfV;xBgH_mv58Gx2<tT+wKQdn=q~#cYVeg
zs(1f_0{pb^hOXG)nZGc9h@pgESh%X%#N=vi$4YHSy0%lQ?MzpCq)N|1i&VLN;aRD2
zN8FOJmfhx8t(#Y@o72`Ul66bUx+PQFa5o6*c+u@rB*}EvRB1=1zDcUz8b1|3^^oqm
zr24+4eyM&>{1lK%hjX>MbEUeI)ZwzFQ_yA|9+b|}Z$R-7#;r)H))_C!)HJ{CeaoA!
z>5ytV*0^e0JqzMP5BSPN$IUah&&1E*HdVD_wQA2w)t;r9bk!lL>QI_LEb)g^{NYcX
z9m(0H&C-^AY3F{)xj%k_fYQ$Ihu;mSn|4S|JJvX}eJ=~{lq5`v?_{cL=RH#W_SO2{
zmHOUveIE**s-{n-u6}-MrEXiQZrdM~EbsnVd%9;>>KVq*2hQfCZJ}?;yyX9cPdg7u
z&O<5o`84+;?c5_d_oSSAeu?Zmd*UY~zCF{ii@w_)x;?Az11s(WY4<_NeK3A9F_Y#S
zH5H7XLFYJ}clO-f6SrpCx>nozR@(Z~ZM&s5>Pg!(#8?of`R4eE#I*;l?H_b3I3>^i
zpH=;|G1YoD-FjAPJsUrscnK6Kz8OVuHLg0lR-9cK-jN6`Z9@mRy3qlyBWQouk+_{Y
z5>4%}9XI4UGQ-!c@=Ysz)BLN+F5nFk-;?5dP_mY`53HGr#`!s^dFN8E)VzC1_~dfB
zx&P;eHIt#`6i^BZkubs(-?&zk=l2g<HzzNr`UcajLsIJy$gvWD93jXNruZg&fP~m9
zSNXOTzAbrX=}4L%kobWVKY)7B^VSu<HMwu$LYm(v@%vKzzBLOmQM3s{%0ZAi_AJ}e
zt;eL+W0c2nmdA0H$8pL7302gmHg%=SyHeIJ#(mjZt%FKP(WkZH^HD6QZ`j``d!zhq
zZi1UD(y5|`q;}~AxpL{1KfMC2Go@-^4uA;eNfm<0t4x!$ptEbv0tH8fQf_oX(Xiy+
zX}@*ps1OO1SlDOs0LWs|he-KjHFW?YYT7Ylq*$BRIfxOr$^lqBL2aS<w~@GUs|*lF
zaZ**tbR{$a5<yxYtLZTT#R_o2db9jy8B;dfqZ;FN%%rCu<PwHgY`5&%Qr@(y8Z4Jo
zAslVKP%<rgrE0DunvcXysvwT;sR~#CPAHiqqY}Hc5RhP4{7R!ZK#(VGy*F~Lrz?XB
z>cs8wvUvHp31(?)%u=Wn>RV~!R?yZ#Pd~@&@+6}fyJDrf=U>-Ke2o8gtu$^dC{O9_
zc&sR?Iy~gcL*KDdJ*@#F;<mn=YMaH1^t2m0PGEEx;Ie>OpNEJxZb8AKYmdj~qiF?O
zewY=EKtP)06yZC7Nuw%M!&%Wx(bQF=sA^Bn!T&ln*bR|tjEo#i<%iioO^)nFIa9P6
zwLp8!Npc!h=>LJD{1}G?5}E#QXs|g^Ok-wNOz<0cB@pdb`VmCdTlvYvulB;%Y017|
z(948s>Z+^*g&LW1AIN&m<hoLmwoc`Q**x#C0Nv3V%9_<4{cl`iJEqUZy3;<q`L2l;
zI%tixbB3EmH?{bh#tZ1CX6d?Pyj^!r(I=T^<uQvMBqW<)n~@CxMWil*N*#&N661E?
zxN#$=T$13dD3|*;6nzVI6pebRMuqDX7wJICzr4Yv90!%pLSN$ieB0fZ<|B81BiRpm
zQhlSW_=M+r9O5o~iMuHv8;)!_%S?69ok-DQI+NVy-Kb<<Z+2EHjtaa+^NKK^1G&r(
zEdpL0S#zyy7JZ=!zg!F#4AQ^E0m`rl098=7z?ca$lz4z1nVIK|Y`FqmaO|>d@l8+r
zLxOCB=S(O9)1=>1p;32;87mr&T{nKjGnAGMUEo!eMjMrcX%@2iy7!U~UE`H4*IDt!
z5hBhR;xPKe-=Jhk7ZS<cBSI{WMxc5<{q)m{+Co_B?B<PHsJpQ5Rw<>Yz~+AWOZ3!Q
zH|N?Ew?C+?`C2{1QGfTe<k%uPy5crSZ>rMK+OgWYd!==EMj_~0xW2qC<8GJ8w8pjV
zfx)b8FAQdFd*g!=1mO~{0`@h7ZA+%QPO9!m@f{=zR>g}lO`WSv-78Jq>82j3sfW}k
z5F)ra5+6voGIj3Nx*aQZJC--4>UN~-hNQZoo5$lriQbH}F+P~6zIh^kf;6hS#B1rw
zHmS00jpJ?GKBFMspQ&+4HJuBUQq8v2n!c49C`L<Sy5@jXb0B`~L7nUF)%V1E*B5G+
zYCmaM_I=WP|J79UiFES`31QtysqSR__`}xitF1d%T6d;fcS)_gU?a5GvEWV_l$e(u
zG&bLRF_Rnk>NsEW;5O|zC^-&(W->G#hLGKK_%99*{mI1r@t+3MhtEle&p{Qa-1O<D
z#(VoSj)n)0+PlN=9lduVIk~h|+IjSTue5XM=l!XMk#xg|gwSzTa-4<LvZMAh&eTx%
z3knj}gcU7ouV3ZeE4(}DO!HeMert-~iW@YFYtubzvN7%4Avt%fI`^+Q_b<0BKYQPh
zb{>_SM^~LESDYs^eA#!6cdhe{>5459eYzHWQbi9er!KOby2_Y}Qqh>QHn7P%rb?<9
zQ6%XxNj-y+#XOWWtZ5Q2m5a&OdU=!FPRv@<W?t%!709RMTz>t|JG*FQc^K(5rOHd~
zkh-nw<Qf}fbd_2ck7~j$Ernis(Uv7<6AUCRM^%{&W)CBzWwb@!@e(rm14z1RjvS{c
zpCwkju6zb<dQny4h169bq3KJ8d~VE@>hj4OT+M<>F#WbMRywZfAANinxp={lHToHa
zBKjRGnnk(i?7CD{tpct>8>AXlwHnlv7(KflBg?@_7j3PM3~it4Wx<%8N}_Ms7+iXD
zwPIS!KZqH=wr4dI`ugj8Hdew?{7*5!wH~vtL@OU=MG4qQvVN8fHqS{hITuT}7`_?-
zo~)N2^C0?ph=t<;F%l)htea8Ja3ltRo%w=r0#Ok~#Q{^5NKTBqFOtJu_bB<=dV}Hc
z*p-WL4^<p|+&=eCp-XWBy&4Dx-J^cD$oyo0pHpeobd<FZPpP!b>ND#X!$8)36Xdk&
zhRdTE@N4~&o=h%fQqlnc^&tU{m4jH-j*(-QnlG(o8Z^D2c33!JtWwrah=e3;=whD6
zgRHNmTcLHcbyg#jeVx1q|5gYH*<!Mm(&g|>&ZAZp-8E@z<h_Z%`{=WkGo#NO@$e8D
z2)K+eK|&EQ%z;SA7n04?rV-h2UL40{kWE2<2*@x5il`u)e1ZTG1nm@_!b5_6gPt<Q
zIj4w<C-d6Y$U9|XoQW?{a#oBIMGmqnXmi$8mB432jmVWDZxoJI8ZTD4Bwu|%zftjo
za7{J^D4;T#nFJdl)mxQ0*bS39<TAbZ^%&e#PvjyoaRvcok4_+L^So5OS*qR+l+E4w
z0lae><MzarOhfw*M?bi<a4p@jPwLp0+PqI{*e^94xo?mfj;5@x2Q_tfU(DE@srqdx
zemj<^T3VuN%i<*vCR{D|N`83sgX0S?E?!8t?~~g1rP}rp4q1}uy=i|?yJ^0E{<U=N
zHmMd^EpK~@1&{)&Ywqrwe`VoVs-Z7ky-TXz6(4+1*YMuCWJ9{KTWai1*X@w%0A5<{
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
Kk9o_6!v6ugi7!zA

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-39.pyc
deleted file mode 100644
index b58f792ac36504c702205afc34228600f9bbba77..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15716
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-310.pyc
deleted file mode 100644
index bc71688a4cae4f74ec3a67838fca659881c520c9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3806
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
I`#)>`7Zrzs-v9sr

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-311.pyc
deleted file mode 100644
index 4f1c5c8635a64bcf45f856426c8597e67374b985..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4661
zcmb7I&u<*J73OHQ@=7aP3hEZM<3_Y2*V;s0#LlG^k^+*IxN>5ph+U)*wi$6}xVw~R
zXSO6q(ppkspg#EELxC3Xr3W9<Bt?RvhaU20SjGYo1}IRVryL4w;PjGH-{Z`1SCR`f
zv_uU#<oofx_das`$;p!w1X}&xU-|E*3HcWe@-~`1Jo^beJR&~voq)8RHOIl{kzk}<
zSSvVWgj^?n;Xd(4KOQ0EGx$y0+Nkf`B9-D-I9#nb$;4aRon@{>GgMx-#{9{5Jfkpt
zL^xS<e6lv;J8K31gkQYxfTXeeWUc6rg1k~vUKYxeyu(7T%f2WPGC`pYO;RslO3_9n
z=@RRLMix>LHn`-W$7!4ER^(UBrVlvvc|(Mp>K3Px=WAf6<SY=nOLau+obunqEWqcj
z7SnW#Qx9aeBcBJ9g+66Qn$N*5VeF!s%Qmge(Hie45kw)aRjL%!c~Pi@&!th=h=L&6
z5+Rz}W_n@5h?$+OX}+!Njh*hEyJMbrGHdqs=$o_#OIscbc5d#?)xd7eD)d#WXnuA!
z6|>a>hYy<on%@6#XVu+_Vhy5d74Whnx#FQ##vnw2HyYf7anvx@v^i6;<ZW0(xs-qm
zI-I&LLgsm~WL~#Q--b6zv^#<D0JeE5w803lOA+>sG^SuXWxg-8*yQv&i<JqFFH{y$
zx+Qdr-sLg^&9D@dHDPH8$ZawSq4aoa7t>N~8~<*JW}AUG1N<!LV9@}tRlqBIv-{dS
zt(kogmK?E_(0~9TLi_;$>*gkxN<a|7M*v>bCDSmRM_;14;&RiBX(tk)Hr8R}2SF6H
z2GHBMbq(|aph&aqZn_)vF^h<i0;qtK^%#|<xEM?}SrBtHuQq384&?%b6;XRWUS?P3
zI_6}aa<l`vlxN*;o>oK2hTsh?804U_6f5xmYI(+1a?o!>%H?&?q)`Wb1!N#~*(MVK
zs|P%b>nrp<^Oi0y&<`+4?u5}+2oU<h$Lbt7Ou@P|Ino#dB2Zz*P!amP!=Zz89!hPM
z0bzA4Wjf;UJ7}3VDmqLuBpE60a-ar<VKS+f`3^OmW#L}s%^L7wn|*lIrpwBnYoypR
z1>;Rg3@iZxL4WgdFbXm;7*UMF?G~h$;h-%M1jt|;n43X2CBjr9R(lNfBsGKd6k#XU
zG&3IZ-ITNuhU-L_)xbRMMllUJxCV5Xu_vP)DWEvoOg4cOz&63?`U*;1PuaLiS0kNP
zu0{$4OsvTiY>h&&jRAv%&45z{RmMPE9B2WI0(6OFj&}HhH6zeq41*v_!I7%6!p$K$
zo&Z^V7j;@tTp0nEZ8Jk-Fdigy0qT0g%psa)9%q0UfyG<EMrg}XANY0$7No!c;^xSK
z?6hL?5SVbHfC1QaZaquxrS(d61(+vw9m+h`7?-Au;*O~cD=y<zTJO^Jn|Kse-!p5g
zA*7#LpQoI8t&GAlDHt}$i-@+^CQma3{W})E7~^1kJQBp)7y{m4U>!zn{nDlNR18p+
z=jv{U19U)I*2vp9mBlBFgvyQsp#LbW!v6dOxU_DwK*gO-BoRjy(FT*Lf+4IHAPYR;
zX9)m?K2z0YrrFzAbXM&<88sX!l|vzeGpfp~HlrwJQ#Z5K3OY_InKLFpCf_utA)em>
z4a6NDh*lK&5PUc(z}xH;MU?XhF9KvnenOH`?*FQnU$^j1gjb>h{62dPx<_Q!*(EMK
zrEPZvMvfg7V3c2>;9>?>Bxki!NXBh4C*w9a$;1H0%4jmGc+imJAWGsjP?n)nXa}16
z?Y(OYwO_*FrfTv|)CyXRsoHYn#dsA^wd+FvJg(R3c)@}LN%%6_uJLUKHvq0`al0;s
z-{h`VF{Go=v5w&I4vwrhyIp%XtD&LUJ)qj@CM6f%3GKRfPh(Z)Z}QnU(A*cHyGIVr
zTzD}0@KpZi>@19?9>Bk6@S1oQ9~czj*I+vVvq!Pj_$F(+WW(<J81VjVfH`sPIv--Q
zVMnfw;_&Qa)OoD!I{wJ#g~OL-hYauA7|S<7j8Ejx`i1<7kPQr;X@~ZiOFd2>wR^}?
z47O?dO#VbryY+eFWIlgbia&bC_$%Eetanf4tMp9%M96oQd04|T`Sq1O$np&<`!Rf+
z9B<FJc6Vgp&_Kdr4GwvD6?R)p@k53E0Rn6b|2hvjT=U>8N>kdNK*Ow`QONMYWN0Kk
zl&ma#pC3(^k24Bz1+I7=qd-B}8(_v7Sew5{uNY99R);;wF59Wl&23)*K1wg9xEtFl
zR45#)KxX-xIZF*xajo*JAufKO>sW@zbXi5_B){sKJHP_m-6S(Ss#*-lf6kgQPea!z
zQ5Cxt#SbHzn=|BWGA4oMqxM%=fAAeyZnJH-<8jyLO^MlBc_A6MN+jl{;k0DjesCsJ
z#!EQV-1PG=DL1qDx^FEf&aaZmVIPvB(oCylvYCCKxOaS>lqB17eK=~8;til9ofHBd
zCgV4=JC906@!(C0U~Q8pW2}Ss%t}E{qCuyjOUn6L;cqLn6P%Y=WywU7>nvJ#e=y8-
zgZU*`r~VDyJ<_M-?90e^{~04^XCE(rw7P%h_1>A+4Fy)N;GbUU#|Nd!ho`<QU3gl$
za4`A($5;9VGXC<{WMur*H`w(}H$i@M{!gpDbMp^Id!;iVk6!G}T>0DV->bc=EBiAy
zdNVgtap&OO<kSQG@VC9GOZ(-yUU}}*#i!-VPs*1Met7o5^23#X%*_7z)~BaGf2mhl
z+`qWgySTJJbFDXXtxuejH=VTqefePe^dHB+oTg8w>EqKMz0^DZ(=T4_oqxM`{+<2l
zcYD+CJ~2Q4ocdmGiase(IRzdAh{%Kz%XPIfhUWr8?YhZ?>%ymK9N_b$>*7~>_U44^
z`jO|l5;;W9LiZP9gc-mkGP3F5{||^lZ135B{gErhQlDVga0<nXeR8;)yjVQnC&#-~
zJW8$<ld|$er&~3NB+tTJ^2(vJvI<|-GHL?Dpa(oqRk%JvN<$uoDotWzV+FPj?Ebd&
zM(Xd+<UG8<icn4H`US^v`X%C=dqQ3u{y89vPY(a|$6Ut&`=8%`ZRWrEA8(Bz{{?Rr
BCMo~`

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-39.pyc
deleted file mode 100644
index f154800917aeaef9c499abf13d47fcca6ffc639b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3869
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
C(w;v6

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-310.pyc
deleted file mode 100644
index 1d2122246d54ec5697803cbce28900e077b2306a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18924
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
W6YnAs1G%l!A8`@AH@FHoxc@Kt+VTSc

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-311.pyc
deleted file mode 100644
index 4e0ec7bf61abc72bc8218d603f606f1eca2cc9ab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35893
zcmd_TX>=P|mL`UU3qXJbK!E!OZsH;?;v$NoR*Dq0GZ(2UD^<!ufeer$1p-t6)WQU+
zWxJ*eN~>K^9abkYOX))OQD-ANS>3F0wMTtieMa{2IaA)|AUJVa7|h|c#-4O{+MYhj
z$ts`h{xRe4zCZ*bAW@msZvSZq$QRpt_q})H#l834d*6*eC@(M5VGG{*Bj4zMrqlgz
zbRus>xr5Ii;NV>yr{nZ~-DPR7zieRV#>+;wFS=aJ_9ZK&mrZ)gWAK|-$}X3&W4+&U
z*~0EySIRF}uxm!YZN+}sk-J}cxsu&?UUqUtKHaiQZUk3+7>5SkDIHhxT^(2Yp+Tqn
z82{3Cxr)<Y)b*G?rPJ9Seb)3UxA3ZW(HElQ`Kv*{FLdp8RzH-ry>j7I&+OMOcrKlO
z{p95I#rYfrwv*v~{w<uotMlnD>p2~Is7LP%-_>0%;*3a(xgw+`Trtv8YRzR6SBlik
znUI!o4zBFGdi1lBE63i-Rp4qlXG2=S*^$~f3)<?;7G0RSFy##xb-FS)wn_KA-x~_K
z7lOQd&U@PzTJi?mOMwL+?+eWP+&7lIZm;`-m%kRg(LZ(7yA*I=2nNEw{wXi-54yVv
zSPuhq(Yvzh_wnv<(CuAa<%74DR=i=KJABpWUJZuAK7I)`a7&>uzcjZNUJ3@>!3B2r
z1l3AMLEg7A!C-ZCtae|)m9RH*1yHWed;M?Uj`p~ZxUVem-ubt2H-9-I<?M0GWqP6v
z2=(quH!Y~1=s-tD87qD1>QX3&nicOgp9&>6m%>-wzLj|&I_90fhR5yx=FnU2wa`*v
z(GBEHE-WkseC{)W8(tpB3^Q;i10mnaoZsgT<<QhUdFJHB9``qg-x`oABp5S<0&k%I
z0^s^?_qnGB`rN03i;Hyh29D2r1MC>paPCvVAcxF-?z6Zvyl-e^fHg|OAa$HjPtV7F
z)w{Cd;|JWYuFd(E=Dmdckc|CFJdj`@xPt3`_r>7+k}rHacTd6MtKRvgg{ApE_t5bE
z?t{bod-~j~10(y!2HaP};nmQ@;2^7cfcJShRLTYCLjy~}L0@1n6!xOigSj3Kzol+8
z>%<#AFYi;juy4R!h^Ua8;oHlQs<db+hunGJfO{&qva%LX`h^jS@#kOiac&wTz-M@A
zKEx`U53a1Pg<1c-eg#$tea2AlbMNmSqMoe|jP36q--pM-vP_1h5$g-F(|%=Rr)==P
zvKkJ#C)~lgWd*1-sBy(NA0A*==jGR&-g!F48>su7D9yXNh(4n8;7Hmy9bQyD(G#-*
zzQ>R)3i<pCJQ2(g6?eP;_V(1om9K?-eCP^Z&#V5cUT^5ibZ~xc#TN*NuAEv5pI)20
zGDol14X=NR!#jD!cZ-d`(3Q27Iev*-^m)RewSaeJDZCaAVz~MX^0U$&g&tg4nO~V7
zSiPM!d2n$l?D4FZ(-0ewPxn&u%8}gBJ*{ht72T_d;rBT%=;o=z@@B>XL%^Tc>vZ4S
z|GhCFLANa5)kTdF<FZ~pT~<&REz(?9AV!PTrI%&ip^KJ8ikFLJIMGr~=@R++a;bb2
zHARY+P4d}0`#E|r)K<1}20&vRi%x%}<BXbGRd+rpikidKQYlK8t@3e_kn`LYF@K2O
zeysF3<O<j1Gc8xh$A$Uy($KLf_YG*TT|VQ0Q;$PAE5cc&at4ffoXS}V&hlK3%2g@%
zN^z$2g`+d2ZJY@ht(9}$(D5hK=bWidzNKkNctp8OPhDwYcr<@~xj{bG@?74bF0tGw
z=R&I#IGkDC3bd*vd`Qlx)2Z)q=6nmaPXO@p_$X7Cc`3ZIm%z*8-ckUsQhm-@@-Wbf
z{By9XbD<U5QdUi={PQY*X{mBeDdo9_N$kmO%PsOz(k&mU_ncmfIgClwGre=utc#eE
zt?Cl;G4d%m(ZX16lk-H&;`)HMT?eQ|%lS99UB0i%Y1yUK9dcgvK71~J7O`k+SGS8R
z-K_W!bmrqct+7Td5f!$hWpC=xM%yjpo4T8z7y0qLyhpBsvt45}jPFt3e`hSVKQ^{t
zfP7{Ozar<w2;CJg)4C6l?PDctv@Gy1!bg---Ey~ltcG!S|AIl=!)V!}E?Tax^X`6a
zj%nRn??)>%uzOUn^Y0p@?SEv5R4f?sBS{M>YSTdJ{X0UjN6M4LU7p(_wurs3e|lZ`
z&3wk?e)*X4Mr`Y#)SC`1U5Pp(j^u!xPrX-Ta<fv~w@4Z04Y~f)D|7Ehk#hAo^$g08
zA|=cF<YUfxjg2OLK2nk#lCP@w>N>SGMk_Vg9F|K($|9A8ScsNI%9a&c%h~cz=$-v&
zPyTIES{ZeMS}0s7pW~K(S;-S|u7iio8}fY%FUhUY={OhKuAFMPWz`2pZC~(Co54k^
zKQKgH;d~+8@|X-Dc|bl=?;|cPoM=^~DmkvsAs?&ph!Ku=Fh6@^bV{L<{J)Eo-f@OQ
za!K&)3Hi9-oh#MkQaDSbRNJckx@dLynhXQ*6q>4S70#457{>~|k5oshHfuh_Q~FqW
zQqdaZP~N>er!|<b)z**x)g+JR>(3uytmu~WyuWU<zJS8jqT~zlsl^0ps9ioL!;RJk
z43V;Et)@*4U%5@SXj7i!KG&uzcw?fq(Yk0oy>Xnb@L2{d?YbddsOY9aqQiRKo8TFG
zUEB~z{l9t&Rb1U><3F^g!0Dq68ai@Zev0a+pnZ1HMh$<RluJaLxTa_`M$C(Oe8F=C
zHk&_$eEzW_qfdi-zV+wPmPpO=2^nUjc^zY(*WarMe^0(fk{j2eeeV1L(5q=V2ft4Z
zgL4xMK!W@qYKIh}OP-W-s`rr^Z9gG%&B*ryr6hU0sS6kt?yks4{6)=3Z%v+(OR4wj
z7HR9zo`GX2Q~<Q%v<w5~&&bEx5>dCN{<eslYyVNv2L+s-QGv5E1ofWNZ*~+wY}K?u
zk&q&-+I*45NCOeGNCRghUJz}-sLA7HPSdW=uLkqQZP%1NFSi~~@`8M<-UC;&^0~If
zoLf6?qHUTs?uoQ%?-x7`MK+7HO5;iWR3#FxtuNXhY1gz}fuOnis@&R0Q>2xo5-k*5
zvw)*^y{LwD%n5g|<?n!@?w8fV8}zzBQKU866xZL&;9aUoe&sP0Xl&PMxch5zua{q!
zk2-XGF?6v#(N?@`MK^WQ+ZO(@d|#)1J1)xC3rD6Ff4qSps^@-OuLl2@c7sDSLkla~
zp@Fkk1LtdB9S*0@$$o!N@B(_y7VX6I_`2K%^*++U)kQit`wIB`9!=}d$t7M&Yt+=~
zH+mCu5^@L0$-B=IzT^$<*FFurpK6(N;H7s5cj;{bRojIEsq5Jn>HLxIc?zp(%TT1_
zOY;mz_T=UAFU>u&8)etjJNg0|rfz$|{H_3lV=u+vftTLhUE&{qfyA$#9lT(svHXTS
z8lzn=oHJci&ssIJ_>$#s$Yqz6*`K!M+B3{?`=Z^Eu3hGpFN7EA&d;Lqvl}g3z3yH=
zIHKGb-HT>a`T10obOH+ZjO+QNS_b0|N^}|5H^P6SfW*v+n^?!Gw&rMW_@CtSEMJk2
zwQ_rOuNsHX&-@{eosIT=MM&!U-jeI%4&is0JG^;BE9*u3BYTr%=6Y_6^n*?u{YPZi
zbH9vEL<hbU!cjGqS=2=aHjfq1zd?2Xf$d$iP#7QQF+NmMMWj1N&H5IM`Ed~47a2(A
z_4lg2MfP#W3nh!lVDj6lEXrYIAE-5GWF9Uz$(`V)xarN4AA%o!jDKmv__}}^z4Ezw
zAL)to<soQC2V}v4<eWOUe9X;6y42;KA6cyIyqsUX=T1FWOK*}>=a7#hd%4q_XA1G5
z8D~B@uXe;@9;d%|KGK_9kngMag?aHrm3e(!A8Oasu-iK^6lvD*iAA{v&c@_ioN8N6
zGD37X(g-bkgZimOM>O>*<03MQUo(^F&T7XaXtDY&QkNLf)>)AAs?tV%WH{L?pQ-m+
z+`JT;!Yw$x1`~NHX+-;^xpQAFpC(scRw{r-@-N|(jlBX*jRrpoVdc(i+f#rYiEsiL
z+=aq?k)d5iDCwhSKQO#-obJ!#HE*4W?1^-3zM{ozbTl#w6W*({Ji4LFR=lznhTSpb
zIYFj4Pgd{wlwOZde~Dx%`P+KkOxDVbX_9R?lr0T-U@%_|Wz7N4O|SnNEPUDGmEa9u
zC~I3;^M{vUUZ3}c$l#nUz2W2Mf*~I>5H79zvZcIl)$g76eM-!AUg5AfG2@@KKA+z~
z@<YSBI?zVlTN6?JU3gK1RXOwgDvX@+mbbzsnf6k?F7NLa%slTJwOEm#?R~?&LuBCm
z%lF@-?N5*O6lD#8)vQVCn*VmTgok}QxRNcVeSmHc?91wxvPA)I30Ik8K#24QZugx#
zJek)1w(PJUt_5V^J-Xh(ERy^huqYYZ2M+s#FmH#B;y})|ic%qxnZLNBd!{qA?9V5e
zu>;SHI(KI>{L>Sg=XPAx8)x2q<p-}Mrv+D!=;}%B|IDcGAO4jN$!9u!Hzn@jd~tTf
zlgSRx#E6=+#Ua%0`$*5%<6>5SV!f;EC^k164_bc<X6$B0dveHFx4U6M=fgg3z<ro)
z>ki4*u5|6{{vIP=LvV{$gF%0`bdG!n0^E92nft^VALxfYe3hIpI5!*`7&Hu<iA&_6
zf?>4CV;oW5SNR~fHqZPrfH_UxTm?L7(X-|ouxP_lyzcvybk9A;Y}pc=J0z!qY*BbE
z08azTSmxvTAb%mq`TU>Kcv&}>UBsZCaK9a0ufO1fql9;U-nSa|lA8&6bx_?C?sen9
z$iheZtT7z)uQyBiV49u}@^D}XFRl38z7TeBEkRz_DW9MGC0<{fLpLwsPVa<!@om>1
zo%%QH-#xY{4Y1FSeM+43Q+gNw693qq9{b3cErm16yqD*)MGJm!7)`&r6!=?x+4_iL
z;g=3xRe7&?7XvthKS4pB^+u(o{nS(+Ad-s<H5lzIfj0^D&76B8IINsO7WX{!s0m&5
zu2Qy!-Oz$wtyewYSGwF^*6U`zDlqY{`P?gOp|IQUz3ra!g>U+N0r$Rv;gM11{jhIf
z|G;`rFJ<?I;Mqg@LsEe`_@%6P{mgymDxS>Hz|g?@a6uox!s)u(9a_Uv4TTog{Qlc+
zdLR8h)$lD_vUg!9*apLR;Gk2%aA;taTlkb-=G^1@ACBR*DY+VgZ;dZoa+B>p{g2pi
z*>VfGzvlPO`TU`53DCy-ZvU;m|5LJhWy^?WE-axJT(;~g4N*8MdHva<Mc#WG<J1I?
zo^bf~sxNE7O}I#~N0cp|5Bh`rdWF&=<_fiLA!zOZ+$4NFNY2vY)i7Qe%iLV>7Cay3
zfx>lTfB!YU8C9>_q<rKz!wC1fV}%BI$Cazz@Y`3y-nD4QdflKmH;!|I!$X6EdJnjz
zXvEq|Ak^b$4j$POUtkeVL|O9%_&~9DC|fM;EYldZAn|x@Kqv#A`PDV>iIcZhr{TJ_
z7|0f%MTT(J6!5HidG89C$$W4P4qH5^r+3AdH3UPT6mX0|9k-A(1iB0VCT<Bl#uA)^
zH^~hNFV=7n*z*ABig!3`AqFM$CsRP-N`X1h7_@_RTcSgTl~tZ3(5!`=MdW6bErDHu
z{NQcR8dkZidD<KH&Y*>O$kI^E8kYiLz6B-uRw@pE7d*)lsnV?eQr5(KZ+bWs%a*{m
zZV7;leqVs^q|C%B7Jb>`bsvuo8dsJANW8bQCGZ6THOv}-lTvsIfvT=#jr@&J);b5g
zaGvlQMkp{CTn$To&6X|taL70Zjl(eLDJVF-qS@kA9&OAPGk2$~DMxBU*|O8qGbbdv
zi<aQ+3iIR?ku~G#co_b(MXwTdw#n{I7bVV=E%yf(J&J!Ex(KdCXhRo+L7oHO_pPjk
zZxe17vSx+SW=pSnLtc0$@gr1^1A})d;9(TkvqB^{Ym-j$<EMnWPIQijX4aV}z8;zQ
zW*yXXd6cr@2~orwU<HbKLRZ$h$SAIdCyI-Ahv-+<2-1OM4r56!oh_ftjrNno2C~IV
zAwa@F0XTXrv`0xZ)hGcmW4wB3h~i<K2|!+=fsPlz%i~P|^X7?(WR0u-aJFP&X>pDB
zWlg8x!gO)fH=nh5InEPWn<I*X;muNd-Lob<3(svo#0E1Rg_pv9A1DP5Z!t2GEe&~Z
z_y8|!ocAxFLw?9o7&X#xD!N4_i&*)RT!E6?tYFUp-hu}4G@0c|V$YfwJAY+vnI{D&
zPr6N>6qP*5&sj5uPLOBsW?7KQgC4wd{I}^Iq(Agm8WN#wg(Ure%5WItA^tXHDP7`j
zp#Y>GfAA(zq&19dywe<YvO;=EbAvXNwd3l%M>W2)CeTG6A(t_6zK?;F#yAh0GMc~#
z=P=Ge6+s~7$9RUj#lJ_HOF+beeh%YCCSs5~Z|7cnKg)p;g`ot-?On^3lAPsP<naas
z1IW2ZZ!(dJr2tQg#H<xQl6a_+GaCP6T;e;}b%|<uB>Wpe9kWJyIwiP{#t<=I;<BYH
zG~8(%-S)7@jHgJP2BZy{ho~DQJ{O@Wc+nLG?%@^~wcz)ls?Y%>?!U`+{5X?2vlf+z
zxo$5MI>}xh`fFH6zJP@J)LFA}G-k@U8aG}MUHvh0#$LN&6YZU`;!Jh@MnJ6I7qes>
z)f<hm5;>FT8bLl=t!QhF6=iB_;Y?@ERGm)x9xkV=PUCND^yf##ks0YER<>hv+`IYx
z@4WM!#Ij)P5p6xsbb52gj<w?6xkQ;@Z5OTWX>0q_hCQ(&(Nvph?52I)vl3mSTe?!)
zfGWx}Ra8@1rn(V3OQx!homJLgSDLAzi&m7e)+fFpHVvgM^p|Pr5?e;LX2q7N*tBSE
z+_BXqI>h>3h|lK*+d<KG5KSpRlxgo0+egIqiFlD{cN37Rgh{OJOIzq~r@kq1Rcs#K
zIw&?D5$cbM^+#jV_s%`FR42N{`hm2C{&pH$k|xnTy7f)bJt;Jv5F1Y*(}ky&%J@~W
zx;Jg1zf4`LSl6Fg6zj%t^XyYgBP)}(jN&g--Aozx9u}*Q;O?oX7MH3KnTB?;VQ|YV
zHca5=`Cpgl%$9rR?^nE25x*{&>VU7bsV-x&iI#@6rTv+~gkCjwJ!u};ZXQU5H={!H
z5wu=xJ{Gs!w|w!;P*Q&AX-l`*GAy<n5?hYMtvjvl59^+^4sEv%?YL?ZR>9RNx;j(S
zn-?DM$E2eTlL<px^{*(2R{%vVds9cn=83q40sP_%T(Y}FTZ?GxNa?q2J!xCd)7nO{
zwmV+@%%GXY<R>Jbv~(mdJ$y@O8NpL}R*YPzq-8%UY1vPJe{I#Zv_80+D%vdH3a7gc
zOPz>YGA*rWFcp69?FVl^(-k|;>7_J&YNxUJ!Ax=#&vR>%{cdiZ72A&qjmO2t<MESU
zay#R4KXG+!ySh?UTg9mg!F51%9Z0(l>@+kzm`HVQtv&kM&)!ZqObHEBV#8E?Ix{f*
z$5;RG>Z9pjTu5CN2F{8DXXEFRdiFbzEE8ON)2_Wh&FFD`+$`GLMf*M)UNxe{ot)aX
zbfqm_nWpY1O(WY)BU{ryzaTW75SvcKX7PMcV^8v%TLbBiNumCPSbrjR4n<upqO&9U
zn&|9`P2<$PS8N#-TPD-iMx2#b-Fro}cBZYvqIEbuHX~SPq~lLa<rwI;0~trvMziSX
zcxJ>2yTTI86V2n8Hk!wAio~R=X-zvvq`#PHr?O^a;7R4)?aIBW(?aEbv2uT`^r^}A
z{qlFp<J`td@{(Zc6-~WqQ|~jY&T790(93#r(^Fej>^nPk-D2IaP&X>pjmAqpakxcC
zXL3Ps^ox%EXS&+*>Mhq!eT!H>m~qu^Tu6?lTw>3m$D{xKM5eAOdGlGZv7!1i9g<&B
z5-&vsu3FLAo_6m2#8sEBpAcM!MAxCT>rke?^+|p2c71QAwjHDD@+0(8*RU5Os-Yeu
zs-ZqU^{h-+)%fm(A6&Tq%El}4S2FcY4|?NM@u{cvo$)E4+)<sb9uw>bMEilX{XnL@
z_euN6cKb*M?}O_>Ln;h_9isr)LGM9FwP1J0jqyu~{m=T*57rr$d`8{+6(#v=FFN`H
zZ_NvG{mrk(bv2D*_1=u#wNai3CohSe2Ofogv7V`INsR&{HI=|fO(if=QyDu2jIb9k
zZR`5PUZv?kb<>mTJ=@iLGOm`S>tX#ChYr+qp#wG4ftu>L5g2jQzFYo-^82<8TilkZ
zuG?5fpNvndTjNGxq`Wd+IV@O5MC(Y}I)WkA&=@<nQ&YEbD_Qi=BGmMWHGQ$uJ5@Cs
zUysdX+B(wK7RuE2<AL`FQqIii_|MPb70C>bJuB5U^w5LEI79MG*H_;3871)&dZY~)
z)#<JY!8w5u=x73`LFKN7#CY<G;2aj6&|(xjnzn9<2hOsiOhcR4(3iR{H0(={%m@uL
z&y2YLtjJi^lo=d(GI(-(@Z{q~VQ^L)oJ|xFDX;AV)zjm4ZDXQ{Fc0{(8;76ijE<A~
z9amkV?@4|Cc0Ez&fn!4bak2im;F=U&lWEuFPE*T+H<E9NoyUcyNwH}%K7#`3`l+oO
zNTff(H7&ZP)2?Y?w5It<_272(;MQcidQhky6RXGK#!tF?H_Nt0KC*4v;-*A{VDHS>
z8xq%P3|UldIm95p`e(zxn0P$@r^kMAEM5Pq^e4Dp6J4*RU9aslyB}OlhM#neZ+DG9
zs`*8e&~-}eI`vD3(0op8J_iy=joY`?CAcO;*F@Si0bHU7GszJ`ar?xhH^d{e+wHSL
z<11q0D{-*=x({A|@b%w6@o*+Jwl($9VWDGO>==JEB6J*m?Aq=)DKyQ9O*4XhM#-C;
ze$ugjyJP>>;?Gxvj%l%D`f+Hx<E+qhPHZ|S*w4kyPo0hQDC;w>y7<XVU1PlDe#x^E
zquG_ItdnTTmOfp%SEw8oD~DrKv8gY1Y_5CX5p8>k2D$P{rqW5bV^bhnW*43udSkWy
z4u9`f!gx1&FDh7?L`xIP&$52vaK&HyA-{1u>Ae4)jqeCmoq}VJ=-3l0+3D?1&HqW;
z&wCzC{cPap1H!;@p?6a3oqYV-cJEBOcjk9O@ex%)XQyD>Bii<)ZF_z>NrF!ElbY`B
zn(nRYN8B%6>6&h#W>&13jahdb&W-xSDY5Z@;20Mj<EW|9wb7jzebUgkjZyl>=39@3
z*l*#{B7PHMKZfinv4Ngh<vFqPT&xtGGFQa7yOw*Fm}SRQo~}3`n8roZc-l11PEY*w
z_07wVj30S6J?V-Q(w|_O5=~QS(-d;Vg7I)H7z+xfX3^A~HZ`+SZHYbUiZ=WSrgqWP
zo;I~hu#<<y_Wh{ixoXB!GwF(P=}#~n6io-yrh}|ZXY!_C8Wc@~Y11J1NxI^wU^*t6
zj-^e<*!_coX+ktjq)ihzjV;_QzgHeB&oQ2%N3LHqiwDo+DcOed3Gp3LSDNv9Q)1Fp
z)osi|lL-k^bRCJAA!DgH<xW-o2P28M8OJ*+G#nEfjtN!A#j4{dU49l40Htv~hVv7<
zd)w|#Hi)fbV(an84zYDgY&|X5&xrOjY4-QDreWhdAYNk4m{>CvW0Ir&-r>)5P3GFf
z^n-J$&h5rQp>c4hvOY19-g7``I3QGxi<RTCsh!HIjo$lx8+|yeZ%G!txAy_YY;Acx
z(fxYxI3l9={Tu$cai^w!Ba)m<Uf*&)x|pt+6lx~Ln#p((IM0s<-yckMq(WN;{GZr*
zZR<qp=4QW8KQ7jf$4l|T{J7=)mXs?spW;*VTf?cv&8EjEGW$pYTn|F3uRjRH)gO$P
zVC2-dB*G7(LR~+k%V)Y0$7$e#()eVix%0tFYBF`5ep`D|=f&oO@lzRB!@K8ya6Va+
zY8PAsqH7@S8UPKdYIyhD56&e^Qzfa=RH^9Rx7GG2lIa_NT!Kog+^Dqbv>vr01+Mcc
z7-ww`<Bh2Wv30*-9~13kY5Q2lUh~A>x@~Vww+(N-`RInYe@18nAvq=5Po?dr*zLA$
zdt35|U>_3gLuvaE+Tn1$Yx#jCF_n5FZV~MJMf?7=eLuSCaBY;{H*c8Z=KJQSR@?W_
zymRL6xqIiBTx56MyZM>UVjkFWR&Pw)KfG}`Hl1;G{nW5&-fG?Y=3~dt-V(Z}#O^7<
zH5EIVaW*8*C%&0DFFJc-(>qq%z0>ipB~GS04hW409#sj}W1{s~+ImdBGc8zKMQdx?
z+A3XnEm8bq^ZVxaEDtP#wL`Rm?_oYeP+t4M@W7nxc+d90mNMd%eRC^Juk4?_{);ys
zhyT>`3y;u$Ug*9c)Lsy*v!Zo2ZJnipXNjCxdqitb+S-%5uvf75iPpZfwJ&3}fB*bD
z=M!hsb(7Lxrn3*vq`VH#q<jF6q<nxz|G=-ubhR|%&Oho&*GvmF(_+nZ%=*;UkTx}h
z$m8~(?Q1#h(EZXeX*<(y6#7o=z0__L+lwxBm5RN3q?wWWH!BSPvcm9YW$|CsReSd7
z{$gMCx6Q_<COuNkN-?r-kmlp_2y~?1vwY90T_}||)x2YY*%KM1EpM!e8X|^e#bBej
zA05P1(z>!uwM5FOxn82=D3y=iv1)Rd<m=I*Fd3I}Tcp6%J6asDYwi~;8nNgKmT<us
zC~c}%=Ig?8B~@Qvl$TWgY{Q~2{W7U)*v1)h?pKD0KH!SzlZ4;rHm<PsdceR`UfQ^#
zyn#Jx3OCBv;kId$k1e`zlYETpcKJAB(wZWf5!oDWm+!-=vLFX@j~#+5zb>h`Ddck_
zzdoW`bOa}Kjp-C_BaSds?(!D1Ea<U>*rcxUt|jkyt!-W5aue-czJx1@m?LF}0X#6F
z>2H->9~L+$rg-@p?WxsRN>*$sa0<&i!f5N#p2@YoaAd#tGE7m8T&dQ<1Y=c$Gyawa
zV^(0yq{W!#4N%6GwvAsMclSP{{@gO$Qn`NYg3Y4cvH7B&X<MW{V~aRIYv}30xnd+@
z!n;8>G97P%bCGI{Uxc#}47O(PzlM!iS>Zb6_0O-th9#}tc0-TtW-3m%f9aafzjPI=
zligRk^NX^t^f1E;jJNK^r5nD00*Gn+U?k$*P|J3QdZ?7Nq}zR^C$~77)O4?sJ%jQ|
z3vuaE-Xx_!W5!`D#`W^B`Y?kGY3|+KvN1T+=ax+)(z<nmLz@Dgnt@zP16W%O3n`SN
zP*f5mW|n2j>X52gulvH#Yd+T|r9nUp!^?zw!5@Ul4`$thwkb_h%20dGzW|{F?lWx7
zeAtUM-Dpz)Hnt$vn)AV%eQvLt90IV!T(Sf%<(ov{c-BlTiVgxp{LLj;0LcVPSW<O{
z-%HP*DB4E`w&PFG1sWC_R|4WEWO?{}7Re9w=inqyeCe$gI1?CDlv!~qi0Jb)GtZki
zoiyUUu6tJxrzSTGr(oc30_ZF(c4np*_h1z@{}Wuwnn~O3Arl@<(nK<u&X}p&L)0R;
z14!Ng=EIA=fbZ5Se{{W->1COfg%t2AR{%K+y%wRfDE`G?>HbPb-T?ZVLoCTOG=lxt
zwu&{qV$JB*Yhuj-$d!-Z+^(6;XL`{Qv;HpvB->^+s3WG!P&bAH73!Q(M18mmwxmLo
zR37OKT@FPq2}Ri=vSne3IKP9tYHVaHnDT!`Hk)V=!~bjK{t77h$Aps8$eTw=%L$T3
zk^a(=xRGjpq!)W8#GdJN%d~X)<*DQjQOk^*l6iz#M#$BNCx;-($YEl3AF`mZ$8BNn
zjfYu)dGgobU!{cE`{3omOmcjbE-|CwJ2=V~;dKb{*Xghvh9%$pHOZ6^;@_o=Z_o|+
zWGwRk3!SbY=_!{CIb;)H_L{7t(0n3WR8;LD18dGSS|(klvC03>1m6^ptq~^q<<AdP
z{@)-ATOm(xWp0x#3T9=Tu2*Qs?QhW&xsCUbtO?ILax=I-7zh;e0YrMO#uHjg_kPiR
zB5iGg_ET&c7Ml)<O($csnU-EQyE_hjCgx7*hCZRDU##hmosOOUq_!b(^1ZSLW%0LT
zr=k7d_?B4JD^`tS{ue9D6inwbb<Gdzlh@yGNwma^<Haf8AFur3%A-@lz_d6p4bz6R
zcH>auI$1u*i)JQ%;Dg}@2a@ALLm$*ig0nAX`ovKkzjeQ5qve^d+T8XTC9%n;Hs=#t
z>$a^m*_qNm>`vv32%qU(<!zrhq3)Ak(EQPkyEC~Y?im-{2SxWm=rC#yL1?cz1fiWB
zx#-A+*Sf?}|Fo?$eme2m{d4hipR{#6+>@zo`*Fql70I>KYg=Vo-CK2AWvREsu0vwi
z5ux^|SbOv{qoJLYo9*>dIVhh<LEN31+I9}6or6HjlbW9GnjWaG^;@U64sK20S1$G*
z&Ga6Evrz33R9<`Jna)(z_DMtYZm$Zd+P^7wPKceygqGuC%W-rAFC6-T6cD82Ms|!8
zeW`1E+S{KvoqX-RbBS|L8=<jI;NZczpAK)1W!(FoxJS2PEBP9fBDWqbJzB=^h`9fZ
z;65w5&!SU(ZRk`Vux@B-qk`|9`x__+tgiU=caFr4(Clq;<51e#{M6YHdxgEinyCp*
z35e`|{sji7c3Q$F9k?oOh~}Uc*O`z(cM#2?=mk@gMqGW-)TB79h~N+)i?!lRv;-3j
z_5J537$q;PttF!844eULm`flUVz2fdrpbeJ7qK63zu>MufRb#2p-hiBW5EPNnY84P
z!FF6xLF=(@JW2j}&ux){ep~_e5T(N4Q6@d=ND){eS6m>>Qp^iwl7rPEhNwAW*d+>u
z3D1cf*Vu+*WjYfnjhHt}v|h-xx)@?%srP+6Xhn3HVlh@A6h0>gQZyF$!M*)vRF2pK
zkuVnn2)1nIo&fI<1yb%-H)K9<e-HC&KolMbG7!q(sz%XvNSIXlthmWJL?z8AB3)h-
z`u|K~e38IN&HFnGjUGba%LG}i_<A1VVjkrxBruU~Rubm2c(B<beg*EL@URPoxgPt=
zS+c}-iR1GBmdcj-AYA4=Oq_61<vgqNK99rzS9u@D-=nP0C~Ii|{wA>B=RG8PEGkY*
z!&fB<{1u)4A5^X+$5zecb^_4w959F0cwX`&A&$y06QXIC%s;W0O!5`-ZD|6s?o_yF
z9ygCMTtj=1fRVN_MhY(KY7$*tUzMA_lxJ#{shO(!#1Q-4N-QOo@jD_`^}vV&Q%EcO
zT~5%Q%ZYx`)g3z-JNXnA_n9wYtYGz{<NxH?KR)(&zc6w}962MH_QlNcgQ9aE6nI?&
zsijBN!k**ep5tlP+4z}_+4$^ZE@nnCSJM+`$F{R0W37sZ#hNa%15P}efim}5vCh>A
z(~+wJrXyEH%mh|ouZ`KBr~5>k8QpINEdt%wFXMu=LA}JNJ67K516JHocmSuG+!A+C
za()|>PvHnM9NHIBzObT<f<i^%50=~%f-m3gKBli<u?FH(Nkwt=vbInhqDT>mufGZO
z-C7t{xCeTs^fFT5Pt8<CMVh=yxrlK$*b+C=avROFC`L>pg-0psvF6<|5h>2kP_%F(
zMG+P+FOQoZqxV03A$K6ssJOkU2p1;*au~OWTM6>^X0%6AA1KU$$}=?rVz9|-0Usi5
zDH;C%M*ClcOcgpL`cLm!k6H48ViTvo#)bUsiT@iq{RBz2_$IUjKIX9AQ=%f<{}<(8
zr6_OK5(ow;I+zFUX(1Z95=CajnE!2@uU9G*SZU#BM1V_V0*om{S<?HyEn$lf#fMT~
z+x+Gu$L6<Url%HXP7bv>nOBofuyw%g<)@XK)v3~L+hE!@xKmsIpd@~idCD}k{&@EN
z+0=faaY$?&f@QR|^GWOIb}Qsxq4kj1dMIA;w8ou0D%9lcA9YQV)GyTbi?#i+GoYMs
zgIP$t@%yhod?WP@p>s^^921(xWH*uS<iS6w{CV|O>2~`8$$<38A=V#~>>>^D$w>}v
z+d9&=4w&Mf3`}khOcIgbE4ubT)E*>PfI;~5B;FS6dqG-VO^NRa&i=Hu|9Jwd2-bfj
z5m=S*{G4EI$ZJ#bqBO{pO1sb3M~u6Xwapiam&FjKchti4hj@}7<6qi#zY{Hi7QZN|
zkR`bU?J35cn$U1Y&bV2m6)Bl;TMC`J+LBO|UuK!t<7){I7U~VNvStXSr5b&Bv8104
z=V_KMugQ<#ZvIAI^wmO-lt?h3BQ45{#7RY`ukNK5Q(SRwGO$OjZ_h6`1U#juSa?KM
zjXWtXCH8{F!3DMmEX30x9FIC5racJ9qg)C1<XaTcai)R^K`+LJqMzs6QKzDzPuAp1
z=8uq{yqVdCX&1(1K8Oy(x+Q7_CQB9!OiO%2P4G{WGEz|z=VW=eB+Nq@nkVBp`UfJr
zD{?D@cW!B3ivKA~suyTofYf~wZE+jRM5F+bl!Zyuxc;J|7sF8AF1(<y!t=1g=wIL|
zWs5yTbZ4+|3c4xZjo0B*J{!!IBBUrpcAn>uNAl1&EvyAt3$i7wh(}@*{{=Gi)Tw3$
zOz%bx%~_KVtF*jW0F<qerUH0slEXP%k>|tNO6I^$9_Y;RAB!>kJgv&kntfO!LF<Iz
zT`jGL%N8?lZ;Acz)Fxs{S+jpBaE&Q>`9Gy|Eb~CPSU(npt%P}>kAIVL(ljG$kzCwa
z^*psXYtK(lBxm?+*@-1@h^ZAr8b#lKMNsm7+W$9|Hp$q}mNA$f_-TiD2i?LF1?GNi
z#2yPK@DN|6iAgC+&_SU-FE<_G|2@jC+ZYGTx2zQ}P$(p^zYg+_k{pA<Coum|+=9XW
zL<@X-s?5z#+x9+bo7irfc)UN|HX*c~5!=oP)|S|r_^tRYaIN;PpX_<K=cgSX?b+ND
zzZE<4w6XO`<LGwdXvSWZ?0DD*hqmO&t^E-2o5=ICX#%XMY2xmM*x7{s*JV0)PpWFO
z5$=FO%VDtvu3CojNhp^ny>E$^B#fEXy{V~(Epc<A{eH!cyX~PV)w4CVIRO2Z;65(8
zkHgc-dA~efj`@YX>fUcXv2}nEN?tvw-fi1x+BUjluihw6Rz0jwH&5XYuFHoX>wk7s
zIuq>EqJ27TCs)gIN9_E)^NC5p+C&GRz_WKWUDqpE_KFtxe;Cb`TPATIl+HNHxI5qr
z{KS27+kFz4gX3rNP4L=Q`0ODe2&dzVG>xfCbf;}?X;a(tyq1I(HktYJFXgoed!m2w
zR0W}Q3WW7&5es`l&~saU%96LX=fa*CqeYsqCn_~oSW&@XYM@Z~NP+rD%dar`0z@?r
z<%%?L6xC579GYTiVMU8IaEdi>6wBwA!%_SWI{tp(L6KF0;I6ya?<2*qEthPXw9Bla
zs4L~noEbp|C_t!!<pQOi3E?U$<fo?I<0+SEv6ECioqSI4aTWCEg7Ts67t0P%v01e6
z8Fwv<B3x*a$k1~eIJ4pt0DHQ1v%H|k)`%56xnli4Dm>y6trVhg$ZkeGbL=D+yxM&V
z3no|ua4ZL<Wqj_}eQbp&V^Ru?uQs>JEiVBpg8@$|OI%J0o}Ig|nxuT0DOIBP%95rR
zK%P|hN(Gr&FnL<Q%^#p-oRWi-kgf9)KY?@>t4@o&SQE$p2b^V#Vc=exgN2P4PLET?
z4S#?O{BKe69wqNn!mLZo4D};AC5;IGfRYa=`7bFU+Y=wB<lj<)ct^TyC6@AmB}y7K
ziDmJ2+>m+IKc$>`UiHuD^naw}2qpg$5-co|*QaL9E8bNP6Qr`mw>>z?nu+6cbjTRw
zZhY!@0BF6M@u}xll6{@nRYYP}%?0f0AE>7(mM0_~^n<5b@=dsfW1nut8ijGDL#t|j
zclHOfDSdoaaP^9=-Y2f%ZPzeXLEIJ(oJo(I6<p^;*EwW0=^8tqG>mLFj66D%ZWw|8
zwAe5sm}+CivD;vE4INMF$F}RoGFF#pZAn(8-hj2a;Q;JC4P!9(G>pY;#8F$|Wf~%a
z6tC{m{XzAl&iGIDNM<zgv`K5l*ceIQg*rL1YSbZvv@xPW41)6Kw)`X#_70ksX@q<*
zffwg3=8B)oTY~9QF~xG=4C`Q6NmWU?Hr%6fXz9oJmo_5KuwEEh6bMW=qNSQT6@4GI
z4=pSyAao{8ZnR$7;MDSb3(au1!8aA;coWd$fssYnbPLl*1CJ<{7j+tVicS!bGtHE{
zpzW3jeOsZ_``@9n3Z=WmR9s;!G)7o;cL=5rIBNLhMfM9=@D5jy?pH6qKGWmoummvx
zv48G1n-WQ14p7-bC@cVMALQ%798mh)Z}drl@o5GnXIB<|OHL~86Zwh73AlYI`9S`8
z01B>P4JRrEV6Xe8kCr&&EVQ;l-*5=dg~2EopUADZ$K*rlo2FJwO1ybBoYsAZkPy1Q
zM)mQ*AiQ6g|B3>K#SM@yB02%q@3WQtA*H3%5~?fLf7Y-3O%wrEvEEyOM|oF+yWl*J
zjTv&nL6`l0U?I0YF}D_fDeMki4X*h)=_?lA`KwqB@BX^9SRT9()EeKoz#@62PAryp
z!zYD4pa6FqwrUfZD33J1%{`2(SZC@E00p;wVYj?IK3BJjQ(X+M@$(1<KwnnChZUBC
zSUkz$qYV7g{MCU)41={f_H70F{sck|NC03q8@L)?@#oc_@`o96CGe~Vm$7I&91M&M
zjSi`gRY2$b!MVW|FBVVogZL&0+@J=Dxr7E!Uc5NS-(0zh$p85&zM2#uJu=xJ3vO7s
zrQ_s=#a3zV=8r`qM-mi#vOk3iO<yJ|yzU|N=X|b|M@7O1!9A4=8xf?i5zJjm?a?(W
zi3cPZ@U<XNOnB%q@O3!Gid!zY0F@|HpE8C|EFH$QwH4mQGK8-4;U24`GyPq<S0?#h
zd8E0cwA`5md7<Upp<jV!=>GYmxnB{9!+s76i9Lw*g2m8)8oHj<zws-YMxeCkpFheL
zvz~>>qD#GzH%a6ALtI^VFh0JhTBrS8V&VS^_h9iF)it%j@7|Ddqzn&U!J5XHDc*%i
zBo>b@#(l}wbVY|y(IHlJ#Efh~X*>irXloa2?V_z6%QLF#5>xjtCtL5o^2FJ_4Ic<^
z+Sx5Q_rdgp^{pm*{2NLA{VRg0EoPFSF2ui<bfg^VioHU`Ua?{?;9^PYsrXdFo3^?I
zt6Q|XV|p;UN@si#Wv>a2w&WXvqc3$!a2$x0JhfE8)4^Pqan{8y{2FT)YBo+KX5jJw
zKHEh`JGhzG#?G^u-R!4-1#HeM<QiQjDW5R>`S0Q?J|m=OfrO#q1j8}jA>Ux!ls1@u
z40lXwqgB)ts8*ln90i!WfOM=01BRJHo{_S8ppS&~UIu1^M*uCE73>4;h?X-(f}=<|
zu^|LnSLsaiGercNFMn?SVB0k>g0L4bCi`xA3-UR_%3Ka@Dwu^pyBdgAl7A=(5^#jD
z!daqH({pFUnN-bnWsHJR;_zeT6yet^b9gfx##I?+#L65nv@l%}*H?mRFMz4rMgLq7
zG(6&nR8kx61vNOz&#@f^II7a*Q=By-Hm+#1Kr4#C-|FXyCoF9dTLH`(jq^qgSF%~)
zza6cORLgi*JEmyh6ER?0q&8eHA46ZD%wl($r<%B;h&?}IH_ck1N-G4CHac3Tfv;%5
zcbT2qRkPD-gjvRW_%XeUY>U?aMzHE$3ai0@;LzxcG8-<yb0fR2f>Ch43Fc0x+%okZ
z;ruHQ?zkQSdK;kQu7Yq|#Fc%Bx8-ByjfpmEo`y><A8A&9%0pYDO~-#byjRYNXQk-i
zIjc4&f|{wvlA@spbk)Z@xQe`hUvNhi_WuR?ot9mDF88_xy)H$sEgxdcf2@pq^m-`Y
zer;cIX3w{WbI2IP=M&JEkCpyJ-4QngXQ%gjAdd={CJudqeVoXBk-|EVr_V`AG=$ui
za|@E=g1FD;-OcB`AqcR+yl9q}f<j?g&S9d^S^!aD7X9Af;3zjdHg=H1AGhEe;tq_D
zj|`0ukB!cA^9%d-kB|JO@=jjsap}!hPbz&PK7D~gw?Y3x-<pE^D$b}g#I4=Xn&+ic
z7E=eZ3qsBGxe=EJ$`{q=stD373rj?$DW(R6_##nifXOzPN_Yu0gyUJv7xG}?8nX(h
z)T~{=ULd_aIiB~!#cIwwx8z^K$G~J8!IywXSQnCKUfS*p$g_g^MLt}T6455~9QdJq
z`{*NF)L+`ZOyVPtXOG{14GnnC>XI8h7#zy50XF*cLq}B)oT(3DTrd7NfA-{G{zc?p
z9a-$3YWzR{*RlFzg<>H>s4)wLq+9AmnXDdxSpay&zkUZ;T%p+o%_K<bM~E$Xdc(=n
znH<V!G++QAHp*h|V`tnl!g$eKjDo+>WhSHI<7o0!Y=tIk1ak#njFTor^l>?wm*7Km
zYhM2V>?II5{h?3)143spFMilt2-}FgLxF(&J*E5*3Advpw3fih?rM<B8m|uxQ8J8V
zn2v^rd+M?l^a-9=!8y-DfG3ewCH?YrdYw97N@3J6^~#odR&IMRWgw^=!rL*W7vk##
zZ)A(;qlj4}7Yy?^s7w*Hg}+6IP8R-;O=Y1FliHXqLCxetwn8}^p4@1;;q!#x+l|ms
zrlk-j&bXX4-Skp)nMFi>p(DPX`c{IZr&SWgnJR6LRZ2i9h7239Sp&Zhkz#`WA(jrK
z)zE>>!%T%JUliTQjL112>5?hH2N%BXMW`&}?2spGm>t6ZaJF1}=|i4T&%zRg<B@{V
z;FKZU;#*ko!OVtc2c$WI{#Mp-YZ$%9oveN(tN(gde?Du$iUc`^4?j-rpP=LbB?plp
zw9d*Z-1qi*hAC*5G~7e2=n{KDUY1DSag|hv;_lFU;$f4k^%^!?c>czJO>>4CaBIvN
z`gHZZcPnCs*mS((sl^sMoN?BR&OHc?QKqvx;3-_yxbaqOCN}ew4w6Ic=Swam7gApO
zVHtGQKHS~Y_t1|O(y<bllE$A_)Fg)P24cocxjkNe_j1gTDX)&-5Xzg92BEwyX7~io
z9j0V=>O`_xsNE;l?u(W0)HOV)O^&BtPYwumLt@=ftYW9ScH?T&BvkhztV_&-IR~6B
zYVRN0IQ9(dRQIt2i`ucQwI+U@eu<96NTMTYj7LO!2Yk&tI{)Cz@16O{xrgUs7ZUA>
z>+H7&D^Z_1Y7%<(8%c~NMw8Bj6+ty(Co-K~e{lKtF8}1p!z;1b#0U#QqECzo);84Q
z?)Y)!{YdJB&@w2t493nSjDochZuV%Gz4G2|L?p0vinh*J5iXS5Fb%qp(x<Jxg0)w)
z_Qv!yHJXVZk=DV|sXgvUP`C%!`=BFa^Q4;ET(d?Kr5nq?Kl~61#Bwauzxn;Q-+3FZ
zhTddA+%pk-Td*AxZE!y~biktz2?eC60EWsi*TekoNyXmnioK~>vG4FB?_-BhF(p<^
zVRBYs&)+<^c>%uTUZLW+SaCdNME`8g7#BZ^$RP40F;h{AD~C3Y2o<ejMQbk8lZuY*
z3OE^7#0{9}ITQ2A5llI!w>ln`K6au>HfoZsBF2JW*btz|m^k&oDp)%yu8O7ena*sk
z+_AduT|iJ9NBw6;V|fF-63ZK4_A75d53rix03PG52S-ws6rtkcRxMWl4~zX+uzpl<
z9uu9%urRr@`blN?c4c?Q?u=i=vkfJuQyp7HTZ@lwq76<m6FMtnQ<zk`YBQBp@x_h4
z<b0~@q5si1iX@!L_7vjfz!`E^w@5|u#!E<24V!6>VkQq2EIA0$+>ZH1u%q%92U(32
zNPN+X2xgKI14-PZY>e6>2F<xWQc9nzTGZoXP@oI)mY3us1#_231(V*L_?)4c9l78J
zj*liq%C52U5m&@~jr0$?b(~|(=vu@Pt&TXOH5&Me>`qcK^++qJMr^-HZjwduF)jz~
zm7dn3g}XtqzNpR@LaEcVgY}F0rn!n*r7cqM*(6&*uQa8;3|5^MBZaW2pK!5cP<WTx
zk1GEO%EGnB@b}SUEMOeGxFv<{CyeZpv!HcsY+)9hROY-gPH0~^hA<ELjmBC8A4g^%
zhpCEKxT2g}aDxVhGMB(yyqd-nMg#h(#bMMHa05bd4nqAd5S)=32Eq9v2)mE;tu=O!
zjRt-otoTI%hbm+&qgB!tsnXQ1y#JAc55pB2C}2=f!HzibX|IBrKITED_54DGGZ57f
zh!Z+vNz`#;y(dI4=wl%lLg2rE`3no{`bH23-9rZtj`fhXToy7(ZLY}9GJ97!+U5o8
zyld$C)iVJ}oRS1isz(vIa_t~tl@`2`R66UO%}*~h;>RWacA-$qB-NZ`G{En}SYq-g
z#BD_k<%e+<idN+U%%DugdX#eiC7wXmNUJ*A=yZmXQ<R*hWDR%u1SKUng?#3n&6XlY
zCM|I7sh32+i<I#aB}}GbA{Gf&lALvpjxJL&Mqtk32;mEPLI7r9Spx(_gMSzTK1t;W
zD2mh2u+$N1H*0maTq!`(w-nQ`h^NSjv~pp^Pe(<V{ven&=L;-_>QR*jbD9%Lt9ugA
zbJp4CB;ZES<j_9IY7o;ZbQO;H$lW(dlCnz&kTMW8$DC-pU%pX}1$pI;_$W>eLdv3C
zwzw-{xL<eoTR5>+#Po>l6L%u6j=gfDBz~QOfFw=|_Er?Eh1&PM(pdRZYdNyn?D13Y
zM3UuO#%=eAP=R1wcJrh@<8*=PB1GWn9cR_XSfVYl_Fk{x>=d1yNglBPXSRkP75{8P
z=sPO*9TmEcKCXQ1{co!gR!MN4MnR`5KKH@!gRx{=a_uL*LPNjU&@WW?ZyB~;`&kL%
zI|<GM2qFSK^$kQ1dOJBP)O3qA-RbIXDca#r+cx(g>d@XtoG?5k4o{_rri9*Uv3FXq
zO+UWAZ9AQ|o!)_aRXN3{Itc#nAU`MvB4JSi^|LE};(pZ!Z4dS&UGMch=o9RFexHAM
zBgOqB@-QOUM`Dv1YvuPZymKMZ3Xu*`4r%cut!hjR-9NK&CRvP7e$Yi*%j1r_GstYK
zO-yauTGF-_a+xYg=~L4mnYLPg5)s^^@LGz)Un=9MPb_XbI@69$DNpg1N$4Jb)G2fw
z%XwCnKWo+59WTQ6vko2VDt+g0?C_4W=7YHh3#rLJnfv+j<7#2-v^aJ;?K~qm&xp=5
zY3rF!oHYqwYAEgOhs&|Ji`Ox60VcovF2>vU^xrG}p6OlPU6p>E49D-3zGI4&#!NB&
zf|1jI*93oLT@v}9-|k|m*=9jxg{YA$g5g==z0i9pGR573xEE0vm*L@45_&aKbk}r^
zRluL+ilE6e6#5&H#|@JsK&KfOfEO~;FBfqo^bxpFYgpkm;4-+&G1-jm0a<Mx*K!}O
zRH_**p)#;0z_+?2gfqEKTW8g}^Sh;YP1F(&HNy)D3mnz3lZyPH#+Oz{&iaAd&+{?j
z5Z(<STcPVy(qcQJ^=@U7nft^%q5-U9b=*RZBjAJaIEG3IZv9Y(DImU%nJL0yGp<4*
zRO#E{EC6&qOJ0k{tdC5A_V;8<RGRVCjET3P+$jj2@B)jXc3~XTuU(X8<SI4Km#LG0
zDW!2llTXTXcr|)e@HA`u$rM8B<j-SBerUvNRFwN}48B~cbvKjmVC_FvAJO2|-lr=N
zr0{Yk0qglqJ9wf9RCCuLLt;aTd?|1hgU29gu%Nag2HI1c)rS$z-wW=B2<a<)Cob}P
zDES7G5WS=bsBlLLslcz{+IkC97Ua}B`A`Z946=EJ-a^4I?&vc0SU${t*AqN`Cm(bt
zUrS!6UuqzAYRmi4xzs?qYh3I+DAXT(G%3^_c~W~~yY_@oJ1y2u$If7hTB19-xTXKe
zHKCrOBjS>is4g@0k@l^F8rz8KW+aO(=#x%1&5|ip5*|LGBPKE|(|xlf3s4_fr|=mB
z*tp3!%adq_;NVw-Sx3OP$fPeN9CjW(AtEL2Z_}V~=N9hsM+iGsHFi!DD#&7tP<r6a
z9lECG2d8r8Rs>KqBb44t6U=dIrKNhw*S1E}&JMvjE;`4tE`~TTX6Z23E(#URVns7l
zD2=U%OACJ^X9w9zoiOgc@rMnmhD=p;qApRF9D1+uK_f1H<D*8QZcL~ei%rG#cW0i0
z<zBy!FJI`(Cw4lzQbvR@^L{jiHSDcFGp0^$T7{1NV#oeR`t6Q`X?rVbmU!E<^1_OK
zZP#IrJ)Qt7Z^!c;!i3zhHMHg2{Kg+&`NJz8eQWbu!rntd*CD}qSg;)tZAa3kBa$z!
zLjQqOqK<U_`5h!=tBo4f(stp3IM^lkGH0eDtUA$0R1s^4Z-Dx$oSq~q9<s9Qs!uoN
z=3*t_OU4MI;pnlT?_OWTh}Wgqdkv3IAp-0p3$iX8&LRjc5ppld;aL1jSn>>UnJBTe
zE{#R7R=X8^H4+B^VXsW)l*(zW!6j3Y{#WG{ZxpE}Po|{`Q4|p{NO?>lxHSOI;{q`O
zYU3&ommC&N$NgMGzl=1_qmDU5v)2GeU>dm2?1Ba?jt=MM4em=kK2w43H~8E$P*1}?
zp@6w0Y0}vXjkntb>_bTnmJYIngnbrf5i!2?^O9U$!Xli9ByvUC7s3)YNoxMzaUr+*
zOcMx%9J@l_#!bAHZRBpQ|D>)hIVRNgigmq+dTOp?$=x%t$=D5e(8s+SCJISmkB=o<
zHx9lNjYX6C<V<Sl;hEnnPnJ{QO+BJ>$4&Huk9{k}__I4=CN{o%^fNui*;#&oI%Ch8
zJS@b$$CEAdkkjXy--lzX#{(BBKP`vAS*gdv1?N2;o?I9B3?+X}$=^`&+m!r!N`8kD
zM&;%Jo2N+vBSSoO{39K!UBUzjc046y9S!|EBzKhGGedQ;39&bj>@yU%Ll~A5(}m(<
ztUpkt-!3~!SCr(0VW7D7nNCUO^!>#Mkf$Wy)(;afC0W+*Ek>LVCAp#>EC#Z*38$ae
z6V&I@^Tr;6t|Z^k_Y@zc^IY-`eO<BRneO>S!UXldr<%Wv9Sk9BE33C9?(kc50nz0H
zoHxWT(uo6s3g`<0@cxCr6Z@7xiL~c`kM6gq?#o|*7|0!X$XG!nO#1$VB{aXZdV7F^
z>f=ieY$w@0tkMmbHog8up6DKboE{*X&suSmE%gO%Eb+krdvN@JLO02r&z|Vtnhr~2
z=P3W5;|Bh8p{Ga?FGQ~g7toj8G1D)jt4zy(8J+bG`(<>_wEUORwWPIw8Qo}F`<KyG
zr{%wlt~Rax%jkO2+P{p>c8C2ky7D{hmvOh>F?_cyZD|yAP0vc+F4yBZy*T}hUH{cC
IcNqr$ACvc7^8f$<

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-39.pyc
deleted file mode 100644
index b9fe4689524895c2149048d489b22b08e85026df..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18959
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/bayes_inference.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/bayes_inference.py
deleted file mode 100644
index 1898a8ae6..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/bayes_inference.py	
+++ /dev/null
@@ -1,1532 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import numpy as np
-import os
-import copy
-import pandas as pd
-from tqdm import tqdm
-from scipy import stats
-import scipy.linalg as spla
-import joblib
-import seaborn as sns
-import corner
-import h5py
-import multiprocessing
-import gc
-from sklearn.metrics import mean_squared_error, r2_score
-from sklearn import preprocessing
-from matplotlib.patches import Patch
-import matplotlib.lines as mlines
-from matplotlib.backends.backend_pdf import PdfPages
-import matplotlib.pylab as plt
-
-from .mcmc import MCMC
-
-# Load the mplstyle
-plt.style.use(os.path.join(os.path.split(__file__)[0],
-                           '../', 'bayesvalidrox.mplstyle'))
-
-
-class BayesInference:
-    """
-    A class to perform Bayesian Analysis.
-
-
-    Attributes
-    ----------
-    MetaModel : obj
-        Meta model object.
-    discrepancy : obj
-        The discrepancy object for the sigma2s, i.e. the diagonal entries
-        of the variance matrix for a multivariate normal likelihood.
-    name : str, optional
-        The type of analysis, either calibration (`Calib`) or validation
-        (`Valid`). The default is `'Calib'`.
-    emulator : bool, optional
-        Analysis with emulator (MetaModel). The default is `True`.
-    bootstrap : bool, optional
-        Bootstrap the analysis. The default is `False`.
-    req_outputs : list, optional
-        The list of requested output to be used for the analysis.
-        The default is `None`. If None, all the defined outputs for the model
-        object is used.
-    selected_indices : dict, optional
-        A dictionary with the selected indices of each model output. The
-        default is `None`. If `None`, all measurement points are used in the
-        analysis.
-    samples : array of shape (n_samples, n_params), optional
-        The samples to be used in the analysis. The default is `None`. If
-        None the samples are drawn from the probablistic input parameter
-        object of the MetaModel object.
-    n_samples : int, optional
-        Number of samples to be used in the analysis. The default is `500000`.
-        If samples is not `None`, this argument will be assigned based on the
-        number of samples given.
-    measured_data : dict, optional
-        A dictionary containing the observation data. The default is `None`.
-        if `None`, the observation defined in the Model object of the
-        MetaModel is used.
-    inference_method : str, optional
-        A method for approximating the posterior distribution in the Bayesian
-        inference step. The default is `'rejection'`, which stands for
-        rejection sampling. A Markov Chain Monte Carlo sampler can be simply
-        selected by passing `'MCMC'`.
-    mcmc_params : dict, optional
-        A dictionary with args required for the Bayesian inference with
-        `MCMC`. The default is `None`.
-
-        Pass the mcmc_params like the following:
-
-            >>> mcmc_params:{
-                'init_samples': None,  # initial samples
-                'n_walkers': 100,  # number of walkers (chain)
-                'n_steps': 100000,  # number of maximum steps
-                'n_burn': 200,  # number of burn-in steps
-                'moves': None,  # Moves for the emcee sampler
-                'multiprocessing': False,  # multiprocessing
-                'verbose': False # verbosity
-                }
-        The items shown above are the default values. If any parmeter is
-        not defined, the default value will be assigned to it.
-    bayes_loocv : bool, optional
-        Bayesian Leave-one-out Cross Validation. The default is `False`. If
-        `True`, the LOOCV procedure is used to estimate the bayesian Model
-        Evidence (BME).
-    n_bootstrap_itrs : int, optional
-        Number of bootstrap iteration. The default is `1`. If bayes_loocv is
-        `True`, this is qualt to the total length of the observation data
-        set.
-    perturbed_data : array of shape (n_bootstrap_itrs, n_obs), optional
-        User defined perturbed data. The default is `[]`.
-    bootstrap_noise : float, optional
-        A noise level to perturb the data set. The default is `0.05`.
-    just_analysis : bool, optional
-        Justifiability analysis. The default is False.
-    valid_metrics : list, optional
-        List of the validation metrics. The following metrics are supported:
-
-        1. log_BME : logarithm of the Bayesian model evidence
-        2. KLD : Kullback-Leibler Divergence
-        3. inf_entropy: Information entropy
-        The default is `['log_BME']`.
-    plot_post_pred : bool, optional
-        Plot posterior predictive plots. The default is `True`.
-    plot_map_pred : bool, optional
-        Plot the model outputs vs the metamodel predictions for the maximum
-        a posteriori (defined as `max_a_posteriori`) parameter set. The
-        default is `False`.
-    max_a_posteriori : str, optional
-        Maximum a posteriori. `'mean'` and `'mode'` are available. The default
-        is `'mean'`.
-    corner_title_fmt : str, optional
-        Title format for the posterior distribution plot with python
-        package `corner`. The default is `'.2e'`.
-
-    """
-
-    def __init__(self, engine, MetaModel = None, discrepancy=None, emulator=True,
-                 name='Calib', bootstrap=False, req_outputs=None,
-                 selected_indices=None, samples=None, n_samples=100000,
-                 measured_data=None, inference_method='rejection',
-                 mcmc_params=None, bayes_loocv=False, n_bootstrap_itrs=1,
-                 perturbed_data=[], bootstrap_noise=0.05, just_analysis=False,
-                 valid_metrics=['BME'], plot_post_pred=True,
-                 plot_map_pred=False, max_a_posteriori='mean',
-                 corner_title_fmt='.2e'):
-
-        self.engine = engine
-        self.MetaModel = engine.MetaModel
-        self.Discrepancy = discrepancy
-        self.emulator = emulator
-        self.name = name
-        self.bootstrap = bootstrap
-        self.req_outputs = req_outputs
-        self.selected_indices = selected_indices
-        self.samples = samples
-        self.n_samples = n_samples
-        self.measured_data = measured_data
-        self.inference_method = inference_method
-        self.mcmc_params = mcmc_params
-        self.perturbed_data = perturbed_data
-        self.bayes_loocv = bayes_loocv
-        self.n_bootstrap_itrs = n_bootstrap_itrs
-        self.bootstrap_noise = bootstrap_noise
-        self.just_analysis = just_analysis
-        self.valid_metrics = valid_metrics
-        self.plot_post_pred = plot_post_pred
-        self.plot_map_pred = plot_map_pred
-        self.max_a_posteriori = max_a_posteriori
-        self.corner_title_fmt = corner_title_fmt
-
-    # -------------------------------------------------------------------------
-    def create_inference(self):
-        """
-        Starts the inference.
-
-        Returns
-        -------
-        BayesInference : obj
-            The Bayes inference object.
-
-        """
-
-        # Set some variables
-        MetaModel = self.MetaModel
-        Model = self.engine.Model
-        n_params = MetaModel.n_params
-        output_names = Model.Output.names
-        par_names = self.engine.ExpDesign.par_names
-
-        # If the prior is set by the user, take it.
-        if self.samples is None:
-            self.samples = self.engine.ExpDesign.generate_samples(
-                self.n_samples, 'random')
-        else:
-            try:
-                samples = self.samples.values
-            except AttributeError:
-                samples = self.samples
-
-            # Take care of an additional Sigma2s
-            self.samples = samples[:, :n_params]
-
-            # Update number of samples
-            self.n_samples = self.samples.shape[0]
-
-        # ---------- Preparation of observation data ----------
-        # Read observation data and perturb it if requested.
-        if self.measured_data is None:
-            self.measured_data = Model.read_observation(case=self.name)
-        # Convert measured_data to a data frame
-        if not isinstance(self.measured_data, pd.DataFrame):
-            self.measured_data = pd.DataFrame(self.measured_data)
-
-        # Extract the total number of measurement points
-        if self.name.lower() == 'calib':
-            self.n_tot_measurement = Model.n_obs
-        else:
-            self.n_tot_measurement = Model.n_obs_valid
-
-        # Find measurement error (if not given) for post predictive plot
-        if not hasattr(self, 'measurement_error'):
-            if isinstance(self.Discrepancy, dict):
-                Disc = self.Discrepancy['known']
-            else:
-                Disc = self.Discrepancy
-            if isinstance(Disc.parameters, dict):
-                self.measurement_error = {k: np.sqrt(Disc.parameters[k]) for k
-                                          in Disc.parameters.keys()}
-            else:
-                try:
-                    self.measurement_error = np.sqrt(Disc.parameters)
-                except TypeError:
-                    pass
-
-        # ---------- Preparation of variance for covariance matrix ----------
-        # Independent and identically distributed
-        total_sigma2 = dict()
-        opt_sigma_flag = isinstance(self.Discrepancy, dict)
-        opt_sigma = None
-        for key_idx, key in enumerate(output_names):
-
-            # Find opt_sigma
-            if opt_sigma_flag and opt_sigma is None:
-                # Option A: known error with unknown bias term
-                opt_sigma = 'A'
-                known_discrepancy = self.Discrepancy['known']
-                self.Discrepancy = self.Discrepancy['infer']
-                sigma2 = np.array(known_discrepancy.parameters[key])
-
-            elif opt_sigma == 'A' or self.Discrepancy.parameters is not None:
-                # Option B: The sigma2 is known (no bias term)
-                if opt_sigma == 'A':
-                    sigma2 = np.array(known_discrepancy.parameters[key])
-                else:
-                    opt_sigma = 'B'
-                    sigma2 = np.array(self.Discrepancy.parameters[key])
-
-            elif not isinstance(self.Discrepancy.InputDisc, str):
-                # Option C: The sigma2 is unknown (bias term including error)
-                opt_sigma = 'C'
-                self.Discrepancy.opt_sigma = opt_sigma
-                n_measurement = self.measured_data[key].values.shape
-                sigma2 = np.zeros((n_measurement[0]))
-
-            total_sigma2[key] = sigma2
-
-            self.Discrepancy.opt_sigma = opt_sigma
-            self.Discrepancy.total_sigma2 = total_sigma2
-
-        # If inferred sigma2s obtained from e.g. calibration are given
-        try:
-            self.sigma2s = self.Discrepancy.get_sample(self.n_samples)
-        except:
-            pass
-
-        # ---------------- Bootstrap & TOM --------------------
-        if self.bootstrap or self.bayes_loocv or self.just_analysis:
-            if len(self.perturbed_data) == 0:
-                # zero mean noise Adding some noise to the observation function
-                self.perturbed_data = self._perturb_data(
-                    self.measured_data, output_names
-                    )
-            else:
-                self.n_bootstrap_itrs = len(self.perturbed_data)
-
-            # -------- Model Discrepancy -----------
-            if hasattr(self, 'error_model') and self.error_model \
-               and self.name.lower() != 'calib':
-                # Select posterior mean as MAP
-                MAP_theta = self.samples.mean(axis=0).reshape((1, n_params))
-                # MAP_theta = stats.mode(self.samples,axis=0)[0]
-
-                # Evaluate the (meta-)model at the MAP
-                y_MAP, y_std_MAP = MetaModel.eval_metamodel(samples=MAP_theta)
-
-                # Train a GPR meta-model using MAP
-                self.error_MetaModel = MetaModel.create_model_error(
-                    self.bias_inputs, y_MAP, Name=self.name
-                    )
-
-            # -----------------------------------------------------
-            # ----- Loop over the perturbed observation data ------
-            # -----------------------------------------------------
-            # Initilize arrays
-            logLikelihoods = np.zeros((self.n_samples, self.n_bootstrap_itrs),
-                                      dtype=np.float16)
-            BME_Corr = np.zeros((self.n_bootstrap_itrs))
-            log_BME = np.zeros((self.n_bootstrap_itrs))
-            KLD = np.zeros((self.n_bootstrap_itrs))
-            inf_entropy = np.zeros((self.n_bootstrap_itrs))
-
-            # Compute the prior predtions
-            # Evaluate the MetaModel
-            if self.emulator:
-                y_hat, y_std = MetaModel.eval_metamodel(samples=self.samples)
-                self.__mean_pce_prior_pred = y_hat
-                self._std_pce_prior_pred = y_std
-
-                # Correct the predictions with Model discrepancy
-                if hasattr(self, 'error_model') and self.error_model:
-                    y_hat_corr, y_std = self.error_MetaModel.eval_model_error(
-                        self.bias_inputs, self.__mean_pce_prior_pred
-                        )
-                    self.__mean_pce_prior_pred = y_hat_corr
-                    self._std_pce_prior_pred = y_std
-
-                # Surrogate model's error using RMSE of test data
-                if hasattr(MetaModel, 'rmse'):
-                    surrError = MetaModel.rmse
-                else:
-                    surrError = None
-
-            else:
-                # Evaluate the original model
-                self.__model_prior_pred = self._eval_model(
-                    samples=self.samples, key='PriorPred'
-                    )
-                surrError = None
-
-            # Start the likelihood-BME computations for the perturbed data
-            for itr_idx, data in tqdm(
-                    enumerate(self.perturbed_data),
-                    total=self.n_bootstrap_itrs,
-                    desc="Bootstrapping the BME calculations", ascii=True
-                    ):
-
-                # ---------------- Likelihood calculation ----------------
-                if self.emulator:
-                    model_evals = self.__mean_pce_prior_pred
-                else:
-                    model_evals = self.__model_prior_pred
-
-                # Leave one out
-                if self.bayes_loocv or self.just_analysis:
-                    self.selected_indices = np.nonzero(data)[0]
-
-                # Prepare data dataframe
-                nobs = list(self.measured_data.count().values[1:])
-                numbers = list(np.cumsum(nobs))
-                indices = list(zip([0] + numbers, numbers))
-                data_dict = {
-                    output_names[i]: data[j:k] for i, (j, k) in
-                    enumerate(indices)
-                    }
-                #print(output_names)
-                #print(indices)
-                #print(numbers)
-                #print(nobs)
-                #print(self.measured_data)
-                #for i, (j, k) in enumerate(indices):
-                #    print(i,j,k)
-                #print(data)
-                #print(data_dict)
-                #stop
-
-                # Unknown sigma2
-                if opt_sigma == 'C' or hasattr(self, 'sigma2s'):
-                    logLikelihoods[:, itr_idx] = self.normpdf(
-                        model_evals, data_dict, total_sigma2,
-                        sigma2=self.sigma2s, std=surrError
-                        )
-                else:
-                    # known sigma2
-                    logLikelihoods[:, itr_idx] = self.normpdf(
-                        model_evals, data_dict, total_sigma2,
-                        std=surrError
-                        )
-
-                # ---------------- BME Calculations ----------------
-                # BME (log)
-                log_BME[itr_idx] = np.log(
-                    np.nanmean(np.exp(logLikelihoods[:, itr_idx],
-                                      dtype=np.longdouble))#float128))
-                    )
-
-                # BME correction when using Emulator
-                if self.emulator:
-                    BME_Corr[itr_idx] = self.__corr_factor_BME(
-                        data_dict, total_sigma2, log_BME[itr_idx]
-                        )
-
-                # Rejection Step
-                if 'kld' in list(map(str.lower, self.valid_metrics)) and\
-                   'inf_entropy' in list(map(str.lower, self.valid_metrics)):
-                    # Random numbers between 0 and 1
-                    unif = np.random.rand(1, self.n_samples)[0]
-
-                    # Reject the poorly performed prior
-                    Likelihoods = np.exp(logLikelihoods[:, itr_idx],
-                                         dtype=np.float64)
-                    accepted = (Likelihoods/np.max(Likelihoods)) >= unif
-                    posterior = self.samples[accepted]
-
-                    # Posterior-based expectation of likelihoods
-                    postExpLikelihoods = np.mean(
-                        logLikelihoods[:, itr_idx][accepted]
-                        )
-
-                    # Calculate Kullback-Leibler Divergence
-                    KLD[itr_idx] = postExpLikelihoods - log_BME[itr_idx]
-
-                # Posterior-based expectation of prior densities
-                if 'inf_entropy' in list(map(str.lower, self.valid_metrics)):
-                    n_thread = int(0.875 * multiprocessing.cpu_count())
-                    with multiprocessing.Pool(n_thread) as p:
-                        postExpPrior = np.mean(np.concatenate(
-                            p.map(
-                                self.engine.ExpDesign.JDist.pdf,
-                                np.array_split(posterior.T, n_thread, axis=1))
-                            )
-                            )
-                    # Information Entropy based on Entropy paper Eq. 38
-                    inf_entropy[itr_idx] = log_BME[itr_idx] - postExpPrior - \
-                        postExpLikelihoods
-
-                # Clear memory
-                gc.collect(generation=2)
-
-            # ---------- Store metrics for perturbed data set ----------------
-            # Likelihoods (Size: n_samples, n_bootstrap_itr)
-            self.log_likes = logLikelihoods
-
-            # BME (log), KLD, infEntropy (Size: 1,n_bootstrap_itr)
-            self.log_BME = log_BME
-
-            # BMECorrFactor (log) (Size: 1,n_bootstrap_itr)
-            if self.emulator:
-                self.log_BME_corr_factor = BME_Corr
-
-            if 'kld' in list(map(str.lower, self.valid_metrics)):
-                self.KLD = KLD
-            if 'inf_entropy' in list(map(str.lower, self.valid_metrics)):
-                self.inf_entropy = inf_entropy
-
-            # BME = BME + BMECorrFactor
-            if self.emulator:
-                self.log_BME += self.log_BME_corr_factor
-
-        # ---------------- Parameter Bayesian inference ----------------
-        if self.inference_method.lower() == 'mcmc':
-            # Instantiate the MCMC object
-            MCMC_Obj = MCMC(self)
-            self.posterior_df = MCMC_Obj.run_sampler(
-                self.measured_data, total_sigma2
-                )
-
-        elif self.name.lower() == 'valid':
-            # Convert to a dataframe if samples are provided after calibration.
-            self.posterior_df = pd.DataFrame(self.samples, columns=par_names)
-
-        else:
-            # Rejection sampling
-            self.posterior_df = self._rejection_sampling()
-
-        # Provide posterior's summary
-        print('\n')
-        print('-'*15 + 'Posterior summary' + '-'*15)
-        pd.options.display.max_columns = None
-        pd.options.display.max_rows = None
-        print(self.posterior_df.describe())
-        print('-'*50)
-
-        # -------- Model Discrepancy -----------
-        if hasattr(self, 'error_model') and self.error_model \
-           and self.name.lower() == 'calib':
-            if self.inference_method.lower() == 'mcmc':
-                self.error_MetaModel = MCMC_Obj.error_MetaModel
-            else:
-                # Select posterior mean as MAP
-                if opt_sigma == "B":
-                    posterior_df = self.posterior_df.values
-                else:
-                    posterior_df = self.posterior_df.values[:, :-Model.n_outputs]
-
-                # Select posterior mean as Maximum a posteriori
-                map_theta = posterior_df.mean(axis=0).reshape((1, n_params))
-                # map_theta = stats.mode(Posterior_df,axis=0)[0]
-
-                # Evaluate the (meta-)model at the MAP
-                y_MAP, y_std_MAP = MetaModel.eval_metamodel(samples=map_theta)
-
-                # Train a GPR meta-model using MAP
-                self.error_MetaModel = MetaModel.create_model_error(
-                    self.bias_inputs, y_MAP, Name=self.name
-                    )
-
-        # -------- Posterior perdictive -----------
-        self._posterior_predictive()
-
-        # -----------------------------------------------------
-        # ------------------ Visualization --------------------
-        # -----------------------------------------------------
-        # Create Output directory, if it doesn't exist already.
-        out_dir = f'Outputs_Bayes_{Model.name}_{self.name}'
-        os.makedirs(out_dir, exist_ok=True)
-
-        # -------- Posteior parameters --------
-        if opt_sigma != "B":
-            par_names.extend(
-                [self.Discrepancy.InputDisc.Marginals[i].name for i
-                 in range(len(self.Discrepancy.InputDisc.Marginals))]
-                )
-        # Pot with corner
-        figPosterior = corner.corner(self.posterior_df.to_numpy(),
-                                     labels=par_names,
-                                     quantiles=[0.15, 0.5, 0.85],
-                                     show_titles=True,
-                                     title_fmt=self.corner_title_fmt,
-                                     labelpad=0.2,
-                                     use_math_text=True,
-                                     title_kwargs={"fontsize": 28},
-                                     plot_datapoints=False,
-                                     plot_density=False,
-                                     fill_contours=True,
-                                     smooth=0.5,
-                                     smooth1d=0.5)
-
-        # Loop over axes and set x limits
-        if opt_sigma == "B":
-            axes = np.array(figPosterior.axes).reshape(
-                (len(par_names), len(par_names))
-                )
-            for yi in range(len(par_names)):
-                ax = axes[yi, yi]
-                ax.set_xlim(self.engine.ExpDesign.bound_tuples[yi])
-                for xi in range(yi):
-                    ax = axes[yi, xi]
-                    ax.set_xlim(self.engine.ExpDesign.bound_tuples[xi])
-        plt.close()
-
-        # Turn off gridlines
-        for ax in figPosterior.axes:
-            ax.grid(False)
-
-        if self.emulator:
-            plotname = f'/Posterior_Dist_{Model.name}_emulator'
-        else:
-            plotname = f'/Posterior_Dist_{Model.name}'
-
-        figPosterior.set_size_inches((24, 16))
-        figPosterior.savefig(f'./{out_dir}{plotname}.pdf',
-                             bbox_inches='tight')
-
-        # -------- Plot MAP --------
-        if self.plot_map_pred:
-            self._plot_max_a_posteriori()
-
-        # -------- Plot log_BME dist --------
-        if self.bootstrap:
-
-            # Computing the TOM performance
-            self.log_BME_tom = stats.chi2.rvs(
-                self.n_tot_measurement, size=self.log_BME.shape[0]
-                )
-
-            fig, ax = plt.subplots()
-            sns.kdeplot(self.log_BME_tom, ax=ax, color="green", shade=True)
-            sns.kdeplot(
-                self.log_BME, ax=ax, color="blue", shade=True,
-                label='Model BME')
-
-            ax.set_xlabel('log$_{10}$(BME)')
-            ax.set_ylabel('Probability density')
-
-            legend_elements = [
-                Patch(facecolor='green', edgecolor='green', label='TOM BME'),
-                Patch(facecolor='blue', edgecolor='blue', label='Model BME')
-                ]
-            ax.legend(handles=legend_elements)
-
-            if self.emulator:
-                plotname = f'/BME_hist_{Model.name}_emulator'
-            else:
-                plotname = f'/BME_hist_{Model.name}'
-
-            plt.savefig(f'./{out_dir}{plotname}.pdf', bbox_inches='tight')
-            plt.show()
-            plt.close()
-
-        # -------- Posteior perdictives --------
-        if self.plot_post_pred:
-            # Plot the posterior predictive
-            self._plot_post_predictive()
-
-        return self
-
-    # -------------------------------------------------------------------------
-    def _perturb_data(self, data, output_names):
-        """
-        Returns an array with n_bootstrap_itrs rowsof perturbed data.
-        The first row includes the original observation data.
-        If `self.bayes_loocv` is True, a 2d-array will be returned with
-        repeated rows and zero diagonal entries.
-
-        Parameters
-        ----------
-        data : pandas DataFrame
-            Observation data.
-        output_names : list
-            List of the output names.
-
-        Returns
-        -------
-        final_data : array
-            Perturbed data set.
-
-        """
-        noise_level = self.bootstrap_noise
-        obs_data = data[output_names].values
-        n_measurement, n_outs = obs_data.shape
-        self.n_tot_measurement = obs_data[~np.isnan(obs_data)].shape[0]
-        # Number of bootstrap iterations
-        if self.bayes_loocv:
-            self.n_bootstrap_itrs = self.n_tot_measurement
-
-        # Pass loocv dataset
-        if self.bayes_loocv:
-            obs = obs_data.T[~np.isnan(obs_data.T)]
-            final_data = np.repeat(np.atleast_2d(obs), self.n_bootstrap_itrs,
-                                   axis=0)
-            np.fill_diagonal(final_data, 0)
-            return final_data
-
-        else:
-            final_data = np.zeros(
-                (self.n_bootstrap_itrs, self.n_tot_measurement)
-                )
-            final_data[0] = obs_data.T[~np.isnan(obs_data.T)]
-            for itrIdx in range(1, self.n_bootstrap_itrs):
-                data = np.zeros((n_measurement, n_outs))
-                for idx in range(len(output_names)):
-                    std = np.nanstd(obs_data[:, idx])
-                    if std == 0:
-                        std = 0.001
-                    noise = std * noise_level
-                    data[:, idx] = np.add(
-                        obs_data[:, idx],
-                        np.random.normal(0, 1, obs_data.shape[0]) * noise,
-                    )
-
-                final_data[itrIdx] = data.T[~np.isnan(data.T)]
-
-            return final_data
-
-    # -------------------------------------------------------------------------
-    def _logpdf(self, x, mean, cov):
-        """
-        computes the likelihood based on a multivariate normal distribution.
-
-        Parameters
-        ----------
-        x : TYPE
-            DESCRIPTION.
-        mean : array_like
-            Observation data.
-        cov : 2d array
-            Covariance matrix of the distribution.
-
-        Returns
-        -------
-        log_lik : float
-            Log likelihood.
-
-        """
-        n = len(mean)
-        L = spla.cholesky(cov, lower=True)
-        beta = np.sum(np.log(np.diag(L)))
-        dev = x - mean
-        alpha = dev.dot(spla.cho_solve((L, True), dev))
-        log_lik = -0.5 * alpha - beta - n / 2. * np.log(2 * np.pi)
-        return log_lik
-
-    # -------------------------------------------------------------------------
-    def _eval_model(self, samples=None, key='MAP'):
-        """
-        Evaluates Forward Model.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params), optional
-            Parameter sets. The default is None.
-        key : str, optional
-            Key string to be passed to the run_model_parallel method.
-            The default is 'MAP'.
-
-        Returns
-        -------
-        model_outputs : dict
-            Model outputs.
-
-        """
-        MetaModel = self.MetaModel
-        Model = self.engine.Model
-
-        if samples is None:
-            self.samples = self.engine.ExpDesign.generate_samples(
-                self.n_samples, 'random')
-        else:
-            self.samples = samples
-            self.n_samples = len(samples)
-
-        model_outputs, _ = Model.run_model_parallel(
-            self.samples, key_str=key+self.name)
-
-        # Clean up
-        # Zip the subdirectories
-        try:
-            dir_name = f'{Model.name}MAP{self.name}'
-            key = dir_name + '_'
-            Model.zip_subdirs(dir_name, key)
-        except:
-            pass
-
-        return model_outputs
-
-    # -------------------------------------------------------------------------
-    def _kernel_rbf(self, X, hyperparameters):
-        """
-        Isotropic squared exponential kernel.
-
-        Higher l values lead to smoother functions and therefore to coarser
-        approximations of the training data. Lower l values make functions
-        more wiggly with wide uncertainty regions between training data points.
-
-        sigma_f controls the marginal variance of b(x)
-
-        Parameters
-        ----------
-        X : ndarray of shape (n_samples_X, n_features)
-
-        hyperparameters : Dict
-            Lambda characteristic length
-            sigma_f controls the marginal variance of b(x)
-            sigma_0 unresolvable error nugget term, interpreted as random
-                    error that cannot be attributed to measurement error.
-        Returns
-        -------
-        var_cov_matrix : ndarray of shape (n_samples_X,n_samples_X)
-            Kernel k(X, X).
-
-        """
-        from sklearn.gaussian_process.kernels import RBF
-        min_max_scaler = preprocessing.MinMaxScaler()
-        X_minmax = min_max_scaler.fit_transform(X)
-
-        nparams = len(hyperparameters)
-        # characteristic length (0,1]
-        Lambda = hyperparameters[0]
-        # sigma_f controls the marginal variance of b(x)
-        sigma2_f = hyperparameters[1]
-
-        # cov_matrix = sigma2_f*rbf_kernel(X_minmax, gamma = 1/Lambda**2)
-
-        rbf = RBF(length_scale=Lambda)
-        cov_matrix = sigma2_f * rbf(X_minmax)
-        if nparams > 2:
-            # (unresolvable error) nugget term that is interpreted as random
-            # error that cannot be attributed to measurement error.
-            sigma2_0 = hyperparameters[2:]
-            for i, j in np.ndindex(cov_matrix.shape):
-                cov_matrix[i, j] += np.sum(sigma2_0) if i == j else 0
-
-        return cov_matrix
-
-    # -------------------------------------------------------------------------
-    def normpdf(self, outputs, obs_data, total_sigma2s, sigma2=None, std=None):
-        """
-        Calculates the likelihood of simulation outputs compared with
-        observation data.
-
-        Parameters
-        ----------
-        outputs : dict
-            A dictionary containing the simulation outputs as array of shape
-            (n_samples, n_measurement) for each model output.
-        obs_data : dict
-            A dictionary/dataframe containing the observation data.
-        total_sigma2s : dict
-            A dictionary with known values of the covariance diagonal entries,
-            a.k.a sigma^2.
-        sigma2 : array, optional
-            An array of the sigma^2 samples, when the covariance diagonal
-            entries are unknown and are being jointly inferred. The default is
-            None.
-        std : dict, optional
-            A dictionary containing the root mean squared error as array of
-            shape (n_samples, n_measurement) for each model output. The default
-            is None.
-
-        Returns
-        -------
-        logLik : array of shape (n_samples)
-            Likelihoods.
-
-        """
-        Model = self.engine.Model
-        logLik = 0.0
-
-        # Extract the requested model outputs for likelihood calulation
-        if self.req_outputs is None:
-            req_outputs = Model.Output.names
-        else:
-            req_outputs = list(self.req_outputs)
-
-        # Loop over the outputs
-        for idx, out in enumerate(req_outputs):
-
-            # (Meta)Model Output
-            nsamples, nout = outputs[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout]
-
-            # Add the std of the PCE is chosen as emulator.
-            if self.emulator:
-                if std is not None:
-                    tot_sigma2s += std[out]**2
-
-            # Covariance Matrix
-            covMatrix = np.diag(tot_sigma2s)
-
-            # Select the data points to compare
-            try:
-                indices = self.selected_indices[out]
-            except:
-                indices = list(range(nout))
-            covMatrix = np.diag(covMatrix[indices, indices])
-
-            # If sigma2 is not given, use given total_sigma2s
-            if sigma2 is None:
-                logLik += stats.multivariate_normal.logpdf(
-                    outputs[out][:, indices], data[indices], covMatrix)
-                continue
-
-            # Loop over each run/sample and calculate logLikelihood
-            logliks = np.zeros(nsamples)
-            for s_idx in range(nsamples):
-
-                # Simulation run
-                tot_outputs = outputs[out]
-
-                # Covariance Matrix
-                covMatrix = np.diag(tot_sigma2s)
-
-                if sigma2 is not None:
-                    # Check the type error term
-                    if hasattr(self, 'bias_inputs') and \
-                       not hasattr(self, 'error_model'):
-                        # Infer a Bias model usig Gaussian Process Regression
-                        bias_inputs = np.hstack(
-                            (self.bias_inputs[out],
-                             tot_outputs[s_idx].reshape(-1, 1)))
-
-                        params = sigma2[s_idx, idx*3:(idx+1)*3]
-                        covMatrix = self._kernel_rbf(bias_inputs, params)
-                    else:
-                        # Infer equal sigma2s
-                        try:
-                            sigma_2 = sigma2[s_idx, idx]
-                        except TypeError:
-                            sigma_2 = 0.0
-
-                        covMatrix += sigma_2 * np.eye(nout)
-                        # covMatrix = np.diag(sigma2 * total_sigma2s)
-
-                # Select the data points to compare
-                try:
-                    indices = self.selected_indices[out]
-                except:
-                    indices = list(range(nout))
-                covMatrix = np.diag(covMatrix[indices, indices])
-
-                # Compute loglikelihood
-                logliks[s_idx] = self._logpdf(
-                    tot_outputs[s_idx, indices], data[indices], covMatrix
-                    )
-
-            logLik += logliks
-        return logLik
-
-    # -------------------------------------------------------------------------
-    def _corr_factor_BME_old(self, Data, total_sigma2s, posterior):
-        """
-        Calculates the correction factor for BMEs.
-        """
-        MetaModel = self.MetaModel
-        OrigModelOutput = self.engine.ExpDesign.Y
-        Model = self.engine.Model
-
-        # Posterior with guassian-likelihood
-        postDist = stats.gaussian_kde(posterior.T)
-
-        # Remove NaN
-        Data = Data[~np.isnan(Data)]
-        total_sigma2s = total_sigma2s[~np.isnan(total_sigma2s)]
-
-        # Covariance Matrix
-        covMatrix = np.diag(total_sigma2s[:self.n_tot_measurement])
-
-        # Extract the requested model outputs for likelihood calulation
-        if self.req_outputs is None:
-            OutputType = Model.Output.names
-        else:
-            OutputType = list(self.req_outputs)
-
-        # SampleSize = OrigModelOutput[OutputType[0]].shape[0]
-
-
-        # Flatten the OutputType for OrigModel
-        TotalOutputs = np.concatenate([OrigModelOutput[x] for x in OutputType], 1)
-
-        NrofBayesSamples = self.n_samples
-        # Evaluate MetaModel on the experimental design
-        Samples = self.engine.ExpDesign.X
-        OutputRS, stdOutputRS = MetaModel.eval_metamodel(samples=Samples)
-
-        # Reset the NrofSamples to NrofBayesSamples
-        self.n_samples = NrofBayesSamples
-
-        # Flatten the OutputType for MetaModel
-        TotalPCEOutputs = np.concatenate([OutputRS[x] for x in OutputRS], 1)
-        TotalPCEstdOutputRS= np.concatenate([stdOutputRS[x] for x in stdOutputRS], 1)
-
-        logweight = 0
-        for i, sample in enumerate(Samples):
-            # Compute likelilhood output vs RS
-            covMatrix = np.diag(TotalPCEstdOutputRS[i]**2)
-            logLik = self._logpdf(TotalOutputs[i], TotalPCEOutputs[i], covMatrix)
-            # Compute posterior likelihood of the collocation points
-            logpostLik = np.log(postDist.pdf(sample[:, None]))[0]
-            if logpostLik != -np.inf:
-                logweight += logLik + logpostLik
-        return logweight
-
-    # -------------------------------------------------------------------------
-    def __corr_factor_BME(self, obs_data, total_sigma2s, logBME):
-        """
-        Calculates the correction factor for BMEs.
-        """
-        MetaModel = self.MetaModel
-        samples = self.engine.ExpDesign.X
-        model_outputs = self.engine.ExpDesign.Y
-        Model = self.engine.Model
-        n_samples = samples.shape[0]
-
-        # Extract the requested model outputs for likelihood calulation
-        output_names = Model.Output.names
-
-        # Evaluate MetaModel on the experimental design and ValidSet
-        OutputRS, stdOutputRS = MetaModel.eval_metamodel(samples=samples)
-
-        logLik_data = np.zeros((n_samples))
-        logLik_model = np.zeros((n_samples))
-        # Loop over the outputs
-        for idx, out in enumerate(output_names):
-
-            # (Meta)Model Output
-            nsamples, nout = model_outputs[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout]
-
-            # Covariance Matrix
-            covMatrix_data = np.diag(tot_sigma2s)
-
-            for i, sample in enumerate(samples):
-
-                # Simulation run
-                y_m = model_outputs[out][i]
-
-                # Surrogate prediction
-                y_m_hat = OutputRS[out][i]
-
-                # CovMatrix with the surrogate error
-                covMatrix = np.eye(len(y_m)) * 1/(2*np.pi)
-
-                # Select the data points to compare
-                try:
-                    indices = self.selected_indices[out]
-                except:
-                    indices = list(range(nout))
-                covMatrix = np.diag(covMatrix[indices, indices])
-                covMatrix_data = np.diag(covMatrix_data[indices, indices])
-
-                # Compute likelilhood output vs data
-                logLik_data[i] += self._logpdf(
-                    y_m_hat[indices], data[indices],
-                    covMatrix_data
-                    )
-
-                # Compute likelilhood output vs surrogate
-                logLik_model[i] += self._logpdf(
-                    y_m_hat[indices], y_m[indices],
-                    covMatrix
-                    )
-
-        # Weight
-        logLik_data -= logBME
-        weights = np.mean(np.exp(logLik_model+logLik_data))
-
-        return np.log(weights)
-
-    # -------------------------------------------------------------------------
-    def _rejection_sampling(self):
-        """
-        Performs rejection sampling to update the prior distribution on the
-        input parameters.
-
-        Returns
-        -------
-        posterior : pandas.dataframe
-            Posterior samples of the input parameters.
-
-        """
-
-        MetaModel = self.MetaModel
-        try:
-            sigma2_prior = self.Discrepancy.sigma2_prior
-        except:
-            sigma2_prior = None
-
-        # Check if the discrepancy is defined as a distribution:
-        samples = self.samples
-
-        if sigma2_prior is not None:
-            samples = np.hstack((samples, sigma2_prior))
-
-        # Take the first column of Likelihoods (Observation data without noise)
-        if self.just_analysis or self.bayes_loocv:
-            index = self.n_tot_measurement-1
-            likelihoods = np.exp(self.log_likes[:, index], dtype=np.longdouble)#np.float128)
-        else:
-            likelihoods = np.exp(self.log_likes[:, 0], dtype=np.longdouble)#np.float128)
-
-        n_samples = len(likelihoods)
-        norm_ikelihoods = likelihoods / np.max(likelihoods)
-
-        # Normalize based on min if all Likelihoods are zero
-        if all(likelihoods == 0.0):
-            likelihoods = self.log_likes[:, 0]
-            norm_ikelihoods = likelihoods / np.min(likelihoods)
-
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, n_samples)[0]
-
-        # Reject the poorly performed prior
-        accepted_samples = samples[norm_ikelihoods >= unif]
-
-        # Output the Posterior
-        par_names = self.engine.ExpDesign.par_names
-        if sigma2_prior is not None:
-            for name in self.Discrepancy.name:
-                par_names.append(name)
-
-        return pd.DataFrame(accepted_samples, columns=sigma2_prior)
-
-    # -------------------------------------------------------------------------
-    def _posterior_predictive(self):
-        """
-        Stores the prior- and posterior predictive samples, i.e. model
-        evaluations using the samples, into hdf5 files.
-
-        priorPredictive.hdf5 : Prior predictive samples.
-        postPredictive_wo_noise.hdf5 : Posterior predictive samples without
-        the additive noise.
-        postPredictive.hdf5 : Posterior predictive samples with the additive
-        noise.
-
-        Returns
-        -------
-        None.
-
-        """
-
-        MetaModel = self.MetaModel
-        Model = self.engine.Model
-
-        # Make a directory to save the prior/posterior predictive
-        out_dir = f'Outputs_Bayes_{Model.name}_{self.name}'
-        os.makedirs(out_dir, exist_ok=True)
-
-        # Read observation data and perturb it if requested
-        if self.measured_data is None:
-            self.measured_data = Model.read_observation(case=self.name)
-
-        if not isinstance(self.measured_data, pd.DataFrame):
-            self.measured_data = pd.DataFrame(self.measured_data)
-
-        # X_values
-        x_values = self.engine.ExpDesign.x_values
-
-        try:
-            sigma2_prior = self.Discrepancy.sigma2_prior
-        except:
-            sigma2_prior = None
-
-        # Extract posterior samples
-        posterior_df = self.posterior_df
-
-        # Take care of the sigma2
-        if sigma2_prior is not None:
-            try:
-                sigma2s = posterior_df[self.Discrepancy.name].values
-                posterior_df = posterior_df.drop(
-                    labels=self.Discrepancy.name, axis=1
-                    )
-            except:
-                sigma2s = self.sigma2s
-
-        # Posterior predictive
-        if self.emulator:
-            if self.inference_method == 'rejection':
-                prior_pred = self.__mean_pce_prior_pred
-            if self.name.lower() != 'calib':
-                post_pred = self.__mean_pce_prior_pred
-                post_pred_std = self._std_pce_prior_pred
-            else:
-                post_pred, post_pred_std = MetaModel.eval_metamodel(
-                    samples=posterior_df.values
-                    )
-
-        else:
-            if self.inference_method == 'rejection':
-                prior_pred = self.__model_prior_pred
-            if self.name.lower() != 'calib':
-                post_pred = self.__mean_pce_prior_pred,
-                post_pred_std = self._std_pce_prior_pred
-            else:
-                post_pred = self._eval_model(
-                    samples=posterior_df.values, key='PostPred'
-                    )
-        # Correct the predictions with Model discrepancy
-        if hasattr(self, 'error_model') and self.error_model:
-            y_hat, y_std = self.error_MetaModel.eval_model_error(
-                self.bias_inputs, post_pred
-                )
-            post_pred, post_pred_std = y_hat, y_std
-
-        # Add discrepancy from likelihood Sample to the current posterior runs
-        total_sigma2 = self.Discrepancy.total_sigma2
-        post_pred_withnoise = copy.deepcopy(post_pred)
-        for varIdx, var in enumerate(Model.Output.names):
-            for i in range(len(post_pred[var])):
-                pred = post_pred[var][i]
-
-                # Known sigma2s
-                clean_sigma2 = total_sigma2[var][~np.isnan(total_sigma2[var])]
-                tot_sigma2 = clean_sigma2[:len(pred)]
-                cov = np.diag(tot_sigma2)
-
-                # Check the type error term
-                if sigma2_prior is not None:
-                    # Inferred sigma2s
-                    if hasattr(self, 'bias_inputs') and \
-                       not hasattr(self, 'error_model'):
-                        # TODO: Infer a Bias model usig GPR
-                        bias_inputs = np.hstack((
-                            self.bias_inputs[var], pred.reshape(-1, 1)))
-                        params = sigma2s[i, varIdx*3:(varIdx+1)*3]
-                        cov = self._kernel_rbf(bias_inputs, params)
-                    else:
-                        # Infer equal sigma2s
-                        try:
-                            sigma2 = sigma2s[i, varIdx]
-                        except TypeError:
-                            sigma2 = 0.0
-
-                        # Convert biasSigma2s to a covMatrix
-                        cov += sigma2 * np.eye(len(pred))
-
-                if self.emulator:
-                    if hasattr(MetaModel, 'rmse') and \
-                       MetaModel.rmse is not None:
-                        stdPCE = MetaModel.rmse[var]
-                    else:
-                        stdPCE = post_pred_std[var][i]
-                    # Expected value of variance (Assump: i.i.d stds)
-                    cov += np.diag(stdPCE**2)
-
-                # Sample a multivariate normal distribution with mean of
-                # prediction and variance of cov
-                post_pred_withnoise[var][i] = np.random.multivariate_normal(
-                    pred, cov, 1
-                    )
-
-        # ----- Prior Predictive -----
-        if self.inference_method.lower() == 'rejection':
-            # Create hdf5 metadata
-            hdf5file = f'{out_dir}/priorPredictive.hdf5'
-            hdf5_exist = os.path.exists(hdf5file)
-            if hdf5_exist:
-                os.remove(hdf5file)
-            file = h5py.File(hdf5file, 'a')
-
-            # Store x_values
-            if type(x_values) is dict:
-                grp_x_values = file.create_group("x_values/")
-                for varIdx, var in enumerate(Model.Output.names):
-                    grp_x_values.create_dataset(var, data=x_values[var])
-            else:
-                file.create_dataset("x_values", data=x_values)
-
-            # Store posterior predictive
-            grpY = file.create_group("EDY/")
-            for varIdx, var in enumerate(Model.Output.names):
-                grpY.create_dataset(var, data=prior_pred[var])
-
-        # ----- Posterior Predictive only model evaluations -----
-        # Create hdf5 metadata
-        hdf5file = out_dir+'/postPredictive_wo_noise.hdf5'
-        hdf5_exist = os.path.exists(hdf5file)
-        if hdf5_exist:
-            os.remove(hdf5file)
-        file = h5py.File(hdf5file, 'a')
-
-        # Store x_values
-        if type(x_values) is dict:
-            grp_x_values = file.create_group("x_values/")
-            for varIdx, var in enumerate(Model.Output.names):
-                grp_x_values.create_dataset(var, data=x_values[var])
-        else:
-            file.create_dataset("x_values", data=x_values)
-
-        # Store posterior predictive
-        grpY = file.create_group("EDY/")
-        for varIdx, var in enumerate(Model.Output.names):
-            grpY.create_dataset(var, data=post_pred[var])
-
-        # ----- Posterior Predictive with noise -----
-        # Create hdf5 metadata
-        hdf5file = out_dir+'/postPredictive.hdf5'
-        hdf5_exist = os.path.exists(hdf5file)
-        if hdf5_exist:
-            os.remove(hdf5file)
-        file = h5py.File(hdf5file, 'a')
-
-        # Store x_values
-        if type(x_values) is dict:
-            grp_x_values = file.create_group("x_values/")
-            for varIdx, var in enumerate(Model.Output.names):
-                grp_x_values.create_dataset(var, data=x_values[var])
-        else:
-            file.create_dataset("x_values", data=x_values)
-
-        # Store posterior predictive
-        grpY = file.create_group("EDY/")
-        for varIdx, var in enumerate(Model.Output.names):
-            grpY.create_dataset(var, data=post_pred_withnoise[var])
-
-        return
-
-    # -------------------------------------------------------------------------
-    def _plot_max_a_posteriori(self):
-        """
-        Plots the response of the model output against that of the metamodel at
-        the maximum a posteriori sample (mean or mode of posterior.)
-
-        Returns
-        -------
-        None.
-
-        """
-
-        MetaModel = self.MetaModel
-        Model = self.engine.Model
-        out_dir = f'Outputs_Bayes_{Model.name}_{self.name}'
-        opt_sigma = self.Discrepancy.opt_sigma
-
-        # -------- Find MAP and run MetaModel and origModel --------
-        # Compute the MAP
-        if self.max_a_posteriori.lower() == 'mean':
-            if opt_sigma == "B":
-                Posterior_df = self.posterior_df.values
-            else:
-                Posterior_df = self.posterior_df.values[:, :-Model.n_outputs]
-            map_theta = Posterior_df.mean(axis=0).reshape(
-                (1, MetaModel.n_params))
-        else:
-            map_theta = stats.mode(Posterior_df.values, axis=0)[0]
-        # Prin report
-        print("\nPoint estimator:\n", map_theta[0])
-
-        # Run the models for MAP
-        # MetaModel
-        map_metamodel_mean, map_metamodel_std = MetaModel.eval_metamodel(
-            samples=map_theta)
-        self.map_metamodel_mean = map_metamodel_mean
-        self.map_metamodel_std = map_metamodel_std
-
-        # origModel
-        map_orig_model = self._eval_model(samples=map_theta)
-        self.map_orig_model = map_orig_model
-
-        # Extract slicing index
-        x_values = map_orig_model['x_values']
-
-        # List of markers and colors
-        Color = ['k', 'b', 'g', 'r']
-        Marker = 'x'
-
-        # Create a PdfPages object
-        pdf = PdfPages(f'./{out_dir}MAP_PCE_vs_Model_{self.name}.pdf')
-        fig = plt.figure()
-        for i, key in enumerate(Model.Output.names):
-
-            y_val = map_orig_model[key]
-            y_pce_val = map_metamodel_mean[key]
-            y_pce_val_std = map_metamodel_std[key]
-
-            plt.plot(x_values, y_val, color=Color[i], marker=Marker,
-                     lw=2.0, label='$Y_{MAP}^{M}$')
-
-            plt.plot(
-                x_values, y_pce_val[i], color=Color[i], lw=2.0,
-                marker=Marker, linestyle='--', label='$Y_{MAP}^{PCE}$'
-                )
-            # plot the confidence interval
-            plt.fill_between(
-                x_values, y_pce_val[i] - 1.96*y_pce_val_std[i],
-                y_pce_val[i] + 1.96*y_pce_val_std[i],
-                color=Color[i], alpha=0.15
-                )
-
-            # Calculate the adjusted R_squared and RMSE
-            R2 = r2_score(y_pce_val.reshape(-1, 1), y_val.reshape(-1, 1))
-            rmse = np.sqrt(mean_squared_error(y_pce_val, y_val))
-
-            plt.ylabel(key)
-            plt.xlabel("Time [s]")
-            plt.title(f'Model vs MetaModel {key}')
-
-            ax = fig.axes[0]
-            leg = ax.legend(loc='best', frameon=True)
-            fig.canvas.draw()
-            p = leg.get_window_extent().inverse_transformed(ax.transAxes)
-            ax.text(
-                p.p0[1]-0.05, p.p1[1]-0.25,
-                f'RMSE = {rmse:.3f}\n$R^2$ = {R2:.3f}',
-                transform=ax.transAxes, color='black',
-                bbox=dict(facecolor='none', edgecolor='black',
-                          boxstyle='round,pad=1'))
-
-            plt.show()
-
-            # save the current figure
-            pdf.savefig(fig, bbox_inches='tight')
-
-            # Destroy the current plot
-            plt.clf()
-
-        pdf.close()
-
-    # -------------------------------------------------------------------------
-    def _plot_post_predictive(self):
-        """
-        Plots the posterior predictives against the observation data.
-
-        Returns
-        -------
-        None.
-
-        """
-
-        Model = self.engine.Model
-        out_dir = f'Outputs_Bayes_{Model.name}_{self.name}'
-        # Plot the posterior predictive
-        for out_idx, out_name in enumerate(Model.Output.names):
-            fig, ax = plt.subplots()
-            with sns.axes_style("ticks"):
-                x_key = list(self.measured_data)[0]
-
-                # --- Read prior and posterior predictive ---
-                if self.inference_method == 'rejection' and \
-                   self.name.lower() != 'valid':
-                    #  --- Prior ---
-                    # Load posterior predictive
-                    f = h5py.File(
-                        f'{out_dir}/priorPredictive.hdf5', 'r+')
-
-                    try:
-                        x_coords = np.array(f[f"x_values/{out_name}"])
-                    except:
-                        x_coords = np.array(f["x_values"])
-
-                    X_values = np.repeat(x_coords, 10000)
-
-                    prior_pred_df = {}
-                    prior_pred_df[x_key] = X_values
-                    prior_pred_df[out_name] = np.array(
-                        f[f"EDY/{out_name}"])[:10000].flatten('F')
-                    prior_pred_df = pd.DataFrame(prior_pred_df)
-
-                    tags_post = ['prior'] * len(prior_pred_df)
-                    prior_pred_df.insert(
-                        len(prior_pred_df.columns), "Tags", tags_post,
-                        True)
-                    f.close()
-
-                    # --- Posterior ---
-                    f = h5py.File(f"{out_dir}/postPredictive.hdf5", 'r+')
-
-                    X_values = np.repeat(
-                        x_coords, np.array(f[f"EDY/{out_name}"]).shape[0])
-
-                    post_pred_df = {}
-                    post_pred_df[x_key] = X_values
-                    post_pred_df[out_name] = np.array(
-                        f[f"EDY/{out_name}"]).flatten('F')
-
-                    post_pred_df = pd.DataFrame(post_pred_df)
-
-                    tags_post = ['posterior'] * len(post_pred_df)
-                    post_pred_df.insert(
-                        len(post_pred_df.columns), "Tags", tags_post, True)
-                    f.close()
-                    # Concatenate two dataframes based on x_values
-                    frames = [prior_pred_df, post_pred_df]
-                    all_pred_df = pd.concat(frames)
-
-                    # --- Plot posterior predictive ---
-                    sns.violinplot(
-                        x_key, y=out_name, data=all_pred_df, hue="Tags",
-                        legend=False, ax=ax, split=True, inner=None,
-                        color=".8")
-
-                    # --- Plot Data ---
-                    # Find the x,y coordinates for each point
-                    x_coords = np.arange(x_coords.shape[0])
-                    first_header = list(self.measured_data)[0]
-                    obs_data = self.measured_data.round({first_header: 6})
-                    sns.pointplot(
-                        x=first_header, y=out_name, color='g', markers='x',
-                        linestyles='', capsize=16, data=obs_data, ax=ax)
-
-                    ax.errorbar(
-                        x_coords, obs_data[out_name].values,
-                        yerr=1.96*self.measurement_error[out_name],
-                        ecolor='g', fmt=' ', zorder=-1)
-
-                    # Add labels to the legend
-                    handles, labels = ax.get_legend_handles_labels()
-                    labels.append('Data')
-
-                    data_marker = mlines.Line2D(
-                        [], [], color='lime', marker='+', linestyle='None',
-                        markersize=10)
-                    handles.append(data_marker)
-
-                    # Add legend
-                    ax.legend(handles=handles, labels=labels, loc='best',
-                              fontsize='large', frameon=True)
-
-                else:
-                    # Load posterior predictive
-                    f = h5py.File(f"{out_dir}/postPredictive.hdf5", 'r+')
-
-                    try:
-                        x_coords = np.array(f[f"x_values/{out_name}"])
-                    except:
-                        x_coords = np.array(f["x_values"])
-
-                    mu = np.mean(np.array(f[f"EDY/{out_name}"]), axis=0)
-                    std = np.std(np.array(f[f"EDY/{out_name}"]), axis=0)
-
-                    # --- Plot posterior predictive ---
-                    plt.plot(
-                        x_coords, mu, marker='o', color='b',
-                        label='Mean Post. Predictive')
-                    plt.fill_between(
-                        x_coords, mu-1.96*std, mu+1.96*std, color='b',
-                        alpha=0.15)
-
-                    # --- Plot Data ---
-                    ax.plot(
-                        x_coords, self.measured_data[out_name].values,
-                        'ko', label='data', markeredgecolor='w')
-
-                    # --- Plot ExpDesign ---
-                    orig_ED_Y = self.engine.ExpDesign.Y[out_name]
-                    for output in orig_ED_Y:
-                        plt.plot(
-                            x_coords, output, color='grey', alpha=0.15
-                            )
-
-                    # Add labels for axes
-                    plt.xlabel('Time [s]')
-                    plt.ylabel(out_name)
-
-                    # Add labels to the legend
-                    handles, labels = ax.get_legend_handles_labels()
-
-                    patch = Patch(color='b', alpha=0.15)
-                    handles.insert(1, patch)
-                    labels.insert(1, '95 $\\%$ CI')
-
-                    # Add legend
-                    ax.legend(handles=handles, labels=labels, loc='best',
-                              frameon=True)
-
-                # Save figure in pdf format
-                if self.emulator:
-                    plotname = f'/Post_Prior_Perd_{Model.name}_emulator'
-                else:
-                    plotname = f'/Post_Prior_Perd_{Model.name}'
-
-                fig.savefig(f'./{out_dir}{plotname}_{out_name}.pdf',
-                            bbox_inches='tight')
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/bayes_model_comparison.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/bayes_model_comparison.py
deleted file mode 100644
index b946281c5..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/bayes_model_comparison.py	
+++ /dev/null
@@ -1,658 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Created on Sat Aug 24 16:04:06 2019
-
-@author: farid
-"""
-import numpy as np
-import os
-from scipy import stats
-import seaborn as sns
-import matplotlib.patches as patches
-import matplotlib.colors as mcolors
-import matplotlib.pylab as plt
-from .bayes_inference import BayesInference
-
-# Load the mplstyle
-plt.style.use(os.path.join(os.path.split(__file__)[0],
-                           '../', 'bayesvalidrox.mplstyle'))
-
-
-class BayesModelComparison:
-    """
-    A class to perform Bayesian Analysis.
-
-
-    Attributes
-    ----------
-    justifiability : bool, optional
-        Whether to perform the justifiability analysis. The default is
-        `True`.
-    perturbed_data : array of shape (n_bootstrap_itrs, n_obs), optional
-        User defined perturbed data. The default is `None`.
-    n_bootstarp : int
-        Number of bootstrap iteration. The default is `1000`.
-    data_noise_level : float
-        A noise level to perturb the data set. The default is `0.01`.
-    just_n_meas : int
-        Number of measurements considered for visualization of the
-        justifiability results.
-
-    """
-
-    def __init__(self, justifiability=True, perturbed_data=None,
-                 n_bootstarp=1000, data_noise_level=0.01, just_n_meas=2):
-
-        self.justifiability = justifiability
-        self.perturbed_data = perturbed_data
-        self.n_bootstarp = n_bootstarp
-        self.data_noise_level = data_noise_level
-        self.just_n_meas = just_n_meas
-
-    # --------------------------------------------------------------------------
-    def create_model_comparison(self, model_dict, opts_dict):
-        """
-        Starts the two-stage model comparison.
-        Stage I: Compare models using Bayes factors.
-        Stage II: Compare models via justifiability analysis.
-
-        Parameters
-        ----------
-        model_dict : dict
-            A dictionary including the metamodels.
-        opts_dict : dict
-            A dictionary given the `BayesInference` options.
-
-            Example:
-
-                >>> opts_bootstrap = {
-                    "bootstrap": True,
-                    "n_samples": 10000,
-                    "Discrepancy": DiscrepancyOpts,
-                    "emulator": True,
-                    "plot_post_pred": True
-                    }
-
-        Returns
-        -------
-        output : dict
-            A dictionary containing the objects and the model weights for the
-            comparison using Bayes factors and justifiability analysis.
-
-        """
-
-        # Bayes factor
-        bayes_dict_bf, model_weights_dict_bf = self.compare_models(
-            model_dict, opts_dict
-            )
-
-        output = {
-            'Bayes objects BF': bayes_dict_bf,
-            'Model weights BF': model_weights_dict_bf
-            }
-
-        # Justifiability analysis
-        if self.justifiability:
-            bayes_dict_ja, model_weights_dict_ja = self.compare_models(
-                model_dict, opts_dict, justifiability=True
-                )
-
-            output['Bayes objects JA'] = bayes_dict_ja
-            output['Model weights JA'] = model_weights_dict_ja
-
-        return output
-
-    # --------------------------------------------------------------------------
-    def compare_models(self, model_dict, opts_dict, justifiability=False):
-        """
-        Passes the options to instantiates the BayesInference class for each
-        model and passes the options from `opts_dict`. Then, it starts the
-        computations.
-        It also creates a folder and saves the diagrams, e.g., Bayes factor
-        plot, confusion matrix, etc.
-
-        Parameters
-        ----------
-        model_dict : dict
-            A dictionary including the metamodels.
-        opts_dict : dict
-            A dictionary given the `BayesInference` options.
-        justifiability : bool, optional
-            Whether to perform the justifiability analysis. The default is
-            `False`.
-
-        Returns
-        -------
-        bayes_dict : dict
-            A dictionary with `BayesInference` objects.
-        model_weights_dict : dict
-            A dictionary containing the model weights.
-
-        """
-
-        if not isinstance(model_dict, dict):
-            raise Exception("To run model comparsion, you need to pass a "
-                            "dictionary of models.")
-
-        # Extract model names
-        self.model_names = [*model_dict]
-
-        # Compute total number of the measurement points
-        Engine = list(model_dict.items())[0][1]
-        Engine.Model.read_observation()
-        self.n_meas = Engine.Model.n_obs
-
-        # ----- Generate data -----
-        # Find n_bootstrap
-        if self.perturbed_data is None:
-            n_bootstarp = self.n_bootstarp
-        else:
-            n_bootstarp = self.perturbed_data.shape[0]
-
-        # Create dataset
-        justData = self.generate_dataset(
-            model_dict, justifiability, n_bootstarp=n_bootstarp)
-
-        # Run create Interface for each model
-        bayes_dict = {}
-        for model in model_dict.keys():
-            print("-"*20)
-            print("Bayesian inference of {}.\n".format(model))
-
-            BayesOpts = BayesInference(model_dict[model])
-
-            # Set BayesInference options
-            for key, value in opts_dict.items():
-                if key in BayesOpts.__dict__.keys():
-                    if key == "Discrepancy" and isinstance(value, dict):
-                        setattr(BayesOpts, key, value[model])
-                    else:
-                        setattr(BayesOpts, key, value)
-
-            # Pass justifiability data as perturbed data
-            BayesOpts.perturbed_data = justData
-            BayesOpts.just_analysis = justifiability
-
-            bayes_dict[model] = BayesOpts.create_inference()
-            print("-"*20)
-
-        # Compute model weights
-        BME_Dict = dict()
-        for modelName, bayesObj in bayes_dict.items():
-            BME_Dict[modelName] = np.exp(bayesObj.log_BME, dtype=np.longdouble)#float128)
-
-        # BME correction in BayesInference class
-        model_weights = self.cal_model_weight(
-            BME_Dict, justifiability, n_bootstarp=n_bootstarp)
-
-        # Plot model weights
-        if justifiability:
-            model_names = self.model_names
-            model_names.insert(0, 'Observation')
-
-            # Split the model weights and save in a dict
-            list_ModelWeights = np.split(
-                model_weights, model_weights.shape[1]/self.n_meas, axis=1)
-            model_weights_dict = {key: weights for key, weights in
-                                  zip(model_names, list_ModelWeights)}
-
-            #self.plot_just_analysis(model_weights_dict)
-        else:
-            # Create box plot for model weights
-            self.plot_model_weights(model_weights, 'model_weights')
-
-            # Create kde plot for bayes factors
-            self.plot_bayes_factor(BME_Dict, 'kde_plot')
-
-            # Store model weights in a dict
-            model_weights_dict = {key: weights for key, weights in
-                                  zip(self.model_names, model_weights)}
-
-        return bayes_dict, model_weights_dict
-
-    # -------------------------------------------------------------------------
-    def generate_dataset(self, model_dict, justifiability=False,
-                         n_bootstarp=1):
-        """
-        Generates the perturbed data set for the Bayes factor calculations and
-        the data set for the justifiability analysis.
-
-        Parameters
-        ----------
-        model_dict : dict
-            A dictionary including the metamodels.
-        bool, optional
-            Whether to perform the justifiability analysis. The default is
-            `False`.
-        n_bootstarp : int, optional
-            Number of bootstrap iterations. The default is `1`.
-
-        Returns
-        -------
-        all_just_data: array
-            Created data set.
-
-        """
-        # Compute some variables
-        all_just_data = []
-        Engine = list(model_dict.items())[0][1]
-        out_names = Engine.Model.Output.names
-
-        # Perturb observations for Bayes Factor
-        if self.perturbed_data is None:
-            self.perturbed_data = self.__perturb_data(
-                    Engine.Model.observations, out_names, n_bootstarp,
-                    noise_level=self.data_noise_level)
-
-        # Only for Bayes Factor
-        if not justifiability:
-            return self.perturbed_data
-
-        # Evaluate metamodel
-        runs = {}
-        for key, metaModel in model_dict.items():
-            y_hat, _ = metaModel.eval_metamodel(nsamples=n_bootstarp)
-            runs[key] = y_hat
-
-        # Generate data
-        for i in range(n_bootstarp):
-            y_data = self.perturbed_data[i].reshape(1, -1)
-            justData = np.tril(np.repeat(y_data, y_data.shape[1], axis=0))
-            # Use surrogate runs for data-generating process
-            for key, metaModel in model_dict.items():
-                model_data = np.array(
-                    [runs[key][out][i] for out in out_names]).reshape(y_data.shape)
-                justData = np.vstack((
-                    justData,
-                    np.tril(np.repeat(model_data, model_data.shape[1], axis=0))
-                    ))
-            # Save in a list
-            all_just_data.append(justData)
-
-        # Squeeze the array
-        all_just_data = np.array(all_just_data).transpose(1, 0, 2).reshape(
-            -1, np.array(all_just_data).shape[2]
-            )
-
-        return all_just_data
-
-    # -------------------------------------------------------------------------
-    def __perturb_data(self, data, output_names, n_bootstrap, noise_level):
-        """
-        Returns an array with n_bootstrap_itrs rowsof perturbed data.
-        The first row includes the original observation data.
-        If `self.bayes_loocv` is True, a 2d-array will be returned with
-        repeated rows and zero diagonal entries.
-
-        Parameters
-        ----------
-        data : pandas DataFrame
-            Observation data.
-        output_names : list
-            List of the output names.
-
-        Returns
-        -------
-        final_data : array
-            Perturbed data set.
-
-        """
-        obs_data = data[output_names].values
-        n_measurement, n_outs = obs_data.shape
-        n_tot_measurement = obs_data[~np.isnan(obs_data)].shape[0]
-        final_data = np.zeros(
-            (n_bootstrap, n_tot_measurement)
-            )
-        final_data[0] = obs_data.T[~np.isnan(obs_data.T)]
-        for itrIdx in range(1, n_bootstrap):
-            data = np.zeros((n_measurement, n_outs))
-            for idx in range(len(output_names)):
-                std = np.nanstd(obs_data[:, idx])
-                if std == 0:
-                    std = 0.001
-                noise = std * noise_level
-                data[:, idx] = np.add(
-                    obs_data[:, idx],
-                    np.random.normal(0, 1, obs_data.shape[0]) * noise,
-                )
-
-            final_data[itrIdx] = data.T[~np.isnan(data.T)]
-
-        return final_data
-
-    # -------------------------------------------------------------------------
-    def cal_model_weight(self, BME_Dict, justifiability=False, n_bootstarp=1):
-        """
-        Normalize the BME (Asumption: Model Prior weights are equal for models)
-
-        Parameters
-        ----------
-        BME_Dict : dict
-            A dictionary containing the BME values.
-
-        Returns
-        -------
-        model_weights : array
-            Model weights.
-
-        """
-        # Stack the BME values for all models
-        all_BME = np.vstack(list(BME_Dict.values()))
-
-        if justifiability:
-            # Compute expected log_BME for justifiabiliy analysis
-            all_BME = all_BME.reshape(
-                all_BME.shape[0], -1, n_bootstarp).mean(axis=2)
-
-        # Model weights
-        model_weights = np.divide(all_BME, np.nansum(all_BME, axis=0))
-
-        return model_weights
-
-    # -------------------------------------------------------------------------
-    def plot_just_analysis(self, model_weights_dict):
-        """
-        Visualizes the confusion matrix and the model wights for the
-        justifiability analysis.
-
-        Parameters
-        ----------
-        model_weights_dict : dict
-            Model weights.
-
-        Returns
-        -------
-        None.
-
-        """
-
-        directory = 'Outputs_Comparison/'
-        os.makedirs(directory, exist_ok=True)
-        Color = [*mcolors.TABLEAU_COLORS]
-        names = [*model_weights_dict]
-
-        model_names = [model.replace('_', '$-$') for model in self.model_names]
-        for name in names:
-            fig, ax = plt.subplots()
-            for i, model in enumerate(model_names[1:]):
-                plt.plot(list(range(1, self.n_meas+1)),
-                         model_weights_dict[name][i],
-                         color=Color[i], marker='o',
-                         ms=10, linewidth=2, label=model
-                         )
-
-            plt.title(f"Data generated by: {name.replace('_', '$-$')}")
-            plt.ylabel("Weights")
-            plt.xlabel("No. of measurement points")
-            ax.set_xticks(list(range(1, self.n_meas+1)))
-            plt.legend(loc="best")
-            fig.savefig(
-                f'{directory}modelWeights_{name}.svg', bbox_inches='tight'
-                )
-            plt.close()
-
-        # Confusion matrix for some measurement points
-        epsilon = 1 if self.just_n_meas != 1 else 0
-        for index in range(0, self.n_meas+epsilon, self.just_n_meas):
-            weights = np.array(
-                [model_weights_dict[key][:, index] for key in model_weights_dict]
-                )
-            g = sns.heatmap(
-                weights.T, annot=True, cmap='Blues', xticklabels=model_names,
-                yticklabels=model_names[1:], annot_kws={"size": 24}
-                )
-
-            # x axis on top
-            g.xaxis.tick_top()
-            g.xaxis.set_label_position('top')
-            g.set_xlabel(r"\textbf{Data generated by:}", labelpad=15)
-            g.set_ylabel(r"\textbf{Model weight for:}", labelpad=15)
-            g.figure.savefig(
-                f"{directory}confusionMatrix_ND_{index+1}.pdf",
-                bbox_inches='tight'
-                )
-            plt.close()
-
-    # -------------------------------------------------------------------------
-    def plot_model_weights(self, model_weights, plot_name):
-        """
-        Visualizes the model weights resulting from BMS via the observation
-        data.
-
-        Parameters
-        ----------
-        model_weights : array
-            Model weights.
-        plot_name : str
-            Plot name.
-
-        Returns
-        -------
-        None.
-
-        """
-        font_size = 40
-        # mkdir for plots
-        directory = 'Outputs_Comparison/'
-        os.makedirs(directory, exist_ok=True)
-
-        # Create figure
-        fig, ax = plt.subplots()
-
-        # Filter data using np.isnan
-        mask = ~np.isnan(model_weights.T)
-        filtered_data = [d[m] for d, m in zip(model_weights, mask.T)]
-
-        # Create the boxplot
-        bp = ax.boxplot(filtered_data, patch_artist=True, showfliers=False)
-
-        # change outline color, fill color and linewidth of the boxes
-        for box in bp['boxes']:
-            # change outline color
-            box.set(color='#7570b3', linewidth=4)
-            # change fill color
-            box.set(facecolor='#1b9e77')
-
-        # change color and linewidth of the whiskers
-        for whisker in bp['whiskers']:
-            whisker.set(color='#7570b3', linewidth=2)
-
-        # change color and linewidth of the caps
-        for cap in bp['caps']:
-            cap.set(color='#7570b3', linewidth=2)
-
-        # change color and linewidth of the medians
-        for median in bp['medians']:
-            median.set(color='#b2df8a', linewidth=2)
-
-        # change the style of fliers and their fill
-        # for flier in bp['fliers']:
-        #     flier.set(marker='o', color='#e7298a', alpha=0.75)
-
-        # Custom x-axis labels
-        model_names = [model.replace('_', '$-$') for model in self.model_names]
-        ax.set_xticklabels(model_names)
-
-        ax.set_ylabel('Weight', fontsize=font_size)
-
-        # Title
-        plt.title('Posterior Model Weights')
-
-        # Set y lim
-        ax.set_ylim((-0.05, 1.05))
-
-        # Set size of the ticks
-        for t in ax.get_xticklabels():
-            t.set_fontsize(font_size)
-        for t in ax.get_yticklabels():
-            t.set_fontsize(font_size)
-
-        # Save the figure
-        fig.savefig(
-            f'./{directory}{plot_name}.pdf', bbox_inches='tight'
-            )
-
-        plt.close()
-
-    # -------------------------------------------------------------------------
-    def plot_bayes_factor(self, BME_Dict, plot_name=''):
-        """
-        Plots the Bayes factor distibutions in a :math:`N_m \\times N_m`
-        matrix, where :math:`N_m` is the number of the models.
-
-        Parameters
-        ----------
-        BME_Dict : dict
-            A dictionary containing the BME values of the models.
-        plot_name : str, optional
-            Plot name. The default is ''.
-
-        Returns
-        -------
-        None.
-
-        """
-
-        font_size = 40
-
-        # mkdir for plots
-        directory = 'Outputs_Comparison/'
-        os.makedirs(directory, exist_ok=True)
-
-        Colors = ["blue", "green", "gray", "brown"]
-
-        model_names = list(BME_Dict.keys())
-        nModels = len(model_names)
-
-        # Plots
-        fig, axes = plt.subplots(
-            nrows=nModels, ncols=nModels, sharex=True, sharey=True
-            )
-
-        for i, key_i in enumerate(model_names):
-
-            for j, key_j in enumerate(model_names):
-                ax = axes[i, j]
-                # Set size of the ticks
-                for t in ax.get_xticklabels():
-                    t.set_fontsize(font_size)
-                for t in ax.get_yticklabels():
-                    t.set_fontsize(font_size)
-
-                if j != i:
-
-                    # Null hypothesis: key_j is the better model
-                    BayesFactor = np.log10(
-                        np.divide(BME_Dict[key_i], BME_Dict[key_j])
-                        )
-
-                    # sns.kdeplot(BayesFactor, ax=ax, color=Colors[i], shade=True)
-                    # sns.histplot(BayesFactor, ax=ax, stat="probability",
-                    #              kde=True, element='step',
-                    #              color=Colors[j])
-
-                    # taken from seaborn's source code (utils.py and
-                    # distributions.py)
-                    def seaborn_kde_support(data, bw, gridsize, cut, clip):
-                        if clip is None:
-                            clip = (-np.inf, np.inf)
-                        support_min = max(data.min() - bw * cut, clip[0])
-                        support_max = min(data.max() + bw * cut, clip[1])
-                        return np.linspace(support_min, support_max, gridsize)
-
-                    kde_estim = stats.gaussian_kde(
-                        BayesFactor, bw_method='scott'
-                        )
-
-                    # manual linearization of data
-                    # linearized = np.linspace(
-                    #     quotient.min(), quotient.max(), num=500)
-
-                    # or better: mimic seaborn's internal stuff
-                    bw = kde_estim.scotts_factor() * np.std(BayesFactor)
-                    linearized = seaborn_kde_support(
-                        BayesFactor, bw, 100, 3, None)
-
-                    # computes values of the estimated function on the
-                    # estimated linearized inputs
-                    Z = kde_estim.evaluate(linearized)
-
-                    # https://stackoverflow.com/questions/29661574/normalize-
-                    # numpy-array-columns-in-python
-                    def normalize(x):
-                        return (x - x.min(0)) / x.ptp(0)
-
-                    # normalize so it is between 0;1
-                    Z2 = normalize(Z)
-                    ax.plot(linearized, Z2, "-", color=Colors[i], linewidth=4)
-                    ax.fill_between(
-                        linearized, 0, Z2, color=Colors[i], alpha=0.25
-                        )
-
-                    # Draw BF significant levels according to Jeffreys 1961
-                    # Strong evidence for both models
-                    ax.axvline(
-                        x=np.log10(3), ymin=0, linewidth=4, color='dimgrey'
-                        )
-                    # Strong evidence for one model
-                    ax.axvline(
-                        x=np.log10(10), ymin=0, linewidth=4, color='orange'
-                        )
-                    # Decisive evidence for one model
-                    ax.axvline(
-                        x=np.log10(100), ymin=0, linewidth=4, color='r'
-                        )
-
-                    # legend
-                    BF_label = key_i.replace('_', '$-$') + \
-                        '/' + key_j.replace('_', '$-$')
-                    legend_elements = [
-                        patches.Patch(facecolor=Colors[i], edgecolor=Colors[i],
-                                      label=f'BF({BF_label})')
-                        ]
-                    ax.legend(
-                        loc='upper left', handles=legend_elements,
-                        fontsize=font_size-(nModels+1)*5
-                        )
-
-                elif j == i:
-                    # build a rectangle in axes coords
-                    left, width = 0, 1
-                    bottom, height = 0, 1
-
-                    # axes coordinates are 0,0 is bottom left and 1,1 is upper
-                    # right
-                    p = patches.Rectangle(
-                        (left, bottom), width, height, color='white',
-                        fill=True, transform=ax.transAxes, clip_on=False
-                        )
-                    ax.grid(False)
-                    ax.add_patch(p)
-                    # ax.text(0.5*(left+right), 0.5*(bottom+top), key_i,
-                    fsize = font_size+20 if nModels < 4 else font_size
-                    ax.text(0.5, 0.5, key_i.replace('_', '$-$'),
-                            horizontalalignment='center',
-                            verticalalignment='center',
-                            fontsize=fsize, color=Colors[i],
-                            transform=ax.transAxes)
-
-        # Defining custom 'ylim' values.
-        custom_ylim = (0, 1.05)
-
-        # Setting the values for all axes.
-        plt.setp(axes, ylim=custom_ylim)
-
-        # set labels
-        for i in range(nModels):
-            axes[-1, i].set_xlabel('log$_{10}$(BF)', fontsize=font_size)
-            axes[i, 0].set_ylabel('Probability', fontsize=font_size)
-
-        # Adjust subplots
-        plt.subplots_adjust(wspace=0.2, hspace=0.1)
-
-        plt.savefig(
-            f'./{directory}Bayes_Factor{plot_name}.pdf', bbox_inches='tight'
-            )
-
-        plt.close()
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/discrepancy.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/discrepancy.py
deleted file mode 100644
index ac1b400c1..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/discrepancy.py	
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import scipy.stats as stats
-from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns
-
-
-class Discrepancy:
-    """
-    Discrepancy class for Bayesian inference method.
-    We define the reference or reality to be equal to what we can model and a
-    descripancy term \\( \\epsilon \\). We consider the followin format:
-
-    $$\\textbf{y}_{\\text{reality}} = \\mathcal{M}(\\theta) + \\epsilon,$$
-
-    where \\( \\epsilon \\in R^{N_{out}} \\) represents the the effects of
-    measurement error and model inaccuracy. For simplicity, it can be defined
-    as an additive Gaussian disrepancy with zeromean and given covariance
-    matrix \\( \\Sigma \\):
-
-    $$\\epsilon \\sim \\mathcal{N}(\\epsilon|0, \\Sigma). $$
-
-    In the context of model inversion or calibration, an observation point
-    \\( \\textbf{y}_i \\in \\mathcal{y} \\) is a realization of a Gaussian
-    distribution with mean value of \\(\\mathcal{M}(\\theta) \\) and covariance
-    matrix of \\( \\Sigma \\).
-
-    $$ p(\\textbf{y}|\\theta) = \\mathcal{N}(\\textbf{y}|\\mathcal{M}
-                                             (\\theta))$$
-
-    The following options are available:
-
-    * Option A: With known redidual covariance matrix \\(\\Sigma\\) for
-    independent measurements.
-
-    * Option B: With unknown redidual covariance matrix \\(\\Sigma\\),
-    paramethrized as \\(\\Sigma(\\theta_{\\epsilon})=\\sigma^2 \\textbf{I}_
-    {N_{out}}\\) with unknown residual variances \\(\\sigma^2\\).
-    This term will be jointly infer with the uncertain input parameters. For
-    the inversion, you need to define a prior marginal via `Input` class. Note
-    that \\(\\sigma^2\\) is only a single scalar multiplier for the diagonal
-    entries of the covariance matrix \\(\\Sigma\\).
-
-    Attributes
-    ----------
-    InputDisc : obj
-        Input object. When the \\(\\sigma^2\\) is expected to be inferred
-        jointly with the parameters (`Option B`).If multiple output groups are
-        defined by `Model.Output.names`, each model output needs to have.
-        a prior marginal using the `Input` class. The default is `''`.
-    disc_type : str
-        Type of the noise definition. `'Gaussian'` is only supported so far.
-    parameters : dict or pandas.DataFrame
-        Known residual variance \\(\\sigma^2\\), i.e. diagonal entry of the
-        covariance matrix of the multivariate normal likelihood in case of
-        `Option A`.
-
-    """
-
-    def __init__(self, InputDisc='', disc_type='Gaussian', parameters=None):
-        self.InputDisc = InputDisc
-        self.disc_type = disc_type
-        self.parameters = parameters
-
-    # -------------------------------------------------------------------------
-    def get_sample(self, n_samples):
-        """
-        Generate samples for the \\(\\sigma^2\\), i.e. the diagonal entries of
-        the variance-covariance matrix in the multivariate normal distribution.
-
-        Parameters
-        ----------
-        n_samples : int
-            Number of samples (parameter sets).
-
-        Returns
-        -------
-        sigma2_prior: array of shape (n_samples, n_params)
-            \\(\\sigma^2\\) samples.
-
-        """
-        self.n_samples = n_samples # TODO: not used again in here - needed from the outside?
-        
-        # Create and store BoundTuples
-        self.ExpDesign = ExpDesigns(self.InputDisc)
-        self.ExpDesign.sampling_method = 'random'
-        self.ExpDesign.generate_ED(
-            n_samples, max_pce_deg=1
-            )
-        # TODO: need to recheck the following line
-        # This used to simply be the return from the call above
-        self.sigma2_prior = self.ExpDesign.X
-
-        # Naive approach: Fit a gaussian kernel to the provided data
-        self.ExpDesign.JDist = stats.gaussian_kde(self.ExpDesign.raw_data)
-
-        # Save the names of sigmas
-        if len(self.InputDisc.Marginals) != 0:
-            self.name = []
-            for Marginalidx in range(len(self.InputDisc.Marginals)):
-                self.name.append(self.InputDisc.Marginals[Marginalidx].name)
-
-        return self.sigma2_prior
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/mcmc.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/mcmc.py
deleted file mode 100644
index fe22a152f..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayes_inference/mcmc.py	
+++ /dev/null
@@ -1,909 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import os
-import numpy as np
-import emcee
-import pandas as pd
-import matplotlib.pyplot as plt
-from matplotlib.backends.backend_pdf import PdfPages
-import multiprocessing
-import scipy.stats as st
-from scipy.linalg import cholesky as chol
-import warnings
-import shutil
-os.environ["OMP_NUM_THREADS"] = "1"
-
-
-class MCMC:
-    """
-    A class for bayesian inference via a Markov-Chain Monte-Carlo (MCMC)
-    Sampler to approximate the posterior distribution of the Bayes theorem:
-    $$p(\\theta|\\mathcal{y}) = \\frac{p(\\mathcal{y}|\\theta) p(\\theta)}
-                                         {p(\\mathcal{y})}.$$
-
-    This class make inference with emcee package [1] using an Affine Invariant
-    Ensemble sampler (AIES) [2].
-
-    [1] Foreman-Mackey, D., Hogg, D.W., Lang, D. and Goodman, J., 2013.emcee:
-        the MCMC hammer. Publications of the Astronomical Society of the
-        Pacific, 125(925), p.306. https://emcee.readthedocs.io/en/stable/
-
-    [2] Goodman, J. and Weare, J., 2010. Ensemble samplers with affine
-        invariance. Communications in applied mathematics and computational
-        science, 5(1), pp.65-80.
-
-
-    Attributes
-    ----------
-    BayesOpts : obj
-        Bayes object.
-    """
-
-    def __init__(self, BayesOpts):
-
-        self.BayesOpts = BayesOpts
-
-    def run_sampler(self, observation, total_sigma2):
-
-        BayesObj = self.BayesOpts
-        MetaModel = BayesObj.engine.MetaModel
-        Model = BayesObj.engine.Model
-        Discrepancy = self.BayesOpts.Discrepancy
-        n_cpus = Model.n_cpus
-        priorDist = BayesObj.engine.ExpDesign.JDist
-        ndim = MetaModel.n_params
-        self.counter = 0
-        output_dir = f'Outputs_Bayes_{Model.name}_{self.BayesOpts.name}'
-        if not os.path.exists(output_dir):
-            os.makedirs(output_dir)
-
-        self.observation = observation
-        self.total_sigma2 = total_sigma2
-
-        # Unpack mcmc parameters given to BayesObj.mcmc_params
-        self.initsamples = None
-        self.nwalkers = 100
-        self.nburn = 200
-        self.nsteps = 100000
-        self.moves = None
-        self.mp = False
-        self.verbose = False
-
-        # Extract initial samples
-        if 'init_samples' in BayesObj.mcmc_params:
-            self.initsamples = BayesObj.mcmc_params['init_samples']
-            if isinstance(self.initsamples, pd.DataFrame):
-                self.initsamples = self.initsamples.values
-
-        # Extract number of steps per walker
-        if 'n_steps' in BayesObj.mcmc_params:
-            self.nsteps = int(BayesObj.mcmc_params['n_steps'])
-        # Extract number of walkers (chains)
-        if 'n_walkers' in BayesObj.mcmc_params:
-            self.nwalkers = int(BayesObj.mcmc_params['n_walkers'])
-        # Extract moves
-        if 'moves' in BayesObj.mcmc_params:
-            self.moves = BayesObj.mcmc_params['moves']
-        # Extract multiprocessing
-        if 'multiprocessing' in BayesObj.mcmc_params:
-            self.mp = BayesObj.mcmc_params['multiprocessing']
-        # Extract verbose
-        if 'verbose' in BayesObj.mcmc_params:
-            self.verbose = BayesObj.mcmc_params['verbose']
-
-        # Set initial samples
-        np.random.seed(0)
-        if self.initsamples is None:
-            try:
-                initsamples = priorDist.sample(self.nwalkers).T
-            except:
-                # when aPCE selected - gaussian kernel distribution
-                inputSamples = MetaModel.ExpDesign.raw_data.T
-                random_indices = np.random.choice(
-                    len(inputSamples), size=self.nwalkers, replace=False
-                    )
-                initsamples = inputSamples[random_indices]
-
-        else:
-            if self.initsamples.ndim == 1:
-                # When MAL is given.
-                theta = self.initsamples
-                initsamples = [theta + 1e-1*np.multiply(
-                    np.random.randn(ndim), theta) for i in
-                               range(self.nwalkers)]
-            else:
-                # Pick samples based on a uniform dist between min and max of
-                # each dim
-                initsamples = np.zeros((self.nwalkers, ndim))
-                bound_tuples = []
-                for idx_dim in range(ndim):
-                    lower = np.min(self.initsamples[:, idx_dim])
-                    upper = np.max(self.initsamples[:, idx_dim])
-                    bound_tuples.append((lower, upper))
-                    dist = st.uniform(loc=lower, scale=upper-lower)
-                    initsamples[:, idx_dim] = dist.rvs(size=self.nwalkers)
-
-                # Update lower and upper
-                MetaModel.ExpDesign.bound_tuples = bound_tuples
-
-        # Check if sigma^2 needs to be inferred
-        if Discrepancy.opt_sigma != 'B':
-            sigma2_samples = Discrepancy.get_sample(self.nwalkers)
-
-            # Update initsamples
-            initsamples = np.hstack((initsamples, sigma2_samples))
-
-            # Update ndim
-            ndim = initsamples.shape[1]
-
-            # Discrepancy bound
-            disc_bound_tuple = Discrepancy.ExpDesign.bound_tuples
-
-            # Update bound_tuples
-            BayesObj.engine.ExpDesign.bound_tuples += disc_bound_tuple
-
-        print("\n>>>> Bayesian inference with MCMC for "
-              f"{self.BayesOpts.name} started. <<<<<<")
-
-        # Set up the backend
-        filename = f"{output_dir}/emcee_sampler.h5"
-        backend = emcee.backends.HDFBackend(filename)
-        # Clear the backend in case the file already exists
-        backend.reset(self.nwalkers, ndim)
-
-        # Define emcee sampler
-        # Here we'll set up the computation. emcee combines multiple "walkers",
-        # each of which is its own MCMC chain. The number of trace results will
-        # be nwalkers * nsteps.
-        if self.mp:
-            # Run in parallel
-            if n_cpus is None:
-                n_cpus = multiprocessing.cpu_count()
-
-            with multiprocessing.Pool(n_cpus) as pool:
-                sampler = emcee.EnsembleSampler(
-                    self.nwalkers, ndim, self.log_posterior, moves=self.moves,
-                    pool=pool, backend=backend
-                    )
-
-                # Check if a burn-in phase is needed!
-                if self.initsamples is None:
-                    # Burn-in
-                    print("\n Burn-in period is starting:")
-                    pos = sampler.run_mcmc(
-                        initsamples, self.nburn, progress=True
-                        )
-
-                    # Reset sampler
-                    sampler.reset()
-                    pos = pos.coords
-                else:
-                    pos = initsamples
-
-                # Production run
-                print("\n Production run is starting:")
-                pos, prob, state = sampler.run_mcmc(
-                    pos, self.nsteps, progress=True
-                    )
-
-        else:
-            # Run in series and monitor the convergence
-            sampler = emcee.EnsembleSampler(
-                self.nwalkers, ndim, self.log_posterior, moves=self.moves,
-                backend=backend, vectorize=True
-                )
-
-            # Check if a burn-in phase is needed!
-            if self.initsamples is None:
-                # Burn-in
-                print("\n Burn-in period is starting:")
-                pos = sampler.run_mcmc(
-                    initsamples, self.nburn, progress=True
-                    )
-
-                # Reset sampler
-                sampler.reset()
-                pos = pos.coords
-            else:
-                pos = initsamples
-
-            # Production run
-            print("\n Production run is starting:")
-
-            # Track how the average autocorrelation time estimate changes
-            autocorrIdx = 0
-            autocorr = np.empty(self.nsteps)
-            tauold = np.inf
-            autocorreverynsteps = 50
-
-            # sample step by step using the generator sampler.sample
-            for sample in sampler.sample(pos,
-                                         iterations=self.nsteps,
-                                         tune=True,
-                                         progress=True):
-
-                # only check convergence every autocorreverynsteps steps
-                if sampler.iteration % autocorreverynsteps:
-                    continue
-
-                # Train model discrepancy/error
-                if hasattr(BayesObj, 'errorModel') and BayesObj.errorModel \
-                   and not sampler.iteration % 3 * autocorreverynsteps:
-                    try:
-                        self.error_MetaModel = self.train_error_model(sampler)
-                    except:
-                        pass
-
-                # Print the current mean acceptance fraction
-                if self.verbose:
-                    print("\nStep: {}".format(sampler.iteration))
-                    acc_fr = np.mean(sampler.acceptance_fraction)
-                    print(f"Mean acceptance fraction: {acc_fr:.3f}")
-
-                # compute the autocorrelation time so far
-                # using tol=0 means that we'll always get an estimate even if
-                # it isn't trustworthy
-                tau = sampler.get_autocorr_time(tol=0)
-                # average over walkers
-                autocorr[autocorrIdx] = np.nanmean(tau)
-                autocorrIdx += 1
-
-                # output current autocorrelation estimate
-                if self.verbose:
-                    print(f"Mean autocorr. time estimate: {np.nanmean(tau):.3f}")
-                    list_gr = np.round(self.gelman_rubin(sampler.chain), 3)
-                    print("Gelman-Rubin Test*: ", list_gr)
-
-                # check convergence
-                converged = np.all(tau*autocorreverynsteps < sampler.iteration)
-                converged &= np.all(np.abs(tauold - tau) / tau < 0.01)
-                converged &= np.all(self.gelman_rubin(sampler.chain) < 1.1)
-
-                if converged:
-                    break
-                tauold = tau
-
-        # Posterior diagnostics
-        try:
-            tau = sampler.get_autocorr_time(tol=0)
-        except emcee.autocorr.AutocorrError:
-            tau = 5
-
-        if all(np.isnan(tau)):
-            tau = 5
-
-        burnin = int(2*np.nanmax(tau))
-        thin = int(0.5*np.nanmin(tau)) if int(0.5*np.nanmin(tau)) != 0 else 1
-        finalsamples = sampler.get_chain(discard=burnin, flat=True, thin=thin)
-        acc_fr = np.nanmean(sampler.acceptance_fraction)
-        list_gr = np.round(self.gelman_rubin(sampler.chain[:, burnin:]), 3)
-
-        # Print summary
-        print('\n')
-        print('-'*15 + 'Posterior diagnostics' + '-'*15)
-        print(f"Mean auto-correlation time: {np.nanmean(tau):.3f}")
-        print(f"Thin: {thin}")
-        print(f"Burn-in: {burnin}")
-        print(f"Flat chain shape: {finalsamples.shape}")
-        print(f"Mean acceptance fraction*: {acc_fr:.3f}")
-        print("Gelman-Rubin Test**: ", list_gr)
-
-        print("\n* This value must lay between 0.234 and 0.5.")
-        print("** These values must be smaller than 1.1.")
-        print('-'*50)
-
-        print(f"\n>>>> Bayesian inference with MCMC for {self.BayesOpts.name} "
-              "successfully completed. <<<<<<\n")
-
-        # Extract parameter names and their prior ranges
-        par_names = self.BayesOpts.engine.ExpDesign.par_names
-
-        if Discrepancy.opt_sigma != 'B':
-            for i in range(len(Discrepancy.InputDisc.Marginals)):
-                par_names.append(Discrepancy.InputDisc.Marginals[i].name)
-
-        params_range = self.BayesOpts.engine.ExpDesign.bound_tuples
-
-        # Plot traces
-        if self.verbose and self.nsteps < 10000:
-            pdf = PdfPages(output_dir+'/traceplots.pdf')
-            fig = plt.figure()
-            for parIdx in range(ndim):
-                # Set up the axes with gridspec
-                fig = plt.figure()
-                grid = plt.GridSpec(4, 4, hspace=0.2, wspace=0.2)
-                main_ax = fig.add_subplot(grid[:-1, :3])
-                y_hist = fig.add_subplot(grid[:-1, -1], xticklabels=[],
-                                         sharey=main_ax)
-
-                for i in range(self.nwalkers):
-                    samples = sampler.chain[i, :, parIdx]
-                    main_ax.plot(samples, '-')
-
-                    # histogram on the attached axes
-                    y_hist.hist(samples[burnin:], 40, histtype='stepfilled',
-                                orientation='horizontal', color='gray')
-
-                main_ax.set_ylim(params_range[parIdx])
-                main_ax.set_title('traceplot for ' + par_names[parIdx])
-                main_ax.set_xlabel('step number')
-
-                # save the current figure
-                pdf.savefig(fig, bbox_inches='tight')
-
-                # Destroy the current plot
-                plt.clf()
-
-            pdf.close()
-
-        # plot development of autocorrelation estimate
-        if not self.mp:
-            fig1 = plt.figure()
-            steps = autocorreverynsteps*np.arange(1, autocorrIdx+1)
-            taus = autocorr[:autocorrIdx]
-            plt.plot(steps, steps / autocorreverynsteps, "--k")
-            plt.plot(steps, taus)
-            plt.xlim(0, steps.max())
-            plt.ylim(0, np.nanmax(taus)+0.1*(np.nanmax(taus)-np.nanmin(taus)))
-            plt.xlabel("number of steps")
-            plt.ylabel(r"mean $\hat{\tau}$")
-            fig1.savefig(f"{output_dir}/autocorrelation_time.pdf",
-                         bbox_inches='tight')
-
-        # logml_dict = self.marginal_llk_emcee(sampler, self.nburn, logp=None,
-        # maxiter=5000)
-        # print('\nThe Bridge Sampling Estimation is "
-        #       f"{logml_dict['logml']:.5f}.')
-
-        # # Posterior-based expectation of posterior probablity
-        # postExpPostLikelihoods = np.mean(sampler.get_log_prob(flat=True)
-        # [self.nburn*self.nwalkers:])
-
-        # # Posterior-based expectation of prior densities
-        # postExpPrior = np.mean(self.log_prior(emcee_trace.T))
-
-        # # Posterior-based expectation of likelihoods
-        # postExpLikelihoods_emcee = postExpPostLikelihoods - postExpPrior
-
-        # # Calculate Kullback-Leibler Divergence
-        # KLD_emcee = postExpLikelihoods_emcee - logml_dict['logml']
-        # print("Kullback-Leibler divergence: %.5f"%KLD_emcee)
-
-        # # Information Entropy based on Entropy paper Eq. 38
-        # infEntropy_emcee = logml_dict['logml'] - postExpPrior -
-        #                    postExpLikelihoods_emcee
-        # print("Information Entropy: %.5f" %infEntropy_emcee)
-
-        Posterior_df = pd.DataFrame(finalsamples, columns=par_names)
-
-        return Posterior_df
-
-    # -------------------------------------------------------------------------
-    def log_prior(self, theta):
-        """
-        Calculates the log prior likelihood \\( p(\\theta)\\) for the given
-        parameter set(s) \\( \\theta \\).
-
-        Parameters
-        ----------
-        theta : array of shape (n_samples, n_params)
-            Parameter sets, i.e. proposals of MCMC chains.
-
-        Returns
-        -------
-        logprior: float or array of shape n_samples
-            Log prior likelihood. If theta has only one row, a single value is
-            returned otherwise an array.
-
-        """
-
-        MetaModel = self.BayesOpts.MetaModel
-        Discrepancy = self.BayesOpts.Discrepancy
-
-        # Find the number of sigma2 parameters
-        if Discrepancy.opt_sigma != 'B':
-            disc_bound_tuples = Discrepancy.ExpDesign.bound_tuples
-            disc_marginals = Discrepancy.ExpDesign.InputObj.Marginals
-            disc_prior_space = Discrepancy.ExpDesign.prior_space
-            n_sigma2 = len(disc_bound_tuples)
-        else:
-            n_sigma2 = -len(theta)
-        prior_dist = self.BayesOpts.engine.ExpDesign.prior_space
-        params_range = self.BayesOpts.engine.ExpDesign.bound_tuples
-        theta = theta if theta.ndim != 1 else theta.reshape((1, -1))
-        nsamples = theta.shape[0]
-        logprior = -np.inf*np.ones(nsamples)
-
-        for i in range(nsamples):
-            # Check if the sample is within the parameters' range
-            if self._check_ranges(theta[i], params_range):
-                # Check if all dists are uniform, if yes priors are equal.
-                if all(MetaModel.input_obj.Marginals[i].dist_type == 'uniform'
-                       for i in range(MetaModel.n_params)):
-                    logprior[i] = 0.0
-                else:
-                    logprior[i] = np.log(
-                        prior_dist.pdf(theta[i, :-n_sigma2].T)
-                        )
-
-                # Check if bias term needs to be inferred
-                if Discrepancy.opt_sigma != 'B':
-                    if self._check_ranges(theta[i, -n_sigma2:],
-                                          disc_bound_tuples):
-                        if all('unif' in disc_marginals[i].dist_type for i in
-                               range(Discrepancy.ExpDesign.ndim)):
-                            logprior[i] = 0.0
-                        else:
-                            logprior[i] += np.log(
-                                disc_prior_space.pdf(theta[i, -n_sigma2:])
-                                )
-
-        if nsamples == 1:
-            return logprior[0]
-        else:
-            return logprior
-
-    # -------------------------------------------------------------------------
-    def log_likelihood(self, theta):
-        """
-        Computes likelihood \\( p(\\mathcal{Y}|\\theta)\\) of the performance
-        of the (meta-)model in reproducing the observation data.
-
-        Parameters
-        ----------
-        theta : array of shape (n_samples, n_params)
-            Parameter set, i.e. proposals of the MCMC chains.
-
-        Returns
-        -------
-        log_like : array of shape (n_samples)
-            Log likelihood.
-
-        """
-
-        BayesOpts = self.BayesOpts
-        MetaModel = BayesOpts.MetaModel
-        Discrepancy = self.BayesOpts.Discrepancy
-
-        # Find the number of sigma2 parameters
-        if Discrepancy.opt_sigma != 'B':
-            disc_bound_tuples = Discrepancy.ExpDesign.bound_tuples
-            n_sigma2 = len(disc_bound_tuples)
-        else:
-            n_sigma2 = -len(theta)
-        # Check if bias term needs to be inferred
-        if Discrepancy.opt_sigma != 'B':
-            sigma2 = theta[:, -n_sigma2:]
-            theta = theta[:, :-n_sigma2]
-        else:
-            sigma2 = None
-        theta = theta if theta.ndim != 1 else theta.reshape((1, -1))
-
-        # Evaluate Model/MetaModel at theta
-        mean_pred, BayesOpts._std_pce_prior_pred = self.eval_model(theta)
-
-        # Surrogate model's error using RMSE of test data
-        surrError = MetaModel.rmse if hasattr(MetaModel, 'rmse') else None
-
-        # Likelihood
-        log_like = BayesOpts.normpdf(
-            mean_pred, self.observation, self.total_sigma2, sigma2,
-            std=surrError
-            )
-        return log_like
-
-    # -------------------------------------------------------------------------
-    def log_posterior(self, theta):
-        """
-        Computes the posterior likelihood \\(p(\\theta| \\mathcal{Y})\\) for
-        the given parameterset.
-
-        Parameters
-        ----------
-        theta : array of shape (n_samples, n_params)
-            Parameter set, i.e. proposals of the MCMC chains.
-
-        Returns
-        -------
-        log_like : array of shape (n_samples)
-            Log posterior likelihood.
-
-        """
-
-        nsamples = 1 if theta.ndim == 1 else theta.shape[0]
-
-        if nsamples == 1:
-            if self.log_prior(theta) == -np.inf:
-                return -np.inf
-            else:
-                # Compute log prior
-                log_prior = self.log_prior(theta)
-                # Compute log Likelihood
-                log_likelihood = self.log_likelihood(theta)
-
-                return log_prior + log_likelihood
-        else:
-            # Compute log prior
-            log_prior = self.log_prior(theta)
-
-            # Initialize log_likelihood
-            log_likelihood = -np.inf*np.ones(nsamples)
-
-            # find the indices for -inf sets
-            non_inf_idx = np.where(log_prior != -np.inf)[0]
-
-            # Compute loLikelihoods
-            if non_inf_idx.size != 0:
-                log_likelihood[non_inf_idx] = self.log_likelihood(
-                    theta[non_inf_idx]
-                    )
-
-            return log_prior + log_likelihood
-
-    # -------------------------------------------------------------------------
-    def eval_model(self, theta):
-        """
-        Evaluates the (meta-) model at the given theta.
-
-        Parameters
-        ----------
-        theta : array of shape (n_samples, n_params)
-            Parameter set, i.e. proposals of the MCMC chains.
-
-        Returns
-        -------
-        mean_pred : dict
-            Mean model prediction.
-        std_pred : dict
-            Std of model prediction.
-
-        """
-
-        BayesObj = self.BayesOpts
-        MetaModel = BayesObj.MetaModel
-        Model = BayesObj.engine.Model
-
-        if BayesObj.emulator:
-            # Evaluate the MetaModel
-            mean_pred, std_pred = MetaModel.eval_metamodel(samples=theta)
-        else:
-            # Evaluate the origModel
-            mean_pred, std_pred = dict(), dict()
-
-            model_outs, _ = Model.run_model_parallel(
-                theta, prevRun_No=self.counter,
-                key_str='_MCMC', mp=False, verbose=False)
-
-            # Save outputs in respective dicts
-            for varIdx, var in enumerate(Model.Output.names):
-                mean_pred[var] = model_outs[var]
-                std_pred[var] = np.zeros((mean_pred[var].shape))
-
-            # Remove the folder
-            if Model.link_type.lower() != 'function':
-                shutil.rmtree(f"{Model.name}_MCMC_{self.counter+1}")
-
-            # Add one to the counter
-            self.counter += 1
-
-        if hasattr(self, 'error_MetaModel') and BayesObj.error_model:
-            meanPred, stdPred = self.error_MetaModel.eval_model_error(
-                BayesObj.BiasInputs, mean_pred
-                )
-
-        return mean_pred, std_pred
-
-    # -------------------------------------------------------------------------
-    def train_error_model(self, sampler):
-        """
-        Trains an error model using a Gaussian Process Regression.
-
-        Parameters
-        ----------
-        sampler : obj
-            emcee sampler.
-
-        Returns
-        -------
-        error_MetaModel : obj
-            A error model.
-
-        """
-        BayesObj = self.BayesOpts
-        MetaModel = BayesObj.MetaModel
-
-        # Prepare the poster samples
-        try:
-            tau = sampler.get_autocorr_time(tol=0)
-        except emcee.autocorr.AutocorrError:
-            tau = 5
-
-        if all(np.isnan(tau)):
-            tau = 5
-
-        burnin = int(2*np.nanmax(tau))
-        thin = int(0.5*np.nanmin(tau)) if int(0.5*np.nanmin(tau)) != 0 else 1
-        finalsamples = sampler.get_chain(discard=burnin, flat=True, thin=thin)
-        posterior = finalsamples[:, :MetaModel.n_params]
-
-        # Select posterior mean as MAP
-        map_theta = posterior.mean(axis=0).reshape((1, MetaModel.n_params))
-        # MAP_theta = st.mode(Posterior_df,axis=0)[0]
-
-        # Evaluate the (meta-)model at the MAP
-        y_map, y_std_map = MetaModel.eval_metamodel(samples=map_theta)
-
-        # Train a GPR meta-model using MAP
-        error_MetaModel = MetaModel.create_model_error(
-            BayesObj.BiasInputs, y_map, name='Calib')
-
-        return error_MetaModel
-
-    # -------------------------------------------------------------------------
-    def gelman_rubin(self, chain, return_var=False):
-        """
-        The potential scale reduction factor (PSRF) defined by the variance
-        within one chain, W, with the variance between chains B.
-        Both variances are combined in a weighted sum to obtain an estimate of
-        the variance of a parameter \\( \\theta \\).The square root of the
-        ratio of this estimates variance to the within chain variance is called
-        the potential scale reduction.
-        For a well converged chain it should approach 1. Values greater than
-        1.1 typically indicate that the chains have not yet fully converged.
-
-        Source: http://joergdietrich.github.io/emcee-convergence.html
-
-        https://github.com/jwalton3141/jwalton3141.github.io/blob/master/assets/posts/ESS/rwmh.py
-
-        Parameters
-        ----------
-        chain : array (n_walkers, n_steps, n_params)
-            The emcee ensamples.
-
-        Returns
-        -------
-        R_hat : float
-            The Gelman-Robin values.
-
-        """
-        m_chains, n_iters = chain.shape[:2]
-
-        # Calculate between-chain variance
-        θb = np.mean(chain, axis=1)
-        θbb = np.mean(θb, axis=0)
-        B_over_n = ((θbb - θb)**2).sum(axis=0)
-        B_over_n /= (m_chains - 1)
-
-        # Calculate within-chain variances
-        ssq = np.var(chain, axis=1, ddof=1)
-        W = np.mean(ssq, axis=0)
-
-        # (over) estimate of variance
-        var_θ = W * (n_iters - 1) / n_iters + B_over_n
-
-        if return_var:
-            return var_θ
-        else:
-            # The square root of the ratio of this estimates variance to the
-            # within chain variance
-            R_hat = np.sqrt(var_θ / W)
-            return R_hat
-
-    # -------------------------------------------------------------------------
-    def marginal_llk_emcee(self, sampler, nburn=None, logp=None, maxiter=1000):
-        """
-        The Bridge Sampling Estimator of the Marginal Likelihood based on
-        https://gist.github.com/junpenglao/4d2669d69ddfe1d788318264cdcf0583
-
-        Parameters
-        ----------
-        sampler : TYPE
-            MultiTrace, result of MCMC run.
-        nburn : int, optional
-            Number of burn-in step. The default is None.
-        logp : TYPE, optional
-            Model Log-probability function. The default is None.
-        maxiter : int, optional
-            Maximum number of iterations. The default is 1000.
-
-        Returns
-        -------
-        marg_llk : dict
-            Estimated Marginal log-Likelihood.
-
-        """
-        r0, tol1, tol2 = 0.5, 1e-10, 1e-4
-
-        if logp is None:
-            logp = sampler.log_prob_fn
-
-        # Split the samples into two parts
-        # Use the first 50% for fiting the proposal distribution
-        # and the second 50% in the iterative scheme.
-        if nburn is None:
-            mtrace = sampler.chain
-        else:
-            mtrace = sampler.chain[:, nburn:, :]
-
-        nchain, len_trace, nrofVars = mtrace.shape
-
-        N1_ = len_trace // 2
-        N1 = N1_*nchain
-        N2 = len_trace*nchain - N1
-
-        samples_4_fit = np.zeros((nrofVars, N1))
-        samples_4_iter = np.zeros((nrofVars, N2))
-        effective_n = np.zeros((nrofVars))
-
-        # matrix with already transformed samples
-        for var in range(nrofVars):
-
-            # for fitting the proposal
-            x = mtrace[:, :N1_, var]
-
-            samples_4_fit[var, :] = x.flatten()
-            # for the iterative scheme
-            x2 = mtrace[:, N1_:, var]
-            samples_4_iter[var, :] = x2.flatten()
-
-            # effective sample size of samples_4_iter, scalar
-            effective_n[var] = self._my_ESS(x2)
-
-        # median effective sample size (scalar)
-        neff = np.median(effective_n)
-
-        # get mean & covariance matrix and generate samples from proposal
-        m = np.mean(samples_4_fit, axis=1)
-        V = np.cov(samples_4_fit)
-        L = chol(V, lower=True)
-
-        # Draw N2 samples from the proposal distribution
-        gen_samples = m[:, None] + np.dot(
-            L, st.norm.rvs(0, 1, size=samples_4_iter.shape)
-            )
-
-        # Evaluate proposal distribution for posterior & generated samples
-        q12 = st.multivariate_normal.logpdf(samples_4_iter.T, m, V)
-        q22 = st.multivariate_normal.logpdf(gen_samples.T, m, V)
-
-        # Evaluate unnormalized posterior for posterior & generated samples
-        q11 = logp(samples_4_iter.T)
-        q21 = logp(gen_samples.T)
-
-        # Run iterative scheme:
-        tmp = self._iterative_scheme(
-            N1, N2, q11, q12, q21, q22, r0, neff, tol1, maxiter, 'r'
-            )
-        if ~np.isfinite(tmp['logml']):
-            warnings.warn(
-                "Logml could not be estimated within maxiter, rerunning with "
-                "adjusted starting value. Estimate might be more variable than"
-                " usual.")
-            # use geometric mean as starting value
-            r0_2 = np.sqrt(tmp['r_vals'][-2]*tmp['r_vals'][-1])
-            tmp = self._iterative_scheme(
-                q11, q12, q21, q22, r0_2, neff, tol2, maxiter, 'logml'
-                )
-
-        marg_llk = dict(
-            logml=tmp['logml'], niter=tmp['niter'], method="normal",
-            q11=q11, q12=q12, q21=q21, q22=q22
-            )
-        return marg_llk
-
-    # -------------------------------------------------------------------------
-    def _iterative_scheme(self, N1, N2, q11, q12, q21, q22, r0, neff, tol,
-                          maxiter, criterion):
-        """
-        Iterative scheme as proposed in Meng and Wong (1996) to estimate the
-        marginal likelihood
-
-        """
-        l1 = q11 - q12
-        l2 = q21 - q22
-        # To increase numerical stability,
-        # subtracting the median of l1 from l1 & l2 later
-        lstar = np.median(l1)
-        s1 = neff/(neff + N2)
-        s2 = N2/(neff + N2)
-        r = r0
-        r_vals = [r]
-        logml = np.log(r) + lstar
-        criterion_val = 1 + tol
-
-        i = 0
-        while (i <= maxiter) & (criterion_val > tol):
-            rold = r
-            logmlold = logml
-            numi = np.exp(l2 - lstar)/(s1 * np.exp(l2 - lstar) + s2 * r)
-            deni = 1/(s1 * np.exp(l1 - lstar) + s2 * r)
-            if np.sum(~np.isfinite(numi))+np.sum(~np.isfinite(deni)) > 0:
-                warnings.warn(
-                    """Infinite value in iterative scheme, returning NaN.
-                     Try rerunning with more samples.""")
-            r = (N1/N2) * np.sum(numi)/np.sum(deni)
-            r_vals.append(r)
-            logml = np.log(r) + lstar
-            i += 1
-            if criterion == 'r':
-                criterion_val = np.abs((r - rold)/r)
-            elif criterion == 'logml':
-                criterion_val = np.abs((logml - logmlold)/logml)
-
-        if i >= maxiter:
-            return dict(logml=np.NaN, niter=i, r_vals=np.asarray(r_vals))
-        else:
-            return dict(logml=logml, niter=i)
-
-    # -------------------------------------------------------------------------
-    def _my_ESS(self, x):
-        """
-        Compute the effective sample size of estimand of interest.
-        Vectorised implementation.
-        https://github.com/jwalton3141/jwalton3141.github.io/blob/master/assets/posts/ESS/rwmh.py
-
-
-        Parameters
-        ----------
-        x : array of shape (n_walkers, n_steps)
-            MCMC Samples.
-
-        Returns
-        -------
-        int
-            Effective sample size.
-
-        """
-        m_chains, n_iters = x.shape
-
-        def variogram(t):
-            variogram = ((x[:, t:] - x[:, :(n_iters - t)])**2).sum()
-            variogram /= (m_chains * (n_iters - t))
-            return variogram
-
-        post_var = self.gelman_rubin(x, return_var=True)
-
-        t = 1
-        rho = np.ones(n_iters)
-        negative_autocorr = False
-
-        # Iterate until the sum of consecutive estimates of autocorrelation is
-        # negative
-        while not negative_autocorr and (t < n_iters):
-            rho[t] = 1 - variogram(t) / (2 * post_var)
-
-            if not t % 2:
-                negative_autocorr = sum(rho[t-1:t+1]) < 0
-
-            t += 1
-
-        return int(m_chains*n_iters / (1 + 2*rho[1:t].sum()))
-
-    # -------------------------------------------------------------------------
-    def _check_ranges(self, theta, ranges):
-        """
-        This function checks if theta lies in the given ranges.
-
-        Parameters
-        ----------
-        theta : array
-            Proposed parameter set.
-        ranges : nested list
-            List of the praremeter ranges.
-
-        Returns
-        -------
-        c : bool
-            If it lies in the given range, it return True else False.
-
-        """
-        c = True
-        # traverse in the list1
-        for i, bounds in enumerate(ranges):
-            x = theta[i]
-            # condition check
-            if x < bounds[0] or x > bounds[1]:
-                c = False
-                return c
-        return c
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayesvalidrox.mplstyle b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayesvalidrox.mplstyle
deleted file mode 100644
index 1f31c01f2..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/bayesvalidrox.mplstyle	
+++ /dev/null
@@ -1,16 +0,0 @@
-figure.titlesize : 30
-axes.titlesize : 30
-axes.labelsize : 30
-axes.linewidth : 3
-axes.grid : True
-lines.linewidth : 3
-lines.markersize : 10
-xtick.labelsize : 30
-ytick.labelsize : 30
-legend.fontsize : 30
-font.family : serif
-font.serif : Arial
-font.size : 30
-text.usetex : True
-grid.linestyle : -
-figure.figsize : 24, 16
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__init__.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__init__.py
deleted file mode 100644
index 81c982542..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__init__.py	
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from .post_processing import PostProcessing
-
-__all__ = [
-    "PostProcessing"
-    ]
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/__init__.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index c8590a242166b2e8d40de7ee2eece71980bd1571..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 261
zcmZ8bu};G<5Vf5GRYl8y)IVUz!u<fM7!d7*A|aM6CpWel3nz|z4z!=dFJ)!o7g*rZ
ziSnd-r+4q2?!tUN6O76AjZNG?NAVYm#XT1-nT#;fi$<1G3Zr(iR3>{C`Q%Honag2O
z1WH8=l_hfRE{@Ajc{W^iJjd?T7%mXC_lO@No^kL<-z79{f(l;9MuPYnYF}$j@DQrL
zv27w)yR_-I@aV&Pp;HZ8eX#VVy)!ZF;ol`dbgfH>x7}fw-ZjDW-mb=X>740Oscic5
E3kw-WVE_OC

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/__init__.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index 9d21ad3c9193151d5353eea7e29d38f3b43e4b39..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 295
zcmZ3^%ge<81T4a;sU<-AF^B^LOi;#W2_R!SLkdF*V-7<uV-zDJLkd$mV-!;gb1;J@
z%S%R}v?k*%zJUDVl7OQ8<kaHg%)Im>W}vX2Ci5-+0-$(&0jk6;_W1b3oSgXhl?<Oj
z*8B={wu%WYPAw{qDay{z$jL}dERJ!>PcF?(%_}L6anCIAC{2oS%gHYfNG!>SNlL6t
zEiOyU$xJEAuZTgjASOOOGcU6wK3=b&@)w6qZhlH>PO4oIC(s&@Q;Ri$#0O?ZM#c|p
d42(J#7_^ZQP>fad12YphTLU`?7O?|W0{}&mQW5|F

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/__init__.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index 58a0eb24635d0b97a14d13708e616de6a0659976..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 326
zcmZ9G&q@O^5XO_;ibbs6e1|=xP{fOf2=(GYS&#)Ofsk&pH8lT7Hl_9IbNB$hg4e#q
zUOo8=UUarz)Pea8Gv7DE@X_c1K|H^0g@O9sH@_o;<_a>N00a_PBZFrcBatoeEED-X
zDh3}I!~%CmrHgGDTrFc%b`kpJyCUz7J<OT^D|GveajhA9MPUz&JAA%O&uJB9h&0Hh
zn^2KVTK|w3Wo6)6J@HmKOB%`B6ePKsmgKs+tsYLtXLO#F7Nj<ODJl0}Q&oE^0mL-4
zQI_i<W72J0O&(eA3dzzr-^jRv%Obcn{r4<oOj*@3HujrtcwwAKT3+VxaU1{+^X%&z
DlmueV

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-310.pyc
deleted file mode 100644
index 0924d8afac04d4fe82ebe791bc55a8ae48d7c117..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 28679
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-311.pyc
deleted file mode 100644
index 2922ed407a89b026bf4d9e031464e011a7ad4a9b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 58838
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
C=CgqS

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-39.pyc
deleted file mode 100644
index 312575d7655db85df423489051f494f3dce62692..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 28771
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/post_processing.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/post_processing.py
deleted file mode 100644
index 6520a40f9..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/post_processing/post_processing.py	
+++ /dev/null
@@ -1,1338 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import numpy as np
-import math
-import os
-from itertools import combinations, cycle
-import pandas as pd
-import scipy.stats as stats
-from sklearn.linear_model import LinearRegression
-from sklearn.metrics import mean_squared_error, r2_score
-import matplotlib.pyplot as plt
-import matplotlib.ticker as ticker
-from matplotlib.offsetbox import AnchoredText
-from matplotlib.patches import Patch
-# Load the mplstyle
-plt.style.use(os.path.join(os.path.split(__file__)[0],
-                           '../', 'bayesvalidrox.mplstyle'))
-
-
-class PostProcessing:
-    """
-    This class provides many helper functions to post-process the trained
-    meta-model.
-
-    Attributes
-    ----------
-    MetaModel : obj
-        MetaModel object to do postprocessing on.
-    name : str
-        Type of the anaylsis. The default is `'calib'`. If a validation is
-        expected to be performed change this to `'valid'`.
-    """
-
-    def __init__(self, engine, name='calib'):
-        self.engine = engine
-        self.MetaModel = engine.MetaModel
-        self.ExpDesign = engine.ExpDesign
-        self.ModelObj = engine.Model
-        self.name = name
-
-    # -------------------------------------------------------------------------
-    def plot_moments(self, xlabel='Time [s]', plot_type=None):
-        """
-        Plots the moments in a pdf format in the directory
-        `Outputs_PostProcessing`.
-
-        Parameters
-        ----------
-        xlabel : str, optional
-            String to be displayed as x-label. The default is `'Time [s]'`.
-        plot_type : str, optional
-            Options: bar or line. The default is `None`.
-
-        Returns
-        -------
-        pce_means: dict
-            Mean of the model outputs.
-        pce_means: dict
-            Standard deviation of the model outputs.
-
-        """
-
-        bar_plot = True if plot_type == 'bar' else False
-        meta_model_type = self.MetaModel.meta_model_type
-        Model = self.ModelObj
-
-        # Read Monte-Carlo reference
-        self.mc_reference = Model.read_observation('mc_ref')
-
-        # Set the x values
-        x_values_orig = self.engine.ExpDesign.x_values
-
-        # Compute the moments with the PCEModel object
-        self.pce_means, self.pce_stds = self.compute_pce_moments()
-
-        # Get the variables
-        out_names = Model.Output.names
-
-        # Open a pdf for the plots
-        newpath = (f'Outputs_PostProcessing_{self.name}/')
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        # Plot the best fit line, set the linewidth (lw), color and
-        # transparency (alpha) of the line
-        for key in out_names:
-            fig, ax = plt.subplots(nrows=1, ncols=2)
-
-            # Extract mean and std
-            mean_data = self.pce_means[key]
-            std_data = self.pce_stds[key]
-
-            # Extract a list of x values
-            if type(x_values_orig) is dict:
-                x = x_values_orig[key]
-            else:
-                x = x_values_orig
-
-            # Plot: bar plot or line plot
-            if bar_plot:
-                ax[0].bar(list(map(str, x)), mean_data, color='b',
-                          width=0.25)
-                ax[1].bar(list(map(str, x)), std_data, color='b',
-                          width=0.25)
-                ax[0].legend(labels=[meta_model_type])
-                ax[1].legend(labels=[meta_model_type])
-            else:
-                ax[0].plot(x, mean_data, lw=3, color='k', marker='x',
-                           label=meta_model_type)
-                ax[1].plot(x, std_data, lw=3, color='k', marker='x',
-                           label=meta_model_type)
-
-            if self.mc_reference is not None:
-                if bar_plot:
-                    ax[0].bar(list(map(str, x)), self.mc_reference['mean'],
-                              color='r', width=0.25)
-                    ax[1].bar(list(map(str, x)), self.mc_reference['std'],
-                              color='r', width=0.25)
-                    ax[0].legend(labels=[meta_model_type])
-                    ax[1].legend(labels=[meta_model_type])
-                else:
-                    ax[0].plot(x, self.mc_reference['mean'], lw=3, marker='x',
-                               color='r', label='Ref.')
-                    ax[1].plot(x, self.mc_reference['std'], lw=3, marker='x',
-                               color='r', label='Ref.')
-
-            # Label the axes and provide a title
-            ax[0].set_xlabel(xlabel)
-            ax[1].set_xlabel(xlabel)
-            ax[0].set_ylabel(key)
-            ax[1].set_ylabel(key)
-
-            # Provide a title
-            ax[0].set_title('Mean of ' + key)
-            ax[1].set_title('Std of ' + key)
-
-            if not bar_plot:
-                ax[0].legend(loc='best')
-                ax[1].legend(loc='best')
-
-            plt.tight_layout()
-
-            # save the current figure
-            fig.savefig(
-                f'./{newpath}Mean_Std_PCE_{key}.pdf',
-                bbox_inches='tight'
-                )
-
-        return self.pce_means, self.pce_stds
-
-    # -------------------------------------------------------------------------
-    def valid_metamodel(self, n_samples=1, samples=None, model_out_dict=None,
-                        x_axis='Time [s]'):
-        """
-        Evaluates and plots the meta model and the PCEModel outputs for the
-        given number of samples or the given samples.
-
-        Parameters
-        ----------
-        n_samples : int, optional
-            Number of samples to be evaluated. The default is 1.
-        samples : array of shape (n_samples, n_params), optional
-            Samples to be evaluated. The default is None.
-        model_out_dict: dict
-            The model runs using the samples provided.
-        x_axis : str, optional
-            Label of x axis. The default is `'Time [s]'`.
-
-        Returns
-        -------
-        None.
-
-        """
-        MetaModel = self.MetaModel
-        Model = self.ModelObj
-
-        if samples is None:
-            self.n_samples = n_samples
-            samples = self._get_sample()
-        else:
-            self.n_samples = samples.shape[0]
-
-        # Extract x_values
-        x_values = self.engine.ExpDesign.x_values
-
-        if model_out_dict is not None:
-            self.model_out_dict = model_out_dict
-        else:
-            self.model_out_dict = self._eval_model(samples, key_str='valid')
-        self.pce_out_mean, self.pce_out_std = MetaModel.eval_metamodel(samples)
-
-        try:
-            key = Model.Output.names[1]
-        except IndexError:
-            key = Model.Output.names[0]
-
-        n_obs = self.model_out_dict[key].shape[1]
-
-        if n_obs == 1:
-            self._plot_validation()
-        else:
-            self._plot_validation_multi(x_values=x_values, x_axis=x_axis)
-
-    # -------------------------------------------------------------------------
-    def check_accuracy(self, n_samples=None, samples=None, outputs=None):
-        """
-        Checks accuracy of the metamodel by computing the root mean square
-        error and validation error for all outputs.
-
-        Parameters
-        ----------
-        n_samples : int, optional
-            Number of samples. The default is None.
-        samples : array of shape (n_samples, n_params), optional
-            Parameter sets to be checked. The default is None.
-        outputs : dict, optional
-            Output dictionary with model outputs for all given output types in
-            `Model.Output.names`. The default is None.
-
-        Raises
-        ------
-        Exception
-            When neither n_samples nor samples are provided.
-
-        Returns
-        -------
-        rmse: dict
-            Root mean squared error for each output.
-        valid_error : dict
-            Validation error for each output.
-
-        """
-        MetaModel = self.MetaModel
-        Model = self.ModelObj
-
-        # Set the number of samples
-        if n_samples:
-            self.n_samples = n_samples
-        elif samples is not None:
-            self.n_samples = samples.shape[0]
-        else:
-            raise Exception("Please provide either samples or pass the number"
-                            " of samples!")
-
-        # Generate random samples if necessary
-        Samples = self._get_sample() if samples is None else samples
-
-        # Run the original model with the generated samples
-        if outputs is None:
-            outputs = self._eval_model(Samples, key_str='validSet')
-
-        # Run the PCE model with the generated samples
-        pce_outputs, _ = MetaModel.eval_metamodel(samples=Samples)
-
-        self.rmse = {}
-        self.valid_error = {}
-        # Loop over the keys and compute RMSE error.
-        for key in Model.Output.names:
-            # Root mena square
-            self.rmse[key] = mean_squared_error(outputs[key], pce_outputs[key],
-                                                squared=False,
-                                                multioutput='raw_values')
-            # Validation error
-            self.valid_error[key] = (self.rmse[key]**2) / \
-                np.var(outputs[key], ddof=1, axis=0)
-
-            # Print a report table
-            print("\n>>>>> Errors of {} <<<<<".format(key))
-            print("\nIndex  |  RMSE   |  Validation Error")
-            print('-'*35)
-            print('\n'.join(f'{i+1}  |  {k:.3e}  |  {j:.3e}' for i, (k, j)
-                            in enumerate(zip(self.rmse[key],
-                                             self.valid_error[key]))))
-        # Save error dicts in PCEModel object
-        self.MetaModel.rmse = self.rmse
-        self.MetaModel.valid_error = self.valid_error
-
-        return
-
-    # -------------------------------------------------------------------------
-    def plot_seq_design_diagnostics(self, ref_BME_KLD=None):
-        """
-        Plots the Bayesian Model Evidence (BME) and Kullback-Leibler divergence
-        (KLD) for the sequential design.
-
-        Parameters
-        ----------
-        ref_BME_KLD : array, optional
-            Reference BME and KLD . The default is `None`.
-
-        Returns
-        -------
-        None.
-
-        """
-        engine = self.engine
-        PCEModel = self.MetaModel
-        n_init_samples = engine.ExpDesign.n_init_samples
-        n_total_samples = engine.ExpDesign.X.shape[0]
-
-        newpath = f'Outputs_PostProcessing_{self.name}/seq_design_diagnostics/'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        plotList = ['Modified LOO error', 'Validation error', 'KLD', 'BME',
-                    'RMSEMean', 'RMSEStd', 'Hellinger distance']
-        seqList = [engine.SeqModifiedLOO, engine.seqValidError,
-                   engine.SeqKLD, engine.SeqBME, engine.seqRMSEMean,
-                   engine.seqRMSEStd, engine.SeqDistHellinger]
-
-        markers = ('x', 'o', 'd', '*', '+')
-        colors = ('k', 'darkgreen', 'b', 'navy', 'darkred')
-
-        # Plot the evolution of the diagnostic criteria of the
-        # Sequential Experimental Design.
-        for plotidx, plot in enumerate(plotList):
-            fig, ax = plt.subplots()
-            seq_dict = seqList[plotidx]
-            name_util = list(seq_dict.keys())
-
-            if len(name_util) == 0:
-                continue
-
-            # Box plot when Replications have been detected.
-            if any(int(name.split("rep_", 1)[1]) > 1 for name in name_util):
-                # Extract the values from dict
-                sorted_seq_opt = {}
-                # Number of replications
-                n_reps = engine.ExpDesign.n_replication
-
-                # Get the list of utility function names
-                # Handle if only one UtilityFunction is provided
-                if not isinstance(engine.ExpDesign.util_func, list):
-                    util_funcs = [engine.ExpDesign.util_func]
-                else:
-                    util_funcs = engine.ExpDesign.util_func
-
-                for util in util_funcs:
-                    sortedSeq = {}
-                    # min number of runs available from reps
-                    n_runs = min([seq_dict[f'{util}_rep_{i+1}'].shape[0]
-                                 for i in range(n_reps)])
-
-                    for runIdx in range(n_runs):
-                        values = []
-                        for key in seq_dict.keys():
-                            if util in key:
-                                values.append(seq_dict[key][runIdx].mean())
-                        sortedSeq['SeqItr_'+str(runIdx)] = np.array(values)
-                    sorted_seq_opt[util] = sortedSeq
-
-                # BoxPlot
-                def draw_plot(data, labels, edge_color, fill_color, idx):
-                    pos = labels - (idx-1)
-                    bp = plt.boxplot(data, positions=pos, labels=labels,
-                                     patch_artist=True, sym='', widths=0.75)
-                    elements = ['boxes', 'whiskers', 'fliers', 'means',
-                                'medians', 'caps']
-                    for element in elements:
-                        plt.setp(bp[element], color=edge_color[idx])
-
-                    for patch in bp['boxes']:
-                        patch.set(facecolor=fill_color[idx])
-
-                if engine.ExpDesign.n_new_samples != 1:
-                    step1 = engine.ExpDesign.n_new_samples
-                    step2 = 1
-                else:
-                    step1 = 5
-                    step2 = 5
-                edge_color = ['red', 'blue', 'green']
-                fill_color = ['tan', 'cyan', 'lightgreen']
-                plot_label = plot
-                # Plot for different Utility Functions
-                for idx, util in enumerate(util_funcs):
-                    all_errors = np.empty((n_reps, 0))
-
-                    for key in list(sorted_seq_opt[util].keys()):
-                        errors = sorted_seq_opt.get(util, {}).get(key)[:, None]
-                        all_errors = np.hstack((all_errors, errors))
-
-                    # Special cases for BME and KLD
-                    if plot == 'KLD' or plot == 'BME':
-                        # BME convergence if refBME is provided
-                        if ref_BME_KLD is not None:
-                            if plot == 'BME':
-                                refValue = ref_BME_KLD[0]
-                                plot_label = r'BME/BME$^{Ref.}$'
-                            if plot == 'KLD':
-                                refValue = ref_BME_KLD[1]
-                                plot_label = '$D_{KL}[p(\\theta|y_*),p(\\theta)]'\
-                                    ' / D_{KL}^{Ref.}[p(\\theta|y_*), '\
-                                    'p(\\theta)]$'
-
-                            # Difference between BME/KLD and the ref. values
-                            all_errors = np.divide(all_errors,
-                                                   np.full((all_errors.shape),
-                                                           refValue))
-
-                            # Plot baseline for zero, i.e. no difference
-                            plt.axhline(y=1.0, xmin=0, xmax=1, c='green',
-                                        ls='--', lw=2)
-
-                    # Plot each UtilFuncs
-                    labels = np.arange(n_init_samples, n_total_samples+1, step1)
-                    draw_plot(all_errors[:, ::step2], labels, edge_color,
-                              fill_color, idx)
-
-                plt.xticks(labels, labels)
-                # Set the major and minor locators
-                ax.xaxis.set_major_locator(ticker.AutoLocator())
-                ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())
-                ax.xaxis.grid(True, which='major', linestyle='-')
-                ax.xaxis.grid(True, which='minor', linestyle='--')
-
-                # Legend
-                legend_elements = []
-                for idx, util in enumerate(util_funcs):
-                    legend_elements.append(Patch(facecolor=fill_color[idx],
-                                                 edgecolor=edge_color[idx],
-                                                 label=util))
-                plt.legend(handles=legend_elements[::-1], loc='best')
-
-                if plot != 'BME' and plot != 'KLD':
-                    plt.yscale('log')
-                plt.autoscale(True)
-                plt.xlabel('\\# of training samples')
-                plt.ylabel(plot_label)
-                plt.title(plot)
-
-                # save the current figure
-                plot_name = plot.replace(' ', '_')
-                fig.savefig(
-                    f'./{newpath}/seq_{plot_name}.pdf',
-                    bbox_inches='tight'
-                    )
-                # Destroy the current plot
-                plt.clf()
-                # Save arrays into files
-                f = open(f'./{newpath}/seq_{plot_name}.txt', 'w')
-                f.write(str(sorted_seq_opt))
-                f.close()
-            else:
-                for idx, name in enumerate(name_util):
-                    seq_values = seq_dict[name]
-                    if engine.ExpDesign.n_new_samples != 1:
-                        step = engine.ExpDesign.n_new_samples
-                    else:
-                        step = 1
-                    x_idx = np.arange(n_init_samples, n_total_samples+1, step)
-                    if n_total_samples not in x_idx:
-                        x_idx = np.hstack((x_idx, n_total_samples))
-
-                    if plot == 'KLD' or plot == 'BME':
-                        # BME convergence if refBME is provided
-                        if ref_BME_KLD is not None:
-                            if plot == 'BME':
-                                refValue = ref_BME_KLD[0]
-                                plot_label = r'BME/BME$^{Ref.}$'
-                            if plot == 'KLD':
-                                refValue = ref_BME_KLD[1]
-                                plot_label = '$D_{KL}[p(\\theta|y_*),p(\\theta)]'\
-                                    ' / D_{KL}^{Ref.}[p(\\theta|y_*), '\
-                                    'p(\\theta)]$'
-
-                            # Difference between BME/KLD and the ref. values
-                            values = np.divide(seq_values,
-                                               np.full((seq_values.shape),
-                                                       refValue))
-
-                            # Plot baseline for zero, i.e. no difference
-                            plt.axhline(y=1.0, xmin=0, xmax=1, c='green',
-                                        ls='--', lw=2)
-
-                            # Set the limits
-                            plt.ylim([1e-1, 1e1])
-
-                            # Create the plots
-                            plt.semilogy(x_idx, values, marker=markers[idx],
-                                         color=colors[idx], ls='--', lw=2,
-                                         label=name.split("_rep", 1)[0])
-                        else:
-                            plot_label = plot
-
-                            # Create the plots
-                            plt.plot(x_idx, seq_values, marker=markers[idx],
-                                     color=colors[idx], ls='--', lw=2,
-                                     label=name.split("_rep", 1)[0])
-
-                    else:
-                        plot_label = plot
-                        seq_values = np.nan_to_num(seq_values)
-
-                        # Plot the error evolution for each output
-                        plt.semilogy(x_idx, seq_values.mean(axis=1),
-                                     marker=markers[idx], ls='--', lw=2,
-                                     color=colors[idx],
-                                     label=name.split("_rep", 1)[0])
-
-                # Set the major and minor locators
-                ax.xaxis.set_major_locator(ticker.AutoLocator())
-                ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())
-                ax.xaxis.grid(True, which='major', linestyle='-')
-                ax.xaxis.grid(True, which='minor', linestyle='--')
-
-                ax.tick_params(axis='both', which='major', direction='in',
-                               width=3, length=10)
-                ax.tick_params(axis='both', which='minor', direction='in',
-                               width=2, length=8)
-                plt.xlabel('Number of runs')
-                plt.ylabel(plot_label)
-                plt.title(plot)
-                plt.legend(frameon=True)
-
-                # save the current figure
-                plot_name = plot.replace(' ', '_')
-                fig.savefig(
-                    f'./{newpath}/seq_{plot_name}.pdf',
-                    bbox_inches='tight'
-                    )
-                # Destroy the current plot
-                plt.clf()
-
-                # ---------------- Saving arrays into files ---------------
-                np.save(f'./{newpath}/seq_{plot_name}.npy', seq_values)
-
-        return
-
-    # -------------------------------------------------------------------------
-    def sobol_indices(self, xlabel='Time [s]', plot_type=None):
-        """
-        Provides Sobol indices as a sensitivity measure to infer the importance
-        of the input parameters. See Eq. 27 in [1] for more details. For the
-        case with Principal component analysis refer to [2].
-
-        [1] Global sensitivity analysis: A flexible and efficient framework
-        with an example from stochastic hydrogeology S. Oladyshkin, F.P.
-        de Barros, W. Nowak  https://doi.org/10.1016/j.advwatres.2011.11.001
-
-        [2] Nagel, J.B., Rieckermann, J. and Sudret, B., 2020. Principal
-        component analysis and sparse polynomial chaos expansions for global
-        sensitivity analysis and model calibration: Application to urban
-        drainage simulation. Reliability Engineering & System Safety, 195,
-        p.106737.
-
-        Parameters
-        ----------
-        xlabel : str, optional
-            Label of the x-axis. The default is `'Time [s]'`.
-        plot_type : str, optional
-            Plot type. The default is `None`. This corresponds to line plot.
-            Bar chart can be selected by `bar`.
-
-        Returns
-        -------
-        sobol_cell: dict
-            Sobol indices.
-        total_sobol: dict
-            Total Sobol indices.
-
-        """
-        # Extract the necessary variables
-        PCEModel = self.MetaModel
-        basis_dict = PCEModel.basis_dict
-        coeffs_dict = PCEModel.coeffs_dict
-        n_params = PCEModel.n_params
-        max_order = np.max(PCEModel.pce_deg)
-        sobol_cell_b = {}
-        total_sobol_b = {}
-        cov_Z_p_q = np.zeros((n_params))
-
-        for b_i in range(PCEModel.n_bootstrap_itrs):
-
-            sobol_cell_, total_sobol_ = {}, {}
-
-            for output in self.ModelObj.Output.names:
-
-                n_meas_points = len(coeffs_dict[f'b_{b_i+1}'][output])
-
-                # Initialize the (cell) array containing the (total) Sobol indices.
-                sobol_array = dict.fromkeys(range(1, max_order+1), [])
-                sobol_cell_array = dict.fromkeys(range(1, max_order+1), [])
-
-                for i_order in range(1, max_order+1):
-                    n_comb = math.comb(n_params, i_order)
-
-                    sobol_cell_array[i_order] = np.zeros((n_comb, n_meas_points))
-
-                total_sobol_array = np.zeros((n_params, n_meas_points))
-
-                # Initialize the cell to store the names of the variables
-                TotalVariance = np.zeros((n_meas_points))
-                # Loop over all measurement points and calculate sobol indices
-                for pIdx in range(n_meas_points):
-
-                    # Extract the basis indices (alpha) and coefficients
-                    Basis = basis_dict[f'b_{b_i+1}'][output][f'y_{pIdx+1}']
-
-                    try:
-                        clf_poly = PCEModel.clf_poly[f'b_{b_i+1}'][output][f'y_{pIdx+1}']
-                        PCECoeffs = clf_poly.coef_
-                    except:
-                        PCECoeffs = coeffs_dict[f'b_{b_i+1}'][output][f'y_{pIdx+1}']
-
-                    # Compute total variance
-                    TotalVariance[pIdx] = np.sum(np.square(PCECoeffs[1:]))
-
-                    nzidx = np.where(PCECoeffs != 0)[0]
-                    # Set all the Sobol indices equal to zero in the presence of a
-                    # null output.
-                    if len(nzidx) == 0:
-                        # This is buggy.
-                        for i_order in range(1, max_order+1):
-                            sobol_cell_array[i_order][:, pIdx] = 0
-
-                    # Otherwise compute them by summing well-chosen coefficients
-                    else:
-                        nz_basis = Basis[nzidx]
-                        for i_order in range(1, max_order+1):
-                            idx = np.where(np.sum(nz_basis > 0, axis=1) == i_order)
-                            subbasis = nz_basis[idx]
-                            Z = np.array(list(combinations(range(n_params), i_order)))
-
-                            for q in range(Z.shape[0]):
-                                Zq = Z[q]
-                                subsubbasis = subbasis[:, Zq]
-                                subidx = np.prod(subsubbasis, axis=1) > 0
-                                sum_ind = nzidx[idx[0][subidx]]
-                                if TotalVariance[pIdx] == 0.0:
-                                    sobol_cell_array[i_order][q, pIdx] = 0.0
-                                else:
-                                    sobol = np.sum(np.square(PCECoeffs[sum_ind]))
-                                    sobol /= TotalVariance[pIdx]
-                                    sobol_cell_array[i_order][q, pIdx] = sobol
-
-                        # Compute the TOTAL Sobol indices.
-                        for ParIdx in range(n_params):
-                            idx = nz_basis[:, ParIdx] > 0
-                            sum_ind = nzidx[idx]
-
-                            if TotalVariance[pIdx] == 0.0:
-                                total_sobol_array[ParIdx, pIdx] = 0.0
-                            else:
-                                sobol = np.sum(np.square(PCECoeffs[sum_ind]))
-                                sobol /= TotalVariance[pIdx]
-                                total_sobol_array[ParIdx, pIdx] = sobol
-
-                    # ----- if PCA selected: Compute covariance -----
-                    if PCEModel.dim_red_method.lower() == 'pca':
-                        # Extract the basis indices (alpha) and coefficients for
-                        # next component
-                        if pIdx < n_meas_points-1:
-                            nextBasis = basis_dict[f'b_{b_i+1}'][output][f'y_{pIdx+2}']
-                            if PCEModel.bootstrap_method != 'fast' or b_i == 0:
-                                clf_poly = PCEModel.clf_poly[f'b_{b_i+1}'][output][f'y_{pIdx+2}']
-                                nextPCECoeffs = clf_poly.coef_
-                            else:
-                                nextPCECoeffs = coeffs_dict[f'b_{b_i+1}'][output][f'y_{pIdx+2}']
-
-                            # Choose the common non-zero basis
-                            mask = (Basis[:, None] == nextBasis).all(-1).any(-1)
-                            n_mask = (nextBasis[:, None] == Basis).all(-1).any(-1)
-
-                            # Compute the covariance in Eq 17.
-                            for ParIdx in range(n_params):
-                                idx = (mask) & (Basis[:, ParIdx] > 0)
-                                n_idx = (n_mask) & (nextBasis[:, ParIdx] > 0)
-                                try:
-                                    cov_Z_p_q[ParIdx] += np.sum(np.dot(
-                                        PCECoeffs[idx], nextPCECoeffs[n_idx])
-                                        )
-                                except:
-                                    pass
-
-                # Compute the sobol indices according to Ref. 2
-                if PCEModel.dim_red_method.lower() == 'pca':
-                    n_c_points = self.engine.ExpDesign.Y[output].shape[1]
-                    PCA = PCEModel.pca[f'b_{b_i+1}'][output]
-                    compPCA = PCA.components_
-                    nComp = compPCA.shape[0]
-                    var_Z_p = PCA.explained_variance_
-
-                    # Extract the sobol index of the components
-                    for i_order in range(1, max_order+1):
-                        n_comb = math.comb(n_params, i_order)
-                        sobol_array[i_order] = np.zeros((n_comb, n_c_points))
-                        Z = np.array(list(combinations(range(n_params), i_order)))
-
-                        # Loop over parameters
-                        for q in range(Z.shape[0]):
-                            S_Z_i = sobol_cell_array[i_order][q]
-
-                            for tIdx in range(n_c_points):
-                                var_Y_t = np.var(
-                                    self.engine.ExpDesign.Y[output][:, tIdx])
-                                if var_Y_t == 0.0:
-                                    term1, term2 = 0.0, 0.0
-                                else:
-                                    # Eq. 17
-                                    term1 = 0.0
-                                    for i in range(nComp):
-                                        a = S_Z_i[i] * var_Z_p[i]
-                                        a *= compPCA[i, tIdx]**2
-                                        term1 += a
-
-                                    # TODO: Term 2
-                                    # term2 = 0.0
-                                    # for i in range(nComp-1):
-                                    #     term2 += cov_Z_p_q[q] * compPCA[i, tIdx]
-                                    #     term2 *= compPCA[i+1, tIdx]
-                                    # term2 *= 2
-
-                                sobol_array[i_order][q, tIdx] = term1 #+ term2
-
-                                # Devide over total output variance Eq. 18
-                                sobol_array[i_order][q, tIdx] /= var_Y_t
-
-                    # Compute the TOTAL Sobol indices.
-                    total_sobol = np.zeros((n_params, n_c_points))
-                    for ParIdx in range(n_params):
-                        S_Z_i = total_sobol_array[ParIdx]
-
-                        for tIdx in range(n_c_points):
-                            var_Y_t = np.var(self.engine.ExpDesign.Y[output][:, tIdx])
-                            if var_Y_t == 0.0:
-                                term1, term2 = 0.0, 0.0
-                            else:
-                                term1 = 0
-                                for i in range(nComp):
-                                    term1 += S_Z_i[i] * var_Z_p[i] * \
-                                        (compPCA[i, tIdx]**2)
-
-                                # Term 2
-                                term2 = 0
-                                for i in range(nComp-1):
-                                    term2 += cov_Z_p_q[ParIdx] * compPCA[i, tIdx] \
-                                        * compPCA[i+1, tIdx]
-                                term2 *= 2
-
-                            total_sobol[ParIdx, tIdx] = term1 #+ term2
-
-                            # Devide over total output variance Eq. 18
-                            total_sobol[ParIdx, tIdx] /= var_Y_t
-
-                    sobol_cell_[output] = sobol_array
-                    total_sobol_[output] = total_sobol
-                else:
-                    sobol_cell_[output] = sobol_cell_array
-                    total_sobol_[output] = total_sobol_array
-
-            # Save for each bootsrtap iteration
-            sobol_cell_b[b_i] = sobol_cell_
-            total_sobol_b[b_i] = total_sobol_
-
-        # Average total sobol indices
-        total_sobol_all = {}
-        for i in sorted(total_sobol_b):
-            for k, v in total_sobol_b[i].items():
-                if k not in total_sobol_all:
-                    total_sobol_all[k] = [None] * len(total_sobol_b)
-                total_sobol_all[k][i] = v
-
-        self.total_sobol = {}
-        for output in self.ModelObj.Output.names:
-            self.total_sobol[output] = np.mean(total_sobol_all[output], axis=0)
-
-        # ---------------- Plot -----------------------
-        par_names = self.engine.ExpDesign.par_names
-        x_values_orig = self.engine.ExpDesign.x_values
-
-        newpath = (f'Outputs_PostProcessing_{self.name}/')
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        fig = plt.figure()
-
-        for outIdx, output in enumerate(self.ModelObj.Output.names):
-
-            # Extract total Sobol indices
-            total_sobol = self.total_sobol[output]
-
-            # Compute quantiles
-            q_5 = np.quantile(total_sobol_all[output], q=0.05, axis=0)
-            q_97_5 = np.quantile(total_sobol_all[output], q=0.975, axis=0)
-
-            # Extract a list of x values
-            if type(x_values_orig) is dict:
-                x = x_values_orig[output]
-            else:
-                x = x_values_orig
-
-            if plot_type == 'bar':
-                ax = fig.add_axes([0, 0, 1, 1])
-                dict1 = {xlabel: x}
-                dict2 = {param: sobolIndices for param, sobolIndices
-                         in zip(par_names, total_sobol)}
-
-                df = pd.DataFrame({**dict1, **dict2})
-                df.plot(x=xlabel, y=par_names, kind="bar", ax=ax, rot=0,
-                        colormap='Dark2', yerr=q_97_5-q_5)
-                ax.set_ylabel('Total Sobol indices, $S^T$')
-
-            else:
-                for i, sobolIndices in enumerate(total_sobol):
-                    plt.plot(x, sobolIndices, label=par_names[i],
-                             marker='x', lw=2.5)
-                    plt.fill_between(x, q_5[i], q_97_5[i], alpha=0.15)
-
-                plt.ylabel('Total Sobol indices, $S^T$')
-                plt.xlabel(xlabel)
-
-            plt.title(f'Sensitivity analysis of {output}')
-            if plot_type != 'bar':
-                plt.legend(loc='best', frameon=True)
-
-            # Save indices
-            np.savetxt(f'./{newpath}totalsobol_' +
-                       output.replace('/', '_') + '.csv',
-                       total_sobol.T, delimiter=',',
-                       header=','.join(par_names), comments='')
-
-            # save the current figure
-            fig.savefig(
-                f'./{newpath}Sobol_indices_{output}.pdf',
-                bbox_inches='tight'
-                )
-
-            # Destroy the current plot
-            plt.clf()
-
-        return self.total_sobol
-
-    # -------------------------------------------------------------------------
-    def check_reg_quality(self, n_samples=1000, samples=None):
-        """
-        Checks the quality of the metamodel for single output models based on:
-        https://towardsdatascience.com/how-do-you-check-the-quality-of-your-regression-model-in-python-fa61759ff685
-
-
-        Parameters
-        ----------
-        n_samples : int, optional
-            Number of parameter sets to use for the check. The default is 1000.
-        samples : array of shape (n_samples, n_params), optional
-            Parameter sets to use for the check. The default is None.
-
-        Returns
-        -------
-        None.
-
-        """
-        MetaModel = self.MetaModel
-
-        if samples is None:
-            self.n_samples = n_samples
-            samples = self._get_sample()
-        else:
-            self.n_samples = samples.shape[0]
-
-        # Evaluate the original and the surrogate model
-        y_val = self._eval_model(samples, key_str='valid')
-        y_pce_val, _ = MetaModel.eval_metamodel(samples=samples)
-
-        # Open a pdf for the plots
-        newpath = f'Outputs_PostProcessing_{self.name}/'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        # Fit the data(train the model)
-        for key in y_pce_val.keys():
-
-            y_pce_val_ = y_pce_val[key]
-            y_val_ = y_val[key]
-            residuals = y_val_ - y_pce_val_
-
-            # ------ Residuals vs. predicting variables ------
-            # Check the assumptions of linearity and independence
-            fig1 = plt.figure()
-            for i, par in enumerate(self.engine.ExpDesign.par_names):
-                plt.title(f"{key}: Residuals vs. {par}")
-                plt.scatter(
-                    x=samples[:, i], y=residuals, color='blue', edgecolor='k')
-                plt.grid(True)
-                xmin, xmax = min(samples[:, i]), max(samples[:, i])
-                plt.hlines(y=0, xmin=xmin*0.9, xmax=xmax*1.1, color='red',
-                           lw=3, linestyle='--')
-                plt.xlabel(par)
-                plt.ylabel('Residuals')
-                plt.show()
-
-                # save the current figure
-                fig1.savefig(f'./{newpath}/Residuals_vs_Par_{i+1}.pdf',
-                             bbox_inches='tight')
-                # Destroy the current plot
-                plt.clf()
-
-            # ------ Fitted vs. residuals ------
-            # Check the assumptions of linearity and independence
-            fig2 = plt.figure()
-            plt.title(f"{key}: Residuals vs. fitted values")
-            plt.scatter(x=y_pce_val_, y=residuals, color='blue', edgecolor='k')
-            plt.grid(True)
-            xmin, xmax = min(y_val_), max(y_val_)
-            plt.hlines(y=0, xmin=xmin*0.9, xmax=xmax*1.1, color='red', lw=3,
-                       linestyle='--')
-            plt.xlabel(key)
-            plt.ylabel('Residuals')
-            plt.show()
-
-            # save the current figure
-            fig2.savefig(f'./{newpath}/Fitted_vs_Residuals.pdf',
-                         bbox_inches='tight')
-            # Destroy the current plot
-            plt.clf()
-
-            # ------ Histogram of normalized residuals ------
-            fig3 = plt.figure()
-            resid_pearson = residuals / (max(residuals)-min(residuals))
-            plt.hist(resid_pearson, bins=20, edgecolor='k')
-            plt.ylabel('Count')
-            plt.xlabel('Normalized residuals')
-            plt.title(f"{key}: Histogram of normalized residuals")
-
-            # Normality (Shapiro-Wilk) test of the residuals
-            ax = plt.gca()
-            _, p = stats.shapiro(residuals)
-            if p < 0.01:
-                annText = "The residuals seem to come from a Gaussian Process."
-            else:
-                annText = "The normality assumption may not hold."
-            at = AnchoredText(annText, prop=dict(size=30), frameon=True,
-                              loc='upper left')
-            at.patch.set_boxstyle("round,pad=0.,rounding_size=0.2")
-            ax.add_artist(at)
-
-            plt.show()
-
-            # save the current figure
-            fig3.savefig(f'./{newpath}/Hist_NormResiduals.pdf',
-                         bbox_inches='tight')
-            # Destroy the current plot
-            plt.clf()
-
-            # ------ Q-Q plot of the normalized residuals ------
-            plt.figure()
-            stats.probplot(residuals[:, 0], plot=plt)
-            plt.xticks()
-            plt.yticks()
-            plt.xlabel("Theoretical quantiles")
-            plt.ylabel("Sample quantiles")
-            plt.title(f"{key}: Q-Q plot of normalized residuals")
-            plt.grid(True)
-            plt.show()
-
-            # save the current figure
-            plt.savefig(f'./{newpath}/QQPlot_NormResiduals.pdf',
-                        bbox_inches='tight')
-            # Destroy the current plot
-            plt.clf()
-
-    # -------------------------------------------------------------------------
-    def eval_pce_model_3d(self):
-
-        self.n_samples = 1000
-
-        PCEModel = self.MetaModel
-        Model = self.ModelObj
-        n_samples = self.n_samples
-
-        # Create 3D-Grid
-        # TODO: Make it general
-        x = np.linspace(-5, 10, n_samples)
-        y = np.linspace(0, 15, n_samples)
-
-        X, Y = np.meshgrid(x, y)
-        PCE_Z = np.zeros((self.n_samples, self.n_samples))
-        Model_Z = np.zeros((self.n_samples, self.n_samples))
-
-        for idxMesh in range(self.n_samples):
-            sample_mesh = np.vstack((X[:, idxMesh], Y[:, idxMesh])).T
-
-            univ_p_val = PCEModel.univ_basis_vals(sample_mesh)
-
-            for Outkey, ValuesDict in PCEModel.coeffs_dict.items():
-
-                pce_out_mean = np.zeros((len(sample_mesh), len(ValuesDict)))
-                pce_out_std = np.zeros((len(sample_mesh), len(ValuesDict)))
-                model_outs = np.zeros((len(sample_mesh), len(ValuesDict)))
-
-                for Inkey, InIdxValues in ValuesDict.items():
-                    idx = int(Inkey.split('_')[1]) - 1
-                    basis_deg_ind = PCEModel.basis_dict[Outkey][Inkey]
-                    clf_poly = PCEModel.clf_poly[Outkey][Inkey]
-
-                    PSI_Val = PCEModel.create_psi(basis_deg_ind, univ_p_val)
-
-                    # Perdiction with error bar
-                    y_mean, y_std = clf_poly.predict(PSI_Val, return_std=True)
-
-                    pce_out_mean[:, idx] = y_mean
-                    pce_out_std[:, idx] = y_std
-
-                    # Model evaluation
-                    model_out_dict, _ = Model.run_model_parallel(sample_mesh,
-                                                                 key_str='Valid3D')
-                    model_outs[:, idx] = model_out_dict[Outkey].T
-
-                PCE_Z[:, idxMesh] = y_mean
-                Model_Z[:, idxMesh] = model_outs[:, 0]
-
-        # ---------------- 3D plot for PCEModel -----------------------
-        fig_PCE = plt.figure()
-        ax = plt.axes(projection='3d')
-        ax.plot_surface(X, Y, PCE_Z, rstride=1, cstride=1,
-                        cmap='viridis', edgecolor='none')
-        ax.set_title('PCEModel')
-        ax.set_xlabel('$x_1$')
-        ax.set_ylabel('$x_2$')
-        ax.set_zlabel('$f(x_1,x_2)$')
-
-        plt.grid()
-        plt.show()
-
-        #  Saving the figure
-        newpath = f'Outputs_PostProcessing_{self.name}/'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        # save the figure to file
-        fig_PCE.savefig(f'./{newpath}/3DPlot_PCEModel.pdf',
-                        bbox_inches='tight')
-        plt.close(fig_PCE)
-
-        # ---------------- 3D plot for Model -----------------------
-        fig_Model = plt.figure()
-        ax = plt.axes(projection='3d')
-        ax.plot_surface(X, Y, PCE_Z, rstride=1, cstride=1,
-                        cmap='viridis', edgecolor='none')
-        ax.set_title('Model')
-        ax.set_xlabel('$x_1$')
-        ax.set_ylabel('$x_2$')
-        ax.set_zlabel('$f(x_1,x_2)$')
-
-        plt.grid()
-        plt.show()
-
-        # Save the figure
-        fig_Model.savefig(f'./{newpath}/3DPlot_Model.pdf',
-                          bbox_inches='tight')
-        plt.close(fig_Model)
-
-        return
-
-    # -------------------------------------------------------------------------
-    def compute_pce_moments(self):
-        """
-        Computes the first two moments using the PCE-based meta-model.
-
-        Returns
-        -------
-        pce_means: dict
-            The first moments (mean) of outpust.
-        pce_means: dict
-            The first moments (mean) of outpust.
-
-        """
-
-        MetaModel = self.MetaModel
-        outputs = self.ModelObj.Output.names
-        pce_means_b = {}
-        pce_stds_b = {}
-
-        # Loop over bootstrap iterations
-        for b_i in range(MetaModel.n_bootstrap_itrs):
-            # Loop over the metamodels
-            coeffs_dicts = MetaModel.coeffs_dict[f'b_{b_i+1}'].items()
-            means = {}
-            stds = {}
-            for output, coef_dict in coeffs_dicts:
-
-                pce_mean = np.zeros((len(coef_dict)))
-                pce_var = np.zeros((len(coef_dict)))
-
-                for index, values in coef_dict.items():
-                    idx = int(index.split('_')[1]) - 1
-                    coeffs = MetaModel.coeffs_dict[f'b_{b_i+1}'][output][index]
-
-                    # Mean = c_0
-                    if coeffs[0] != 0:
-                        pce_mean[idx] = coeffs[0]
-                    else:
-                        clf_poly = MetaModel.clf_poly[f'b_{b_i+1}'][output]
-                        pce_mean[idx] = clf_poly[index].intercept_
-                    # Var = sum(coeffs[1:]**2)
-                    pce_var[idx] = np.sum(np.square(coeffs[1:]))
-
-                # Save predictions for each output
-                if MetaModel.dim_red_method.lower() == 'pca':
-                    PCA = MetaModel.pca[f'b_{b_i+1}'][output]
-                    means[output] = PCA.inverse_transform(pce_mean)
-                    stds[output] = np.sqrt(np.dot(pce_var,
-                                                  PCA.components_**2))
-                else:
-                    means[output] = pce_mean
-                    stds[output] = np.sqrt(pce_var)
-
-            # Save predictions for each bootstrap iteration
-            pce_means_b[b_i] = means
-            pce_stds_b[b_i] = stds
-
-        # Change the order of nesting
-        mean_all = {}
-        for i in sorted(pce_means_b):
-            for k, v in pce_means_b[i].items():
-                if k not in mean_all:
-                    mean_all[k] = [None] * len(pce_means_b)
-                mean_all[k][i] = v
-        std_all = {}
-        for i in sorted(pce_stds_b):
-            for k, v in pce_stds_b[i].items():
-                if k not in std_all:
-                    std_all[k] = [None] * len(pce_stds_b)
-                std_all[k][i] = v
-
-        # Back transformation if PCA is selected.
-        pce_means, pce_stds = {}, {}
-        for output in outputs:
-            pce_means[output] = np.mean(mean_all[output], axis=0)
-            pce_stds[output] = np.mean(std_all[output], axis=0)
-
-            # Print a report table
-            print("\n>>>>> Moments of {} <<<<<".format(output))
-            print("\nIndex  |  Mean   |  Std. deviation")
-            print('-'*35)
-            print('\n'.join(f'{i+1}  |  {k:.3e}  |  {j:.3e}' for i, (k, j)
-                            in enumerate(zip(pce_means[output],
-                                             pce_stds[output]))))
-        print('-'*40)
-
-        return pce_means, pce_stds
-
-    # -------------------------------------------------------------------------
-    def _get_sample(self, n_samples=None):
-        """
-        Generates random samples taken from the input parameter space.
-
-        Returns
-        -------
-        samples : array of shape (n_samples, n_params)
-            Generated samples.
-
-        """
-        if n_samples is None:
-            n_samples = self.n_samples
-        self.samples = self.ExpDesign.generate_samples(
-            n_samples,
-            sampling_method='random')
-        return self.samples
-
-    # -------------------------------------------------------------------------
-    def _eval_model(self, samples=None, key_str='Valid'):
-        """
-        Evaluates Forward Model for the given number of self.samples or given
-        samples.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params), optional
-            Samples to evaluate the model at. The default is None.
-        key_str : str, optional
-            Key string pass to the model. The default is 'Valid'.
-
-        Returns
-        -------
-        model_outs : dict
-            Dictionary of results.
-
-        """
-        Model = self.ModelObj
-
-        if samples is None:
-            samples = self._get_sample()
-            self.samples = samples
-        else:
-            self.n_samples = len(samples)
-
-        model_outs, _ = Model.run_model_parallel(samples, key_str=key_str)
-
-        return model_outs
-
-    # -------------------------------------------------------------------------
-    def _plot_validation(self):
-        """
-        Plots outputs for visual comparison of metamodel outputs with that of
-        the (full) original model.
-
-        Returns
-        -------
-        None.
-
-        """
-        PCEModel = self.MetaModel
-
-        # get the samples
-        x_val = self.samples
-        y_pce_val = self.pce_out_mean
-        y_val = self.model_out_dict
-
-        # Open a pdf for the plots
-        newpath = f'Outputs_PostProcessing_{self.name}/'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        fig = plt.figure()
-        # Fit the data(train the model)
-        for key in y_pce_val.keys():
-
-            y_pce_val_ = y_pce_val[key]
-            y_val_ = y_val[key]
-
-            regression_model = LinearRegression()
-            regression_model.fit(y_pce_val_, y_val_)
-
-            # Predict
-            x_new = np.linspace(np.min(y_pce_val_), np.max(y_val_), 100)
-            y_predicted = regression_model.predict(x_new[:, np.newaxis])
-
-            plt.scatter(y_pce_val_, y_val_, color='gold', linewidth=2)
-            plt.plot(x_new, y_predicted, color='k')
-
-            # Calculate the adjusted R_squared and RMSE
-            # 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():
-                length_list.append(len(value))
-            n_predictors = min(length_list)
-            n_samples = x_val.shape[0]
-
-            R2 = r2_score(y_pce_val_, y_val_)
-            AdjR2 = 1 - (1 - R2) * (n_samples - 1) / \
-                (n_samples - n_predictors - 1)
-            rmse = mean_squared_error(y_pce_val_, y_val_, squared=False)
-
-            plt.annotate(f'RMSE = {rmse:.3f}\n Adjusted $R^2$ = {AdjR2:.3f}',
-                         xy=(0.05, 0.85), xycoords='axes fraction')
-
-            plt.ylabel("Original Model")
-            plt.xlabel("PCE Model")
-            plt.grid()
-            plt.show()
-
-            # save the current figure
-            plot_name = key.replace(' ', '_')
-            fig.savefig(f'./{newpath}/Model_vs_PCEModel_{plot_name}.pdf',
-                        bbox_inches='tight')
-
-            # Destroy the current plot
-            plt.clf()
-
-    # -------------------------------------------------------------------------
-    def _plot_validation_multi(self, x_values=[], x_axis="x [m]"):
-        """
-        Plots outputs for visual comparison of metamodel outputs with that of
-        the (full) multioutput original model
-
-        Parameters
-        ----------
-        x_values : list or array, optional
-            List of x values. The default is [].
-        x_axis : str, optional
-            Label of the x axis. The default is "x [m]".
-
-        Returns
-        -------
-        None.
-
-        """
-        Model = self.ModelObj
-
-        newpath = f'Outputs_PostProcessing_{self.name}/'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        # List of markers and colors
-        color = cycle((['b', 'g', 'r', 'y', 'k']))
-        marker = cycle(('x', 'd', '+', 'o', '*'))
-
-        fig = plt.figure()
-        # Plot the model vs PCE model
-        for keyIdx, key in enumerate(Model.Output.names):
-
-            y_pce_val = self.pce_out_mean[key]
-            y_pce_val_std = self.pce_out_std[key]
-            y_val = self.model_out_dict[key]
-            try:
-                x = self.model_out_dict['x_values'][key]
-            except (TypeError, IndexError):
-                x = x_values
-
-            for idx in range(y_val.shape[0]):
-                Color = next(color)
-                Marker = next(marker)
-
-                plt.plot(x, y_val[idx], color=Color, marker=Marker,
-                         label='$Y_{%s}^M$'%(idx+1))
-
-                plt.plot(x, y_pce_val[idx], color=Color, marker=Marker,
-                         linestyle='--',
-                         label='$Y_{%s}^{PCE}$'%(idx+1))
-                plt.fill_between(x, y_pce_val[idx]-1.96*y_pce_val_std[idx],
-                                 y_pce_val[idx]+1.96*y_pce_val_std[idx],
-                                 color=Color, alpha=0.15)
-
-            # Calculate the RMSE
-            rmse = mean_squared_error(y_pce_val, y_val, squared=False)
-            R2 = r2_score(y_pce_val[idx].reshape(-1, 1),
-                          y_val[idx].reshape(-1, 1))
-
-            plt.annotate(f'RMSE = {rmse:.3f}\n $R^2$ = {R2:.3f}',
-                         xy=(0.85, 0.1), xycoords='axes fraction')
-
-            plt.ylabel(key)
-            plt.xlabel(x_axis)
-            plt.legend(loc='best')
-            plt.grid()
-
-            # save the current figure
-            plot_name = key.replace(' ', '_')
-            fig.savefig(f'./{newpath}/Model_vs_PCEModel_{plot_name}.pdf',
-                        bbox_inches='tight')
-
-            # Destroy the current plot
-            plt.clf()
-
-        # Zip the subdirectories
-        Model.zip_subdirs(f'{Model.name}valid', f'{Model.name}valid_')
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__init__.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__init__.py
deleted file mode 100644
index 4bd81739f..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__init__.py	
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from .pylink import PyLinkForwardModel
-
-__all__ = [
-    "PyLinkForwardModel"
-    ]
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/__init__.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 5b7c1b3926506fb279b856f55ca6120df31b8888..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 247
zcmYk0F>V4e5Jhb-0ThKMNZf#88|DHCrHFtcL7*rNjb*UKTFkDI?G5aaa;0rk<q9+~
z3k_eIKl*yo{BgbBGb6S7LlbEKHQ`Z$!W&H(kZGnlvYf9uXIkv|TIl49rLBKXFy-~@
zvih*ae(L;DdHw0MLEju$q)FXAR7mWW>yDHPQOaNDpNQY=yn?)lu!Zknd;q_98D>fa
zcz4?}H$@CEvvFQ-V2bXzR562%s!aG%Xtj4IxEFwwwy;sk(V?ol<J{>I&7^rSw8>tC
HNV=CRubV&?

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/__init__.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index 2ce3317406e07859bf08a42b738674e05d5c4339..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 281
zcmZ3^%ge<81T4a;sl`D0F^B^LOi;#W2_R!SLkdF*V-7<uV-zDJLkd$mV-!;gb1;J@
z%S%R}v?k*%p@2%C%)D&3{G#&2q7>i!l+>IeW}uXxCi5+}g327A9GHKLJw84$Cnr9B
zCBtWs4ZnPytztrpQ;UjYin8-FaxxMVi(_2!lS^|`^Gb?i+%ro&N|R#Ta`MXq5=$~-
zk`gOZi^~#oGE<83D`Ft##>B^G=4F<|$LkeT{^GF7%}*)KNwq8D1ey+VT(KsQ_`uA_
g$oPScfl>VegBmgdim^(5U}oZGYhVY#B6gr^0M-CYtpET3

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/__init__.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index 0bbb522855ad250ad55bca46123c0f5023076291..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 312
zcmYk0%}N6?6or$S`h(bw3*TWDDHL%dB0@zFtQ2HGN+6_7M#J1>hGbGZZhZw`!dGzX
zTg=v#ui!@Sv>Pwn?{YYo!;!<`0l|6w_*8)Rs~7(#L2-#2juDC|3dGVmr9>r<be^d6
zo@9e>ie^T;qgi`vTzOsjXX(|nQW|_8aF?asZruWU8{O>*ApwMVCw>S04SwDxXFLzu
z2kv!Qjk$_8uD4{?IPE2v7ulG~u|mrxdd+SoGj^3v^M{ksDPKebiY=`yHJ5b_+$?LZ
z5zH36FiwKkAwm;Y<0sL7`RMpUwmPgZS@~+sw;j0<#+gQlQQda?=eAN2^hJtA!vJxZ
GCcl4{ja-8O

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/pylink.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/pylink.cpython-310.pyc
deleted file mode 100644
index b6ae7c14b35b60388e38fcbd3af64d04771a947c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18654
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/pylink.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/pylink.cpython-311.pyc
deleted file mode 100644
index e430ff1341268f5ee1e872f5ce19d674ba50b8c2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35406
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/pylink.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/__pycache__/pylink.cpython-39.pyc
deleted file mode 100644
index 746c82eb52be2e437c61bd201433f9d38b8ab177..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18646
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/pylink.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/pylink.py
deleted file mode 100644
index 11cc11c49..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/pylink/pylink.py	
+++ /dev/null
@@ -1,799 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-from dataclasses import dataclass
-
-import os
-import shutil
-import h5py
-import numpy as np
-import time
-import zipfile
-import pandas as pd
-import multiprocessing
-from functools import partial
-import tqdm
-
-import umbridge # TODO: add this to the imports!?
-#from multiprocessing import get_context
-from multiprocess import get_context
-
-
-
-def within_range(out, minout, maxout):
-    """
-    Checks if all the values in out lie between minout and maxout
-
-    Parameters
-    ----------
-    out : array or list
-        Data to check against range
-    minout : int
-        Lower bound of the range
-    maxout : int
-        Upper bound of the range
-
-    Returns
-    -------
-    inside : bool
-        True if all values in out are in the specified range
-
-    """
-    try:
-        out = np.array(out)
-    except:
-        raise AttributeError('The given values should be a 1D array, but are not')
-    if out.ndim != 1:
-            raise AttributeError('The given values should be a 1D array, but are not')
-        
-    if minout > maxout:
-        raise ValueError('The lower and upper bounds do not form a valid range, they might be switched')
-    
-    inside = False
-    if (out > minout).all() and (out < maxout).all():
-        inside = True
-    return inside
-
-
-class PyLinkForwardModel(object):
-    """
-    A forward model binder
-
-    This calss serves as a code wrapper. This wrapper allows the execution of
-    a third-party software/solver within the scope of BayesValidRox.
-
-    Attributes
-    ----------
-    link_type : str
-        The type of the wrapper. The default is `'pylink'`. This runs the
-        third-party software or an executable using a shell command with given
-        input files.
-        Second option is `'function'` which assumed that model can be run using
-        a function written separately in a Python script.
-    name : str
-        Name of the model.
-    py_file : str
-        Python file name without `.py` extension to be run for the `'function'`
-        wrapper. Note that the name of the python file and that of the function
-        must be simillar. This function must recieve the parameters in an array
-        of shape `(n_samples, n_params)` and returns a dictionary with the
-        x_values and output arrays for given output names.
-    func_args : dict
-        Additional arguments for the python file. The default is `{}`.
-    shell_command : str
-        Shell command to be executed for the `'pylink'` wrapper.
-    input_file : str or list
-        The input file to be passed to the `'pylink'` wrapper.
-    input_template : str or list
-        A template input file to be passed to the `'pylink'` wrapper. This file
-        must be a copy of `input_file` with `<Xi>` place holder for the input
-        parameters defined using `inputs` class, with i being the number of
-        parameter. The file name ending should include `.tpl` before the actual
-        extension of the input file, for example, `params.tpl.input`.
-    aux_file : str or list
-        The list of auxiliary files needed for the `'pylink'` wrapper.
-    exe_path : str
-        Execution path if you wish to run the model for the `'pylink'` wrapper
-        in another directory. The default is `None`, which corresponds to the
-        currecnt working directory.
-    output_file_names : list of str
-        List of the name of the model output text files for the `'pylink'`
-        wrapper.
-    output_names : list of str
-        List of the model outputs to be used for the analysis.
-    output_parser : str
-        Name of the model parser file (without `.py` extension) that recieves
-        the `output_file_names` and returns a 2d-array with the first row being
-        the x_values, e.g. x coordinates or time and the rest of raws pass the
-        simulation output for each model output defined in `output_names`. Note
-        that again here the name of the file and that of the function must be
-        the same.
-    multi_process: bool
-        Whether the model runs to be executed in parallel for the `'pylink'`
-        wrapper. The default is `True`.
-    n_cpus: int
-        The number of cpus to be used for the parallel model execution for the
-        `'pylink'` wrapper. The default is `None`, which corresponds to all
-        available cpus.
-    meas_file : str
-        The name of the measurement text-based file. This file must contain
-        x_values as the first column and one column for each model output. The
-        default is `None`. Only needed for the Bayesian Inference.
-    meas_file_valid : str
-        The name of the measurement text-based file for the validation. The
-        default is `None`. Only needed for the validation with Bayesian
-        Inference.
-    mc_ref_file : str
-        The name of the text file for the Monte-Carlo reference (mean and
-        standard deviation) values. It must contain `x_values` as the first
-        column, `mean` as the second column and `std` as the third. It can be
-        used to compare the estimated moments using meta-model in the post-
-        processing step. This is only available for one output.
-    obs_dict : dict
-        A dictionary containing the measurement text-based file. It must
-        contain `x_values` as the first item and one item for each model output
-        . The default is `{}`. Only needed for the Bayesian Inference.
-    obs_dict_valid : dict
-        A dictionary containing the validation measurement text-based file. It
-        must contain `x_values` as the first item and one item for each model
-        output. The default is `{}`.
-    mc_ref_dict : dict
-        A dictionary containing the Monte-Carlo reference (mean and standard
-        deviation) values. It must contain `x_values` as the first item and
-        `mean` as the second item and `std` as the third. The default is `{}`.
-        This is only available for one output.
-    """
-
-    # Nested class
-    @dataclass
-    class OutputData(object):
-        parser: str = ""
-        names: list = None
-        file_names: list = None
-
-    def __init__(self, link_type='pylink', name=None, py_file=None,
-                 func_args={}, shell_command='', input_file=None,
-                 input_template=None, aux_file=None, exe_path='',
-                 output_file_names=[], output_names=[], output_parser='',
-                 multi_process=True, n_cpus=None, meas_file=None,
-                 meas_file_valid=None, mc_ref_file=None, obs_dict={},
-                 obs_dict_valid={}, mc_ref_dict={}):
-        self.link_type = link_type
-        self.name = name
-        self.shell_command = shell_command
-        self.py_file = py_file
-        self.func_args = func_args
-        self.input_file = input_file
-        self.input_template = input_template
-        self.aux_file = aux_file
-        self.exe_path = exe_path
-        self.multi_process = multi_process
-        self.n_cpus = n_cpus
-        self.Output = self.OutputData(
-            parser=output_parser,
-            names=output_names,
-            file_names=output_file_names,
-        )
-        self.n_outputs = len(self.Output.names)
-        self.meas_file = meas_file
-        self.meas_file_valid = meas_file_valid
-        self.mc_ref_file = mc_ref_file
-        self.observations = obs_dict
-        self.observations_valid = obs_dict_valid
-        self.mc_reference = mc_ref_dict
-
-    # -------------------------------------------------------------------------
-    def read_observation(self, case='calib'):
-        """
-        Reads/prepare the observation/measurement data for
-        calibration.
-        
-        Parameters
-        ----------
-        case : str
-            The type of observation to read in. Can be either 'calib',
-            'valid' or 'mc_ref'
-
-        Returns
-        -------
-        DataFrame
-            A dataframe with the calibration data.
-
-        """
-        # TOOD: check that what is read in/transformed matches the expected form of data/reference
-        if case.lower() == 'calib':
-            if isinstance(self.observations, dict) and bool(self.observations):
-                self.observations = pd.DataFrame.from_dict(self.observations)
-            elif self.meas_file is not None:
-                file_path = os.path.join(os.getcwd(), self.meas_file)
-                self.observations = pd.read_csv(file_path, delimiter=',')
-            elif isinstance(self.observations, pd.DataFrame):
-                self.observations = self.observations
-            else:
-                raise Exception("Please provide the observation data as a "
-                                "dictionary via observations attribute or pass"
-                                " the csv-file path to MeasurementFile "
-                                "attribute")
-            # Compute the number of observation
-            self.n_obs = self.observations[self.Output.names].notnull().sum().values.sum()
-            return self.observations
-            
-        elif case.lower() == 'valid':
-            if isinstance(self.observations_valid, dict) and \
-              bool(self.observations_valid):
-                self.observations_valid = pd.DataFrame.from_dict(self.observations_valid)
-            elif self.meas_file_valid is not None:
-                file_path = os.path.join(os.getcwd(), self.meas_file_valid)
-                self.observations_valid = pd.read_csv(file_path, delimiter=',')
-            elif isinstance(self.observations_valid, pd.DataFrame):
-                self.observations_valid = self.observations_valid
-            else:
-                raise Exception("Please provide the observation data as a "
-                                "dictionary via observations attribute or pass"
-                                " the csv-file path to MeasurementFile "
-                                "attribute")
-            # Compute the number of observation
-            self.n_obs_valid = self.observations_valid[self.Output.names].notnull().sum().values.sum()
-            return self.observations_valid
-                
-        elif case.lower() == 'mc_ref':
-            if self.mc_ref_file is None and \
-               isinstance(self.mc_reference, pd.DataFrame):
-                return self.mc_reference
-            elif isinstance(self.mc_reference, dict) and bool(self.mc_reference):
-                self.mc_reference = pd.DataFrame.from_dict(self.mc_reference)
-            elif self.mc_ref_file is not None:
-                file_path = os.path.join(os.getcwd(), self.mc_ref_file)
-                self.mc_reference = pd.read_csv(file_path, delimiter=',')
-            else:
-                self.mc_reference = None
-            return self.mc_reference
-
-
-    # -------------------------------------------------------------------------
-    def read_output(self):
-        """
-        Reads the the parser output file and returns it as an
-         executable function. It is required when the models returns the
-         simulation outputs in csv files.
-
-        Returns
-        -------
-        Output : func
-            Output parser function.
-
-        """
-        output_func_name = self.Output.parser
-
-        output_func = getattr(__import__(output_func_name), output_func_name)
-
-        file_names = []
-        for File in self.Output.file_names:
-            file_names.append(os.path.join(self.exe_path, File))
-        try:
-            output = output_func(self.name, file_names)
-        except TypeError:
-            output = output_func(file_names)
-        return output
-
-    # -------------------------------------------------------------------------
-    def update_input_params(self, new_input_file, param_set):
-        """
-        Finds this pattern with <X1> in the new_input_file and replace it with
-         the new value from the array param_sets.
-
-        Parameters
-        ----------
-        new_input_file : list
-            List of the input files with the adapted names.
-        param_set : array of shape (n_params)
-            Parameter set.
-
-        Returns
-        -------
-        None.
-
-        """
-        NofPa = param_set.shape[0]
-        text_to_search_list = [f'<X{i+1}>' for i in range(NofPa)]
-
-        for filename in new_input_file:
-            # Read in the file
-            with open(filename, 'r') as file:
-                filedata = file.read()
-
-            # Replace the target string
-            for text_to_search, params in zip(text_to_search_list, param_set):
-                filedata = filedata.replace(text_to_search, f'{params:0.4e}')
-
-            # Write the file out again
-            with open(filename, 'w') as file:
-                file.write(filedata)
-
-    # -------------------------------------------------------------------------
-    def run_command(self, command, output_file_names):
-        """
-        Runs the execution command given by the user to run the given model.
-        It checks if the output files have been generated. If yes, the jobe is
-        done and it extracts and returns the requested output(s). Otherwise,
-        it executes the command again.
-
-        Parameters
-        ----------
-        command : str
-            The shell command to be executed.
-        output_file_names : list
-            Name of the output file names.
-
-        Returns
-        -------
-        simulation_outputs : array of shape (n_obs, n_outputs)
-            Simulation outputs.
-
-        """
-
-        # Check if simulation is finished
-        while True:
-            time.sleep(3)
-            files = os.listdir(".")
-            if all(elem in files for elem in output_file_names):
-                break
-            else:
-                # Run command
-                Process = os.system(f'./../{command}')
-                if Process != 0:
-                    print('\nMessage 1:')
-                    print(f'\tIf the value of \'{Process}\' is a non-zero value'
-                          ', then compilation problems occur \n' % Process)          
-        os.chdir("..")
-
-        # Read the output
-        simulation_outputs = self.read_output()
-
-        return simulation_outputs
-
-    # -------------------------------------------------------------------------
-    def run_forwardmodel(self, xx):
-        """
-        This function creates subdirectory for the current run and copies the
-        necessary files to this directory and renames them. Next, it executes
-        the given command.
-
-        Parameters
-        ----------
-        xx : tuple
-            A tuple including parameter set, simulation number and key string.
-
-        Returns
-        -------
-        output : array of shape (n_outputs+1, n_obs)
-            An array passed by the output paraser containing the x_values as
-            the first row and the simulations results stored in the the rest of
-            the array.
-
-        """
-        c_points, run_no, key_str = xx
-
-        # Handle if only one imput file is provided
-        if not isinstance(self.input_template, list):
-            self.input_template = [self.input_template]
-        if not isinstance(self.input_file, list):
-            self.input_file = [self.input_file]
-
-        new_input_file = []
-        # Loop over the InputTemplates:
-        for in_temp in self.input_template:
-            if '/' in in_temp:
-                in_temp = in_temp.split('/')[-1]
-            new_input_file.append(in_temp.split('.tpl')[0] + key_str +
-                                  f"_{run_no+1}" + in_temp.split('.tpl')[1])
-
-        # Create directories
-        newpath = self.name + key_str + f'_{run_no+1}'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        # Copy the necessary files to the directories
-        for in_temp in self.input_template:
-            # Input file(s) of the model
-            shutil.copy2(in_temp, newpath)
-        # Auxiliary file
-        if self.aux_file is not None:
-            shutil.copy2(self.aux_file, newpath)  # Auxiliary file
-
-        # Rename the Inputfile and/or auxiliary file
-        os.chdir(newpath)
-        for input_tem, input_file in zip(self.input_template, new_input_file):
-            if '/' in input_tem:
-                input_tem = input_tem.split('/')[-1]
-            os.rename(input_tem, input_file)
-
-        # Update the parametrs in Input file
-        self.update_input_params(new_input_file, c_points)
-
-        # Update the user defined command and the execution path
-        try:
-            new_command = self.shell_command.replace(self.input_file[0],
-                                                     new_input_file[0])
-            new_command = new_command.replace(self.input_file[1],
-                                              new_input_file[1])
-        except:
-            new_command = self.shell_command.replace(self.input_file[0],
-                                                     new_input_file[0])
-        # Set the exe path if not provided
-        if not bool(self.exe_path):
-            self.exe_path = os.getcwd()
-
-        # Run the model
-        print(new_command)
-        output = self.run_command(new_command, self.Output.file_names)
-
-        return output
-
-    # -------------------------------------------------------------------------
-    def run_model_parallel(self, c_points, prevRun_No=0, key_str='',
-                           mp=True, verbose=True):
-        """
-        Runs model simulations. If mp is true (default), then the simulations
-         are started in parallel.
-
-        Parameters
-        ----------
-        c_points : array of shape (n_samples, n_params)
-            Collocation points (training set).
-        prevRun_No : int, optional
-            Previous run number, in case the sequential design is selected.
-            The default is `0`.
-        key_str : str, optional
-            A descriptive string for validation runs. The default is `''`.
-        mp : bool, optional
-            Multiprocessing. The default is `True`.
-        verbose: bool, optional
-            Verbosity. The default is `True`.
-
-        Returns
-        -------
-        all_outputs : dict
-            A dictionary with x values (time step or point id) and all outputs.
-            Each key contains an array of the shape `(n_samples, n_obs)`.
-        new_c_points : array
-            Updated collocation points (training set). If a simulation does not
-            executed successfully, the parameter set is removed.
-
-        """
-
-        # Initilization
-        n_c_points = len(c_points)
-        all_outputs = {}
-        
-        # TODO: if umbridge, just run, no parallel from here
-        # If the link type is UM-Bridge, then no parallel needs to be started from here
-        if self.link_type.lower() == 'umbridge':
-            Function = self.uMBridge_model
-            # For now just do same as usual
-            self.link_type = 'function'
-
-        # Extract the function
-        if self.link_type.lower() == 'function':
-            # Prepare the function
-            Function = getattr(__import__(self.py_file), self.py_file)
-        # ---------------------------------------------------------------
-        # -------------- Multiprocessing with Pool Class ----------------
-        # ---------------------------------------------------------------
-        # Start a pool with the number of CPUs
-        if self.n_cpus is None:
-            n_cpus = multiprocessing.cpu_count()
-        else:
-            n_cpus = self.n_cpus
-
-        # Run forward model
-        if n_c_points == 1 or not mp:
-            if n_c_points== 1:
-                if self.link_type.lower() == 'function':
-                    group_results = Function(c_points, **self.func_args)
-                else:
-                    group_results = self.run_forwardmodel(
-                        (c_points[0], prevRun_No, key_str)
-                        )
-            else:
-                for i in range(c_points.shape[0]):
-                    if i == 0:
-                        if self.link_type.lower() == 'function':
-                            group_results = Function(np.array([c_points[0]]), **self.func_args)
-                        else:
-                            group_results = self.run_forwardmodel(
-                                (c_points[0], prevRun_No, key_str)
-                                )
-                        for key in group_results:
-                            if key != 'x_values':
-                                group_results[key] = [group_results[key]]
-                    else: 
-                        if self.link_type.lower() == 'function':
-                            res = Function(np.array([c_points[i]]), **self.func_args)
-                        else:
-                            res = self.run_forwardmodel(
-                                (c_points[i], prevRun_No, key_str)
-                                )
-                        for key in res:
-                            if key != 'x_values':
-                                group_results[key].append(res[key])
-        
-                for key in group_results:
-                    if key != 'x_values':
-                        group_results[key]= np.array(group_results[key])
-
-        elif self.multi_process or mp:
-            with get_context('spawn').Pool(n_cpus) as p:
-            #with multiprocessing.Pool(n_cpus) as p:
-                
-                if self.link_type.lower() == 'function':
-                    imap_var = p.imap(partial(Function, **self.func_args),
-                                      c_points[:, np.newaxis])
-                else:
-                    args = zip(c_points,
-                               [prevRun_No+i for i in range(n_c_points)],
-                               [key_str]*n_c_points)
-                    imap_var = p.imap(self.run_forwardmodel, args)
-
-                if verbose:
-                    desc = f'Running forward model {key_str}'
-                    group_results = list(tqdm.tqdm(imap_var, total=n_c_points,
-                                                   desc=desc))
-                else:
-                    group_results = list(imap_var)
-
-        # Check for NaN
-        for var_i, var in enumerate(self.Output.names):
-            # If results are given as one dictionary
-            if isinstance(group_results, dict):
-                Outputs = np.asarray(group_results[var])
-            # If results are given as list of dictionaries
-            elif isinstance(group_results, list):
-                Outputs = np.asarray([item[var] for item in group_results],
-                                     dtype=np.float64)
-            NaN_idx = np.unique(np.argwhere(np.isnan(Outputs))[:, 0])
-            new_c_points = np.delete(c_points, NaN_idx, axis=0)
-            all_outputs[var] = np.atleast_2d(
-                np.delete(Outputs, NaN_idx, axis=0)
-                )
-
-        # Print the collocation points whose simulations crashed
-        if len(NaN_idx) != 0:
-            print('\n')
-            print('*'*20)
-            print("\nThe following parameter sets have been removed:\n",
-                  c_points[NaN_idx])
-            print("\n")
-            print('*'*20)
-
-        # Save time steps or x-values
-        if isinstance(group_results, dict):
-            all_outputs["x_values"] = group_results["x_values"]
-        elif any(isinstance(i, dict) for i in group_results):
-            all_outputs["x_values"] = group_results[0]["x_values"]
-
-        # Store simulations in a hdf5 file
-        self._store_simulations(
-            c_points, all_outputs, NaN_idx, key_str, prevRun_No
-            )
-
-        return all_outputs, new_c_points
-    
-    def uMBridge_model(self, params):
-        """
-        Function that calls a UMBridge model and transforms its output into the 
-        shape expected for the surrogate.
-    
-        Parameters
-        ----------
-        params : 2d np.array, shape (#samples, #params)
-            The parameter values for which the model is run.
-    
-        Returns
-        -------
-        dict
-            The transformed model outputs.
-    
-        """
-        # Init model
-        #model = umbridge.HTTPModel('http://localhost:4242', 'forward')
-        model = umbridge.HTTPModel(self.host, 'forward') # TODO: is this always forward?
-        
-        # Run the model
-        #out = np.array(model(np.ndarray.tolist(params), {'level':0}))
-        out = np.array(model(np.ndarray.tolist(params), self.modelparams))
-        
-        # Sort into dict
-        out_dict = {}
-        cnt = 0
-        for key in self.Output.names:
-            # If needed resort into single-value outputs
-            if self.output_type == 'single-valued':
-                if out[:,cnt].shape[1] >1:  # TODO: this doesn't fully seem correct??
-                    for i in range(out[:,key]):
-                        new_key = key+str(i)
-                        if new_key not in self.Output.names:
-                            self.Output.names.append(new_key)
-                            if i == 0:
-                                self.Ouptut.names.remove(key)
-                        out_dict[new_key] = out[:,cnt,i] # TODO: not sure about this, need to test
-                else: 
-                    out_dict[key] = out[:,cnt]
-                    
-                
-            else:
-                out_dict[key] = out[:,cnt]
-            cnt += 1
-        
-            
-        # TODO: how to deal with the x-values?
-        if self.output_type == 'single-valued':
-            out_dict['x_values'] = [0]
-        else:
-            out_dict['x_values'] = np.arange(0,out[:,0].shape[0],1)
-        
-        #return {'T1':out[:,0], 'T2':out[:,1], 'H1':out[:,2], 'H2':out[:,3], 
-       #         'x_values':[0]}
-        return out_dict
-
-    # -------------------------------------------------------------------------
-    def _store_simulations(self, c_points, all_outputs, NaN_idx, key_str,
-                           prevRun_No):
-        """
-        
-
-        Parameters
-        ----------
-        c_points : TYPE
-            DESCRIPTION.
-        all_outputs : TYPE
-            DESCRIPTION.
-        NaN_idx : TYPE
-            DESCRIPTION.
-        key_str : TYPE
-            DESCRIPTION.
-        prevRun_No : TYPE
-            DESCRIPTION.
-
-        Returns
-        -------
-        None.
-
-        """
-
-        # Create hdf5 metadata
-        if key_str == '':
-            hdf5file = f'ExpDesign_{self.name}.hdf5'
-        else:
-            hdf5file = f'ValidSet_{self.name}.hdf5'
-        hdf5_exist = os.path.exists(hdf5file)
-        file = h5py.File(hdf5file, 'a')
-
-        # ---------- Save time steps or x-values ----------
-        if not hdf5_exist:
-            if type(all_outputs["x_values"]) is dict:
-                grp_x_values = file.create_group("x_values/")
-                for varIdx, var in enumerate(self.Output.names):
-                    grp_x_values.create_dataset(
-                        var, data=all_outputs["x_values"][var]
-                        )
-            else:
-                file.create_dataset("x_values", data=all_outputs["x_values"])
-
-        # ---------- Save outputs ----------
-        for varIdx, var in enumerate(self.Output.names):
-            if not hdf5_exist:
-                grpY = file.create_group("EDY/"+var)
-            else:
-                grpY = file.get("EDY/"+var)
-
-            if prevRun_No == 0 and key_str == '':
-                grpY.create_dataset(f'init_{key_str}', data=all_outputs[var])
-            else:
-                try:
-                    oldEDY = np.array(file[f'EDY/{var}/adaptive_{key_str}'])
-                    del file[f'EDY/{var}/adaptive_{key_str}']
-                    data = np.vstack((oldEDY, all_outputs[var]))
-                except KeyError:
-                    data = all_outputs[var]
-                grpY.create_dataset('adaptive_'+key_str, data=data)
-
-            if prevRun_No == 0 and key_str == '':
-                grpY.create_dataset(f"New_init_{key_str}",
-                                    data=all_outputs[var])
-            else:
-                try:
-                    name = f'EDY/{var}/New_adaptive_{key_str}'
-                    oldEDY = np.array(file[name])
-                    del file[f'EDY/{var}/New_adaptive_{key_str}']
-                    data = np.vstack((oldEDY, all_outputs[var]))
-                except KeyError:
-                    data = all_outputs[var]
-                grpY.create_dataset(f'New_adaptive_{key_str}', data=data)
-
-        # ---------- Save CollocationPoints ----------
-        new_c_points = np.delete(c_points, NaN_idx, axis=0)
-        grpX = file.create_group("EDX") if not hdf5_exist else file.get("EDX")
-        if prevRun_No == 0 and key_str == '':
-            grpX.create_dataset("init_"+key_str, data=c_points)
-            if len(NaN_idx) != 0:
-                grpX.create_dataset("New_init_"+key_str, data=new_c_points)
-
-        else:
-            try:
-                name = f'EDX/adaptive_{key_str}'
-                oldCollocationPoints = np.array(file[name])
-                del file[f'EDX/adaptive_{key_str}']
-                data = np.vstack((oldCollocationPoints, new_c_points))
-            except KeyError:
-                data = new_c_points
-            grpX.create_dataset('adaptive_'+key_str, data=data)
-
-            if len(NaN_idx) != 0:
-                try:
-                    name = f'EDX/New_adaptive_{key_str}'
-                    oldCollocationPoints = np.array(file[name])
-                    del file[f'EDX/New_adaptive_{key_str}']
-                    data = np.vstack((oldCollocationPoints, new_c_points))
-                except KeyError:
-                    data = new_c_points
-                grpX.create_dataset('New_adaptive_'+key_str, data=data)
-
-        # Close h5py file
-        file.close()
-
-    # -------------------------------------------------------------------------
-    def zip_subdirs(self, dir_name, key):
-        """
-        Zips all the files containing the key(word).
-
-        Parameters
-        ----------
-        dir_name : str
-            Directory name.
-        key : str
-            Keyword to search for.
-
-        Returns
-        -------
-        None.
-
-        """
-        # setup file paths variable
-        dir_list = []
-        file_paths = []
-
-        # Read all directory, subdirectories and file lists
-        dir_path = os.getcwd()
-
-        for root, directories, files in os.walk(dir_path):
-            for directory in directories:
-                # Create the full filepath by using os module.
-                if key in directory:
-                    folderPath = os.path.join(dir_path, directory)
-                    dir_list.append(folderPath)
-
-        # Loop over the identified directories to store the file paths
-        for direct_name in dir_list:
-            for root, directories, files in os.walk(direct_name):
-                for filename in files:
-                    # Create the full filepath by using os module.
-                    filePath = os.path.join(root, filename)
-                    file_paths.append('.'+filePath.split(dir_path)[1])
-
-        # writing files to a zipfile
-        if len(file_paths) != 0:
-            zip_file = zipfile.ZipFile(dir_name+'.zip', 'w')
-            with zip_file:
-                # writing each file one by one
-                for file in file_paths:
-                    zip_file.write(file)
-
-            file_paths = [path for path in os.listdir('.') if key in path]
-
-            for path in file_paths:
-                shutil.rmtree(path)
-
-            print("\n")
-            print(f'{dir_name}.zip has been created successfully!\n')
-
-        return
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__init__.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__init__.py
deleted file mode 100644
index 70bfb20f5..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__init__.py	
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from .surrogate_models import MetaModel
-
-__all__ = [
-    "MetaModel"
-    ]
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 8c10c82287a57ba1e3b4dd428962e57cdfbc5c58..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 258
zcmZ8bL23d)5S*DcQG-Gt;14|P#r}Xu4ncEKgy2OF&FBp7;_ObCo;C4Ferd0s{DPOH
z*HcJAS5s6M)xO_<5{%Z%&>nbS8u1s3#VZdDn2a#ei9)WW6h`gkTAAcSq^+xDGnI9B
zZlj)iV_j%+i!`a9sS3gGb+lMC2Hl;yji{YNJd5zamv_2tpeQ5kU_~|%goDpqrZvHv
z-&KVzBf%_>@6{Hj&VMa+%wVfemX6xxCirjoUj>MHnMcIY=c(?DxxaFD()>z~Og*KN
G&d)E$kVM1)

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index fe3d14f8dfc5304350b98b23bc52ca5b2315a871..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 292
zcmZ3^%ge<81T4a;so6mKF^B^LOi;#W2_R!SLkdF*V-7<uV-zDJLkd$mV-!;gb1;J@
z%S%R}v?k*%PT$m$MBn_B)SMz_popI)^DTkm(xRgL^u&_X_*{@gF<9mndwhIiPELIM
zN`}uMD}IGLTg8MHrxq2*6lLdU<YXi!7RR{cCzs}?=9Lu3xM!AllqSWv<>Z$KB$i~v
zBqdg+7MCUFWTq75SHz&(5ECDtnU`4-AFo$X`HRB_Xl-dus$CH$&>oOGi#3772WCb_
g#t&=^j2agh)R7TTj8)(RGZQyk13L&7u>(~D0K~CSSO5S3

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index f1a3fcc2eed66172304cd27ab5fe111ca0198bf5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 323
zcmZ9Hy-EW?5XX1#B7R`N%6GV813_#=M2L;Wi693O7M4wRE-u;KJN6?aw!VkGuV9<E
zxYo*7u+h2Lhy(K*hX2g)A2}Qz5sa7jtx{M&`sQzB*j!_VQ-mUl8e-{`Qlhd2on|V3
zAjRO5qFB)Gu!JbfMuGAD-d&M*Cn0&?EMx>>dm-$UZeIv#j1X_c@8RSQU$2u3UIp-h
zdssGOu98jbUoxv5cxm*rjJk2G1{sqFc00LeH&t0Zo{i4=ENP?I+{z_z*|vu3dCLL8
zY|U%!r121viD5N<68)4<j?d%<!U``d->mt6w_FJAbQEILZn}d@d?6XQ%F%KdAdd6w
F`v>INVKD#z

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/adaptPlot.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/adaptPlot.cpython-311.pyc
deleted file mode 100644
index 2854217e56fecb2456011a91a984951fed9cbcbb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4921
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-310.pyc
deleted file mode 100644
index ffab8b4f67e52a3128aa8740301f958a0d72c502..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2815
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
C4-2yZ

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-311.pyc
deleted file mode 100644
index 92db2e7e7390700d4b6b25bcdc0db1906dee37bc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5228
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
H>m>gNxx5;C

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-39.pyc
deleted file mode 100644
index 82737a42dd7351d06b703b3da838031ba95979da..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2886
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
UGiz{V6;d({`I`N<wKeJd7wkkSHUIzs

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-310.pyc
deleted file mode 100644
index 92d0cc0e7a0a07123fdfbc2c777d1b9281a43344..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14412
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-311.pyc
deleted file mode 100644
index 51c4ea4a7b9eb757b303782de26abffc022df39b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 21706
zcmeHvYit}>c4k$-n@x(%SCisHD(b<9L{d-dLCKaVQPj(lEQyjew2Vfvt4KE052~su
ziFCK41kR?FD6>s~lW7H<ptaCA6s!q2fD<Ty2k-`yKtB?oOX!7q3lN~qVlXhW3()Wk
zHW)0hd(N$@TU~6@ay*m4{7A8Rs_NE#-*eAB_dBQRFRQ957&zj0|4RISZ!^sQ#2e#q
z=@(!99b9~$5g37uFe5CSZ4q14K4NDv%pP$>og+?i?TEOd?h$v?GvbMQN4zA=8L5c+
zMttPj6{(C?jZ~3qHnMJH9i(?hs-ymq8kVs!CmF%>5hHj-yXgGb!7!h|zjln&lBX5$
z)F;+{Y=>v?uRp63DnDXI>Pd_$h_S9LMuWg!X1c4tzy#;JS#{kdaa<B*IWC<G-wDSc
z#P@bMCi2p`xFANl?W#94A%<=QuLWmRpLWSh5<jD^<K^I3B+e&-<Q@`MYmdVa9!?}g
z0fOxEEj)Q+aVg42!n0yXuPHgP`ps9{;Nts?NP2X{Ca@!R!3OPc2zH=O!2#4IIDxta
z7u4RZHXY+<L^;gIw7TkT2*+cyw<|a}E>BO1QYga9GB*~NxD(N-uoMpQ5sswe_?W<5
z<)tv6fFv|D9G!}YQ8AVv!7>*g<49&kS)5iFXO_m1P9l*)28&>uZ19hR@)htAG%U#`
znIK$gN74>=M$?(31MV<BIg(Deqr;iB!5tlVfw{~)X3uv!RaYz+PKc6P1^pZh$KWy~
zP9;=VC_Xh4yr#NuiPC6X7FBy99_e<e4q1$hN!3t*RENZmqy|YX5E(0uea3OW`h(;B
z*RRN;Bwv?q#3v#XJTG4#jEAPNQ{?L>!--SVqt{2V>u<qm3R3*eb@2|5-6mh3j*d!U
zVO$I*<mnh64JW1(ap>X5ium%hB*n-1gcyt>gUQ<CV1)2o-_(ri2||;gUBTIQqvKZ&
za-R_e8zCd}++~Vwo70Z_zGB<9w4>l@rng%lw6fU7!O4?`zpo%R6QW%VH`snMSOQ#p
zpGnZ6VVFsJop8cK{ea=L&4R4>7@mGYV<eeLn(GZRXx8TfdxH!!45Do|L3jrH{5Z}o
znG3~ZFlyssEF>b|@sV-pyu?J5o0h||aV|8$$HqmO3&*&q$j30sR9uFE562~%l@OK_
zQh0P4nHpo<7Q^Ec37I~Zu>8jk)fStAi8&or?fj@rSmLo=s)uK)Ejq2bqSL{6M3AvD
zP(P^wAJhi5xm{At+3jl&Pg&&kkO`UPcbQ*SF#g*6x4sw3ZpvPL&^;HMkL89RU3(tr
zRjT_6)qP9t&#U+3J$s}^NMji&90D>>e*>Lv9Vnb(=3qTxKZd4$LT6QqEge2{n3C+I
zIlF9FN9}-cI^0j}EAoQbJ4xrdwBM4m+sr|5JaMi_=~yGKZI!rAXpv(Ux*!G2mUJS!
zrEIb9SaR@~rG1NbIFhzWuaSdb)0k7T39i`IHA=C4i&C&1Hjr`7q<zeZqWf1>+;Na5
zAY(XzPw<af)q!H`3!F!A;}jAzAi4>s!Xy4pSpK<D$?ggXJ6IE4EpVke;xSQHo$>?^
zX}a+l$~M)_!(8IWMb$YgN^x0r#DsA4u}kA|_L|DhsLpFaIU%U7YeAe(s%wUvOJt$O
z_m#mAscaDII=l62INprb4pop9Aa|Lc`8Q;5E;^q0^8USwe{aFRH_iUcUpw#4vJ37U
zyHK$>@Z_ZV%vtnR7kq8YjNAJT`?8^Nek8{(*5n(uD-GKV4cpU0tA!OSt1?&bT}TfU
z8v@zD+(>#LJ@7L~do9Z^jOX};$)%c48}khZm4<_bhJ)#$VoU47zTCw>Ka@R`xs<u|
zqhn7_EnWQd-KQ5n9r^s`PjBaYE+{=03OyGfX0<<4lNrhm<xb?QyYrrIZA#K<1x=)~
z^Y7pW7CI&e=kg=TT4iAh*7(v1JL?1Xwp-Ya%2G=xovviU(@AQbXo77Prbg*BorRdf
z%8BfNh1f9*l}$NuijCWVJstc3D40sj<9sAE9f8G4<}|sBio-2b9CSH7C5b{flnCDv
zIg9i~r9<RH6NJY#Edqu8R2)`o6wQ!hf|JEWU)T9~Lgc<#Hd^YiZ02{8pO#Sz>fsU-
zq9j78A{S0@5M??RzBw&MW;j8FxfX@hRp3Tv${W#*)mnMb_Ln}Of$#7VAH`hFm8F*+
zG}fJdj_8HGk?;+&q{*QDab2+>Ha#e7N<$A93yz6=Vj48iZkiNJy)2S`G9D5w?)F3&
zdNdT5Aof%o<}@sf+NBHwBu~VrBhX0No1#!bv%Dli8L_eo)93vWSUbtU+>Udx>FCsq
zR(qLy50*n5o*o=`a`iq<MK7?%dOWVbG(BdyYQwFq#q`>7&RE@7XDmyJMjFm!2n;gn
z`Ri4LsK>A2a=ikyQo5vGKJo?12&oeY=<2mWK@5duP)dSh(=nJV@tEoy6%%|=LLn}-
z0#WTkJfV6(VYwxS<e+xNN916)CbgwK7|E^ov08!RI2enELCN(IJyO5%7>zHN<oX;7
z;ynEtNnRRl7ZfUw0=dg9_b`nuF9N-wrY!PGU}qt)Gwm)0nzHo^&2!Oo#mhj`{MZjJ
zEnLkF<b+32rEPDaZSNAVwC#Vo<+EO;?c_6737jbe&ZK?C#`fG<rEy2vQ}j1xJ^AYP
zyr-Rr*7MySRDVHx7K1^xB8V#TbOf&}gTb5Ad_;fZ4hDsIC>WFiP&WzJ8|eU&6F?p_
zBrCFfNtGCi1pnm`Ab08Cvd!-FEHg+vPG|cvLy6z%+>5t5@mD#wEi;sG&CX5BOgYht
z#ezccPY*+me{~Fk{s`8H(p{dH@xmT8&5W^v_aiUt_h45G`#m4o@8M3?EmR9tAF(5z
zG;@a?@q&c*tF<SNt=tgs{|giY!iL5QUAjrT4T>~}Y6W-tG#3SxB03%AP%K5l6Y;pf
zb*<PQYIBohXUe*Ma!=)4Z?8V<w5?b_Xy%C?E<UAiD7ywv3=Ld)dzgEZ+p}{go$TlI
z!a>4}iV_M3+{bC#O*)IT*$i8^eva&~SI>5r*t>`3J3Ik$a00Y;A}33fbR$!8#@a<e
z3QPSQY!p_{wsUN%lV*EPOiV!k;9{nyB~|5mI1#!O8gSyylo-;s%N%K2cvg!6DU70r
z!gpZpd55fgC#NHk-gA8DEI-42&?!bcd$7DzAE!mq7dYA_AcI9Cn=u}@J3Sn1Z@3Wb
zfI!YeFTw^0cJ;8#O~>Q}KN^7*2G#};HzW{tOCeq+s}CX?94LunP+tzV&E0)Q#^h|-
zNcVH2@pxqQ{u!30McO~7$2h!)u@6P21z3Yd!@LY@yA&lGHQe7?O3}+lcqC|!F9*yr
zU~mfz>l-xxcO>x^?!37;=(E5Jw~=E&KxxvHo1zOb*Oi!nMIU}Lz$~yEPrxb=ftp>q
ze3|st1Zc!&le@U~_I8eF9^o;4hk4>0)ET;%7qE~q9JF3C9-v!DGkU&~mMvXJu{v6x
z8g1$!+yc@adVzy_grh`zf`}lQU#m8CYb!P%nVR5r?#JGtokM%(G#~^p#(FEudj(5J
zwhhI_v9WL{OnR{kH6TG8<EJAD*c{^}=tY!Kp^s;{Q7H~RVA17hp=2yIj0IMC<Plh`
zzX6+YI-m4#*SOo^NCbHovI(P75yyFS8`d%U#NZgMUQj87a#mqUy&Z3IL$FSk^CX|p
z6i_N)fN|mk=>wf<DlQQ%aY{n;2u6Hb10+b<0|^a95Vc`8MV{V%aV*F|`-yhf18NuS
zy+F)?W@jjCw8OaLrQHvs1dWB#Ni7hgAS*Z5RfcF-`rpirluzNVpw1w)zpfIFhf>U0
z*ahrunc6r-NPiKHIfhbO1J8oc1XE6HeNWgh2u&qon3i)w=W3y3DnhBHtY*X|XQJw0
zkCALByK!seL$n$r11&bHMW_sYZLjxmW>1|61Cm4}06{TBaXR^6I!fU?T-TTskD3sY
zrNeRl>(G&zBdL&~p1r0XIwzE>^jd{L_Qqk~Pde*c*ND{QiypuWe*S+SfBF2}=sQPL
z+t}3b&;Rs)|8?&F{KL{)MDH950b)WAgbh#;`Dz)+_gE`-lt5)wKaz}fE14^KX2gN5
zrG{yElHQMDWBCc)hO$i3F0i*)sXBor>W5&nZhrrOB?z#&m30HkOY;yA9j5q_faoyI
zD}m^Sewf(JIHJq6wMiG;!FF0Z5Hs#}p6|A)HZdw)fWX<U7YsGPSV#56e3Ka6#DUD*
zG&Z$~8yfDe1YiYWbm?tKMpR9;g3PfKfZ$51m#P!0lgt#=SF#pJSRta{tB&)h&kw0?
z88&VrsP@$*v2Yda_7PmB1fRZwNeM_zGC{Rfx{8Ei)~YucB<OxHC}UgojR>6XYKku^
z#<MNuiXugh??D9l10eqjD2=D;zpdkP^@^vX;OThb+40=7W6AZ@{`CE4L;2zN6wmd7
z=X&0Az38jYp3VC@;rFt(HQzR<)Sf8Rp2%08C~oKke0g1Q17gq><W%r972Db|^yS9(
zh1=OMTvir0_8~gmnkPREPB9c@sEY}w2ykQNQWM=Q1w@b&e;p`VLeNucMzR5j1@t8w
zi`lKKbz&L5`#sEI6OuC2mO?~t!CbPoiGVl={E_3gh}wQo+J}>LekIvekXQ%Q(m-OF
zNs75jjR`cS=m(}0T!Q<F$7-y*4sA}cDSNELQX(DmZ-+oz@-l0`I*z;+dTdIJZ-as(
zdTdG=6Fv5>K#$E*eiP_%g|r1aT-u7H6G;~ml+n^QARx5t(ssP-0HXRNg8Be7AVsAf
z2<fg|0U%4g7`YD#MUSN&c#HK`ePbjoF<eSJF&Gg6X*ZCS_yXC0&u(0GvY62D4=`mb
zaQwH2hAT^;VK(2eO=;LxXxIi|Ex^EmduIU#uCBZP;WFc>I`p!oBX@K0=F)WWjf2Z}
zw)N1L43J+Sne$}W%o~|Ee(7S?w;&Y#$i2uus#t3Ov@_q-uQc@+n))+N18%mI;|EB1
zuHxSvWu{XEx(r#IEZ<{rRVG4gr3?5ZG6OjT_K9uP$!LQ~M{_3=)SiN6Hb)m^BL_UA
zfVHXw*I}uKDQ!zRQ?8Vo7;Nd{O%`9ecqegTH>YQb@JM+Qv<6^hq-Gc>3z*{*DiTxP
zq*t)(rWw27NL9od1?M+QOEC3{1e)*k1B8_8iF-wBpdKk-sxnn&$(2s+q;C=-9dfMf
ziPXAerQkuVJyk8(Q~m_PdHMn9`#R&=+NMD!V|#x?swU}A)gl6~*-EAQWK~H?m5A6U
ztCOB&1-1iGdeR<$tSjjgoNGN@qYZ3H&VFnAq1L4%VYb_!T(>f2(zZriHn}2KVy>&R
z#76TwIg)i+pILh)RiCU++Odt$b5zZ{K~hK?&{`5i?S~u*lz;j$Nf#l(Yt4~mSSG{9
z!jK=@cF7@B=)CkNYt*eGSxx%ZID3qqx8|K{NH(mIgMYQwS>jTTw9H%7*vMfmX%h7b
zau_v9d4Ovgu!ocNztMavVk3exS=RDYAnCA_V~*tO+e+gKzGMJL*V;Nuo2;#&DPb0T
zUCIiOTunwFm7bHeE4eb&2)sb8+|sGU8)kf=GFLKt&G2N6wZ_&v*zhz8>@=u;mb|LI
zZC>)aWKF5$5PUe!hH08*Vz!L!KDWjwRai#JoXO>KB|vz5#r!5=Oc1RR<bZx{Gp<X|
zAn{#Ex7F_o`T@ovh$=KWKyER?jr1-6cO1Pdtq&7yr{T=xCgWP#54~X4#I4DNlDfIp
zXe+o6ndwZaXO(1R?l8g4Mrkp(unuZS?~}M`tmgj`mLZBm421!Pq~N-Szn5a{nw!cB
zAf2YB7bc!ggI3^6xRtxMs_pQ-7&RN3Sd(dtgLLOKa0BoK@y=9)kMRIE%xJ(PK*KWE
zrP~N&aX`N`%+>^pDAqx1HnUbW44}(W_*H^#Ah;ojQ({a2t<Nl)qRrSmTEOe9lJU_=
z$Q00e@ZX||IP;c<4L`OK1y=RW1a(xLXvO0n)c@7V|1tZ~5vd;rdkFk1s>T3<4-yn8
zB+Aku2%eoBh(y7e$bfPYF++UV#HUOoiJ~?LuIi?;GUGR(_JD>(r=}5F)EFZk1B@QP
zXaYeH)qS?{G(c~fwcvxDDUu)pR%PK=T?5ql$*^Py96yGTE=Ht)rmX4oTO?G!G^oK%
zAhvybHI*K1Vqj0ZLtHz8synDTd8jT30_P8cDX4a6l7tGF^cF^EhgGM9zE&C@fpbtA
zLGms>_1xyA7?_>Gr39~}D;Vem6nQMJYGv=)t=h#YSu@I^d!6beAgk(v9)oUIorn_#
z)pbFz{+qsg(wi97r6G>eQMi$gAVEz)tuRr_?j{W^L360I7aw}*tWYb=X(8>y2>X$s
zkk^{(gr<TQrvm{=m7P{uLABjVsJ1IJV1AWvN+_^YHY{;?b^`DND343NDFEK1I>-5F
zlvmw46bW9Ty2F|v<LZNKz1pF9(b$2bW&^A2jUfETkXn8QIv99{buj+**_!OY4=+6$
zdAc`WeN?GFTBtsH&yi-+yNX=<Be&vdOM5f@#g1(+I`%*B*#DG$x=ZPJv(WLT;@OO`
z(qoyitXOQ?0B}o{cB(8kwZWZl*~Qd1&G)CBFKg=N16g)%{rvj0^Oet^8TjM=bbqm~
zF+G?bd{x)*1KWZtd-H*J!8`X>dJwiq^^KXEi(B(`JC(Yfg}R;hTu@Sb`q<0b`uUD*
z%|c!F;#}{1Z`xL@t;<}T+mg1!McVeWnm{Ho|AA7oxlprtnd$ZhzC@B9fQmFVqkBzL
zw*Ptc)_nEWV&nSxME2&~Om1^dTpWBj`LIuE+?A=#)MDKA+1+!uvU2Xq;@*cN%Elc^
z<IYU&OGt7HTzo>gO>-a4e+U7jHnrJfq%OxGVPn$|HZ64IYI3_D^epr!fsXVEVy4bs
z$qhWX2KNOB8hTaTko79n?YY6imIKeL59F&46gPKf90fo3(%&>+wal>XBP?tkYp%1f
zcLWL{KwtSA=A5r^vze>cTJdrNw=k9)Uflff+G1kq_~ScIw<<f1C|i#z8wLs+1~N{l
z6Swt8wNC;|wxxj|J0G__Y5Pg-XH9><>8IP2gXaqPyQp+uR5o7DIE!5O;t7S@wRG$6
zZ9nz=Q|&)CD@TV5_`9a;zou*$$v83&$Z!Lf+Y2T3FFBRXZzyg1GVWqqCpa|?E$v>q
z`QtYppL=rdC&xY;`h3^t@BY_=%HeZ`!{?Nqb4uF<D59-nao=Ab`*i5(o~O6}_K>po
zWMS_~W&25`?KH`HecOws9nYHp3tW=4EphrZ?yi$yHLn5(Eq_D4ap#N1{m&bL50%FL
zLSw(;KV0x1&ifA+>soV;eBBoKy{uoKZytQneD-<s*=GYv^Z7#ad8PhBq5eX?{sJ%o
zbZ1o{JCIE*e6Tq1;KS#wz4_MOqQ4>I{L;>}^}T9p&JO1GJUFx1ptSZWO*_EvpsAI(
z8XS8xxLEUWXmS6;^GnCT)u7O}UuoJ8yk1fCRKD=EJomJK^VYt_t%_%7!Lu{(*$FAh
zV{Jwhn>K3Gq<O)C7to!Re&T@U@U|D%w=Fd1L}mT<^x*w7#SL42C_TEhIJP8wI{9ft
z={#QOJg#gw4$m&6FTC2o;RSF*+V^z`AZQfU?YoI;5-gBz-mMA?C^dAGhAMN)p0r7K
zAe3&|rCO4nZp1Ye$Mn-An@5&7ozV?B33FK7eJQ$U38mX{QU=|uTkA-j&JZ~w2P%|h
zPG?T^g(PioS;{cgRhL!828h9)bdP~^TG9@#!w%j7T|pQA<JvMSuelcEI!&F;XfiM?
ze*?EQ>Td>KmS7<QCvbG);i*lVGu+RJKYfV@8n`o0fNeSiOEy?GS9d%!H6pWC)SgX)
zOy#hbhJkkYf$3TX7D%vz%VG*Gkh)tL@iAM|w`>^9(!?*X2b@8OHEb<~kroL{8@+y=
z($){IB~Sq584+XS=y?JzW$(=dCwOoW!4()TOvRCAOIA-3YfZl`OY5k*YFTzy)7cU{
z_?4p*L5y+&*A?y)`%G7I$`01*=vkLq!!5;HW9x1Eb*g{$^*#c$Orp{f1y*x3tJJ*7
zP>YiiNNyv+*(i-82_r!@i#VKV>eW%Wh1Vl)N{McdsaUBMI&h30!cH<K(lJbU9LXT2
zal<1VNEs!DF#?*h<JQ&U+2&Og9{pJZh!puDBn73XhXH5Zq3o{g@WO~v-&LsZTHO2O
zh*A%V$}3;PGUN5G*CAcD>OirvDZ6*!O{KAGaq!7mC9prk7Moi!>4V<%nU~G23mreK
zeH2(^7q>j=RoV{}+7CQ!SK1Ff6+Vk9?R5D`pDng*UGym}d(x*+B^b|6D1pvGpfi24
zSl5*8%)FJaY=2ePlzy8?^KP$n4x4@+$ps+8!_qr=-HF$*tr!B=>>&&|iR2WL(?}51
zDe+JHBfR}C5VcCT--SfjjRYUF(t8jpqo6&i8SseB5eb$fe;)`K>Wsf-+dgz%Lo&rO
zm)UpO;`^h^_6p~YWo9kXME%)_XPdtko!Thr8fBgJ%S;J9Wp8(`UuIrQNCy!UX^5^~
zP+MHD@c%2cL|E56urWhJKf%V5Bgx`Q1Y2&FuZ2Lu;8d;~z7a(IwwUQjJVI7%s!f?m
zo*Irc<OUpTiN6MQ9YQ&E5>@*(@*cH%KU@ND9@FpWYZB`Mvs75>^&<7K=4v>-u2B(q
zfy_xZc3{S4VdpX`V^15erc{uwA$vUO&mjB|^r4K1C(Nx)Ol3``=H7w(2QvJ<!+A%e
zrks#&*9i_19$%s0Sj|5XJQOR4hoXykD7uM<BD|XiZ>0IaYmpss6W>G+3}B^Nd$rs*
z@gW!lNTW|1@0Wc8Bn8L4cPuP|OCLW4o;%>QNcPIwvN<5b>pK8wXj}msOjzYXyn}Qp
zcMXF9E_F>IYc=sP>C>F8Oz!C?wKUmBTXJ9P;JE7>Iye%Ctg~-(;EaxLh@?4M6--~a
z)xD`KzK+LB-jqrhevdkHYpXQuD$SksDxOo+pKMiUKH{M@4GvkR8xg*Bh0c74j3i+D
zuY0NKOl+w$^~!=e@1=|7nv+f&Ivq^W$8N=dS(;`{$8S*PT2pnkB1;*>QeNoSYNIY$
zRx1%2X>oKSr3&A?wDQ*dTMPT`de(uCK$`d;&UJc6tl?Z|ECr@0``YP%ZxO8GTDNL0
z8o!ZI&{3@aaHvbbYd54vz7Syf`+4v2)_?iuea%OP*KnU(fJna~_c=S*NXp&kU~?S8
zm!6GP8LXk^3(#nHAy4TxAD&WcJG#0_Xmjp%OPAp!WswjKbRMt12SjB<QVP!HK4%ED
zN;IB?4J9#6pEFHG#eKS=@2~JSD_{Dlx7i<}PJ&=DD6xPide^P#Z&uv7|4TdTJqSpf
z_aGoc-h;1NTC;q*3h)_MI&uFNyuMd@o4%F4RgSn|Es6Gd4Z3QD_6ZIR7Q-vmT7TCZ
zCKA-(jcyo%{fWbhxLk)8raUQcssfxOoWu>mXEBRWq$cT^q^L}p6GJ87NECe$T;S^k
zeMS(PDtJPjAK;0dJ^^#tWEJ!=Ip7-EjvOgJxI(y7H3@3`vl{fRnm@Qgu<wtgY7?7{
z^bmVpnc23^^1LcpZS9AY)o_eP2Xd@5-Gb4c$x(L!BNm>Mb>MtZne?H%MbZl|Yr?Mf
z6N-fq7nvF`gO{{fuo@sy-6lt}MjHuhJ1wJP#tm3wVV~0;u3jUJ)dj;GVHR2oocsyp
zW<&s2t4peJjhxXy4<m1_Q>v+Sbb$vNlTDU-`k_x7^u}9GV90K;)+n_e@<Mq;4q`Sx
zmDpk2Lv1~48S<@lvfhE|dA)9eFU`yQZSw*Xd@a-y<smtQiZT;Cd;hwHBg;4z#4>d=
zu*59mU5MFil(Z&ymN+dy&CK{;%dwC%b!dR=){;{GO=kTP$x&+H$NjpG{|jTkj!VK2
zn#c))Rr*yCc<1G7zZ-%n$qI}Y=3a~jncFcM^gCi6|IY8ac^rFmSmI&iholft0u~|`
z2*;}<#6UjVY_&qe>meb4)QKTl5+R<3Ep9Yz%+eT!_8~$0vW6{A;1vNFQ6dpbvUCHl
zh(<w_2~<BcjUs|q=-xx%3e8ouHb_6`5!Bzk&|u1TjE5p!l90$q2#9$LuM$X(BAG^l
zCgbjA6UZbMV(AV(nnAJ;iD?v0!mY{<N*`kIUA(bf`Od0U#??&veT?A}gT#F77K22C
zC&psw56L4i6@$@OwcnBNNdE~!WSpuv2&*3&(1)1dY+x1L3HI9Gh3O^#4TyBmnzsDA
z+J-?Xt8K_!Ty*AZ`jnc!LQS7x<So|JW(MZ!({|lzykO4`%(cz8rEOp>s||o5d2_Bp
zY2K#PY)iAnng$Z!eXv8R={D}SEOdamn8o<zX5sZ{76y_YfI75x<oHGQ!I6a{@U4fI
zt@P&P%a*o<{b0vEv~UQ&;IQ#U%kJkbyO;Jo?fiVx=a-+=Jlp+@&%bj~X}MHrxpePL
z`dIol6xYhZmmZG)Xw#F9rP`&7KW=#3`=s|Ln?CFKyzy^$e6~Z`c3RnTMrk>t6}<uC
z?jklme#!PQ`6#Ju-UBZ%Z`!Z494NFLzzVfNl+C&Ehuf8wzCuf1`Z&}COIQpnZGPOU
zY}u!@>?7uFYB{wn?Xy@;vx$85X857)G_d<c;NbJXK>(-&hYNwjivP`m|INJr&2MTu
zg%<h&q9xYToa2#iao}Oq^VYt6Yag|q?)asLY1)))&kfA|-u&;O>GLJLeQn<Qid(u~
zY&rCN%b}-(pPhN;_(xy<%DctGM?SCl{Ma-0*)Gt<x1L9{H&DfcuX9vn2ItScTGPC$
zTT%hBH!Pu4M*&86z(3K;{~0deGh!@Q6p6kGZ*kx}06i33em#?LtsO-7sz~`jFY{4H
zSyzeG)Qvg|*c8F38B^0-D#20KDX?ojwY))qH6jO;3^Pu@u3VwLRIZVxGP&}@8kL|+
zdeLIpZJXuks#WqW4T?UKcfm}26QE_|qed1u+FT$33@H1mQ9o3;+o6eMB6M-xCo;IZ
zN|S{TG2p)-$sxIm1cjd_`EWz1eP6&ShsUFQiNHj;C!?ZokzktO`U?o2-MWh4Di`Jd
z9p%`cKz#U)KqXUCm${lfJ~xu<R2sS!|F$&xMYL}+om+hMnc3&Q_PnpXSl2MWH@j=@
zU^bLHxj6Ljys}}pQnx34DShcxU42HH+n3#wYg`OG+@Q4V0OyqSrI(OmU$%W=b9Qv@
zt@*bgV4eT|SmsjJb}xEA3N9+uHJPpHJL&53O(X8433Kj*>S`Y?GZ|4gs8jYJth&Y*
zTk!QZ(==~oBX|M~s~yO!;CXM8g2XUSck(1}r-j|zMjA_~$+-A68M<MymPifrbRy!U
zC^O8v(65u!$ZaXZ+&H?eiZ}QnJCYt^n0Em3a1Uw-umY+VnkGQGP+O&mia=IwR7Fkm
zqx8p^&|9)-BcrJ79qB&CJBH*ql0hVY3Pi?+P=?f)@w*T-+q?=h>ITPuK@LPK8u^k%
zpb<V>(WW$XfR%8&QvXJpeOVtUvq2tK>i6q5NH^FZe=BCj2T(=n&w&gRx`GT3N&gw1
zL2nIVypu>yAvujCfCSYE38yBpGfEk}ngdd5TO_~`l6Q=G`LB1OW3<0z+itWiBAH;B
z0rmu2JO(Q+x9oH|xn*W8QhSOR5KHJ)o8Jk(J(O(W(4P2OqS+I%cHIHhNj^oR`8HO{
zH{gA9Db_a%pEQt=_0?u0C_=uTr+rbcFGwOdFhZ3P0lo<rku@b2rx|$-N^P<{?E^2*
zFnm`9Ts$P4N@}GX3Qx`SLEi8+I?Y8gis21LGT<$+Oo1CIexgpZv<ESB#7wl8M*j@2
zNOzyXt41WaTmF^ju=Z(_x1=SwMX4eW0EM@dShmR2=8a#G>C9VyMP_&2`YSR=^K1W#
z%-+29S7ciA)?bmSzDxd!On=_`TlO4b;d3YDB>UmwjW03$7v{rLwlO;kgS<M;uiy10
hdGw3Y2v^-TEU*bB+di;i7OPW|1wQ)48WBhr|9?DEcsT$7

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-39.pyc
deleted file mode 100644
index 063355b16a397fb5fd89d38daa0d3ca5a8506766..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14506
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
B<oN&q

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/engine.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/engine.cpython-311.pyc
deleted file mode 100644
index f32454f2feaeb17bcf42a4b924156c45d354b009..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 84465
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
B#&`e#

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-310.pyc
deleted file mode 100644
index cbfe4d97e8e83ebc276e45ba6e84f514784f1d0b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5560
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
Z-$TZ+G!?TsR$7>|U8i)t^vVlo{{y+urp*8V

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-311.pyc
deleted file mode 100644
index aaf7d2d285e24e4d2e31c3dab3b1b071be7c5ecf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8154
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
bd8inaNFU$G@89A|r0WO|$^Hun+x`CllJEy5

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-39.pyc
deleted file mode 100644
index 27878248cbdaa2abf0af9d51d061aa6e2db86f43..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5648
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
Qn=09pu6MokM(NCd0M{nQGXMYp

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-310.pyc
deleted file mode 100644
index fc01f0f01b8bc70d438a3317b87d304883456f15..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 17477
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
WxdKn&n8;-&>4E+sNkEpU=>G#}NHw+q

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-311.pyc
deleted file mode 100644
index 786fb6880e590007f4cc628dab413d62f1590cce..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19555
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-39.pyc
deleted file mode 100644
index e7e0226dc1e28c09b9cd09a610599007b2267e3c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 17597
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
C=1mCz

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs_.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exp_designs_.cpython-311.pyc
deleted file mode 100644
index 076580dd7fa9e11559ef202903d44e00e25b8a26..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 20552
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-310.pyc
deleted file mode 100644
index af7431ce432969f095d1c07f429b8129cb5a2def..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8154
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-311.pyc
deleted file mode 100644
index 93c4663b2cd6bd9acef73471231ba305bddf9dad..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12405
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-39.pyc
deleted file mode 100644
index 98964152a4ea29f85f061ea6ec7daa3df7487230..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8190
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
O{Slolq(+zPr9T4XZ>fI(

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-310.pyc
deleted file mode 100644
index 16a383b994853cdb226f7b7fb291cdbef789e1f7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7185
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-311.pyc
deleted file mode 100644
index 1ce136ba4d826073719d19ffbbc87cff8dc02562..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7952
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-39.pyc
deleted file mode 100644
index c3f24cf9cb753b59f9e226f828a7c3598ac65a9a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7232
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/input_space.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/input_space.cpython-311.pyc
deleted file mode 100644
index d2310be6610a4c4824d6749297cdffe80c533a47..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 16785
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-310.pyc
deleted file mode 100644
index ed2b0f6f101965fb42fe059ec79e8084a4b3a9bf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2413
zcmc&$&2HO95GE<=$Exk5b`J%5Sp;rf0g2e4$i-+38*SqTXoVt4f!2mWued9jDYYx_
zE*;y*EqR6B+hbmdKu>*(o;ow6D5(mJ-ns_IoZZ>knc4Y1N^fj*Js9Ekr}DS9=lzAs
z;%I<!0FPxLjy&NB|1CUkf@9PI(EzOhnlHlVUay&e)zSz+JAlXTfRG;8dB=h9j~gO5
z4n;$RZ@uHDXo?p6Z;3Ye=oHPTYMML#C+zJq7>6v$xV6k_CgdnplDTuqa+OHqc&b>6
z=4{FhpGYT-?RU#<&Y5(WJ84OMP!Cdn;AWgEo>{iX^zbFk;bF6RoRo>PefC^Rc1CB|
z{%rNEPaB?TE7dUL&ViSq)>-Z5>4?E%z3L2CcBIXOyHrEOmKk}Gr$!0}vy_jJQ>lbh
zuFR+Qw364iS9~(fma`)3S#XvmT(P07swEh=a7vcxSE(BBmBrcL-)B^2+vh^WlUX%B
z?~$v8<=X4X7pHv%C1#J=?$7bV-CGSsYF+HEr(~V06m!3Q$2?Cs;N-!h`|Qza87tHh
zF5E~go6;=NlL^#NaK~|mU-B&F!%W_%GM3Fii&YiI>7`T@?Eg>)3MZy;9+wwO3Wf6`
z@c|UGf$xZxui>$GL5#iEUJO_R38(>N1cN8NpjfLfr0CB3@10+SR%WAjo@v3}zki7)
z%0)@^lLbIT=2v~5opWxZZ*-DRpvi1>l)CToVe|yr;z#bzqanYR7HcVtzKU#aj2?3*
z<B1kBvrz?r>2=YG<5Z<Cj_+ZlA&8dW^=~$*o%*xImE4d?D7P(mdF{RQe)nDQ#{0wf
zAxF&a=7Oq%AUqTTE|w|z>fd-o5<v8q*IZ(>!aHt!CS7h+33${i%-4<wTFC|TL9b!3
z=0%H75q(8xR$PO5Q7KCS+~^e>OHla?rY!E>TD#dUlV4gN^x9Y}giIV4-54vGXZXGz
z#}_%zs+D#e3!T99-Koy5<3!8R$i}0Lk4*=I_y7f7>Vm*<40a5LX_3M^Ug(FPbb|Ge
z<`bA&8W`vSJoaM{%S4PM4rELOZqOJ12&}1QhpOU1K%GLe1qPw|+o?>_QJN5+S*8i1
ztfmoSHOZ6nIZczl8sz_pqls<ym<1kJ<M|yT2UQ2o{jnF&74UiBc?Jw>+1c*SRs3*g
zw_@r!AKmH?&FG^6EZtvmiQQBAs}IKSM+Up<@V*CSB|M;HZH%;2tpt^@?Bd1a7_udu
zS-V<HXW?w>{gPAm7&nGr*E<d`d72>^RsccbS<U0*w8~<li3@H^p)x7IcPpUAt|Cz1
zgBPMI_=!*w7RZ1otU)tjMPWBhx|d$F2=RK0wfbg??!2f)cb;U?u3~r}CJ7=(a5#aW
z<(GdzM<33RTr<+3*EH*3X*N)7qPT;CK=wX-Ar!uZ$KoR5YkiyGG3W(^F;W&lNj``u
SI$xDo-$#fNMQ%2>qJID($9<0g

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-311.pyc
deleted file mode 100644
index 43d077e6552c249ec0d115a4d34f47de65e354cc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2860
zcmc&$&2Jk;6rXjxjbobhD~L8UFhW&>p|z+`IYcy4MWIwGIkZJWsmo@(Gj=wtcioxY
zwuySkp@$rLMG+E6oPw%K{4E6`5v|0Df526G>WTN>?v9ffMcf$2&olGhym|9JelNdF
zPSzQW_QtR3`*Ftp#zi@*#bkFLCR?n+t~1G=FzIYp7<&%id@SXh3UI~_a2#2^%^I#>
zisG+REOy_6$re*=$&qZSBAul%Sy`&eu_tWFl~tfeqzk8yWbTcqpC;ljxUtS*T;+Z!
zjNwVlrRoHc;>n8QY2+)Nh#=wtiu1nEqNft2O|zaKOA;Nl(?l6sUbKUjUkTj}A`u!s
z&*Szg?crtRK5i;MF-?A3DZWg1m}bdcZqk8Uu~AVw6iEVF+Ho9OH8(mOn3kJp5t&Y`
zdm;&9u-I^|?x%rPlEW^&N2<Pxq>7UKJyz4myFPy;di`+!t4O*u&TwBuysZjvNiGcB
z5{B`^AnMNN&RJMk;N)i06jFM<(i`tLNYx&;)q3}%d(8-3%&+jdZ@f!$hYHHTBwn)C
zC+Rc_@a>167`_uOxO?&P1%CNnZY%f_0<IOhEsD7x_j=$%DH4G@;(-VQ(GJxGa$}wh
z#4Nnf4IZe7jQt<{K<0R4&Xqi{v><ct_+@QiiC}$=!MCWBE_=*8+@~QOSXpVwpiU}_
zUo<M&gbhztA7<k-C#xD2b_^cjuOELl-}>4>Wwi8n@k+QNglS!i{j>+!W?I*S<jb_(
zYKt{x(3eujk6NlovR2w_>p*sumzWfyA0%lK>p+AD<V~t|+!cxPda+cYX%z+2U(0Hq
z7eqngdFxY@am{j#fMBM9Y_Od(Z*NwgPVLOR3qQv;;j@eH-sd2MCvwm&m~4T2R#Ak;
z&(<~N4*n+YaJ3E7=XSXb^3UxV2Otg|x_+O+LXaaRWEPLq!-If;D1`8n=UEOC1>oSp
zTPjI)lp_wV3(&EO7vo6n5npVKX|yssBKlbVS*?tx26Se5{PYA$Ozx}G^;5Yo_idiX
zBj<o@u)#?-G5K`r&)V$owb`Fmepvl+^|xB%k6PnJ`KR9i!NtZn#s|yV^Rl{!(Mv;|
zAN9QZsR#?sxaY~(hwbD2I9&7mSamwa>x81Kv7hK;K%OyDN!Dr%6cLP?xdvpzeg>5p
zw>Dr%K4GWNzNk(Qsuh<Hm?gCd_k#f&CHV!Y+lQ|mWh8e`!`8tT1C0fm48*spr+_V{
zZCi;7j0Z%Cu#o^dQfN(I`9UY}39Ai{34XYRNJ4BS{FPw~qVQS(`%nFckaV6K=uuI3
zm>!6)#f3wC{0<}>v_6rB&>ak4o;&x*yL4`@=t4uRJyaixQA30d)ErTXiCO5g7h`V>
z;gmJ+CM-tGgLV^ZtxP|TB)KpzkiFM&>;!bDRkimyd+w&P%JFiZ3$4YPJ#qDc2tow<
zqV^C}N8fSxUh#@vOz?Kt6AF>Mm+!+G3&uAoqX>R&x=DoQGUwo5Bv_$54T5b<P#VO;
z3Mf_t+v_exui<7@OoD8}#xJW6U7yv5uE@p<OAmqq72o=a5;H8aUWfZk0|+4NG$QN7
z&Y9U9VBbN2-I+N{KW`!L=q7v$G;sBCIHgY@If>*H5-RaGafX<Y7dX}u71YNtF&BaC
zE$|aq;7HE9?%4qwCAlV4ve>BPXh9nH-}1WlX%0vWdKN^{=VlqmV9arxLG42aP-2w4
Z#JyKT#<$KH2aFgcFLCeHzc9$Ue*o51>5l*a

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-39.pyc
deleted file mode 100644
index b0c91ff3182adb1245aa7f20656e8e94336a438c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2474
zcmc&$&2HO95GM6w$!hGRO%DZnSp-I10g+lG@Wp5h8*UpIXoMn(fxxCgued9jF}b97
zmyRvu<~&9Z?J=*=Yu|!EPkoD?Iy0mwsS1qVy2g&Vf3rK^&iAeO+FHkfa{K!q;;`j7
ze_><3)S<Bl)i5y69N`G}J=ELUF}7-=4y`)0T+w*xbejRpS|~MW?LjpgV59@{oa35s
zkL#j#+z@rqc<&rHMN_Q6{}s^!AMLz(sM5^xKVfZ$LD^?P#EoG#VM2~VC7C^!EK`Bh
zmWPUkIGv?j^H^G`O}|qtvsQ=0%t}MeUR9|1oa=F@cx2cPONMW#4>z0kW2X$P>9dzo
zvNPJl^rxd|eOmA$F;Wd9ZY_8jCP`GeIUF$<tVXTo%8U{na~mdbV#Bn&%t9>%gI<b9
z$W$sJl`Z0_JT1lb!!?i7XfZ09Jw2RZ0at7&OSA;z26l;}<ZY<NI|VqqySt2FHhnIH
zA5YQvx=XI+hAXcp-=6jrK+K-9&DZ|c=A9EoXsmB<QktEq5M#f4#Vk(P;H0<xm~EdH
zX9X<b!nH)$RKkKJjsZi#Eyo^y#iNi9Bl(zMERul+OBBZ8l~i=t{{aU&j!(yVT3jqO
z=s2$e7f3NJ_>F8ifNCCq89VPBAGih<SOd(c4Swv_^401>^3E*(KDc?q$Y}Jz(JQd_
z?_Umfydwi-@U*;0wmgx=*>z!iF;GYYXcJ1t-biwrY1unG___D}(etC%Px{;5FbgBm
z3u1mDJ)WkK7Y3;(!Sv#h2OQ*)mL`j=x!O91?75ISQ{Ir@NQ2iQbaL&POzULKt@PtW
z$jEplhtiw8?fan$t?xg=U>jf@cg3BoQ%3fugG=zB7!f?5!N)u2jq|H(Yq!pCt_v_B
zK$A-X7J0lc1mp%&^6kGVjXHt?Qe;X&^HMT!;R^|9s6sQaUCKt~c#tSLH+|5pYrM96
z1z-XK=k4kJXpD<)qc9+^PQJFlwy&Ve;A&@e@~{YgVSLbSAy&vb-_JWfBAG?_eb4tV
zGai*AE#DVO0NoGLB)ai~M2<$rA4Pnu+u&S(f(G+q&fsx0CLJEr;Iy{e__9%JH>fv&
zj)j89+=FVq0JEs%_zHlU(+i;SJ>j3jY(i{bl|l-%RjAe=L4>|ZWe|?SfO62VggDMB
z9U@tjJUE}}Jo&3s;y;Nz$<+=s@DQl+>;_T9$_;1!*el2hcwabVHR{UQ=Ek+ZwXs=B
z{Y=pA^oP^v)d89BFS*3rDg9L&;{z1Is_J+@L1XE7py`PQ%B6`C1YwcG^V>0$TiUa7
zH6PC0-jw-;DD5z=HNUA=>|gOPLNzVvfy%WU$H{3KMV!R&V%-@+Ii+|omne-{MU;L7
zAEb5g8>3J>ur<=aI`uS44V*OTUb@Y^f!CX_RyUJ(W}xPsS&(_FJj2HrNd$QYn;ZHe
z1Ts|oO+KCSxYDCRx2f;JOudF?9nF0-M6r*t3q3x8N(u+;dPw9LbZf*gYRnOmJdjAV
PzbkmYOVmV&*1!1&Ix?AS

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/loss_function.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/loss_function.cpython-311.pyc
deleted file mode 100644
index a1e26394365e683dbec6da95fbe223ebcee10ef4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13488
zcmdTqTTC2Tc2(UCG;}vKxM{FypfK1N42)mcGaefcHh$m*`~W|u<#lh-RY2kD$5d5g
zLz<Np%_{AYqxDLThFLKRQoN3>@hbk9mDtTjag<FopVg=&cPg@C?P{c~qDahoRy$hd
zBj?=es_w$ZkJU!X7RBvb_i<kL+<VVG=l-qFS3$w^%U|;RzwDx@U*U)Oxbm52ahjq&
zrZ|eDMJjCk(qRYrc7~ng*A;e=-;!8qxQxa&4$&Pe50{fXEmnj*Q05f9F>lyQ%3Pu^
zRvE6!*ZX7D;Tn=J5jVsF;XuB;HWrLJXew40uFIFyhwA}Sskkw=DZDAx5N^nqhr%H!
zFB2PMP2r|kbGSLigc(xj7F%MQ!<$LI9P+K<)_k9~@D}J(A#RPehucY+N8A?c2zQXY
zSL}>!4{s-VpV$@a4tJA$rPvdDEBqG8SBX1fJHtCk-Y@Qo?GEpb?FsLpDF?+<)4irB
zx$3(h!_VN~c(DFB#npUBaU1SBpa%YpC%l)VN2!j$ukmxFgVw#nLVTFLHX3C`UV?9z
z@&OlvU+3u~{qR$NoK4BHz{XEYi6}42XZcA9eiBlLLwBEMB~}!9Q7_|ok)7qa4yW#p
z32`AN%<=k$kwjb+;yf!INyKGEVuiS(`-j$)0FKfat4P8%$d$<nafX*<$W|P^mK@+^
zVKR<i<&z?RO^9<mwyNT1STT}{3p0^%Ru-_nI!~97h#zBRrT^>z6xP}chuEaZMtP{%
zcuG>H5|fEID-N?tbV`U%o=!<}N>G5Sn)8PZ8VkMknxoH`l>%uAiI3(5OMXl-KidYM
zAHxuZX^sL_ra_H8T-k>-sImJ)DqO;OxeE9y<;r0&e7biiA<M^7@u&g}uy4c6s9@m1
zQpPMMB_tV}5@aSSvQR0+k|H1D<BH6P*mxojLuQl&GtM(9ndg|RQ-a7dWB`CuhGm9%
zg&j`7nDyl0@kVa|D<?%kVPK>Zj4~zhJd<Q4Mcz-^AxS$sn6W9IX$Qd@o!S`|kU<d{
zcUEMsCZsEf20Jo|i3w6^BhJ8z(C{JL2=S<x;&_=kH8jewagK?x@mVGY^0hGU>R@0*
zQX(q}b1ce<QFtjv7-cz*Nf;#aj76E%bGJb=v=T_a!~~O^nw14mc_wP9CI~YQvYC+B
z7>_&<KnRzKrX&eO%vb=CY?hm0<1izzmjO-g7UB~LDFzacp>RP6q{qmqv7;aaR$=4>
zGr>xb2SLN!m}R6?9L6jmG3@Chq%BGM6_^g=DTS9UjL1|(nN1eNA@P&;f}}vc3qyre
zw#S5PJXgeIy9H8)0a^<b=H7ThE+DZQw=yvQlf0w|z%j`0^q^G*(_JwzGcd`!7?}rU
zM1{Z#!4Pp?@W?5tfsunDoZ&$tIN!T0U`Vqt!L-luQbKOW#xN$Lh(J-JcXToB@kBf+
zw4-JlXaGct4C_?^CUt7fFcq<GDypo2W)clefSy~ZWftZV6h~q_z~T0<;Rc0|oRemN
zn#?R@C_2SQiNYgiMd<8IwI3ZQqS=~@d1%0v1X`bnwKE9-BY}1l4ZcNURGf$;6XL8@
zfQlEfmFmufDC;f|60euw>KN5ah%k>u%ZgSiT&SGz|13-vsx+OZB35<U0bkZ$l6JzE
zxv)`b7kpt)@}x`Q%iPDQbP0Twm~|XAO5LYNI!g6&OM7*<skVAqUSD-jks|74c@5Od
zEw$<>(_JzzPDsrFSz<70!DKTgZJ4w|A|rRGJ@EYg(vkg_&dIQkT#~LNro<_hl`jn>
zqA9XaUOFx)CsN~=j){q@r&(p{(m3o~GVCY<Cnc_3l3}tZCRv4#kV!0G!lf%>uB$!C
zS=}9p5aJ?pwYWf=>vNA;Jc#7r)_k3Mx^Z*Hb+a;8&%lo_SJwnT-dw}hj7xLZua;8v
z%~$}LO|9521Aot;BNeqI3?Cl&Cu0=^*?vr=scCFN9tpOVIL$fcVT`7&5nHlG%WQ|g
zcj5mttAKM}A+4m4QluBt)>v|m2QIr!Q9QP{9PzR@##oZaxWk6A)Fg>3<;pnVC++0i
zoEvn|@u2)}InWIM##2lIw4<giU5i*e+@j+@dt=Hf@|3mND07>5^Hh}rT^`OuDD$pQ
z8Bj3$#uWJS6f`IsOso{xxI`M2T-5{rUEuXIi{D~N0KWb=##f!kw@Ilj#+RmX6du&v
z1wHu8(uFnHD&82|28%muoG5A<^_n~{*R}Y{8{-S)@ip4U(_6sD)dH8nyD+Ohvu0W`
zm+^%+##xug8B`ifJUD_cn?-T{jj_~QSQ=j&%dR)ZvN4aPR>3tl|8ScgG_1cO01m&|
z^0n5VP#y=Pw3_`uCu+<*z_YadIjq(k;TlIN{O@R*W35eb6b+D6l2{s+F^Ic)DypQw
zptKsE<>5PCFtWOh$Et_(3*S>{K6Xsn2;{-}!8ZXW57-X86y=kO?i`mS;Xgr<CQtm`
z&wu!v$8&v?-A6+I^~=4R4t134rSXUWEp?}o5T#B4pqInBAqM*moRNIdL@WuGUPO+9
zt*e)@VseU&>@+jGbhpUH#yKo9bGvjWD{+(mbN{QA;qlXefdG|y0J8KJCS90xW3mI2
zotVJco04`zqL)p;`3L|AU9ewF{{25Z{<r@~|NFs?l69c~dr`T=l_z~%VC4uJ-UT$e
z3v6<*Ipj%B5;8D09ZsXMJH}okyc24`GKnR1=ghdMJ9$VPJRUR46G?>}7bU&aV0EM;
zKz4Mp-|Ho?OM~znV$3``79Gpnrs<>m4&x>c$JDa|H_7YeV26PvG0Ahf56*&xE>blL
z0<}!{48Z{^F$AO^Ij?(1kDIL$l7#vt1u((Yk(e90E1JN)pX2!?$@y%y7szJ|Hr)q_
zUOGg^jEshit0)>J(pIdh07EvFjG#?1S7);x3KbWjp?n8+=j+sJ4b`&cj#sVUx8PcE
zJ=~J<fvw>6-|TzrX<qR(XFV;Nr)BBfil<ZcbUq0+X`#24c{MbU4Gn0afy}_o;Tyv_
zU-iw)k9{pGzLu=7Rr9qjrB-}hs;`T*?|L|}%;omJo7=TFxA#bHNAGefw{zd4t*f4r
z#*_3{6sBL36rrtpsrK!d(Y&o$Z|l>SgI?~<Lw#%aaxk}J4<K3}^o`-wN~*GE4XLv$
zz8$J>$CFU^^3mMxeYt%DxgEQgYgfyhjqd?<n0`%CgV)uH=RsK9?tD~|+xK2>&)dt~
zYKfz90QzJ4HA(aR-Ou-*S@CtNzHX4#;>dEX8ak8>9nwOFutR3}c?lFXKefCCxo%r^
z(u7(}zosxXI>T5#$FN0h@1vt?=wvo@QVX4250}-rXZf5OI+6_?(LzUFqj5kD^<_hS
zTBr{j8!C0+v8Qpx)0p)%Yo6w%w^uydRnPV(pnZ+^ln3+KmV;W$!OVc>ZBog*>ZH6~
z&_Y5_$B6B0f%Y2is?UA{zQ4Z!i}gm4#mdq7b>9J2YgyX0WLd4y!+M^xRmm<r?^dim
z0rm<~hF#JQ`wqdmu8=yZo-2919&=!e%$LU<T<LuI4Qk1<d@O<xi#uIz_odOunMKiS
zaZ;A&{-@{$ny+wB>54RMr(W_az5-sZ++Isl@hV$=#oBtMs?dAdvSEwu%C#76b&hG`
zu|*hm$adc6JvPZ&wp<!4WZWf<#|~lM1M;%0uz4E3EKcVgX{@a@dqylS(%7z0Zdn;=
zhpikJcJgp8Te)RXK<S%}mDd=nTeRd))AQc6W8SB<n^-{qaDyOEnx3|-XwJ1R_m!OQ
z|7^^Q=?a>3*{H2EOSwv0dA(Vlu1tIFV>}1)O8e54b1)y~pqYI%L7o<?MjI&EWJ0?_
z=Jh0Phd5uAu39RxkImL=Pp34sj&@Z}hs-{9YW~D@t17<^{7!k-<cFd%)CA4>KXh|0
zuEc&enfIst^VOuj`a}184M@7l?8nvQVf8A9%rY3a8k+<evj%!vGq6Z&ORS+>Gs@hC
zboGOP{X96o!G^y!kAFXuTJv<N#l%?r3w|btT_eaEYW147W<9JgHf~^Dc_Ae>E(@#B
zhG}#Uk>^iZPl9>b{v*h?)#T`nWNY;*$QEF=nXuO6x0vNP-@oT5XvGaGf(9&kifJi8
zCF`yQx47@i=jNM2gZ7rb{NcNV4QufpQGjig#v6)pzP|L+WzrU#ep;(^F}#8V?V4J=
zlgtO=9X3d4b(v#fQCxsjG_%*=j{<22SW3hTxYS|7EB>`xVba?+3h*RL9$V=j%pt6K
zt~G0306fouf(Fjlf_JKptNWfK9hfN6%=zGprD^M1m#!;rRnQydg2~6)J!rnZxJSC4
zt3Lou)3uP>NOD2QZ6dik$Tg5$J@_I*?2kdHmKWg|#M8j*jZsq!TBT$RJz%V$sL%*G
zFi9yfBXB%d<aEFgE7XE7+X9$(Q^1c^bdlN5u#&{ik_g2V3!#c_@rV^%h({)P7JVOb
zht&m+q|6w`WRaX1KB^=jc5@YC4?JV_WFSt3l*UuBaSTcnq8|{fut6$dc)pK`yAbx9
zeJQzXXk_6SuQ1@BPw{dA1co+b@WF5b#^7GWJvu4mE?@@YTx@I&=ff#c5g=Y?bO**_
zSTF;zMezJH7-NYiVi3G4!U)5a4-El266r$M1;&tVk{CETdgScj>9N66BRwQk%JCB{
z07tp3aVWjY|0EIrR0LvL5uj56v;**C!v@NwK)jKc!HL3>A;f43Z?HFr@p1^rkwD)?
z5>|~S_=yQ2DqzI8NXsO&$;NbNGRjK0Ap9Dwx5>Z!@1HFF?q47F>7~(`Yrt%@_^gI!
zB=nO!OGEN8RZc1JYd)`vMWokQ8S^yWN@!gNM&YE_MoBK3dLR6%qtsREn)7|?Dt+HM
zw?8jQh;gTQRN^=z#KEnGGEXLC2t&^B-7pRqw&A;&8G&VvOeI8KzA`&@?7mBP#FOBC
z5@0ANb$2vh0}dh~-Y-rbg?Ny3-=Wiobvh!WbWCTCOOQ_w%r)8EIN%xVIUpt=v@G}a
zVEsQshi4}s0dJ1WRo(KWe$!(4<ND5(`p$bhv-RCtefO>YTtoB1o^PJiZM;3J)pe~>
zbahK1$u%$wy$ikIMW}B1=9_Pxq5byf&8^hm1m1Q2jDFWSw_^<E=+KGLVs@DVyH>C<
z%EsYNz@!kL+i%T$D2pc)h+D=WI2Hxr;C#=+!U|J-7CfE4rk8*|BxnDBs)IBJ;*ri_
zg0aow0h7KB1+N;fUt!P7m_#6%gnxLR9@715Bk3<@|7~dfSM<k}QZ!czv*89kP4-)a
z33CAQpIP6dl!P`tI8V>R54jWri;`XnanjSWaNi+)2a1W8(ctMi@hJY@eZX*=_RVcx
zUlGkVaMg*D@vQpIb?PTIpKn~=^YeEfeURNbsO=oQP7z;@jjd8>N+$VD$Pl*R*L(_W
zz1ZPz6M@t01tP$ugFI_R0Cm<8eGc3Z9Q|O;ae<@fz@-73taIeoC^_&TI};MuQA&g+
z;bxA(Z*WiZn012Wbl1^=$omqGWU=6+DJXaynZbf%gmXb=pPpTO|F19q@bZrjKNx(-
zeLnSw&UPKvx(+|u^NV+~T|?^FxrNKw#`9X^dG-BpHWbdwR0<(3FRV_o(rsK3fQv?@
z#;&h>j1s&aCF>>RdILK9C*elGBtIezU|;{*WnFiZ66CLxEb4Mcm$Vt0O8uA+6>`FU
zCXL`{3nY3;QUVkbx?FU}2T2Ln5uF~>ONiwl#js%<6T}E}9JY#xPG8jNS-rvvc0_bX
zG^xAK<4!p)!W{z{tqr{lu7|*9Om`2%B1^7+m4A?8xd>i}(dpwlJq1nivWH$mwsHx*
zOh)(~{e?tAx)WAUL(PYf1bSL`2>p6lJ_Mqdfo$+DgI)?dI>-hBAtFo=Ar7H_MR(yI
z*|E{^!~Yq=#GOg^*(?RUk`rPPiRbcLIc#~tMNGi8PxeVcnI%qqX&52kf?-HvLZ?sb
z^aq4G-35l)IOv%eg<uS%KzJ&yJHfsJ8sl>jfxD&$jBVGrp=KH?c_e(~qJ-O}UbSY6
zm(kq)4w_~!ddP&AGSFnszjm%KK&jjUvj?<vbqB-<G*83A)fLZH)w4BM*N{2!G_d(`
zVB1PyTQ<<C1v>BXD}mja^4~%@q4MV5TP-)<x%til{ZU`0FIOA<v}Q55M1QhzapMoZ
zojH~{_Oy0m<`}q%%YEOk`lxE5d}(ji-Kn`dRd?r0oX4x~QXgz%R#Hj%0~zI3|Bb6R
zudY%~-x&SGU#kXBWc`Dhe^4dwmsoN(>mSwpqpE-O%Rs~Jlb_Bkv7gK?&i**~kpA3x
zzu`ecHqfgDdNW6V>!xb!Zl72<x3qgPoDFQ#0^2f2pZWv0-I@Lz{FKAb=63XPYu@Hu
zQ#0mno+@P8w;6S9Pd!yP?GEsL5L3x|I&=PN1O>?xf6Z;rLjU6NrT)c}S%16cZ_o7q
z5m<x~2n28M|8#uu%Dvq`aeVGwJ_D=Dj>FoH!`aTmkIsBi{ZHqzohP$R-_n}Cm229(
zII;A>C)4)^9voX~+NCz`{>n)QdLgO+@)&@@@Kt~R<VPoO4BZ^c41EcJPb{2SypRoS
z(E?lkFwwkVfYsLC6;H3~=|$Sx)%HQ_{i5ZI{_KVkZNo@rAXgL29Ld#$Rr7_fstq^4
zyHvJP)vi{xKM6K1$Ui!K=fu6S2Nxe)Uhdbr`?76^w6;TE^r(WU24mS^Obf<tIgM_0
zD^=Uns%<!~zQ_KS6@SZ8%hDNRBvgNUu0FKr)9Sb1Dj|TEjy@bwN6)Ll3)$cWEqLLU
z(~!pK;<+E3x_#=8CX1#0E1quE)BO}?oVV$*ck_yO^U}^GHtXG{dAF(FZ6Lo8qcwDE
z4Z9x>e0~ge+`W(5e$oEZK6THa)_|d%p<JL|3vAT_UH8sFtYzljMJ=%Rc>=d;oA+p&
z_b=~U9{c(E<+ruXB)+$fVsF>l-_hFhE!tFX+o~H><L2;VZ{v!$ae-Z`hVUH(@l<as
z)OZ6hAItlm1nX~4F9q&2YAt)R!Co!c`;gUwZ)c8Yj(-VN!jkKbPh)m#%sb018gn2U
zJg5Z^W{xB1%3IYR9sB-)j}F}EyV(b(YxzkUp$R{7+^M*?=fOd3dta70q%nsc(He93
zQ9l?R!9guJm^uEmx$E8qt+`iqhjJSNx6a_-LfNhG?SmP2uDbSiqgLIvbU~}`&Xnew
z+TfOyPjfeb;x#mXvUPE5rYg6!^G+;NwNR0Dx8`~dXR6ft&a8WTZflQO*wzU-ch=pK
zt7=l+O~lFpg8`RX3H{YZf+rxd3mpU7Vq^qvoxwe?IGnvB5xpXUm%&mZ=Dm>!Y;0n_
zrYsWS646LRLdS=(*W&to->{{O1sgr=5+>+mkuO1V-TGT~G?utmDNOo2C9SKJJ!v{n
z0@AdS_Z(A>lIB(FWhr6LK(|kKUu7jc;G<oUiX~?ayTAoU#VOr2)e8abYRD(Wgdz&#
zaJLO}U~wA1&ZMa5wel4aZg9tYk`fQQ9$o<lcoLd(u%Sl<0O636k_*4Bwj7Vw8py#b
z5tq=UgTS`|2X2+a)|iJ0M=pSET(r}@#b454>{M?yoXlTBkK{>^&@k1R^{RWW@KT(I
zdyxLM9rZG^%8`)u(rGYSgmI}1ph;j?QqoC;TS@rpv2G?11BKWt=wO!4VuHpKF{LCH
zbKiwT@3h?{>{)x0u!p~vjKCddywWbA(@x*^iVoJLcM1LCde<wOlWXyCBRwL4s!A9r
z)3?8(3pzFMLP!K|gpj)t`dhEtLo}|_8<#2ezoJ*dx^N!>g(ElaBT3`RJ-Kc1N<s<z
zh@m2ds~LLbgdl>W$5eBo_Y(RojcKqIa&SU2CU2kg3-|<Uo|3EJ>;UI!nufKD_Fu2U
zzZ_Mgns1KsTql1;nP!!;y*a8!wZC=<wJK$MbJT9t{^qC_)&AzFgR1?_QM=T2-W*ka
zo&4pfHuXiXMf_9hq`Ll_qc*DcH%Dz!?Qbz_aLIx`OsiCX@tdRiRQsEwPN?=bM-8g>
zH%FaO?Qf3yj%t5%)MfQWZ;q<F?$)R}SlX!;jmUA;d%;D+`uO7XD^mXTI<-V${ud*9
Bp;Z6?

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-310.pyc
deleted file mode 100644
index 7ebbfad9c34b1f9e6c819ea7cf7852af65591444..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 42392
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
J{$pjC|2Gc|fYty2

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-311.pyc
deleted file mode 100644
index ff5e3935b0dd191141f8dfb60bedbeb9a3441d01..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 87304
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
VVvQP|=-}`ZcKvS-xy!oPe*=NpfUp1n

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-39.pyc
deleted file mode 100644
index bd6eb8fcd459fd95ff1b85514f996344b6e4880c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 42705
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
X0Qd@E+a(_g`Az8O{>jTCN=^RXpccWy

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-310.pyc
deleted file mode 100644
index 543416416ef052c2402c2e9a97976dc4aab22866..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8915
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
StX4>a*409eT+%Xuv;M!r+lnOs

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-311.pyc
deleted file mode 100644
index e2b6e8e274e98df5f28013ef45589d246125aff5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14832
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-39.pyc
deleted file mode 100644
index 9f1ec9479869fec42f363e7f46e07dba2f1c6be5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8930
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
H7PS8b3n7jV

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-310.pyc
deleted file mode 100644
index 97ed55acc1e800a138ddf489ccea709a8b28f634..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 11629
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
avA&6Yk^<6Wno`U`AM%$xPx3uy*Z&u-bVhUl

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-311.pyc
deleted file mode 100644
index 0784caa91ce5a8acf65a6e83b8f58a47f8e12bcb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19787
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
M>^HBe!Eo^Z0iAV!9smFU

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-39.pyc
deleted file mode 100644
index 0843cdf8bd820d9cccfdcde3a1193f3f416ccc10..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 11717
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
Zi*F}O^<C;cm`0%G$mvY}IHnd?{}%}UP3r&v

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-310.pyc
deleted file mode 100644
index 30079dce4bc04802324f720381b872c1a2f64018..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9509
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
X4&uxQi9kPt=A@8#$;cEg3d(;2)UokG

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-311.pyc
deleted file mode 100644
index 489534282f927e599530fd2c176b5240e2214e1d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19040
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
RV>v$k20#DP38fgR{|_UFGxGod

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-39.pyc
deleted file mode 100644
index 7a3bbc05003eab405d52a934e83053ae50080d25..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9581
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/sequential_design.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/sequential_design.cpython-311.pyc
deleted file mode 100644
index af35ff42f1ea1e8ee19d476f7b51c19199513cde..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 87535
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
E|3L9E)c^nh

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-310.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-310.pyc
deleted file mode 100644
index b856dfef2c2658af8ecc6b1ab85b99c499a39705..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35103
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
RfEonip2Lr$Q;xp){{<f=hrs{<

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-311.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-311.pyc
deleted file mode 100644
index 8d6f35b0e889d838247709ac2440fed2799abfce..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 61708
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

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-39.pyc b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-39.pyc
deleted file mode 100644
index f44a774b4165e6ff769d8db2f2c13c4dd0cbe8b3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35188
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
X?l%ZtK(YD%eZCe!@XRZi#_|6P0+p{e

diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/adaptPlot.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/adaptPlot.py
deleted file mode 100644
index 102f0373c..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/adaptPlot.py	
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Created on Thu Aug 13 13:46:24 2020
-
-@author: farid
-"""
-import os
-from sklearn.metrics import mean_squared_error, r2_score
-from itertools import cycle
-from matplotlib.backends.backend_pdf import PdfPages
-import matplotlib.pyplot as plt
-
-
-def adaptPlot(PCEModel, Y_Val, Y_PC_Val, Y_PC_Val_std, x_values=[],
-              plotED=False, SaveFig=True):
-
-    NrofSamples = PCEModel.ExpDesign.n_new_samples
-    initNSamples = PCEModel.ExpDesign.n_init_samples
-    itrNr = 1 + (PCEModel.ExpDesign.X.shape[0] - initNSamples)//NrofSamples
-
-    oldEDY = PCEModel.ExpDesign.Y
-
-    if SaveFig:
-        newpath = 'adaptivePlots'
-        os.makedirs(newpath, exist_ok=True)
-
-        # create a PdfPages object
-        pdf = PdfPages(f'./{newpath}/Model_vs_PCEModel_itr_{itrNr}.pdf')
-
-    # List of markers and colors
-    color = cycle((['b', 'g', 'r', 'y', 'k']))
-    marker = cycle(('x', 'd', '+', 'o', '*'))
-
-    OutNames = list(Y_Val.keys())
-    x_axis = 'Time [s]'
-
-    if len(OutNames) == 1:
-        OutNames.insert(0, x_axis)
-    try:
-        x_values = Y_Val['x_values']
-    except KeyError:
-        x_values = x_values
-
-    fig = plt.figure(figsize=(24, 16))
-
-    # Plot the model vs PCE model
-    for keyIdx, key in enumerate(PCEModel.ModelObj.Output.names):
-        Y_PC_Val_ = Y_PC_Val[key]
-        Y_PC_Val_std_ = Y_PC_Val_std[key]
-        Y_Val_ = Y_Val[key]
-        if Y_Val_.ndim == 1:
-            Y_Val_ = Y_Val_.reshape(1, -1)
-        old_EDY = oldEDY[key]
-        if isinstance(x_values, dict):
-            x = x_values[key]
-        else:
-            x = x_values
-
-        for idx, y in enumerate(Y_Val_):
-            Color = next(color)
-            Marker = next(marker)
-
-            plt.plot(
-                x, y, color=Color, marker=Marker,
-                lw=2.0, label='$Y_{%s}^{M}$'%(idx+itrNr)
-                )
-
-            plt.plot(
-                x, Y_PC_Val_[idx], color=Color, marker=Marker,
-                lw=2.0, linestyle='--', label='$Y_{%s}^{PCE}$'%(idx+itrNr)
-                )
-            plt.fill_between(
-                x, Y_PC_Val_[idx]-1.96*Y_PC_Val_std_[idx],
-                Y_PC_Val_[idx]+1.96*Y_PC_Val_std_[idx], color=Color,
-                alpha=0.15
-                )
-
-            if plotED:
-                for output in old_EDY:
-                    plt.plot(x, output, color='grey', alpha=0.1)
-
-        # Calculate the RMSE
-        RMSE = mean_squared_error(Y_PC_Val_, Y_Val_, squared=False)
-        R2 = r2_score(Y_PC_Val_.reshape(-1, 1), Y_Val_.reshape(-1, 1))
-
-        plt.ylabel(key)
-        plt.xlabel(x_axis)
-        plt.title(key)
-
-        ax = fig.axes[0]
-        ax.legend(loc='best', frameon=True)
-        fig.canvas.draw()
-        ax.text(0.65, 0.85,
-                f'RMSE = {round(RMSE, 3)}\n$R^2$ = {round(R2, 3)}',
-                transform=ax.transAxes, color='black',
-                bbox=dict(facecolor='none',
-                          edgecolor='black',
-                          boxstyle='round,pad=1')
-                )
-        plt.grid()
-
-        if SaveFig:
-            # save the current figure
-            pdf.savefig(fig, bbox_inches='tight')
-
-            # Destroy the current plot
-            plt.clf()
-    pdf.close()
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/apoly_construction.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/apoly_construction.py
deleted file mode 100644
index 40830fe8a..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/apoly_construction.py	
+++ /dev/null
@@ -1,124 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-import numpy as np
-
-
-def apoly_construction(Data, degree):
-    """
-    Construction of Data-driven Orthonormal Polynomial Basis
-    Author: Dr.-Ing. habil. Sergey Oladyshkin
-    Department of Stochastic Simulation and Safety Research for Hydrosystems
-    Institute for Modelling Hydraulic and Environmental Systems
-    Universitaet Stuttgart, Pfaffenwaldring 5a, 70569 Stuttgart
-    E-mail: Sergey.Oladyshkin@iws.uni-stuttgart.de
-    http://www.iws-ls3.uni-stuttgart.de
-    The current script is based on definition of arbitrary polynomial chaos
-    expansion (aPC), which is presented in the following manuscript:
-    Oladyshkin, S. and W. Nowak. Data-driven uncertainty quantification using
-    the arbitrary polynomial chaos expansion. Reliability Engineering & System
-    Safety, Elsevier, V. 106, P.  179-190, 2012.
-    DOI: 10.1016/j.ress.2012.05.002.
-
-    Parameters
-    ----------
-    Data : array
-        Raw data.
-    degree : int
-        Maximum polynomial degree.
-
-    Returns
-    -------
-    Polynomial : array
-        The coefficients of the univariate orthonormal polynomials.
-
-    """
-    if Data.ndim !=1:
-        raise AttributeError('Data should be a 1D array')
-
-    # Initialization
-    dd = degree + 1
-    nsamples = len(Data)
-
-    # Forward linear transformation (Avoiding numerical issues)
-    MeanOfData = np.mean(Data)
-    Data = Data/MeanOfData
-
-    # Compute raw moments of input data
-    raw_moments = [np.sum(np.power(Data, p))/nsamples for p in range(2*dd+2)]
-
-    # Main Loop for Polynomial with degree up to dd
-    PolyCoeff_NonNorm = np.empty((0, 1))
-    Polynomial = np.zeros((dd+1, dd+1))
-
-    for degree in range(dd+1):
-        Mm = np.zeros((degree+1, degree+1))
-        Vc = np.zeros((degree+1))
-
-        # Define Moments Matrix Mm
-        for i in range(degree+1):
-            for j in range(degree+1):
-                if (i < degree):
-                    Mm[i, j] = raw_moments[i+j]
-
-                elif (i == degree) and (j == degree):
-                    Mm[i, j] = 1
-
-            # Numerical Optimization for Matrix Solver
-            Mm[i] = Mm[i] / max(abs(Mm[i]))
-
-        # Defenition of Right Hand side ortogonality conditions: Vc
-        for i in range(degree+1):
-            Vc[i] = 1 if i == degree else 0
-
-        # Solution: Coefficients of Non-Normal Orthogonal Polynomial: Vp Eq.(4)
-        try:
-            Vp = np.linalg.solve(Mm, Vc)
-        except:
-            inv_Mm = np.linalg.pinv(Mm)
-            Vp = np.dot(inv_Mm, Vc.T)
-
-        if degree == 0:
-            PolyCoeff_NonNorm = np.append(PolyCoeff_NonNorm, Vp)
-
-        if degree != 0:
-            if degree == 1:
-                zero = [0]
-            else:
-                zero = np.zeros((degree, 1))
-            PolyCoeff_NonNorm = np.hstack((PolyCoeff_NonNorm, zero))
-
-            PolyCoeff_NonNorm = np.vstack((PolyCoeff_NonNorm, Vp))
-
-        if 100*abs(sum(abs(np.dot(Mm, Vp)) - abs(Vc))) > 0.5:
-            print('\n---> Attention: Computational Error too high !')
-            print('\n---> Problem: Convergence of Linear Solver')
-
-        # Original Numerical Normalization of Coefficients with Norm and
-        # orthonormal Basis computation Matrix Storrage
-        # Note: Polynomial(i,j) correspont to coefficient number "j-1"
-        # of polynomial degree "i-1"
-        P_norm = 0
-        for i in range(nsamples):
-            Poly = 0
-            for k in range(degree+1):
-                if degree == 0:
-                    Poly += PolyCoeff_NonNorm[k] * (Data[i]**k)
-                else:
-                    Poly += PolyCoeff_NonNorm[degree, k] * (Data[i]**k)
-
-            P_norm += Poly**2 / nsamples
-
-        P_norm = np.sqrt(P_norm)
-
-        for k in range(degree+1):
-            if degree == 0:
-                Polynomial[degree, k] = PolyCoeff_NonNorm[k]/P_norm
-            else:
-                Polynomial[degree, k] = PolyCoeff_NonNorm[degree, k]/P_norm
-
-    # Backward linear transformation to the real data space
-    Data *= MeanOfData
-    for k in range(len(Polynomial)):
-        Polynomial[:, k] = Polynomial[:, k] / (MeanOfData**(k))
-
-    return Polynomial
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/bayes_linear.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/bayes_linear.py
deleted file mode 100644
index 3bd827ac0..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/bayes_linear.py	
+++ /dev/null
@@ -1,523 +0,0 @@
-import numpy as np
-from sklearn.base import RegressorMixin
-from sklearn.linear_model._base import LinearModel
-from sklearn.utils import check_X_y, check_array, as_float_array
-from sklearn.utils.validation import check_is_fitted
-from scipy.linalg import svd
-import warnings
-from sklearn.preprocessing import normalize as f_normalize
-
-
-
-class BayesianLinearRegression(RegressorMixin,LinearModel):
-    '''
-    Superclass for Empirical Bayes and Variational Bayes implementations of 
-    Bayesian Linear Regression Model
-    '''
-    def __init__(self, n_iter, tol, fit_intercept,copy_X, verbose):
-        self.n_iter        = n_iter
-        self.fit_intercept = fit_intercept
-        self.copy_X        = copy_X
-        self.verbose       = verbose
-        self.tol           = tol
-        
-        
-    def _check_convergence(self, mu, mu_old):
-        '''
-        Checks convergence of algorithm using changes in mean of posterior
-        distribution of weights
-        '''
-        return np.sum(abs(mu-mu_old)>self.tol) == 0
-        
-        
-    def _center_data(self,X,y):
-        ''' Centers data'''
-        X     = as_float_array(X,copy = self.copy_X)
-        # normalisation should be done in preprocessing!
-        X_std = np.ones(X.shape[1], dtype = X.dtype)
-        if self.fit_intercept:
-            X_mean = np.average(X,axis = 0)
-            y_mean = np.average(y,axis = 0)
-            X     -= X_mean
-            y      = y - y_mean
-        else:
-            X_mean = np.zeros(X.shape[1],dtype = X.dtype)
-            y_mean = 0. if y.ndim == 1 else np.zeros(y.shape[1], dtype=X.dtype)
-        return X,y, X_mean, y_mean, X_std
-        
-        
-    def predict_dist(self,X):
-        '''
-        Calculates  mean and variance of predictive distribution for each data 
-        point of test set.(Note predictive distribution for each data point is 
-        Gaussian, therefore it is uniquely determined by mean and variance)                    
-                    
-        Parameters
-        ----------
-        x: array-like of size (n_test_samples, n_features)
-            Set of features for which corresponding responses should be predicted
-
-        Returns
-        -------
-        :list of two numpy arrays [mu_pred, var_pred]
-        
-            mu_pred : numpy array of size (n_test_samples,)
-                      Mean of predictive distribution
-                      
-            var_pred: numpy array of size (n_test_samples,)
-                      Variance of predictive distribution        
-        '''
-        # Note check_array and check_is_fitted are done within self._decision_function(X)
-        mu_pred     = self._decision_function(X)
-        data_noise  = 1./self.beta_
-        model_noise = np.sum(np.dot(X,self.eigvecs_)**2 * self.eigvals_,1)
-        var_pred    =  data_noise + model_noise
-        return [mu_pred,var_pred]
-    
-        
-        
-
-class EBLinearRegression(BayesianLinearRegression):
-    '''
-    Bayesian Regression with type II maximum likelihood (Empirical Bayes)
-    
-    Parameters:
-    -----------  
-    n_iter: int, optional (DEFAULT = 300)
-       Maximum number of iterations
-         
-    tol: float, optional (DEFAULT = 1e-3)
-       Threshold for convergence
-       
-    optimizer: str, optional (DEFAULT = 'fp')
-       Method for optimization , either Expectation Maximization or 
-       Fixed Point Gull-MacKay {'em','fp'}. Fixed point iterations are
-       faster, but can be numerically unstable (especially in case of near perfect fit).
-       
-    fit_intercept: bool, optional (DEFAULT = True)
-       If True includes bias term in model
-       
-    perfect_fit_tol: float (DEAFAULT = 1e-5)
-       Prevents overflow of precision parameters (this is smallest value RSS can have).
-       ( !!! Note if using EM instead of fixed-point, try smaller values
-       of perfect_fit_tol, for better estimates of variance of predictive distribution )
-
-    alpha: float (DEFAULT = 1)
-       Initial value of precision paramter for coefficients ( by default we define 
-       very broad distribution )
-       
-    copy_X : boolean, optional (DEFAULT = True)
-        If True, X will be copied, otherwise will be 
-        
-    verbose: bool, optional (Default = False)
-       If True at each iteration progress report is printed out
-    
-    Attributes
-    ----------
-    coef_  : array, shape = (n_features)
-        Coefficients of the regression model (mean of posterior distribution)
-        
-    intercept_: float
-        Value of bias term (if fit_intercept is False, then intercept_ = 0)
-        
-    alpha_ : float
-        Estimated precision of coefficients
-       
-    beta_  : float 
-        Estimated precision of noise
-        
-    eigvals_ : array, shape = (n_features, )
-        Eigenvalues of covariance matrix (from posterior distribution of weights)
-        
-    eigvecs_ : array, shape = (n_features, n_featues)
-        Eigenvectors of covariance matrix (from posterior distribution of weights)
-
-    '''
-    
-    def __init__(self,n_iter = 300, tol = 1e-3, optimizer = 'fp', fit_intercept = True,
-                 normalize=True, perfect_fit_tol = 1e-6, alpha = 1, copy_X = True, verbose = False):
-        super(EBLinearRegression,self).__init__(n_iter, tol, fit_intercept, copy_X, verbose)
-        if optimizer not in ['em','fp']:
-            raise ValueError('Optimizer can be either "em" or "fp" ')
-        self.optimizer     =  optimizer 
-        self.alpha         =  alpha 
-        self.perfect_fit   =  False
-        self.normalize     = True
-        self.scores_       =  [np.NINF]
-        self.perfect_fit_tol = perfect_fit_tol
-    
-    def _check_convergence(self, mu, mu_old):
-        '''
-        Checks convergence of algorithm using changes in mean of posterior
-        distribution of weights
-        '''
-        return np.sum(abs(mu-mu_old)>self.tol) == 0
-        
-        
-    def _center_data(self,X,y):
-        ''' Centers data'''
-        X     = as_float_array(X,copy = self.copy_X)
-        # normalisation should be done in preprocessing!
-        X_std = np.ones(X.shape[1], dtype = X.dtype)
-        if self.fit_intercept:
-            X_mean = np.average(X, axis=0)
-            X -= X_mean
-            if self.normalize:
-                X, X_std = f_normalize(X, axis=0, copy=False,
-                                         return_norm=True)
-            else:
-                X_std = np.ones(X.shape[1], dtype=X.dtype)
-            y_mean = np.average(y, axis=0)
-            y = y - y_mean
-        else:
-            X_mean = np.zeros(X.shape[1],dtype = X.dtype)
-            y_mean = 0. if y.ndim == 1 else np.zeros(y.shape[1], dtype=X.dtype)
-        return X,y, X_mean, y_mean, X_std
-            
-    def fit(self, X, y):
-        '''
-        Fits Bayesian Linear Regression using Empirical Bayes
-        
-        Parameters
-        ----------
-        X: array-like of size [n_samples,n_features]
-           Matrix of explanatory variables (should not include bias term)
-       
-        y: array-like of size [n_features]
-           Vector of dependent variables.
-           
-        Returns
-        -------
-        object: self
-          self
-    
-        '''
-        # preprocess data
-        X, y = check_X_y(X, y, dtype=np.float64, y_numeric=True)
-        n_samples, n_features = X.shape
-        X, y, X_mean, y_mean, X_std = self._center_data(X, y)
-        self._x_mean_ = X_mean
-        self._y_mean  = y_mean
-        self._x_std   = X_std
-        
-        #  precision of noise & and coefficients
-        alpha   =  self.alpha
-        var_y  = np.var(y)
-        # check that variance is non zero !!!
-        if var_y == 0 :
-            beta = 1e-2
-        else:
-            beta = 1. / np.var(y)
-
-        # to speed all further computations save svd decomposition and reuse it later
-        u,d,vt   = svd(X, full_matrices = False)
-        Uy      = np.dot(u.T,y)
-        dsq     = d**2
-        mu      = 0
-    
-        for i in range(self.n_iter):
-            
-            # find mean for posterior of w ( for EM this is E-step)
-            mu_old  =  mu
-            if n_samples > n_features:
-                 mu =  vt.T *  d/(dsq+alpha/beta) 
-            else:
-                 # clever use of SVD here , faster for large n_features
-                 mu =  u * 1./(dsq + alpha/beta)
-                 mu =  np.dot(X.T,mu)
-            mu =  np.dot(mu,Uy)
-
-            # precompute errors, since both methods use it in estimation
-            error   = y - np.dot(X,mu)
-            sqdErr  = np.sum(error**2)
-            
-            if sqdErr / n_samples < self.perfect_fit_tol:
-                self.perfect_fit = True
-                warnings.warn( ('Almost perfect fit!!! Estimated values of variance '
-                                'for predictive distribution are computed using only RSS'))
-                break
-            
-            if self.optimizer == "fp":           
-                gamma      =  np.sum(beta*dsq/(beta*dsq + alpha))
-                # use updated mu and gamma parameters to update alpha and beta
-                # !!! made computation numerically stable for perfect fit case
-                alpha      =   gamma  / (np.sum(mu**2) + np.finfo(np.float32).eps )
-                beta       =  ( n_samples - gamma ) / (sqdErr + np.finfo(np.float32).eps )
-            else:             
-                # M-step, update parameters alpha and beta to maximize ML TYPE II
-                eigvals    = 1. / (beta * dsq + alpha)
-                alpha      = n_features / ( np.sum(mu**2) + np.sum(1/eigvals) )
-                beta       = n_samples / ( sqdErr + np.sum(dsq/eigvals) )
-
-            # if converged or exceeded maximum number of iterations => terminate
-            converged = self._check_convergence(mu_old,mu)
-            if self.verbose:
-                print( "Iteration {0} completed".format(i) )
-                if converged is True:
-                    print("Algorithm converged after {0} iterations".format(i))
-            if converged or i==self.n_iter -1:
-                break
-        eigvals       = 1./(beta * dsq + alpha)
-        self.coef_    = beta*np.dot(vt.T*d*eigvals ,Uy)
-        self._set_intercept(X_mean,y_mean,X_std)
-        self.beta_    = beta
-        self.alpha_   = alpha
-        self.eigvals_ = eigvals
-        self.eigvecs_ = vt.T
-        
-        # set intercept_
-        if self.fit_intercept:
-            self.coef_ = self.coef_ / X_std
-            self.intercept_ = y_mean - np.dot(X_mean, self.coef_.T)
-        else:
-            self.intercept_ = 0.
-
-        return self
-    
-    def predict(self,X, return_std=False):
-        '''
-        Computes predictive distribution for test set.
-        Predictive distribution for each data point is one dimensional
-        Gaussian and therefore is characterised by mean and variance.
-        
-        Parameters
-        -----------
-        X: {array-like, sparse} (n_samples_test, n_features)
-           Test data, matrix of explanatory variables
-           
-        Returns
-        -------
-        : list of length two [y_hat, var_hat]
-        
-             y_hat: numpy array of size (n_samples_test,)
-                    Estimated values of targets on test set (i.e. mean of predictive
-                    distribution)
-           
-             var_hat: numpy array of size (n_samples_test,)
-                    Variance of predictive distribution
-        '''
-        y_hat     = np.dot(X,self.coef_) + self.intercept_
-        
-        if return_std:
-            if self.normalize:
-                X   = (X - self._x_mean_) / self._x_std
-            data_noise  = 1./self.beta_
-            model_noise = np.sum(np.dot(X,self.eigvecs_)**2 * self.eigvals_,1)
-            var_pred    =  data_noise + model_noise
-            std_hat = np.sqrt(var_pred)
-            return y_hat, std_hat
-        else:
-            return y_hat
-            
-            
-# ==============================  VBLR  =========================================
-
-def gamma_mean(a,b):
-    '''
-    Computes mean of gamma distribution
-    
-    Parameters
-    ----------
-    a: float
-      Shape parameter of Gamma distribution
-    
-    b: float
-      Rate parameter of Gamma distribution
-      
-    Returns
-    -------
-    : float
-      Mean of Gamma distribution
-    '''
-    return float(a) / b 
-    
-
-
-class VBLinearRegression(BayesianLinearRegression):
-    '''
-    Implements Bayesian Linear Regression using mean-field approximation.
-    Assumes gamma prior on precision parameters of coefficients and noise.
-
-    Parameters:
-    -----------
-    n_iter: int, optional (DEFAULT = 100)
-       Maximum number of iterations for KL minimization
-
-    tol: float, optional (DEFAULT = 1e-3)
-       Convergence threshold
-       
-    fit_intercept: bool, optional (DEFAULT = True)
-       If True will use bias term in model fitting
-
-    a: float, optional (Default = 1e-4)
-       Shape parameter of Gamma prior for precision of coefficients
-       
-    b: float, optional (Default = 1e-4)
-       Rate parameter of Gamma prior for precision coefficients
-       
-    c: float, optional (Default = 1e-4)
-       Shape parameter of  Gamma prior for precision of noise
-       
-    d: float, optional (Default = 1e-4)
-       Rate parameter of  Gamma prior for precision of noise
-       
-    verbose: bool, optional (Default = False)
-       If True at each iteration progress report is printed out
-       
-    Attributes
-    ----------
-    coef_  : array, shape = (n_features)
-        Coefficients of the regression model (mean of posterior distribution)
-        
-    intercept_: float
-        Value of bias term (if fit_intercept is False, then intercept_ = 0)
-        
-    alpha_ : float
-        Mean of precision of coefficients
-       
-    beta_  : float 
-        Mean of precision of noise
-
-    eigvals_ : array, shape = (n_features, )
-        Eigenvalues of covariance matrix (from posterior distribution of weights)
-        
-    eigvecs_ : array, shape = (n_features, n_featues)
-        Eigenvectors of covariance matrix (from posterior distribution of weights)
-
-    '''
-    
-    def __init__(self, n_iter = 100, tol =1e-4, fit_intercept = True, 
-                 a = 1e-4, b = 1e-4, c = 1e-4, d = 1e-4, copy_X = True,
-                 verbose = False):
-        super(VBLinearRegression,self).__init__(n_iter, tol, fit_intercept, copy_X,
-                                                verbose)
-        self.a,self.b   =  a, b
-        self.c,self.d   =  c, d
-
-        
-    def fit(self,X,y):
-        '''
-        Fits Variational Bayesian Linear Regression Model
-        
-        Parameters
-        ----------
-        X: array-like of size [n_samples,n_features]
-           Matrix of explanatory variables (should not include bias term)
-       
-        Y: array-like of size [n_features]
-           Vector of dependent variables.
-           
-        Returns
-        -------
-        object: self
-          self
-        '''
-        # preprocess data
-        X, y = check_X_y(X, y, dtype=np.float64, y_numeric=True)
-        n_samples, n_features = X.shape
-        X, y, X_mean, y_mean, X_std = self._center_data(X, y)
-        self._x_mean_ = X_mean
-        self._y_mean  = y_mean
-        self._x_std   = X_std
-        
-        # SVD decomposition, done once , reused at each iteration
-        u,D,vt = svd(X, full_matrices = False)
-        dsq    = D**2
-        UY     = np.dot(u.T,y)
-        
-        # some parameters of Gamma distribution have closed form solution
-        a      = self.a + 0.5 * n_features
-        c      = self.c + 0.5 * n_samples
-        b,d    = self.b,  self.d
-        
-        # initial mean of posterior for coefficients
-        mu     = 0
-                
-        for i in range(self.n_iter):
-            
-            # update parameters of distribution Q(weights)
-            e_beta       = gamma_mean(c,d)
-            e_alpha      = gamma_mean(a,b)
-            mu_old       = np.copy(mu)
-            mu,eigvals   = self._posterior_weights(e_beta,e_alpha,UY,dsq,u,vt,D,X)
-            
-            # update parameters of distribution Q(precision of weights) 
-            b            = self.b + 0.5*( np.sum(mu**2) + np.sum(eigvals))
-            
-            # update parameters of distribution Q(precision of likelihood)
-            sqderr       = np.sum((y - np.dot(X,mu))**2)
-            xsx          = np.sum(dsq*eigvals)
-            d            = self.d + 0.5*(sqderr + xsx)
- 
-            # check convergence 
-            converged = self._check_convergence(mu,mu_old)
-            if self.verbose is True:
-                print("Iteration {0} is completed".format(i))
-                if converged is True:
-                    print("Algorithm converged after {0} iterations".format(i))
-               
-            # terminate if convergence or maximum number of iterations are achieved
-            if converged or i==(self.n_iter-1):
-                break
-            
-        # save necessary parameters    
-        self.beta_   = gamma_mean(c,d)
-        self.alpha_  = gamma_mean(a,b)
-        self.coef_, self.eigvals_ = self._posterior_weights(self.beta_, self.alpha_, UY,
-                                                            dsq, u, vt, D, X)
-        self._set_intercept(X_mean,y_mean,X_std)
-        self.eigvecs_ = vt.T
-        return self
-        
-
-    def _posterior_weights(self, e_beta, e_alpha, UY, dsq, u, vt, d, X):
-        '''
-        Calculates parameters of approximate posterior distribution 
-        of weights
-        '''
-        # eigenvalues of covariance matrix
-        sigma = 1./ (e_beta*dsq + e_alpha)
-        
-        # mean of approximate posterior distribution
-        n_samples, n_features = X.shape
-        if n_samples > n_features:
-             mu =  vt.T *  d/(dsq + e_alpha/e_beta)# + np.finfo(np.float64).eps) 
-        else:
-             mu =  u * 1./(dsq + e_alpha/e_beta)# + np.finfo(np.float64).eps)
-             mu =  np.dot(X.T,mu)
-        mu =  np.dot(mu,UY)
-        return mu,sigma
-        
-    def predict(self,X, return_std=False):
-        '''
-        Computes predictive distribution for test set.
-        Predictive distribution for each data point is one dimensional
-        Gaussian and therefore is characterised by mean and variance.
-        
-        Parameters
-        -----------
-        X: {array-like, sparse} (n_samples_test, n_features)
-           Test data, matrix of explanatory variables
-           
-        Returns
-        -------
-        : list of length two [y_hat, var_hat]
-        
-             y_hat: numpy array of size (n_samples_test,)
-                    Estimated values of targets on test set (i.e. mean of predictive
-                    distribution)
-           
-             var_hat: numpy array of size (n_samples_test,)
-                    Variance of predictive distribution
-        '''
-        x         = (X - self._x_mean_) / self._x_std
-        y_hat     = np.dot(x,self.coef_) + self._y_mean
-        
-        if return_std:
-            data_noise  = 1./self.beta_
-            model_noise = np.sum(np.dot(X,self.eigvecs_)**2 * self.eigvals_,1)
-            var_pred    =  data_noise + model_noise
-            std_hat = np.sqrt(var_pred)
-            return y_hat, std_hat
-        else:
-            return y_hat
\ No newline at end of file
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/engine.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/engine.py
deleted file mode 100644
index 7f5c1bf77..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/engine.py	
+++ /dev/null
@@ -1,2195 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Created on Sat Dec 16 10:16:50 2023
-Engine to train the surrogate with
-
-@author: Rebecca Kohlhaas
-"""
-import copy
-from copy import deepcopy, copy
-import h5py
-import joblib
-import numpy as np
-import os
-
-from scipy import stats, signal, linalg, sparse
-from scipy.spatial import distance
-from tqdm import tqdm
-import scipy.optimize as opt
-from sklearn.metrics import mean_squared_error
-import multiprocessing
-import matplotlib.pyplot as plt
-import sys
-import seaborn as sns
-from joblib import Parallel, delayed
-from .exploration import Exploration
-import pathlib
-
-#from .inputs import Input
-#from .exp_designs import ExpDesigns
-#from .surrogate_models import MetaModel
-#from bayesvalidrox.post_processing.post_processing import PostProcessing
-
-def hellinger_distance(P, Q):
-    """
-    Hellinger distance between two continuous distributions.
-
-    The maximum distance 1 is achieved when P assigns probability zero to
-    every set to which Q assigns a positive probability, and vice versa.
-    0 (identical) and 1 (maximally different)
-
-    Parameters
-    ----------
-    P : array
-        Reference likelihood.
-    Q : array
-        Estimated likelihood.
-
-    Returns
-    -------
-    float
-        Hellinger distance of two distributions.
-
-    """
-    P = np.array(P)
-    Q= np.array(Q)
-    
-    mu1 = P.mean()
-    Sigma1 = np.std(P)
-
-    mu2 = Q.mean()
-    Sigma2 = np.std(Q)
-
-    term1 = np.sqrt(2*Sigma1*Sigma2 / (Sigma1**2 + Sigma2**2))
-
-    term2 = np.exp(-.25 * (mu1 - mu2)**2 / (Sigma1**2 + Sigma2**2))
-
-    H_squared = 1 - term1 * term2
-
-    return np.sqrt(H_squared)
-
-
-def logpdf(x, mean, cov):
-    """
-    Computes the likelihood based on a multivariate normal distribution.
-
-    Parameters
-    ----------
-    x : TYPE
-        DESCRIPTION.
-    mean : array_like
-        Observation data.
-    cov : 2d array
-        Covariance matrix of the distribution.
-
-    Returns
-    -------
-    log_lik : float
-        Log likelihood.
-
-    """
-    n = len(mean)
-    L = linalg.cholesky(cov, lower=True)
-    beta = np.sum(np.log(np.diag(L)))
-    dev = x - mean
-    alpha = dev.dot(linalg.cho_solve((L, True), dev))
-    log_lik = -0.5 * alpha - beta - n / 2. * np.log(2 * np.pi)
-
-    return log_lik
-
-def subdomain(Bounds, n_new_samples):
-    """
-    Divides a domain defined by Bounds into sub domains.
-
-    Parameters
-    ----------
-    Bounds : list of tuples
-        List of lower and upper bounds.
-    n_new_samples : int
-        Number of samples to divide the domain for.
-    n_params : int
-        The number of params to build the subdomains for
-
-    Returns
-    -------
-    Subdomains : List of tuples of tuples
-        Each tuple of tuples divides one set of bounds into n_new_samples parts.
-
-    """
-    n_params = len(Bounds)
-    n_subdomains = n_new_samples + 1
-    LinSpace = np.zeros((n_params, n_subdomains))
-
-    for i in range(n_params):
-        LinSpace[i] = np.linspace(start=Bounds[i][0], stop=Bounds[i][1],
-                                  num=n_subdomains)
-    Subdomains = []
-    for k in range(n_subdomains-1):
-        mylist = []
-        for i in range(n_params):
-            mylist.append((LinSpace[i, k+0], LinSpace[i, k+1]))
-        Subdomains.append(tuple(mylist))
-
-    return Subdomains
-
-class Engine():
-    
-    
-    def __init__(self, MetaMod, Model, ExpDes):
-        self.MetaModel = MetaMod
-        self.Model = Model
-        self.ExpDesign = ExpDes
-        self.parallel = False
-        
-    def start_engine(self) -> None:
-        """
-        Do all the preparations that need to be run before the actual training
-
-        Returns
-        -------
-        None
-
-        """
-        self.out_names = self.Model.Output.names
-        self.MetaModel.out_names = self.out_names
-        
-        
-    def train_normal(self, parallel = False, verbose = False, save = False) -> None:
-        """
-        Trains surrogate on static samples only.
-        Samples are taken from the experimental design and the specified 
-        model is run on them.
-        Alternatively the samples can be read in from a provided hdf5 file.
-        
-
-        Returns
-        -------
-        None
-
-        """
-            
-        ExpDesign = self.ExpDesign
-        MetaModel = self.MetaModel
-        
-        # Read ExpDesign (training and targets) from the provided hdf5
-        if ExpDesign.hdf5_file is not None:
-            # TODO: need to run 'generate_ED' as well after this or not?
-            ExpDesign.read_from_file(self.out_names)
-        else:
-            # Check if an old hdf5 file exists: if yes, rename it
-            hdf5file = f'ExpDesign_{self.Model.name}.hdf5'
-            if os.path.exists(hdf5file):
-           #     os.rename(hdf5file, 'old_'+hdf5file)
-                file = pathlib.Path(hdf5file)
-                file.unlink()
-
-        # Prepare X samples 
-        # For training the surrogate use ExpDesign.X_tr, ExpDesign.X is for the model to run on 
-        ExpDesign.generate_ED(ExpDesign.n_init_samples,
-                                              transform=True,
-                                              max_pce_deg=np.max(MetaModel.pce_deg))
-        
-        # Run simulations at X 
-        if not hasattr(ExpDesign, 'Y') or ExpDesign.Y is None:
-            print('\n Now the forward model needs to be run!\n')
-            ED_Y, up_ED_X = self.Model.run_model_parallel(ExpDesign.X, mp = parallel)
-            ExpDesign.Y = ED_Y
-        else:
-            # Check if a dict has been passed.
-            if not type(ExpDesign.Y) is dict:
-                raise Exception('Please provide either a dictionary or a hdf5'
-                                'file to ExpDesign.hdf5_file argument.')
-                
-        # Separate output dict and x-values
-        if 'x_values' in ExpDesign.Y:
-            ExpDesign.x_values = ExpDesign.Y['x_values']
-            del ExpDesign.Y['x_values']
-        else:
-            print('No x_values are given, this might lead to issues during PostProcessing')
-        
-        
-        # Fit the surrogate
-        MetaModel.fit(ExpDesign.X_tr, ExpDesign.Y, parallel, verbose)
-        
-        # Save what there is to save
-        if save:
-            # Save surrogate
-            with open(f'surrogates/surrogate_{self.Model.name}.pk1', 'wb') as output:
-                joblib.dump(MetaModel, output, 2)
-                    
-            # Zip the model run directories
-            if self.Model.link_type.lower() == 'pylink' and\
-               self.ExpDesign.sampling_method.lower() != 'user':
-                self.Model.zip_subdirs(self.Model.name, f'{self.Model.name}_')
-                
-            
-    def train_sequential(self, parallel = False, verbose = False) -> None:
-        """
-        Train the surrogate in a sequential manner.
-        First build and train evereything on the static samples, then iterate
-        choosing more samples and refitting the surrogate on them.
-
-        Returns
-        -------
-        None
-
-        """
-        #self.train_normal(parallel, verbose)
-        self.parallel = parallel
-        self.train_seq_design(parallel, verbose)
-        
-        
-    # -------------------------------------------------------------------------
-    def eval_metamodel(self, samples=None, nsamples=None,
-                       sampling_method='random', return_samples=False):
-        """
-        Evaluates meta-model at the requested samples. One can also generate
-        nsamples.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params), optional
-            Samples to evaluate meta-model at. The default is None.
-        nsamples : int, optional
-            Number of samples to generate, if no `samples` is provided. The
-            default is None.
-        sampling_method : str, optional
-            Type of sampling, if no `samples` is provided. The default is
-            'random'.
-        return_samples : bool, optional
-            Retun samples, if no `samples` is provided. The default is False.
-
-        Returns
-        -------
-        mean_pred : dict
-            Mean of the predictions.
-        std_pred : dict
-            Standard deviatioon of the predictions.
-        """
-        # Generate or transform (if need be) samples
-        if samples is None:
-            # Generate
-            samples = self.ExpDesign.generate_samples(
-                nsamples,
-                sampling_method
-                )
-
-        # Transformation to other space is to be done in the MetaModel
-        # TODO: sort the transformations better
-        mean_pred, std_pred = self.MetaModel.eval_metamodel(samples)
-
-        if return_samples:
-            return mean_pred, std_pred, samples
-        else:
-            return mean_pred, std_pred
-        
-        
-    # -------------------------------------------------------------------------
-    def train_seq_design(self, parallel = False, verbose = False):
-        """
-        Starts the adaptive sequential design for refining the surrogate model
-        by selecting training points in a sequential manner.
-
-        Returns
-        -------
-        MetaModel : object
-            Meta model object.
-
-        """
-        self.parallel = parallel
-        
-        # Initialization
-        self.SeqModifiedLOO = {}
-        self.seqValidError = {}
-        self.SeqBME = {}
-        self.SeqKLD = {}
-        self.SeqDistHellinger = {}
-        self.seqRMSEMean = {}
-        self.seqRMSEStd = {}
-        self.seqMinDist = []
-        
-        if not hasattr(self.MetaModel, 'valid_samples'):
-            self.ExpDesign.valid_samples = []
-            self.ExpDesign.valid_model_runs = []
-            self.valid_likelihoods = []
-        
-        validError = None
-
-
-        # Determine the metamodel type
-        if self.MetaModel.meta_model_type.lower() != 'gpe':
-            pce = True
-        else:
-            pce = False
-        mc_ref = True if bool(self.Model.mc_reference) else False
-        if mc_ref:
-            self.Model.read_observation('mc_ref')
-
-        # Get the parameters
-        max_n_samples = self.ExpDesign.n_max_samples
-        mod_LOO_threshold = self.ExpDesign.mod_LOO_threshold
-        n_canddidate = self.ExpDesign.n_canddidate
-        post_snapshot = self.ExpDesign.post_snapshot
-        n_replication = self.ExpDesign.n_replication
-        util_func = self.ExpDesign.util_func
-        output_name = self.out_names
-        
-        # Handle if only one UtilityFunctions is provided
-        if not isinstance(util_func, list):
-            util_func = [self.ExpDesign.util_func]
-
-        # Read observations or MCReference
-        # TODO: recheck the logic in this if statement
-        if (len(self.Model.observations) != 0 or self.Model.meas_file is not None) and hasattr(self.MetaModel, 'Discrepancy'):
-            self.observations = self.Model.read_observation()
-            obs_data = self.observations
-        else:
-            obs_data = []
-            # TODO: TotalSigma2 not defined if not in this else???
-            # TODO: no self.observations if in here
-            TotalSigma2 = {}
-            
-        # ---------- Initial self.MetaModel ----------
-        self.train_normal(parallel = parallel, verbose=verbose)
-        
-        initMetaModel = deepcopy(self.MetaModel)
-
-        # Validation error if validation set is provided.
-        if self.ExpDesign.valid_model_runs:
-            init_rmse, init_valid_error = self._validError(initMetaModel)
-            init_valid_error = list(init_valid_error.values())
-        else:
-            init_rmse = None
-
-        # Check if discrepancy is provided
-        if len(obs_data) != 0 and hasattr(self.MetaModel, 'Discrepancy'):
-            TotalSigma2 = self.MetaModel.Discrepancy.parameters
-
-            # Calculate the initial BME
-            out = self._BME_Calculator(
-                obs_data, TotalSigma2, init_rmse)
-            init_BME, init_KLD, init_post, init_likes, init_dist_hellinger = out
-            print(f"\nInitial BME: {init_BME:.2f}")
-            print(f"Initial KLD: {init_KLD:.2f}")
-
-            # Posterior snapshot (initial)
-            if post_snapshot:
-                parNames = self.ExpDesign.par_names
-                print('Posterior snapshot (initial) is being plotted...')
-                self.__posteriorPlot(init_post, parNames, 'SeqPosterior_init')
-
-        # Check the convergence of the Mean & Std
-        if mc_ref and pce:
-            init_rmse_mean, init_rmse_std = self._error_Mean_Std()
-            print(f"Initial Mean and Std error: {init_rmse_mean:.2f},"
-                  f" {init_rmse_std:.2f}")
-
-        # Read the initial experimental design
-        Xinit = self.ExpDesign.X
-        init_n_samples = len(self.ExpDesign.X)
-        initYprev = self.ExpDesign.Y#initMetaModel.ModelOutputDict
-        #self.MetaModel.ModelOutputDict = self.ExpDesign.Y
-        initLCerror = initMetaModel.LCerror
-        n_itrs = max_n_samples - init_n_samples
-
-        ## Get some initial statistics
-        # Read the initial ModifiedLOO
-        if pce:
-            Scores_all, varExpDesignY = [], []
-            for out_name in output_name:
-                y = self.ExpDesign.Y[out_name]
-                Scores_all.append(list(
-                    self.MetaModel.score_dict['b_1'][out_name].values()))
-                if self.MetaModel.dim_red_method.lower() == 'pca':
-                    pca = self.MetaModel.pca['b_1'][out_name]
-                    components = pca.transform(y)
-                    varExpDesignY.append(np.var(components, axis=0))
-                else:
-                    varExpDesignY.append(np.var(y, axis=0))
-
-            Scores = [item for sublist in Scores_all for item in sublist]
-            weights = [item for sublist in varExpDesignY for item in sublist]
-            init_mod_LOO = [np.average([1-score for score in Scores],
-                                       weights=weights)]
-
-        prevMetaModel_dict = {}
-        #prevExpDesign_dict = {}
-        # Can run sequential design multiple times for comparison
-        for repIdx in range(n_replication):
-            print(f'\n>>>> Replication: {repIdx+1}<<<<')
-
-            # util_func: the function to use inside the type of exploitation
-            for util_f in util_func:
-                print(f'\n>>>> Utility Function: {util_f} <<<<')
-                # To avoid changes ub original aPCE object
-                self.ExpDesign.X = Xinit
-                self.ExpDesign.Y = initYprev
-                self.ExpDesign.LCerror = initLCerror
-
-                # Set the experimental design
-                Xprev = Xinit
-                total_n_samples = init_n_samples
-                Yprev = initYprev
-
-                Xfull = []
-                Yfull = []
-
-                # Store the initial ModifiedLOO
-                if pce:
-                    print("\nInitial ModifiedLOO:", init_mod_LOO)
-                    SeqModifiedLOO = np.array(init_mod_LOO)
-
-                if len(self.ExpDesign.valid_model_runs) != 0:
-                    SeqValidError = np.array(init_valid_error)
-
-                # Check if data is provided
-                if len(obs_data) != 0 and hasattr(self.MetaModel, 'Discrepancy'):
-                    SeqBME = np.array([init_BME])
-                    SeqKLD = np.array([init_KLD])
-                    SeqDistHellinger = np.array([init_dist_hellinger])
-
-                if mc_ref and pce:
-                    seqRMSEMean = np.array([init_rmse_mean])
-                    seqRMSEStd = np.array([init_rmse_std])
-
-                # ------- Start Sequential Experimental Design -------
-                postcnt = 1
-                for itr_no in range(1, n_itrs+1):
-                    print(f'\n>>>> Iteration number {itr_no} <<<<')
-
-                    # Save the metamodel prediction before updating
-                    prevMetaModel_dict[itr_no] = deepcopy(self.MetaModel)
-                    #prevExpDesign_dict[itr_no] = deepcopy(self.ExpDesign)
-                    if itr_no > 1:
-                        pc_model = prevMetaModel_dict[itr_no-1]
-                        self._y_hat_prev, _ = pc_model.eval_metamodel(
-                            samples=Xfull[-1].reshape(1, -1))
-                        del prevMetaModel_dict[itr_no-1]
-
-                    # Optimal Bayesian Design
-                    #self.MetaModel.ExpDesignFlag = 'sequential'
-                    Xnew, updatedPrior = self.choose_next_sample(TotalSigma2,
-                                                            n_canddidate,
-                                                            util_f)
-                    S = np.min(distance.cdist(Xinit, Xnew, 'euclidean'))
-                    self.seqMinDist.append(S)
-                    print(f"\nmin Dist from OldExpDesign: {S:2f}")
-                    print("\n")
-
-                    # Evaluate the full model response at the new sample
-                    Ynew, _ = self.Model.run_model_parallel(
-                        Xnew, prevRun_No=total_n_samples
-                        )
-                    total_n_samples += Xnew.shape[0]
-
-                    # ------ Plot the surrogate model vs Origninal Model ------
-                    if hasattr(self.ExpDesign, 'adapt_verbose') and \
-                       self.ExpDesign.adapt_verbose:
-                        from .adaptPlot import adaptPlot
-                        y_hat, std_hat = self.MetaModel.eval_metamodel(
-                            samples=Xnew
-                            )
-                        adaptPlot(
-                            self.MetaModel, Ynew, y_hat, std_hat,
-                            plotED=False
-                            )
-
-                    # -------- Retrain the surrogate model -------
-                    # Extend new experimental design
-                    Xfull = np.vstack((Xprev, Xnew))
-
-                    # Updating experimental design Y
-                    for out_name in output_name:
-                        Yfull = np.vstack((Yprev[out_name], Ynew[out_name]))
-                        self.ExpDesign.Y[out_name] = Yfull
-
-                    # Pass new design to the metamodel object
-                    self.ExpDesign.sampling_method = 'user'
-                    self.ExpDesign.X = Xfull
-                    #self.ExpDesign.Y = self.MetaModel.ModelOutputDict
-
-                    # Save the Experimental Design for next iteration
-                    Xprev = Xfull
-                    Yprev = self.ExpDesign.Y 
-
-                    # Pass the new prior as the input
-                    # TODO: another look at this - no difference apc to pce to gpe?
-                    self.MetaModel.input_obj.poly_coeffs_flag = False
-                    if updatedPrior is not None:
-                        self.MetaModel.input_obj.poly_coeffs_flag = True
-                        print("updatedPrior:", updatedPrior.shape)
-                        # Arbitrary polynomial chaos
-                        for i in range(updatedPrior.shape[1]):
-                            self.MetaModel.input_obj.Marginals[i].dist_type = None
-                            x = updatedPrior[:, i]
-                            self.MetaModel.input_obj.Marginals[i].raw_data = x
-
-                    # Train the surrogate model for new ExpDesign
-                    self.train_normal(parallel=False)
-
-                    # -------- Evaluate the retrained surrogate model -------
-                    # Extract Modified LOO from Output
-                    if pce:
-                        Scores_all, varExpDesignY = [], []
-                        for out_name in output_name:
-                            y = self.ExpDesign.Y[out_name]
-                            Scores_all.append(list(
-                                self.MetaModel.score_dict['b_1'][out_name].values()))
-                            if self.MetaModel.dim_red_method.lower() == 'pca':
-                                pca = self.MetaModel.pca['b_1'][out_name]
-                                components = pca.transform(y)
-                                varExpDesignY.append(np.var(components,
-                                                            axis=0))
-                            else:
-                                varExpDesignY.append(np.var(y, axis=0))
-                        Scores = [item for sublist in Scores_all for item
-                                  in sublist]
-                        weights = [item for sublist in varExpDesignY for item
-                                   in sublist]
-                        ModifiedLOO = [np.average(
-                            [1-score for score in Scores], weights=weights)]
-
-                        print('\n')
-                        print(f"Updated ModifiedLOO {util_f}:\n", ModifiedLOO)
-                        print('\n')
-
-                    # Compute the validation error
-                    if self.ExpDesign.valid_model_runs:
-                        rmse, validError = self._validError(self.MetaModel)
-                        ValidError = list(validError.values())
-                    else:
-                        rmse = None
-
-                    # Store updated ModifiedLOO
-                    if pce:
-                        SeqModifiedLOO = np.vstack(
-                            (SeqModifiedLOO, ModifiedLOO))
-                        if len(self.ExpDesign.valid_model_runs) != 0:
-                            SeqValidError = np.vstack(
-                                (SeqValidError, ValidError))
-                    # -------- Caclulation of BME as accuracy metric -------
-                    # Check if data is provided
-                    if len(obs_data) != 0:
-                        # Calculate the initial BME
-                        out = self._BME_Calculator(obs_data, TotalSigma2, rmse)
-                        BME, KLD, Posterior, likes, DistHellinger = out
-                        print('\n')
-                        print(f"Updated BME: {BME:.2f}")
-                        print(f"Updated KLD: {KLD:.2f}")
-                        print('\n')
-
-                        # Plot some snapshots of the posterior
-                        step_snapshot = self.ExpDesign.step_snapshot
-                        if post_snapshot and postcnt % step_snapshot == 0:
-                            parNames = self.ExpDesign.par_names
-                            print('Posterior snapshot is being plotted...')
-                            self.__posteriorPlot(Posterior, parNames,
-                                                 f'SeqPosterior_{postcnt}')
-                        postcnt += 1
-
-                    # Check the convergence of the Mean&Std
-                    if mc_ref and pce:
-                        print('\n')
-                        RMSE_Mean, RMSE_std = self._error_Mean_Std()
-                        print(f"Updated Mean and Std error: {RMSE_Mean:.2f}, "
-                              f"{RMSE_std:.2f}")
-                        print('\n')
-
-                    # Store the updated BME & KLD
-                    # Check if data is provided
-                    if len(obs_data) != 0:
-                        SeqBME = np.vstack((SeqBME, BME))
-                        SeqKLD = np.vstack((SeqKLD, KLD))
-                        SeqDistHellinger = np.vstack((SeqDistHellinger,
-                                                      DistHellinger))
-                    if mc_ref and pce:
-                        seqRMSEMean = np.vstack((seqRMSEMean, RMSE_Mean))
-                        seqRMSEStd = np.vstack((seqRMSEStd, RMSE_std))
-
-                    if pce and any(LOO < mod_LOO_threshold
-                                   for LOO in ModifiedLOO):
-                        break
-
-                    # Clean up
-                    if len(obs_data) != 0:
-                        del out
-                    print()
-                    print('-'*50)
-                    print()
-
-                # Store updated ModifiedLOO and BME in dictonary
-                strKey = f'{util_f}_rep_{repIdx+1}'
-                if pce:
-                    self.SeqModifiedLOO[strKey] = SeqModifiedLOO
-                if len(self.ExpDesign.valid_model_runs) != 0:
-                    self.seqValidError[strKey] = SeqValidError
-
-                # Check if data is provided
-                if len(obs_data) != 0:
-                    self.SeqBME[strKey] = SeqBME
-                    self.SeqKLD[strKey] = SeqKLD
-                if hasattr(self.MetaModel, 'valid_likelihoods') and \
-                   self.valid_likelihoods:
-                    self.SeqDistHellinger[strKey] = SeqDistHellinger
-                if mc_ref and pce:
-                    self.seqRMSEMean[strKey] = seqRMSEMean
-                    self.seqRMSEStd[strKey] = seqRMSEStd
-
-        # return self.MetaModel
-
-    # -------------------------------------------------------------------------
-    def util_VarBasedDesign(self, X_can, index, util_func='Entropy'):
-        """
-        Computes the exploitation scores based on:
-        active learning MacKay(ALM) and active learning Cohn (ALC)
-        Paper: Sequential Design with Mutual Information for Computer
-        Experiments (MICE): Emulation of a Tsunami Model by Beck and Guillas
-        (2016)
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        index : int
-            Model output index.
-        UtilMethod : string, optional
-            Exploitation utility function. The default is 'Entropy'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-        MetaModel = self.MetaModel
-        ED_X = self.ExpDesign.X
-        out_dict_y = self.ExpDesign.Y
-        out_names = self.out_names
-
-        # Run the Metamodel for the candidate
-        X_can = X_can.reshape(1, -1)
-        Y_PC_can, std_PC_can = MetaModel.eval_metamodel(samples=X_can)
-
-        if util_func.lower() == 'alm':
-            # ----- Entropy/MMSE/active learning MacKay(ALM)  -----
-            # Compute perdiction variance of the old model
-            canPredVar = {key: std_PC_can[key]**2 for key in out_names}
-
-            varPCE = np.zeros((len(out_names), X_can.shape[0]))
-            for KeyIdx, key in enumerate(out_names):
-                varPCE[KeyIdx] = np.max(canPredVar[key], axis=1)
-            score = np.max(varPCE, axis=0)
-
-        elif util_func.lower() == 'eigf':
-            # ----- Expected Improvement for Global fit -----
-            # Find closest EDX to the candidate
-            distances = distance.cdist(ED_X, X_can, 'euclidean')
-            index = np.argmin(distances)
-
-            # Compute perdiction error and variance of the old model
-            predError = {key: Y_PC_can[key] for key in out_names}
-            canPredVar = {key: std_PC_can[key]**2 for key in out_names}
-
-            # Compute perdiction error and variance of the old model
-            # Eq (5) from Liu et al.(2018)
-            EIGF_PCE = np.zeros((len(out_names), X_can.shape[0]))
-            for KeyIdx, key in enumerate(out_names):
-                residual = predError[key] - out_dict_y[key][int(index)]
-                var = canPredVar[key]
-                EIGF_PCE[KeyIdx] = np.max(residual**2 + var, axis=1)
-            score = np.max(EIGF_PCE, axis=0)
-
-        return -1 * score   # -1 is for minimization instead of maximization
-
-    # -------------------------------------------------------------------------
-    def util_BayesianActiveDesign(self, y_hat, std, sigma2Dict, var='DKL'):
-        """
-        Computes scores based on Bayesian active design criterion (var).
-
-        It is based on the following paper:
-        Oladyshkin, Sergey, Farid Mohammadi, Ilja Kroeker, and Wolfgang Nowak.
-        "Bayesian3 active learning for the gaussian process emulator using
-        information theory." Entropy 22, no. 8 (2020): 890.
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        var : string, optional
-            BAL design criterion. The default is 'DKL'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-
-        # Get the data
-        obs_data = self.observations
-        # TODO: this should be optimizable to be calculated explicitly
-        if hasattr(self.Model, 'n_obs'):
-            n_obs = self.Model.n_obs
-        else:
-            n_obs = self.n_obs
-        mc_size = 10000
-
-        # Sample a distribution for a normal dist
-        # with Y_mean_can as the mean and Y_std_can as std.
-        Y_MC, std_MC = {}, {}
-        logPriorLikelihoods = np.zeros((mc_size))
-       # print(y_hat)
-       # print(list[y_hat])
-        for key in list(y_hat):
-            cov = np.diag(std[key]**2)
-           # print(y_hat[key], cov)
-            # TODO: added the allow_singular = True here
-            rv = stats.multivariate_normal(mean=y_hat[key], cov=cov,)
-            Y_MC[key] = rv.rvs(size=mc_size)
-            logPriorLikelihoods += rv.logpdf(Y_MC[key])
-            std_MC[key] = np.zeros((mc_size, y_hat[key].shape[0]))
-
-        #  Likelihood computation (Comparison of data and simulation
-        #  results via PCE with candidate design)
-        likelihoods = self._normpdf(Y_MC, std_MC, obs_data, sigma2Dict)
-        
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, mc_size)[0]
-
-        # Reject the poorly performed prior
-        accepted = (likelihoods/np.max(likelihoods)) >= unif
-
-        # Prior-based estimation of BME
-        logBME = np.log(np.nanmean(likelihoods), dtype=np.longdouble)#float128)
-
-        # Posterior-based expectation of likelihoods
-        postLikelihoods = likelihoods[accepted]
-        postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-        # Posterior-based expectation of prior densities
-        postExpPrior = np.mean(logPriorLikelihoods[accepted])
-
-        # Utility function Eq.2 in Ref. (2)
-        # Posterior covariance matrix after observing data y
-        # Kullback-Leibler Divergence (Sergey's paper)
-        if var == 'DKL':
-
-            # TODO: Calculate the correction factor for BME
-            # BMECorrFactor = self.BME_Corr_Weight(PCE_SparseBayes_can,
-            #                                      ObservationData, sigma2Dict)
-            # BME += BMECorrFactor
-            # Haun et al implementation
-            # U_J_d = np.mean(np.log(Likelihoods[Likelihoods!=0])- logBME)
-            U_J_d = postExpLikelihoods - logBME
-
-        # Marginal log likelihood
-        elif var == 'BME':
-            U_J_d = np.nanmean(likelihoods)
-
-        # Entropy-based information gain
-        elif var == 'infEntropy':
-            logBME = np.log(np.nanmean(likelihoods))
-            infEntropy = logBME - postExpPrior - postExpLikelihoods
-            U_J_d = infEntropy * -1  # -1 for minimization
-
-        # Bayesian information criterion
-        elif var == 'BIC':
-            coeffs = self.MetaModel.coeffs_dict.values()
-            nModelParams = max(len(v) for val in coeffs for v in val.values())
-            maxL = np.nanmax(likelihoods)
-            U_J_d = -2 * np.log(maxL) + np.log(n_obs) * nModelParams
-
-        # Akaike information criterion
-        elif var == 'AIC':
-            coeffs = self.MetaModel.coeffs_dict.values()
-            nModelParams = max(len(v) for val in coeffs for v in val.values())
-            maxlogL = np.log(np.nanmax(likelihoods))
-            AIC = -2 * maxlogL + 2 * nModelParams
-            # 2 * nModelParams * (nModelParams+1) / (n_obs-nModelParams-1)
-            penTerm = 0
-            U_J_d = 1*(AIC + penTerm)
-
-        # Deviance information criterion
-        elif var == 'DIC':
-            # D_theta_bar = np.mean(-2 * Likelihoods)
-            N_star_p = 0.5 * np.var(np.log(likelihoods[likelihoods != 0]))
-            Likelihoods_theta_mean = self._normpdf(
-                y_hat, std, obs_data, sigma2Dict
-                )
-            DIC = -2 * np.log(Likelihoods_theta_mean) + 2 * N_star_p
-
-            U_J_d = DIC
-
-        else:
-            print('The algorithm you requested has not been implemented yet!')
-
-        # Handle inf and NaN (replace by zero)
-        if np.isnan(U_J_d) or U_J_d == -np.inf or U_J_d == np.inf:
-            U_J_d = 0.0
-
-        # Clear memory
-        del likelihoods
-        del Y_MC
-        del std_MC
-
-        return -1 * U_J_d   # -1 is for minimization instead of maximization
-
-    # -------------------------------------------------------------------------
-    def util_BayesianDesign(self, X_can, X_MC, sigma2Dict, var='DKL'):
-        """
-        Computes scores based on Bayesian sequential design criterion (var).
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        var : string, optional
-            Bayesian design criterion. The default is 'DKL'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-
-        # To avoid changes ub original aPCE object
-        MetaModel = self.MetaModel
-        out_names = self.out_names
-        if X_can.ndim == 1:
-            X_can = X_can.reshape(1, -1)
-
-        # Compute the mean and std based on the MetaModel
-        # pce_means, pce_stds = self._compute_pce_moments(MetaModel)
-        if var == 'ALC':
-            Y_MC, Y_MC_std = MetaModel.eval_metamodel(samples=X_MC)
-
-        # Old Experimental design
-        oldExpDesignX = self.ExpDesign.X
-        oldExpDesignY = self.ExpDesign.Y
-
-        # Evaluate the PCE metamodels at that location ???
-        Y_PC_can, Y_std_can = MetaModel.eval_metamodel(samples=X_can)
-        PCE_Model_can = deepcopy(MetaModel)
-        engine_can = deepcopy(self)
-        # Add the candidate to the ExpDesign
-        NewExpDesignX = np.vstack((oldExpDesignX, X_can))
-
-        NewExpDesignY = {}
-        for key in oldExpDesignY.keys():
-            NewExpDesignY[key] = np.vstack(
-                (oldExpDesignY[key], Y_PC_can[key])
-                )
-
-        engine_can.ExpDesign.sampling_method = 'user'
-        engine_can.ExpDesign.X = NewExpDesignX
-        #engine_can.ModelOutputDict = NewExpDesignY
-        engine_can.ExpDesign.Y = NewExpDesignY
-
-        # Train the model for the observed data using x_can
-        engine_can.MetaModel.input_obj.poly_coeffs_flag = False
-        engine_can.start_engine()
-        engine_can.train_normal(parallel=False)
-        engine_can.MetaModel.fit(NewExpDesignX, NewExpDesignY)
-#        engine_can.train_norm_design(parallel=False)
-
-        # Set the ExpDesign to its original values
-        engine_can.ExpDesign.X = oldExpDesignX
-        engine_can.ModelOutputDict = oldExpDesignY
-        engine_can.ExpDesign.Y = oldExpDesignY
-
-        if var.lower() == 'mi':
-            # Mutual information based on Krause et al
-            # Adapted from Beck & Guillas (MICE) paper
-            _, std_PC_can = engine_can.MetaModel.eval_metamodel(samples=X_can)
-            std_can = {key: std_PC_can[key] for key in out_names}
-
-            std_old = {key: Y_std_can[key] for key in out_names}
-
-            varPCE = np.zeros((len(out_names)))
-            for i, key in enumerate(out_names):
-                varPCE[i] = np.mean(std_old[key]**2/std_can[key]**2)
-            score = np.mean(varPCE)
-
-            return -1 * score
-
-        elif var.lower() == 'alc':
-            # Active learning based on Gramyc and Lee
-            # Adaptive design and analysis of supercomputer experiments Techno-
-            # metrics, 51 (2009), pp. 130–145.
-
-            # Evaluate the MetaModel at the given samples
-            Y_MC_can, Y_MC_std_can = engine_can.MetaModel.eval_metamodel(samples=X_MC)
-
-            # Compute the score
-            score = []
-            for i, key in enumerate(out_names):
-                pce_var = Y_MC_std_can[key]**2
-                pce_var_can = Y_MC_std[key]**2
-                score.append(np.mean(pce_var-pce_var_can, axis=0))
-            score = np.mean(score)
-
-            return -1 * score
-
-        # ---------- Inner MC simulation for computing Utility Value ----------
-        # Estimation of the integral via Monte Varlo integration
-        MCsize = X_MC.shape[0]
-        ESS = 0
-
-        while ((ESS > MCsize) or (ESS < 1)):
-
-            # Enriching Monte Carlo samples if need be
-            if ESS != 0:
-                X_MC = self.ExpDesign.generate_samples(
-                    MCsize, 'random'
-                    )
-
-            # Evaluate the MetaModel at the given samples
-            Y_MC, std_MC = PCE_Model_can.eval_metamodel(samples=X_MC)
-
-            # Likelihood computation (Comparison of data and simulation
-            # results via PCE with candidate design)
-            likelihoods = self._normpdf(
-                Y_MC, std_MC, self.observations, sigma2Dict
-                )
-
-            # Check the Effective Sample Size (1<ESS<MCsize)
-            ESS = 1 / np.sum(np.square(likelihoods/np.sum(likelihoods)))
-
-            # Enlarge sample size if it doesn't fulfill the criteria
-            if ((ESS > MCsize) or (ESS < 1)):
-                print("--- increasing MC size---")
-                MCsize *= 10
-                ESS = 0
-
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, MCsize)[0]
-
-        # Reject the poorly performed prior
-        accepted = (likelihoods/np.max(likelihoods)) >= unif
-
-        # -------------------- Utility functions --------------------
-        # Utility function Eq.2 in Ref. (2)
-        # Kullback-Leibler Divergence (Sergey's paper)
-        if var == 'DKL':
-
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods, dtype=np.longdouble))#float128))
-
-            # Posterior-based expectation of likelihoods
-            postLikelihoods = likelihoods[accepted]
-            postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-            # Haun et al implementation
-            U_J_d = np.mean(np.log(likelihoods[likelihoods != 0]) - logBME)
-
-            # U_J_d = np.sum(G_n_m_all)
-            # Ryan et al (2014) implementation
-            # importanceWeights = Likelihoods[Likelihoods!=0]/np.sum(Likelihoods[Likelihoods!=0])
-            # U_J_d = np.mean(importanceWeights*np.log(Likelihoods[Likelihoods!=0])) - logBME
-
-            # U_J_d = postExpLikelihoods - logBME
-
-        # Marginal likelihood
-        elif var == 'BME':
-
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods))
-            U_J_d = logBME
-
-        # Bayes risk likelihood
-        elif var == 'BayesRisk':
-
-            U_J_d = -1 * np.var(likelihoods)
-
-        # Entropy-based information gain
-        elif var == 'infEntropy':
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods))
-
-            # Posterior-based expectation of likelihoods
-            postLikelihoods = likelihoods[accepted]
-            postLikelihoods /= np.nansum(likelihoods[accepted])
-            postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-            # Posterior-based expectation of prior densities
-            postExpPrior = np.mean(logPriorLikelihoods[accepted])
-
-            infEntropy = logBME - postExpPrior - postExpLikelihoods
-
-            U_J_d = infEntropy * -1  # -1 for minimization
-
-        # D-Posterior-precision
-        elif var == 'DPP':
-            X_Posterior = X_MC[accepted]
-            # covariance of the posterior parameters
-            U_J_d = -np.log(np.linalg.det(np.cov(X_Posterior)))
-
-        # A-Posterior-precision
-        elif var == 'APP':
-            X_Posterior = X_MC[accepted]
-            # trace of the posterior parameters
-            U_J_d = -np.log(np.trace(np.cov(X_Posterior)))
-
-        else:
-            print('The algorithm you requested has not been implemented yet!')
-
-        # Clear memory
-        del likelihoods
-        del Y_MC
-        del std_MC
-
-        return -1 * U_J_d   # -1 is for minimization instead of maximization
-
-
-    # -------------------------------------------------------------------------
-    def run_util_func(self, method, candidates, index, sigma2Dict=None,
-                      var=None, X_MC=None):
-        """
-        Runs the utility function based on the given method.
-
-        Parameters
-        ----------
-        method : string
-            Exploitation method: `VarOptDesign`, `BayesActDesign` and
-            `BayesOptDesign`.
-        candidates : array of shape (n_samples, n_params)
-            All candidate parameter sets.
-        index : int
-            ExpDesign index.
-        sigma2Dict : dict, optional
-            A dictionary containing the measurement errors (sigma^2). The
-            default is None.
-        var : string, optional
-            Utility function. The default is None.
-        X_MC : TYPE, optional
-            DESCRIPTION. The default is None.
-
-        Returns
-        -------
-        index : TYPE
-            DESCRIPTION.
-        List
-            Scores.
-
-        """
-
-        if method.lower() == 'varoptdesign':
-            # U_J_d = self.util_VarBasedDesign(candidates, index, var)
-            U_J_d = np.zeros((candidates.shape[0]))
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="varoptdesign"):
-                U_J_d[idx] = self.util_VarBasedDesign(X_can, index, var)
-
-        elif method.lower() == 'bayesactdesign':
-            NCandidate = candidates.shape[0]
-            U_J_d = np.zeros((NCandidate))
-            # Evaluate all candidates
-            y_can, std_can = self.MetaModel.eval_metamodel(samples=candidates)
-            # loop through candidates
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="BAL Design"):
-                y_hat = {key: items[idx] for key, items in y_can.items()}
-                std = {key: items[idx] for key, items in std_can.items()}
-                
-               # print(y_hat)
-               # print(std)
-                U_J_d[idx] = self.util_BayesianActiveDesign(
-                    y_hat, std, sigma2Dict, var)
-
-        elif method.lower() == 'bayesoptdesign':
-            NCandidate = candidates.shape[0]
-            U_J_d = np.zeros((NCandidate))
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="OptBayesianDesign"):
-                U_J_d[idx] = self.util_BayesianDesign(X_can, X_MC, sigma2Dict,
-                                                      var)
-        return (index, -1 * U_J_d)
-
-    # -------------------------------------------------------------------------
-    def dual_annealing(self, method, Bounds, sigma2Dict, var, Run_No,
-                       verbose=False):
-        """
-        Exploration algorithm to find the optimum parameter space.
-
-        Parameters
-        ----------
-        method : string
-            Exploitation method: `VarOptDesign`, `BayesActDesign` and
-            `BayesOptDesign`.
-        Bounds : list of tuples
-            List of lower and upper boundaries of parameters.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        Run_No : int
-            Run number.
-        verbose : bool, optional
-            Print out a summary. The default is False.
-
-        Returns
-        -------
-        Run_No : int
-            Run number.
-        array
-            Optimial candidate.
-
-        """
-
-        Model = self.Model
-        max_func_itr = self.ExpDesign.max_func_itr
-
-        if method == 'VarOptDesign':
-            Res_Global = opt.dual_annealing(self.util_VarBasedDesign,
-                                            bounds=Bounds,
-                                            args=(Model, var),
-                                            maxfun=max_func_itr)
-
-        elif method == 'BayesOptDesign':
-            Res_Global = opt.dual_annealing(self.util_BayesianDesign,
-                                            bounds=Bounds,
-                                            args=(Model, sigma2Dict, var),
-                                            maxfun=max_func_itr)
-
-        if verbose:
-            print(f"Global minimum: xmin = {Res_Global.x}, "
-                  f"f(xmin) = {Res_Global.fun:.6f}, nfev = {Res_Global.nfev}")
-
-        return (Run_No, Res_Global.x)
-
-    # -------------------------------------------------------------------------
-    def tradeoff_weights(self, tradeoff_scheme, old_EDX, old_EDY):
-        """
-        Calculates weights for exploration scores based on the requested
-        scheme: `None`, `equal`, `epsilon-decreasing` and `adaptive`.
-
-        `None`: No exploration.
-        `equal`: Same weights for exploration and exploitation scores.
-        `epsilon-decreasing`: Start with more exploration and increase the
-            influence of exploitation along the way with a exponential decay
-            function
-        `adaptive`: An adaptive method based on:
-            Liu, Haitao, Jianfei Cai, and Yew-Soon Ong. "An adaptive sampling
-            approach for Kriging metamodeling by maximizing expected prediction
-            error." Computers & Chemical Engineering 106 (2017): 171-182.
-
-        Parameters
-        ----------
-        tradeoff_scheme : string
-            Trade-off scheme for exloration and exploitation scores.
-        old_EDX : array (n_samples, n_params)
-            Old experimental design (training points).
-        old_EDY : dict
-            Old model responses (targets).
-
-        Returns
-        -------
-        exploration_weight : float
-            Exploration weight.
-        exploitation_weight: float
-            Exploitation weight.
-
-        """
-        if tradeoff_scheme is None:
-            exploration_weight = 0
-
-        elif tradeoff_scheme == 'equal':
-            exploration_weight = 0.5
-
-        elif tradeoff_scheme == 'epsilon-decreasing':
-            # epsilon-decreasing scheme
-            # Start with more exploration and increase the influence of
-            # exploitation along the way with a exponential decay function
-            initNSamples = self.ExpDesign.n_init_samples
-            n_max_samples = self.ExpDesign.n_max_samples
-
-            itrNumber = (self.ExpDesign.X.shape[0] - initNSamples)
-            itrNumber //= self.ExpDesign.n_new_samples
-
-            tau2 = -(n_max_samples-initNSamples-1) / np.log(1e-8)
-            exploration_weight = signal.exponential(n_max_samples-initNSamples,
-                                                    0, tau2, False)[itrNumber]
-
-        elif tradeoff_scheme == 'adaptive':
-
-            # Extract itrNumber
-            initNSamples = self.ExpDesign.n_init_samples
-            n_max_samples = self.ExpDesign.n_max_samples
-            itrNumber = (self.ExpDesign.X.shape[0] - initNSamples)
-            itrNumber //= self.ExpDesign.n_new_samples
-
-            if itrNumber == 0:
-                exploration_weight = 0.5
-            else:
-                # New adaptive trade-off according to Liu et al. (2017)
-                # Mean squared error for last design point
-                last_EDX = old_EDX[-1].reshape(1, -1)
-                lastPCEY, _ = self.MetaModel.eval_metamodel(samples=last_EDX)
-                pce_y = np.array(list(lastPCEY.values()))[:, 0]
-                y = np.array(list(old_EDY.values()))[:, -1, :]
-                mseError = mean_squared_error(pce_y, y)
-
-                # Mean squared CV - error for last design point
-                pce_y_prev = np.array(list(self._y_hat_prev.values()))[:, 0]
-                mseCVError = mean_squared_error(pce_y_prev, y)
-
-                exploration_weight = min([0.5*mseError/mseCVError, 1])
-
-        # Exploitation weight
-        exploitation_weight = 1 - exploration_weight
-
-        return exploration_weight, exploitation_weight
-
-    # -------------------------------------------------------------------------
-    def choose_next_sample(self, sigma2=None, n_candidates=5, var='DKL'):
-        """
-        Runs optimal sequential design.
-
-        Parameters
-        ----------
-        sigma2 : dict, optional
-            A dictionary containing the measurement errors (sigma^2). The
-            default is None.
-        n_candidates : int, optional
-            Number of candidate samples. The default is 5.
-        var : string, optional
-            Utility function. The default is None. # TODO: default is set to DKL, not none
-
-        Raises
-        ------
-        NameError
-            Wrong utility function.
-
-        Returns
-        -------
-        Xnew : array (n_samples, n_params)
-            Selected new training point(s).
-        """
-
-        # Initialization
-        Bounds = self.ExpDesign.bound_tuples
-        n_new_samples = self.ExpDesign.n_new_samples
-        explore_method = self.ExpDesign.explore_method
-        exploit_method = self.ExpDesign.exploit_method
-        n_cand_groups = self.ExpDesign.n_cand_groups
-        tradeoff_scheme = self.ExpDesign.tradeoff_scheme
-
-        old_EDX = self.ExpDesign.X
-        old_EDY = self.ExpDesign.Y.copy()
-        ndim = self.ExpDesign.X.shape[1]
-        OutputNames = self.out_names
-
-        # -----------------------------------------
-        # ----------- CUSTOMIZED METHODS ----------
-        # -----------------------------------------
-        # Utility function exploit_method provided by user
-        if exploit_method.lower() == 'user':
-            if not hasattr(self.ExpDesign, 'ExploitFunction'):
-                raise AttributeError('Function `ExploitFunction` not given to the ExpDesign, thus cannor run user-defined sequential scheme')
-            # TODO: syntax does not fully match the rest - can test this??
-            Xnew, filteredSamples = self.ExpDesign.ExploitFunction(self)
-
-            print("\n")
-            print("\nXnew:\n", Xnew)
-
-            return Xnew, filteredSamples
-
-
-        # Dual-Annealing works differently from the rest, so deal with this first
-        # Here exploration and exploitation are performed simulataneously
-        if explore_method == 'dual annealing':
-            # ------- EXPLORATION: OPTIMIZATION -------
-            import time
-            start_time = time.time()
-
-            # Divide the domain to subdomains
-            subdomains = subdomain(Bounds, n_new_samples)
-
-            # Multiprocessing
-            if self.parallel:
-                args = []
-                for i in range(n_new_samples):
-                    args.append((exploit_method, subdomains[i], sigma2, var, i))
-                pool = multiprocessing.Pool(multiprocessing.cpu_count())
-
-                # With Pool.starmap_async()
-                results = pool.starmap_async(self.dual_annealing, args).get()
-
-                # Close the pool
-                pool.close()
-            # Without multiprocessing
-            else:
-                results = []
-                for i in range(n_new_samples):
-                    results.append(self.dual_annealing(exploit_method, subdomains[i], sigma2, var, i))
-                    
-            # New sample
-            Xnew = np.array([results[i][1] for i in range(n_new_samples)])
-            print("\nXnew:\n", Xnew)
-
-            # Computational cost
-            elapsed_time = time.time() - start_time
-            print("\n")
-            print(f"Elapsed_time: {round(elapsed_time,2)} sec.")
-            print('-'*20)
-            
-            return Xnew, None
-        
-        # Generate needed Exploration class
-        explore = Exploration(self.ExpDesign, n_candidates)
-        explore.w = 100  # * ndim #500  # TODO: where does this value come from?
-        
-        # Select criterion (mc-intersite-proj-th, mc-intersite-proj)
-        explore.mc_criterion = 'mc-intersite-proj'
-        
-        # Generate the candidate samples
-        # TODO: here use the sampling method provided by the expdesign?
-        sampling_method = self.ExpDesign.sampling_method
-        
-        # TODO: changed this from 'random' for LOOCV
-        if explore_method == 'LOOCV':
-            allCandidates = self.ExpDesign.generate_samples(n_candidates,
-                                                            sampling_method)
-        else:
-            allCandidates, scoreExploration = explore.get_exploration_samples()
-        
-        # -----------------------------------------
-        # ---------- EXPLORATION METHODS ----------
-        # -----------------------------------------
-        if explore_method == 'LOOCV':
-            # -----------------------------------------------------------------
-            # TODO: LOOCV model construnction based on Feng et al. (2020)
-            # 'LOOCV':
-            # Initilize the ExploitScore array
-
-            # Generate random samples
-            allCandidates = self.ExpDesign.generate_samples(n_candidates,
-                                                                'random')
-
-            # Construct error model based on LCerror
-            errorModel = self.MetaModel.create_ModelError(old_EDX, self.LCerror)
-            self.errorModel.append(copy(errorModel))
-
-            # Evaluate the error models for allCandidates
-            eLCAllCands, _ = errorModel.eval_errormodel(allCandidates)
-            # Select the maximum as the representative error
-            eLCAllCands = np.dstack(eLCAllCands.values())
-            eLCAllCandidates = np.max(eLCAllCands, axis=1)[:, 0]
-
-            # Normalize the error w.r.t the maximum error
-            scoreExploration = eLCAllCandidates / np.sum(eLCAllCandidates)
-
-        else:
-            # ------- EXPLORATION: SPACE-FILLING DESIGN -------
-            # Generate candidate samples from Exploration class
-            explore = Exploration(self.ExpDesign, n_candidates)
-            explore.w = 100  # * ndim #500
-            # Select criterion (mc-intersite-proj-th, mc-intersite-proj)
-            explore.mc_criterion = 'mc-intersite-proj'
-            allCandidates, scoreExploration = explore.get_exploration_samples()
-
-            # Temp: ---- Plot all candidates -----
-            if ndim == 2:
-                def plotter(points, allCandidates, Method,
-                            scoreExploration=None):
-                    if Method == 'Voronoi':
-                        from scipy.spatial import Voronoi, voronoi_plot_2d
-                        vor = Voronoi(points)
-                        fig = voronoi_plot_2d(vor)
-                        ax1 = fig.axes[0]
-                    else:
-                        fig = plt.figure()
-                        ax1 = fig.add_subplot(111)
-                    ax1.scatter(points[:, 0], points[:, 1], s=10, c='r',
-                                marker="s", label='Old Design Points')
-                    ax1.scatter(allCandidates[:, 0], allCandidates[:, 1], s=10,
-                                c='b', marker="o", label='Design candidates')
-                    for i in range(points.shape[0]):
-                        txt = 'p'+str(i+1)
-                        ax1.annotate(txt, (points[i, 0], points[i, 1]))
-                    if scoreExploration is not None:
-                        for i in range(allCandidates.shape[0]):
-                            txt = str(round(scoreExploration[i], 5))
-                            ax1.annotate(txt, (allCandidates[i, 0],
-                                               allCandidates[i, 1]))
-
-                    plt.xlim(self.bound_tuples[0])
-                    plt.ylim(self.bound_tuples[1])
-                    # plt.show()
-                    plt.legend(loc='upper left')
-
-        # -----------------------------------------
-        # --------- EXPLOITATION METHODS ----------
-        # -----------------------------------------
-        if exploit_method == 'BayesOptDesign' or\
-           exploit_method == 'BayesActDesign':
-
-            # ------- Calculate Exoploration weight -------
-            # Compute exploration weight based on trade off scheme
-            explore_w, exploit_w = self.tradeoff_weights(tradeoff_scheme,
-                                                        old_EDX,
-                                                        old_EDY)
-            print(f"\n Exploration weight={explore_w:0.3f} "
-                  f"Exploitation weight={exploit_w:0.3f}\n")
-
-            # ------- EXPLOITATION: BayesOptDesign & ActiveLearning -------
-            if explore_w != 1.0:
-                # Check if all needed properties are set
-                if not hasattr(self.ExpDesign, 'max_func_itr'):
-                    raise AttributeError('max_func_itr not given to the experimental design')
-
-                # Create a sample pool for rejection sampling
-                MCsize = 15000
-                X_MC = self.ExpDesign.generate_samples(MCsize, 'random')
-                candidates = self.ExpDesign.generate_samples(
-                    n_candidates, 'latin_hypercube')
-
-                # Split the candidates in groups for multiprocessing
-                split_cand = np.array_split(
-                    candidates, n_cand_groups, axis=0
-                    )
-               # print(candidates)
-               # print(split_cand)
-                if self.parallel:
-                    results = Parallel(n_jobs=-1, backend='multiprocessing')(
-                        delayed(self.run_util_func)(
-                            exploit_method, split_cand[i], i, sigma2, var, X_MC)
-                        for i in range(n_cand_groups)) 
-                else:
-                    results = []
-                    for i in range(n_cand_groups):
-                        results.append(self.run_util_func(exploit_method, split_cand[i], i, sigma2, var, X_MC))
-                        
-                # Retrieve the results and append them
-                U_J_d = np.concatenate([results[NofE][1] for NofE in
-                                        range(n_cand_groups)])
-
-                # Check if all scores are inf
-                if np.isinf(U_J_d).all() or np.isnan(U_J_d).all():
-                    U_J_d = np.ones(len(U_J_d))
-
-                # Get the expected value (mean) of the Utility score
-                # for each cell
-                if explore_method == 'Voronoi':
-                    U_J_d = np.mean(U_J_d.reshape(-1, n_candidates), axis=1)
-
-                # Normalize U_J_d
-                norm_U_J_d = U_J_d / np.sum(U_J_d)
-            else:
-                norm_U_J_d = np.zeros((len(scoreExploration)))
-
-            # ------- Calculate Total score -------
-            # ------- Trade off between EXPLORATION & EXPLOITATION -------
-            # Total score
-            totalScore = exploit_w * norm_U_J_d
-            totalScore += explore_w * scoreExploration
-
-            # temp: Plot
-            # dim = self.ExpDesign.X.shape[1]
-            # if dim == 2:
-            #     plotter(self.ExpDesign.X, allCandidates, explore_method)
-
-            # ------- Select the best candidate -------
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            temp = totalScore.copy()
-            temp[np.isnan(totalScore)] = -np.inf
-            sorted_idxtotalScore = np.argsort(temp)[::-1]
-            bestIdx = sorted_idxtotalScore[:n_new_samples]
-
-            # select the requested number of samples
-            if explore_method == 'Voronoi':
-                Xnew = np.zeros((n_new_samples, ndim))
-                for i, idx in enumerate(bestIdx):
-                    X_can = explore.closestPoints[idx]
-
-                    # Calculate the maxmin score for the region of interest
-                    newSamples, maxminScore = explore.get_mc_samples(X_can)
-
-                    # select the requested number of samples
-                    Xnew[i] = newSamples[np.argmax(maxminScore)]
-            else:
-                Xnew = allCandidates[sorted_idxtotalScore[:n_new_samples]]
-
-        elif exploit_method == 'VarOptDesign':
-            # ------- EXPLOITATION: VarOptDesign -------
-            UtilMethod = var
-
-            # ------- Calculate Exoploration weight -------
-            # Compute exploration weight based on trade off scheme
-            explore_w, exploit_w = self.tradeoff_weights(tradeoff_scheme,
-                                                        old_EDX,
-                                                        old_EDY)
-            print(f"\nweightExploration={explore_w:0.3f} "
-                  f"weightExploitation={exploit_w:0.3f}")
-
-            # Generate candidate samples from Exploration class
-            nMeasurement = old_EDY[OutputNames[0]].shape[1]
-            
-           # print(UtilMethod)
-            
-            # Find sensitive region
-            if UtilMethod == 'LOOCV':
-                LCerror = self.MetaModel.LCerror
-                allModifiedLOO = np.zeros((len(old_EDX), len(OutputNames),
-                                           nMeasurement))
-                for y_idx, y_key in enumerate(OutputNames):
-                    for idx, key in enumerate(LCerror[y_key].keys()):
-                        allModifiedLOO[:, y_idx, idx] = abs(
-                            LCerror[y_key][key])
-
-                ExploitScore = np.max(np.max(allModifiedLOO, axis=1), axis=1)
-               # print(allModifiedLOO.shape)
-
-            elif UtilMethod in ['EIGF', 'ALM']:
-                # ----- All other in  ['EIGF', 'ALM'] -----
-                # Initilize the ExploitScore array
-                ExploitScore = np.zeros((len(old_EDX), len(OutputNames)))
-
-                # Split the candidates in groups for multiprocessing
-                if explore_method != 'Voronoi':
-                    split_cand = np.array_split(allCandidates,
-                                                n_cand_groups,
-                                                axis=0)
-                    goodSampleIdx = range(n_cand_groups)
-                else:
-                    # Find indices of the Vornoi cells with samples
-                    goodSampleIdx = []
-                    for idx in range(len(explore.closest_points)):
-                        if len(explore.closest_points[idx]) != 0:
-                            goodSampleIdx.append(idx)
-                    split_cand = explore.closest_points
-
-                # Split the candidates in groups for multiprocessing
-                args = []
-                for index in goodSampleIdx:
-                    args.append((exploit_method, split_cand[index], index,
-                                 sigma2, var))
-
-                # Multiprocessing
-                pool = multiprocessing.Pool(multiprocessing.cpu_count())
-                # With Pool.starmap_async()
-                results = pool.starmap_async(self.run_util_func, args).get()
-
-                # Close the pool
-                pool.close()
-
-                # Retrieve the results and append them
-                if explore_method == 'Voronoi':
-                    ExploitScore = [np.mean(results[k][1]) for k in
-                                    range(len(goodSampleIdx))]
-                else:
-                    ExploitScore = np.concatenate(
-                        [results[k][1] for k in range(len(goodSampleIdx))])
-
-            else:
-                raise NameError('The requested utility function is not '
-                                'available.')
-
-            # print("ExploitScore:\n", ExploitScore)
-
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            # Total score
-            # Normalize U_J_d
-            ExploitScore = ExploitScore / np.sum(ExploitScore)
-            totalScore = exploit_w * ExploitScore
-           # print(totalScore.shape)
-           # print(explore_w)
-           # print(scoreExploration.shape)
-            totalScore += explore_w * scoreExploration
-
-            temp = totalScore.copy()
-            sorted_idxtotalScore = np.argsort(temp, axis=0)[::-1]
-            bestIdx = sorted_idxtotalScore[:n_new_samples]
-
-            Xnew = np.zeros((n_new_samples, ndim))
-            if explore_method != 'Voronoi':
-                Xnew = allCandidates[bestIdx]
-            else:
-                for i, idx in enumerate(bestIdx.flatten()):
-                    X_can = explore.closest_points[idx]
-                    # plotter(self.ExpDesign.X, X_can, explore_method,
-                    # scoreExploration=None)
-
-                    # Calculate the maxmin score for the region of interest
-                    newSamples, maxminScore = explore.get_mc_samples(X_can)
-
-                    # select the requested number of samples
-                    Xnew[i] = newSamples[np.argmax(maxminScore)]
-
-        elif exploit_method == 'alphabetic':
-            # ------- EXPLOITATION: ALPHABETIC -------
-            Xnew = self.util_AlphOptDesign(allCandidates, var)
-
-        elif exploit_method == 'Space-filling':
-            # ------- EXPLOITATION: SPACE-FILLING -------
-            totalScore = scoreExploration
-
-            # ------- Select the best candidate -------
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            temp = totalScore.copy()
-            temp[np.isnan(totalScore)] = -np.inf
-            sorted_idxtotalScore = np.argsort(temp)[::-1]
-
-            # select the requested number of samples
-            Xnew = allCandidates[sorted_idxtotalScore[:n_new_samples]]
-
-        else:
-            raise NameError('The requested design method is not available.')
-
-        print("\n")
-        print("\nRun No. {}:".format(old_EDX.shape[0]+1))
-        print("Xnew:\n", Xnew)
-
-        # TODO: why does it also return None?
-        return Xnew, None
-
-    # -------------------------------------------------------------------------
-    def util_AlphOptDesign(self, candidates, var='D-Opt'):
-        """
-        Enriches the Experimental design with the requested alphabetic
-        criterion based on exploring the space with number of sampling points.
-
-        Ref: Hadigol, M., & Doostan, A. (2018). Least squares polynomial chaos
-        expansion: A review of sampling strategies., Computer Methods in
-        Applied Mechanics and Engineering, 332, 382-407.
-
-        Arguments
-        ---------
-        NCandidate : int
-            Number of candidate points to be searched
-
-        var : string
-            Alphabetic optimality criterion
-
-        Returns
-        -------
-        X_new : array of shape (1, n_params)
-            The new sampling location in the input space.
-        """
-        MetaModelOrig = self # TODO: this doesn't fully seem correct?
-        n_new_samples = MetaModelOrig.ExpDesign.n_new_samples
-        NCandidate = candidates.shape[0]
-
-        # TODO: Loop over outputs
-        OutputName = self.out_names[0]
-
-        # To avoid changes ub original aPCE object
-        MetaModel = deepcopy(MetaModelOrig)
-
-        # Old Experimental design
-        oldExpDesignX = self.ExpDesign.X
-
-        # TODO: Only one psi can be selected.
-        # Suggestion: Go for the one with the highest LOO error
-        # TODO: this is just a patch, need to look at again!
-        Scores = list(self.MetaModel.score_dict['b_1'][OutputName].values())
-        #print(Scores)
-        #print(self.MetaModel.score_dict)
-        #print(self.MetaModel.score_dict.values())
-        #print(self.MetaModel.score_dict['b_1'].values())
-        #print(self.MetaModel.score_dict['b_1'][OutputName].values())
-        ModifiedLOO = [1-score for score in Scores]
-        outIdx = np.argmax(ModifiedLOO)
-
-        # Initialize Phi to save the criterion's values
-        Phi = np.zeros((NCandidate))
-
-        # TODO: also patched here
-        BasisIndices = self.MetaModel.basis_dict['b_1'][OutputName]["y_"+str(outIdx+1)]
-        P = len(BasisIndices)
-
-        # ------ Old Psi ------------
-        univ_p_val = self.MetaModel.univ_basis_vals(oldExpDesignX)
-        Psi = self.MetaModel.create_psi(BasisIndices, univ_p_val)
-
-        # ------ New candidates (Psi_c) ------------
-        # Assemble Psi_c
-        univ_p_val_c = self.MetaModel.univ_basis_vals(candidates)
-        Psi_c = self.MetaModel.create_psi(BasisIndices, univ_p_val_c)
-
-        for idx in range(NCandidate):
-
-            # Include the new row to the original Psi
-            Psi_cand = np.vstack((Psi, Psi_c[idx]))
-
-            # Information matrix
-            PsiTPsi = np.dot(Psi_cand.T, Psi_cand)
-            M = PsiTPsi / (len(oldExpDesignX)+1)
-
-            if np.linalg.cond(PsiTPsi) > 1e-12 \
-               and np.linalg.cond(PsiTPsi) < 1 / sys.float_info.epsilon:
-                # faster
-                invM = linalg.solve(M, sparse.eye(PsiTPsi.shape[0]).toarray())
-            else:
-                # stabler
-                invM = np.linalg.pinv(M)
-
-            # ---------- Calculate optimality criterion ----------
-            # Optimality criteria according to Section 4.5.1 in Ref.
-
-            # D-Opt
-            if var.lower() == 'd-opt':
-                Phi[idx] = (np.linalg.det(invM)) ** (1/P)
-
-            # A-Opt
-            elif var.lower() == 'a-opt':
-                Phi[idx] = np.trace(invM)
-
-            # K-Opt
-            elif var.lower() == 'k-opt':
-                Phi[idx] = np.linalg.cond(M)
-
-            else:
-               # print(var.lower())
-                raise Exception('The optimality criterion you requested has '
-                      'not been implemented yet!')
-
-        # find an optimal point subset to add to the initial design
-        # by minimization of the Phi
-        sorted_idxtotalScore = np.argsort(Phi)
-
-        # select the requested number of samples
-        Xnew = candidates[sorted_idxtotalScore[:n_new_samples]]
-
-        return Xnew
-
-    # -------------------------------------------------------------------------
-    def _normpdf(self, y_hat_pce, std_pce, obs_data, total_sigma2s,
-                  rmse=None):
-        """
-        Calculated gaussian likelihood for given y+std based on given obs+sigma
-        # TODO: is this understanding correct?
-        
-        Parameters
-        ----------
-        y_hat_pce : dict of 2d np arrays
-            Mean output of the surrogate.
-        std_pce : dict of 2d np arrays
-            Standard deviation output of the surrogate.
-        obs_data : dict of 1d np arrays
-            Observed data.
-        total_sigma2s : pandas dataframe, matches obs_data
-            Estimated uncertainty for the observed data.
-        rmse : dict, optional
-            RMSE values from validation of the surrogate. The default is None.
-
-        Returns
-        -------
-        likelihoods : dict of float
-            The likelihood for each surrogate eval in y_hat_pce compared to the
-            observations (?).
-
-        """
-
-        likelihoods = 1.0
-
-        # Loop over the outputs
-        for idx, out in enumerate(self.out_names):
-
-            # (Meta)Model Output
-           # print(y_hat_pce[out])
-            nsamples, nout = y_hat_pce[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout].values
-
-            # Surrogate error if valid dataset is given.
-            if rmse is not None:
-                tot_sigma2s += rmse[out]**2
-            else:
-                tot_sigma2s += np.mean(std_pce[out])**2
-
-            likelihoods *= stats.multivariate_normal.pdf(
-                y_hat_pce[out], data, np.diag(tot_sigma2s),
-                allow_singular=True)
-
-        # TODO: remove this here
-        self.Likelihoods = likelihoods
-
-        return likelihoods
-
-    # -------------------------------------------------------------------------
-    def _corr_factor_BME(self, obs_data, total_sigma2s, logBME):
-        """
-        Calculates the correction factor for BMEs.
-        """
-        MetaModel = self.MetaModel
-        samples = self.ExpDesign.X  # valid_samples
-        model_outputs = self.ExpDesign.Y  # valid_model_runs
-        n_samples = samples.shape[0]
-
-        # Extract the requested model outputs for likelihood calulation
-        output_names = self.out_names
-
-        # TODO: Evaluate MetaModel on the experimental design and ValidSet
-        OutputRS, stdOutputRS = MetaModel.eval_metamodel(samples=samples)
-
-        logLik_data = np.zeros((n_samples))
-        logLik_model = np.zeros((n_samples))
-        # Loop over the outputs
-        for idx, out in enumerate(output_names):
-
-            # (Meta)Model Output
-            nsamples, nout = model_outputs[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout]
-
-            # Covariance Matrix
-            covMatrix_data = np.diag(tot_sigma2s)
-
-            for i, sample in enumerate(samples):
-
-                # Simulation run
-                y_m = model_outputs[out][i]
-
-                # Surrogate prediction
-                y_m_hat = OutputRS[out][i]
-
-                # CovMatrix with the surrogate error
-                # covMatrix = np.diag(stdOutputRS[out][i]**2)
-                covMatrix = np.diag((y_m-y_m_hat)**2)
-                covMatrix = np.diag(
-                    np.mean((model_outputs[out]-OutputRS[out]), axis=0)**2
-                    )
-
-                # Compute likelilhood output vs data
-                logLik_data[i] += logpdf(
-                    y_m_hat, data, covMatrix_data
-                    )
-
-                # Compute likelilhood output vs surrogate
-                logLik_model[i] += logpdf(y_m_hat, y_m, covMatrix)
-
-        # Weight
-        logLik_data -= logBME
-        weights = np.exp(logLik_model+logLik_data)
-
-        return np.log(np.mean(weights))
-
-    # -------------------------------------------------------------------------
-    def _posteriorPlot(self, posterior, par_names, key):
-        """
-        Plot the posterior of a specific key as a corner plot
-
-        Parameters
-        ----------
-        posterior : 2d np.array
-            Samples of the posterior.
-        par_names : list of strings
-            List of the parameter names.
-        key : string
-            Output key that this posterior belongs to.
-
-        Returns
-        -------
-        figPosterior : corner.corner
-            Plot of the posterior.
-
-        """
-
-        # Initialization
-        newpath = (r'Outputs_SeqPosteriorComparison/posterior')
-        os.makedirs(newpath, exist_ok=True)
-
-        bound_tuples = self.ExpDesign.bound_tuples
-        n_params = len(par_names)
-        font_size = 40
-        if n_params == 2:
-
-            figPosterior, ax = plt.subplots(figsize=(15, 15))
-
-            sns.kdeplot(x=posterior[:, 0], y=posterior[:, 1],
-                        fill=True, ax=ax, cmap=plt.cm.jet,
-                        clip=bound_tuples)
-            # Axis labels
-            plt.xlabel(par_names[0], fontsize=font_size)
-            plt.ylabel(par_names[1], fontsize=font_size)
-
-            # Set axis limit
-            plt.xlim(bound_tuples[0])
-            plt.ylim(bound_tuples[1])
-
-            # Increase font size
-            plt.xticks(fontsize=font_size)
-            plt.yticks(fontsize=font_size)
-
-            # Switch off the grids
-            plt.grid(False)
-
-        else:
-            import corner
-            figPosterior = corner.corner(posterior, labels=par_names,
-                                         title_fmt='.2e', show_titles=True,
-                                         title_kwargs={"fontsize": 12})
-
-        figPosterior.savefig(f'./{newpath}/{key}.pdf', bbox_inches='tight')
-        plt.close()
-
-        # Save the posterior as .npy
-        np.save(f'./{newpath}/{key}.npy', posterior)
-
-        return figPosterior
-
-    
-    # -------------------------------------------------------------------------
-    def _BME_Calculator(self, obs_data, sigma2Dict, rmse=None):
-        """
-        This function computes the Bayesian model evidence (BME) via Monte
-        Carlo integration.
-
-        Parameters
-        ----------
-        obs_data : dict of 1d np arrays
-            Observed data.
-        sigma2Dict : pandas dataframe, matches obs_data
-            Estimated uncertainty for the observed data.
-        rmse : dict of floats, optional
-            RMSE values for each output-key. The dafault is None.
-
-        Returns
-        -------
-        (logBME, KLD, X_Posterior, Likelihoods, distHellinger)
-        
-        """
-        # Initializations
-        if hasattr(self, 'valid_likelihoods'):
-            valid_likelihoods = self.valid_likelihoods
-        else:
-            valid_likelihoods = []
-        valid_likelihoods = np.array(valid_likelihoods)
-
-        post_snapshot = self.ExpDesign.post_snapshot
-        if post_snapshot or valid_likelihoods.shape[0] != 0:
-            newpath = (r'Outputs_SeqPosteriorComparison/likelihood_vs_ref')
-            os.makedirs(newpath, exist_ok=True)
-
-        SamplingMethod = 'random'
-        MCsize = 10000
-        ESS = 0
-
-        # Estimation of the integral via Monte Varlo integration
-        while (ESS > MCsize) or (ESS < 1):
-
-            # Generate samples for Monte Carlo simulation
-            X_MC = self.ExpDesign.generate_samples(
-                MCsize, SamplingMethod
-                )
-
-            # Monte Carlo simulation for the candidate design
-            Y_MC, std_MC = self.MetaModel.eval_metamodel(samples=X_MC)
-
-            # Likelihood computation (Comparison of data and
-            # simulation results via PCE with candidate design)
-            Likelihoods = self._normpdf(
-                Y_MC, std_MC, obs_data, sigma2Dict, rmse
-                )
-
-            # Check the Effective Sample Size (1000<ESS<MCsize)
-            ESS = 1 / np.sum(np.square(Likelihoods/np.sum(Likelihoods)))
-
-            # Enlarge sample size if it doesn't fulfill the criteria
-            if (ESS > MCsize) or (ESS < 1):
-                print(f'ESS={ESS} MC size should be larger.')
-                MCsize *= 10
-                ESS = 0
-
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, MCsize)[0]
-
-        # Reject the poorly performed prior
-        accepted = (Likelihoods/np.max(Likelihoods)) >= unif
-        X_Posterior = X_MC[accepted]
-
-        # ------------------------------------------------------------
-        # --- Kullback-Leibler Divergence & Information Entropy ------
-        # ------------------------------------------------------------
-        # Prior-based estimation of BME
-        logBME = np.log(np.nanmean(Likelihoods))
-
-        # TODO: Correction factor
-        # log_weight = self.__corr_factor_BME(obs_data, sigma2Dict, logBME)
-
-        # Posterior-based expectation of likelihoods
-        postExpLikelihoods = np.mean(np.log(Likelihoods[accepted]))
-
-        # Posterior-based expectation of prior densities
-        postExpPrior = np.mean(
-            np.log(self.ExpDesign.JDist.pdf(X_Posterior.T))
-            )
-
-        # Calculate Kullback-Leibler Divergence
-        # KLD = np.mean(np.log(Likelihoods[Likelihoods!=0])- logBME)
-        KLD = postExpLikelihoods - logBME
-
-        # Information Entropy based on Entropy paper Eq. 38
-        infEntropy = logBME - postExpPrior - postExpLikelihoods
-
-        # If post_snapshot is True, plot likelihood vs refrence
-        if post_snapshot or valid_likelihoods:
-            # Hellinger distance
-            ref_like = np.log(valid_likelihoods[valid_likelihoods > 0])
-            est_like = np.log(Likelihoods[Likelihoods > 0])
-            distHellinger = hellinger_distance(ref_like, est_like)
-            
-            idx = len([name for name in os.listdir(newpath) if 'Likelihoods_'
-                       in name and os.path.isfile(os.path.join(newpath, name))])
-            
-            fig, ax = plt.subplots()
-            try:
-                sns.kdeplot(np.log(valid_likelihoods[valid_likelihoods > 0]),
-                            shade=True, color="g", label='Ref. Likelihood')
-                sns.kdeplot(np.log(Likelihoods[Likelihoods > 0]), shade=True,
-                            color="b", label='Likelihood with PCE')
-            except:
-                pass
-
-            text = f"Hellinger Dist.={distHellinger:.3f}\n logBME={logBME:.3f}"
-            "\n DKL={KLD:.3f}"
-
-            plt.text(0.05, 0.75, text, bbox=dict(facecolor='wheat',
-                                                 edgecolor='black',
-                                                 boxstyle='round,pad=1'),
-                     transform=ax.transAxes)
-
-            fig.savefig(f'./{newpath}/Likelihoods_{idx}.pdf',
-                        bbox_inches='tight')
-            plt.close()
-
-        else:
-            distHellinger = 0.0
-
-        # Bayesian inference with Emulator only for 2D problem
-        if post_snapshot and self.MetaModel.n_params == 2 and not idx % 5:
-            from bayesvalidrox.bayes_inference.bayes_inference import BayesInference
-            from bayesvalidrox.bayes_inference.discrepancy import Discrepancy
-            import pandas as pd
-            BayesOpts = BayesInference(self)
-            BayesOpts.emulator = True
-            BayesOpts.plot_post_pred = False
-
-            # Select the inference method
-            import emcee
-            BayesOpts.inference_method = "MCMC"
-            # Set the MCMC parameters passed to self.mcmc_params
-            BayesOpts.mcmc_params = {
-                'n_steps': 1e5,
-                'n_walkers': 30,
-                'moves': emcee.moves.KDEMove(),
-                'verbose': False
-                }
-
-            # ----- Define the discrepancy model -------
-            # TODO: check with Farid if this first line is how it should be
-            BayesOpts.measured_data = obs_data
-            obs_data = pd.DataFrame(obs_data, columns=self.out_names)
-            BayesOpts.measurement_error = obs_data
-            # TODO: shouldn't the uncertainty be sigma2Dict instead of obs_data?
-
-            # # -- (Option B) --
-            DiscrepancyOpts = Discrepancy('')
-            DiscrepancyOpts.type = 'Gaussian'
-            DiscrepancyOpts.parameters = obs_data**2
-            BayesOpts.Discrepancy = DiscrepancyOpts
-            # Start the calibration/inference
-            Bayes_PCE = BayesOpts.create_inference()
-            X_Posterior = Bayes_PCE.posterior_df.values
-
-        return (logBME, KLD, X_Posterior, Likelihoods, distHellinger)
-
-    # -------------------------------------------------------------------------
-    def _validError(self):
-        """
-        Evaluate the metamodel on the validation samples and calculate the
-        error against the corresponding model runs
-
-        Returns
-        -------
-        rms_error : dict
-            RMSE for each validation run.
-        valid_error : dict
-            Normed (?)RMSE for each validation run.
-
-        """
-        # Extract the original model with the generated samples
-        valid_model_runs = self.ExpDesign.valid_model_runs
-
-        # Run the PCE model with the generated samples
-        valid_PCE_runs, _ = self.MetaModel.eval_metamodel(samples=self.ExpDesign.valid_samples)
-
-        rms_error = {}
-        valid_error = {}
-        # Loop over the keys and compute RMSE error.
-        for key in self.out_names:
-            rms_error[key] = mean_squared_error(
-                valid_model_runs[key], valid_PCE_runs[key],
-                multioutput='raw_values',
-                sample_weight=None,
-                squared=False)
-            # Validation error
-            valid_error[key] = (rms_error[key]**2)
-            valid_error[key] /= np.var(valid_model_runs[key], ddof=1, axis=0)
-
-            # Print a report table
-            print("\n>>>>> Updated Errors of {} <<<<<".format(key))
-            print("\nIndex  |  RMSE   |  Validation Error")
-            print('-'*35)
-            print('\n'.join(f'{i+1}  |  {k:.3e}  |  {j:.3e}' for i, (k, j)
-                            in enumerate(zip(rms_error[key],
-                                             valid_error[key]))))
-
-        return rms_error, valid_error
-
-    # -------------------------------------------------------------------------
-    def _error_Mean_Std(self):
-        """
-        Calculates the error in the overall mean and std approximation of the
-        surrogate against the mc-reference provided to the model.
-        This can only be applied to metamodels of polynomial type
-
-        Returns
-        -------
-        RMSE_Mean : float
-            RMSE of the means 
-        RMSE_std : float
-            RMSE of the standard deviations
-
-        """
-        # Compute the mean and std based on the MetaModel
-        pce_means, pce_stds = self.MetaModel._compute_pce_moments()
-
-        # Compute the root mean squared error
-        for output in self.out_names:
-
-            # Compute the error between mean and std of MetaModel and OrigModel
-            RMSE_Mean = mean_squared_error(
-                self.Model.mc_reference['mean'], pce_means[output], squared=False
-                )
-            RMSE_std = mean_squared_error(
-                self.Model.mc_reference['std'], pce_stds[output], squared=False
-                )
-
-        return RMSE_Mean, RMSE_std
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/eval_rec_rule.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/eval_rec_rule.py
deleted file mode 100644
index b583c7eb2..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/eval_rec_rule.py	
+++ /dev/null
@@ -1,197 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-
-
-Based on the implementation in UQLab [1].
-
-References:
-1. S. Marelli, and B. Sudret, UQLab: A framework for uncertainty quantification
-in Matlab, Proc. 2nd Int. Conf. on Vulnerability, Risk Analysis and Management
-(ICVRAM2014), Liverpool, United Kingdom, 2014, 2554-2563.
-
-2. S. Marelli, N. Lüthen, B. Sudret, UQLab user manual – Polynomial chaos
-expansions, Report # UQLab-V1.4-104, Chair of Risk, Safety and Uncertainty
-Quantification, ETH Zurich, Switzerland, 2021.
-
-Author: Farid Mohammadi, M.Sc.
-E-Mail: farid.mohammadi@iws.uni-stuttgart.de
-Department of Hydromechanics and Modelling of Hydrosystems (LH2)
-Institute for Modelling Hydraulic and Environmental Systems (IWS), University
-of Stuttgart, www.iws.uni-stuttgart.de/lh2/
-Pfaffenwaldring 61
-70569 Stuttgart
-
-Created on Fri Jan 14 2022
-"""
-import numpy as np
-from numpy.polynomial.polynomial import polyval
-
-
-def poly_rec_coeffs(n_max, poly_type, params=None):
-    """
-    Computes the recurrence coefficients for classical Wiener-Askey orthogonal
-    polynomials.
-
-    Parameters
-    ----------
-    n_max : int
-        Maximum polynomial degree.
-    poly_type : string
-        Polynomial type.
-    params : list, optional
-        Parameters required for `laguerre` poly type. The default is None.
-
-    Returns
-    -------
-    AB : dict
-        The 3 term recursive coefficients and the applicable ranges.
-
-    """
-
-    if poly_type == 'legendre':
-
-        def an(n):
-            return np.zeros((n+1, 1))
-
-        def sqrt_bn(n):
-            sq_bn = np.zeros((n+1, 1))
-            sq_bn[0, 0] = 1
-            for i in range(1, n+1):
-                sq_bn[i, 0] = np.sqrt(1./(4-i**-2))
-            return sq_bn
-
-        bounds = [-1, 1]
-
-    elif poly_type == 'hermite':
-
-        def an(n):
-            return np.zeros((n+1, 1))
-
-        def sqrt_bn(n):
-            sq_bn = np.zeros((n+1, 1))
-            sq_bn[0, 0] = 1
-            for i in range(1, n+1):
-                sq_bn[i, 0] = np.sqrt(i)
-            return sq_bn
-
-        bounds = [-np.inf, np.inf]
-
-    elif poly_type == 'laguerre':
-
-        def an(n):
-            a = np.zeros((n+1, 1))
-            for i in range(1, n+1):
-                a[i] = 2*n + params[1]
-            return a
-
-        def sqrt_bn(n):
-            sq_bn = np.zeros((n+1, 1))
-            sq_bn[0, 0] = 1
-            for i in range(1, n+1):
-                sq_bn[i, 0] = -np.sqrt(i * (i+params[1]-1))
-            return sq_bn
-
-        bounds = [0, np.inf]
-
-    AB = {'alpha_beta': np.concatenate((an(n_max), sqrt_bn(n_max)), axis=1),
-          'bounds': bounds}
-
-    return AB
-
-
-def eval_rec_rule(x, max_deg, poly_type):
-    """
-    Evaluates the polynomial that corresponds to the Jacobi matrix defined
-    from the AB.
-
-    Parameters
-    ----------
-    x : array (n_samples)
-        Points where the polynomials are evaluated.
-    max_deg : int
-        Maximum degree.
-    poly_type : string
-        Polynomial type.
-
-    Returns
-    -------
-    values : array of shape (n_samples, max_deg+1)
-        Polynomials corresponding to the Jacobi matrix.
-
-    """
-    AB = poly_rec_coeffs(max_deg, poly_type)
-    AB = AB['alpha_beta']
-
-    values = np.zeros((len(x), AB.shape[0]+1))
-    values[:, 1] = 1 / AB[0, 1]
-
-    for k in range(AB.shape[0]-1):
-        values[:, k+2] = np.multiply((x - AB[k, 0]), values[:, k+1]) - \
-                         np.multiply(values[:, k], AB[k, 1])
-        values[:, k+2] = np.divide(values[:, k+2], AB[k+1, 1])
-    return values[:, 1:]
-
-
-def eval_rec_rule_arbitrary(x, max_deg, poly_coeffs):
-    """
-    Evaluates the polynomial at sample array x.
-
-    Parameters
-    ----------
-    x : array (n_samples)
-        Points where the polynomials are evaluated.
-    max_deg : int
-        Maximum degree.
-    poly_coeffs : dict
-        Polynomial coefficients computed based on moments.
-
-    Returns
-    -------
-    values : array of shape (n_samples, max_deg+1)
-        Univariate Polynomials evaluated at samples.
-
-    """
-    values = np.zeros((len(x), max_deg+1))
-
-    for deg in range(max_deg+1):
-        values[:, deg] = polyval(x, poly_coeffs[deg]).T
-
-    return values
-
-
-def eval_univ_basis(x, max_deg, poly_types, apoly_coeffs=None):
-    """
-    Evaluates univariate regressors along input directions.
-
-    Parameters
-    ----------
-    x : array of shape (n_samples, n_params)
-        Training samples.
-    max_deg : int
-        Maximum polynomial degree.
-    poly_types : list of strings
-        List of polynomial types for all parameters.
-    apoly_coeffs : dict , optional
-        Polynomial coefficients computed based on moments. The default is None.
-
-    Returns
-    -------
-    univ_vals : array of shape (n_samples, n_params, max_deg+1)
-        Univariate polynomials for all degrees and parameters evaluated at x.
-
-    """
-    # Initilize the output array
-    n_samples, n_params = x.shape
-    univ_vals = np.zeros((n_samples, n_params, max_deg+1))
-
-    for i in range(n_params):
-
-        if poly_types[i] == 'arbitrary':
-            polycoeffs = apoly_coeffs[f'p_{i+1}']
-            univ_vals[:, i] = eval_rec_rule_arbitrary(x[:, i], max_deg,
-                                                      polycoeffs)
-        else:
-            univ_vals[:, i] = eval_rec_rule(x[:, i], max_deg, poly_types[i])
-
-    return univ_vals
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/exp_designs.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/exp_designs.py
deleted file mode 100644
index 665ee4fc3..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/exp_designs.py	
+++ /dev/null
@@ -1,493 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import numpy as np
-import math
-import itertools
-import chaospy
-import scipy.stats as st
-from tqdm import tqdm
-import h5py
-import os
-
-from .apoly_construction import apoly_construction
-from .input_space import InputSpace
-
-# -------------------------------------------------------------------------
-def check_ranges(theta, ranges):
-    """
-    This function checks if theta lies in the given ranges.
-
-    Parameters
-    ----------
-    theta : array
-        Proposed parameter set.
-    ranges : nested list
-        List of the praremeter ranges.
-
-    Returns
-    -------
-    c : bool
-        If it lies in the given range, it return True else False.
-
-    """
-    c = True
-    # traverse in the list1
-    for i, bounds in enumerate(ranges):
-        x = theta[i]
-        # condition check
-        if x < bounds[0] or x > bounds[1]:
-            c = False
-            return c
-    return c
-
-
-class ExpDesigns(InputSpace):
-    """
-    This class generates samples from the prescribed marginals for the model
-    parameters using the `Input` object.
-
-    Attributes
-    ----------
-    Input : obj
-        Input object containing the parameter marginals, i.e. name,
-        distribution type and distribution parameters or available raw data.
-    meta_Model_type : str
-        Type of the meta_Model_type.
-    sampling_method : str
-        Name of the sampling method for the experimental design. The following
-        sampling method are supported:
-
-        * random
-        * latin_hypercube
-        * sobol
-        * halton
-        * hammersley
-        * chebyshev(FT)
-        * grid(FT)
-        * user
-    hdf5_file : str
-        Name of the hdf5 file that contains the experimental design.
-    n_new_samples : int
-        Number of (initial) training points.
-    n_max_samples : int
-        Number of maximum training points.
-    mod_LOO_threshold : float
-        The modified leave-one-out cross validation threshold where the
-        sequential design stops.
-    tradeoff_scheme : str
-        Trade-off scheme to assign weights to the exploration and exploitation
-        scores in the sequential design.
-    n_canddidate : int
-        Number of candidate training sets to calculate the scores for.
-    explore_method : str
-        Type of the exploration method for the sequential design. The following
-        methods are supported:
-
-        * Voronoi
-        * random
-        * latin_hypercube
-        * LOOCV
-        * dual annealing
-    exploit_method : str
-        Type of the exploitation method for the sequential design. The
-        following methods are supported:
-
-        * BayesOptDesign
-        * BayesActDesign
-        * VarOptDesign
-        * alphabetic
-        * Space-filling
-    util_func : str or list
-        The utility function to be specified for the `exploit_method`. For the
-        available utility functions see Note section.
-    n_cand_groups : int
-        Number of candidate groups. Each group of candidate training sets will
-        be evaulated separately in parallel.
-    n_replication : int
-        Number of replications. Only for comparison. The default is 1.
-    post_snapshot : int
-        Whether to plot the posterior in the sequential design. The default is
-        `True`.
-    step_snapshot : int
-        The number of steps to plot the posterior in the sequential design. The
-        default is 1.
-    max_a_post : list or array
-        Maximum a posteriori of the posterior distribution, if known. The
-        default is `[]`.
-    adapt_verbose : bool
-        Whether to plot the model response vs that of metamodel for the new
-        trining point in the sequential design.
-
-    Note
-    ----------
-    The following utiliy functions for the **exploitation** methods are
-    supported:
-
-    #### BayesOptDesign (when data is available)
-    - DKL (Kullback-Leibler Divergence)
-    - DPP (D-Posterior-percision)
-    - APP (A-Posterior-percision)
-
-    #### VarBasedOptDesign -> when data is not available
-    - Entropy (Entropy/MMSE/active learning)
-    - EIGF (Expected Improvement for Global fit)
-    - LOOCV (Leave-one-out Cross Validation)
-
-    #### alphabetic
-    - D-Opt (D-Optimality)
-    - A-Opt (A-Optimality)
-    - K-Opt (K-Optimality)
-    """
-
-    def __init__(self, Input, meta_Model_type='pce',
-                 sampling_method='random', hdf5_file=None,
-                 n_new_samples=1, n_max_samples=None, mod_LOO_threshold=1e-16,
-                 tradeoff_scheme=None, n_canddidate=1, explore_method='random',
-                 exploit_method='Space-filling', util_func='Space-filling',
-                 n_cand_groups=4, n_replication=1, post_snapshot=False,
-                 step_snapshot=1, max_a_post=[], adapt_verbose=False, max_func_itr=1):
-
-        self.InputObj = Input
-        self.meta_Model_type = meta_Model_type
-        self.sampling_method = sampling_method
-        self.hdf5_file = hdf5_file
-        self.n_new_samples = n_new_samples
-        self.n_max_samples = n_max_samples
-        self.mod_LOO_threshold = mod_LOO_threshold
-        self.explore_method = explore_method
-        self.exploit_method = exploit_method
-        self.util_func = util_func
-        self.tradeoff_scheme = tradeoff_scheme
-        self.n_canddidate = n_canddidate
-        self.n_cand_groups = n_cand_groups
-        self.n_replication = n_replication
-        self.post_snapshot = post_snapshot
-        self.step_snapshot = step_snapshot
-        self.max_a_post = max_a_post
-        self.adapt_verbose = adapt_verbose
-        self.max_func_itr = max_func_itr
-        
-        # Other 
-        self.apce = None
-        self.ndim = None
-        
-        # Init 
-        self.check_valid_inputs()
-        
-    # -------------------------------------------------------------------------
-    def generate_samples(self, n_samples, sampling_method='random',
-                         transform=False):
-        """
-        Generates samples with given sampling method
-
-        Parameters
-        ----------
-        n_samples : int
-            Number of requested samples.
-        sampling_method : str, optional
-            Sampling method. The default is `'random'`.
-        transform : bool, optional
-            Transformation via an isoprobabilistic transformation method. The
-            default is `False`.
-
-        Returns
-        -------
-        samples: array of shape (n_samples, n_params)
-            Generated samples from defined model input object.
-
-        """
-        try:
-            samples = chaospy.generate_samples(
-                int(n_samples), domain=self.origJDist, rule=sampling_method
-                )
-        except:
-            samples = self.random_sampler(int(n_samples)).T
-
-        return samples.T
-
-
-            
-    # -------------------------------------------------------------------------
-    def generate_ED(self, n_samples, transform=False,
-                    max_pce_deg=None):
-        """
-        Generates experimental designs (training set) with the given method.
-
-        Parameters
-        ----------
-        n_samples : int
-            Number of requested training points.
-        sampling_method : str, optional
-            Sampling method. The default is `'random'`.
-        transform : bool, optional
-            Isoprobabilistic transformation. The default is `False`.
-        max_pce_deg : int, optional
-            Maximum PCE polynomial degree. The default is `None`.
-            
-        Returns
-        -------
-        None
-
-        """
-        if n_samples <0:
-            raise ValueError('A negative number of samples cannot be created. Please provide positive n_samples')
-        n_samples = int(n_samples)
-        
-        if not hasattr(self, 'n_init_samples'):
-            self.n_init_samples = n_samples
-
-        # Generate the samples based on requested method
-        self.init_param_space(max_pce_deg)
-
-        sampling_method = self.sampling_method
-        # Pass user-defined samples as ED
-        if sampling_method == 'user':
-            if not hasattr(self, 'X'):
-                raise AttributeError('User-defined sampling cannot proceed as no samples provided. Please add them to this class as attribute X')
-            if not self.X.ndim == 2:
-                raise AttributeError('The provided samples shuld have 2 dimensions')
-            samples = self.X
-            self.n_samples = len(samples)
-
-        # Sample the distribution of parameters
-        elif self.input_data_given:
-            # Case II: Input values are directly given by the user.
-
-            if sampling_method == 'random':
-                samples = self.random_sampler(n_samples)
-
-            elif sampling_method == 'PCM' or \
-                    sampling_method == 'LSCM':
-                samples = self.pcm_sampler(n_samples, max_pce_deg)
-
-            else:
-                # Create ExpDesign in the actual space using chaospy
-                try:
-                    samples = chaospy.generate_samples(n_samples,
-                                                       domain=self.JDist,
-                                                       rule=sampling_method).T
-                except:
-                    samples = self.JDist.resample(n_samples).T
-
-        elif not self.input_data_given:
-            # Case I = User passed known distributions
-            samples = chaospy.generate_samples(n_samples, domain=self.JDist,
-                                               rule=sampling_method).T
-
-        # Transform samples to the original space
-        if transform:
-            self.init_param_space(max_pce_deg)
-            tr_samples = self.transform(
-                samples,
-                method=sampling_method
-                )
-            if sampling_method == 'user' or not self.apce:
-                self.X = samples
-                self.X_tr = tr_samples
-                #return samples, tr_samples
-            else:
-                self.X = tr_samples
-                self.X_tr = samples
-                #return tr_samples, samples  # TODO: why is this swapped here?
-        else:
-            self.X = samples
-            self.X_tr = None
-            
-    def read_from_file(self, out_names):
-        """
-        Reads in the ExpDesign from a provided h5py file and saves the results.
-
-        Parameters
-        ----------
-        out_names : list of strings
-            The keys that are in the outputs (y) saved in the provided file.
-
-        Returns
-        -------
-        None.
-
-        """
-        if self.hdf5_file == None:
-            raise AttributeError('ExpDesign cannot be read in, please provide hdf5 file first')
-
-        # Read hdf5 file
-        f = h5py.File(self.hdf5_file, 'r+')
-
-        # Read EDX and pass it to ExpDesign object
-        try:
-            self.X = np.array(f["EDX/New_init_"])
-        except KeyError:
-            self.X = np.array(f["EDX/init_"])
-
-        # Update number of initial samples
-        self.n_init_samples = self.X.shape[0]
-
-        # Read EDX and pass it to ExpDesign object
-        self.Y = {}
-
-        # Extract x values
-        try:
-            self.Y["x_values"] = dict()
-            for varIdx, var in enumerate(out_names):
-                x = np.array(f[f"x_values/{var}"])
-                self.Y["x_values"][var] = x
-        except KeyError:
-            self.Y["x_values"] = np.array(f["x_values"])
-
-        # Store the output
-        for varIdx, var in enumerate(out_names):
-            try:
-                y = np.array(f[f"EDY/{var}/New_init_"])
-            except KeyError:
-                y = np.array(f[f"EDY/{var}/init_"])
-            self.Y[var] = y
-        f.close()
-        print(f'Experimental Design is read in from file {self.hdf5_file}')
-        print('')
-        
-    
-
-    # -------------------------------------------------------------------------
-    def random_sampler(self, n_samples, max_deg = None):
-        """
-        Samples the given raw data randomly.
-
-        Parameters
-        ----------
-        n_samples : int
-            Number of requested samples.
-            
-        max_deg : int, optional
-            Maximum degree. The default is `None`.
-            This will be used to run init_param_space, if it has not been done
-            until now.
-
-        Returns
-        -------
-        samples: array of shape (n_samples, n_params)
-            The sampling locations in the input space.
-
-        """
-        if not hasattr(self, 'raw_data'):
-            self.init_param_space(max_deg)
-        else:
-            if np.array(self.raw_data).ndim !=2:
-                raise AttributeError('The given raw data for sampling should have two dimensions')
-        samples = np.zeros((n_samples, self.ndim))
-        sample_size = self.raw_data.shape[1]
-
-        # Use a combination of raw data
-        if n_samples < sample_size:
-            for pa_idx in range(self.ndim):
-                # draw random indices
-                rand_idx = np.random.randint(0, sample_size, n_samples)
-                # store the raw data with given random indices
-                samples[:, pa_idx] = self.raw_data[pa_idx, rand_idx]
-        else:
-            try:
-                samples = self.JDist.resample(int(n_samples)).T
-            except AttributeError:
-                samples = self.JDist.sample(int(n_samples)).T
-            # Check if all samples are in the bound_tuples
-            for idx, param_set in enumerate(samples):
-                if not check_ranges(param_set, self.bound_tuples):
-                    try:
-                        proposed_sample = chaospy.generate_samples(
-                            1, domain=self.JDist, rule='random').T[0]
-                    except:
-                        proposed_sample = self.JDist.resample(1).T[0]
-                    while not check_ranges(proposed_sample,
-                                                 self.bound_tuples):
-                        try:
-                            proposed_sample = chaospy.generate_samples(
-                                1, domain=self.JDist, rule='random').T[0]
-                        except:
-                            proposed_sample = self.JDist.resample(1).T[0]
-                    samples[idx] = proposed_sample
-
-        return samples
-
-    # -------------------------------------------------------------------------
-    def pcm_sampler(self, n_samples, max_deg):
-        """
-        Generates collocation points based on the root of the polynomial
-        degrees.
-
-        Parameters
-        ----------
-        n_samples : int
-            Number of requested samples.
-        max_deg : int
-            Maximum degree defined by user. Will also be used to run 
-            init_param_space if that has not been done beforehand.
-
-        Returns
-        -------
-        opt_col_points: array of shape (n_samples, n_params)
-            Collocation points.
-
-        """
-        
-        if not hasattr(self, 'raw_data'):
-            self.init_param_space(max_deg)
-
-        raw_data = self.raw_data
-
-        # Guess the closest degree to self.n_samples
-        def M_uptoMax(deg):
-            result = []
-            for d in range(1, deg+1):
-                result.append(math.factorial(self.ndim+d) //
-                              (math.factorial(self.ndim) * math.factorial(d)))
-            return np.array(result)
-        #print(M_uptoMax(max_deg))
-        #print(np.where(M_uptoMax(max_deg) > n_samples)[0])
-
-        guess_Deg = np.where(M_uptoMax(max_deg) > n_samples)[0][0]
-
-        c_points = np.zeros((guess_Deg+1, self.ndim))
-
-        def PolynomialPa(parIdx):
-            return apoly_construction(self.raw_data[parIdx], max_deg)
-
-        for i in range(self.ndim):
-            poly_coeffs = PolynomialPa(i)[guess_Deg+1][::-1]
-            c_points[:, i] = np.trim_zeros(np.roots(poly_coeffs))
-
-        #  Construction of optimal integration points
-        Prod = itertools.product(np.arange(1, guess_Deg+2), repeat=self.ndim)
-        sort_dig_unique_combos = np.array(list(filter(lambda x: x, Prod)))
-
-        # Ranking relatively mean
-        Temp = np.empty(shape=[0, guess_Deg+1])
-        for j in range(self.ndim):
-            s = abs(c_points[:, j]-np.mean(raw_data[j]))
-            Temp = np.append(Temp, [s], axis=0)
-        temp = Temp.T
-
-        index_CP = np.sort(temp, axis=0)
-        sort_cpoints = np.empty((0, guess_Deg+1))
-
-        for j in range(self.ndim):
-            #print(index_CP[:, j])
-            sort_cp = c_points[index_CP[:, j], j]
-            sort_cpoints = np.vstack((sort_cpoints, sort_cp))
-
-        # Mapping of Combination to Cpoint Combination
-        sort_unique_combos = np.empty(shape=[0, self.ndim])
-        for i in range(len(sort_dig_unique_combos)):
-            sort_un_comb = []
-            for j in range(self.ndim):
-                SortUC = sort_cpoints[j, sort_dig_unique_combos[i, j]-1]
-                sort_un_comb.append(SortUC)
-                sort_uni_comb = np.asarray(sort_un_comb)
-            sort_unique_combos = np.vstack((sort_unique_combos, sort_uni_comb))
-
-        # Output the collocation points
-        if self.sampling_method.lower() == 'lscm':
-            opt_col_points = sort_unique_combos
-        else:
-            opt_col_points = sort_unique_combos[0:self.n_samples]
-
-        return opt_col_points
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/exploration.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/exploration.py
deleted file mode 100644
index e18537207..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/exploration.py	
+++ /dev/null
@@ -1,364 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import numpy as np
-from scipy.spatial import distance
-
-
-class Exploration:
-    """
-    Created based on the Surrogate Modeling Toolbox (SUMO) [1].
-
-    [1] Gorissen, D., Couckuyt, I., Demeester, P., Dhaene, T. and Crombecq, K.,
-        2010. A surrogate modeling and adaptive sampling toolbox for computer
-        based design. Journal of machine learning research.-Cambridge, Mass.,
-        11, pp.2051-2055. sumo@sumo.intec.ugent.be - http://sumo.intec.ugent.be
-
-    Attributes
-    ----------
-    ExpDesign : obj
-        ExpDesign object.
-    n_candidate : int
-        Number of candidate samples.
-    mc_criterion : str
-        Selection crieterion. The default is `'mc-intersite-proj-th'`. Another
-        option is `'mc-intersite-proj'`.
-    w : int
-        Number of random points in the domain for each sample of the
-        training set.
-    """
-
-    def __init__(self, ExpDesign, n_candidate,
-                 mc_criterion='mc-intersite-proj-th'):
-        self.ExpDesign = ExpDesign
-        self.n_candidate = n_candidate
-        self.mc_criterion = mc_criterion
-        self.w = 100
-
-    def get_exploration_samples(self):
-        """
-        This function generates candidates to be selected as new design and
-        their associated exploration scores.
-
-        Returns
-        -------
-        all_candidates : array of shape (n_candidate, n_params)
-            A list of samples.
-        exploration_scores: arrays of shape (n_candidate)
-            Exploration scores.
-        """
-        explore_method = self.ExpDesign.explore_method
-
-        print("\n")
-        print(f' The {explore_method}-Method is selected as the exploration '
-              'method.')
-        print("\n")
-
-        if explore_method == 'Voronoi':
-            # Generate samples using the Voronoi method
-            all_candidates, exploration_scores = self.get_vornoi_samples()
-        else:
-            # Generate samples using the MC method
-            all_candidates, exploration_scores = self.get_mc_samples()
-
-        return all_candidates, exploration_scores
-
-    # -------------------------------------------------------------------------
-    def get_vornoi_samples(self):
-        """
-        This function generates samples based on voronoi cells and their
-        corresponding scores
-
-        Returns
-        -------
-        new_samples : array of shape (n_candidate, n_params)
-            A list of samples.
-        exploration_scores: arrays of shape (n_candidate)
-            Exploration scores.
-        """
-
-        mc_criterion = self.mc_criterion
-        n_candidate = self.n_candidate
-        # Get the Old ExpDesign #samples
-        old_ED_X = self.ExpDesign.X
-        ndim = old_ED_X.shape[1]
-
-        # calculate error #averageErrors
-        error_voronoi, all_candidates = self.approximate_voronoi(
-            self.w, old_ED_X
-            )
-
-        # Pick the best candidate point in the voronoi cell
-        # for each best sample
-        selected_samples = np.empty((0, ndim))
-        bad_samples = []
-
-        for index in range(len(error_voronoi)):
-
-            # get candidate new samples from voronoi tesselation
-            candidates = self.closest_points[index]
-
-            # get total number of candidates
-            n_new_samples = candidates.shape[0]
-
-            # still no candidate samples around this one, skip it!
-            if n_new_samples == 0:
-                print('The following sample has been skipped because there '
-                      'were no candidate samples around it...')
-                print(old_ED_X[index])
-                bad_samples.append(index)
-                continue
-
-            # find candidate that is farthest away from any existing sample
-            max_min_distance = 0
-            best_candidate = 0
-            min_intersite_dist = np.zeros((n_new_samples))
-            min_projected_dist = np.zeros((n_new_samples))
-
-            for j in range(n_new_samples):
-
-                new_samples = np.vstack((old_ED_X, selected_samples))
-
-                # find min distorted distance from all other samples
-                euclidean_dist = self._build_dist_matrix_point(
-                    new_samples, candidates[j], do_sqrt=True)
-                min_euclidean_dist = np.min(euclidean_dist)
-                min_intersite_dist[j] = min_euclidean_dist
-
-                # Check if this is the maximum minimum distance from all other
-                # samples
-                if min_euclidean_dist >= max_min_distance:
-                    max_min_distance = min_euclidean_dist
-                    best_candidate = j
-
-                # Projected distance
-                projected_dist = distance.cdist(
-                    new_samples, [candidates[j]], 'chebyshev')
-                min_projected_dist[j] = np.min(projected_dist)
-
-            if mc_criterion == 'mc-intersite-proj':
-                weight_euclidean_dist = 0.5 * ((n_new_samples+1)**(1/ndim) - 1)
-                weight_projected_dist = 0.5 * (n_new_samples+1)
-                total_dist_scores = weight_euclidean_dist * min_intersite_dist
-                total_dist_scores += weight_projected_dist * min_projected_dist
-
-            elif mc_criterion == 'mc-intersite-proj-th':
-                alpha = 0.5  # chosen (tradeoff)
-                d_min = 2 * alpha / n_new_samples
-                if any(min_projected_dist < d_min):
-                    candidates = np.delete(
-                        candidates, [min_projected_dist < d_min], axis=0
-                        )
-                    total_dist_scores = np.delete(
-                        min_intersite_dist, [min_projected_dist < d_min],
-                        axis=0
-                        )
-                else:
-                    total_dist_scores = min_intersite_dist
-            else:
-                raise NameError(
-                    'The MC-Criterion you requested is not available.'
-                    )
-
-            # Add the best candidate to the list of new samples
-            best_candidate = np.argsort(total_dist_scores)[::-1][:n_candidate]
-            selected_samples = np.vstack(
-                (selected_samples, candidates[best_candidate])
-                )
-
-        self.new_samples = selected_samples
-        self.exploration_scores = np.delete(error_voronoi, bad_samples, axis=0)
-
-        return self.new_samples, self.exploration_scores
-
-    # -------------------------------------------------------------------------
-    def get_mc_samples(self, all_candidates=None):
-        """
-        This function generates random samples based on Global Monte Carlo
-        methods and their corresponding scores, based on [1].
-
-        [1] Crombecq, K., Laermans, E. and Dhaene, T., 2011. Efficient
-            space-filling and non-collapsing sequential design strategies for
-            simulation-based modeling. European Journal of Operational Research
-            , 214(3), pp.683-696.
-            DOI: https://doi.org/10.1016/j.ejor.2011.05.032
-
-        Implemented methods to compute scores:
-            1) mc-intersite-proj
-            2) mc-intersite-proj-th
-
-        Arguments
-        ---------
-        all_candidates : array, optional
-            Samples to compute the scores for. The default is `None`. In this
-            case, samples will be generated by defined model input marginals.
-
-        Returns
-        -------
-        new_samples : array of shape (n_candidate, n_params)
-            A list of samples.
-        exploration_scores: arrays of shape (n_candidate)
-            Exploration scores.
-        """
-        explore_method = self.ExpDesign.explore_method
-        mc_criterion = self.mc_criterion
-        if all_candidates is None:
-            n_candidate = self.n_candidate
-        else:
-            n_candidate = all_candidates.shape[0]
-
-        # Get the Old ExpDesign #samples
-        old_ED_X = self.ExpDesign.X
-        ndim = old_ED_X.shape[1]
-
-        # ----- Compute the number of random points -----
-        if all_candidates is None:
-            # Generate MC Samples
-            all_candidates = self.ExpDesign.generate_samples(
-                self.n_candidate, explore_method
-                )
-        self.all_candidates = all_candidates
-
-        # initialization
-        min_intersite_dist = np.zeros((n_candidate))
-        min_projected_dist = np.zeros((n_candidate))
-
-        for i, candidate in enumerate(all_candidates):
-
-            # find candidate that is farthest away from any existing sample
-            maxMinDistance = 0
-
-            # find min distorted distance from all other samples
-            euclidean_dist = self._build_dist_matrix_point(
-                old_ED_X, candidate, do_sqrt=True
-                )
-            min_euclidean_dist = np.min(euclidean_dist)
-            min_intersite_dist[i] = min_euclidean_dist
-
-            # Check if this is the maximum minimum distance from all other
-            # samples
-            if min_euclidean_dist >= maxMinDistance:
-                maxMinDistance = min_euclidean_dist
-
-            # Projected distance
-            projected_dist = self._build_dist_matrix_point(
-                old_ED_X, candidate, 'chebyshev'
-                )
-            min_projected_dist[i] = np.min(projected_dist)
-
-        if mc_criterion == 'mc-intersite-proj':
-            weight_euclidean_dist = ((n_candidate+1)**(1/ndim) - 1) * 0.5
-            weight_projected_dist = (n_candidate+1) * 0.5
-            total_dist_scores = weight_euclidean_dist * min_intersite_dist
-            total_dist_scores += weight_projected_dist * min_projected_dist
-
-        elif mc_criterion == 'mc-intersite-proj-th':
-            alpha = 0.5  # chosen (tradeoff)
-            d_min = 2 * alpha / n_candidate
-            if any(min_projected_dist < d_min):
-                all_candidates = np.delete(
-                    all_candidates, [min_projected_dist < d_min], axis=0
-                    )
-                total_dist_scores = np.delete(
-                    min_intersite_dist, [min_projected_dist < d_min], axis=0
-                    )
-            else:
-                total_dist_scores = min_intersite_dist
-        else:
-            raise NameError('The MC-Criterion you requested is not available.')
-
-        self.new_samples = all_candidates
-        self.exploration_scores = total_dist_scores
-        self.exploration_scores /= np.nansum(total_dist_scores)
-
-        return self.new_samples, self.exploration_scores
-
-    # -------------------------------------------------------------------------
-    def approximate_voronoi(self, w, samples):
-        """
-        An approximate (monte carlo) version of Matlab's voronoi command.
-
-        Arguments
-        ---------
-        samples : array
-            Old experimental design to be used as center points for voronoi
-            cells.
-
-        Returns
-        -------
-        areas : array
-            An approximation of the voronoi cells' areas.
-        all_candidates: list of arrays
-            A list of samples in each voronoi cell.
-        """
-        n_samples = samples.shape[0]
-        ndim = samples.shape[1]
-
-        # Compute the number of random points
-        n_points = w * samples.shape[0]
-        # Generate w random points in the domain for each sample
-        points = self.ExpDesign.generate_samples(n_points, 'random')
-        self.all_candidates = points
-
-        # Calculate the nearest sample to each point
-        self.areas = np.zeros((n_samples))
-        self.closest_points = [np.empty((0, ndim)) for i in range(n_samples)]
-
-        # Compute the minimum distance from all the samples of old_ED_X for
-        # each test point
-        for idx in range(n_points):
-            # calculate the minimum distance
-            distances = self._build_dist_matrix_point(
-                samples, points[idx], do_sqrt=True
-                )
-            closest_sample = np.argmin(distances)
-
-            # Add to the voronoi list of the closest sample
-            self.areas[closest_sample] = self.areas[closest_sample] + 1
-            prev_closest_points = self.closest_points[closest_sample]
-            self.closest_points[closest_sample] = np.vstack(
-                (prev_closest_points, points[idx])
-                )
-
-        # Divide by the amount of points to get the estimated volume of each
-        # voronoi cell
-        self.areas /= n_points
-
-        self.perc = np.max(self.areas * 100)
-
-        self.errors = self.areas
-
-        return self.areas, self.all_candidates
-
-    # -------------------------------------------------------------------------
-    def _build_dist_matrix_point(self, samples, point, method='euclidean',
-                                 do_sqrt=False):
-        """
-        Calculates the intersite distance of all points in samples from point.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params)
-            The old experimental design.
-        point : array
-            A candidate point.
-        method : str
-            Distance method.
-        do_sqrt : bool, optional
-            Whether to return distances or squared distances. The default is
-            `False`.
-
-        Returns
-        -------
-        distances : array
-            Distances.
-
-        """
-        distances = distance.cdist(samples, np.array([point]), method)
-
-        # do square root?
-        if do_sqrt:
-            return distances
-        else:
-            return distances**2
-
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/glexindex.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/glexindex.py
deleted file mode 100644
index 90877331e..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/glexindex.py	
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Multi indices for monomial exponents.
-Credit: Jonathan Feinberg
-https://github.com/jonathf/numpoly/blob/master/numpoly/utils/glexindex.py
-"""
-
-import numpy
-import numpy.typing
-
-
-def glexindex(start, stop=None, dimensions=1, cross_truncation=1.,
-              graded=False, reverse=False):
-    """
-    Generate graded lexicographical multi-indices for the monomial exponents.
-    Args:
-        start (Union[int, numpy.ndarray]):
-            The lower order of the indices. If array of int, counts as lower
-            bound for each axis.
-        stop (Union[int, numpy.ndarray, None]):
-            The maximum shape included. If omitted: stop <- start; start <- 0
-            If int is provided, set as largest total order. If array of int,
-            set as upper bound for each axis.
-        dimensions (int):
-            The number of dimensions in the expansion.
-        cross_truncation (float, Tuple[float, float]):
-            Use hyperbolic cross truncation scheme to reduce the number of
-            terms in expansion. If two values are provided, first is low bound
-            truncation, while the latter upper bound. If only one value, upper
-            bound is assumed.
-        graded (bool):
-            Graded sorting, meaning the indices are always sorted by the index
-            sum. E.g. ``(2, 2, 2)`` has a sum of 6, and will therefore be
-            consider larger than both ``(3, 1, 1)`` and ``(1, 1, 3)``.
-        reverse (bool):
-            Reversed lexicographical sorting meaning that ``(1, 3)`` is
-            considered smaller than ``(3, 1)``, instead of the opposite.
-    Returns:
-        list:
-            Order list of indices.
-    Examples:
-        >>> numpoly.glexindex(4).tolist()
-        [[0], [1], [2], [3]]
-        >>> numpoly.glexindex(2, dimensions=2).tolist()
-        [[0, 0], [1, 0], [0, 1]]
-        >>> numpoly.glexindex(start=2, stop=3, dimensions=2).tolist()
-        [[2, 0], [1, 1], [0, 2]]
-        >>> numpoly.glexindex([1, 2, 3]).tolist()
-        [[0, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 2]]
-        >>> numpoly.glexindex([1, 2, 3], cross_truncation=numpy.inf).tolist()
-        [[0, 0, 0], [0, 1, 0], [0, 0, 1], [0, 1, 1], [0, 0, 2], [0, 1, 2]]
-    """
-    if stop is None:
-        start, stop = 0, start
-    start = numpy.array(start, dtype=int).flatten()
-    stop = numpy.array(stop, dtype=int).flatten()
-    start, stop, _ = numpy.broadcast_arrays(start, stop, numpy.empty(dimensions))
-
-    cross_truncation = cross_truncation*numpy.ones(2)
-    
-    # Moved here from _glexindex
-    bound = stop.max()
-    dimensions = len(start)
-    start = numpy.clip(start, a_min=0, a_max=None)
-    dtype = numpy.uint8 if bound < 256 else numpy.uint16
-    range_ = numpy.arange(bound, dtype=dtype)
-    indices = range_[:, numpy.newaxis]
-
-    for idx in range(dimensions-1):
-
-        # Truncate at each step to keep memory usage low
-        if idx:
-            indices = indices[cross_truncate(indices, bound-1, cross_truncation[1])]
-
-        # Repeats the current set of indices.
-        # e.g. [0,1,2] -> [0,1,2,0,1,2,...,0,1,2]
-        indices = numpy.tile(indices, (bound, 1))
-
-        # Stretches ranges over the new dimension.
-        # e.g. [0,1,2] -> [0,0,...,0,1,1,...,1,2,2,...,2]
-        front = range_.repeat(len(indices)//bound)[:, numpy.newaxis]
-
-        # Puts them two together.
-        indices = numpy.column_stack((front, indices))
-
-    # Complete the truncation scheme
-    if dimensions == 1:
-        indices = indices[(indices >= start) & (indices < bound)]
-    else:
-        lower = cross_truncate(indices, start-1, cross_truncation[0])
-        upper = cross_truncate(indices, stop-1, cross_truncation[1])
-        indices = indices[lower ^ upper]
-
-    indices = numpy.array(indices, dtype=int).reshape(-1, dimensions)
-    if indices.size:
-        # moved here from glexsort
-        keys = indices.T
-        keys_ = numpy.atleast_2d(keys)
-        if reverse:
-            keys_ = keys_[::-1]
-    
-        indices_sort = numpy.array(numpy.lexsort(keys_))
-        if graded:
-            indices_sort = indices_sort[numpy.argsort(
-                numpy.sum(keys_[:, indices_sort], axis=0))].T
-        
-        indices = indices[indices_sort]
-    return indices
-
-def cross_truncate(indices, bound, norm):
-    r"""
-    Truncate of indices using L_p norm.
-    .. math:
-        L_p(x) = \sum_i |x_i/b_i|^p ^{1/p} \leq 1
-    where :math:`b_i` are bounds that each :math:`x_i` should follow.
-    Args:
-        indices (Sequence[int]):
-            Indices to be truncated.
-        bound (int, Sequence[int]):
-            The bound function for witch the indices can not be larger than.
-        norm (float, Sequence[float]):
-            The `p` in the `L_p`-norm. Support includes both `L_0` and `L_inf`.
-    Returns:
-        Boolean indices to ``indices`` with True for each index where the
-        truncation criteria holds.
-    Examples:
-        >>> indices = numpy.array(numpy.mgrid[:10, :10]).reshape(2, -1).T
-        >>> indices[cross_truncate(indices, 2, norm=0)].T
-        array([[0, 0, 0, 1, 2],
-               [0, 1, 2, 0, 0]])
-        >>> indices[cross_truncate(indices, 2, norm=1)].T
-        array([[0, 0, 0, 1, 1, 2],
-               [0, 1, 2, 0, 1, 0]])
-        >>> indices[cross_truncate(indices, [0, 1], norm=1)].T
-        array([[0, 0],
-               [0, 1]])
-    """
-    assert norm >= 0, "negative L_p norm not allowed"
-    bound = numpy.asfarray(bound).flatten()*numpy.ones(indices.shape[1])
-
-    if numpy.any(bound < 0):
-        return numpy.zeros((len(indices),), dtype=bool)
-
-    if numpy.any(bound == 0):
-        out = numpy.all(indices[:, bound == 0] == 0, axis=-1)
-        if numpy.any(bound):
-            out &= cross_truncate(indices[:, bound != 0], bound[bound != 0], norm=norm)
-        return out
-
-    if norm == 0:
-        out = numpy.sum(indices > 0, axis=-1) <= 1
-        out[numpy.any(indices > bound, axis=-1)] = False
-    elif norm == numpy.inf:
-        out = numpy.max(indices/bound, axis=-1) <= 1
-    else:
-        out = numpy.sum((indices/bound)**norm, axis=-1)**(1./norm) <= 1
-
-    assert numpy.all(out[numpy.all(indices == 0, axis=-1)])
-
-    return out
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/input_space.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/input_space.py
deleted file mode 100644
index 3160ba2d0..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/input_space.py	
+++ /dev/null
@@ -1,395 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import numpy as np
-import chaospy
-import scipy.stats as st
-
-
-class InputSpace:
-    """
-    This class generates the input space for the metamodel from the
-    distributions provided using the `Input` object.
-
-    Attributes
-    ----------
-    Input : obj
-        Input object containing the parameter marginals, i.e. name,
-        distribution type and distribution parameters or available raw data.
-    meta_Model_type : str
-        Type of the meta_Model_type.
-
-    """
-
-    def __init__(self, Input, meta_Model_type='pce'):
-        self.InputObj = Input
-        self.meta_Model_type = meta_Model_type
-        
-        # Other 
-        self.apce = None
-        self.ndim = None
-        
-        # Init 
-        self.check_valid_inputs()
-        
-        
-    def check_valid_inputs(self)-> None:
-        """
-        Check if the given InputObj is valid to use for further calculations:
-            Has some Marginals
-            Marginals have valid priors
-            All Marginals given as the same type (samples vs dist)
-
-        Returns
-        -------
-        None
-
-        """
-        Inputs = self.InputObj
-        self.ndim = len(Inputs.Marginals)
-        
-        # Check if PCE or aPCE metamodel is selected.
-        # TODO: test also for 'pce'??
-        if self.meta_Model_type.lower() == 'apce':
-            self.apce = True
-        else:
-            self.apce = False
-
-        # check if marginals given 
-        if not self.ndim >=1:
-            raise AssertionError('Cannot build distributions if no marginals are given')
-            
-        # check that each marginal is valid
-        for marginals in Inputs.Marginals:
-            if len(marginals.input_data) == 0:
-                if marginals.dist_type == None:
-                    raise AssertionError('Not all marginals were provided priors')
-                    break
-            if np.array(marginals.input_data).shape[0] and (marginals.dist_type != None):
-                raise AssertionError('Both samples and distribution type are given. Please choose only one.')
-                break
-                
-        # Check if input is given as dist or input_data.
-        self.input_data_given = -1
-        for marg in Inputs.Marginals:
-            #print(self.input_data_given)
-            size = np.array(marg.input_data).shape[0]
-            #print(f'Size: {size}')
-            if size and abs(self.input_data_given) !=1:
-                self.input_data_given = 2
-                break
-            if (not size) and self.input_data_given > 0:
-                self.input_data_given = 2
-                break
-            if not size:
-                self.input_data_given = 0
-            if size:
-                self.input_data_given = 1
-                
-        if self.input_data_given == 2:
-            raise AssertionError('Distributions cannot be built as the priors have different types')
-            
-    
-        # Get the bounds if input_data are directly defined by user:
-        if self.input_data_given:
-            for i in range(self.ndim):
-                low_bound = np.min(Inputs.Marginals[i].input_data)
-                up_bound = np.max(Inputs.Marginals[i].input_data)
-                Inputs.Marginals[i].parameters = [low_bound, up_bound]
-
-  
-
-    # -------------------------------------------------------------------------
-    def init_param_space(self, max_deg=None):
-        """
-        Initializes parameter space.
-
-        Parameters
-        ----------
-        max_deg : int, optional
-            Maximum degree. The default is `None`.
-
-        Creates
-        -------
-        raw_data : array of shape (n_params, n_samples)
-            Raw data.
-        bound_tuples : list of tuples
-            A list containing lower and upper bounds of parameters.
-
-        """
-        # Recheck all before running!
-        self.check_valid_inputs()
-        
-        Inputs = self.InputObj
-        ndim = self.ndim
-        rosenblatt_flag = Inputs.Rosenblatt
-        mc_size = 50000
-
-        # Save parameter names
-        self.par_names = []
-        for parIdx in range(ndim):
-            self.par_names.append(Inputs.Marginals[parIdx].name)
-
-        # Create a multivariate probability distribution
-        # TODO: change this to make max_deg obligatory? at least in some specific cases?
-        if max_deg is not None:
-            JDist, poly_types = self.build_polytypes(rosenblatt=rosenblatt_flag)
-            self.JDist, self.poly_types = JDist, poly_types
-
-        if self.input_data_given:
-            self.MCSize = len(Inputs.Marginals[0].input_data)
-            self.raw_data = np.zeros((ndim, self.MCSize))
-
-            for parIdx in range(ndim):
-                # Save parameter names
-                try:
-                    self.raw_data[parIdx] = np.array(
-                        Inputs.Marginals[parIdx].input_data)
-                except:
-                    self.raw_data[parIdx] = self.JDist[parIdx].sample(mc_size)
-
-        else:
-            # Generate random samples based on parameter distributions
-            self.raw_data = chaospy.generate_samples(mc_size,
-                                                     domain=self.JDist)
-
-        # Extract moments
-        for parIdx in range(ndim):
-            mu = np.mean(self.raw_data[parIdx])
-            std = np.std(self.raw_data[parIdx])
-            self.InputObj.Marginals[parIdx].moments = [mu, std]
-
-        # Generate the bounds based on given inputs for marginals
-        bound_tuples = []
-        for i in range(ndim):
-            if Inputs.Marginals[i].dist_type == 'unif':
-                low_bound = Inputs.Marginals[i].parameters[0]
-                up_bound = Inputs.Marginals[i].parameters[1]
-            else:
-                low_bound = np.min(self.raw_data[i])
-                up_bound = np.max(self.raw_data[i])
-
-            bound_tuples.append((low_bound, up_bound))
-
-        self.bound_tuples = tuple(bound_tuples)
-
-    # -------------------------------------------------------------------------
-    def build_polytypes(self, rosenblatt):
-        """
-        Creates the polynomial types to be passed to univ_basis_vals method of
-        the MetaModel object.
-
-        Parameters
-        ----------
-        rosenblatt : bool
-            Rosenblatt transformation flag.
-
-        Returns
-        -------
-        orig_space_dist : object
-            A chaospy JDist object or a gaussian_kde object.
-        poly_types : list
-            List of polynomial types for the parameters.
-
-        """
-        Inputs = self.InputObj
-        
-        all_data = []
-        all_dist_types = []
-        orig_joints = []
-        poly_types = []
-        
-        for parIdx in range(self.ndim):
-
-            if Inputs.Marginals[parIdx].dist_type is None:
-                data = Inputs.Marginals[parIdx].input_data
-                all_data.append(data)
-                dist_type = None
-            else:
-                dist_type = Inputs.Marginals[parIdx].dist_type
-                params = Inputs.Marginals[parIdx].parameters
-
-            if rosenblatt:
-                polytype = 'hermite'
-                dist = chaospy.Normal()
-
-            elif dist_type is None:
-                polytype = 'arbitrary'
-                dist = None
-
-            elif 'unif' in dist_type.lower():
-                polytype = 'legendre'
-                if not np.array(params).shape[0]>=2:
-                    raise AssertionError('Distribution has too few parameters!')
-                dist = chaospy.Uniform(lower=params[0], upper=params[1])
-
-            elif 'norm' in dist_type.lower() and \
-                 'log' not in dist_type.lower():
-                if not np.array(params).shape[0]>=2:
-                    raise AssertionError('Distribution has too few parameters!')
-                polytype = 'hermite'
-                dist = chaospy.Normal(mu=params[0], sigma=params[1])
-
-            elif 'gamma' in dist_type.lower():
-                polytype = 'laguerre'
-                if not np.array(params).shape[0]>=3:
-                    raise AssertionError('Distribution has too few parameters!')
-                dist = chaospy.Gamma(shape=params[0],
-                                     scale=params[1],
-                                     shift=params[2])
-
-            elif 'beta' in dist_type.lower():
-                if not np.array(params).shape[0]>=4:
-                    raise AssertionError('Distribution has too few parameters!')
-                polytype = 'jacobi'
-                dist = chaospy.Beta(alpha=params[0], beta=params[1],
-                                    lower=params[2], upper=params[3])
-
-            elif 'lognorm' in dist_type.lower():
-                polytype = 'hermite'
-                if not np.array(params).shape[0]>=2:
-                    raise AssertionError('Distribution has too few parameters!')
-                mu = np.log(params[0]**2/np.sqrt(params[0]**2 + params[1]**2))
-                sigma = np.sqrt(np.log(1 + params[1]**2 / params[0]**2))
-                dist = chaospy.LogNormal(mu, sigma)
-                # dist = chaospy.LogNormal(mu=params[0], sigma=params[1])
-
-            elif 'expon' in dist_type.lower():
-                polytype = 'exponential'
-                if not np.array(params).shape[0]>=2:
-                    raise AssertionError('Distribution has too few parameters!')
-                dist = chaospy.Exponential(scale=params[0], shift=params[1])
-
-            elif 'weibull' in dist_type.lower():
-                polytype = 'weibull'
-                if not np.array(params).shape[0]>=3:
-                    raise AssertionError('Distribution has too few parameters!')
-                dist = chaospy.Weibull(shape=params[0], scale=params[1],
-                                       shift=params[2])
-
-            else:
-                message = (f"DistType {dist_type} for parameter"
-                           f"{parIdx+1} is not available.")
-                raise ValueError(message)
-
-            if self.input_data_given or self.apce:
-                polytype = 'arbitrary'
-
-            # Store dists and poly_types
-            orig_joints.append(dist)
-            poly_types.append(polytype)
-            all_dist_types.append(dist_type)
-
-        # Prepare final output to return
-        if None in all_dist_types:
-            # Naive approach: Fit a gaussian kernel to the provided data
-            Data = np.asarray(all_data)
-            try:
-                orig_space_dist = st.gaussian_kde(Data)
-            except:
-                raise ValueError('The samples provided to the Marginals should be 1D only')
-            self.prior_space = orig_space_dist
-        else:
-            orig_space_dist = chaospy.J(*orig_joints)
-            try:
-                self.prior_space = st.gaussian_kde(orig_space_dist.sample(10000))
-            except:
-                raise ValueError('Parameter values are not valid, please set differently')
-
-        return orig_space_dist, poly_types
-
-    # -------------------------------------------------------------------------
-    def transform(self, X, params=None, method=None):
-        """
-        Transforms the samples via either a Rosenblatt or an isoprobabilistic
-        transformation.
-
-        Parameters
-        ----------
-        X : array of shape (n_samples,n_params)
-            Samples to be transformed.
-        method : string
-            If transformation method is 'user' transform X, else just pass X.
-
-        Returns
-        -------
-        tr_X: array of shape (n_samples,n_params)
-            Transformed samples.
-
-        """
-        # Check for built JDist
-        if not hasattr(self, 'JDist'):
-            raise AttributeError('Call function init_param_space first to create JDist')
-            
-        # Check if X is 2d
-        if X.ndim != 2:
-            raise AttributeError('X should have two dimensions')
-            
-        # Check if size of X matches Marginals
-        if X.shape[1]!= self.ndim:
-            raise AttributeError('The second dimension of X should be the same size as the number of marginals in the InputObj')
-        
-        if self.InputObj.Rosenblatt:
-            self.origJDist, _ = self.build_polytypes(False)
-            if method == 'user':
-                tr_X = self.JDist.inv(self.origJDist.fwd(X.T)).T
-            else:
-                # Inverse to original spcace -- generate sample ED
-                tr_X = self.origJDist.inv(self.JDist.fwd(X.T)).T
-        else:
-            # Transform samples via an isoprobabilistic transformation
-            n_samples, n_params = X.shape
-            Inputs = self.InputObj
-            origJDist = self.JDist
-            poly_types = self.poly_types
-
-            disttypes = []
-            for par_i in range(n_params):
-                disttypes.append(Inputs.Marginals[par_i].dist_type)
-
-            # Pass non-transformed X, if arbitrary PCE is selected.
-            if None in disttypes or self.input_data_given or self.apce:
-                return X
-
-            cdfx = np.zeros((X.shape))
-            tr_X = np.zeros((X.shape))
-
-            for par_i in range(n_params):
-
-                # Extract the parameters of the original space
-                disttype = disttypes[par_i]
-                if disttype is not None:
-                    dist = origJDist[par_i]
-                else:
-                    dist = None
-                polytype = poly_types[par_i]
-                cdf = np.vectorize(lambda x: dist.cdf(x))
-
-                # Extract the parameters of the transformation space based on
-                # polyType
-                if polytype == 'legendre' or disttype == 'uniform':
-                    # Generate Y_Dists based
-                    params_Y = [-1, 1]
-                    dist_Y = st.uniform(loc=params_Y[0],
-                                        scale=params_Y[1]-params_Y[0])
-                    inv_cdf = np.vectorize(lambda x: dist_Y.ppf(x))
-
-                elif polytype == 'hermite' or disttype == 'norm':
-                    params_Y = [0, 1]
-                    dist_Y = st.norm(loc=params_Y[0], scale=params_Y[1])
-                    inv_cdf = np.vectorize(lambda x: dist_Y.ppf(x))
-
-                elif polytype == 'laguerre' or disttype == 'gamma':
-                    if params == None:
-                        raise AttributeError('Additional parameters have to be set for the gamma distribution!')
-                    params_Y = [1, params[1]]
-                    dist_Y = st.gamma(loc=params_Y[0], scale=params_Y[1])
-                    inv_cdf = np.vectorize(lambda x: dist_Y.ppf(x))
-
-                # Compute CDF_x(X)
-                cdfx[:, par_i] = cdf(X[:, par_i])
-
-                # Compute invCDF_y(cdfx)
-                tr_X[:, par_i] = inv_cdf(cdfx[:, par_i])
-
-        return tr_X
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/inputs.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/inputs.py
deleted file mode 100644
index 783e82b05..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/inputs.py	
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-class Input:
-    """
-    A class to define the uncertain input parameters.
-
-    Attributes
-    ----------
-    Marginals : obj
-        Marginal objects. See `inputs.Marginal`.
-    Rosenblatt : bool
-        If Rossenblatt transformation is required for the dependent input
-        parameters.
-
-    Examples
-    -------
-    Marginals can be defined as following:
-
-    >>> Inputs.add_marginals()
-    >>> Inputs.Marginals[0].name = 'X_1'
-    >>> Inputs.Marginals[0].dist_type = 'uniform'
-    >>> Inputs.Marginals[0].parameters = [-5, 5]
-
-    If there is no common data is avaliable, the input data can be given
-    as following:
-
-    >>> Inputs.add_marginals()
-    >>> Inputs.Marginals[0].name = 'X_1'
-    >>> Inputs.Marginals[0].input_data = input_data
-    """
-    poly_coeffs_flag = True
-
-    def __init__(self):
-        self.Marginals = []
-        self.Rosenblatt = False
-
-    def add_marginals(self):
-        """
-        Adds a new Marginal object to the input object.
-
-        Returns
-        -------
-        None.
-
-        """
-        self.Marginals.append(Marginal())
-
-
-# Nested class
-class Marginal:
-    """
-    An object containing the specifications of the marginals for each uncertain
-    parameter.
-
-    Attributes
-    ----------
-    name : string
-        Name of the parameter. The default is `'$x_1$'`.
-    dist_type : string
-        Name of the distribution. The default is `None`.
-    parameters : list
-        List of the parameters corresponding to the distribution type. The
-        default is `None`.
-    input_data : array
-        Available input data. The default is `[]`.
-    moments : list
-        List of the moments.
-    """
-
-    def __init__(self):
-        self.name = '$x_1$'
-        self.dist_type = None
-        self.parameters = None
-        self.input_data = []
-        self.moments = None
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/orthogonal_matching_pursuit.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/orthogonal_matching_pursuit.py
deleted file mode 100644
index 96ef9c1d5..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/orthogonal_matching_pursuit.py	
+++ /dev/null
@@ -1,366 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Created on Fri Jul 15 14:08:59 2022
-
-@author: farid
-"""
-import numpy as np
-from sklearn.base import RegressorMixin
-from sklearn.linear_model._base import LinearModel
-from sklearn.utils import check_X_y
-
-
-def corr(x, y):
-    return abs(x.dot(y))/np.sqrt((x**2).sum())
-
-
-class OrthogonalMatchingPursuit(LinearModel, RegressorMixin):
-    '''
-    Regression with Orthogonal Matching Pursuit [1].
-
-    Parameters
-    ----------
-    fit_intercept : boolean, optional (DEFAULT = True)
-        whether to calculate the intercept for this model. If set
-        to false, no intercept will be used in calculations
-        (e.g. data is expected to be already centered).
-
-    copy_X : boolean, optional (DEFAULT = True)
-        If True, X will be copied; else, it may be overwritten.
-
-    verbose : boolean, optional (DEFAULT = FALSE)
-        Verbose mode when fitting the model
-
-    Attributes
-    ----------
-    coef_ : array, shape = (n_features)
-        Coefficients of the regression model (mean of posterior distribution)
-
-    active_ : array, dtype = np.bool, shape = (n_features)
-       True for non-zero coefficients, False otherwise
-
-    References
-    ----------
-    [1] Pati, Y., Rezaiifar, R., Krishnaprasad, P. (1993). Orthogonal matching
-        pursuit: recursive function approximation with application to wavelet
-        decomposition. Proceedings of 27th Asilomar Conference on Signals,
-        Systems and Computers, 40-44.
-    '''
-
-    def __init__(self, fit_intercept=True, normalize=False, copy_X=True,
-                 verbose=False):
-        self.fit_intercept   = fit_intercept
-        self.normalize       = normalize
-        self.copy_X          = copy_X
-        self.verbose         = verbose
-
-    def _preprocess_data(self, X, y):
-        """Center and scale data.
-        Centers data to have mean zero along axis 0. If fit_intercept=False or
-        if the X is a sparse matrix, no centering is done, but normalization
-        can still be applied. The function returns the statistics necessary to
-        reconstruct the input data, which are X_offset, y_offset, X_scale, such
-        that the output
-            X = (X - X_offset) / X_scale
-        X_scale is the L2 norm of X - X_offset.
-        """
-
-        if self.copy_X:
-            X = X.copy(order='K')
-
-        y = np.asarray(y, dtype=X.dtype)
-
-        if self.fit_intercept:
-            X_offset = np.average(X, axis=0)
-            X -= X_offset
-            if self.normalize:
-                X_scale = np.ones(X.shape[1], dtype=X.dtype)
-                std = np.sqrt(np.sum(X**2, axis=0)/(len(X)-1))
-                X_scale[std != 0] = std[std != 0]
-                X /= X_scale
-            else:
-                X_scale = np.ones(X.shape[1], dtype=X.dtype)
-            y_offset = np.mean(y)
-            y = y - y_offset
-        else:
-            X_offset = np.zeros(X.shape[1], dtype=X.dtype)
-            X_scale = np.ones(X.shape[1], dtype=X.dtype)
-            if y.ndim == 1:
-                y_offset = X.dtype.type(0)
-            else:
-                y_offset = np.zeros(y.shape[1], dtype=X.dtype)
-
-        return X, y, X_offset, y_offset, X_scale
-
-    def fit(self, X, y):
-        '''
-        Fits Regression with Orthogonal Matching Pursuit Algorithm.
-
-        Parameters
-        -----------
-        X: {array-like, sparse matrix} of size (n_samples, n_features)
-           Training data, matrix of explanatory variables
-
-        y: array-like of size [n_samples, n_features]
-           Target values
-
-        Returns
-        -------
-        self : object
-            Returns self.
-        '''
-        X, y = check_X_y(X, y, dtype=np.float64, y_numeric=True)
-        n_samples, n_features = X.shape
-
-        X, y, X_mean, y_mean, X_std = self._preprocess_data(X, y)
-        self._x_mean_ = X_mean
-        self._y_mean = y_mean
-        self._x_std = X_std
-
-        # Normalize columns of Psi, so that each column has norm = 1
-        norm_X = np.linalg.norm(X, axis=0)
-        X_norm = X/norm_X
-
-        # Initialize residual vector to full model response and normalize
-        R = y
-        norm_y = np.sqrt(np.dot(y, y))
-        r = y/norm_y
-
-        # Check for constant regressors
-        const_indices = np.where(~np.diff(X, axis=0).any(axis=0))[0]
-        bool_const = not const_indices
-
-        # Start regression using OPM algorithm
-        precision = 0        # Set precision criterion to precision of program
-        early_stop = True
-        cond_early = True    # Initialize condition for early stop
-        ind = []
-        iindx = []           # index of selected columns
-        indtot = np.arange(n_features)  # Full index set for remaining columns
-        kmax = min(n_samples, n_features)  # Maximum number of iterations
-        LOO = np.PINF * np.ones(kmax)  # Store LOO error at each iteration
-        LOOmin = np.PINF               # Initialize minimum value of LOO
-        coeff = np.zeros((n_features, kmax))
-        count = 0
-        k = 0.1                # Percentage of iteration history for early stop
-
-        # Begin iteration over regressors set (Matrix X)
-        while (np.linalg.norm(R) > precision) and (count <= kmax-1) and \
-              ((cond_early or early_stop) ^ ~cond_early):
-
-            # Update index set of columns yet to select
-            if count != 0:
-                indtot = np.delete(indtot, iindx)
-
-            # Find column of X that is most correlated with residual
-            h = abs(np.dot(r, X_norm))
-            iindx = np.argmax(h[indtot])
-            indx = indtot[iindx]
-
-            # initialize with the constant regressor, if it exists in the basis
-            if (count == 0) and bool_const:
-                # overwrite values for iindx and indx
-                iindx = const_indices[0]
-                indx = indtot[iindx]
-
-            # Invert the information matrix at the first iteration, later only
-            # update its value on the basis of the previously inverted one,
-            if count == 0:
-                M = 1 / np.dot(X[:, indx], X[:, indx])
-            else:
-                x = np.dot(X[:, ind].T, X[:, indx])
-                r = np.dot(X[:, indx], X[:, indx])
-                M = self.blockwise_inverse(M, x, x.T, r)
-
-            # Add newly found index to the selected indexes set
-            ind.append(indx)
-
-            # Select regressors subset (Projection subspace)
-            Xpro = X[:, ind]
-
-            # Obtain coefficient by performing OLS
-            TT = np.dot(y, Xpro)
-            beta = np.dot(M, TT)
-            coeff[ind, count] = beta
-
-            # Compute LOO error
-            LOO[count] = self.loo_error(Xpro, M, y, beta)
-
-            # Compute new residual due to new projection
-            R = y - np.dot(Xpro, beta)
-
-            # Normalize residual
-            norm_R = np.sqrt(np.dot(R, R))
-            r = R / norm_R
-
-            # Update counters and early-stop criterions
-            countinf = max(0, int(count-k*kmax))
-            LOOmin = min(LOOmin, LOO[count])
-
-            if count == 0:
-                cond_early = (LOO[0] <= LOOmin)
-            else:
-                cond_early = (min(LOO[countinf:count+1]) <= LOOmin)
-
-            if self.verbose:
-                print(f'Iteration: {count+1}, mod. LOOCV error : '
-                      f'{LOO[count]:.2e}')
-
-            # Update counter
-            count += 1
-
-        # Select projection with smallest cross-validation error
-        countmin = np.argmin(LOO[:-1])
-        self.coef_ = coeff[:, countmin]
-        self.active = coeff[:, countmin] != 0.0
-
-        # set intercept_
-        if self.fit_intercept:
-            self.coef_ = self.coef_ / X_std
-            self.intercept_ = y_mean - np.dot(X_mean, self.coef_.T)
-        else:
-            self.intercept_ = 0.
-
-        return self
-
-    def predict(self, X):
-        '''
-        Computes predictive distribution for test set.
-
-        Parameters
-        -----------
-        X: {array-like, sparse} (n_samples_test, n_features)
-           Test data, matrix of explanatory variables
-
-        Returns
-        -------
-        y_hat: numpy array of size (n_samples_test,)
-               Estimated values of targets on test set (i.e. mean of
-               predictive distribution)
-        '''
-
-        y_hat = np.dot(X, self.coef_) + self.intercept_
-
-        return y_hat
-
-    def loo_error(self, psi, inv_inf_matrix, y, coeffs):
-        """
-        Calculates the corrected LOO error for regression on regressor
-        matrix `psi` that generated the coefficients based on [1] and [2].
-
-        [1] Blatman, G., 2009. Adaptive sparse polynomial chaos expansions for
-            uncertainty propagation and sensitivity analysis (Doctoral
-            dissertation, Clermont-Ferrand 2).
-
-        [2] Blatman, G. and Sudret, B., 2011. Adaptive sparse polynomial chaos
-            expansion based on least angle regression. Journal of computational
-            Physics, 230(6), pp.2345-2367.
-
-        Parameters
-        ----------
-        psi : array of shape (n_samples, n_feature)
-            Orthogonal bases evaluated at the samples.
-        inv_inf_matrix : array
-            Inverse of the information matrix.
-        y : array of shape (n_samples, )
-            Targets.
-        coeffs : array
-            Computed regresssor cofficients.
-
-        Returns
-        -------
-        loo_error : float
-            Modified LOOCV error.
-
-        """
-
-        # NrEvaluation (Size of experimental design)
-        N, P = psi.shape
-
-        # h factor (the full matrix is not calculated explicitly,
-        # only the trace is, to save memory)
-        PsiM = np.dot(psi, inv_inf_matrix)
-
-        h = np.sum(np.multiply(PsiM, psi), axis=1, dtype=np.longdouble)
-
-        # ------ Calculate Error Loocv for each measurement point ----
-        # Residuals
-        residual = np.dot(psi, coeffs) - y
-
-        # Variance
-        varY = np.var(y)
-
-        if varY == 0:
-            norm_emp_error = 0
-            loo_error = 0
-        else:
-            norm_emp_error = np.mean(residual**2)/varY
-
-            loo_error = np.mean(np.square(residual / (1-h))) / varY
-
-            # if there are NaNs, just return an infinite LOO error (this
-            # happens, e.g., when a strongly underdetermined problem is solved)
-            if np.isnan(loo_error):
-                loo_error = np.inf
-
-        # Corrected Error for over-determined system
-        tr_M = np.trace(np.atleast_2d(inv_inf_matrix))
-        if tr_M < 0 or abs(tr_M) > 1e6:
-            tr_M = np.trace(np.linalg.pinv(np.dot(psi.T, psi)))
-
-        # Over-determined system of Equation
-        if N > P:
-            T_factor = N/(N-P) * (1 + tr_M)
-
-        # Under-determined system of Equation
-        else:
-            T_factor = np.inf
-
-        loo_error *= T_factor
-
-        return loo_error
-
-    def blockwise_inverse(self, Ainv, B, C, D):
-        """
-        non-singular square matrix M defined as M = [[A B]; [C D]] .
-        B, C and D can have any dimension, provided their combination defines
-        a square matrix M.
-
-        Parameters
-        ----------
-        Ainv : float or array
-            inverse of the square-submatrix A.
-        B : float or array
-            Information matrix with all new regressor.
-        C : float or array
-            Transpose of B.
-        D : float or array
-            Information matrix with all selected regressors.
-
-        Returns
-        -------
-        M : array
-            Inverse of the information matrix.
-
-        """
-        if np.isscalar(D):
-            # Inverse of D
-            Dinv = 1/D
-            # Schur complement
-            SCinv = 1/(D - np.dot(C, np.dot(Ainv, B[:, None])))[0]
-        else:
-            # Inverse of D
-            Dinv = np.linalg.solve(D, np.eye(D.shape))
-            # Schur complement
-            SCinv = np.linalg.solve((D - C*Ainv*B), np.eye(D.shape))
-
-        T1 = np.dot(Ainv, np.dot(B[:, None], SCinv))
-        T2 = np.dot(C, Ainv)
-
-        # Assemble the inverse matrix
-        M = np.vstack((
-            np.hstack((Ainv+T1*T2, -T1)),
-            np.hstack((-(SCinv)*T2, SCinv))
-            ))
-        return M
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/reg_fast_ard.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/reg_fast_ard.py
deleted file mode 100644
index e6883a3ed..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/reg_fast_ard.py	
+++ /dev/null
@@ -1,475 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Created on Tue Mar 24 19:41:45 2020
-
-@author: farid
-"""
-import numpy as np
-from scipy.linalg import solve_triangular
-from numpy.linalg import LinAlgError
-from sklearn.base import RegressorMixin
-from sklearn.linear_model._base import LinearModel
-import warnings
-from sklearn.utils import check_X_y
-from scipy.linalg import pinvh
-
-
-def update_precisions(Q,S,q,s,A,active,tol,n_samples,clf_bias):
-    '''
-    Selects one feature to be added/recomputed/deleted to model based on
-    effect it will have on value of log marginal likelihood.
-    '''
-    # initialise vector holding changes in log marginal likelihood
-    deltaL = np.zeros(Q.shape[0])
-
-    # identify features that can be added , recomputed and deleted in model
-    theta        =  q**2 - s
-    add          =  (theta > 0) * (active == False)
-    recompute    =  (theta > 0) * (active == True)
-    delete       = ~(add + recompute)
-
-    # compute sparsity & quality parameters corresponding to features in
-    # three groups identified above
-    Qadd,Sadd      = Q[add], S[add]
-    Qrec,Srec,Arec = Q[recompute], S[recompute], A[recompute]
-    Qdel,Sdel,Adel = Q[delete], S[delete], A[delete]
-
-    # compute new alpha's (precision parameters) for features that are
-    # currently in model and will be recomputed
-    Anew           = s[recompute]**2/ ( theta[recompute] + np.finfo(np.float32).eps)
-    delta_alpha    = (1./Anew - 1./Arec)
-
-    # compute change in log marginal likelihood
-    deltaL[add]       = ( Qadd**2 - Sadd ) / Sadd + np.log(Sadd/Qadd**2 )
-    deltaL[recompute] = Qrec**2 / (Srec + 1. / delta_alpha) - np.log(1 + Srec*delta_alpha)
-    deltaL[delete]    = Qdel**2 / (Sdel - Adel) - np.log(1 - Sdel / Adel)
-    deltaL            = deltaL  / n_samples
-
-    # find feature which caused largest change in likelihood
-    feature_index = np.argmax(deltaL)
-
-    # no deletions or additions
-    same_features  = np.sum( theta[~recompute] > 0) == 0
-
-    # changes in precision for features already in model is below threshold
-    no_delta       = np.sum( abs( Anew - Arec ) > tol ) == 0
-    # if same_features: print(abs( Anew - Arec ))
-    # print("same_features = {} no_delta = {}".format(same_features,no_delta))
-    # check convergence: if no features to add or delete and small change in
-    #                    precision for current features then terminate
-    converged = False
-    if same_features and no_delta:
-        converged = True
-        return [A,converged]
-
-    # if not converged update precision parameter of weights and return
-    if theta[feature_index] > 0:
-        A[feature_index] = s[feature_index]**2 / theta[feature_index]
-        if active[feature_index] == False:
-            active[feature_index] = True
-    else:
-        # at least two active features
-        if active[feature_index] == True and np.sum(active) >= 2:
-            # do not remove bias term in classification
-            # (in regression it is factored in through centering)
-            if not (feature_index == 0 and clf_bias):
-                active[feature_index] = False
-                A[feature_index]      = np.PINF
-
-    return [A,converged]
-
-
-class RegressionFastARD(LinearModel, RegressorMixin):
-    '''
-    Regression with Automatic Relevance Determination (Fast Version uses
-    Sparse Bayesian Learning)
-    https://github.com/AmazaspShumik/sklearn-bayes/blob/master/skbayes/rvm_ard_models/fast_rvm.py
-
-    Parameters
-    ----------
-    n_iter: int, optional (DEFAULT = 100)
-        Maximum number of iterations
-
-    start: list, optional (DEFAULT = None)
-        Initial selected features.
-
-    tol: float, optional (DEFAULT = 1e-3)
-        If absolute change in precision parameter for weights is below threshold
-        algorithm terminates.
-
-    fit_intercept : boolean, optional (DEFAULT = True)
-        whether to calculate the intercept for this model. If set
-        to false, no intercept will be used in calculations
-        (e.g. data is expected to be already centered).
-
-    copy_X : boolean, optional (DEFAULT = True)
-        If True, X will be copied; else, it may be overwritten.
-
-    compute_score : bool, default=False
-        If True, compute the log marginal likelihood at each iteration of the
-        optimization.
-
-    verbose : boolean, optional (DEFAULT = FALSE)
-        Verbose mode when fitting the model
-
-    Attributes
-    ----------
-    coef_ : array, shape = (n_features)
-        Coefficients of the regression model (mean of posterior distribution)
-
-    alpha_ : float
-       estimated precision of the noise
-
-    active_ : array, dtype = np.bool, shape = (n_features)
-       True for non-zero coefficients, False otherwise
-
-    lambda_ : array, shape = (n_features)
-       estimated precisions of the coefficients
-
-    sigma_ : array, shape = (n_features, n_features)
-        estimated covariance matrix of the weights, computed only
-        for non-zero coefficients
-
-    scores_ : array-like of shape (n_iter_+1,)
-        If computed_score is True, value of the log marginal likelihood (to be
-        maximized) at each iteration of the optimization.
-
-    References
-    ----------
-    [1] Fast marginal likelihood maximisation for sparse Bayesian models
-    (Tipping & Faul 2003) (http://www.miketipping.com/papers/met-fastsbl.pdf)
-    [2] Analysis of sparse Bayesian learning (Tipping & Faul 2001)
-        (http://www.miketipping.com/abstracts.htm#Faul:NIPS01)
-    '''
-
-    def __init__(self, n_iter=300, start=None, tol=1e-3, fit_intercept=True,
-                 normalize=False, copy_X=True, compute_score=False, verbose=False):
-        self.n_iter          = n_iter
-        self.start           = start
-        self.tol             = tol
-        self.scores_         = list()
-        self.fit_intercept   = fit_intercept
-        self.normalize       = normalize
-        self.copy_X          = copy_X
-        self.compute_score   = compute_score
-        self.verbose         = verbose
-
-    def _preprocess_data(self, X, y):
-        """Center and scale data.
-        Centers data to have mean zero along axis 0. If fit_intercept=False or
-        if the X is a sparse matrix, no centering is done, but normalization
-        can still be applied. The function returns the statistics necessary to
-        reconstruct the input data, which are X_offset, y_offset, X_scale, such
-        that the output
-            X = (X - X_offset) / X_scale
-        X_scale is the L2 norm of X - X_offset.
-        """
-
-        if self.copy_X:
-            X = X.copy(order='K')
-
-        y = np.asarray(y, dtype=X.dtype)
-
-        if self.fit_intercept:
-            X_offset = np.average(X, axis=0)
-            X -= X_offset
-            if self.normalize:
-                X_scale = np.ones(X.shape[1], dtype=X.dtype)
-                std = np.sqrt(np.sum(X**2, axis=0)/(len(X)-1))
-                X_scale[std != 0] = std[std != 0]
-                X /= X_scale
-            else:
-                X_scale = np.ones(X.shape[1], dtype=X.dtype)
-            y_offset = np.mean(y)
-            y = y - y_offset
-        else:
-            X_offset = np.zeros(X.shape[1], dtype=X.dtype)
-            X_scale = np.ones(X.shape[1], dtype=X.dtype)
-            if y.ndim == 1:
-                y_offset = X.dtype.type(0)
-            else:
-                y_offset = np.zeros(y.shape[1], dtype=X.dtype)
-
-        return X, y, X_offset, y_offset, X_scale
-
-    def fit(self, X, y):
-        '''
-        Fits ARD Regression with Sequential Sparse Bayes Algorithm.
-
-        Parameters
-        -----------
-        X: {array-like, sparse matrix} of size (n_samples, n_features)
-           Training data, matrix of explanatory variables
-
-        y: array-like of size [n_samples, n_features]
-           Target values
-
-        Returns
-        -------
-        self : object
-            Returns self.
-        '''
-        X, y = check_X_y(X, y, dtype=np.float64, y_numeric=True)
-        n_samples, n_features = X.shape
-
-        X, y, X_mean, y_mean, X_std = self._preprocess_data(X, y)
-        self._x_mean_ = X_mean
-        self._y_mean = y_mean
-        self._x_std = X_std
-
-        #  precompute X'*Y , X'*X for faster iterations & allocate memory for
-        #  sparsity & quality vectors
-        XY = np.dot(X.T, y)
-        XX = np.dot(X.T, X)
-        XXd = np.diag(XX)
-
-        #  initialise precision of noise & and coefficients
-        var_y = np.var(y)
-
-        # check that variance is non zero !!!
-        if var_y == 0:
-            beta = 1e-2
-            self.var_y = True
-        else:
-            beta = 1. / np.var(y)
-            self.var_y = False
-
-        A = np.PINF * np.ones(n_features)
-        active = np.zeros(n_features, dtype=np.bool)
-
-        if self.start is not None and not hasattr(self, 'active_'):
-            start = self.start
-            # start from a given start basis vector
-            proj = XY**2 / XXd
-            active[start] = True
-            A[start] = XXd[start]/(proj[start] - var_y)
-
-        else:
-            # in case of almost perfect multicollinearity between some features
-            # start from feature 0
-            if np.sum(XXd - X_mean**2 < np.finfo(np.float32).eps) > 0:
-                A[0] = np.finfo(np.float16).eps
-                active[0] = True
-
-            else:
-                # start from a single basis vector with largest projection on
-                # targets
-                proj = XY**2 / XXd
-                start = np.argmax(proj)
-                active[start] = True
-                A[start] = XXd[start]/(proj[start] - var_y +
-                                       np.finfo(np.float32).eps)
-
-        warning_flag = 0
-        scores_ = []
-        for i in range(self.n_iter):
-            # Handle variance zero
-            if self.var_y:
-                A[0] = y_mean
-                active[0] = True
-                converged = True
-                break
-
-            XXa = XX[active, :][:, active]
-            XYa = XY[active]
-            Aa = A[active]
-
-            # mean & covariance of posterior distribution
-            Mn, Ri, cholesky = self._posterior_dist(Aa, beta, XXa, XYa)
-            if cholesky:
-                Sdiag = np.sum(Ri**2, 0)
-            else:
-                Sdiag = np.copy(np.diag(Ri))
-                warning_flag += 1
-
-            # raise warning in case cholesky fails
-            if warning_flag == 1:
-                warnings.warn(("Cholesky decomposition failed! Algorithm uses "
-                               "pinvh, which is significantly slower. If you "
-                               "use RVR it is advised to change parameters of "
-                               "the kernel!"))
-
-            # compute quality & sparsity parameters
-            s, q, S, Q = self._sparsity_quality(XX, XXd, XY, XYa, Aa, Ri,
-                                                active, beta, cholesky)
-
-            # update precision parameter for noise distribution
-            rss = np.sum((y - np.dot(X[:, active], Mn))**2)
-
-            # if near perfect fit , then terminate
-            if (rss / n_samples/var_y) < self.tol:
-                warnings.warn('Early termination due to near perfect fit')
-                converged = True
-                break
-            beta = n_samples - np.sum(active) + np.sum(Aa * Sdiag)
-            beta /= rss
-            # beta /= (rss + np.finfo(np.float32).eps)
-
-            # update precision parameters of coefficients
-            A, converged = update_precisions(Q, S, q, s, A, active, self.tol,
-                                             n_samples, False)
-
-            if self.compute_score:
-                scores_.append(self.log_marginal_like(XXa, XYa, Aa, beta))
-
-            if self.verbose:
-                print(('Iteration: {0}, number of features '
-                       'in the model: {1}').format(i, np.sum(active)))
-
-            if converged or i == self.n_iter - 1:
-                if converged and self.verbose:
-                    print('Algorithm converged!')
-                break
-
-        # after last update of alpha & beta update parameters
-        # of posterior distribution
-        XXa, XYa, Aa = XX[active, :][:, active], XY[active], A[active]
-        Mn, Sn, cholesky = self._posterior_dist(Aa, beta, XXa, XYa, True)
-        self.coef_ = np.zeros(n_features)
-        self.coef_[active] = Mn
-        self.sigma_ = Sn
-        self.active_ = active
-        self.lambda_ = A
-        self.alpha_ = beta
-        self.converged = converged
-        if self.compute_score:
-            self.scores_ = np.array(scores_)
-
-        # set intercept_
-        if self.fit_intercept:
-            self.coef_ = self.coef_ / X_std
-            self.intercept_ = y_mean - np.dot(X_mean, self.coef_.T)
-        else:
-            self.intercept_ = 0.
-        return self
-
-    def log_marginal_like(self, XXa, XYa, Aa, beta):
-        """Computes the log of the marginal likelihood."""
-        N, M = XXa.shape
-        A = np.diag(Aa)
-
-        Mn, sigma_, cholesky = self._posterior_dist(Aa, beta, XXa, XYa,
-                                                    full_covar=True)
-
-        C = sigma_ + np.dot(np.dot(XXa.T, np.linalg.pinv(A)), XXa)
-
-        score = np.dot(np.dot(XYa.T, np.linalg.pinv(C)), XYa) +\
-            np.log(np.linalg.det(C)) + N * np.log(2 * np.pi)
-
-        return -0.5 * score
-
-    def predict(self, X, return_std=False):
-        '''
-        Computes predictive distribution for test set.
-        Predictive distribution for each data point is one dimensional
-        Gaussian and therefore is characterised by mean and variance based on
-        Ref.[1] Section 3.3.2.
-
-        Parameters
-        -----------
-        X: {array-like, sparse} (n_samples_test, n_features)
-           Test data, matrix of explanatory variables
-
-        Returns
-        -------
-        : list of length two [y_hat, var_hat]
-
-             y_hat: numpy array of size (n_samples_test,)
-                    Estimated values of targets on test set (i.e. mean of
-                    predictive distribution)
-
-                var_hat: numpy array of size (n_samples_test,)
-                    Variance of predictive distribution
-        References
-        ----------
-        [1] Bishop, C. M. (2006). Pattern recognition and machine learning.
-        springer.
-        '''
-
-        y_hat = np.dot(X, self.coef_) + self.intercept_
-
-        if return_std:
-            # Handle the zero variance case
-            if self.var_y:
-                return y_hat, np.zeros_like(y_hat)
-
-            if self.normalize:
-                X -= self._x_mean_[self.active_]
-                X /= self._x_std[self.active_]
-            var_hat = 1./self.alpha_
-            var_hat += np.sum(X.dot(self.sigma_) * X, axis=1)
-            std_hat = np.sqrt(var_hat)
-            return y_hat, std_hat
-        else:
-            return y_hat
-
-    def _posterior_dist(self, A, beta, XX, XY, full_covar=False):
-        '''
-        Calculates mean and covariance matrix of posterior distribution
-        of coefficients.
-        '''
-        # compute precision matrix for active features
-        Sinv = beta * XX
-        np.fill_diagonal(Sinv, np.diag(Sinv) + A)
-        cholesky = True
-
-        # try cholesky, if it fails go back to pinvh
-        try:
-            # find posterior mean : R*R.T*mean = beta*X.T*Y
-            # solve(R*z = beta*X.T*Y) =>find z=> solve(R.T*mean = z)=>find mean
-            R = np.linalg.cholesky(Sinv)
-            Z = solve_triangular(R, beta*XY, check_finite=True, lower=True)
-            Mn = solve_triangular(R.T, Z, check_finite=True, lower=False)
-
-            # invert lower triangular matrix from cholesky decomposition
-            Ri = solve_triangular(R, np.eye(A.shape[0]), check_finite=False,
-                                  lower=True)
-            if full_covar:
-                Sn = np.dot(Ri.T, Ri)
-                return Mn, Sn, cholesky
-            else:
-                return Mn, Ri, cholesky
-        except LinAlgError:
-            cholesky = False
-            Sn = pinvh(Sinv)
-            Mn = beta*np.dot(Sinv, XY)
-            return Mn, Sn, cholesky
-
-    def _sparsity_quality(self, XX, XXd, XY, XYa, Aa, Ri, active, beta, cholesky):
-        '''
-        Calculates sparsity and quality parameters for each feature
-
-        Theoretical Note:
-        -----------------
-        Here we used Woodbury Identity for inverting covariance matrix
-        of target distribution
-        C    = 1/beta + 1/alpha * X' * X
-        C^-1 = beta - beta^2 * X * Sn * X'
-        '''
-        bxy = beta*XY
-        bxx = beta*XXd
-        if cholesky:
-            # here Ri is inverse of lower triangular matrix obtained from
-            # cholesky decomp
-            xxr = np.dot(XX[:, active], Ri.T)
-            rxy = np.dot(Ri, XYa)
-            S = bxx - beta**2 * np.sum(xxr**2, axis=1)
-            Q = bxy - beta**2 * np.dot(xxr, rxy)
-        else:
-            # here Ri is covariance matrix
-            XXa = XX[:, active]
-            XS = np.dot(XXa, Ri)
-            S = bxx - beta**2 * np.sum(XS*XXa, 1)
-            Q = bxy - beta**2 * np.dot(XS, XYa)
-        # Use following:
-        # (EQ 1) q = A*Q/(A - S) ; s = A*S/(A-S)
-        # so if A = np.PINF q = Q, s = S
-        qi = np.copy(Q)
-        si = np.copy(S)
-        # If A is not np.PINF, then it should be 'active' feature => use (EQ 1)
-        Qa, Sa = Q[active], S[active]
-        qi[active] = Aa * Qa / (Aa - Sa)
-        si[active] = Aa * Sa / (Aa - Sa)
-
-        return [si, qi, S, Q]
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/reg_fast_laplace.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/reg_fast_laplace.py
deleted file mode 100644
index 7fdcb5cf6..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/reg_fast_laplace.py	
+++ /dev/null
@@ -1,452 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-import numpy as np
-from sklearn.utils import as_float_array
-from sklearn.model_selection import KFold
-
-
-class RegressionFastLaplace():
-    '''
-    Sparse regression with Bayesian Compressive Sensing as described in Alg. 1
-    (Fast Laplace) of Ref.[1], which updated formulas from [2].
-
-    sigma2: noise precision (sigma^2)
-    nu fixed to 0
-
-    uqlab/lib/uq_regression/BCS/uq_bsc.m
-
-    Parameters
-    ----------
-    n_iter: int, optional (DEFAULT = 1000)
-        Maximum number of iterations
-
-    tol: float, optional (DEFAULT = 1e-7)
-        If absolute change in precision parameter for weights is below
-        threshold algorithm terminates.
-
-    fit_intercept : boolean, optional (DEFAULT = True)
-        whether to calculate the intercept for this model. If set
-        to false, no intercept will be used in calculations
-        (e.g. data is expected to be already centered).
-
-    copy_X : boolean, optional (DEFAULT = True)
-        If True, X will be copied; else, it may be overwritten.
-
-    verbose : boolean, optional (DEFAULT = FALSE)
-        Verbose mode when fitting the model
-
-    Attributes
-    ----------
-    coef_ : array, shape = (n_features)
-        Coefficients of the regression model (mean of posterior distribution)
-
-    alpha_ : float
-       estimated precision of the noise
-
-    active_ : array, dtype = np.bool, shape = (n_features)
-       True for non-zero coefficients, False otherwise
-
-    lambda_ : array, shape = (n_features)
-       estimated precisions of the coefficients
-
-    sigma_ : array, shape = (n_features, n_features)
-        estimated covariance matrix of the weights, computed only
-        for non-zero coefficients
-
-    References
-    ----------
-    [1] Babacan, S. D., Molina, R., & Katsaggelos, A. K. (2009). Bayesian
-        compressive sensing using Laplace priors. IEEE Transactions on image
-        processing, 19(1), 53-63.
-    [2] Fast marginal likelihood maximisation for sparse Bayesian models
-        (Tipping & Faul 2003).
-        (http://www.miketipping.com/papers/met-fastsbl.pdf)
-    '''
-
-    def __init__(self, n_iter=1000, n_Kfold=10, tol=1e-7, fit_intercept=False,
-                 bias_term=True, copy_X=True, verbose=False):
-        self.n_iter = n_iter
-        self.n_Kfold = n_Kfold
-        self.tol = tol
-        self.fit_intercept = fit_intercept
-        self.bias_term = bias_term
-        self.copy_X = copy_X
-        self.verbose = verbose
-
-    def _center_data(self, X, y):
-        ''' Centers data'''
-        X = as_float_array(X, copy = self.copy_X)
-
-        # normalisation should be done in preprocessing!
-        X_std = np.ones(X.shape[1], dtype=X.dtype)
-        if self.fit_intercept:
-            X_mean = np.average(X, axis=0)
-            y_mean = np.average(y, axis=0)
-            X -= X_mean
-            y -= y_mean
-        else:
-            X_mean = np.zeros(X.shape[1], dtype=X.dtype)
-            y_mean = 0. if y.ndim == 1 else np.zeros(y.shape[1], dtype=X.dtype)
-        return X, y, X_mean, y_mean, X_std
-
-    def fit(self, X, y):
-
-        k_fold = KFold(n_splits=self.n_Kfold)
-
-        varY = np.var(y, ddof=1) if np.var(y, ddof=1) != 0 else 1.0
-        sigma2s = len(y)*varY*(10**np.linspace(-16, -1, self.n_Kfold))
-
-        errors = np.zeros((len(sigma2s), self.n_Kfold))
-        for s, sigma2 in enumerate(sigma2s):
-            for k, (train, test) in enumerate(k_fold.split(X, y)):
-                self.fit_(X[train], y[train], sigma2)
-                errors[s, k] = np.linalg.norm(
-                    y[test] - self.predict(X[test])
-                    )**2/len(test)
-
-        KfCVerror = np.sum(errors, axis=1)/self.n_Kfold/varY
-        i_minCV = np.argmin(KfCVerror)
-
-        self.kfoldCVerror = np.min(KfCVerror)
-
-        return self.fit_(X, y, sigma2s[i_minCV])
-
-    def fit_(self, X, y, sigma2):
-
-        N, P = X.shape
-        # n_samples, n_features = X.shape
-
-        X, y, X_mean, y_mean, X_std = self._center_data(X, y)
-        self._x_mean_ = X_mean
-        self._y_mean = y_mean
-        self._x_std = X_std
-
-        # check that variance is non zero !!!
-        if np.var(y) == 0:
-            self.var_y = True
-        else:
-            self.var_y = False
-        beta = 1./sigma2
-
-        #  precompute X'*Y , X'*X for faster iterations & allocate memory for
-        #  sparsity & quality vectors X=Psi
-        PsiTY = np.dot(X.T, y)
-        PsiTPsi = np.dot(X.T, X)
-        XXd = np.diag(PsiTPsi)
-
-        # initialize with constant regressor, or if that one does not exist,
-        # with the one that has the largest correlation with Y
-        ind_global_to_local = np.zeros(P, dtype=np.int32)
-
-        # identify constant regressors
-        constidx = np.where(~np.diff(X, axis=0).all(axis=0))[0]
-
-        if self.bias_term and constidx.size != 0:
-            ind_start = constidx[0]
-            ind_global_to_local[ind_start] = True
-        else:
-            # start from a single basis vector with largest projection on
-            # targets
-            proj = np.divide(np.square(PsiTY), XXd)
-            ind_start = np.argmax(proj)
-            ind_global_to_local[ind_start] = True
-
-        num_active = 1
-        active_indices = [ind_start]
-        deleted_indices = []
-        bcs_path = [ind_start]
-        gamma = np.zeros(P)
-        # for the initial value of gamma(ind_start), use the RVM formula
-        #   gamma = (q^2 - s) / (s^2)
-        # and the fact that initially s = S = beta*Psi_i'*Psi_i and q = Q =
-        # beta*Psi_i'*Y
-        gamma[ind_start] = np.square(PsiTY[ind_start])
-        gamma[ind_start] -= sigma2 * PsiTPsi[ind_start, ind_start]
-        gamma[ind_start] /= np.square(PsiTPsi[ind_start, ind_start])
-
-        Sigma = 1. / (beta * PsiTPsi[ind_start, ind_start]
-                      + 1./gamma[ind_start])
-
-        mu = Sigma * PsiTY[ind_start] * beta
-        tmp1 = beta * PsiTPsi[ind_start]
-        S = beta * np.diag(PsiTPsi).T - Sigma * np.square(tmp1)
-        Q = beta * PsiTY.T - mu*(tmp1)
-
-        tmp2 = np.ones(P)  # alternative computation for the initial s,q
-        q0tilde = PsiTY[ind_start]
-        s0tilde = PsiTPsi[ind_start, ind_start]
-        tmp2[ind_start] = s0tilde / (q0tilde**2) / beta
-        s = np.divide(S, tmp2)
-        q = np.divide(Q, tmp2)
-        Lambda = 2*(num_active - 1) / np.sum(gamma)
-
-        Delta_L_max = []
-        for i in range(self.n_iter):
-            # Handle variance zero
-            if self.var_y:
-                mu = np.mean(y)
-                break
-
-            if self.verbose:
-                print('    lambda = {0:.6e}\n'.format(Lambda))
-
-            # Calculate the potential updated value of each gamma[i]
-            if Lambda == 0.0:  # RVM
-                gamma_potential = np.multiply((
-                    (q**2 - s) > Lambda),
-                    np.divide(q**2 - s, s**2)
-                    )
-            else:
-                a = Lambda * s**2
-                b = s**2 + 2*Lambda*s
-                c = Lambda + s - q**2
-                gamma_potential = np.multiply(
-                    (c < 0), np.divide(
-                        -b + np.sqrt(b**2 - 4*np.multiply(a, c)), 2*a)
-                    )
-
-            l_gamma = - np.log(np.absolute(1 + np.multiply(gamma, s)))
-            l_gamma += np.divide(np.multiply(q**2, gamma),
-                                 (1 + np.multiply(gamma, s)))
-            l_gamma -= Lambda*gamma  # omitted the factor 1/2
-
-            # Contribution of each updated gamma(i) to L(gamma)
-            l_gamma_potential = - np.log(
-                np.absolute(1 + np.multiply(gamma_potential, s))
-                )
-            l_gamma_potential += np.divide(
-                np.multiply(q**2, gamma_potential),
-                (1 + np.multiply(gamma_potential, s))
-                )
-            # omitted the factor 1/2
-            l_gamma_potential -= Lambda*gamma_potential
-
-            # Check how L(gamma) would change if we replaced gamma(i) by the
-            # updated gamma_potential(i), for each i separately
-            Delta_L_potential = l_gamma_potential - l_gamma
-
-            # deleted indices should not be chosen again
-            if len(deleted_indices) != 0:
-                values = -np.inf * np.ones(len(deleted_indices))
-                Delta_L_potential[deleted_indices] = values
-
-            Delta_L_max.append(np.nanmax(Delta_L_potential))
-            ind_L_max = np.nanargmax(Delta_L_potential)
-
-            # in case there is only 1 regressor in the model and it would now
-            # be deleted
-            if len(active_indices) == 1 and ind_L_max == active_indices[0] \
-               and gamma_potential[ind_L_max] == 0.0:
-                Delta_L_potential[ind_L_max] = -np.inf
-                Delta_L_max[i] = np.max(Delta_L_potential)
-                ind_L_max = np.argmax(Delta_L_potential)
-
-            # If L did not change significantly anymore, break
-            if Delta_L_max[i] <= 0.0 or\
-                    (i > 0 and all(np.absolute(Delta_L_max[i-1:])
-                                   < sum(Delta_L_max)*self.tol)) or \
-                    (i > 0 and all(np.diff(bcs_path)[i-1:] == 0.0)):
-                if self.verbose:
-                    print('Increase in L: {0:.6e} (eta = {1:.3e})\
-                          -- break\n'.format(Delta_L_max[i], self.tol))
-                break
-
-            # Print information
-            if self.verbose:
-                print('    Delta L = {0:.6e} \n'.format(Delta_L_max[i]))
-
-            what_changed = int(gamma[ind_L_max] == 0.0)
-            what_changed -= int(gamma_potential[ind_L_max] == 0.0)
-
-            # Print information
-            if self.verbose:
-                if what_changed < 0:
-                    print(f'{i+1} - Remove regressor #{ind_L_max+1}..\n')
-                elif what_changed == 0:
-                    print(f'{i+1} - Recompute regressor #{ind_L_max+1}..\n')
-                else:
-                    print(f'{i+1} - Add regressor #{ind_L_max+1}..\n')
-
-            # --- Update all quantities ----
-            if what_changed == 1:
-                # adding a regressor
-
-                # update gamma
-                gamma[ind_L_max] = gamma_potential[ind_L_max]
-
-                Sigma_ii = 1.0 / (1.0/gamma[ind_L_max] + S[ind_L_max])
-                try:
-                    x_i = np.matmul(
-                        Sigma, PsiTPsi[active_indices, ind_L_max].reshape(-1, 1)
-                        )
-                except ValueError:
-                    x_i = Sigma * PsiTPsi[active_indices, ind_L_max]
-                tmp_1 = - (beta * Sigma_ii) * x_i
-                Sigma = np.vstack(
-                    (np.hstack(((beta**2 * Sigma_ii) * np.dot(x_i, x_i.T)
-                                + Sigma, tmp_1)), np.append(tmp_1.T, Sigma_ii))
-                    )
-                mu_i = Sigma_ii * Q[ind_L_max]
-                mu = np.vstack((mu - (beta * mu_i) * x_i, mu_i))
-
-                tmp2_1 = PsiTPsi[:, ind_L_max] - beta * np.squeeze(
-                    np.matmul(PsiTPsi[:, active_indices], x_i)
-                    )
-                if i == 0:
-                    tmp2_1[0] /= 2
-                tmp2 = beta * tmp2_1.T
-                S = S - Sigma_ii * np.square(tmp2)
-                Q = Q - mu_i * tmp2
-
-                num_active += 1
-                ind_global_to_local[ind_L_max] = num_active
-                active_indices.append(ind_L_max)
-                bcs_path.append(ind_L_max)
-
-            elif what_changed == 0:
-                # recomputation
-                # zero if regressor has not been chosen yet
-                if not ind_global_to_local[ind_L_max]:
-                    raise Exception('Cannot recompute index{0} -- not yet\
-                                    part of the model!'.format(ind_L_max))
-                Sigma = np.atleast_2d(Sigma)
-                mu = np.atleast_2d(mu)
-                gamma_i_new = gamma_potential[ind_L_max]
-                gamma_i_old = gamma[ind_L_max]
-                # update gamma
-                gamma[ind_L_max] = gamma_potential[ind_L_max]
-
-                # index of regressor in Sigma
-                local_ind = ind_global_to_local[ind_L_max]-1
-
-                kappa_i = (1.0/gamma_i_new - 1.0/gamma_i_old)
-                kappa_i = 1.0 / kappa_i
-                kappa_i += Sigma[local_ind, local_ind]
-                kappa_i = 1 / kappa_i
-                Sigma_i_col = Sigma[:, local_ind]
-
-                Sigma = Sigma - kappa_i * (Sigma_i_col * Sigma_i_col.T)
-                mu_i = mu[local_ind]
-                mu = mu - (kappa_i * mu_i) * Sigma_i_col[:, None]
-
-                tmp1 = beta * np.dot(
-                    Sigma_i_col.reshape(1, -1), PsiTPsi[active_indices])[0]
-                S = S + kappa_i * np.square(tmp1)
-                Q = Q + (kappa_i * mu_i) * tmp1
-
-                # no change in active_indices or ind_global_to_local
-                bcs_path.append(ind_L_max + 0.1)
-
-            elif what_changed == -1:
-                gamma[ind_L_max] = 0
-
-                # index of regressor in Sigma
-                local_ind = ind_global_to_local[ind_L_max]-1
-
-                Sigma_ii_inv = 1. / Sigma[local_ind, local_ind]
-                Sigma_i_col = Sigma[:, local_ind]
-
-                Sigma = Sigma - Sigma_ii_inv * (Sigma_i_col * Sigma_i_col.T)
-
-                Sigma = np.delete(
-                    np.delete(Sigma, local_ind, axis=0), local_ind, axis=1)
-
-                mu = mu - (mu[local_ind] * Sigma_ii_inv) * Sigma_i_col[:, None]
-                mu = np.delete(mu, local_ind, axis=0)
-
-                tmp1 = beta * np.dot(Sigma_i_col, PsiTPsi[active_indices])
-                S = S + Sigma_ii_inv * np.square(tmp1)
-                Q = Q + (mu_i * Sigma_ii_inv) * tmp1
-
-                num_active -= 1
-                ind_global_to_local[ind_L_max] = 0.0
-                v = ind_global_to_local[ind_global_to_local > local_ind] - 1
-                ind_global_to_local[ind_global_to_local > local_ind] = v
-                del active_indices[local_ind]
-                deleted_indices.append(ind_L_max)
-                # and therefore ineligible
-                bcs_path.append(-ind_L_max)
-
-            # same for all three cases
-            tmp3 = 1 - np.multiply(gamma, S)
-            s = np.divide(S, tmp3)
-            q = np.divide(Q, tmp3)
-
-            # Update lambda
-            Lambda = 2*(num_active - 1) / np.sum(gamma)
-
-        # Prepare the result object
-        self.coef_ = np.zeros(P)
-        self.coef_[active_indices] = np.squeeze(mu)
-        self.sigma_ = Sigma
-        self.active_ = active_indices
-        self.gamma = gamma
-        self.Lambda = Lambda
-        self.beta = beta
-        self.bcs_path = bcs_path
-
-        # set intercept_
-        if self.fit_intercept:
-            self.coef_ = self.coef_ / X_std
-            self.intercept_ = y_mean - np.dot(X_mean, self.coef_.T)
-        else:
-            self.intercept_ = 0.
-
-        return self
-
-    def predict(self, X, return_std=False):
-        '''
-        Computes predictive distribution for test set.
-        Predictive distribution for each data point is one dimensional
-        Gaussian and therefore is characterised by mean and variance based on
-        Ref.[1] Section 3.3.2.
-
-        Parameters
-        -----------
-        X: {array-like, sparse} (n_samples_test, n_features)
-           Test data, matrix of explanatory variables
-
-        Returns
-        -------
-        : list of length two [y_hat, var_hat]
-
-             y_hat: numpy array of size (n_samples_test,)
-                    Estimated values of targets on test set (i.e. mean of
-                    predictive distribution)
-
-                var_hat: numpy array of size (n_samples_test,)
-                    Variance of predictive distribution
-
-        References
-        ----------
-        [1] Bishop, C. M. (2006). Pattern recognition and machine learning.
-        springer.
-        '''
-        y_hat = np.dot(X, self.coef_) + self.intercept_
-
-        if return_std:
-            # Handle the zero variance case
-            if self.var_y:
-                return y_hat, np.zeros_like(y_hat)
-
-            var_hat = 1./self.beta
-            var_hat += np.sum(X.dot(self.sigma_) * X, axis=1)
-            std_hat = np.sqrt(var_hat)
-            return y_hat, std_hat
-        else:
-            return y_hat
-
-# l2norm = 0.0
-# for idx in range(10):
-#     sigma2 = np.genfromtxt('./test/sigma2_{0}.csv'.format(idx+1), delimiter=',')
-#     Psi_train = np.genfromtxt('./test/Psi_train_{0}.csv'.format(idx+1), delimiter=',')
-#     Y_train = np.genfromtxt('./test/Y_train_{0}.csv'.format(idx+1))
-#     Psi_test = np.genfromtxt('./test/Psi_test_{0}.csv'.format(idx+1), delimiter=',')
-#     Y_test = np.genfromtxt('./test/Y_test_{0}.csv'.format(idx+1))
-
-#     clf = RegressionFastLaplace(verbose=True)
-#     clf.fit_(Psi_train, Y_train, sigma2)
-#     coeffs_fold = np.genfromtxt('./test/coeffs_fold_{0}.csv'.format(idx+1))
-#     print("coeffs error: {0:.4g}".format(np.linalg.norm(clf.coef_ - coeffs_fold)))
-#     l2norm += np.linalg.norm(Y_test - clf.predict(Psi_test))**2/len(Y_test)
-#     print("l2norm error: {0:.4g}".format(l2norm))
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/sequential_design.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/sequential_design.py
deleted file mode 100644
index e1feb7317..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/sequential_design.py	
+++ /dev/null
@@ -1,2187 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Created on Fri Jan 28 09:21:18 2022
-
-@author: farid
-"""
-import numpy as np
-from scipy import stats, signal, linalg, sparse
-from scipy.spatial import distance
-from copy import deepcopy, copy
-from tqdm import tqdm
-import scipy.optimize as opt
-from sklearn.metrics import mean_squared_error
-import multiprocessing
-import matplotlib.pyplot as plt
-import sys
-import os
-import gc
-import seaborn as sns
-from joblib import Parallel, delayed
-#import resource
-from .exploration import Exploration
-
-
-class SeqDesign():
-    """ Sequential experimental design
-    This class provieds method for trainig the meta-model in an iterative
-    manners.
-    The main method to execute the task is `train_seq_design`, which
-      recieves a model object and returns the trained metamodel.
-    """
-
-    # -------------------------------------------------------------------------
-    def train_seq_design(self, MetaModel):
-        """
-        Starts the adaptive sequential design for refining the surrogate model
-        by selecting training points in a sequential manner.
-
-        Parameters
-        ----------
-        Model : object
-            An object containing all model specifications.
-
-        Returns
-        -------
-        MetaModel : object
-            Meta model object.
-
-        """
-        # MetaModel = self
-        Model = MetaModel.ModelObj
-        self.MetaModel = MetaModel
-        self.Model = Model
-
-        # Initialization
-        MetaModel.SeqModifiedLOO = {}
-        MetaModel.seqValidError = {}
-        MetaModel.SeqBME = {}
-        MetaModel.SeqKLD = {}
-        MetaModel.SeqDistHellinger = {}
-        MetaModel.seqRMSEMean = {}
-        MetaModel.seqRMSEStd = {}
-        MetaModel.seqMinDist = []
-        pce = True if MetaModel.meta_model_type.lower() != 'gpe' else False
-        mc_ref = True if bool(Model.mc_reference) else False
-        if mc_ref:
-            Model.read_mc_reference()
-
-        if not hasattr(MetaModel, 'valid_likelihoods'):
-            MetaModel.valid_samples = []
-            MetaModel.valid_model_runs = []
-            MetaModel.valid_likelihoods = []
-
-        # Get the parameters
-        max_n_samples = MetaModel.ExpDesign.n_max_samples
-        mod_LOO_threshold = MetaModel.ExpDesign.mod_LOO_threshold
-        n_canddidate = MetaModel.ExpDesign.n_canddidate
-        post_snapshot = MetaModel.ExpDesign.post_snapshot
-        n_replication = MetaModel.ExpDesign.n_replication
-        util_func = MetaModel.ExpDesign.util_func
-        output_name = Model.Output.names
-        validError = None
-        # Handle if only one UtilityFunctions is provided
-        if not isinstance(util_func, list):
-            util_func = [MetaModel.ExpDesign.util_func]
-
-        # Read observations or MCReference
-        if len(Model.observations) != 0 or Model.meas_file is not None:
-            self.observations = Model.read_observation()
-            obs_data = self.observations
-        else:
-            obs_data = []
-            TotalSigma2 = {}
-        # ---------- Initial MetaModel ----------
-        initMetaModel = deepcopy(MetaModel)
-
-        # Validation error if validation set is provided.
-        if len(MetaModel.valid_model_runs) != 0:
-            init_rmse, init_valid_error = self.__validError(initMetaModel)
-            init_valid_error = list(init_valid_error.values())
-        else:
-            init_rmse = None
-
-        # Check if discrepancy is provided
-        if len(obs_data) != 0 and hasattr(MetaModel, 'Discrepancy'):
-            TotalSigma2 = MetaModel.Discrepancy.parameters
-
-            # Calculate the initial BME
-            out = self.__BME_Calculator(
-                initMetaModel, obs_data, TotalSigma2, init_rmse)
-            init_BME, init_KLD, init_post, init_likes, init_dist_hellinger = out
-            print(f"\nInitial BME: {init_BME:.2f}")
-            print(f"Initial KLD: {init_KLD:.2f}")
-
-            # Posterior snapshot (initial)
-            if post_snapshot:
-                parNames = MetaModel.ExpDesign.par_names
-                print('Posterior snapshot (initial) is being plotted...')
-                self.__posteriorPlot(init_post, parNames, 'SeqPosterior_init')
-
-        # Check the convergence of the Mean & Std
-        if mc_ref and pce:
-            init_rmse_mean, init_rmse_std = self.__error_Mean_Std()
-            print(f"Initial Mean and Std error: {init_rmse_mean},"
-                  f" {init_rmse_std}")
-
-        # Read the initial experimental design
-        Xinit = initMetaModel.ExpDesign.X
-        init_n_samples = len(MetaModel.ExpDesign.X)
-        initYprev = initMetaModel.ModelOutputDict
-        initLCerror = initMetaModel.LCerror
-        n_itrs = max_n_samples - init_n_samples
-
-        # Read the initial ModifiedLOO
-        if pce:
-            Scores_all, varExpDesignY = [], []
-            for out_name in output_name:
-                y = initMetaModel.ExpDesign.Y[out_name]
-                Scores_all.append(list(
-                    initMetaModel.score_dict['b_1'][out_name].values()))
-                if MetaModel.dim_red_method.lower() == 'pca':
-                    pca = MetaModel.pca['b_1'][out_name]
-                    components = pca.transform(y)
-                    varExpDesignY.append(np.var(components, axis=0))
-                else:
-                    varExpDesignY.append(np.var(y, axis=0))
-
-            Scores = [item for sublist in Scores_all for item in sublist]
-            weights = [item for sublist in varExpDesignY for item in sublist]
-            init_mod_LOO = [np.average([1-score for score in Scores],
-                                       weights=weights)]
-
-        prevMetaModel_dict = {}
-        # Replicate the sequential design
-        for repIdx in range(n_replication):
-            print(f'\n>>>> Replication: {repIdx+1}<<<<')
-
-            # To avoid changes ub original aPCE object
-            MetaModel.ExpDesign.X = Xinit
-            MetaModel.ExpDesign.Y = initYprev
-            MetaModel.LCerror = initLCerror
-
-            for util_f in util_func:
-                print(f'\n>>>> Utility Function: {util_f} <<<<')
-                # To avoid changes ub original aPCE object
-                MetaModel.ExpDesign.X = Xinit
-                MetaModel.ExpDesign.Y = initYprev
-                MetaModel.LCerror = initLCerror
-
-                # Set the experimental design
-                Xprev = Xinit
-                total_n_samples = init_n_samples
-                Yprev = initYprev
-
-                Xfull = []
-                Yfull = []
-
-                # Store the initial ModifiedLOO
-                if pce:
-                    print("\nInitial ModifiedLOO:", init_mod_LOO)
-                    SeqModifiedLOO = np.array(init_mod_LOO)
-
-                if len(MetaModel.valid_model_runs) != 0:
-                    SeqValidError = np.array(init_valid_error)
-
-                # Check if data is provided
-                if len(obs_data) != 0:
-                    SeqBME = np.array([init_BME])
-                    SeqKLD = np.array([init_KLD])
-                    SeqDistHellinger = np.array([init_dist_hellinger])
-
-                if mc_ref and pce:
-                    seqRMSEMean = np.array([init_rmse_mean])
-                    seqRMSEStd = np.array([init_rmse_std])
-
-                # ------- Start Sequential Experimental Design -------
-                postcnt = 1
-                for itr_no in range(1, n_itrs+1):
-                    print(f'\n>>>> Iteration number {itr_no} <<<<')
-
-                    # Save the metamodel prediction before updating
-                    prevMetaModel_dict[itr_no] = deepcopy(MetaModel)
-                    if itr_no > 1:
-                        pc_model = prevMetaModel_dict[itr_no-1]
-                        self._y_hat_prev, _ = pc_model.eval_metamodel(
-                            samples=Xfull[-1].reshape(1, -1))
-
-                    # Optimal Bayesian Design
-                    m_1 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-                    MetaModel.ExpDesignFlag = 'sequential'
-                    Xnew, updatedPrior = self.opt_SeqDesign(TotalSigma2,
-                                                            n_canddidate,
-                                                            util_f)
-                    m_2 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-                    S = np.min(distance.cdist(Xinit, Xnew, 'euclidean'))
-                    MetaModel.seqMinDist.append(S)
-                    print(f"\nmin Dist from OldExpDesign: {S:2f}")
-                    print("\n")
-
-                    # Evaluate the full model response at the new sample
-                    Ynew, _ = Model.run_model_parallel(
-                        Xnew, prevRun_No=total_n_samples
-                        )
-                    total_n_samples += Xnew.shape[0]
-                    # ------ Plot the surrogate model vs Origninal Model ------
-                    if hasattr(MetaModel, 'adapt_verbose') and \
-                       MetaModel.adapt_verbose:
-                        from .adaptPlot import adaptPlot
-                        y_hat, std_hat = MetaModel.eval_metamodel(samples=Xnew)
-                        adaptPlot(MetaModel, Ynew, y_hat, std_hat, plotED=False)
-
-                    # -------- Retrain the surrogate model -------
-                    # Extend new experimental design
-                    Xfull = np.vstack((Xprev, Xnew))
-
-                    # Updating experimental design Y
-                    for out_name in output_name:
-                        Yfull = np.vstack((Yprev[out_name], Ynew[out_name]))
-                        MetaModel.ModelOutputDict[out_name] = Yfull
-
-                    # Pass new design to the metamodel object
-                    MetaModel.ExpDesign.sampling_method = 'user'
-                    MetaModel.ExpDesign.X = Xfull
-                    MetaModel.ExpDesign.Y = MetaModel.ModelOutputDict
-
-                    # Save the Experimental Design for next iteration
-                    Xprev = Xfull
-                    Yprev = MetaModel.ModelOutputDict
-
-                    # Pass the new prior as the input
-                    MetaModel.input_obj.poly_coeffs_flag = False
-                    if updatedPrior is not None:
-                        MetaModel.input_obj.poly_coeffs_flag = True
-                        print("updatedPrior:", updatedPrior.shape)
-                        # Arbitrary polynomial chaos
-                        for i in range(updatedPrior.shape[1]):
-                            MetaModel.input_obj.Marginals[i].dist_type = None
-                            x = updatedPrior[:, i]
-                            MetaModel.input_obj.Marginals[i].raw_data = x
-
-                    # Train the surrogate model for new ExpDesign
-                    MetaModel.train_norm_design(parallel=False)
-                    m_3 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-
-                    # -------- Evaluate the retrained surrogate model -------
-                    # Extract Modified LOO from Output
-                    if pce:
-                        Scores_all, varExpDesignY = [], []
-                        for out_name in output_name:
-                            y = MetaModel.ExpDesign.Y[out_name]
-                            Scores_all.append(list(
-                                MetaModel.score_dict['b_1'][out_name].values()))
-                            if MetaModel.dim_red_method.lower() == 'pca':
-                                pca = MetaModel.pca['b_1'][out_name]
-                                components = pca.transform(y)
-                                varExpDesignY.append(np.var(components,
-                                                            axis=0))
-                            else:
-                                varExpDesignY.append(np.var(y, axis=0))
-                        Scores = [item for sublist in Scores_all for item
-                                  in sublist]
-                        weights = [item for sublist in varExpDesignY for item
-                                   in sublist]
-                        ModifiedLOO = [np.average(
-                            [1-score for score in Scores], weights=weights)]
-
-                        print('\n')
-                        print(f"Updated ModifiedLOO {util_f}:\n", ModifiedLOO)
-                        print('\n')
-
-                    # Compute the validation error
-                    if len(MetaModel.valid_model_runs) != 0:
-                        rmse, validError = self.__validError(MetaModel)
-                        ValidError = list(validError.values())
-                    else:
-                        rmse = None
-
-                    # Store updated ModifiedLOO
-                    if pce:
-                        SeqModifiedLOO = np.vstack(
-                            (SeqModifiedLOO, ModifiedLOO))
-                        if len(MetaModel.valid_model_runs) != 0:
-                            SeqValidError = np.vstack(
-                                (SeqValidError, ValidError))
-                    m_4 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-                    # -------- Caclulation of BME as accuracy metric -------
-                    # Check if data is provided
-                    if len(obs_data) != 0:
-                        # Calculate the initial BME
-                        out = self.__BME_Calculator(MetaModel, obs_data,
-                                                    TotalSigma2, rmse)
-                        BME, KLD, Posterior, likes, DistHellinger = out
-                        print('\n')
-                        print(f"Updated BME: {BME:.2f}")
-                        print(f"Updated KLD: {KLD:.2f}")
-                        print('\n')
-
-                        # Plot some snapshots of the posterior
-                        step_snapshot = MetaModel.ExpDesign.step_snapshot
-                        if post_snapshot and postcnt % step_snapshot == 0:
-                            parNames = MetaModel.ExpDesign.par_names
-                            print('Posterior snapshot is being plotted...')
-                            self.__posteriorPlot(Posterior, parNames,
-                                                 f'SeqPosterior_{postcnt}')
-                        postcnt += 1
-                    m_5 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-
-                    # Check the convergence of the Mean&Std
-                    if mc_ref and pce:
-                        print('\n')
-                        RMSE_Mean, RMSE_std = self.__error_Mean_Std()
-                        print(f"Updated Mean and Std error: {RMSE_Mean:.2f}, "
-                              f"{RMSE_std:.2f}")
-                        print('\n')
-
-                    # Store the updated BME & KLD
-                    # Check if data is provided
-                    if len(obs_data) != 0:
-                        SeqBME = np.vstack((SeqBME, BME))
-                        SeqKLD = np.vstack((SeqKLD, KLD))
-                        SeqDistHellinger = np.vstack((SeqDistHellinger,
-                                                      DistHellinger))
-                    if mc_ref and pce:
-                        seqRMSEMean = np.vstack((seqRMSEMean, RMSE_Mean))
-                        seqRMSEStd = np.vstack((seqRMSEStd, RMSE_std))
-
-                    if pce and any(LOO < mod_LOO_threshold
-                                   for LOO in ModifiedLOO):
-                        break
-
-                    print(f"Memory itr {itr_no}: I: {m_2-m_1:.2f} MB")
-                    print(f"Memory itr {itr_no}: II: {m_3-m_2:.2f} MB")
-                    print(f"Memory itr {itr_no}: III: {m_4-m_3:.2f} MB")
-                    print(f"Memory itr {itr_no}: IV: {m_5-m_4:.2f} MB")
-                    m_6 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-                    print(f"Memory itr {itr_no}: total: {m_6:.2f} MB")
-
-                    # Clean up
-                    if len(obs_data) != 0:
-                        del out
-                    gc.collect()
-                    print()
-                    print('-'*50)
-                    print()
-
-                # Store updated ModifiedLOO and BME in dictonary
-                strKey = f'{util_f}_rep_{repIdx+1}'
-                if pce:
-                    MetaModel.SeqModifiedLOO[strKey] = SeqModifiedLOO
-                if len(MetaModel.valid_model_runs) != 0:
-                    MetaModel.seqValidError[strKey] = SeqValidError
-
-                # Check if data is provided
-                if len(obs_data) != 0:
-                    MetaModel.SeqBME[strKey] = SeqBME
-                    MetaModel.SeqKLD[strKey] = SeqKLD
-                if len(MetaModel.valid_likelihoods) != 0:
-                    MetaModel.SeqDistHellinger[strKey] = SeqDistHellinger
-                if mc_ref and pce:
-                    MetaModel.seqRMSEMean[strKey] = seqRMSEMean
-                    MetaModel.seqRMSEStd[strKey] = seqRMSEStd
-
-        return MetaModel
-
-    # -------------------------------------------------------------------------
-    def util_VarBasedDesign(self, X_can, index, util_func='Entropy'):
-        """
-        Computes the exploitation scores based on:
-        active learning MacKay(ALM) and active learning Cohn (ALC)
-        Paper: Sequential Design with Mutual Information for Computer
-        Experiments (MICE): Emulation of a Tsunami Model by Beck and Guillas
-        (2016)
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        index : int
-            Model output index.
-        UtilMethod : string, optional
-            Exploitation utility function. The default is 'Entropy'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-        MetaModel = self.MetaModel
-        ED_X = MetaModel.ExpDesign.X
-        out_dict_y = MetaModel.ExpDesign.Y
-        out_names = MetaModel.ModelObj.Output.names
-
-        # Run the Metamodel for the candidate
-        X_can = X_can.reshape(1, -1)
-        Y_PC_can, std_PC_can = MetaModel.eval_metamodel(samples=X_can)
-
-        if util_func.lower() == 'alm':
-            # ----- Entropy/MMSE/active learning MacKay(ALM)  -----
-            # Compute perdiction variance of the old model
-            canPredVar = {key: std_PC_can[key]**2 for key in out_names}
-
-            varPCE = np.zeros((len(out_names), X_can.shape[0]))
-            for KeyIdx, key in enumerate(out_names):
-                varPCE[KeyIdx] = np.max(canPredVar[key], axis=1)
-            score = np.max(varPCE, axis=0)
-
-        elif util_func.lower() == 'eigf':
-            # ----- Expected Improvement for Global fit -----
-            # Find closest EDX to the candidate
-            distances = distance.cdist(ED_X, X_can, 'euclidean')
-            index = np.argmin(distances)
-
-            # Compute perdiction error and variance of the old model
-            predError = {key: Y_PC_can[key] for key in out_names}
-            canPredVar = {key: std_PC_can[key]**2 for key in out_names}
-
-            # Compute perdiction error and variance of the old model
-            # Eq (5) from Liu et al.(2018)
-            EIGF_PCE = np.zeros((len(out_names), X_can.shape[0]))
-            for KeyIdx, key in enumerate(out_names):
-                residual = predError[key] - out_dict_y[key][int(index)]
-                var = canPredVar[key]
-                EIGF_PCE[KeyIdx] = np.max(residual**2 + var, axis=1)
-            score = np.max(EIGF_PCE, axis=0)
-
-        return -1 * score   # -1 is for minimization instead of maximization
-
-    # -------------------------------------------------------------------------
-    def util_BayesianActiveDesign(self, X_can, sigma2Dict, var='DKL'):
-        """
-        Computes scores based on Bayesian active design criterion (var).
-
-        It is based on the following paper:
-        Oladyshkin, Sergey, Farid Mohammadi, Ilja Kroeker, and Wolfgang Nowak.
-        "Bayesian3 active learning for the gaussian process emulator using
-        information theory." Entropy 22, no. 8 (2020): 890.
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        var : string, optional
-            BAL design criterion. The default is 'DKL'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-
-        # Evaluate the PCE metamodels at that location ???
-        Y_mean_can, Y_std_can = self.MetaModel.eval_metamodel(
-            samples=np.array([X_can])
-            )
-
-        # Get the data
-        obs_data = self.observations
-        n_obs = self.Model.n_obs
-        # TODO: Analytical DKL
-        # Sample a distribution for a normal dist
-        # with Y_mean_can as the mean and Y_std_can as std.
-
-        # priorMean, priorSigma2, Obs = np.empty((0)),np.empty((0)),np.empty((0))
-
-        # for key in list(Y_mean_can):
-        #     # concatenate the measurement error
-        #     Obs = np.hstack((Obs,ObservationData[key]))
-
-        #     # concatenate the mean and variance of prior predictive
-        #     means, stds = Y_mean_can[key][0], Y_std_can[key][0]
-        #     priorMean = np.hstack((priorSigma2,means))
-        #     priorSigma2 = np.hstack((priorSigma2,stds**2))
-
-        # # Covariance Matrix of prior
-        # covPrior = np.zeros((priorSigma2.shape[0], priorSigma2.shape[0]), float)
-        # np.fill_diagonal(covPrior, priorSigma2)
-
-        # # Covariance Matrix of Likelihood
-        # covLikelihood = np.zeros((sigma2Dict.shape[0], sigma2Dict.shape[0]), float)
-        # np.fill_diagonal(covLikelihood, sigma2Dict)
-
-        # # Calculate moments of the posterior (Analytical derivation)
-        # n = priorSigma2.shape[0]
-        # covPost = np.dot(np.dot(covPrior,np.linalg.inv(covPrior+(covLikelihood/n))),covLikelihood/n)
-
-        # meanPost = np.dot(np.dot(covPrior,np.linalg.inv(covPrior+(covLikelihood/n))) , Obs) + \
-        #             np.dot(np.dot(covPrior,np.linalg.inv(covPrior+(covLikelihood/n))),
-        #                     priorMean/n)
-        # # Compute DKL from prior to posterior
-        # term1 = np.trace(np.dot(np.linalg.inv(covPrior),covPost))
-        # deltaMean = priorMean-meanPost
-        # term2 = np.dot(np.dot(deltaMean,np.linalg.inv(covPrior)),deltaMean[:,None])
-        # term3 = np.log(np.linalg.det(covPrior)/np.linalg.det(covPost))
-        # DKL = 0.5 * (term1 + term2 - n + term3)[0]
-
-        # ---------- Inner MC simulation for computing Utility Value ----------
-        # Estimation of the integral via Monte Varlo integration
-        MCsize = 20000
-        ESS = 0
-
-        while ((ESS > MCsize) or (ESS < 1)):
-
-            # Sample a distribution for a normal dist
-            # with Y_mean_can as the mean and Y_std_can as std.
-            Y_MC, std_MC = {}, {}
-            logPriorLikelihoods = np.zeros((MCsize))
-            for key in list(Y_mean_can):
-                means, stds = Y_mean_can[key][0], Y_std_can[key][0]
-                # cov = np.zeros((means.shape[0], means.shape[0]), float)
-                # np.fill_diagonal(cov, stds**2)
-
-                Y_MC[key] = np.zeros((MCsize, n_obs))
-                logsamples = np.zeros((MCsize, n_obs))
-                for i in range(n_obs):
-                    NormalDensity = stats.norm(means[i], stds[i])
-                    Y_MC[key][:, i] = NormalDensity.rvs(MCsize)
-                    logsamples[:, i] = NormalDensity.logpdf(Y_MC[key][:, i])
-
-                logPriorLikelihoods = np.sum(logsamples, axis=1)
-                std_MC[key] = np.zeros((MCsize, means.shape[0]))
-
-            #  Likelihood computation (Comparison of data and simulation
-            #  results via PCE with candidate design)
-            likelihoods = self.__normpdf(Y_MC, std_MC, obs_data, sigma2Dict)
-
-            # Check the Effective Sample Size (1<ESS<MCsize)
-            ESS = 1 / np.sum(np.square(likelihoods/np.nansum(likelihoods)))
-
-            # Enlarge sample size if it doesn't fulfill the criteria
-            if ((ESS > MCsize) or (ESS < 1)):
-                MCsize *= 10
-                ESS = 0
-
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, MCsize)[0]
-
-        # Reject the poorly performed prior
-        accepted = (likelihoods/np.max(likelihoods)) >= unif
-
-        # Prior-based estimation of BME
-        logBME = np.log(np.nanmean(likelihoods))
-
-        # Posterior-based expectation of likelihoods
-        postLikelihoods = likelihoods[accepted]
-        postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-        # Posterior-based expectation of prior densities
-        postExpPrior = np.mean(logPriorLikelihoods[accepted])
-
-        # Utility function Eq.2 in Ref. (2)
-        # Posterior covariance matrix after observing data y
-        # Kullback-Leibler Divergence (Sergey's paper)
-        if var == 'DKL':
-
-            # TODO: Calculate the correction factor for BME
-            # BMECorrFactor = self.BME_Corr_Weight(PCE_SparseBayes_can,
-            #                                      ObservationData, sigma2Dict)
-            # BME += BMECorrFactor
-            # Haun et al implementation
-            # U_J_d = np.mean(np.log(Likelihoods[Likelihoods!=0])- logBME)
-            U_J_d = postExpLikelihoods - logBME
-
-        # Marginal log likelihood
-        elif var == 'BME':
-            U_J_d = logBME
-
-        # Entropy-based information gain
-        elif var == 'infEntropy':
-            logBME = np.log(np.nanmean(likelihoods))
-            infEntropy = logBME - postExpPrior - postExpLikelihoods
-            U_J_d = infEntropy * -1  # -1 for minimization
-
-        # Bayesian information criterion
-        elif var == 'BIC':
-            coeffs = self.MetaModel.coeffs_dict.values()
-            nModelParams = max(len(v) for val in coeffs for v in val.values())
-            maxL = np.nanmax(likelihoods)
-            U_J_d = -2 * np.log(maxL) + np.log(n_obs) * nModelParams
-
-        # Akaike information criterion
-        elif var == 'AIC':
-            coeffs = self.MetaModel.coeffs_dict.values()
-            nModelParams = max(len(v) for val in coeffs for v in val.values())
-            maxlogL = np.log(np.nanmax(likelihoods))
-            AIC = -2 * maxlogL + 2 * nModelParams
-            # 2 * nModelParams * (nModelParams+1) / (n_obs-nModelParams-1)
-            penTerm = 0
-            U_J_d = 1*(AIC + penTerm)
-
-        # Deviance information criterion
-        elif var == 'DIC':
-            # D_theta_bar = np.mean(-2 * Likelihoods)
-            N_star_p = 0.5 * np.var(np.log(likelihoods[likelihoods != 0]))
-            Likelihoods_theta_mean = self.__normpdf(
-                Y_mean_can, Y_std_can, obs_data, sigma2Dict
-                )
-            DIC = -2 * np.log(Likelihoods_theta_mean) + 2 * N_star_p
-
-            U_J_d = DIC
-
-        else:
-            print('The algorithm you requested has not been implemented yet!')
-
-        # Handle inf and NaN (replace by zero)
-        if np.isnan(U_J_d) or U_J_d == -np.inf or U_J_d == np.inf:
-            U_J_d = 0.0
-
-        # Clear memory
-        del likelihoods
-        del Y_MC
-        del std_MC
-        gc.collect(generation=2)
-
-        return -1 * U_J_d   # -1 is for minimization instead of maximization
-
-    # -------------------------------------------------------------------------
-    def update_metamodel(self, MetaModel, output, y_hat_can, univ_p_val, index,
-                         new_pca=False):
-        BasisIndices = MetaModel.basis_dict[output]["y_"+str(index+1)]
-        clf_poly = MetaModel.clf_poly[output]["y_"+str(index+1)]
-        Mn = clf_poly.coef_
-        Sn = clf_poly.sigma_
-        beta = clf_poly.alpha_
-        active = clf_poly.active_
-        Psi = self.MetaModel.create_psi(BasisIndices, univ_p_val)
-
-        Sn_new_inv = np.linalg.inv(Sn)
-        Sn_new_inv += beta * np.dot(Psi[:, active].T, Psi[:, active])
-        Sn_new = np.linalg.inv(Sn_new_inv)
-
-        Mn_new = np.dot(Sn_new_inv, Mn[active]).reshape(-1, 1)
-        Mn_new += beta * np.dot(Psi[:, active].T, y_hat_can)
-        Mn_new = np.dot(Sn_new, Mn_new).flatten()
-
-        # Compute the old and new moments of PCEs
-        mean_old = Mn[0]
-        mean_new = Mn_new[0]
-        std_old = np.sqrt(np.sum(np.square(Mn[1:])))
-        std_new = np.sqrt(np.sum(np.square(Mn_new[1:])))
-
-        # Back transformation if PCA is selected.
-        if MetaModel.dim_red_method.lower() == 'pca':
-            old_pca = MetaModel.pca[output]
-            mean_old = old_pca.mean_[index]
-            mean_old += np.sum(mean_old * old_pca.components_[:, index])
-            std_old = np.sqrt(np.sum(std_old**2 *
-                                     old_pca.components_[:, index]**2))
-            mean_new = new_pca.mean_[index]
-            mean_new += np.sum(mean_new * new_pca.components_[:, index])
-            std_new = np.sqrt(np.sum(std_new**2 *
-                                     new_pca.components_[:, index]**2))
-            # print(f"mean_old: {mean_old:.2f} mean_new: {mean_new:.2f}")
-            # print(f"std_old: {std_old:.2f} std_new: {std_new:.2f}")
-        # Store the old and new moments of PCEs
-        results = {
-            'mean_old': mean_old,
-            'mean_new': mean_new,
-            'std_old': std_old,
-            'std_new': std_new
-            }
-        return results
-
-    # -------------------------------------------------------------------------
-    def util_BayesianDesign_old(self, X_can, X_MC, sigma2Dict, var='DKL'):
-        """
-        Computes scores based on Bayesian sequential design criterion (var).
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        var : string, optional
-            Bayesian design criterion. The default is 'DKL'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-
-        # To avoid changes ub original aPCE object
-        Model = self.Model
-        MetaModel = deepcopy(self.MetaModel)
-        old_EDY = MetaModel.ExpDesign.Y
-
-        # Evaluate the PCE metamodels using the candidate design
-        Y_PC_can, Y_std_can = self.MetaModel.eval_metamodel(
-            samples=np.array([X_can])
-            )
-
-        # Generate y from posterior predictive
-        m_size = 100
-        y_hat_samples = {}
-        for idx, key in enumerate(Model.Output.names):
-            means, stds = Y_PC_can[key][0], Y_std_can[key][0]
-            y_hat_samples[key] = np.random.multivariate_normal(
-                means, np.diag(stds), m_size)
-
-        # Create the SparseBayes-based PCE metamodel:
-        MetaModel.input_obj.poly_coeffs_flag = False
-        univ_p_val = self.MetaModel.univ_basis_vals(X_can)
-        G_n_m_all = np.zeros((m_size, len(Model.Output.names), Model.n_obs))
-
-        for i in range(m_size):
-            for idx, key in enumerate(Model.Output.names):
-                if MetaModel.dim_red_method.lower() == 'pca':
-                    # Equal number of components
-                    new_outputs = np.vstack(
-                        (old_EDY[key], y_hat_samples[key][i])
-                        )
-                    new_pca, _ = MetaModel.pca_transformation(new_outputs)
-                    target = new_pca.transform(
-                        y_hat_samples[key][i].reshape(1, -1)
-                        )[0]
-                else:
-                    new_pca, target = False, y_hat_samples[key][i]
-
-                for j in range(len(target)):
-
-                    # Update surrogate
-                    result = self.update_metamodel(
-                        MetaModel, key, target[j], univ_p_val, j, new_pca)
-
-                    # Compute Expected Information Gain (Eq. 39)
-                    G_n_m = np.log(result['std_old']/result['std_new']) - 1./2
-                    G_n_m += result['std_new']**2 / (2*result['std_old']**2)
-                    G_n_m += (result['mean_new'] - result['mean_old'])**2 /\
-                        (2*result['std_old']**2)
-
-                    G_n_m_all[i, idx, j] = G_n_m
-
-        U_J_d = G_n_m_all.mean(axis=(1, 2)).mean()
-        return -1 * U_J_d
-
-    # -------------------------------------------------------------------------
-    def util_BayesianDesign(self, X_can, X_MC, sigma2Dict, var='DKL'):
-        """
-        Computes scores based on Bayesian sequential design criterion (var).
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        var : string, optional
-            Bayesian design criterion. The default is 'DKL'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-
-        # To avoid changes ub original aPCE object
-        Model = self.Model
-        MetaModel = deepcopy(self.MetaModel)
-        out_names = MetaModel.ModelObj.Output.names
-        if X_can.ndim == 1:
-            X_can = X_can.reshape(1, -1)
-
-        # Compute the mean and std based on the MetaModel
-        # pce_means, pce_stds = self._compute_pce_moments(MetaModel)
-        if var == 'ALC':
-            Y_MC, Y_MC_std = MetaModel.eval_metamodel(samples=X_MC)
-
-        # Old Experimental design
-        oldExpDesignX = MetaModel.ExpDesign.X
-        oldExpDesignY = MetaModel.ExpDesign.Y
-
-        # Evaluate the PCE metamodels at that location ???
-        Y_PC_can, Y_std_can = MetaModel.eval_metamodel(samples=X_can)
-
-        # Add all suggestion as new ExpDesign
-        NewExpDesignX = np.vstack((oldExpDesignX, X_can))
-
-        NewExpDesignY = {}
-        for key in oldExpDesignY.keys():
-            try:
-                NewExpDesignY[key] = np.vstack((oldExpDesignY[key],
-                                                Y_PC_can[key]))
-            except:
-                NewExpDesignY[key] = oldExpDesignY[key]
-
-        MetaModel.ExpDesign.sampling_method = 'user'
-        MetaModel.ExpDesign.X = NewExpDesignX
-        MetaModel.ExpDesign.Y = NewExpDesignY
-
-        # Train the model for the observed data using x_can
-        MetaModel.input_obj.poly_coeffs_flag = False
-        MetaModel.train_norm_design(parallel=False)
-        PCE_Model_can = MetaModel
-
-        if var.lower() == 'mi':
-            # Mutual information based on Krause et al
-            # Adapted from Beck & Guillas (MICE) paper
-            _, std_PC_can = PCE_Model_can.eval_metamodel(samples=X_can)
-            std_can = {key: std_PC_can[key] for key in out_names}
-
-            std_old = {key: Y_std_can[key] for key in out_names}
-
-            varPCE = np.zeros((len(out_names)))
-            for i, key in enumerate(out_names):
-                varPCE[i] = np.mean(std_old[key]**2/std_can[key]**2)
-            score = np.mean(varPCE)
-
-            return -1 * score
-
-        elif var.lower() == 'alc':
-            # Active learning based on Gramyc and Lee
-            # Adaptive design and analysis of supercomputer experiments Techno-
-            # metrics, 51 (2009), pp. 130–145.
-
-            # Evaluate the MetaModel at the given samples
-            Y_MC_can, Y_MC_std_can = PCE_Model_can.eval_metamodel(samples=X_MC)
-
-            # Compute the score
-            score = []
-            for i, key in enumerate(out_names):
-                pce_var = Y_MC_std_can[key]**2
-                pce_var_can = Y_MC_std[key]**2
-                score.append(np.mean(pce_var-pce_var_can, axis=0))
-            score = np.mean(score)
-
-            return -1 * score
-
-        # ---------- Inner MC simulation for computing Utility Value ----------
-        # Estimation of the integral via Monte Varlo integration
-        MCsize = X_MC.shape[0]
-        ESS = 0
-
-        while ((ESS > MCsize) or (ESS < 1)):
-
-            # Enriching Monte Carlo samples if need be
-            if ESS != 0:
-                X_MC = self.MetaModel.ExpDesign.generate_samples(
-                    MCsize, 'random'
-                    )
-
-            # Evaluate the MetaModel at the given samples
-            Y_MC, std_MC = PCE_Model_can.eval_metamodel(samples=X_MC)
-
-            # Likelihood computation (Comparison of data and simulation
-            # results via PCE with candidate design)
-            likelihoods = self.__normpdf(
-                Y_MC, std_MC, self.observations, sigma2Dict
-                )
-
-            # Check the Effective Sample Size (1<ESS<MCsize)
-            ESS = 1 / np.sum(np.square(likelihoods/np.sum(likelihoods)))
-
-            # Enlarge sample size if it doesn't fulfill the criteria
-            if ((ESS > MCsize) or (ESS < 1)):
-                print("--- increasing MC size---")
-                MCsize *= 10
-                ESS = 0
-
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, MCsize)[0]
-
-        # Reject the poorly performed prior
-        accepted = (likelihoods/np.max(likelihoods)) >= unif
-
-        # -------------------- Utility functions --------------------
-        # Utility function Eq.2 in Ref. (2)
-        # Kullback-Leibler Divergence (Sergey's paper)
-        if var == 'DKL':
-
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods, dtype=np.float128))
-
-            # Posterior-based expectation of likelihoods
-            postLikelihoods = likelihoods[accepted]
-            postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-            # Haun et al implementation
-            U_J_d = np.mean(np.log(likelihoods[likelihoods != 0]) - logBME)
-
-            # U_J_d = np.sum(G_n_m_all)
-            # Ryan et al (2014) implementation
-            # importanceWeights = Likelihoods[Likelihoods!=0]/np.sum(Likelihoods[Likelihoods!=0])
-            # U_J_d = np.mean(importanceWeights*np.log(Likelihoods[Likelihoods!=0])) - logBME
-
-            # U_J_d = postExpLikelihoods - logBME
-
-        # Marginal likelihood
-        elif var == 'BME':
-
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods))
-            U_J_d = logBME
-
-        # Bayes risk likelihood
-        elif var == 'BayesRisk':
-
-            U_J_d = -1 * np.var(likelihoods)
-
-        # Entropy-based information gain
-        elif var == 'infEntropy':
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods))
-
-            # Posterior-based expectation of likelihoods
-            postLikelihoods = likelihoods[accepted] / np.nansum(likelihoods[accepted])
-            postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-            # Posterior-based expectation of prior densities
-            postExpPrior = np.mean(logPriorLikelihoods[accepted])
-
-            infEntropy = logBME - postExpPrior - postExpLikelihoods
-
-            U_J_d = infEntropy * -1  # -1 for minimization
-
-        # D-Posterior-precision
-        elif var == 'DPP':
-            X_Posterior = X_MC[accepted]
-            # covariance of the posterior parameters
-            U_J_d = -np.log(np.linalg.det(np.cov(X_Posterior)))
-
-        # A-Posterior-precision
-        elif var == 'APP':
-            X_Posterior = X_MC[accepted]
-            # trace of the posterior parameters
-            U_J_d = -np.log(np.trace(np.cov(X_Posterior)))
-
-        else:
-            print('The algorithm you requested has not been implemented yet!')
-
-        # Clear memory
-        del likelihoods
-        del Y_MC
-        del std_MC
-        gc.collect(generation=2)
-
-        return -1 * U_J_d   # -1 is for minimization instead of maximization
-
-    # -------------------------------------------------------------------------
-    def subdomain(self, Bounds, n_new_samples):
-        """
-        Divides a domain defined by Bounds into sub domains.
-
-        Parameters
-        ----------
-        Bounds : list of tuples
-            List of lower and upper bounds.
-        n_new_samples : TYPE
-            DESCRIPTION.
-
-        Returns
-        -------
-        Subdomains : TYPE
-            DESCRIPTION.
-
-        """
-        n_params = self.MetaModel.n_params
-        n_subdomains = n_new_samples + 1
-        LinSpace = np.zeros((n_params, n_subdomains))
-
-        for i in range(n_params):
-            LinSpace[i] = np.linspace(start=Bounds[i][0], stop=Bounds[i][1],
-                                      num=n_subdomains)
-        Subdomains = []
-        for k in range(n_subdomains-1):
-            mylist = []
-            for i in range(n_params):
-                mylist.append((LinSpace[i, k+0], LinSpace[i, k+1]))
-            Subdomains.append(tuple(mylist))
-
-        return Subdomains
-
-    # -------------------------------------------------------------------------
-    def run_util_func(self, method, candidates, index, sigma2Dict=None,
-                      var=None, X_MC=None):
-        """
-        Runs the utility function based on the given method.
-
-        Parameters
-        ----------
-        method : string
-            Exploitation method: `VarOptDesign`, `BayesActDesign` and
-            `BayesOptDesign`.
-        candidates : array of shape (n_samples, n_params)
-            All candidate parameter sets.
-        index : int
-            ExpDesign index.
-        sigma2Dict : dict, optional
-            A dictionary containing the measurement errors (sigma^2). The
-            default is None.
-        var : string, optional
-            Utility function. The default is None.
-        X_MC : TYPE, optional
-            DESCRIPTION. The default is None.
-
-        Returns
-        -------
-        index : TYPE
-            DESCRIPTION.
-        List
-            Scores.
-
-        """
-
-        if method.lower() == 'varoptdesign':
-            # U_J_d = self.util_VarBasedDesign(candidates, index, var)
-            U_J_d = np.zeros((candidates.shape[0]))
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="varoptdesign"):
-                U_J_d[idx] = self.util_VarBasedDesign(X_can, index, var)
-
-        elif method.lower() == 'bayesactdesign':
-            NCandidate = candidates.shape[0]
-            U_J_d = np.zeros((NCandidate))
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="OptBayesianDesign"):
-                U_J_d[idx] = self.util_BayesianActiveDesign(X_can, sigma2Dict,
-                                                            var)
-        elif method.lower() == 'bayesoptdesign':
-            NCandidate = candidates.shape[0]
-            U_J_d = np.zeros((NCandidate))
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="OptBayesianDesign"):
-                U_J_d[idx] = self.util_BayesianDesign(X_can, X_MC, sigma2Dict,
-                                                      var)
-        return (index, -1 * U_J_d)
-
-    # -------------------------------------------------------------------------
-    def dual_annealing(self, method, Bounds, sigma2Dict, var, Run_No,
-                       verbose=False):
-        """
-        Exploration algorithim to find the optimum parameter space.
-
-        Parameters
-        ----------
-        method : string
-            Exploitation method: `VarOptDesign`, `BayesActDesign` and
-            `BayesOptDesign`.
-        Bounds : list of tuples
-            List of lower and upper boundaries of parameters.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        Run_No : int
-            Run number.
-        verbose : bool, optional
-            Print out a summary. The default is False.
-
-        Returns
-        -------
-        Run_No : int
-            Run number.
-        array
-            Optimial candidate.
-
-        """
-
-        Model = self.Model
-        max_func_itr = self.MetaModel.ExpDesign.max_func_itr
-
-        if method == 'VarOptDesign':
-            Res_Global = opt.dual_annealing(self.util_VarBasedDesign,
-                                            bounds=Bounds,
-                                            args=(Model, var),
-                                            maxfun=max_func_itr)
-
-        elif method == 'BayesOptDesign':
-            Res_Global = opt.dual_annealing(self.util_BayesianDesign,
-                                            bounds=Bounds,
-                                            args=(Model, sigma2Dict, var),
-                                            maxfun=max_func_itr)
-
-        if verbose:
-            print(f"Global minimum: xmin = {Res_Global.x}, "
-                  f"f(xmin) = {Res_Global.fun:.6f}, nfev = {Res_Global.nfev}")
-
-        return (Run_No, Res_Global.x)
-
-    # -------------------------------------------------------------------------
-    def tradoff_weights(self, tradeoff_scheme, old_EDX, old_EDY):
-        """
-        Calculates weights for exploration scores based on the requested
-        scheme: `None`, `equal`, `epsilon-decreasing` and `adaptive`.
-
-        `None`: No exploration.
-        `equal`: Same weights for exploration and exploitation scores.
-        `epsilon-decreasing`: Start with more exploration and increase the
-            influence of exploitation along the way with a exponential decay
-            function
-        `adaptive`: An adaptive method based on:
-            Liu, Haitao, Jianfei Cai, and Yew-Soon Ong. "An adaptive sampling
-            approach for Kriging metamodeling by maximizing expected prediction
-            error." Computers & Chemical Engineering 106 (2017): 171-182.
-
-        Parameters
-        ----------
-        tradeoff_scheme : string
-            Trade-off scheme for exloration and exploitation scores.
-        old_EDX : array (n_samples, n_params)
-            Old experimental design (training points).
-        old_EDY : dict
-            Old model responses (targets).
-
-        Returns
-        -------
-        exploration_weight : float
-            Exploration weight.
-        exploitation_weight: float
-            Exploitation weight.
-
-        """
-        if tradeoff_scheme is None:
-            exploration_weight = 0
-
-        elif tradeoff_scheme == 'equal':
-            exploration_weight = 0.5
-
-        elif tradeoff_scheme == 'epsilon-decreasing':
-            # epsilon-decreasing scheme
-            # Start with more exploration and increase the influence of
-            # exploitation along the way with a exponential decay function
-            initNSamples = self.MetaModel.ExpDesign.n_init_samples
-            n_max_samples = self.MetaModel.ExpDesign.n_max_samples
-
-            itrNumber = (self.MetaModel.ExpDesign.X.shape[0] - initNSamples)
-            itrNumber //= self.MetaModel.ExpDesign.n_new_samples
-
-            tau2 = -(n_max_samples-initNSamples-1) / np.log(1e-8)
-            exploration_weight = signal.exponential(n_max_samples-initNSamples,
-                                                    0, tau2, False)[itrNumber]
-
-        elif tradeoff_scheme == 'adaptive':
-
-            # Extract itrNumber
-            initNSamples = self.MetaModel.ExpDesign.n_init_samples
-            n_max_samples = self.MetaModel.ExpDesign.n_max_samples
-            itrNumber = (self.MetaModel.ExpDesign.X.shape[0] - initNSamples)
-            itrNumber //= self.MetaModel.ExpDesign.n_new_samples
-
-            if itrNumber == 0:
-                exploration_weight = 0.5
-            else:
-                # New adaptive trade-off according to Liu et al. (2017)
-                # Mean squared error for last design point
-                last_EDX = old_EDX[-1].reshape(1, -1)
-                lastPCEY, _ = self.MetaModel.eval_metamodel(samples=last_EDX)
-                pce_y = np.array(list(lastPCEY.values()))[:, 0]
-                y = np.array(list(old_EDY.values()))[:, -1, :]
-                mseError = mean_squared_error(pce_y, y)
-
-                # Mean squared CV - error for last design point
-                pce_y_prev = np.array(list(self._y_hat_prev.values()))[:, 0]
-                mseCVError = mean_squared_error(pce_y_prev, y)
-
-                exploration_weight = min([0.5*mseError/mseCVError, 1])
-
-        # Exploitation weight
-        exploitation_weight = 1 - exploration_weight
-
-        return exploration_weight, exploitation_weight
-
-    # -------------------------------------------------------------------------
-    def opt_SeqDesign(self, sigma2, n_candidates=5, var='DKL'):
-        """
-        Runs optimal sequential design.
-
-        Parameters
-        ----------
-        sigma2 : dict, optional
-            A dictionary containing the measurement errors (sigma^2). The
-            default is None.
-        n_candidates : int, optional
-            Number of candidate samples. The default is 5.
-        var : string, optional
-            Utility function. The default is None.
-
-        Raises
-        ------
-        NameError
-            Wrong utility function.
-
-        Returns
-        -------
-        Xnew : array (n_samples, n_params)
-            Selected new training point(s).
-        """
-
-        # Initialization
-        MetaModel = self.MetaModel
-        Bounds = MetaModel.bound_tuples
-        n_new_samples = MetaModel.ExpDesign.n_new_samples
-        explore_method = MetaModel.ExpDesign.explore_method
-        exploit_method = MetaModel.ExpDesign.exploit_method
-        n_cand_groups = MetaModel.ExpDesign.n_cand_groups
-        tradeoff_scheme = MetaModel.ExpDesign.tradeoff_scheme
-
-        old_EDX = MetaModel.ExpDesign.X
-        old_EDY = MetaModel.ExpDesign.Y.copy()
-        ndim = MetaModel.ExpDesign.X.shape[1]
-        OutputNames = MetaModel.ModelObj.Output.names
-
-        # -----------------------------------------
-        # ----------- CUSTOMIZED METHODS ----------
-        # -----------------------------------------
-        # Utility function exploit_method provided by user
-        if exploit_method.lower() == 'user':
-
-            Xnew, filteredSamples = MetaModel.ExpDesign.ExploitFunction(self)
-
-            print("\n")
-            print("\nXnew:\n", Xnew)
-
-            return Xnew, filteredSamples
-
-        # -----------------------------------------
-        # ---------- EXPLORATION METHODS ----------
-        # -----------------------------------------
-        if explore_method == 'dual annealing':
-            # ------- EXPLORATION: OPTIMIZATION -------
-            import time
-            start_time = time.time()
-
-            # Divide the domain to subdomains
-            args = []
-            subdomains = self.subdomain(Bounds, n_new_samples)
-            for i in range(n_new_samples):
-                args.append((exploit_method, subdomains[i], sigma2, var, i))
-
-            # Multiprocessing
-            pool = multiprocessing.Pool(multiprocessing.cpu_count())
-
-            # With Pool.starmap_async()
-            results = pool.starmap_async(self.dual_annealing, args).get()
-
-            # Close the pool
-            pool.close()
-
-            Xnew = np.array([results[i][1] for i in range(n_new_samples)])
-
-            print("\nXnew:\n", Xnew)
-
-            elapsed_time = time.time() - start_time
-            print("\n")
-            print(f"Elapsed_time: {round(elapsed_time,2)} sec.")
-            print('-'*20)
-
-        elif explore_method == 'LOOCV':
-            # -----------------------------------------------------------------
-            # TODO: LOOCV model construnction based on Feng et al. (2020)
-            # 'LOOCV':
-            # Initilize the ExploitScore array
-
-            # Generate random samples
-            allCandidates = MetaModel.ExpDesign.generate_samples(n_candidates,
-                                                                'random')
-
-            # Construct error model based on LCerror
-            errorModel = MetaModel.create_ModelError(old_EDX, self.LCerror)
-            self.errorModel.append(copy(errorModel))
-
-            # Evaluate the error models for allCandidates
-            eLCAllCands, _ = errorModel.eval_errormodel(allCandidates)
-            # Select the maximum as the representative error
-            eLCAllCands = np.dstack(eLCAllCands.values())
-            eLCAllCandidates = np.max(eLCAllCands, axis=1)[:, 0]
-
-            # Normalize the error w.r.t the maximum error
-            scoreExploration = eLCAllCandidates / np.sum(eLCAllCandidates)
-
-        else:
-            # ------- EXPLORATION: SPACE-FILLING DESIGN -------
-            # Generate candidate samples from Exploration class
-            explore = Exploration(MetaModel, n_candidates)
-            explore.w = 100  # * ndim #500
-            # Select criterion (mc-intersite-proj-th, mc-intersite-proj)
-            explore.mc_criterion = 'mc-intersite-proj'
-            allCandidates, scoreExploration = explore.get_exploration_samples()
-
-            # Temp: ---- Plot all candidates -----
-            if ndim == 2:
-                def plotter(points, allCandidates, Method,
-                            scoreExploration=None):
-                    if Method == 'Voronoi':
-                        from scipy.spatial import Voronoi, voronoi_plot_2d
-                        vor = Voronoi(points)
-                        fig = voronoi_plot_2d(vor)
-                        ax1 = fig.axes[0]
-                    else:
-                        fig = plt.figure()
-                        ax1 = fig.add_subplot(111)
-                    ax1.scatter(points[:, 0], points[:, 1], s=10, c='r',
-                                marker="s", label='Old Design Points')
-                    ax1.scatter(allCandidates[:, 0], allCandidates[:, 1], s=10,
-                                c='b', marker="o", label='Design candidates')
-                    for i in range(points.shape[0]):
-                        txt = 'p'+str(i+1)
-                        ax1.annotate(txt, (points[i, 0], points[i, 1]))
-                    if scoreExploration is not None:
-                        for i in range(allCandidates.shape[0]):
-                            txt = str(round(scoreExploration[i], 5))
-                            ax1.annotate(txt, (allCandidates[i, 0],
-                                               allCandidates[i, 1]))
-
-                    plt.xlim(self.bound_tuples[0])
-                    plt.ylim(self.bound_tuples[1])
-                    # plt.show()
-                    plt.legend(loc='upper left')
-
-        # -----------------------------------------
-        # --------- EXPLOITATION METHODS ----------
-        # -----------------------------------------
-        if exploit_method == 'BayesOptDesign' or\
-           exploit_method == 'BayesActDesign':
-
-            # ------- Calculate Exoploration weight -------
-            # Compute exploration weight based on trade off scheme
-            explore_w, exploit_w = self.tradoff_weights(tradeoff_scheme,
-                                                        old_EDX,
-                                                        old_EDY)
-            print(f"\n Exploration weight={explore_w:0.3f} "
-                  f"Exploitation weight={exploit_w:0.3f}\n")
-
-            # ------- EXPLOITATION: BayesOptDesign & ActiveLearning -------
-            if explore_w != 1.0:
-
-                # Create a sample pool for rejection sampling
-                MCsize = 15000
-                X_MC = MetaModel.ExpDesign.generate_samples(MCsize, 'random')
-                candidates = MetaModel.ExpDesign.generate_samples(
-                    MetaModel.ExpDesign.max_func_itr, 'latin_hypercube')
-
-                # Split the candidates in groups for multiprocessing
-                split_cand = np.array_split(
-                    candidates, n_cand_groups, axis=0
-                    )
-
-                results = Parallel(n_jobs=-1, backend='threading')(
-                        delayed(self.run_util_func)(
-                            exploit_method, split_cand[i], i, sigma2, var, X_MC)
-                        for i in range(n_cand_groups))
-                # out = map(self.run_util_func,
-                #           [exploit_method]*n_cand_groups,
-                #           split_cand,
-                #           range(n_cand_groups),
-                #           [sigma2] * n_cand_groups,
-                #           [var] * n_cand_groups,
-                #           [X_MC] * n_cand_groups
-                #           )
-                # results = list(out)
-
-                # Retrieve the results and append them
-                U_J_d = np.concatenate([results[NofE][1] for NofE in
-                                        range(n_cand_groups)])
-
-                # Check if all scores are inf
-                if np.isinf(U_J_d).all() or np.isnan(U_J_d).all():
-                    U_J_d = np.ones(len(U_J_d))
-
-                # Get the expected value (mean) of the Utility score
-                # for each cell
-                if explore_method == 'Voronoi':
-                    U_J_d = np.mean(U_J_d.reshape(-1, n_candidates), axis=1)
-
-                # create surrogate model for U_J_d
-                from sklearn.preprocessing import MinMaxScaler
-                # Take care of inf entries
-                good_indices = [i for i, arr in enumerate(U_J_d)
-                                if np.isfinite(arr).all()]
-                scaler = MinMaxScaler()
-                X_S = scaler.fit_transform(candidates[good_indices])
-                gp = MetaModel.gaussian_process_emulator(
-                    X_S, U_J_d[good_indices], autoSelect=True
-                    )
-                U_J_d = gp.predict(scaler.transform(allCandidates))
-
-                # Normalize U_J_d
-                norm_U_J_d = U_J_d / np.sum(U_J_d)
-                print("norm_U_J_d:\n", norm_U_J_d)
-            else:
-                norm_U_J_d = np.zeros((len(scoreExploration)))
-
-            # ------- Calculate Total score -------
-            # ------- Trade off between EXPLORATION & EXPLOITATION -------
-            # Total score
-            totalScore = exploit_w * norm_U_J_d
-            totalScore += explore_w * scoreExploration
-
-            # temp: Plot
-            # dim = self.ExpDesign.X.shape[1]
-            # if dim == 2:
-            #     plotter(self.ExpDesign.X, allCandidates, explore_method)
-
-            # ------- Select the best candidate -------
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            temp = totalScore.copy()
-            temp[np.isnan(totalScore)] = -np.inf
-            sorted_idxtotalScore = np.argsort(temp)[::-1]
-            bestIdx = sorted_idxtotalScore[:n_new_samples]
-
-            # select the requested number of samples
-            if explore_method == 'Voronoi':
-                Xnew = np.zeros((n_new_samples, ndim))
-                for i, idx in enumerate(bestIdx):
-                    X_can = explore.closestPoints[idx]
-
-                    # Calculate the maxmin score for the region of interest
-                    newSamples, maxminScore = explore.get_mc_samples(X_can)
-
-                    # select the requested number of samples
-                    Xnew[i] = newSamples[np.argmax(maxminScore)]
-            else:
-                Xnew = allCandidates[sorted_idxtotalScore[:n_new_samples]]
-
-        elif exploit_method == 'VarOptDesign':
-            # ------- EXPLOITATION: VarOptDesign -------
-            UtilMethod = var
-
-            # ------- Calculate Exoploration weight -------
-            # Compute exploration weight based on trade off scheme
-            explore_w, exploit_w = self.tradoff_weights(tradeoff_scheme,
-                                                        old_EDX,
-                                                        old_EDY)
-            print(f"\nweightExploration={explore_w:0.3f} "
-                  f"weightExploitation={exploit_w:0.3f}")
-
-            # Generate candidate samples from Exploration class
-            nMeasurement = old_EDY[OutputNames[0]].shape[1]
-
-            # Find sensitive region
-            if UtilMethod == 'LOOCV':
-                LCerror = MetaModel.LCerror
-                allModifiedLOO = np.zeros((len(old_EDX), len(OutputNames),
-                                           nMeasurement))
-                for y_idx, y_key in enumerate(OutputNames):
-                    for idx, key in enumerate(LCerror[y_key].keys()):
-                        allModifiedLOO[:, y_idx, idx] = abs(
-                            LCerror[y_key][key])
-
-                ExploitScore = np.max(np.max(allModifiedLOO, axis=1), axis=1)
-
-            elif UtilMethod in ['EIGF', 'ALM']:
-                # ----- All other in  ['EIGF', 'ALM'] -----
-                # Initilize the ExploitScore array
-                ExploitScore = np.zeros((len(old_EDX), len(OutputNames)))
-
-                # Split the candidates in groups for multiprocessing
-                if explore_method != 'Voronoi':
-                    split_cand = np.array_split(allCandidates,
-                                                n_cand_groups,
-                                                axis=0)
-                    goodSampleIdx = range(n_cand_groups)
-                else:
-                    # Find indices of the Vornoi cells with samples
-                    goodSampleIdx = []
-                    for idx in range(len(explore.closest_points)):
-                        if len(explore.closest_points[idx]) != 0:
-                            goodSampleIdx.append(idx)
-                    split_cand = explore.closest_points
-
-                # Split the candidates in groups for multiprocessing
-                args = []
-                for index in goodSampleIdx:
-                    args.append((exploit_method, split_cand[index], index,
-                                 sigma2, var))
-
-                # Multiprocessing
-                pool = multiprocessing.Pool(multiprocessing.cpu_count())
-                # With Pool.starmap_async()
-                results = pool.starmap_async(self.run_util_func, args).get()
-
-                # Close the pool
-                pool.close()
-                # out = map(self.run_util_func,
-                #           [exploit_method]*len(goodSampleIdx),
-                #           split_cand,
-                #           range(len(goodSampleIdx)),
-                #           [sigma2] * len(goodSampleIdx),
-                #           [var] * len(goodSampleIdx)
-                #           )
-                # results = list(out)
-
-                # Retrieve the results and append them
-                if explore_method == 'Voronoi':
-                    ExploitScore = [np.mean(results[k][1]) for k in
-                                    range(len(goodSampleIdx))]
-                else:
-                    ExploitScore = np.concatenate(
-                        [results[k][1] for k in range(len(goodSampleIdx))])
-
-            else:
-                raise NameError('The requested utility function is not '
-                                'available.')
-
-            # print("ExploitScore:\n", ExploitScore)
-
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            # Total score
-            # Normalize U_J_d
-            ExploitScore = ExploitScore / np.sum(ExploitScore)
-            totalScore = exploit_w * ExploitScore
-            totalScore += explore_w * scoreExploration
-
-            temp = totalScore.copy()
-            sorted_idxtotalScore = np.argsort(temp, axis=0)[::-1]
-            bestIdx = sorted_idxtotalScore[:n_new_samples]
-
-            Xnew = np.zeros((n_new_samples, ndim))
-            if explore_method != 'Voronoi':
-                Xnew = allCandidates[bestIdx]
-            else:
-                for i, idx in enumerate(bestIdx.flatten()):
-                    X_can = explore.closest_points[idx]
-                    # plotter(self.ExpDesign.X, X_can, explore_method,
-                    # scoreExploration=None)
-
-                    # Calculate the maxmin score for the region of interest
-                    newSamples, maxminScore = explore.get_mc_samples(X_can)
-
-                    # select the requested number of samples
-                    Xnew[i] = newSamples[np.argmax(maxminScore)]
-
-        elif exploit_method == 'alphabetic':
-            # ------- EXPLOITATION: ALPHABETIC -------
-            Xnew = self.util_AlphOptDesign(allCandidates, var)
-
-        elif exploit_method == 'Space-filling':
-            # ------- EXPLOITATION: SPACE-FILLING -------
-            totalScore = scoreExploration
-
-            # ------- Select the best candidate -------
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            temp = totalScore.copy()
-            temp[np.isnan(totalScore)] = -np.inf
-            sorted_idxtotalScore = np.argsort(temp)[::-1]
-
-            # select the requested number of samples
-            Xnew = allCandidates[sorted_idxtotalScore[:n_new_samples]]
-
-        else:
-            raise NameError('The requested design method is not available.')
-
-        print("\n")
-        print("\nRun No. {}:".format(old_EDX.shape[0]+1))
-        print("Xnew:\n", Xnew)
-        gc.collect()
-
-        return Xnew, None
-
-    # -------------------------------------------------------------------------
-    def util_AlphOptDesign(self, candidates, var='D-Opt'):
-        """
-        Enriches the Experimental design with the requested alphabetic
-        criterion based on exploring the space with number of sampling points.
-
-        Ref: Hadigol, M., & Doostan, A. (2018). Least squares polynomial chaos
-        expansion: A review of sampling strategies., Computer Methods in
-        Applied Mechanics and Engineering, 332, 382-407.
-
-        Arguments
-        ---------
-        NCandidate : int
-            Number of candidate points to be searched
-
-        var : string
-            Alphabetic optimality criterion
-
-        Returns
-        -------
-        X_new : array of shape (1, n_params)
-            The new sampling location in the input space.
-        """
-        MetaModelOrig = self
-        Model = self.Model
-        n_new_samples = MetaModelOrig.ExpDesign.n_new_samples
-        NCandidate = candidates.shape[0]
-
-        # TODO: Loop over outputs
-        OutputName = Model.Output.names[0]
-
-        # To avoid changes ub original aPCE object
-        MetaModel = deepcopy(MetaModelOrig)
-
-        # Old Experimental design
-        oldExpDesignX = MetaModel.ExpDesign.X
-
-        # TODO: Only one psi can be selected.
-        # Suggestion: Go for the one with the highest LOO error
-        Scores = list(MetaModel.score_dict[OutputName].values())
-        ModifiedLOO = [1-score for score in Scores]
-        outIdx = np.argmax(ModifiedLOO)
-
-        # Initialize Phi to save the criterion's values
-        Phi = np.zeros((NCandidate))
-
-        BasisIndices = MetaModelOrig.basis_dict[OutputName]["y_"+str(outIdx+1)]
-        P = len(BasisIndices)
-
-        # ------ Old Psi ------------
-        univ_p_val = MetaModelOrig.univ_basis_vals(oldExpDesignX)
-        Psi = MetaModelOrig.create_psi(BasisIndices, univ_p_val)
-
-        # ------ New candidates (Psi_c) ------------
-        # Assemble Psi_c
-        univ_p_val_c = self.univ_basis_vals(candidates)
-        Psi_c = self.create_psi(BasisIndices, univ_p_val_c)
-
-        for idx in range(NCandidate):
-
-            # Include the new row to the original Psi
-            Psi_cand = np.vstack((Psi, Psi_c[idx]))
-
-            # Information matrix
-            PsiTPsi = np.dot(Psi_cand.T, Psi_cand)
-            M = PsiTPsi / (len(oldExpDesignX)+1)
-
-            if np.linalg.cond(PsiTPsi) > 1e-12 \
-               and np.linalg.cond(PsiTPsi) < 1 / sys.float_info.epsilon:
-                # faster
-                invM = linalg.solve(M, sparse.eye(PsiTPsi.shape[0]).toarray())
-            else:
-                # stabler
-                invM = np.linalg.pinv(M)
-
-            # ---------- Calculate optimality criterion ----------
-            # Optimality criteria according to Section 4.5.1 in Ref.
-
-            # D-Opt
-            if var == 'D-Opt':
-                Phi[idx] = (np.linalg.det(invM)) ** (1/P)
-
-            # A-Opt
-            elif var == 'A-Opt':
-                Phi[idx] = np.trace(invM)
-
-            # K-Opt
-            elif var == 'K-Opt':
-                Phi[idx] = np.linalg.cond(M)
-
-            else:
-                raise Exception('The optimality criterion you requested has '
-                      'not been implemented yet!')
-
-        # find an optimal point subset to add to the initial design
-        # by minimization of the Phi
-        sorted_idxtotalScore = np.argsort(Phi)
-
-        # select the requested number of samples
-        Xnew = candidates[sorted_idxtotalScore[:n_new_samples]]
-
-        return Xnew
-
-    # -------------------------------------------------------------------------
-    def __normpdf(self, y_hat_pce, std_pce, obs_data, total_sigma2s,
-                  rmse=None):
-
-        Model = self.Model
-        likelihoods = 1.0
-
-        # Loop over the outputs
-        for idx, out in enumerate(Model.Output.names):
-
-            # (Meta)Model Output
-            nsamples, nout = y_hat_pce[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout].values
-
-            # Surrogate error if valid dataset is given.
-            if rmse is not None:
-                tot_sigma2s += rmse[out]**2
-
-            likelihoods *= stats.multivariate_normal.pdf(
-                y_hat_pce[out], data, np.diag(tot_sigma2s),
-                allow_singular=True)
-        self.Likelihoods = likelihoods
-
-        return likelihoods
-
-    # -------------------------------------------------------------------------
-    def __corr_factor_BME(self, obs_data, total_sigma2s, logBME):
-        """
-        Calculates the correction factor for BMEs.
-        """
-        MetaModel = self.MetaModel
-        samples = MetaModel.ExpDesign.X  # valid_samples
-        model_outputs = MetaModel.ExpDesign.Y  # valid_model_runs
-        Model = MetaModel.ModelObj
-        n_samples = samples.shape[0]
-
-        # Extract the requested model outputs for likelihood calulation
-        output_names = Model.Output.names
-
-        # TODO: Evaluate MetaModel on the experimental design and ValidSet
-        OutputRS, stdOutputRS = MetaModel.eval_metamodel(samples=samples)
-
-        logLik_data = np.zeros((n_samples))
-        logLik_model = np.zeros((n_samples))
-        # Loop over the outputs
-        for idx, out in enumerate(output_names):
-
-            # (Meta)Model Output
-            nsamples, nout = model_outputs[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout]
-
-            # Covariance Matrix
-            covMatrix_data = np.diag(tot_sigma2s)
-
-            for i, sample in enumerate(samples):
-
-                # Simulation run
-                y_m = model_outputs[out][i]
-
-                # Surrogate prediction
-                y_m_hat = OutputRS[out][i]
-
-                # CovMatrix with the surrogate error
-                # covMatrix = np.diag(stdOutputRS[out][i]**2)
-                covMatrix = np.diag((y_m-y_m_hat)**2)
-                covMatrix = np.diag(
-                    np.mean((model_outputs[out]-OutputRS[out]), axis=0)**2
-                    )
-
-                # Compute likelilhood output vs data
-                logLik_data[i] += self.__logpdf(
-                    y_m_hat, data, covMatrix_data
-                    )
-
-                # Compute likelilhood output vs surrogate
-                logLik_model[i] += self.__logpdf(y_m_hat, y_m, covMatrix)
-
-        # Weight
-        logLik_data -= logBME
-        weights = np.exp(logLik_model+logLik_data)
-
-        return np.log(np.mean(weights))
-
-    # -------------------------------------------------------------------------
-    def __logpdf(self, x, mean, cov):
-        """
-        computes the likelihood based on a multivariate normal distribution.
-
-        Parameters
-        ----------
-        x : TYPE
-            DESCRIPTION.
-        mean : array_like
-            Observation data.
-        cov : 2d array
-            Covariance matrix of the distribution.
-
-        Returns
-        -------
-        log_lik : float
-            Log likelihood.
-
-        """
-        n = len(mean)
-        L = linalg.cholesky(cov, lower=True)
-        beta = np.sum(np.log(np.diag(L)))
-        dev = x - mean
-        alpha = dev.dot(linalg.cho_solve((L, True), dev))
-        log_lik = -0.5 * alpha - beta - n / 2. * np.log(2 * np.pi)
-
-        return log_lik
-
-    # -------------------------------------------------------------------------
-    def __posteriorPlot(self, posterior, par_names, key):
-
-        # Initialization
-        newpath = (r'Outputs_SeqPosteriorComparison/posterior')
-        os.makedirs(newpath, exist_ok=True)
-
-        bound_tuples = self.MetaModel.bound_tuples
-        n_params = len(par_names)
-        font_size = 40
-        if n_params == 2:
-
-            figPosterior, ax = plt.subplots(figsize=(15, 15))
-
-            sns.kdeplot(x=posterior[:, 0], y=posterior[:, 1],
-                        fill=True, ax=ax, cmap=plt.cm.jet,
-                        clip=bound_tuples)
-            # Axis labels
-            plt.xlabel(par_names[0], fontsize=font_size)
-            plt.ylabel(par_names[1], fontsize=font_size)
-
-            # Set axis limit
-            plt.xlim(bound_tuples[0])
-            plt.ylim(bound_tuples[1])
-
-            # Increase font size
-            plt.xticks(fontsize=font_size)
-            plt.yticks(fontsize=font_size)
-
-            # Switch off the grids
-            plt.grid(False)
-
-        else:
-            import corner
-            figPosterior = corner.corner(posterior, labels=par_names,
-                                         title_fmt='.2e', show_titles=True,
-                                         title_kwargs={"fontsize": 12})
-
-        figPosterior.savefig(f'./{newpath}/{key}.pdf', bbox_inches='tight')
-        plt.close()
-
-        # Save the posterior as .npy
-        np.save(f'./{newpath}/{key}.npy', posterior)
-
-        return figPosterior
-
-    # -------------------------------------------------------------------------
-    def __hellinger_distance(self, P, Q):
-        """
-        Hellinger distance between two continuous distributions.
-
-        The maximum distance 1 is achieved when P assigns probability zero to
-        every set to which Q assigns a positive probability, and vice versa.
-        0 (identical) and 1 (maximally different)
-
-        Parameters
-        ----------
-        P : array
-            Reference likelihood.
-        Q : array
-            Estimated likelihood.
-
-        Returns
-        -------
-        float
-            Hellinger distance of two distributions.
-
-        """
-        mu1 = P.mean()
-        Sigma1 = np.std(P)
-
-        mu2 = Q.mean()
-        Sigma2 = np.std(Q)
-
-        term1 = np.sqrt(2*Sigma1*Sigma2 / (Sigma1**2 + Sigma2**2))
-
-        term2 = np.exp(-.25 * (mu1 - mu2)**2 / (Sigma1**2 + Sigma2**2))
-
-        H_squared = 1 - term1 * term2
-
-        return np.sqrt(H_squared)
-
-    # -------------------------------------------------------------------------
-    def __BME_Calculator(self, MetaModel, obs_data, sigma2Dict, rmse=None):
-        """
-        This function computes the Bayesian model evidence (BME) via Monte
-        Carlo integration.
-
-        """
-        # Initializations
-        valid_likelihoods = MetaModel.valid_likelihoods
-
-        post_snapshot = MetaModel.ExpDesign.post_snapshot
-        if post_snapshot or len(valid_likelihoods) != 0:
-            newpath = (r'Outputs_SeqPosteriorComparison/likelihood_vs_ref')
-            os.makedirs(newpath, exist_ok=True)
-
-        SamplingMethod = 'random'
-        MCsize = 10000
-        ESS = 0
-
-        # Estimation of the integral via Monte Varlo integration
-        while (ESS > MCsize) or (ESS < 1):
-
-            # Generate samples for Monte Carlo simulation
-            X_MC = MetaModel.ExpDesign.generate_samples(
-                MCsize, SamplingMethod
-                )
-
-            # Monte Carlo simulation for the candidate design
-            m_1 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-            Y_MC, std_MC = MetaModel.eval_metamodel(samples=X_MC)
-            m_2 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-            print(f"\nMemory eval_metamodel in BME: {m_2-m_1:.2f} MB")
-
-            # Likelihood computation (Comparison of data and
-            # simulation results via PCE with candidate design)
-            Likelihoods = self.__normpdf(
-                Y_MC, std_MC, obs_data, sigma2Dict, rmse
-                )
-
-            # Check the Effective Sample Size (1000<ESS<MCsize)
-            ESS = 1 / np.sum(np.square(Likelihoods/np.sum(Likelihoods)))
-
-            # Enlarge sample size if it doesn't fulfill the criteria
-            if (ESS > MCsize) or (ESS < 1):
-                print(f'ESS={ESS} MC size should be larger.')
-                MCsize *= 10
-                ESS = 0
-
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, MCsize)[0]
-
-        # Reject the poorly performed prior
-        accepted = (Likelihoods/np.max(Likelihoods)) >= unif
-        X_Posterior = X_MC[accepted]
-
-        # ------------------------------------------------------------
-        # --- Kullback-Leibler Divergence & Information Entropy ------
-        # ------------------------------------------------------------
-        # Prior-based estimation of BME
-        logBME = np.log(np.nanmean(Likelihoods))
-
-        # TODO: Correction factor
-        # log_weight = self.__corr_factor_BME(obs_data, sigma2Dict, logBME)
-
-        # Posterior-based expectation of likelihoods
-        postExpLikelihoods = np.mean(np.log(Likelihoods[accepted]))
-
-        # Posterior-based expectation of prior densities
-        postExpPrior = np.mean(
-            np.log(MetaModel.ExpDesign.JDist.pdf(X_Posterior.T))
-            )
-
-        # Calculate Kullback-Leibler Divergence
-        # KLD = np.mean(np.log(Likelihoods[Likelihoods!=0])- logBME)
-        KLD = postExpLikelihoods - logBME
-
-        # Information Entropy based on Entropy paper Eq. 38
-        infEntropy = logBME - postExpPrior - postExpLikelihoods
-
-        # If post_snapshot is True, plot likelihood vs refrence
-        if post_snapshot or len(valid_likelihoods) != 0:
-            # Hellinger distance
-            ref_like = np.log(valid_likelihoods[valid_likelihoods > 0])
-            est_like = np.log(Likelihoods[Likelihoods > 0])
-            distHellinger = self.__hellinger_distance(ref_like, est_like)
-
-            idx = len([name for name in os.listdir(newpath) if 'Likelihoods_'
-                       in name and os.path.isfile(os.path.join(newpath, name))])
-            fig, ax = plt.subplots()
-            try:
-                sns.kdeplot(np.log(valid_likelihoods[valid_likelihoods > 0]),
-                            shade=True, color="g", label='Ref. Likelihood')
-                sns.kdeplot(np.log(Likelihoods[Likelihoods > 0]), shade=True,
-                            color="b", label='Likelihood with PCE')
-            except:
-                pass
-
-            text = f"Hellinger Dist.={distHellinger:.3f}\n logBME={logBME:.3f}"
-            "\n DKL={KLD:.3f}"
-
-            plt.text(0.05, 0.75, text, bbox=dict(facecolor='wheat',
-                                                 edgecolor='black',
-                                                 boxstyle='round,pad=1'),
-                     transform=ax.transAxes)
-
-            fig.savefig(f'./{newpath}/Likelihoods_{idx}.pdf',
-                        bbox_inches='tight')
-            plt.close()
-
-        else:
-            distHellinger = 0.0
-
-        # Bayesian inference with Emulator only for 2D problem
-        if post_snapshot and MetaModel.n_params == 2 and not idx % 5:
-            from bayes_inference.bayes_inference import BayesInference
-            from bayes_inference.discrepancy import Discrepancy
-            import pandas as pd
-            BayesOpts = BayesInference(MetaModel)
-            BayesOpts.emulator = True
-            BayesOpts.plot_post_pred = False
-
-            # Select the inference method
-            import emcee
-            BayesOpts.inference_method = "MCMC"
-            # Set the MCMC parameters passed to self.mcmc_params
-            BayesOpts.mcmc_params = {
-                'n_steps': 1e5,
-                'n_walkers': 30,
-                'moves': emcee.moves.KDEMove(),
-                'verbose': False
-                }
-
-            # ----- Define the discrepancy model -------
-            obs_data = pd.DataFrame(obs_data, columns=self.Model.Output.names)
-            BayesOpts.measurement_error = obs_data
-
-            # # -- (Option B) --
-            DiscrepancyOpts = Discrepancy('')
-            DiscrepancyOpts.type = 'Gaussian'
-            DiscrepancyOpts.parameters = obs_data**2
-            BayesOpts.Discrepancy = DiscrepancyOpts
-            # Start the calibration/inference
-            Bayes_PCE = BayesOpts.create_inference()
-            X_Posterior = Bayes_PCE.posterior_df.values
-
-        # Clean up
-        del Y_MC, std_MC
-        gc.collect()
-
-        return (logBME, KLD, X_Posterior, Likelihoods, distHellinger)
-
-    # -------------------------------------------------------------------------
-    def __validError(self, MetaModel):
-
-        # MetaModel = self.MetaModel
-        Model = MetaModel.ModelObj
-        OutputName = Model.Output.names
-
-        # Extract the original model with the generated samples
-        valid_samples = MetaModel.valid_samples
-        valid_model_runs = MetaModel.valid_model_runs
-
-        # Run the PCE model with the generated samples
-        m_1 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-        valid_PCE_runs, valid_PCE_std = MetaModel.eval_metamodel(samples=valid_samples)
-        m_2 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-        print(f"\nMemory eval_metamodel: {m_2-m_1:.2f} MB")
-
-        rms_error = {}
-        valid_error = {}
-        # Loop over the keys and compute RMSE error.
-        for key in OutputName:
-            rms_error[key] = mean_squared_error(
-                valid_model_runs[key], valid_PCE_runs[key],
-                multioutput='raw_values',
-                sample_weight=None,
-                squared=False)
-
-            # Validation error
-            valid_error[key] = (rms_error[key]**2)
-            valid_error[key] /= np.var(valid_model_runs[key], ddof=1, axis=0)
-
-            # Print a report table
-            print("\n>>>>> Updated Errors of {} <<<<<".format(key))
-            print("\nIndex  |  RMSE   |  Validation Error")
-            print('-'*35)
-            print('\n'.join(f'{i+1}  |  {k:.3e}  |  {j:.3e}' for i, (k, j)
-                            in enumerate(zip(rms_error[key],
-                                             valid_error[key]))))
-
-        return rms_error, valid_error
-
-    # -------------------------------------------------------------------------
-    def __error_Mean_Std(self):
-
-        MetaModel = self.MetaModel
-        # Extract the mean and std provided by user
-        df_MCReference = MetaModel.ModelObj.mc_reference
-
-        # Compute the mean and std based on the MetaModel
-        pce_means, pce_stds = self._compute_pce_moments(MetaModel)
-
-        # Compute the root mean squared error
-        for output in MetaModel.ModelObj.Output.names:
-
-            # Compute the error between mean and std of MetaModel and OrigModel
-            RMSE_Mean = mean_squared_error(
-                df_MCReference['mean'], pce_means[output], squared=False
-                )
-            RMSE_std = mean_squared_error(
-                df_MCReference['std'], pce_means[output], squared=False
-                )
-
-        return RMSE_Mean, RMSE_std
-
-    # -------------------------------------------------------------------------
-    def _compute_pce_moments(self, MetaModel):
-        """
-        Computes the first two moments using the PCE-based meta-model.
-
-        Returns
-        -------
-        pce_means: dict
-            The first moment (mean) of the surrogate.
-        pce_stds: dict
-            The second moment (standard deviation) of the surrogate.
-
-        """
-        outputs = MetaModel.ModelObj.Output.names
-        pce_means_b = {}
-        pce_stds_b = {}
-
-        # Loop over bootstrap iterations
-        for b_i in range(MetaModel.n_bootstrap_itrs):
-            # Loop over the metamodels
-            coeffs_dicts = MetaModel.coeffs_dict[f'b_{b_i+1}'].items()
-            means = {}
-            stds = {}
-            for output, coef_dict in coeffs_dicts:
-
-                pce_mean = np.zeros((len(coef_dict)))
-                pce_var = np.zeros((len(coef_dict)))
-
-                for index, values in coef_dict.items():
-                    idx = int(index.split('_')[1]) - 1
-                    coeffs = MetaModel.coeffs_dict[f'b_{b_i+1}'][output][index]
-
-                    # Mean = c_0
-                    if coeffs[0] != 0:
-                        pce_mean[idx] = coeffs[0]
-                    else:
-                        clf_poly = MetaModel.clf_poly[f'b_{b_i+1}'][output]
-                        pce_mean[idx] = clf_poly[index].intercept_
-                    # Var = sum(coeffs[1:]**2)
-                    pce_var[idx] = np.sum(np.square(coeffs[1:]))
-
-                # Save predictions for each output
-                if MetaModel.dim_red_method.lower() == 'pca':
-                    PCA = MetaModel.pca[f'b_{b_i+1}'][output]
-                    means[output] = PCA.mean_ + np.dot(
-                        pce_mean, PCA.components_)
-                    stds[output] = np.sqrt(np.dot(pce_var,
-                                                  PCA.components_**2))
-                else:
-                    means[output] = pce_mean
-                    stds[output] = np.sqrt(pce_var)
-
-            # Save predictions for each bootstrap iteration
-            pce_means_b[b_i] = means
-            pce_stds_b[b_i] = stds
-
-        # Change the order of nesting
-        mean_all = {}
-        for i in sorted(pce_means_b):
-            for k, v in pce_means_b[i].items():
-                if k not in mean_all:
-                    mean_all[k] = [None] * len(pce_means_b)
-                mean_all[k][i] = v
-        std_all = {}
-        for i in sorted(pce_stds_b):
-            for k, v in pce_stds_b[i].items():
-                if k not in std_all:
-                    std_all[k] = [None] * len(pce_stds_b)
-                std_all[k][i] = v
-
-        # Back transformation if PCA is selected.
-        pce_means, pce_stds = {}, {}
-        for output in outputs:
-            pce_means[output] = np.mean(mean_all[output], axis=0)
-            pce_stds[output] = np.mean(std_all[output], axis=0)
-
-        return pce_means, pce_stds
diff --git a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/surrogate_models.py b/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/surrogate_models.py
deleted file mode 100644
index a6d31ccd1..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/bayesvalidrox/surrogate_models/surrogate_models.py	
+++ /dev/null
@@ -1,1473 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import warnings
-import numpy as np
-import math
-import h5py
-import matplotlib.pyplot as plt
-from sklearn.preprocessing import MinMaxScaler
-import scipy as sp
-from tqdm import tqdm
-from sklearn.decomposition import PCA as sklearnPCA
-import sklearn.linear_model as lm
-from sklearn.gaussian_process import GaussianProcessRegressor
-import sklearn.gaussian_process.kernels as kernels
-import os
-from joblib import Parallel, delayed
-import copy
-
-from .input_space import InputSpace
-from .glexindex import glexindex
-from .eval_rec_rule import eval_univ_basis
-from .reg_fast_ard import RegressionFastARD
-from .reg_fast_laplace import RegressionFastLaplace
-from .orthogonal_matching_pursuit import OrthogonalMatchingPursuit
-from .bayes_linear import VBLinearRegression, EBLinearRegression
-from .apoly_construction import apoly_construction
-warnings.filterwarnings("ignore")
-# Load the mplstyle
-plt.style.use(os.path.join(os.path.split(__file__)[0],
-                           '../', 'bayesvalidrox.mplstyle'))
-
-
-class MetaModel():
-    """
-    Meta (surrogate) model
-
-    This class trains a surrogate model. It accepts an input object (input_obj)
-    containing the specification of the distributions for uncertain parameters
-    and a model object with instructions on how to run the computational model.
-
-    Attributes
-    ----------
-    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:
-        polynomial chaos expansion (`PCE`), arbitrary PCE (`aPCE`) and
-        Gaussian process regression (`GPE`). Default is PCE.
-    pce_reg_method : str
-        PCE regression method to compute the coefficients. The following
-        regression methods are available:
-
-        1. OLS: Ordinary Least Square method
-        2. BRR: Bayesian Ridge Regression
-        3. LARS: Least angle regression
-        4. ARD: Bayesian ARD Regression
-        5. FastARD: Fast Bayesian ARD Regression
-        6. VBL: Variational Bayesian Learning
-        7. EBL: Emperical Bayesian Learning
-        Default is `OLS`.
-    bootstrap_method : str
-        Bootstraping method. Options are `'normal'` and `'fast'`. The default
-        is `'fast'`. It means that in each iteration except the first one, only
-        the coefficent are recalculated with the ordinary least square method.
-    n_bootstrap_itrs : int
-        Number of iterations for the bootstrap sampling. The default is `1`.
-    pce_deg : int or list of int
-        Polynomial degree(s). If a list is given, an adaptive algorithm is used
-        to find the best degree with the lowest Leave-One-Out cross-validation
-        (LOO) error (or the highest score=1-LOO). Default is `1`.
-    pce_q_norm : float
-        Hyperbolic (or q-norm) truncation for multi-indices of multivariate
-        polynomials. Default is `1.0`.
-    dim_red_method : str
-        Dimensionality reduction method for the output space. The available
-        method is based on principal component analysis (PCA). The Default is
-        `'no'`. There are two ways to select number of components: use
-        percentage of the explainable variance threshold (between 0 and 100)
-        (Option A) or direct prescription of components' number (Option B):
-
-            >>> MetaModelOpts.dim_red_method = 'PCA'
-            >>> MetaModelOpts.var_pca_threshold = 99.999  # Option A
-            >>> MetaModelOpts.n_pca_components = 12 # Option B
-
-    verbose : bool
-        Prints summary of the regression results. Default is `False`.
-
-    Note
-    -------
-    To define the sampling methods and the training set, an experimental design
-    instance shall be defined. This can be done by:
-
-    >>> MetaModelOpts.add_InputSpace()
-
-    Two experimental design schemes are supported: one-shot (`normal`) and
-    adaptive sequential (`sequential`) designs.
-    For experimental design refer to `InputSpace`.
-
-    """
-
-    def __init__(self, input_obj, meta_model_type='PCE',
-                 pce_reg_method='OLS', bootstrap_method='fast',
-                 n_bootstrap_itrs=1, pce_deg=1, pce_q_norm=1.0,
-                 dim_red_method='no', verbose=False):
-
-        self.input_obj = input_obj
-        self.meta_model_type = meta_model_type
-        self.pce_reg_method = pce_reg_method
-        self.bootstrap_method = bootstrap_method
-        self.n_bootstrap_itrs = n_bootstrap_itrs
-        self.pce_deg = pce_deg
-        self.pce_q_norm = pce_q_norm
-        self.dim_red_method = dim_red_method
-        self.verbose = verbose
- 
-    def build_metamodel(self, n_init_samples = None) -> None:
-        """
-        Builds the parts for the metamodel (polynomes,...) that are neede before fitting.
-
-        Returns
-        -------
-        None
-            DESCRIPTION.
-
-        """
-        
-        # Add InputSpace to MetaModel if it does not have any
-        if not hasattr(self, 'InputSpace'):
-            self.InputSpace = InputSpace(self.input_obj)
-            self.InputSpace.n_init_samples = n_init_samples
-            self.InputSpace.init_param_space(np.max(self.pce_deg))
-            
-        self.ndim = self.InputSpace.ndim
-        
-        if not hasattr(self, 'CollocationPoints'):
-            raise AttributeError('Please provide samples to the metamodel before building it.')
-        
-        self.n_params = len(self.input_obj.Marginals)
-        
-        # Generate polynomials
-        if self.meta_model_type.lower() != 'gpe':
-            self.generate_polynomials(np.max(self.pce_deg))
-
-        # Initialize the nested dictionaries
-        if self.meta_model_type.lower() == 'gpe':
-            self.gp_poly = self.auto_vivification()
-            self.x_scaler = self.auto_vivification()
-            self.LCerror = self.auto_vivification()
-        else:
-            self.deg_dict = self.auto_vivification()
-            self.q_norm_dict = self.auto_vivification()
-            self.coeffs_dict = self.auto_vivification()
-            self.basis_dict = self.auto_vivification()
-            self.score_dict = self.auto_vivification()
-            self.clf_poly = self.auto_vivification()
-            self.LCerror = self.auto_vivification()
-        if self.dim_red_method.lower() == 'pca':
-            self.pca = self.auto_vivification()
-
-        # Define an array containing the degrees
-        self.CollocationPoints = np.array(self.CollocationPoints)
-        self.n_samples, ndim = self.CollocationPoints.shape
-        if self.ndim != ndim:
-            raise AttributeError('The given samples do not match the given number of priors. The samples should be a 2D array of size (#samples, #priors)')
-            
-        self.deg_array = self.__select_degree(ndim, self.n_samples)
-
-        # Generate all basis indices
-        self.allBasisIndices = self.auto_vivification()
-        for deg in self.deg_array:
-            keys = self.allBasisIndices.keys()
-            if deg not in np.fromiter(keys, dtype=float):
-                # Generate the polynomial basis indices
-                for qidx, q in enumerate(self.pce_q_norm):
-                    basis_indices = glexindex(start=0, stop=deg+1,
-                                              dimensions=self.n_params,
-                                              cross_truncation=q,
-                                              reverse=False, graded=True)
-                    self.allBasisIndices[str(deg)][str(q)] = basis_indices
-
-        
-        
-    def fit(self, X, y, parallel = True, verbose = False):
-        """
-        Fits the surrogate to the given data (samples X, outputs y).
-        Note here that the samples X should be the transformed samples provided
-        by the experimental design if the transformation is used there.
-
-        Parameters
-        ----------
-        X : 2D list or np.array of shape (#samples, #dim)
-            The parameter value combinations that the model was evaluated at.
-        y : dict of 2D lists or arrays of shape (#samples, #timesteps)
-            The respective model evaluations.
-
-        Returns
-        -------
-        None.
-
-        """
-        X = np.array(X)
-        for key in y.keys():
-            y_val = np.array(y[key])
-            if y_val.ndim !=2:
-                raise ValueError('The given outputs y should be 2D')
-            y[key] = np.array(y[key])
-        
-        # Output names are the same as the keys in y
-        self.out_names = list(y.keys())
-        
-        # Build the MetaModel on the static samples
-        self.CollocationPoints = X
-        
-        # TODO: other option: rebuild every time
-        if not hasattr(self, 'deg_array'):
-            self.build_metamodel(n_init_samples = X.shape[1])
-            
-        # Evaluate the univariate polynomials on InputSpace
-        if self.meta_model_type.lower() != 'gpe':
-           self.univ_p_val = self.univ_basis_vals(self.CollocationPoints)
-        
-        # --- Loop through data points and fit the surrogate ---
-        if verbose:
-            print(f"\n>>>> Training the {self.meta_model_type} metamodel "
-                  "started. <<<<<<\n")
-
-        # --- Bootstrap sampling ---
-        # Correct number of bootstrap if PCA transformation is required.
-        if self.dim_red_method.lower() == 'pca' and self.n_bootstrap_itrs == 1:
-            self.n_bootstrap_itrs = 100
-
-        # Check if fast version (update coeffs with OLS) is selected.
-        if self.bootstrap_method.lower() == 'fast':
-            fast_bootstrap = True
-            first_out = {}
-            n_comp_dict = {}
-        else:
-            fast_bootstrap = False
-
-        # Prepare tqdm iteration maessage
-        if verbose and self.n_bootstrap_itrs > 1:
-            enum_obj = tqdm(range(self.n_bootstrap_itrs),
-                            total=self.n_bootstrap_itrs,
-                            desc="Bootstrapping the metamodel",
-                            ascii=True)
-        else:
-            enum_obj = range(self.n_bootstrap_itrs)
-
-        # Loop over the bootstrap iterations
-        for b_i in enum_obj:
-            if b_i > 0:
-                b_indices = np.random.randint(self.n_samples, size=self.n_samples)
-            else:
-                b_indices = np.arange(len(X))
-
-            X_train_b = X[b_indices]
-
-            if verbose and self.n_bootstrap_itrs == 1:
-                items = tqdm(y.items(), desc="Fitting regression")
-            else:
-                items = y.items()
-
-            # For loop over the components/outputs
-            for key, Output in items:
-
-                # Dimensionality reduction with PCA, if specified
-                if self.dim_red_method.lower() == 'pca':
-
-                    # Use the stored n_comp for fast bootsrtrapping
-                    if fast_bootstrap and b_i > 0:
-                        self.n_pca_components = n_comp_dict[key]
-
-                    # Start transformation
-                    pca, target, n_comp = self.pca_transformation(
-                        Output[b_indices], verbose=False
-                        )
-                    self.pca[f'b_{b_i+1}'][key] = pca
-                    # Store the number of components for fast bootsrtrapping
-                    if fast_bootstrap and b_i == 0:
-                        n_comp_dict[key] = n_comp
-                else:
-                    target = Output[b_indices]
-
-                # Parallel fit regression
-                if self.meta_model_type.lower() == 'gpe':
-                    # Prepare the input matrix
-                    scaler = MinMaxScaler()
-                    X_S = scaler.fit_transform(X_train_b)
-
-                    self.x_scaler[f'b_{b_i+1}'][key] = scaler
-                    if parallel:
-                        out = Parallel(n_jobs=-1, backend='multiprocessing')(
-                            delayed(self.gaussian_process_emulator)(
-                                X_S, target[:, idx]) for idx in
-                            range(target.shape[1]))
-                    else:
-                        results = map(self.gaussian_process_emulator,
-                                      [X_train_b]*target.shape[1],
-                                      [target[:, idx] for idx in
-                                       range(target.shape[1])]
-                                      )
-                        out = list(results)
-
-                    for idx in range(target.shape[1]):
-                        self.gp_poly[f'b_{b_i+1}'][key][f"y_{idx+1}"] = out[idx]
-
-                else:
-                    self.univ_p_val = self.univ_p_val[b_indices]
-                    if parallel and (not fast_bootstrap or b_i == 0):
-                        out = Parallel(n_jobs=-1, backend='multiprocessing')(
-                            delayed(self.adaptive_regression)(X_train_b,
-                                                              target[:, idx],
-                                                              idx)
-                            for idx in range(target.shape[1]))
-                    elif not parallel and (not fast_bootstrap or b_i == 0):
-                        results = map(self.adaptive_regression,
-                                      [X_train_b]*target.shape[1],
-                                      [target[:, idx] for idx in
-                                       range(target.shape[1])],
-                                      range(target.shape[1]))
-                        out = list(results)
-
-                    # Store the first out dictionary
-                    if fast_bootstrap and b_i == 0:
-                        first_out[key] = copy.deepcopy(out)
-
-                    if b_i > 0 and fast_bootstrap:
-
-                        # fast bootstrap
-                        out = self.update_pce_coeffs(
-                            X_train_b, target, first_out[key])
-
-                    for i in range(target.shape[1]):
-                        # Create a dict to pass the variables
-                        self.deg_dict[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['degree']
-                        self.q_norm_dict[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['qnorm']
-                        self.coeffs_dict[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['coeffs']
-                        self.basis_dict[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['multi_indices']
-                        self.score_dict[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['LOOCVScore']
-                        self.clf_poly[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['clf_poly']
-                        #self.LCerror[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['LCerror']
-
-        if verbose:
-            print(f"\n>>>> Training the {self.meta_model_type} metamodel"
-                  " sucessfully completed. <<<<<<\n")
-
-    # -------------------------------------------------------------------------
-    def update_pce_coeffs(self, X, y, out_dict = None):
-        """
-        Updates the PCE coefficents using only the ordinary least square method
-        for the fast version of the bootstrapping.
-
-        Parameters
-        ----------
-        X : array of shape (n_samples, n_params)
-            Training set.
-        y : array of shape (n_samples, n_outs)
-            The (transformed) model responses.
-        out_dict : dict
-            The training output dictionary of the first iteration, i.e.
-            the surrogate model for the original experimental design.
-
-        Returns
-        -------
-        final_out_dict : dict
-            The updated training output dictionary.
-
-        """
-        # Make a copy
-        final_out_dict = copy.deepcopy(out_dict)
-
-        # Loop over the points
-        for i in range(y.shape[1]):
-
-                    
-            # Extract nonzero basis indices
-            nnz_idx = np.nonzero(out_dict[i]['coeffs'])[0]
-            if len(nnz_idx) != 0:
-                basis_indices = out_dict[i]['multi_indices']
-
-                # Evaluate the multivariate polynomials on CollocationPoints
-                psi = self.create_psi(basis_indices, self.univ_p_val)
-
-                # Calulate the cofficients of surrogate model
-                updated_out = self.regression(
-                    psi, y[:, i], basis_indices, reg_method='OLS',
-                    sparsity=False
-                    )
-
-                # Update coeffs in out_dict
-                final_out_dict[i]['coeffs'][nnz_idx] = updated_out['coeffs']
-
-        return final_out_dict
-
-    # -------------------------------------------------------------------------
-    def add_InputSpace(self):
-        """
-        Instanciates experimental design object.
-
-        Returns
-        -------
-        None.
-
-        """
-        self.InputSpace = InputSpace(self.input_obj,
-                                    meta_Model_type=self.meta_model_type)
-
-    # -------------------------------------------------------------------------
-    def univ_basis_vals(self, samples, n_max=None):
-        """
-        Evaluates univariate regressors along input directions.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params)
-            Samples.
-        n_max : int, optional
-            Maximum polynomial degree. The default is `None`.
-
-        Returns
-        -------
-        univ_basis: array of shape (n_samples, n_params, n_max+1)
-            All univariate regressors up to n_max.
-        """
-        # Extract information
-        poly_types = self.InputSpace.poly_types
-        if samples.ndim != 2:
-            samples = samples.reshape(1, len(samples))
-        n_max = np.max(self.pce_deg) if n_max is None else n_max
-
-        # Extract poly coeffs
-        if self.InputSpace.input_data_given or self.InputSpace.apce:
-            apolycoeffs = self.polycoeffs
-        else:
-            apolycoeffs = None
-
-        # Evaluate univariate basis
-        univ_basis = eval_univ_basis(samples, n_max, poly_types, apolycoeffs)
-
-        return univ_basis
-
-    # -------------------------------------------------------------------------
-    def create_psi(self, basis_indices, univ_p_val):
-        """
-        This function assemble the design matrix Psi from the given basis index
-        set INDICES and the univariate polynomial evaluations univ_p_val.
-
-        Parameters
-        ----------
-        basis_indices : array of shape (n_terms, n_params)
-            Multi-indices of multivariate polynomials.
-        univ_p_val : array of (n_samples, n_params, n_max+1)
-            All univariate regressors up to `n_max`.
-
-        Raises
-        ------
-        ValueError
-            n_terms in arguments do not match.
-
-        Returns
-        -------
-        psi : array of shape (n_samples, n_terms)
-            Multivariate regressors.
-
-        """
-        # Check if BasisIndices is a sparse matrix
-        sparsity = sp.sparse.issparse(basis_indices)
-        if sparsity:
-            basis_indices = basis_indices.toarray()
-
-        # Initialization and consistency checks
-        # number of input variables
-        n_params = univ_p_val.shape[1]
-
-        # Size of the experimental design
-        n_samples = univ_p_val.shape[0]
-
-        # number of basis terms
-        n_terms = basis_indices.shape[0]
-
-        # check that the variables have consistent sizes
-        if n_params != basis_indices.shape[1]:
-            raise ValueError(
-                f"The shapes of basis_indices ({basis_indices.shape[1]}) and "
-                f"univ_p_val ({n_params}) don't match!!"
-                )
-
-        # Preallocate the Psi matrix for performance
-        psi = np.ones((n_samples, n_terms))
-        # Assemble the Psi matrix
-        for m in range(basis_indices.shape[1]):
-            aa = np.where(basis_indices[:, m] > 0)[0]
-            try:
-                basisIdx = basis_indices[aa, m]
-                bb = univ_p_val[:, m, basisIdx].reshape(psi[:, aa].shape)
-                psi[:, aa] = np.multiply(psi[:, aa], bb)
-            except ValueError as err:
-                raise err
-        return psi
-
-    # -------------------------------------------------------------------------
-    def regression(self, X, y, basis_indices, reg_method=None, sparsity=True):
-        """
-        Fit regression using the regression method provided.
-
-        Parameters
-        ----------
-        X : array of shape (n_samples, n_features)
-            Training vector, where n_samples is the number of samples and
-            n_features is the number of features.
-        y : array of shape (n_samples,)
-            Target values.
-        basis_indices : array of shape (n_terms, n_params)
-            Multi-indices of multivariate polynomials.
-        reg_method : str, optional
-            DESCRIPTION. The default is None.
-
-        Returns
-        -------
-        return_out_dict : Dict
-            Fitted estimator, spareMulti-Index, sparseX and coefficients.
-
-        """
-        if reg_method is None:
-            reg_method = self.pce_reg_method
-
-        bias_term = self.dim_red_method.lower() != 'pca'
-
-        compute_score = True if self.verbose else False
-
-        #  inverse of the observed variance of the data
-        if np.var(y) != 0:
-            Lambda = 1 / np.var(y)
-        else:
-            Lambda = 1e-6
-
-        # Bayes sparse adaptive aPCE
-        if reg_method.lower() == 'ols':
-            clf_poly = lm.LinearRegression(fit_intercept=False)
-        elif reg_method.lower() == 'brr':
-            clf_poly = lm.BayesianRidge(n_iter=1000, tol=1e-7,
-                                        fit_intercept=False,
-                                        #normalize=True,
-                                        compute_score=compute_score,
-                                        alpha_1=1e-04, alpha_2=1e-04,
-                                        lambda_1=Lambda, lambda_2=Lambda)
-            clf_poly.converged = True
-
-        elif reg_method.lower() == 'ard':
-            if X.shape[0]<2:
-                raise ValueError('Regression with ARD can only be performed for more than 2 samples')
-            clf_poly = lm.ARDRegression(fit_intercept=False,
-                                        #normalize=True,
-                                        compute_score=compute_score,
-                                        n_iter=1000, tol=0.0001,
-                                        alpha_1=1e-3, alpha_2=1e-3,
-                                        lambda_1=Lambda, lambda_2=Lambda)
-
-        elif reg_method.lower() == 'fastard':
-            clf_poly = RegressionFastARD(fit_intercept=False,
-                                         normalize=True,
-                                         compute_score=compute_score,
-                                         n_iter=300, tol=1e-10)
-
-        elif reg_method.lower() == 'bcs':
-            if X.shape[0]<10:
-                raise ValueError('Regression with BCS can only be performed for more than 10 samples')
-            clf_poly = RegressionFastLaplace(fit_intercept=False,
-                                         bias_term=bias_term,
-                                         n_iter=1000, tol=1e-7)
-
-        elif reg_method.lower() == 'lars':
-            if X.shape[0]<10:
-                raise ValueError('Regression with LARS can only be performed for more than 5 samples')
-            clf_poly = lm.LassoLarsCV(fit_intercept=False)
-
-        elif reg_method.lower() == 'sgdr':
-            clf_poly = lm.SGDRegressor(fit_intercept=False,
-                                       max_iter=5000, tol=1e-7)
-
-        elif reg_method.lower() == 'omp':
-            clf_poly = OrthogonalMatchingPursuit(fit_intercept=False)
-
-        elif reg_method.lower() == 'vbl':
-            clf_poly = VBLinearRegression(fit_intercept=False)
-
-        elif reg_method.lower() == 'ebl':
-            clf_poly = EBLinearRegression(optimizer='em')
-
-        # Fit
-        clf_poly.fit(X, y)
-
-        # Select the nonzero entries of coefficients
-        if sparsity:
-            nnz_idx = np.nonzero(clf_poly.coef_)[0]
-        else:
-            nnz_idx = np.arange(clf_poly.coef_.shape[0])
-
-        # This is for the case where all outputs are zero, thereby
-        # all coefficients are zero
-        if (y == 0).all():
-            nnz_idx = np.insert(np.nonzero(clf_poly.coef_)[0], 0, 0)
-
-        sparse_basis_indices = basis_indices[nnz_idx]
-        sparse_X = X[:, nnz_idx]
-        coeffs = clf_poly.coef_[nnz_idx]
-        clf_poly.coef_ = coeffs
-
-        # Create a dict to pass the outputs
-        return_out_dict = dict()
-        return_out_dict['clf_poly'] = clf_poly
-        return_out_dict['spareMulti-Index'] = sparse_basis_indices
-        return_out_dict['sparePsi'] = sparse_X
-        return_out_dict['coeffs'] = coeffs
-        return return_out_dict
-
-    # --------------------------------------------------------------------------------------------------------
-    def adaptive_regression(self, ED_X, ED_Y, varIdx, verbose=False):
-        """
-        Adaptively fits the PCE model by comparing the scores of different
-        degrees and q-norm.
-
-        Parameters
-        ----------
-        ED_X : array of shape (n_samples, n_params)
-            Experimental design.
-        ED_Y : array of shape (n_samples,)
-            Target values, i.e. simulation results for the Experimental design.
-        varIdx : int
-            Index of the output.
-        verbose : bool, optional
-            Print out summary. The default is False.
-
-        Returns
-        -------
-        returnVars : Dict
-            Fitted estimator, best degree, best q-norm, LOOCVScore and
-            coefficients.
-
-        """
-
-        n_samples, n_params = ED_X.shape
-        # Initialization
-        qAllCoeffs, AllCoeffs = {}, {}
-        qAllIndices_Sparse, AllIndices_Sparse = {}, {}
-        qAllclf_poly, Allclf_poly = {}, {}
-        qAllnTerms, AllnTerms = {}, {}
-        qAllLCerror, AllLCerror = {}, {}
-
-        # Extract degree array and qnorm array
-        deg_array = np.array([*self.allBasisIndices], dtype=int)
-        qnorm = [*self.allBasisIndices[str(int(deg_array[0]))]]
-
-        # Some options for EarlyStop
-        errorIncreases = False
-        # Stop degree, if LOO error does not decrease n_checks_degree times
-        n_checks_degree = 3
-        # Stop qNorm, if criterion isn't fulfilled n_checks_qNorm times
-        n_checks_qNorm = 2
-        nqnorms = len(qnorm)
-        qNormEarlyStop = True
-        if nqnorms < n_checks_qNorm+1:
-            qNormEarlyStop = False
-
-        # =====================================================================
-        # basis adaptive polynomial chaos: repeat the calculation by increasing
-        # polynomial degree until the highest accuracy is reached
-        # =====================================================================
-        # For each degree check all q-norms and choose the best one
-        scores = -np.inf * np.ones(deg_array.shape[0])
-        qNormScores = -np.inf * np.ones(nqnorms)
-
-        for degIdx, deg in enumerate(deg_array):
-
-            for qidx, q in enumerate(qnorm):
-
-                # Extract the polynomial basis indices from the pool of
-                # allBasisIndices
-                BasisIndices = self.allBasisIndices[str(deg)][str(q)]
-
-                # Assemble the Psi matrix
-                Psi = self.create_psi(BasisIndices, self.univ_p_val)
-
-                # Calulate the cofficients of the meta model
-                outs = self.regression(Psi, ED_Y, BasisIndices)
-
-                # Calculate and save the score of LOOCV
-                score, LCerror = self.corr_loocv_error(outs['clf_poly'],
-                                                       outs['sparePsi'],
-                                                       outs['coeffs'],
-                                                       ED_Y)
-
-                # Check the convergence of noise for FastARD
-                if self.pce_reg_method == 'FastARD' and \
-                   outs['clf_poly'].alpha_ < np.finfo(np.float32).eps:
-                    score = -np.inf
-
-                qNormScores[qidx] = score
-                qAllCoeffs[str(qidx+1)] = outs['coeffs']
-                qAllIndices_Sparse[str(qidx+1)] = outs['spareMulti-Index']
-                qAllclf_poly[str(qidx+1)] = outs['clf_poly']
-                qAllnTerms[str(qidx+1)] = BasisIndices.shape[0]
-                qAllLCerror[str(qidx+1)] = LCerror
-
-                # EarlyStop check
-                # if there are at least n_checks_qNorm entries after the
-                # best one, we stop
-                if qNormEarlyStop and \
-                   sum(np.isfinite(qNormScores)) > n_checks_qNorm:
-                    # If the error has increased the last two iterations, stop!
-                    qNormScores_nonInf = qNormScores[np.isfinite(qNormScores)]
-                    deltas = np.sign(np.diff(qNormScores_nonInf))
-                    if sum(deltas[-n_checks_qNorm+1:]) == 2:
-                        # stop the q-norm loop here
-                        break
-                if np.var(ED_Y) == 0:
-                    break
-
-            # Store the score in the scores list
-            best_q = np.nanargmax(qNormScores)
-            scores[degIdx] = qNormScores[best_q]
-
-            AllCoeffs[str(degIdx+1)] = qAllCoeffs[str(best_q+1)]
-            AllIndices_Sparse[str(degIdx+1)] = qAllIndices_Sparse[str(best_q+1)]
-            Allclf_poly[str(degIdx+1)] = qAllclf_poly[str(best_q+1)]
-            AllnTerms[str(degIdx+1)] = qAllnTerms[str(best_q+1)]
-            AllLCerror[str(degIdx+1)] = qAllLCerror[str(best_q+1)]
-
-            # Check the direction of the error (on average):
-            # if it increases consistently stop the iterations
-            if len(scores[scores != -np.inf]) > n_checks_degree:
-                scores_nonInf = scores[scores != -np.inf]
-                ss = np.sign(scores_nonInf - np.max(scores_nonInf))
-                # ss<0 error decreasing
-                errorIncreases = np.sum(np.sum(ss[-2:])) <= -1*n_checks_degree
-
-            if errorIncreases:
-                break
-
-            # Check only one degree, if target matrix has zero variance
-            if np.var(ED_Y) == 0:
-                break
-
-        # ------------------ Summary of results ------------------
-        # Select the one with the best score and save the necessary outputs
-        best_deg = np.nanargmax(scores)+1
-        coeffs = AllCoeffs[str(best_deg)]
-        basis_indices = AllIndices_Sparse[str(best_deg)]
-        clf_poly = Allclf_poly[str(best_deg)]
-        LOOCVScore = np.nanmax(scores)
-        P = AllnTerms[str(best_deg)]
-        LCerror = AllLCerror[str(best_deg)]
-        degree = deg_array[np.nanargmax(scores)]
-        qnorm = float(qnorm[best_q])
-
-        # ------------------ Print out Summary of results ------------------
-        if self.verbose:
-            # Create PSI_Sparse by removing redundent terms
-            nnz_idx = np.nonzero(coeffs)[0]
-            BasisIndices_Sparse = basis_indices[nnz_idx]
-
-            print(f'Output variable {varIdx+1}:')
-            print('The estimation of PCE coefficients converged at polynomial '
-                  f'degree {deg_array[best_deg-1]} with '
-                  f'{len(BasisIndices_Sparse)} terms (Sparsity index = '
-                  f'{round(len(BasisIndices_Sparse)/P, 3)}).')
-
-            print(f'Final ModLOO error estimate: {1-max(scores):.3e}')
-            print('\n'+'-'*50)
-
-        if verbose:
-            print('='*50)
-            print(' '*10 + ' Summary of results ')
-            print('='*50)
-
-            print("Scores:\n", scores)
-            print("Degree of best score:", self.deg_array[best_deg-1])
-            print("No. of terms:", len(basis_indices))
-            print("Sparsity index:", round(len(basis_indices)/P, 3))
-            print("Best Indices:\n", basis_indices)
-
-            if self.pce_reg_method in ['BRR', 'ARD']:
-                fig, ax = plt.subplots(figsize=(12, 10))
-                plt.title("Marginal log-likelihood")
-                plt.plot(clf_poly.scores_, color='navy', linewidth=2)
-                plt.ylabel("Score")
-                plt.xlabel("Iterations")
-                if self.pce_reg_method.lower() == 'bbr':
-                    text = f"$\\alpha={clf_poly.alpha_:.1f}$\n"
-                    f"$\\lambda={clf_poly.lambda_:.3f}$\n"
-                    f"$L={clf_poly.scores_[-1]:.1f}$"
-                else:
-                    text = f"$\\alpha={clf_poly.alpha_:.1f}$\n$"
-                    f"\\L={clf_poly.scores_[-1]:.1f}$"
-
-                plt.text(0.75, 0.5, text, fontsize=18, transform=ax.transAxes)
-                plt.show()
-            print('='*80)
-
-        # Create a dict to pass the outputs
-        returnVars = dict()
-        returnVars['clf_poly'] = clf_poly
-        returnVars['degree'] = degree
-        returnVars['qnorm'] = qnorm
-        returnVars['coeffs'] = coeffs
-        returnVars['multi_indices'] = basis_indices
-        returnVars['LOOCVScore'] = LOOCVScore
-        returnVars['LCerror'] = LCerror
-
-        return returnVars
-
-    # -------------------------------------------------------------------------
-    def corr_loocv_error(self, clf, psi, coeffs, y):
-        """
-        Calculates the corrected LOO error for regression on regressor
-        matrix `psi` that generated the coefficients based on [1] and [2].
-
-        [1] Blatman, G., 2009. Adaptive sparse polynomial chaos expansions for
-            uncertainty propagation and sensitivity analysis (Doctoral
-            dissertation, Clermont-Ferrand 2).
-
-        [2] Blatman, G. and Sudret, B., 2011. Adaptive sparse polynomial chaos
-            expansion based on least angle regression. Journal of computational
-            Physics, 230(6), pp.2345-2367.
-
-        Parameters
-        ----------
-        clf : object
-            Fitted estimator.
-        psi : array of shape (n_samples, n_features)
-            The multivariate orthogonal polynomials (regressor).
-        coeffs : array-like of shape (n_features,)
-            Estimated cofficients.
-        y : array of shape (n_samples,)
-            Target values.
-
-        Returns
-        -------
-        R_2 : float
-            LOOCV Validation score (1-LOOCV erro).
-        residual : array of shape (n_samples,)
-            Residual values (y - predicted targets).
-
-        """
-        psi = np.array(psi, dtype=float)
-
-        # Create PSI_Sparse by removing redundent terms
-        nnz_idx = np.nonzero(coeffs)[0]
-        if len(nnz_idx) == 0:
-            nnz_idx = [0]
-        psi_sparse = psi[:, nnz_idx]
-
-        # NrCoeffs of aPCEs
-        P = len(nnz_idx)
-        # NrEvaluation (Size of experimental design)
-        N = psi.shape[0]
-
-        # Build the projection matrix
-        PsiTPsi = np.dot(psi_sparse.T, psi_sparse)
-
-        if np.linalg.cond(PsiTPsi) > 1e-12: #and \
-           # np.linalg.cond(PsiTPsi) < 1/sys.float_info.epsilon:
-            # faster
-            try:
-                M = sp.linalg.solve(PsiTPsi,
-                                sp.sparse.eye(PsiTPsi.shape[0]).toarray())
-            except:
-                raise AttributeError('There are too few samples for the corrected loo-cv error. Fit surrogate on at least as many samples as parameters to use this')
-        else:
-            # stabler
-            M = np.linalg.pinv(PsiTPsi)
-
-        # h factor (the full matrix is not calculated explicitly,
-        # only the trace is, to save memory)
-        PsiM = np.dot(psi_sparse, M)
-
-        h = np.sum(np.multiply(PsiM, psi_sparse), axis=1, dtype=np.longdouble)#float128)
-
-        # ------ Calculate Error Loocv for each measurement point ----
-        # Residuals
-        try:
-            residual = clf.predict(psi) - y
-        except:
-            residual = np.dot(psi, coeffs) - y
-
-        # Variance
-        var_y = np.var(y)
-
-        if var_y == 0:
-            norm_emp_error = 0
-            loo_error = 0
-            LCerror = np.zeros((y.shape))
-            return 1-loo_error, LCerror
-        else:
-            norm_emp_error = np.mean(residual**2)/var_y
-
-            # LCerror = np.divide(residual, (1-h))
-            LCerror = residual / (1-h)
-            loo_error = np.mean(np.square(LCerror)) / var_y
-            # if there are NaNs, just return an infinite LOO error (this
-            # happens, e.g., when a strongly underdetermined problem is solved)
-            if np.isnan(loo_error):
-                loo_error = np.inf
-
-        # Corrected Error for over-determined system
-        tr_M = np.trace(M)
-        if tr_M < 0 or abs(tr_M) > 1e6:
-            tr_M = np.trace(np.linalg.pinv(np.dot(psi.T, psi)))
-
-        # Over-determined system of Equation
-        if N > P:
-            T_factor = N/(N-P) * (1 + tr_M)
-
-        # Under-determined system of Equation
-        else:
-            T_factor = np.inf
-
-        corrected_loo_error = loo_error * T_factor
-
-        R_2 = 1 - corrected_loo_error
-
-        return R_2, LCerror
-
-    # -------------------------------------------------------------------------
-    def pca_transformation(self, target, verbose=False):
-        """
-        Transforms the targets (outputs) via Principal Component Analysis
-
-        Parameters
-        ----------
-        target : array of shape (n_samples,)
-            Target values.
-
-        Returns
-        -------
-        pca : obj
-            Fitted sklearnPCA object.
-        OutputMatrix : array of shape (n_samples,)
-            Transformed target values.
-        n_pca_components : int
-            Number of selected principal components.
-
-        """
-        # Transform via Principal Component Analysis
-        if hasattr(self, 'var_pca_threshold'):
-            var_pca_threshold = self.var_pca_threshold
-        else:
-            var_pca_threshold = 100.0
-        n_samples, n_features = target.shape
-
-        if hasattr(self, 'n_pca_components'):
-            n_pca_components = self.n_pca_components
-        else:
-            # Instantiate and fit sklearnPCA object
-            covar_matrix = sklearnPCA(n_components=None)
-            covar_matrix.fit(target)
-            var = np.cumsum(np.round(covar_matrix.explained_variance_ratio_,
-                                     decimals=5)*100)
-            # Find the number of components to explain self.varPCAThreshold of
-            # variance
-            try:
-                n_components = np.where(var >= var_pca_threshold)[0][0] + 1
-            except IndexError:
-                n_components = min(n_samples, n_features)
-
-            n_pca_components = min(n_samples, n_features, n_components)
-
-        # Print out a report
-        if verbose:
-            print()
-            print('-' * 50)
-            print(f"PCA transformation is performed with {n_pca_components}"
-                  " components.")
-            print('-' * 50)
-            print()
-
-        # Fit and transform with the selected number of components
-        pca = sklearnPCA(n_components=n_pca_components, svd_solver='arpack')
-        scaled_target = pca.fit_transform(target)
-
-        return pca, scaled_target, n_pca_components
-
-    # -------------------------------------------------------------------------
-    def gaussian_process_emulator(self, X, y, nug_term=None, autoSelect=False,
-                                  varIdx=None):
-        """
-        Fits a Gaussian Process Emulator to the target given the training
-         points.
-
-        Parameters
-        ----------
-        X : array of shape (n_samples, n_params)
-            Training points.
-        y : array of shape (n_samples,)
-            Target values.
-        nug_term : float, optional
-            Nugget term. The default is None, i.e. variance of y.
-        autoSelect : bool, optional
-            Loop over some kernels and select the best. The default is False.
-        varIdx : int, optional
-            The index number. The default is None.
-
-        Returns
-        -------
-        gp : object
-            Fitted estimator.
-
-        """
-
-        nug_term = nug_term if nug_term else np.var(y)
-
-        Kernels = [nug_term * kernels.RBF(length_scale=1.0,
-                                          length_scale_bounds=(1e-25, 1e15)),
-                   nug_term * kernels.RationalQuadratic(length_scale=0.2,
-                                                        alpha=1.0),
-                   nug_term * kernels.Matern(length_scale=1.0,
-                                             length_scale_bounds=(1e-15, 1e5),
-                                             nu=1.5)]
-
-        # Automatic selection of the kernel
-        if autoSelect:
-            gp = {}
-            BME = []
-            for i, kernel in enumerate(Kernels):
-                gp[i] = GaussianProcessRegressor(kernel=kernel,
-                                                 n_restarts_optimizer=3,
-                                                 normalize_y=False)
-
-                # Fit to data using Maximum Likelihood Estimation
-                gp[i].fit(X, y)
-
-                # Store the MLE as BME score
-                BME.append(gp[i].log_marginal_likelihood())
-
-            gp = gp[np.argmax(BME)]
-
-        else:
-            gp = GaussianProcessRegressor(kernel=Kernels[0],
-                                          n_restarts_optimizer=3,
-                                          normalize_y=False)
-            gp.fit(X, y)
-
-        # Compute score
-        if varIdx is not None:
-            Score = gp.score(X, y)
-            print('-'*50)
-            print(f'Output variable {varIdx}:')
-            print('The estimation of GPE coefficients converged,')
-            print(f'with the R^2 score: {Score:.3f}')
-            print('-'*50)
-
-        return gp
-
-    # -------------------------------------------------------------------------
-    def eval_metamodel(self, samples):
-        """
-        Evaluates meta-model at the requested samples. One can also generate
-        nsamples.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params), optional
-            Samples to evaluate meta-model at. The default is None.
-        nsamples : int, optional
-            Number of samples to generate, if no `samples` is provided. The
-            default is None.
-        sampling_method : str, optional
-            Type of sampling, if no `samples` is provided. The default is
-            'random'.
-        return_samples : bool, optional
-            Retun samples, if no `samples` is provided. The default is False.
-
-        Returns
-        -------
-        mean_pred : dict
-            Mean of the predictions.
-        std_pred : dict
-            Standard deviatioon of the predictions.
-        """
-        # Transform into np array - can also be given as list
-        samples = np.array(samples)
-        
-        # Transform samples to the independent space
-        samples = self.InputSpace.transform(
-            samples,
-            method='user'
-            )
-        # Compute univariate bases for the given samples
-        if self.meta_model_type.lower() != 'gpe':
-            univ_p_val = self.univ_basis_vals(
-                samples,
-                n_max=np.max(self.pce_deg)
-                )
-
-        mean_pred_b = {}
-        std_pred_b = {}
-        # Loop over bootstrap iterations
-        for b_i in range(self.n_bootstrap_itrs):
-
-            # Extract model dictionary
-            if self.meta_model_type.lower() == 'gpe':
-                model_dict = self.gp_poly[f'b_{b_i+1}']
-            else:
-                model_dict = self.coeffs_dict[f'b_{b_i+1}']
-
-            # Loop over outputs
-            mean_pred = {}
-            std_pred = {}
-            for output, values in model_dict.items():
-
-                mean = np.empty((len(samples), len(values)))
-                std = np.empty((len(samples), len(values)))
-                idx = 0
-                for in_key, InIdxValues in values.items():
-
-                    # Prediction with GPE
-                    if self.meta_model_type.lower() == 'gpe':
-                        X_T = self.x_scaler[f'b_{b_i+1}'][output].transform(samples)
-                        gp = self.gp_poly[f'b_{b_i+1}'][output][in_key]
-                        y_mean, y_std = gp.predict(X_T, return_std=True)
-
-                    else:
-                        # Prediction with PCE
-                        # Assemble Psi matrix
-                        basis = self.basis_dict[f'b_{b_i+1}'][output][in_key]
-                        psi = self.create_psi(basis, univ_p_val)
-
-                        # Prediction
-                        if self.bootstrap_method != 'fast' or b_i == 0:
-                            # with error bar, i.e. use clf_poly
-                            clf_poly = self.clf_poly[f'b_{b_i+1}'][output][in_key]
-                            try:
-                                y_mean, y_std = clf_poly.predict(
-                                    psi, return_std=True
-                                    )
-                            except TypeError:
-                                y_mean = clf_poly.predict(psi)
-                                y_std = np.zeros_like(y_mean)
-                        else:
-                            # without error bar
-                            coeffs = self.coeffs_dict[f'b_{b_i+1}'][output][in_key]
-                            y_mean = np.dot(psi, coeffs)
-                            y_std = np.zeros_like(y_mean)
-
-                    mean[:, idx] = y_mean
-                    std[:, idx] = y_std
-                    idx += 1
-
-                # Save predictions for each output
-                if self.dim_red_method.lower() == 'pca':
-                    PCA = self.pca[f'b_{b_i+1}'][output]
-                    mean_pred[output] = PCA.inverse_transform(mean)
-                    std_pred[output] = np.zeros(mean.shape)
-                else:
-                    mean_pred[output] = mean
-                    std_pred[output] = std
-
-            # Save predictions for each bootstrap iteration
-            mean_pred_b[b_i] = mean_pred
-            std_pred_b[b_i] = std_pred
-
-        # Change the order of nesting
-        mean_pred_all = {}
-        for i in sorted(mean_pred_b):
-            for k, v in mean_pred_b[i].items():
-                if k not in mean_pred_all:
-                    mean_pred_all[k] = [None] * len(mean_pred_b)
-                mean_pred_all[k][i] = v
-
-        # Compute the moments of predictions over the predictions
-        for output in self.out_names:
-            # Only use bootstraps with finite values
-            finite_rows = np.isfinite(
-                mean_pred_all[output]).all(axis=2).all(axis=1)
-            outs = np.asarray(mean_pred_all[output])[finite_rows]
-            # Compute mean
-            mean_pred[output] = np.mean(outs, axis=0)
-            # Compute standard deviation
-            if self.n_bootstrap_itrs > 1:
-                std_pred[output] = np.std(outs, axis=0)
-            else:
-                std_pred[output] = std_pred_b[b_i][output]
-
-        return mean_pred, std_pred
-
-    # -------------------------------------------------------------------------
-    def create_model_error(self, X, y, Model, name='Calib'):
-        """
-        Fits a GPE-based model error.
-
-        Parameters
-        ----------
-        X : array of shape (n_outputs, n_inputs)
-            Input array. It can contain any forcing inputs or coordinates of
-             extracted data.
-        y : array of shape (n_outputs,)
-            The model response for the MAP parameter set.
-        name : str, optional
-            Calibration or validation. The default is `'Calib'`.
-
-        Returns
-        -------
-        self: object
-            Self object.
-
-        """
-        outputNames = self.out_names
-        self.errorRegMethod = 'GPE'
-        self.errorclf_poly = self.auto_vivification()
-        self.errorScale = self.auto_vivification()
-
-        # Read data
-        # TODO: do this call outside the metamodel
-        MeasuredData = Model.read_observation(case=name)
-
-        # Fitting GPR based bias model
-        for out in outputNames:
-            nan_idx = ~np.isnan(MeasuredData[out])
-            # Select data
-            try:
-                data = MeasuredData[out].values[nan_idx]
-            except AttributeError:
-                data = MeasuredData[out][nan_idx]
-
-            # Prepare the input matrix
-            scaler = MinMaxScaler()
-            delta = data  # - y[out][0]
-            BiasInputs = np.hstack((X[out], y[out].reshape(-1, 1)))
-            X_S = scaler.fit_transform(BiasInputs)
-            gp = self.gaussian_process_emulator(X_S, delta)
-
-            self.errorScale[out]["y_1"] = scaler
-            self.errorclf_poly[out]["y_1"] = gp
-
-        return self
-
-    # -------------------------------------------------------------------------
-    def eval_model_error(self, X, y_pred):
-        """
-        Evaluates the error model.
-
-        Parameters
-        ----------
-        X : array
-            Inputs.
-        y_pred : dict
-            Predictions.
-
-        Returns
-        -------
-        mean_pred : dict
-            Mean predition of the GPE-based error model.
-        std_pred : dict
-            standard deviation of the GPE-based error model.
-
-        """
-        mean_pred = {}
-        std_pred = {}
-
-        for Outkey, ValuesDict in self.errorclf_poly.items():
-
-            pred_mean = np.zeros_like(y_pred[Outkey])
-            pred_std = np.zeros_like(y_pred[Outkey])
-
-            for Inkey, InIdxValues in ValuesDict.items():
-
-                gp = self.errorclf_poly[Outkey][Inkey]
-                scaler = self.errorScale[Outkey][Inkey]
-
-                # Transform Samples using scaler
-                for j, pred in enumerate(y_pred[Outkey]):
-                    BiasInputs = np.hstack((X[Outkey], pred.reshape(-1, 1)))
-                    Samples_S = scaler.transform(BiasInputs)
-                    y_hat, y_std = gp.predict(Samples_S, return_std=True)
-                    pred_mean[j] = y_hat
-                    pred_std[j] = y_std
-                    # pred_mean[j] += pred
-
-            mean_pred[Outkey] = pred_mean
-            std_pred[Outkey] = pred_std
-
-        return mean_pred, std_pred
-
-    # -------------------------------------------------------------------------
-    class auto_vivification(dict):
-        """
-        Implementation of perl's AutoVivification feature.
-
-        Source: https://stackoverflow.com/a/651879/18082457
-        """
-
-        def __getitem__(self, item):
-            try:
-                return dict.__getitem__(self, item)
-            except KeyError:
-                value = self[item] = type(self)()
-                return value
-
-    # -------------------------------------------------------------------------
-    def copy_meta_model_opts(self):
-        """
-        This method is a convinient function to copy the metamodel options.
-
-        Returns
-        -------
-        new_MetaModelOpts : object
-            The copied object.
-
-        """
-        # TODO: what properties should be moved to the new object?
-        new_MetaModelOpts = copy.deepcopy(self)
-        new_MetaModelOpts.input_obj = self.input_obj#InputObj
-        new_MetaModelOpts.InputSpace = self.InputSpace
-        #new_MetaModelOpts.InputSpace.meta_Model = 'aPCE'
-        #new_MetaModelOpts.InputSpace.InputObj = self.input_obj
-        #new_MetaModelOpts.InputSpace.ndim = len(self.input_obj.Marginals)
-        new_MetaModelOpts.n_params = len(self.input_obj.Marginals)
-        #new_MetaModelOpts.InputSpace.hdf5_file = None
-
-        return new_MetaModelOpts
-
-    # -------------------------------------------------------------------------
-    def __select_degree(self, ndim, n_samples):
-        """
-        Selects degree based on the number of samples and parameters in the
-        sequential design.
-
-        Parameters
-        ----------
-        ndim : int
-            Dimension of the parameter space.
-        n_samples : int
-            Number of samples.
-
-        Returns
-        -------
-        deg_array: array
-            Array containing the arrays.
-
-        """
-        # Define the deg_array
-        max_deg = np.max(self.pce_deg)
-        min_Deg = np.min(self.pce_deg)
-        
-        # TODO: remove the options for sequential?
-        #nitr = n_samples - self.InputSpace.n_init_samples
-
-        # Check q-norm
-        if not np.isscalar(self.pce_q_norm):
-            self.pce_q_norm = np.array(self.pce_q_norm)
-        else:
-            self.pce_q_norm = np.array([self.pce_q_norm])
-
-        def M_uptoMax(maxDeg):
-            n_combo = np.zeros(maxDeg)
-            for i, d in enumerate(range(1, maxDeg+1)):
-                n_combo[i] = math.factorial(ndim+d)
-                n_combo[i] /= math.factorial(ndim) * math.factorial(d)
-            return n_combo
-
-        deg_new = max_deg
-        #d = nitr if nitr != 0 and self.n_params > 5 else 1
-        # d = 1
-        # min_index = np.argmin(abs(M_uptoMax(max_deg)-ndim*n_samples*d))
-        # deg_new = range(1, max_deg+1)[min_index]
-
-        if deg_new > min_Deg and self.pce_reg_method.lower() != 'fastard':
-            deg_array = np.arange(min_Deg, deg_new+1)
-        else:
-            deg_array = np.array([deg_new])
-
-        return deg_array
-
-    def generate_polynomials(self, max_deg=None):
-        # Check for InputSpace
-        if not hasattr(self, 'InputSpace'):
-            raise AttributeError('Generate or add InputSpace before generating polynomials')
-            
-        ndim = self.InputSpace.ndim
-        # Create orthogonal polynomial coefficients if necessary
-        if (self.meta_model_type.lower()!='gpe') and max_deg is not None:# and self.input_obj.poly_coeffs_flag:
-            self.polycoeffs = {}
-            for parIdx in tqdm(range(ndim), ascii=True,
-                               desc="Computing orth. polynomial coeffs"):
-                poly_coeffs = apoly_construction(
-                    self.InputSpace.raw_data[parIdx],
-                    max_deg
-                    )
-                self.polycoeffs[f'p_{parIdx+1}'] = poly_coeffs
-        else:
-            raise AttributeError('MetaModel cannot generate polynomials in the given scenario!')
-
-    # -------------------------------------------------------------------------
-    def _compute_pce_moments(self):
-        """
-        Computes the first two moments using the PCE-based meta-model.
-
-        Returns
-        -------
-        pce_means: dict
-            The first moment (mean) of the surrogate.
-        pce_stds: dict
-            The second moment (standard deviation) of the surrogate.
-
-        """
-        
-        # Check if its truly a pce-surrogate
-        if self.meta_model_type.lower() == 'gpe':
-            raise AttributeError('Moments can only be computed for pce-type surrogates')
-        
-        outputs = self.out_names
-        pce_means_b = {}
-        pce_stds_b = {}
-
-        # Loop over bootstrap iterations
-        for b_i in range(self.n_bootstrap_itrs):
-            # Loop over the metamodels
-            coeffs_dicts = self.coeffs_dict[f'b_{b_i+1}'].items()
-            means = {}
-            stds = {}
-            for output, coef_dict in coeffs_dicts:
-
-                pce_mean = np.zeros((len(coef_dict)))
-                pce_var = np.zeros((len(coef_dict)))
-
-                for index, values in coef_dict.items():
-                    idx = int(index.split('_')[1]) - 1
-                    coeffs = self.coeffs_dict[f'b_{b_i+1}'][output][index]
-
-                    # Mean = c_0
-                    if coeffs[0] != 0:
-                        pce_mean[idx] = coeffs[0]
-                    else:
-                        clf_poly = self.clf_poly[f'b_{b_i+1}'][output]
-                        pce_mean[idx] = clf_poly[index].intercept_
-                    # Var = sum(coeffs[1:]**2)
-                    pce_var[idx] = np.sum(np.square(coeffs[1:]))
-
-                # Save predictions for each output
-                if self.dim_red_method.lower() == 'pca':
-                    PCA = self.pca[f'b_{b_i+1}'][output]
-                    means[output] = PCA.inverse_transform(pce_mean)
-                    stds[output] = PCA.inverse_transform(np.sqrt(pce_var))
-                else:
-                    means[output] = pce_mean
-                    stds[output] = np.sqrt(pce_var)
-
-            # Save predictions for each bootstrap iteration
-            pce_means_b[b_i] = means
-            pce_stds_b[b_i] = stds
-
-        # Change the order of nesting
-        mean_all = {}
-        for i in sorted(pce_means_b):
-            for k, v in pce_means_b[i].items():
-                if k not in mean_all:
-                    mean_all[k] = [None] * len(pce_means_b)
-                mean_all[k][i] = v
-        std_all = {}
-        for i in sorted(pce_stds_b):
-            for k, v in pce_stds_b[i].items():
-                if k not in std_all:
-                    std_all[k] = [None] * len(pce_stds_b)
-                std_all[k][i] = v
-
-        # Back transformation if PCA is selected.
-        pce_means, pce_stds = {}, {}
-        for output in outputs:
-            pce_means[output] = np.mean(mean_all[output], axis=0)
-            pce_stds[output] = np.mean(std_all[output], axis=0)
-
-        return pce_means, pce_stds
diff --git a/examples/umbridge_tsunamitutorial - Copy/test_umbridge.py b/examples/umbridge_tsunamitutorial - Copy/test_umbridge.py
deleted file mode 100644
index b83175cf7..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/test_umbridge.py	
+++ /dev/null
@@ -1,183 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Created on Mon Dec 11 14:03:23 2023
-
-Example and test for using umbridge with bayesvalidrox.
-Example model is the tsunami model by 
-docker run -it -p 4242:4242 -v ~/tsunami_output:/output linusseelinger/model-exahype-tsunami
-
-@author: rkohlhaas
-"""
-
-import joblib
-import numpy as np 
-import umbridge
-
-import bayesvalidrox as bv
-
-
-if __name__ == '__main__':
-    
-    # This model has 2 inputs and four outputs
-    n_prior_sample = 1000
-    priors = bv.Input()
-    priors.add_marginals()
-    priors.Marginals[0].name = 'x'
-    priors.Marginals[0].input_data = np.random.uniform(50,150,n_prior_sample)  
-    priors.add_marginals()
-    priors.Marginals[1].name = 'y'
-    priors.Marginals[1].input_data = np.random.uniform(50,150,n_prior_sample)
-    
-    # Define the model - level 0
-    model0 = bv.PyLinkForwardModel()
-    #model.link_type = 'Function'
-    model0.link_type = 'umbridge'
-    model0.py_file = 'tsunami_model'
-    model0.name = 'tsunami_model'
-    model0.Output.names = ['T1', 'T2', 'H1', 'H2']
-    #model.observations = data_dict1_times
-    
-    # Define the model - level 1
-    model1 = bv.PyLinkForwardModel()
-    #model.link_type = 'Function'
-    model1.link_type = 'umbridge'
-    model1.py_file = 'tsunami_model1'
-    model1.name = 'tsunami_model1'
-    model1.Output.names = ['T1', 'T2', 'H1', 'H2']
-    #model.observations = data_dict1_times
-    
-    # Create the surrogate
-    surrogate_opts0 = bv.MetaModel(priors, model0)
-    
-    # Select your metamodel method
-    surrogate_opts0.meta_model_type = 'aPCE'
-    surrogate_opts0.pce_reg_method = 'FastARD'
-    surrogate_opts0.pce_deg = np.arange(1, 5)
-    surrogate_opts0.pce_q_norm = 0.4#1.0
-
-    # Select your metamodel method         
-    surrogate_opts0.add_ExpDesign()
-    surrogate_opts0.ExpDesign.method = 'normal'
-    surrogate_opts0.ExpDesign.n_init_samples = 50
-    surrogate_opts0.ExpDesign.sampling_method = 'latin-hypercube'
-    surrogate0 = surrogate_opts0.create_metamodel()
-    print('Surrogate 0 completed')
-    print('')
-    
-    # Create the surrogate
-    surrogate_opts1 = bv.MetaModel(priors, model1)
-    
-    # Select your metamodel method
-    surrogate_opts1.meta_model_type = 'aPCE'
-    surrogate_opts1.pce_reg_method = 'FastARD'
-    surrogate_opts1.pce_deg = np.arange(1, 5)
-    surrogate_opts1.pce_q_norm = 0.4#1.0
-
-    # Select your metamodel method         
-    surrogate_opts1.add_ExpDesign()
-    surrogate_opts1.ExpDesign.method = 'normal'
-    surrogate_opts1.ExpDesign.n_init_samples = 50
-    surrogate_opts1.ExpDesign.sampling_method = 'latin-hypercube'
-    surrogate1 = surrogate_opts1.create_metamodel()
-    print('Surrogate 1 completed')
-    print('')
-
-    # Save surrogate
-    with open('tsunami0.pk1', 'wb') as output:
-        joblib.dump(surrogate0, output, 2)
-        
-    # Save surrogate
-    with open('tsunami1.pk1', 'wb') as output:
-        joblib.dump(surrogate1, output, 2)
-    
-    if 0:
-        # Post processing
-        L2_PostPCE = bv.PostProcessing(surrogate1)
-        L2_PostPCE.plot_moments(plot_type='line')
-        # Plot to check validation visually.
-        L2_PostPCE.valid_metamodel(n_samples=1)
-        # Compute and print RMSE error
-        L2_PostPCE.check_accuracy(n_samples=300)
-        total_sobol = L2_PostPCE.sobol_indices()
-    
-    # Test BayesInference
-    import copy
-    from tsunami_model import tsunami_model
-    true_data = tsunami_model(np.array([[90.0,60.0]]))
-    model0.observations = true_data
-    model1.observations = true_data
-    true_data_nox = copy.deepcopy(true_data)
-    true_data_nox.pop('x_values')
-    
-    # Test surrogate output shape
-    mean, std = surrogate1.eval_metamodel(np.array([[90.0,60.0]]))
-    
-    # Bayesian Inference
-    if 0:
-        # Set uncertainty
-        import pandas as pd
-        obsData = pd.DataFrame(true_data_nox, columns=model0.Output.names)
-        DiscrepancyOpts = bv.Discrepancy('')
-        DiscrepancyOpts.type = 'Gaussian'
-        DiscrepancyOpts.parameters = (obsData*0.15)**2
-        
-        # Parameter estimation / single model validation via TOM
-        BayesOpts = bv.BayesInference(surrogate1)
-        BayesOpts.emulator= True
-        BayesOpts.plot_post_pred = True
-        #BayesOpts.inference_method = 'rejection'
-        BayesOpts.Discrepancy = DiscrepancyOpts
-        BayesOpts.bootstrap = True
-        BayesOpts.n_bootstrap_itrs = 10
-        BayesOpts.bootstrap_noise = 0.05
-        BayesOpts.out_dir = ''
-        
-        # Set the MCMC parameters
-        import emcee
-        BayesOpts.inference_method = "MCMC"
-        BayesOpts.mcmc_params = {
-            'n_steps': 1e3,
-            'n_walkers': 30,
-            'moves': emcee.moves.KDEMove(),
-            'multiprocessing': False,
-            'verbose': False
-            }
-         
-        Bayes = BayesOpts.create_inference()
-        # Pkl the inference results
-        with open(f'Bayes_{model0.name}.pkl', 'wb') as output:
-            joblib.dump(Bayes, output, 2)
-            
-    # Model Comparison
-    if 1:
-        # Set the models
-        meta_models = {
-            "M0": surrogate0,
-            "M1": surrogate1,
-            }
-
-        # BME Bootstrap options
-        opts_bootstrap = {
-            "bootstrap": True,
-            "n_samples": 1000,
-            "Discrepancy": DiscrepancyOpts,
-            "emulator": True,
-            "plot_post_pred": False
-            }
-
-        # Run model comparison
-        BayesOpts = bv.BayesModelComparison(
-            justifiability=True,
-            n_bootstarp=10,
-            just_n_meas=2
-            )
-        output_dict = BayesOpts.create_model_comparison(
-            meta_models,
-            opts_bootstrap
-            )
-                
-        import pickle as pkl
-        # save model comparison results
-        with open('ModelComparison.pkl', 'wb') as f:
-            pkl.dump(output_dict, f)
-        
\ No newline at end of file
diff --git a/examples/umbridge_tsunamitutorial - Copy/test_umbridge_testmodel.py b/examples/umbridge_tsunamitutorial - Copy/test_umbridge_testmodel.py
deleted file mode 100644
index 68b288f0a..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/test_umbridge_testmodel.py	
+++ /dev/null
@@ -1,80 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Created on Mon Dec 11 14:03:23 2023
-
-Example and test for using umbridge with bayesvalidrox.
-Example model is the tsunami model by 
-docker run -it -p 4242:4242 -v ~/tsunami_output:/output linusseelinger/model-exahype-tsunami
-
-@author: rkohlhaas
-"""
-
-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
-
-
-if __name__ == '__main__':
-    
-    # This model has 2 inputs and four outputs
-    n_prior_sample = 1000
-    priors = bv.Input()
-    priors.add_marginals()
-    priors.Marginals[0].name = 'x'
-    priors.Marginals[0].input_data = np.random.uniform(50,150,n_prior_sample)  
-    priors.add_marginals()
-    priors.Marginals[1].name = 'y'
-    priors.Marginals[1].input_data = np.random.uniform(50,150,n_prior_sample)
-    
-    # Define the model - level 0
-    model = PyLinkForwardModel()
-    model.link_type = 'Function'
-    model.py_file = 'testmodel'
-    model.name = 'testmodel'
-    #model.link_type = 'um-bridge'
-    #model.host = 'http://testmodel.linusseelinger.de'
-    #model.modelparams = {}
-    #model.name = 'testmodel'
-    model.Output.names = ['y']
-    #model.output_type = 'single-valued'
-    
-    # Create the surrogate
-    surrogate_opts = MetaModel(priors)
-    
-    # Select your metamodel method
-    surrogate_opts.meta_model_type = 'aPCE'
-    surrogate_opts.pce_reg_method = 'FastARD'
-    surrogate_opts.pce_deg = np.arange(1, 5)
-    surrogate_opts.pce_q_norm = 0.4
-
-    # Select your metamodel method    
-    ExpDesign = ExpDesigns(priors)     
-    ExpDesign.n_init_samples = 50
-    ExpDesign.sampling_method = 'latin-hypercube'
-    
-    engine = Engine(surrogate_opts, model, ExpDesign)
-    engine.start_engine()
-    engine.train_normal(parallel = False)
-    print('Surrogate completed')
-    print('')
-
-    # Save surrogate
-    with open('testmodel.pk1', 'wb') as output:
-        joblib.dump(engine.MetaModel, output, 2)
-        
-    # Post processing
-    L2_PostPCE = PostProcessing(engine)
-    L2_PostPCE.plot_moments(plot_type='line')
-    # Plot to check validation visually.
-    L2_PostPCE.valid_metamodel(n_samples=1)
-    # Compute and print RMSE error
-    L2_PostPCE.check_accuracy(n_samples=300)
-    total_sobol = L2_PostPCE.sobol_indices()
diff --git a/examples/umbridge_tsunamitutorial - Copy/testmodel.py b/examples/umbridge_tsunamitutorial - Copy/testmodel.py
deleted file mode 100644
index e4da164cf..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/testmodel.py	
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Runs the umbridge command for the tsunami model
-
-@author: Rebecca Kohlhaas
-"""
-import umbridge
-import numpy as np
-
-def testmodel(params):
-    model = umbridge.HTTPModel('http://testmodel.linusseelinger.de', 'forward')
-
-    out = np.array(model([[11.0]]))
-    
-    return {'y':out,'x_values':[0]}
-    
-    
-    
\ No newline at end of file
diff --git a/examples/umbridge_tsunamitutorial - Copy/tsunami_model.py b/examples/umbridge_tsunamitutorial - Copy/tsunami_model.py
deleted file mode 100644
index 7f8e54170..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/tsunami_model.py	
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Runs the umbridge command for the tsunami model
-
-@author: Rebecca Kohlhaas
-"""
-import umbridge
-import numpy as np
-
-def tsunami_model(params):
-    model = umbridge.HTTPModel('http://localhost:4242', 'forward')
-    out = np.array(model(np.ndarray.tolist(params), {'level':0}))
-    
-    return {'T1':out[:,0], 'T2':out[:,1], 'H1':out[:,2], 'H2':out[:,3], 
-            'x_values':[0]}
-    
-    
-    
\ No newline at end of file
diff --git a/examples/umbridge_tsunamitutorial - Copy/tsunami_model1.py b/examples/umbridge_tsunamitutorial - Copy/tsunami_model1.py
deleted file mode 100644
index 3e56801e5..000000000
--- a/examples/umbridge_tsunamitutorial - Copy/tsunami_model1.py	
+++ /dev/null
@@ -1,16 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Runs the umbridge command for the tsunami model
-
-@author: Rebecca Kohlhaas
-"""
-import umbridge
-import numpy as np
-
-def tsunami_model1(params):
-    model = umbridge.HTTPModel('http://localhost:4242', 'forward')
-    out = np.array(model(np.ndarray.tolist(params), {'level':1}))
-    
-    return {'T1': out[:,0], 'T2': out[:,1], 'H1': out[:,2], 'H2': out[:,3], 'x_values': [0]}
-    
-    
\ No newline at end of file
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/__init__.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/__init__.py
deleted file mode 100644
index 8e865af80..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/__init__.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-__version__ = "0.0.5"
-
-from .pylink.pylink import PyLinkForwardModel
-from .surrogate_models.surrogate_models import MetaModel
-#from .surrogate_models.meta_model_engine import MetaModelEngine
-from .surrogate_models.engine import Engine
-from .surrogate_models.inputs import Input
-from .post_processing.post_processing import PostProcessing
-from .bayes_inference.bayes_inference import BayesInference
-from .bayes_inference.bayes_model_comparison import BayesModelComparison
-from .bayes_inference.discrepancy import Discrepancy
-
-__all__ = [
-    "__version__",
-    "PyLinkForwardModel",
-    "Input",
-    "Discrepancy",
-    "MetaModel",
-    #"MetaModelEngine",
-    "Engine",
-    "PostProcessing",
-    "BayesInference",
-    "BayesModelComparison"
-    ]
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/__pycache__/__init__.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index beaab3c798a63fcfbc361982388fdf10830a787e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 795
zcmZWn%Wl*#6m>Gm%w#4reNc%7iwY!=W|MT&9YUy-LJ>tHAvWGvZenJv`VrYl%kVku
z_$5oMSn&(2uy5%A!BI}mJ-L3IBkS30g8WGCJ!aoxguaL3@8LD{+`qQ*P$P`$sE$P>
zV;o0;55zzwI02rBR1WbFcq&G6jK{!-B9jw50X`B_nd2PzSj^-c&w*!RNABX?2(3^(
z`4Zv1diowM^3Ul}aa0`ti2Ux0$n7sTZ@IcU)8>Yn`a;)Ccs09VExjvtw#7@e;)?nI
z>A7mU)|2^C+jePm#jNFO6_gXYVfI{oWQM6KG#`KhtG&>&p@v(nygohUwlb`ts@g0v
zHznkn8OyaI#DtJc8XyZW2#^FA1{ehxdw93lHz92|Yc|5$C~iM6-95COF?vN?Mr811
zi@pHsx<`Gvkly|69Kygd?CtLV*T_Q*77pqT8y^K}wpkRt8jkJ`FGD<p-{n*EYVhWs
z^wi&7V1rcK5FrEipx<2o$ra*rBSNSUgnUKjAVe47=bKWhwyeqz)~8;YE4>zLN^N<n
zt4=c2+VT}|Uw4<~nb0>&+OA93=b8#$8~v#y-UM$6@tM2vQ-8EhuxH^`*|2;P<#8VU
H^TfXZNO$QO

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/__pycache__/__init__.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index 522dab9e775d3ce6f28ac1ac7102d1843b71523e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 968
zcmZuvO>5LZ7@q7$vb)(`Yw-(uC|-nB3_U1_iU(V@1uF~UB?N}qWV#(XA7Lh`T~GTj
zyn7KZ`d4yXa$4}@ZK1cGoEf{7geEV~Jnxe?Gw=H(-v@&p(AQ-C6K^#E_-&H))wm?*
zQj@PB0U=17q(L3l2pf*!P1<Cwuw{9RwwW8cmba<LI$_6hmv&h%>{;$npY_AO<sCX;
z!*FPMm)>9-;f4dIAnAQ`!kdZz5sdm@+B?Bc@br(P&mTGE=6Lp=@RPSfenv7m6bYtU
z?H=L`trPbRpAwF>+&<uGo@p{13zdzfh_O<HPmS^#&9FM)M_6JWo8ntmv777)mLf@%
z;9B?hh>9gn5szo1Zs|jKilrigLnyUdK)MEugR*6yZNM|oG0@fUVYDfIy_SP?Ms@eW
zzs0^@-dDMlVu~^hnHfg~b;0gi-mS|4wsYD8uX#$$?8<gmZl`*Fm|htW)N<QzxjiwS
zK(aO^sO5H`@<C0#tg^ks_{upuc)3+CPX3!|Ju5v35v36R0O#5vaKUz;N1v2-IFcvg
zm>wgfqCFAk4D(Dy??|?vPa?bPDWW8i;w-{vh@}*(C}$H%k|~Cn$~j^r%QGPfqP2Rc
zM<f}9`ZHW~Uh2kkieJfl`gHS?sb3maO~-MT!`pLz2_6^KSb%3mHJ0E}QH=$7SX5&H
gUKG{1PT4O&B^KaGQH@p0_uUm(!`w5syrX;m3*dMy2><{9

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/__pycache__/__init__.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index d5ebaedb4c8b77b5d7dbd0a6945f09079d8b10e4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 860
zcmZWm&x_MQ6i(8gY18gn1P>k-JqSG{?6T}dM8vK_!Ae02G6aU%%(M=jnS`07Zujif
zf5Mypf>*&mqE}D;3!Z#4b*sh+`SQIlZ{E!N9vKXJ9;^>vzS3`j=Y6-q-wQPF8N8+d
zpdRw5PXpo000q9~4bhNI)O5TlTC$DWj<-Zdc2U>ywg_bp^&IbrzKl@hcvlSM5Dgs<
z#gRNl$G*4nXz!Dc?$G`lZyepUPLtE*;)f5XkNw?fzJ0~j`em-)6HRA1WdhW2#!7M<
z936reYQ+_U|E;MisuIX>o||&6^Nbn8)ygW*$(EU^S~AU4W|Qwa#Z{Z+vLKq9T!G%d
z<R;UsAS&CA!(AWa4bz6_3S(_e(k%<2g@%Qug|>x`g)YGB@km>@(V*B0Xd~Hw+;;T9
zR9fdNQZg)UUnZ#wt}c35mlFxy@AqKlT6Slnd;cYJYlCqYMJEMVfs2C|NiB9)M<-X-
z9?Wn3Nouj{4Lz!<zq4E$I6Ii=JV5vB$@Gt}&c0m-V<H5`pFJH}>n!~IIC-2d3^<-@
zw$9H|TFL5qkFkU?Ya;j!DPbP*l995~ES^s0@#SK+czd2)q*oOeG|nVhvy>EtNO@MI
z3?P=vbjcMFnwd(JW^?uq+bmtF)LnH0m8s6JQw%=v5@Q(KuKNVKs|0&$M{h;|%^>ps
Gd4gX;Q2|8&

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__init__.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__init__.py
deleted file mode 100644
index df8d93568..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__init__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from .bayes_inference import BayesInference
-from .mcmc import MCMC
-
-__all__ = [
-    "BayesInference",
-    "MCMC"
-    ]
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 430b9885a8c8bd658da24bbc4ac1a6a0a74f69e6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 303
zcmYjNJ5B>J5cMx4LJ1UHffU=|3m}9D;!`9-LNwc0j&0Z#_8Qq<AV=W{T*)mJSD-+Q
z7ez4AJilkZnbFwKX1fT29n8%eoF7H}4+7#8G9ChGq_IT~*BBR0EOE4^z^P^rq-J__
zi>jSZ4Au(gy)(Hn@w&S=!F0;N4O=dji%?ny3b3k1d4F9@qTRZN*UX%9YVhQ-5Yk#9
z-ccBr!UA74cU|I&-$fH550AdFjg*m}d(}JBrN}Sabk(o<h4n8tGBtb{^DJ$vgMa;1
ie?z$d-X<ZAo;G=M?7Z%+IVo$z@;g&9#e@<(`ThY0HBIvX

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index b22adcbe445e7b81edc8dac6cb9ba03678c61ab9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 354
zcmZ3^%ge<81T4a;sWXA}V-N=hn4pZ$YCy(xh7^Vr#vF!R#wbQc5SuB7DVI5l8OUZ%
zVM%9-Vo6~QX3%7N$p}=e$#{#;DX}uO*fTFJwJ0?&ITa|v;_K||T*M5NE@A-^ewwVe
z_>(}2;xl2Yz_Pbka+7nD!D?=?$Hyn;<iy9XWcUo!!tg81*(xTqIJKxarYJi<BPSy<
zu{g#hKe;qFHLs*N#yzvdqckbTEhoP`Ah9GP25fp+VoqjCQGNx4hp;Oq9>~rtiI3MS
zsQkrYlbfGXnv-f*#0|6t<b`58An}2jk&*EO8v~=x1qN+obb~?c0xANkVimo?!u5fb
PnVYSF9R!OwfkprT7ZzXr

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index 287257c1ca9b3f3a6d7e176e006ad432f8c685bf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 368
zcmYk1K}rKL6ow}=(^{m}OStJ`3Ps$Ah&XP#s0cD3Lm;G+HyWDE49TRlE<J%4@Bm)H
zt+$x1E3e=}d}$GVkT3tA{CT|a(P%%wdU|^o&$xeh^S?qg7r5*ZLIi@SK$DyhuR|5;
zD34G_BEApvSoCg#asQKGbWFN~OTGa+t4c6X6@Vx4Je{Y;w=@yrdfe*{7e2(~Z)$s+
z$GXtPHq-4f#+731H86eu(BtbRJ*AliW2u2<J*C2Fx85<)vI4`EeB`aHtE2?pIs?fp
zy-BXJd3JX^IiU+Dl}HNBmq2;bC@PDF0wU2REoH@(0qaz2SJMaPQ^r+vJLw8L3sbLm
h?r(0&P|KFFNwet&XSx<n!MXpX9Uz8e7=<MK{sG1iY1;q*

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-310.pyc
deleted file mode 100644
index e89dfb5e6b3a873ac2f40dcc2084aa52caaedcd6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 31276
zcmbV#3v^t^dEVZ~KCu86PXgd;DUl)}k^o6bltfFSC{nT&krXX4wnRx@E^rsXE*87s
z>;*}{cl`)uOG?66PMkD}kCKJcxW`VKrcKhknv*sUw@GuHo}QD}&1sL5CUMnAnn#n<
zs<GJb`{&-fy8viO2D!6y=lRdvnSZ|d|9@udy}g+j{(k1I1Erq-8;kuHK6L(Bcz6__
z#(#$6#2lj<yJX0>dC8P->yjnk_N6$!&1zyPaVcRityN7fr7oq!Z&cGunM*x^KYJ-F
zd3rDP$#?&ye)-N_%E|Y@r2+XKyflb!yE?Qqd}(-T<kE=bk5@;Rwq4pL{zP?bY5dZ7
zQ0~Oi_Deg&pRDd&+I4AH5WagUe`yc=DJNaMW9iOIcN($x$DEAQ^K#7TxnW+~>ln|*
zCbMs%jj{8ShHtx9oF#n68*b5UOq%}SQmI%gG_I@^Rmmxol&UK~rH&OEvvpNM!ro<7
zT2}ShQln9>%`@kPqC2|)PwIj*ccD06YP@Nna0J-rPM<qH%bGg>M)2?`K8-KKDM=rr
ze+~4l=~#~K#PQ9434D_H#GTZ9%t_-rGjAY8-05+$b0bc#)AzD*$#(jk+{-b%kpX8A
z-w9{P8OC?gIpB;s+mIsVj5*^7NjsCygtHwX8E1#H6Cpj$E@wBsvrgXGgYRDF4(CpM
z_c?o=efaKo?sE3yJLj0_v%CGi$BL_^#*?+Vk}B0^OT}jfVzEpff2Z=Z)ncQOckB7(
zlA5clrMx697i;-bwPJO(QEp6SGCHm6s`AW=TWZMT;pk5u&z0Qbxw=!T=1=77GZhJA
z4GhmONd$sRv+k5cIpxMIUPrMuySgF6#f4J7GgjxygSNbjs785ysd%h$C|{l`O-YDT
zF3#6MYra$ifdO@_x;`iISBnbGnJwj)iip21C4r=ss#}&Qx0J7;;V7V5UMyA13-!9A
ziL4cuN}#UcszdquvRh^?QNu{5ySiLrHN~K-4&_T_5UKLB#cFv*6`3V};PPocU7pON
z30L8DBs?nUz~v7y@bctTUfN!oD}uIsxskuTUvlohtjQ^X=Aw&2PUL6m_39Qhg|94s
z4P@k_^arAsvqc>j)k-O-0HwNUY;pPaH9Qt2;mZiyy_xbSiq%F~tSVh8)K}c)6}N$c
ztL28f1?g-$qu8Cuuu^KcB`2@5ad^&@@+%F5gySHpI_k%bop-)o0|ogf=koL&$``9u
zJzh$4<yusBBPvk_X;fM;?C=&?t$qQGQWXOj%%xm&%HSht4ZgQ(%_)iCfKjXZWw5)#
z{P{3H+FB~kE`;+#`bhdRBE#tz4ebV97O!p+xL#vLm6kC2^UL*e4V?@Is5`4%V~eB0
zy8EnATw1P5BZ^8DSK0B6g(3#@0dP?rcPL*gEEiRAsWEw*R~8o1@rHDz-(+k=?T83t
zh`gJyIJUr1#cQ?voT@KL6j=96afU;rJc|y*Xvzy|CAXxaf`Ye(rm(-GVNZ?}v7V@P
zczx)uEgE)yWoZVJm>m-I(R*p$eMk5gOeyjqjKHuQ45wP%&4=&LT|hul&9BJYyH>^s
z#W)8;F3)p>&J;P~!9qG;Vr>&~^X03hnjWFSU~mfHF~xT|JZI}Qw^*)WO_WZn&ooNv
zs%Bj*W%JzD?=R}}@?1xIzz#d}2U9H=5_)~;dPh+y?RV8R<;vljRah#y3v~x=+L|4o
z$_EL^Ad1TvE!WFn_+hJ->)<D<j5w?<dL1Kg4hRd^yoj2pTGUor-rNQIRfz)%MeM(P
zD1U9Cj7ba}QgeizM8!m@^Z)=cQ&@7(71d(>YX0;BdOd#*y<f_oE~;uh7$saiY8(fR
zGA8J1R9M74W>zus1;k*5AW{hzh^5)3*<ilD%Xcs91O{M3cy1ZMDPo6VpP-Kd*dUB7
zBIhz|27kSXiME+bX~@9Qe?jmC5_M9?l~zXET)kSYUqi>7Xy;(AM;>{kGsB6GM)fk5
zfBP|H-H=i3KM^qb{GFh;?3S^b2Xk(7##-T8vAS4N4dgm{<jA2sGPP$_5SKqN%l9+6
zRd$YvATwtAhWtxK47`;k88{j#X?nH0zgC!8Q8m<jY*S7~9LA84;y2g3RKHqct(<;R
z=Q##M@2j*lTf&$ThSg?>Vcq)$@3i4B%8?~n3fd62x$3JWHB)bt!c6Ed9a47N!!xX@
z8D;0lD7&Sl2G*52Sb1><1k2(?<{XY0AR;XGvQ8Ik9N7vJ8Qizr?mV(gB<HGqNJdRp
zUJT0(d=uQd9N^3u0^dTlUZ1^+DRCRv6b<#WrQ+4nVf61|0FV4>RR=T{a3<_<^H>j1
z4mf<&=*xnqG?{0ge){x>^3v%JmS{pc!7!i?@P_P3PXZy5kXsmJRMg{F%MRgs{=j4B
z9-j;#X(0k>g|e#%LEdQ%i!$(KXiU1fB}X+<>g=wL7tn4Lnt=b<V*#O}8GMm$-6eJ|
z)#iaYgO#^y5x^o6wW(1GUJSMy?uwcLm<pDv%^)NqTv|#jf?~G<BHxY`D;yx)$LNCd
zTd!U(ytEPR7Hai!gFt_-S}$&e2TozpW{PU*D)u*Mc2I{Ni(F~htWBKo$kdVhg1Raz
z4Yv@&uiFpAZ$q;3T)8+?u3~E49zw~u(*r^_6kHrtdG?#Y>$3s0<_nW7dVvq}Y1$)R
z%%xO{BMfV-EHBp;P;Uo^K01}J*5?ZtmS_un*kQQ~OX16prjy?Gm4aa$je%oR`KQjF
zLC&XEs@0j|?Be0GrSeP_@9+$ejGE_|j}qTA#RaIqy<L5I^+f*38h5Fh`XDe$ONJA&
z28`0nFYFJf+#kO4<!aq65DOF_3?P`e4M(_ubU@P~W?*6feNdNY3E);6tLoTANgYeY
z<#$sBUx)6caD#Len{ftW+pHtPy6d$zuMgIksNuynt>yfIfK>uV<}V{<p(rgD^i#$z
zG(yeMsEx|$?7Yq$+{RMSaa*IXbHU=*NzfEf3Pm&fFJnMEe1J574;Wm<tHp8^s2*GS
zjvkHZ;Y$qi>d_8SPOYR0ZrQDt3Uf>DZ3(%^6kHoIRH7xa{X)AyAYYi?q%E%kW7eYT
zmoYXW7Rq1N)ouZH_D>x{Qy?MX>UaL4AD0dL6Xn*YjhLT~;GarEV)XSN{vrN->7;LA
z;`lcEWX(bWv)d3G{?TvZa~hw<t8hHSixpy?3D@u}xTa^rwY)f7+e^TWdr7znF9kR0
zrQxQ$4BWKW12^Mk;r4j_aI;=7++ME_Zl9Nf+wTp)&3S`x2fQJ;gWfRQA#Vikur~^K
z#EC(SWSpNI_0#7<Igj6SrY*zqQ=zcIw<$I8(-HIbdph?2elA3@;U3yg1~|=6M;kN0
zw`(8c=OPFi>;n9r4lwEWMJ!*|62GTo74vfdT%pWD))BwI{VZ(V@9pBwes32`Md@8U
z17buzhx6OdZJZl^ZsQ=G+~(V8_MC#$E#~)h2)EP_LewxF3K!KV9gYAsMrWMP1fA`4
zcF@^HXE&Xlbn<le(7A)oopkon*+=ItIA4mXNqoIkoL;KA)3eiDEF06<fh<%Pip9qC
znfk13KO58UFS{RDnVEh9fE<$1g=y(V=?rY9^b_7%uo>9+Jhi;)rwWJ%C@*{h6*dmR
zNn{enyZe_h*0#yQ0S2$7lv818vy{q)fA_-Ej}L|3jbDOb{8g(GYZ{(WF`6b^vuSx|
z#j4n^@hM(OG;O3vI>rh*iy^HPp3{!GZoX<2lC^zn3C344&G?67wX7X;dsdGbG5%wC
zGyZ(6W?YMTamR3sPeI)4S)VfJ%yGmPl9Ds)Sn`y{Q?JzX3@GTsQ@>;1G?1>>%`wg$
zs0`jP8<*XI)*zqPC64J@L+ddozG$i{at<TMNX>?Cls<RctCo{MzMqg%#@z86rurmu
zjXBBj*lV$xMgMCt#KtNU68nR%#O4eN(qB$7thIeTb|!X%we6@4t)<<atz8V4`gfq!
zX|#Ix>X&t^b$d}xteI%n*hCLDQ*QoM^M-LI_R`{uW;5N)cuD1ZDQUCsWSZ<*p{m&<
zz8>k9G1Rxm>#0n5neo`V(ahFPB2Q+~Z2TEhRVI+%P~XsD>aRDYKHy|gGs@7Zqf&Ng
z>MD1*ciu2xHyYzkZ!_fy4TZf(+sl-dOeNdwMecoGFW(dE2R}@BnTKLwT8|@OtZ>(r
zUs}u1*V+#^ExmI9y<>;{g3w9Sa|+*g2j2%@x75enLkKy110w!K(4n4r)oM*4r1w=l
z#tzpKVG6u~X?dT0q*%R%R7ZmEa12<%bFy+2Due!;M(dc9^Q<`&l=or$-sAN-12+xy
ze}6NF=X+7ceO^D@erNC|#zNt^yR)(n&m51_b0(hdcZP17%>niT!%)&-hkvNUKiuIT
zLD~mE&3|RB@F#<MN1NL`j?4!=jLgD`j`sX9Qn5Y!KHhpC-23o(aNPv8W5_kunaeYr
zVd;fGNBIvm$7_8UVdFK9oQLsAIwQ{LP0rCr819~QP+R42CHwi<8yJH|%zYH2QTiS3
zG*u<e#7+B5>~-U%hf&|eYZ&jK-&AbJgU#(SPabJ*$J5=fn+@hYh}Z*Y@u^phb-X<p
zt&h2<5!2f`vyQRj<T&TYF?X6f+|x+;xVK~7z|&4VJ>gjMhPQKD%-eYb6g79fV!Q&*
z;B4o-bMxLV&J=|2#>no)$S@l(N?+|jt4&oyE${cXd%I=y9q`7Toj2p&faWsZ#GLt1
ztj4z*q(S_yn|60R==lIXPvQ-KTW8F83?WbPov))^SkosSA}?cKd;w$gEbC+_W`l)w
zAF<AEwC9|AXJrWK&a*XFV@UmXPJZifl>c<=f<vyBUWf8)Jl4!_NyP_c<n8hHfX-*U
zJ?qByn3rFSH}62sq<07M-HDi^-PAK2V|1^#S5r9_10o@nTTx@FlkT(59`|DF+t*{m
z?C*W>f5_XnZhU4}^DdT-&xgIcTIVp%;+5wr&x6uS-kp^fynT4T{Wq<3>8IxY4?}fo
z$L!b*%K%S28hhPp9Jz*(#(&S_qp9)sgPy(kjF2Yx#mY-mzTHH+*Uc*_ZvZ3qBOdy(
zP>?>i)I|^6zHoWVKDN}XM}A+tP1}@*(OZ}aO8VHVmL03G+{^a^BuWjlvUcpn__EaZ
zxz4K=df<R}pjASuUN0f5++2-wM{}5clJdv779lL@+0I=u%jRlvjE(tqu4{9cZTn@8
zopcWH+cA)Sp;9hXBHyBW68Yy^)phhaX5&d`Qogxbk-OPy2jY(e-ywGk!#k<|3-3VX
zIBGp!JC2!>75e^)Wn)dAtZ^NMFIs)g%2H2EufWYoZ*mJRc{ll$clSGSNwl`Mj<@RE
zjg_|l^D*ZjYQpy$cJrWHuPl29!BGy~H1Xa^m4%i(>DjF-uUJ@H4?9zs<4XAYSmlmN
z;|90_XZt$)!mYTZy0x+%^K7Vqr@vr0;|RIx96^~!onvLgxd;EooqO@`zMH+xLqW@J
z_2U?=d%Q!HYwO_r?jg^<VQ5!YfWxelVX_MEZ%%oKy(w>sc%(V)O}DP2?W^7t=MU&m
z-jt*pXdaPtM>eE8qSL)@U->LPO?R#JQT7OH#~PoK5<TZ0mWBAAL<=53FZ>(lc+g|_
zzhO0x))L|K8)oyUcc|5L9$*fX@-gQ@@8IWS-cj`Ki8pNLea=JdPn7d<l=CNe1D{}h
zc%FPcuAX&2S^1924Lp%!7b=3QoQGv}z6{zvwH^asKh~UfKV5kRDPH!bok!4zCvRef
z4#EludlX@(oX2j)LBn+GRp+!&Gu?X4IYXcOoyhfw^SJZGO$+`<@$VG<^JeoNZ@Thb
z-aXFyIh#?#1EA^w=K~vB8$7eM?%M6z2ztMpZ43JprQJknFQCoequY!f)st)A6YVvh
zb&CqBJMR4>j2-MN^Z0wF1ff=~EfNis?@{({=!|VKv@B613*h!z619tuv|>@h^L|2M
zk6vF=gxp_(A;c_HP<~w0+5SMVE2FY1u&;<O)*#vK0_fblCh_6cror7xIp)P)>LEmT
zV=V)~6TqAU@B7RvuuhQ8$)x3*wPoy*t|-^fL;?z0b(m8}d}EO|8M58vRz}?o$Im=O
zk<4s;Y59>qW>u_rS8VN`?w*)}l>x-8?S0GCL)AK((|Ba6o!>W3`EluW-+0V7PWwG#
zJyH+>40{1mjfU*uzhubHjO3ihHWzVmheiOtt(MSH=?hdbU4XRcOQt0Bt;N#nS}xk4
zicIoEel7o49l|AO+C%*mMQI>wmKuI&l^Pe(C2^6g`nFSQ%=+<SW42uG>S-G-PT(Uw
z&8?pFbU!8u;UP9cucFTZYA8Iwre!?V(c`+?ZFL{A`9|3{D(X1A=y022Q$MTaQ3Y=1
z8<JRhT|K~RFgO~lI1!sL61T8}*ESi*oX}q1YPim%p+3mct;MS2_n>=2A>KSf@%KMY
zzR7onzRW=67f7Zd7J(AWkIS|b-J6`PS67y54d2MDO-B|d+H)b2&ox$-mY`|h5WjY8
zL%_Ru^!uLHmI?(KM+M&~fQnQJ1HdiR7rXkO)bkxk|8sLb&yk*Ka*W3+*ow0EE7oT_
z#<{Hqk<L#)N&PhkGz2P8zm;J>(hxboq$#gNJ%wcG!2S4Y_ddov_1`k)DI}6HzvDfP
z`6&OS_4Rw?@7GU$9hKnkYbWP*$bUaMuSHeAb<$7GK|k3jua(|p1D{Ydiki&&2?*^<
z)rOyjCZOh)VMgHhP|2eua|n+lbbd;bE*BlY7s?L^PTYlpTe|N0S)FF_8ugEUzlc>h
z_Oua$pVa}SS_7hRzjqEwo&r_X^%d2?I9q~HXTeYD@1xFIZaNwc1$3-i@Y97*CN*ik
zNqNefIXG{bQ`2wRQ_IdA=2v-s!Nu$CnVG3y2aA|pC^aw~ZMN5s&#O|YM$S~c4h~qa
z!kjD)0|^I{eFiG4we&f$YNBq&RvwC0O*$Wg<Hx1ZYyFTv?=5`v=#l1L(c!EOT@Wh<
zE#8N6hizL+UVQpop2b*xdagKI(siXv&b;=jPoPN9m0SRCMpv(8rjfb;+X1&Q`57%$
zN(nJf&s6+WXtLoa^icNWGKu~4<JXtZlxSMur@>-_sm+e@bHM~Gh5A$xJ^2aDLg?oF
zzEh#;*W+SU$8G>iqh!j@fxkLb%!Eb*GK~F98Af*0h|iXMbJ_9JXYgj9fF%h!7V@PM
z`cl+6{y?n&HV3(0WX0n5NK8Rk02|#XqIx}XZ1Q|X8IW&-vo_Qbc-1jF_b@Ph5zJT<
znJz)6ORj<%MYp61OaacM{4}h&3c{-V_*w~SJ`6@`v2@rmGNe$ote$4!BApY_8)a?2
z1#Oqe-~8S}z}rRis0DKmGY7|-pHwC3D!;FU)=+q<h5G(ruq??66Rf2@Gv#6fqmXt|
ze!pIU+S1mfD5s7d7m=aASF@)`R#spK;>FLFpmo3!B)SKGr~o#+F)*h|;n>v`t1~3E
zr_c`f_iQd+(sz^{haWl_@<2aXtJm0#BD(Z#@)*vTm741(AY24@_N}$@GSjIg&O8hA
z0#C&nsrIeX^<_U(t=HzA`U-RbetuK+5UHvH<_4_asCDu!$X~U@lTt>kzL*)l?xN%O
zGWNP}fjqx|gKFDP&n~ZkjgU0^0*vVV9`KY|43e4*ly4*J@Ga8VBZH>UScWRjH!k|-
z{H&}-Gy(I|R4mbmq2VV39g{y4cu;&qtZzZnrJe<iT7(OECAwOzgraT*HW#j91ynjz
zh;#;eDgqz)No{+Gs+=;&DXv2N4Yf|VGN$;T>em{6ibw%AngAl0LV6wZN7~vS85LTO
z<(nAv$hio`7WpX{atU1+M@P<=)Mb*H&~j`)<<<+BO3SMvP9_*at5eW;7Oq#zOMZ3+
zz3CL(6&jPF>#BVBRagu7_Pi=Pem_%^qXrC?0{^Q}=Ff|q+8-?h^7L*!m7;tX@N=Pj
z%(v84EH7d2y7eX0zB0pXsILKRkX&?1eDpJ#Dy~i1zbbrK5szZcDuK;8VDDI{L{iSa
z=@RbizL~sNue&0yj|*c}pF#=hH98`h|4|m$7jcooT(vl_-e6!7Y^hLouB-R+X+ZFC
z0q-rec2yS`-dpS9c<FPeE))R$0lea?1w8oaRhhf=_MzoxBg<5DJ(>S$j4}1wC`$bf
z9gZ+&T_~dWC99v2CmD=>8Ww^|v&AH=21p;qkY)j3ObsY)z`-#i#kLHdz(CPYb3q3A
z81nW?t&CaGMM-gXwzLe@Fcy?>6#IkpVyWp$2qwS4g~B(M^@v9T!ODJ$W<&)nT<WWA
zLz;>e-4jWSU{sAMg256k?&?1=nYmh)CD%8vm;Dr9qG+8gr1bmsdoI9OlRFiSUa>^q
z&yG4r=R6&OR<e`GZQLV#0r8Ddu(m{&%8L~KWi0XCGOetUH8O^IYt-(uGIq}BGy9Cb
zc*aPX8Hr1nj7JWn9Yk6iX%lgN=Zvgnn;C=+8pCGF95ifm*vOf-nKDoYN<bNgX$_-J
z(-=$U5Rck#W$j@rXN;LS+qO{ht-h2E*quc^{Fkx^Ma41<3PI_u1irIY%1D^D&D^#%
zXqu?OCI#O}B^i@rc~+k>Y-H_(nRt6NffDg=_-#AMx(DC3Q=>?qxRtt<LL6%yi;sco
zL5rb-pcCa9_N`oe3}t}|q)wrQ=G&=TyKZGtCUWHLgq^Tbpl1y27(@9fq|I3=leIB^
z*v!}|(3-(NwBKMmb9_QOcbKDA*y2=tIMIhtQi5K&W#7uiO_X7xRuli|3;!klccwp!
z(m)&D2WiWqo%Y))D}xrNOoW&j^gVLjO4;Z!E5UH~GD<`L8;Q3wHr^6)+iz!Wonrz$
z$h4r{T-*H)d(2rfukf!Io*sNo<J0&EwoV>)2T)QO9(H6<TG^gmp@2NzOnA0yweY-d
z^v4iqI@muz{R%~IB?0ACtU{G9RK0jQg<L6}x{}iAn@JbqScE|>1F>(6N-xK}X+e2n
zwR#|6GS)?y^=u5!Pzgi$hZ04sl-gVx(?h%or3q8sFd-1S&}8XZD4r9N%W!+$J`ciT
z5i;G|%pkTO0!94$l<8$CY=RiK$LnznsJ1@l#Oe2};aD?^l)3JdpdD&4P;9Y3*m4M`
zv%|4<?4sHwJ`}sM2oaZVIlgtvq4-WC=0z_Bp-Q5d!OV?B8iC*hrUx)MpqaCnJZ@A9
z=ed5ucBy-#u5AuN>B$@xN|y;CL7A<tV67EtO<k2`|JH5z3bxtK4FllIQ~*!Sw5`!D
z(~gQ(Be3GmA9D_e#A#DDCE^}fsF2#IEjTbiVTL2riZKOI7c5%44?uK?jV{o5o91+z
zBuCf_N9B^qLu7>07!GVkBBUP0vj?7TBYbUG6~$_xp|=w#h3GGeW6rY(2u*`@+PrK?
zI>>w{=@v}?0G|UgrKh@TxX@+tC1x#cYf=$qsYfvTM1pgE{vW>d*Z=X{%!QMaLn_bE
z@1k>)4)+ld1T_Fm)#n%>h+mZLUtv^2zW_f|gmFm`yRT!|)XK&*d<E)9n9ZlNE;&#X
zFt~3O9Y+aNP3W^Glf8NYiq<3SdT3)-5F0Z;h2>c9DE>|tLpTSt!&N%d?hQYI)%-~;
z<`xl$NL%7kjFuTh!ZO7b?Kw<~#zXKVhRJWikHOOtSZ%<yWj(<P0lsVBB1i8-=xD&z
zZ9I)(O_+#-_wCrg`?~f&vlNGff5f^3Uc&ekJT3%L&`#JcMI)9lC$K%R0<t}RC%pJN
zB<Nro39`qrSTpG*TS?bwrKo?OGr`!X2Tg%Vq=sW&0$La_o9$$1aR((-(qI_Ia11%q
zURs#J$H8%<!9vLi4=~BZC4ASXee#i^{nqD#0N)~$@s3gZ?k3lD%!!N7UwAwsf^*``
z<IkRc=E(~epM3g!n@w;tgv5H^LF&4)+<pSi!k8TP#E#C{mFaYS<LRfsK=U?DdZ&p<
z5Dv;vooq+D>N;DW$K((Dw4<LcLXh>nc>nYG;O}d{`gQGzJ*qCkH<{6M#pd3|Pt7jW
zv5{C@)w9vU=286|Qb8^WHs@OoV162D3XOX8DrF00<R_N%jq7^TZJ|GWqvjiDA*dmw
zww%&c$N;L#3q`$K1C<*lh@XUw@I1DC-^)qThvHI0eKG+?jlG6#tc`9Q_By$50iky-
z_bKG1Y*a@5cf*6_lgqs&OFe8zV23h{C$q(c)utT^m-t#r?7ZSGM*a<2d=VDN0!_=W
zN@^R9YTgWB!rCa8Yv@#92gYw`VK7ge__i1<VC+^J)?g^rh<zAVE6+j)!GF(-AB*F9
z=X`ja0v@a=jr<dJ1v#9fEs#6j-Mbs(;qjJW@XE=V_jHtqb0VsW41BYRCC%R3a|OFB
z48pCA5Lwt$i07o`p%ytj#uF1*IRl$z?!fi_XBjJGwF<LdER#52(yoD}P-)U(6S*HR
zdw)mgywhyaHRv@jJS^5VWn^y|9CG71OV-K1^RiY@<j374+M({pYf~>`IAOGNU#ecF
zL;FDWopi)hOtz-7?hI~jpq9(^Kn_#D?wPy($&_A$B-{I0ij@4<@WBF4c83A&QZvL0
zWi2(_FnQEZBF9g0;!p{Z7zDNl-Y3FOa6RFE=$08D#A*UmZYRD0)NZa#Y@ASS@l)4)
z;#^GPBlD>R57&)qY{_UsOYdS9t;YzV0h_sQ#ND{8F$qr~B<6)F)(I(CP9|xMg>?a7
z(Tm@}DgpbY1gx%XbsnkWPJ$|uW{;a_CA|!xB_QuM0CU(6!I~15lXGSqu$(@?*(Z?>
z_Lb{K4RiW_n4<xJ9``a>bCSjLR>zw2WTQ^gWgJ=yjwa_J?!s7x*c@i_IEGRyRXbk&
z2OyJ%C3KZm+K|1%=A5<xI2$AaZ^X>4)a2k14vxW^7F%Uif|)DL@bk0vqJkVY8b%$*
zplCfDuzskW^l2~Rsj2)~N@LsgQ6$u^BPwc%Ra`62&sPHkeGO+5@*oA!3&p`$U6tmk
zxWd6D_ZkG}`L1e$lZhSe6zOYW4m8uUyBb(M2f7e6J~*=rnr9ANpKMQ!h)aA^MEe|=
z1HkO<&NUXE<7t99fN31dXmpgm0P(RROVFShrJRB6BkBdt&9lX&8K;=X=^zDpB&@3C
zK%zeW(3S8#wvc6qe>&?C^e@Q6I!6oXyhwy`P-z~*={zc4!Wn3s9aAt6=biw_UF&YU
zhzLv6nO(?-c)E-SYIx8v6zj_f>kz@~y4t+(ofsWn7X(dLsodcS>v!t=Q2N;@JlB1`
z>M5BG`NacxKhNRBOVktr@!*HnGmkwXFdqJ_?sJ^)FXHR~k;M7QjGu2TV#=u6)O>LT
zXXGdp*Ju8x^i*r8hsjF0MEluu<=VO8^=G93B6+ufQCn-!Y+Nvj#vn<Y_N_Uk>w1$g
ziR_bo0pxhj@82+Fq<Ft?sf+~%a#>BBpL(u<5ClNRCc_INS3Qs*%M|Tt0a9@_Gv{a8
z{TM|Z5p|$C3z|2uUWn~=vkJ)jM`XcN%4EkWQlU5r0wtTmnJi%bfi2l?JNqpAB>dxg
zLI5vp*F(XCF@P`$7~>I^n2re`lk*ZZwQZ(qWV{FkyiWnbq$m-9A>JOaPnwAuVv3o>
zQ%^Iy)(=QS)6A5chO9#Tfdr!$=9VL3g8QU~Ejo5{y1+=4`7Lb_+8={?r1-tQaolm?
zWrdx?=)ICvi`YJxFfv_)5qzBK9cw6df2`S$l6$>=EF8HtwyKYD%>hu6(e=A=x8KWB
z!qFUfJ|?MiFqj_*WE+%WuphqY<|w_;?R3yLkbg)TnA;Cv$;ho+%|XDjLDZSNGLCYF
zxO6m!P<oF@PhM#b>)g$eHce8x0fWk{3zK}uhT-pDiZ2dx;J-vVnCMqVNi&SmhR0*A
zZMb^^TO^Ur03^a}F70rmly;H;knjbDQ`@{)YYe9S+t$ryuC{9p@*k!Z^Pn-bo@UVF
zuN$iXk^F~uJ{Fik=e#l0JK<%y%|dIw)qab$wv*<Ky#y1xVJxKo41G1E`^rmVNlh0=
zv9pZ0!Rf$IV)I50%LPu&21XPiu)-R%gh{tinu5J_sIv?t8c_xBZjt#Wz^?23|AqtB
zTM!7|-Mv;tl#qXSpU3ZD)01+tW%CUJQSMNR0FF!<eiY79J4u`-6qw_xC+l&54}dMc
ziBPLkVY(%_?W{mc-9#A@0-FGhfZc^_eJDf;FY-9lMQ?FxajK}V|M<wU_R^%eCmJXn
zxW!?9X=^C_3o4aNA32r}_ANZYO~iusZb42L6+Ci=J4R3&(T{EraTuRxO5AQ#cn1Se
zlGqbr&~=?`>O9p-!n!v#kQ4=P>UQnuyjEhvuu?FHz$OMFga~I+Sx;OLj;*eiY<1Ve
zyBJ%Yd!nxLAkNgSi9+8AHDC*UR%8hweVgu|=tc)f90+VW_ex(6m#p)G0n``qtf+#2
z^A`RDEW8Ok9-G|Jv2l`vHlJq7SLpmSogbznazK#?ic!HfVg>Hv^+}z(`6%aeM8wBp
z{UK2?%OHlGnU?NB*C^5iEe`wvCQB^98e(=)llNmR@f-{LA;wvy)si|+TrsY31yx@(
z15mpW==XL_HBlgntWU{Kja8v%^x2`kOm87K%s|3(RnYCNxT5&-`=O|Zptc58EcgM`
zwLP@G&{GITI~e@u1i>lntzv!(LQ7g<Kp%)YAT(*f07mN$nJuJ|9quOrRHJRd3dc6!
z6!o)6ltF(ruEUes1w{)~EKtMPeYR=uf{JDb)MU9hR9{dBK?P))P|75*VZ^r4N+c&B
zmQ2M>n<_Rcaxzfiq>#f#>OOwo+F|2c1eXjSv`jqf{8UtBZe?t2IyXvj0(*omvE>j6
z#D_1pt*@at24c(CAaJZ$*k;<TID|L}tl<#YxJd{ovHhgh26m37JVQ_^&wNUAJBqbB
zLrj7^#2V0w06E<2#Vgqg4z2(};ZR-$XaEQ*+3J@gJlMRxj3X^HEOu<H)i~N$$pKH1
zmH}u}?8+dtD{&qNdCkCqCm#CCNp54#02V;*SAoQW+*ye+5tEb{=yZaZUMJP;bAd^;
zCI>hThf9QRpd+BA^iV)`3n+mh*aXu}0@n;6-H4ZHje0mNp^r#ubc7=nDfGvnH|QoS
z+j?S)mikE?JRI-_w-Gt?UAgY{VQtU6^-#nyHZ1Hkq|mo)<hAXGtang<WB!wS^6&g@
zP4fPB7;jKa@)9)3qcL8GDV_{aSZUG#QcZF08GirM(B+6s=4qLKdJt1btcq}c7DM81
z0flkQVD0{m;)@QW4_c@c>Q$%1)HE`?6Mm!~MIpDPTa`df$NZVo#HBP%&pf+<s$T_F
zY5{59Yk@sjZf;ZNzYfdP$`g^&j%oHuk&|ycujNmiBYrm8X~7IbeFZ_<AWL|saLms!
zY%7-gYm5-l)oHf*AM;VzFqxr<ebsLujJ7;;P}l6I-==;_eTWHgZC$6#Dn-kKGnCc8
zga|*Q8%K*UKYNkpT{@uQ=gzD8oV>ti_5D76GW7II!V9M#57Q2X0Uf<1=0Dd;v>ue5
z8O#y&wHqInddd4i37IlAFq4*=C!sW(RTVlMQT}kJolrPreh@v{xEIk0Xr`&hr>1_G
z3=hn5A_0vJ^w$Y%!U98tZ_pey@?r;IegZ=3JKx2i?BaDhQB$<b`%{nx{vzTu^15bR
z_>4upH1>E&a4INaFr!mmvXa2j$TY&Km@(xzS_Yys?#CcFgMK&k^}0P?TDZzjgRAs4
z`*HLLoTC!QQ?5CHy`Uk_%+ag;0pA=9_JVz@F9v%-Nx3;)v={8fZV_cOe{)Fty&>-P
zyaCw@4kK^BHw^klKovxQ5b!ymg9qA#DsL368v_?5Z=;_(wVXTPjokouckE#t(sa|6
z!Qt5USaU*lj6+P@+}^Qc9Ck;%0ogHbmmOojH-Teb+k+kBgwQb35i$Z^Ix2$27<lNo
zw;gp4iaWAyX~80PksDKtNs5Uu#g*$<4x=3F0qWM%t!?;>Ay;-AdIRm<f#-1^U871&
zIUIxd#Dou>*DOiq_(Xe-E18jtOe&&g0Y+`aBvVx&l4v|-(h6*9BPN;p7g@kM>pD!I
zU?)La0-$7?=NS9*bg1W<+^L1qL_RXh1xtaWYSKhj{XWJK{Ak`G<~-5t5=$}6JyD-R
zNF?Y;3;Pw}k$R5K^K>rJ5e@7M^kJOAs4D_NTL1bKtGUJ)YqhZCC*jb_N?44BNlDEK
z0xS7Q=jsm>HqP*`a&|w10y(=mzagZ-3<sEj6;K}_PXvTui;}T&CTviw9UV{z_Cx?c
zu&sGJo8WimZSyZud89RQqM+-FM;xBsup)IW5A5><KBw_%oDIY~O=AtW3CPqpF`#il
zXt4P=F_3Y|rDuj`FOkaTIcq=|L+x|p(A?rl#13LE(m03|DRmQW+OeRGg_f4Gd9Vio
zK7<LL9ZZRYi}SbuB9z2`F!Uo&++z-&VKW}&Q<T#|PMI+A2So1f#v!<gVs*I)>vs}3
z^$MdHF9BT{*cUZraz@Q^a8p91Cu|McMqmX%)}||rt36E0+p(-06FwzvA*)NkmlLK(
z%>wiZV=+uZ7^pa+T^NgnB_X6oD9L(hgy9Sq^cSQYWwmK_dOd3NAV@>(fR_XuggKAY
z2BRLZogS3a=Ov>w5Gy(Ti%75jW)qdr3JP^$&Uj_0H4Ju`!I@1PtpLM-K~8ot4u3Do
z&3V0*k+5W#*^E}UL8vBg8A7PtDBq}zfoZ0|#{0lfAUMOxFyqRoJ5kvVc4Okq9gg%&
z4zB&r2%o_=gW^<PFc#dHrgz<eW^QE}q6a81u=N(>;_mC&He7wT;nu&-UEn+IHMt<`
z``<!4m#IkR5zz`bnU4$&L*YQEHu)x%pI^($9!gqpBCi=LSVpY;o0wYaG5Fpx4zKa<
zi@7N<ByBm2V?Yz#AupVuNFS2smk^iceP6f(a5cY{6suf>+0^o^jc(3$ggJV#MGH5`
zpyE6zSQ`vYG(*dNL_7z2!rky7{Jy6Cm^K|(KZPJ|<tqIBSrnshm=J52&oTB_==>J5
zT18l-;K0OuO|$S{kU+?~h3O-@S`}TU`ekO3MMRXAukmr1i4)LL!7Nw3&XCW-nat@G
zV1NNPSUZ_M4``uhumhcixZh7wxQ@LkxP80PnxrIU?}*Z87_jA4ONEX!I2MRg3mdyd
z+xC*64&*J!|925KZi7v-+Y(t5dsQko`%IcP_Q8M>Do&Wk(9E#Um@sx>$C`s{!^Dtg
zHd$+sCN`-)7!tzB)6BwL6T4a~3)4~TWF=Rhxpv1!_8m=^$PT=Vfzv1{LT(Sl1LPK5
zgMq!KSpl;K%Z5yz%%*9<IL3z24elwHBdtJSP8|Esy+}!>k6Vjx((EAaiqV0as-z)f
zKIW#dcSTy-6T%MBz;y~eO<R@;?pk?eMz~DGc~u6|_5m-lY(qI~gTPggzgNIAEB!!_
zi3+Zq;WKuiDKO^*@+Sjy7sHM=DJ2Z5SCDGRNkh$Ahi@2&6BM>a)^Q&+c9Bg9BVD7-
zOl=ZW0l$HT_6QDzzM)1|rSpFVzOfDYe}wtxs0!94u=H^$A?x&ls<b-+X*&)vt6xFP
zc5!#KcEZ2Q!*O>YMrbj}I8CkHV2gHxf#z{=7uQB$Cw&Kc_0Gy(L6|>-^xRGFbMM05
zImgQcB>aob0sTx30d~o~jC1$54rpJ1f`_~zV9vX|!5eZBL30=>CN+lDy$r^DPU!8I
z%M=cWwBv$`!$^C#P>qtk!PY?>cW-M4lGus&I|I-T^ow=?z7Flcp+Gw@Qp-a-AZcac
z3$+7>p&d9C0EEFvJ1_$6!2Z^hrZ><KP)9KcDitU*oFSod7Vm7DV+7&iXWMc41Fq$u
zPkLnB8<Dn-JHwPdKw^OB$`M=^FzAh-9TsE>k{0@cKfLlgsAWh-2u2M`{WH(P_#eR`
z-3g5RW378UTzAq04oBSQVJ>zrpRvT=*E;S^IHQoQ>~Qaw!`2V1U`bQI?(Jwj=xjrt
zon3FUPrprXXXOO0PqImYGsYQ(W$<TeNpDBxgfkAkjf6=VtasOzW$cnNQe9>I9_Hxw
zZP;CGqWbUOk!n-zde2mwSNgsss%0bxEjO<m0o6OUpxOkWd#AoO)#|rEb@^MOT1HGn
z^>;ZikDA<B{Fhh}A`I{>ju-`cC0Wi7i<w0mK7`k?;VQU5z#3ddE(SAEF|=lZWtCV&
ztnj{hfjI3PILDY@aOUpI!+aFCU$!;fQYlXm>$50RlITSKg4|uZx$?Fkj3l=66|UjX
z4h>490wMskxe(FL)K}X2A;K{Te{qj0nyHJ4TGn09yDnbZAC?&v7L*-5zY~nxpkYui
zaKWZo)J63Y-1F)%1JZDCkamv#lXQCNOw)N34(|I8`bs^)Fe(eQT>fdIjSF-Lp5$Ph
zC>7osncnKX_(t)qw7?Kp>P*ARk$Xu$6^6WJKYr%<>9w8H-CfrGYTg>&5G_4A`MwTi
zg`ko@Ad!DaXM)c6(D@9V2sdeKu+NcjqB;$ozDgfA=CGfH6_P&9ND;R_kM<?{zL(CI
z>Bz4BpVCK@E=9$K?wx-^-%rr_A{{yYWY6M4MxHq<Ez_q3cb{go=u~8bzs^U2ks=om
zk$?coA7ezM0Z}3*IK!|*bUuhi`1Uf63iD(dBziEHz!m2J#J;_7A8NIqz_h_nK+s(0
zA0daI4bJe)tNO|^Hu3t@KOsJh2`6`VAWD%N^s|?ws{~+5FY%x!E+1$gpOiyQ`Xps9
zU!iz;EKB`A68R5wq$h^jv9#BhLCwRn+B6&AT1seh=7Cb!r@#V6tUmk<H7VM!rb(3a
z?+kqxNKXRQK^p0&$Op(P{0w~s=@s9WknFr#E`)=Qr|y=Y-w0xVA7x!5i2WOQ5(7Bt
z1Lz6~gPdMUStewN1hs^;Cg3U0@?>DWNBi&$!7e^H;bYoH_Esj&XUZ>lIw`?ZK8(GU
zLEa2b+TctP&KBuYJXxMQ;t3?A+X497R?v(B4(szvS#!|DIU%F(mib4yLm8n&V6l`o
z3S|z?Sph=B8XcxAl$ii%zo$4Te)evJ*L-8LAC#A>d2JWKrc^qMk4Q*p6%2q8-7~ip
zz(zbxVQ7;Jc?h5?ZUa*%X`hboy$DTKQq6dck_z}>Zy3jIa<Epcq@(+6Ao0LWH!$JA
ztzSKmQ5co1$W#)wjN1!IK^*xQ3$PBjlyLhYw@A=`0{{f6VUFWu1Oz83qy=OjfJ}ln
zIszQ&IDlTjUfk=Lc5pjeGlSb{vR}X<9o(Ikbw?msAZ()147U%tHy|VhupMn}gOz2U
zI|gdUD-!}=e>ng`0t5hMlY}vVu>xmc*fI)<Kn4&K_f7)PW%(l~xC;uKg&<~7!X?%j
zK>V=W_l3;>;&&jY#5>zy5Q6-)=-(KEd$)9M-2BD6Ufi94xIOrxloTwg2SVQs6OegV
zYd7xW8iZJurw2yRo;@(hA^aO{-QjExe0MrKyd0$;eD?Y(d!?60z0t}(XD5Gf1zUq{
z2*0bfe;txBZ(HlYdJJHEv~o8}g*i>-pf^@IM5ULL2fbsJ!{XmF7IW?ZWWDqAwzJn8
z=Jy*mb2<CmDg02&K4-sk;HKqF>fUKhOX<CpBe?19Zs#DuCFnfL&?~Qay{%*P33NHM
z_SI<RyujnIvd99yz`hjM6$i!+0!+eR(kRZuxC7^L#1b$}5FSg1L10uKAprK+a+P`K
zZLR_8$sZ6?1K1a^cvcn7sHqNn%5Ql+7gK)qK1{&#T2%cAyt1&b4Q4LT#3H;xyRJ@T
zWLXz}j&q*Jk<vG2d}H3nu7j#QwZfnQSZ^1=OAA*U1yS-9)KwOG7gDVC?tQ-SQ6y-7
z<fG@Bdr?Z0SrWKa1O{@xS-qw{fq*sh@Zq)oc2bmv#BqJ`17W24IXF-c;i~e6y9%>J
z=KA`JpZT@FJMiMIlWGP}&^fYfbuW_>aJ-eeScc)v3yqi7hJ>y>?f^cAccLG7h@s(L
z#N{eDHIF0cVy08CsXi1kj}QL-!^ySeGv}UtJpXVW7s}o<x0cTAedZ&__Tt%(&s1S{
zzyrRu(pnEz$C`5pmvKCN6l$qYBCq-mIDQHjU<kpygQ9H%DV<=?AW~gp+Usy8@7V}V
z1Z}**c)4^`;6#Kw)bBAOM@QCtIY@2c5jVYH<Y;LVaR+|C2}gfncdM^RkP8iP<xp1`
z*IptM*jFN)C+`BmJ{9)rYm7<Y2r!I#H=q%K37!wfNn+e05?ClJNKFE8au0o29+6$2
z821y`<>WZ;2*Ft|IdrW4QWC&?_G%F_FaA7<KLA_Y0)D>0!PO^ngx>Xs$~9bKjgwqa
zH}ZV6Je=amd0Q?&F_(|v?8;FAFY14>`afgo)-0}x{S){COAy`FZOFo2_OlnF#mkvf
zeH=%>LFYH=e1#5?4elbAJ4+I{U<PAY6sc;Mv7*v=KTE<<amvte*qk><(Ayh%33Pn(
znPVCSdqN#fR;wNsF^Na*h>Yyd@puB=*<i9n58wsh0VG~ntao5R2aLD{z<~qFP+8o<
zfn!L;02u%nAUOlbKx#Q&i=)s;X#+d}QoL=$8ia=i65p7>QD{+;zy)l9e2o$}ee4;B
z32r6+A(bRZ$eL^WHZAl#;7?&;=PlS>EB$uR%ngF9^m7;mSp8x!b%iznYihR`&4f0=
zsMr-z9=>kAv>mIUg%fQ!Gq4_mABT7;GIOkT<8|{h<lLh1pqT|$M~c?6yyq1HhKpQd
zTfM*u3EVA*XSWZ^N!FHp!{i#)Os!?zTnj5WR(YH2l9-O9Au_`&;J+Xi=AT%9($LZ5
zV1kNu9eFclXbP~3_IODg;?<>O+oj+q$a<&}Z4Ehn5beQ`1gVB$#zCXh9;biaa7Sqj
z!lSxg57dcxsz3<}4FOj2bsMW+sx{7aD582Wq*_z4xlY{kiarQv<B5vit!WEr>Wyf^
zJ-N+ZXGm!34QT2WntHdU3GL~{ZEk&N(RL5*gPCs%m;!elLe!OWhJl0z&;z_*G%dZj
z(@O``p&z^67{!%6tz9r}*;b|^bpR#prr<~4H|lH$!bvzgZo(1)0>nJ9)qsaqR`xg)
z7v4cXl*VI34^E!zI}By+l#wzB74=YSud_$c$G*y4^Wf&ZNs>R|hC3M(FbE!O0WSy|
zNmTX&zYGy6fc8n^o!XZ-_x*bxF_i<G-xQ8p-wmuY0;A^1+s2N%iOSt*?}&5IImG)A
z1%oAkff%;a8x_nJ_+Wf|$eDJI$enyTANn=uDcpyMyAbb{IL^F7mBWky*4hSLQ?@x4
z)HLSYCuLytLD=>c%(*G&xb$A4HO)iw-M#A`3F<VP<LJq4&i&r_I%Xt#9e&(VNPoLu
z2b>3ak09RKQQUl*aZUtt|9v=JH-S42gJ%j9fy0kE4{@$~6PT~iWWs&;jRbBLJV~^M
zdqjJ??h!Q`2RrW(y)x|dLh$tH+Q%cb)kbd-jDkKa6avA5GlFefndC;re9Lf)>)h;O
zLqjc*mV6i-QGFJ?e$7+|)%TI<b5$wl_QUu6@SXRKCw$%lgnO~<i^ciIMfC$rMWdW2
z*378~CR4t#szoB!!b(Y&Pkm`eTwkgKjSjAT6EyT@g4O*C<|knDW6DJU4yXxy`%{Js
z7J=G_iy00<M-U6viL=FJUNECo`CNk3FCfQTMqcpMr0v_VuT&5v=$o}H{BVGuSgR|*
z4^?AzxUy)e^p<fDxB3Aly-CGN009Nish?+}Oi(v#`eg>-k}v#N1>oNeRyjxKUm;vM
z^!*Bb1g*YNSN|LjYa{1qoXfR)3gW!*-2#RYGipru3Fah7RKJKY-(0Ng{xhyYoW)37
zXe1pF-3`X=erZ+x5{sbNYc2EOefhmF?%SI`{Un;Ofie=cHXt{p6-1&~fO^&`D8(uX
zk~Jd!CRp!>nW!z~`5GVJr1Rh4;9xuu4uAuZ?@u#SWK~>XwUFrzlKCTajxp@>bjI+=
ztDA5b372ZU&LC<5wf-=H%?eJKsplE;Cv<MY;nhUEw8_t0E!Qy+1luKW9t(FD;R+*S
zT;527O@hRv@S5vt24WZr!sN;@f1JQAxF{yLR;?h2uc2NgL5U?9U^t}%D1YpX9=w8L
zKgcrv9oz6*bVQrENZ-Gw^V@WiOd>)yg1X7=TKW{BI9%w2n{9XpPl_I1hM<9&fUNj+
z9O+s0jX4SuXX_ZHxbo*Yf-_#lh95BvulM48QE3+wPcC@U*Xn2y6(SO{O@M(f6tGbs
z;4iMQC@kPeA-Y5?Y@z{z-z9*s3`j|Dc$QZ5bpmMt*^i$oJntt!ER2#d=lQd#YKSe}
zfCK*u&HYj0z`ubfm4VO(=#N+1z>qDtT)?z=5ezS3;k7pqC_%u3>s#<i+yc4-0;FLJ
zuWP|oGbZhRY2zEFLmJ{pln8rZxh{vXu=oW^%q4kg0Yz89jBne#!i6~U8`%Ujw7gh{
z7rOu@BE_x2xM^xScA3!Cq725`piRDUT@MjxUz{~l6qdmSKQO%!krix{L2C;7+pIZe
z@}isACwKil4DjCGLd-<;NtWIrW|}n5%W+<OpPwAyk0x*g6bgO@x46}v75uVE!Os>7
z{E?*~CRr#r_1Qu}9puOwWzT<szT@<Xs8&R&Kg+OHhW#Razf0%$=@6eQzMPI1Ca+G=
zdk-S0Pi~xmlZxRQh|6d_T27bWK<)o0bw}*u{Fiz#bt1DPbue=j{{GbQ)KjUCz;`BF
zQY>e3A1?Nj%fe)a{{e#34}u~Zi1T(4J;6-`Q<GnY*w~^!EB-0Wxngx57GLtM_DjY}
z9l!cGgKNV|_yI9h6HcT4m<0<v`BnP<Eeq)nkN#m3$)7Kh9i8m*kXfG!)aU-N(-h8t
zVy9#<<BC(xS^k(u6rtyTT)tEs6#Kh7V)?U0uv%!~N*D1IaCd;>F0`wRW$q?1VfZE6
sQ}rQI%k@QiYpd7crykOy;1RSw*5DiB6-oT31*Y1sU46Y#BuGvEe~!;zbN~PV

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-311.pyc
deleted file mode 100644
index f059bde3e71ad6231b8a26e02849bd6298052797..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 60952
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_inference.cpython-39.pyc
deleted file mode 100644
index a37330680c29bbfdba5a1bfd98041dda24957604..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 31419
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-310.pyc
deleted file mode 100644
index 57322b839ff7d50ea32d3b36ce011c09cf91e232..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15645
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-311.pyc
deleted file mode 100644
index 37d75830876e7d6e44eb45cc242d1f6636c8d2f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27157
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%0A5<{
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
Kk9o_6!v6ugi7!zA

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/bayes_model_comparison.cpython-39.pyc
deleted file mode 100644
index b58f792ac36504c702205afc34228600f9bbba77..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15716
zcmdU0d5k32S+Bd#>FGIkW_R`~AF<uZdc3=F?0B-Vy+_uu<vrrv9JJQdR`;u!souW!
zRrStHyE-JSoveih1tOswIP^pcU=$)GkPv^6M1mk85<vL_qLPrfM6&#qfP|10vi!bR
z)z#fIv#~>h5Z&t6Rj=NCe82DeeXs0^iL8Xr>bd`9pDs(%Khe$TCxx4*@$-He0h7uS
zlbKSN%Zm6{%PRiWy4KLkx*R<-$|><I-N=+Paa^{ME9c|uiAJG3iEEAN^<rbHJS9uc
zWNo@X<EXXS{vHv|IrCdGllMu?V5u#2OO~Z)B$j5GmnD|Dsg(CJ<&sp&cHfmf%^ll!
znAvKYmu%lW*;z4<KWZL(Z0YEuOGh6wj~_kuL^k`h-SJmje92t4xy!P*(G}@@Ne*?-
zw|(!nj9c6lPT3od_iS_7;ZC#abk)VhN4j$rio9XhUB+AMi;Z^O^Ec{Fm5Lbs=(u?r
zKd*wok;*d03S)%vIlxjZ{jyxvScYX^mdZLi$ntCgF$O!tCRq_zDK^EX@hr^_vl%vv
zm<-#)<`9!*^K38vbIfE5Y(JjlnTo#O6V8g}o@+6ue!A6Yqi0^LY5#&ENm&!0lV-JU
zd!FgH%(laqTfAY446fZYPd4rPhUa>V*=&^7_qki?_>L!TA5K2vw$|}{ciFWoZr$}a
z%q6qZYSoXJt+wx?!n#O9HGX*2@mC!_S|jewZQ1QX-R5OHWX`hPsr#lI)l9`)z05n#
z)kRS(TJCpv#bFk+eH&HVoZA~_YuWTx?Y3h+)U?nT-}AZMwp^ckN6e<xs(7Vcn)g8u
zZ9{!-6U!wj*rb9Nx3$H*dcM^hv|&(%&D&^z+w_wTpYJp(C=;zo8ezJ=!)+Rvon;<7
zdh}@AFRIjPwp`D#>dp<Pj)Ir#Eqhq>NmD#Eqo>gv(ny#zqGBvO$KP4S(Z!?3;wos^
zt)|s*Z11kkriUHwG@PdInblU)a~ak?GqGCC8?M*Es_%-<P#;lq((`R|${i1rNXv;P
z@bdZF-%};&yD!at<(YrzzWmf}EJ>+qAQ*h;nj%l*=iQ4SkORq*0tKNQs0funL#PHi
zLXAn6q}S#1B|R*RR~#0Sc@zsI%#BP|Slm9!VQyqlN=B%8PJNk^{Np(a@)S%^P(bjy
z#EbZQ<I|^?uF%@?u5jmC>)4eGP3H`EZ#Y-ZINmkC)xL76!+C23Qpme<w%%H6+y1JB
zVU6OhBv)3oipg%S_^VG?O=qpm-4?$xCS9UC%N<Cd_`X3~+^Qyfe6hU|rY$6Meakw6
zCVE1ItA-qXy9alZ42y#tRm@HDN#lw{mzat7<06pyG#kp6az*K>Jq@#=G5Ob(9%iB@
z^D_v=bEYtLQ$-r1mkNwPXW9uVNa0_{zYYOq*w;`|vSKdzHpe2P<?FAt9){puaZJ%O
zEWCmAiZ(s1AtcB1XP3-Kw8cq1v*WqVl}M05m{<K4$Eu?Y^ocX=%yq-H?<$6(HA~qq
z+T3n9*uO(rlnBCylS-o5U~bjNwxYk}36*hDM3G$N8;}*%dWTVisoN;p7MVv{3>oTK
zZ>g*mthlBq=c<_91g5UWf_Sj|s1@{i-?|O3a+Zeui{ef5$tRzrJl;@rn(sAV8tcX&
z>Ai_yyLZVXxqM{zWKGKxwRuQJV(#c&(w%X=DtFp;v$}zlBX<|jp1b668lAe0iT?2|
zXxCf5)owxNwIRXcw7WL8Hyn`{9LUt>j_FRawK{&g^XBsm$?4nJj`2jdDmABywQe_A
zH1V{5%{9keSw$?#)=^PPLp|I9yDe~0(7513RD$4xxhg5$qF5T{paG}Oc8ll6DnE7h
za!D2vZ+qJ3PHs>8+{uy>7NVv(R<v?O)>4{JLQ;g;;Z_JU$x1Fy2$?2UwN+Uz?}<{y
z-5*4UMl`l#scZJGscW_n#8EIsHP2%aLEc7<8j*~T;i0#HKr%I1yOY)xS^1G+7_ufC
zcd}YqPAlCby9&p<6nM6(QEBmK2LGfF3t{;^XpKHZp)cQ5ylEf0-c9)z<rTzyk-$v#
zwLtFcThdMF%g|%heG-JJRx|pkElHN>s+LB&3<PSHX&s4w2v@nD-po@>El;_G(4Bxd
z1`slRQ|%e91aT|(3tQ3|>BV2`rTs}}+>~Vr|EYd4NN=GPxSK+r^gh(x%LEFw0;$hJ
zSZ8~=ARA<$ZKH%66900LW$9}Q{}=QmM?JySOprmEoXD@r()BM7Vs45%2>XncMT;`l
zY>?^i*&?x@K0z%IExG<tlq2=>K`O4-M7<Nef<ITA4+^!t_}|Aen@W%mCQeA7lCR&7
z{x0Bd(8tL@{gljq2eE3e7!>>a0X5kz1-+W99SA0aNsJ9f6VEgIF|I6!ahVbtwd5ZR
ziow)P<qY+F8c=p9m?qny`53Mb2a~KI%9#xEG)jmwgFKt0I97y4PWe%5FqxE)3Z|FI
z(wMTJ83nV8P^_H@%&_hu?S-1{Hi2qQ-z7~zZ2WOS9qZ$?{~f!!ng|)OKg1qy?<{ti
zw;JZvWOH2=Dqr&m)JzkV#fX{|MVqw)lZIL}gvDol)2@3hGg{-2OOQczD0-q!&%P12
zmbvx{01zs)v$(Q&WDI1J8c56@Aysi1NDP~+VZ(A*M;5;tYkwv_|L>8MIzgXpQunT=
z52gJXnLkw2)w7r|vOkh>e>0>S%G@{AO4eL|)!eB>M4&ZXH9N)jo0hx{2cv}@3;vP5
zbWdJxnY@F=Bd{q#7+Ot7%#BvZY&x(&$l@XE)gINSV1$S)-XbTHonuRq887tq?(9%k
z8(wu6#2zG@H_@uemU*eSm<@9y`UjB#%-?7`<=lk|l>HlG6TL2nn!OI4g{m8Ts8&LS
zOZa(n2wX^#7YmSba!(=E`P0gE?NVes2+Vq24VA^Cp?b~P2vhNJY)7>03DN>-D4zTV
ziu`x{r0(OpLzPgM2Z+3QqTZ@vwLG~vEFqj2o4j)R8gne#xj$V$_yII(Tf@1DxNlSZ
zJqW-`WL;?JBnPWbs8OH7%=^}>j*yaJE^1d3YPJ_@b=UJl9R_p53)AOlEnKM7!XluZ
zkqtkXgiseIeP~3+?9fyLeM2NbSX^<MWOO^i283N4Y8YxS)L~*Z{m>xp17eEijO-?A
zlx2k}B(%YMgcHIj94J&_F;)eV^%5%0cBne*?J!kutyrhdy)R4)WBu6icO$i3kJXT9
zW<vwr2Wx@GwLzDJYS(Rt(?UBPuP2Hdo2YO~q>J`)WZjfzgs#PBX^8hwK(=0(IfurJ
zArp%~OjFrsKq{28LrD<oqVzB$mJw;#{19c<!De-wFpZvAXD}G$j7WDLvr<lr?3f2m
zW;uTVL3xTM$`ZAGI8tK6X_3Q<7qb}B?F)mHrEB;JLQLA9mD5^Qot3k4R>QTDS4k%`
zG)>OSX}N&=qFj)t<!PlrhOCm8v-mH{3voI!Z7I+69YZnX^c_RZ<C{jDA!l*dy-)N~
zwDR=Opp1meV6zB`F{aXy$xlDp)ZX*h<||OsNUiJ3LUkhwGE&6!no?71TF-!rpfeQ;
z+gV(}@<lvZz+f$EX{K!wZ=nZ@cahRvf^c{hLV-$y3I<i^RT)a1Udse36gn9~Bh^a>
zsawh|`Gj=+iVwx=ri_%Id6g6#{g$*(>gS*U8Cyy(<LCPme!f<Kf|jXG3bj&ZsZG$M
zy=+p)3sD_NTl}Q-N%@n?vMPwvbYPHLv?cd*lpA?+NHY~=lTvd*ZoJfGg-X8u^+4-S
z2U$|2u785c4K$Q8gI38<%v7|`7{nrfcAtc{Le+)Zl(UyW^CTelOuSDc?I@vc5<Y8S
z8;z+RCU#hrEI^@V!KO-zBcpmig(X?HA@*QfkHF9WfpT&e!jz!?e?x1aa_KWdhD8+M
zF03e}`>{Nxx07WgiZPjmH`7e)dfgI|kESXnaFfhb`{|g$A57&)*<&yda&JhO0<Y7}
zm~*&&2Omym-x$7O<q4c7LF5s1!8Vg#obAc9*<e55N89UHwxM-N;Rlg8RAHb3xn(yJ
zni>=qFOqS>1kIixsVD#&j*STZx=-vXgSNxd2xKQ^a3bPLv;0B)@rNiVQ6r2Cf`I@8
z5@ZVK3-7abtHrY7{S*<Q`4Is11g9Am9LRm}!7&RJ>fCOwIAIFpEx{-!<2lrz&euZ&
z91RR?{xC)9f^!dz8$k8ywa~EJZKuh?3^@0u2gb!I<wr0|u&E?b%M)WW50Du^7RZ7Q
zsA-`D=o{9m?T4~eHa0}d`6<dfpcb%XqA`CSv782;FCzF3e%{jvq<KvSrl?t1`1t)O
ztpinn5=DHodLDRkKq=zc>>c6*G)0pYc>$^NK%(LuP3yjGx3OH@K4Vp)NCzL{hKVjd
zjh_co9xEvTMAXPy*J~uwi4xU)r4NgCOP<6Us|jBgtaYVNglbv{)(ld|scLb$Aj1Fy
zzQGj00Ib*-`@O8lV+1LYNA?Xr6(~1h<>TopM7YvVgBwtp`ic_dmeCG~>^!Vm8CLxl
zm`2xuHY@cekP<bHru3Cs7Q!3+1ht#IZCh$EF$?h>z^6AT5wNr#$Z<>YAN7bh0z4@P
z8Hjn^&W?)tSR%l@jNLWD;ur{{fv3jgtu+s-_&5v<?T^cl?#nLsd`cKosRNsvyDKgT
zFc4jdmKgbQ62bE9vU!!*{lyBo@2q;ORlRW)UZ#k|G;Q-ZdpPnXt-1BOS#eA*xIma5
z)Y_z+Xd@t&S}P3ZuESd}O6(Q#eVOo_aMu~-Uf&wL2w}Gb8>h+OpE-kdewN7Rq+Sw?
zBZkPf-bLJ5w1ptqNs5f+d>#?8%f^h-nqs?+h}Jg~+i;UXTExv1BQ;jT#erikLEw?H
zN5uBZ4`2Vmx6f5BK2^#?f{@<n38@lE8{PGqb~DszOubOP%s+@d6{_%(K--6O@mZ+a
zj6oh@oLUV;k}6*>6(RysqvnPA(a|U;9w4kUP7aMQja3o}#fiv*h&^6pP#~)pPBkqb
z<nf3zEX)qO4~5?6&$9JUbt#}W=>mwhDZJ&vxClM~$>5PBmu8{!%5#uH#vM)F3oW+*
z=`;teR};U2y!S`b`hs#74R*ZLG3AxqXbB%l64ICYvQO%!O3EuFffgwIIMg>{9(CbQ
zhh*7OYX<hWwu$G+kqQuki-em8ad7;Q922|xL3AOR_48ur-7fq$*qN{$%!f{TorW;%
zmQ0~{n-|Hal`!2lcTDFxoQOg>6BdJ48Y&KNZKDi~l%JG*paw?kZDe7-*`gn_YEa|O
zbszOJwtGfOj+Xp$m;-_2LK`V%#46`FRv|^eewD61M1eq74NDFyow+yQca2tjr%^H@
zG(AhnhG?21G)1Q(yNn!@LuG_7;r9Ks-llOO6{i(Kx;!vXfrT}v+y&*fo32&Tm<FE#
z$_c~hJ1Coh-M~5l)<N-CH^G^%NI($vi*iq0k#2$Y?rC(U<7F~jG{L~?0sde7cF*wj
zzOf}m#t!gHr&ArT0ILLwoj`mBIH%Xre#Xx-GO%D$%u6?cbGPKcfUcIo4~#R6F`NNm
zS+Lf*%@oX$kD%l{%Lhh(f=v*+`+4a#7%kw6^?m`&Zghn+7IYP)`^B9#L}_YMbOK|O
zQl)Cs0m@-Bfq`)LHH}VUP=8V83~~3@-;EZ|GUFQY)CZW+RM<R_7$-HT<w0(qMqu`)
zioSp0RmtDepCdzTSz&uII_X<LZm~D>{(Nn3kOv#CuzhfJC!<2=JY1O_*fe?*!9;DL
zzh8I^=;{DFD0(tcJBYI*hnY$3LYhPDo{_u5aS!gjh4VA>5_)mp&R&3df0U)L&+oU@
z(S81**zX@>?RKhHU?52Vu~z_=yE?UgwpQ3E&9IvsxZ9?Dv+YiYJVy5L8#5P#w(VI%
z0^yO%-~iJOI6&WOUE5(_kOaPjpSKr*urG=|8S+<R*e_d3WLvzha0`#$Q15^Eev}4<
zyIr@d4x-7>;G{=x!xDZ0ab3)cVAZ<s*;Ps1$tmq>SkMMOAIh!ULY4?KLl5<8tKQ<F
z(Xjb7hldInxJ(@fW7b^euZDWvt~mAX45=mNKo@3aWn;+{J>f5*%yKFwgSz|9w-!m;
z7y(eT-2(Lnj<4c)K5R7=BxN~bCF5LHS6lRMtc1ExD+t4qt5jO+IMh&Gg^GZ#?=<E}
z2^Yqki3>5<dtuCBxFHtseMPw?kpdhWbQvTP!x|fO!i;-e0pZwW&N_c)@Hnz6XuyAU
zFyNtniWC)`4*}fWrm4lz6Wwk$Tc8%J4Z9uY)_u2nO$?J4<~BxdG9sCEZOsc+91iL3
zzv4UVer5TkorBrCO>R_-PFfVywpn*!ka~1U6MQc9$}`DUJSUtk*7-Bm8`@%<Etkwt
zf&P?k*w-8el{ri`#Qb_;;qu8-&%f{F2d&c=p1<(ICBf%~YP;@-X|GeE6@-a*nw^H=
zPeYAjBB&xwj2}TjGvwDD-lJ<{Lo_us)}#L{NK{LVg%=ui2Wy3aScOYz*~QdW>#z>R
zS(*q4e~yY!y(SvC3iA>J$*ZD<bt2irGz}wEG4Q2Stf+xp`YusFVN}&fwS%UhDrj`E
zPAKLz%wQDYf^YGSP(Mv8oqquJM7`HY6Ao2spklA{bM%0=V3=~+o?CA<`C+<~SE4=n
zOY~eAo=@V+!4mN<;zBBFP~(WmEJBIP%X^{F;Z8RGD{bt>RaRa=EDTXllSF&&#q~7Q
zKQdE`a7kzJloUY&CMsOiTKB=XxW~s%?~ocmyMo&9t)guJX_bL}6F{vAC69m$rl^2l
z9Z;<Gb(nJonQ^@o1L(l*370Zp&xqZgU<#oQrjZ*57vWq5+sFXDfU`s38M8G2Fw3#L
zfF8O7@Dgxd|9PaF6zQhnX3mLp#VFnNPvF^9{0t`P*t0L<*>wDj055|hkb`_*WdK^C
zQe=fnQ2^BEf`R}+1CHQ5;87!RR-gjl&?w;00QB#TuO<cWTI|7X4Bk>4Bn9xzA<fjT
zPmaPAo(3FipT}u50OtaLb3dRs8btyB>>xn%kbN(PJ5i3efo6=2@rjS<bR3-y5#HQW
z=Pu!Joh{Vp5d$_Ui;S8PRC;S_vZ!&u$G;WL)r>y^MQBSP6OK_Pt)RyjAq|A#IMSS-
z5L0gpE^7_z^D<vYIEJ7EO^GLMh@j91V^3Nl%oBaLq(<zV%tE=b8)|-iAjE$hYL1Q8
zZm4+{M_=+d$X8vp;A98*L;S3^)|TroPKSj$kjnA8srw#(*W*Vk@4QWY0GfXsfBa<x
zcyg@rg!B00knI`xahwQk(`&1)2e|cwi2x+A+a#(XvSI2XPvtmUez!d~LZp$uB^`rz
zsq%n=k5Z5f*bv_SZZI-sBf?;SZh9F<mk8y$^A~Y;$`STkggr4%mz0&yeU?72f9<>9
z`X+t8|I{1G;v@VsRLw04UPW*o+~sHK=5rLhM!^>-AX1Ur6p*Cn??n)%FnqM^00oX8
z3FXNIM}&a)_*W?P7Nt(pqm8=T2q#wtU=t+@^Ym!YgXr-H6!YJtGJXp|sTi45_fmP8
zWW{4{(0hxz&wr27{yqhNK#8=5?OiKREW34#NqqV^R4VWTqU~_vMiUvTm_jH~Vg{p*
z$o}@Be+uP&2}AFZktR)%WmbUasvys)MK!M!;P1-IxQc!$@Ro=HqluUTfdn7}Ao61Y
zVr)5w(ilYCgGz~x6%e6d$L$UgD-zRT!GVt)um=Pc0Z#PvQn1XxKL#n{1evj^VSlFK
zjDpjP?6*%TFTNcyI9W6jGl!TwtQR^-lqaRER|pFIv=F%kA&lVwBN2W5V~Ef068{<S
zmRVt8{hOcb=kcR+P&wl5g9&mmf!!#Ill4+>$}iL=gCbdmn+neTO!tdh5^_uhu=~J$
z&IGs$W(c&{#7(_7ixktrEK1nJU?sjR_2z=PU=R9ACzNJ_*<hX(VUfX=C9Fcc*?{=j
zU=}vvd>lW^_H0J+d#HUZza;~<rq~>t-_%6<C>}s0;`eQf&&BZzaeS^nM?kZsu!FE4
zCkA)(Qg5%Y6Gdy{x(@|=0ZoTrQ(^z9D{^liTDOng6YPVHoMQLR!`_>f_DbyjO;~o<
zD`F%SUSV&;tSt2Qi~j??gD7_)SO^X*E5ZKYAbWtRC}%%=kUg}S>K($o9AFO$7%lV<
z28YBI-cz`S8RzE#yQO)l2{x&B7`YCyx3jkg!#=!&y(2grwN{jQWHU`Ixqgv7+%vJB
z4r67QY*E0f8KeXca2(1-hCLEwX}#3$VMkHNF`;B&6|or+doMdai2amu{WB=(KK4%b
zD0`PENw3|{9wX>xj|=dA_iH+Pf-ObQ`fnpEnoR(_-(zoLLncs1FgJ2wD?V2Yju)>z
z;H3!RcXYvJn@c!Gu)1{hywxzT_%0kWCN8fg<qXb3t>GmIz-f|L@Xlm1L(h)i7f1}~
zpPV`V=?Sp`Gc3f$$T_h@Fh;7tU7Uq9T9Hz){iTTqAN-%|3H%QsqxeuyC~2@A>6C)L
z!X41T8jhwxnXiC`Z{nHWBt9O0Kvq~DaA0v~J^tSq^VSeQN-DCj(m#R=@SGBy_j9Bo
z=fIfOz|25l#;XUUBtyEWw0DRN1wREY)Q4lguMD1GZ))Ut#}fnGsfIOf1j-h@k)xg;
z^4=vqBDhtYA_>)o4dS@rHeu-Da7Y^pK`F&uv;~l|7N%G5P7;9-;G{zaW*sL+a$cw1
zZgH^E$Tqxz!7`5Q;f&|ll@@PWbjBynbQEes^iBXQk^(G|1-X0r?)F9GB8kqM43(i>
z%Eg(MYRe~kK2upEPvUBe-Dc>=ZQzP@eoS-01{>Gy0<dD>MZij9biq^8)qYG%Nr}b{
zX8J$Ukf?3HjT+<~J<UYqKL+YK>K}fRB;Up5Dwgu@{YpxCLw=b5G0NayrGVPIf*(GA
z{S?~raa_RWueVq2FvZ*kmf=Q8<KL%fZ3D9+G`&dY`xr$Ut;nA$^C3s_hWtoZJ$3e>
zH{=o&*RN5sjKfwUeUQI``)(HVjH8%!XW190Q*P5@MdD9V;?yeq9(C{`e@c<caD9b3
zR1n`eix!E7YS2{bu}hYYJB2A)MOLeMdlot4e*OJZp;3jy%Hg0hX7E0o+ogl+b-d-X
z(xi8Q!l@f@>$u>BlPFPh)XO^~ZTJRV<8U15Wt>>=ZUJYb?zdh#cC>f@L#NJ`_@5xM
zoV&<dmH54}SdIMir{ar0!YGHvn%EAZu`2%gpHZ&7SgO`p@p{KLJ+t({h?@BzQu9YB
zphY;Mb^Zq3{sjf!q~Kc=2=}&*RvtUbI}||+D9o?e9nXUTPWvaE5bN8sqP@U5rAU+8
zyo1waye~4)NLv-hUn8-Uve$1AZx*p5DPb{yIMOeY>A=5488R<`iGZiQ?!@zR61D@$
zGZ#K|IJYd3366KrMD#|I-xgjl{=3L5)ZlP(K-E|_BVu(#vAt)+SMZmV;jbtlWi~Vf
z@!<)zw47=RrQQ=NE}dz_nj+?-tmCAd<%V)Cx~d8Fm;Vht%86-+XW?HdCPOj?gdXPn
zpXokJUB`QeT?f`!ng0NBp;A6xPM<m(u{Ysl#0gnWJ$lIuhyJk8v3dp1XjC9g$gQ_3
zEagychx#%}!g8*PezqDy@82fz_|vH7Kd@ar((k2d;#3L>4wT7hT%~c$e_ENA^SBpZ
zC5u=vFS&F|!w~=@1HJ_Z#xxzT1K@=K;$;eV3`2xCjE3td)U$A&h?F>(hV(crfc$a+
zhX>LMUL?RBY6Nowu1A?876)Ir^nRF4X)3Aob2z$IfU=JRYg+dKF_vNuhTQVv4k=aA
zFQ4aR@9`7`f~=Kci=GvtA^Dg2-{Ns;f=)A%>5kKkS&L2~cItGUw=D9y#ZOW=@z|<b
z7AM~jpQnIGRB?`izd%=Hm~djZIN2&<d`HH-NO6JyBgr&}pEyi|uI_<8btjumzbo4i
zS7*{kvIo;or$4}j4BN*az$^iy;UwIM3_-FG2}E2(i0y|%m;$}{Z_|@$s7y2_b+@t@
zZzW!!GNwiz2wNJMAN}*sQ^w-R^EUB<IQvO|LL`Kf5fCH?I-`@Ic=s3Y@rG*0!$DQl
ywi;?Rkk<SJ6^MbwKF45+uIx4%VfsWg;7=0v3I1Qxu`Xy;L@N(R6BlU3Y5xs{O3h&a

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-310.pyc
deleted file mode 100644
index bc71688a4cae4f74ec3a67838fca659881c520c9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3806
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
I`#)>`7Zrzs-v9sr

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-311.pyc
deleted file mode 100644
index 4f1c5c8635a64bcf45f856426c8597e67374b985..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4661
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
BCMo~`

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/discrepancy.cpython-39.pyc
deleted file mode 100644
index f154800917aeaef9c499abf13d47fcca6ffc639b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3869
zcmb7H%WfRU744pv$RQOefMPgV1cg9=I0`w4ZDd2(MkLV|m_W2)ORzz7)U4^MnJKbg
zuBs+Ed;meDZC3dKd6_>5vdv%gHY@)^Hp#iwj~R(xBu%i;kE;7P_uNx8{PyjkhwIP(
z_^0^vj_3W09#*d|9)5>^^ALmZgdcl}f9U&k--$a(_ps}GPd(8Uz1N=Tz3LqHg#WcS
z>i>ZG-oeN(ho7D2d(x;`Y9e~KdbQSng}2f>^o4iW5&mIUtc$)Fy!K)3mRNi39ri^J
zR)^)ro-&b^IZvYn|NENf4H>SLmn@38F>IP?_Lwi=m#0jnQ>kSdNtQ@E&&1d*`bIJ#
zrz(}q&Lz{bnS+&D@>tmgvl*L6Cci6qO!sGVZrPb+5o{)zkTK(_VBA>~5^*UP7qe0)
zEZAa!%#Dh(lm(+PgS#k8jS^Bjhtn*Mvon=as0p{bLucmx{lLm|JDFZCuER@re_2O!
zea${$0jAC)9$!AY-U<-6<s<g%*3tI;`<0oqITC(51bF)D<>f(mnH3hMf)TRJwKOud
z#sx$u$mvu@c+RFSnnZF_XqjLRlUf5AO1Mg0r96rX&7;MbeU2|iC3&nOz_!hlbr=D=
z3Sr@_af9WI3!$t!mFy`mj4O{&rmiSEQ+CcSq|V?OQ{ilesVR^<<r<}oWEB^;TAjQ6
zzE-n@Bbz0DE$E17iPr(}s=r+QW}5|W9m>)mwx2o>P$I$~0JLeIN^KO1h#UdDnrLqE
zxJ|ia6C?GhduDm2QtP6l$}fwkSODnTx-A^^3Q$xmyQo&fA8!$HR)7kUoD}4&!o^{7
z%Hu*(c)?a{bA<~iE1~w|c)3+|>cq*0ax4dz8rEGkv|1q>fwwYY$w3z>b>RPWHH;lK
zpg#xYnm(AZET>$745-Ubxr+HDmUUepvM=0M_Gp)VLnJv#v$GTs3MHsJmkBdOSCONt
zF%UtAxj<DaWG*p)&MVY5H4v?j$F+|l{Xe{HI~O_EoJ2;e3khj3R3=BYI(PJR&BE)^
zCjnG3;V(aI>9T(vIxB6PB6!yl%Sa#~lyB1x&OvR4DoS;DJ_o&=2A!!mCIvetZpMpB
z2rG-!?FITtTMl}vG%qZxg9qPTOFLsUPo;GaY_mmHuv8*7$YHIXoaI`fITEgC5Cz1h
zI6K-Wi$|3jkJ&+HtIo9~p}?dKnIYCJMQj`jlFnku47!ZNToGFZMS)zBm{S}=@mU5B
zE-(~PD@jsSH*N#TO#;;QePpYKlExX>X)pKa0;Y|G?V_)b-8(|ly{9)2MyU84YDBTT
zn}a;hF`)tmh`TKZ>}<_6C2-{=152>k)=^FF$48^_K9r|Q9c^A%s>@7gMeh2dHCO8@
zn=IJTGun#AU%0vB6!bGk+f4FkUQ1YQg~|qAWNgk)WyKWA??(9ws)Nh%ogzM`638h>
zbX2vY2M>-aGmxq%w2NE<I*3*q<a2se*C)-CskZ~jf0mB1zS#jD9JMSkMV@Dxa5Nd4
za$PxC!D<&Qh@j6J0H%VQ@gBGQb85QQ?H_7sc&Am~DjD{uu^hLIV#KCJ9cydorl{1(
zxB@x8S;<n`zhf4w6B(;{mI)LeI|Z_>cTqyQsqiB}=IobVxz^-=5cO70MRec6{}cS1
z_b^=fS6=8{buju@U5p*!;V|SMjJoA|OWSh2Ekik60ygTEJtO0(9>9{mMFUPv-rqb;
z2fu&6d9oY4z$Rt_El;u!0#PKzc{T1NI2&o~c-0oQGnL%pFtD@#<jbAC7tdaN`_cHf
z!K6^J*ohK;A_Jc1aiF3+kQjE7X@J8Ok8#8RVa(|V^N?ogA`K>VFvCWsgwD>Zr?5Sv
z1(Zg89vJ6~axKI+WyA1e#A_%E&mZ9L;vO|?GqITz5pvB%NcQpXko*&FDkLrNJnp>m
zuRB+r<L;F&e9;lzzYwxLhjQNz-rT~sweM+WKU}v%T5-Jb$``$puD+Ogn7e6jFW<lN
z_q;#;;u<!NH{blEntj#%Ii9}veeb)MctZ!+KL4v<pIM0&PbDD?4jGQa6U3}hx>a?l
zsk$nFj;@vXwPdC5jRfx8WG*;KGk%P@0K7eE)a<0-zO1$~aHI9nD&|i6Dh-?1cftGW
z07R?lIw+C}<Qq-X%-L#*$&9q7IfBsSuO!%&-tg5ray!O{q1$VAaYoSG^{bh4h|E?S
z#x_es=fsTKrDT2;(I%XgWXpkuoMg!lD33Slly_Xj5W=wf$xv=2{5;Gf845YmZql7{
zz4fYzcCN+BjagmP@Uy*gb2aL6z5OXv_KoG%l$*2q5FDNeS*~e*77FND+5bJrZOd*f
z({lY;y|J3IN9tbo5$a5q1N0jXGozkfC+9z<;U0#=jb?!o=dR1EVFTaF;Y`}PVvq4`
z-pAnG9r#1P=MVm~)*E#1cJHFQ?)mR`F5X-1u;s#0S5s$cYORCOfI5`o3d3?3hWK$%
z#B{$IhV;9s{&Fh}MHYpj-lUbkq=EEjWuWkM7X!(Y>+?0g_t9|R-i`X@hKW?Z7(3kb
z&oJlk;afT~#xE6}&CpF0gN)4>TQaJJ3Z$m04_ROF=mK!4tbJUC{VC;TXxQ{OyZ;5X
C(w;v6

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-310.pyc
deleted file mode 100644
index 1d2122246d54ec5697803cbce28900e077b2306a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18924
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
W6YnAs1G%l!A8`@AH@FHoxc@Kt+VTSc

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-311.pyc
deleted file mode 100644
index 4e0ec7bf61abc72bc8218d603f606f1eca2cc9ab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35893
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
IcNqr$ACvc7^8f$<

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/__pycache__/mcmc.cpython-39.pyc
deleted file mode 100644
index b9fe4689524895c2149048d489b22b08e85026df..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18959
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/bayes_inference.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/bayes_inference.py
deleted file mode 100644
index 1898a8ae6..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/bayes_inference.py
+++ /dev/null
@@ -1,1532 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import numpy as np
-import os
-import copy
-import pandas as pd
-from tqdm import tqdm
-from scipy import stats
-import scipy.linalg as spla
-import joblib
-import seaborn as sns
-import corner
-import h5py
-import multiprocessing
-import gc
-from sklearn.metrics import mean_squared_error, r2_score
-from sklearn import preprocessing
-from matplotlib.patches import Patch
-import matplotlib.lines as mlines
-from matplotlib.backends.backend_pdf import PdfPages
-import matplotlib.pylab as plt
-
-from .mcmc import MCMC
-
-# Load the mplstyle
-plt.style.use(os.path.join(os.path.split(__file__)[0],
-                           '../', 'bayesvalidrox.mplstyle'))
-
-
-class BayesInference:
-    """
-    A class to perform Bayesian Analysis.
-
-
-    Attributes
-    ----------
-    MetaModel : obj
-        Meta model object.
-    discrepancy : obj
-        The discrepancy object for the sigma2s, i.e. the diagonal entries
-        of the variance matrix for a multivariate normal likelihood.
-    name : str, optional
-        The type of analysis, either calibration (`Calib`) or validation
-        (`Valid`). The default is `'Calib'`.
-    emulator : bool, optional
-        Analysis with emulator (MetaModel). The default is `True`.
-    bootstrap : bool, optional
-        Bootstrap the analysis. The default is `False`.
-    req_outputs : list, optional
-        The list of requested output to be used for the analysis.
-        The default is `None`. If None, all the defined outputs for the model
-        object is used.
-    selected_indices : dict, optional
-        A dictionary with the selected indices of each model output. The
-        default is `None`. If `None`, all measurement points are used in the
-        analysis.
-    samples : array of shape (n_samples, n_params), optional
-        The samples to be used in the analysis. The default is `None`. If
-        None the samples are drawn from the probablistic input parameter
-        object of the MetaModel object.
-    n_samples : int, optional
-        Number of samples to be used in the analysis. The default is `500000`.
-        If samples is not `None`, this argument will be assigned based on the
-        number of samples given.
-    measured_data : dict, optional
-        A dictionary containing the observation data. The default is `None`.
-        if `None`, the observation defined in the Model object of the
-        MetaModel is used.
-    inference_method : str, optional
-        A method for approximating the posterior distribution in the Bayesian
-        inference step. The default is `'rejection'`, which stands for
-        rejection sampling. A Markov Chain Monte Carlo sampler can be simply
-        selected by passing `'MCMC'`.
-    mcmc_params : dict, optional
-        A dictionary with args required for the Bayesian inference with
-        `MCMC`. The default is `None`.
-
-        Pass the mcmc_params like the following:
-
-            >>> mcmc_params:{
-                'init_samples': None,  # initial samples
-                'n_walkers': 100,  # number of walkers (chain)
-                'n_steps': 100000,  # number of maximum steps
-                'n_burn': 200,  # number of burn-in steps
-                'moves': None,  # Moves for the emcee sampler
-                'multiprocessing': False,  # multiprocessing
-                'verbose': False # verbosity
-                }
-        The items shown above are the default values. If any parmeter is
-        not defined, the default value will be assigned to it.
-    bayes_loocv : bool, optional
-        Bayesian Leave-one-out Cross Validation. The default is `False`. If
-        `True`, the LOOCV procedure is used to estimate the bayesian Model
-        Evidence (BME).
-    n_bootstrap_itrs : int, optional
-        Number of bootstrap iteration. The default is `1`. If bayes_loocv is
-        `True`, this is qualt to the total length of the observation data
-        set.
-    perturbed_data : array of shape (n_bootstrap_itrs, n_obs), optional
-        User defined perturbed data. The default is `[]`.
-    bootstrap_noise : float, optional
-        A noise level to perturb the data set. The default is `0.05`.
-    just_analysis : bool, optional
-        Justifiability analysis. The default is False.
-    valid_metrics : list, optional
-        List of the validation metrics. The following metrics are supported:
-
-        1. log_BME : logarithm of the Bayesian model evidence
-        2. KLD : Kullback-Leibler Divergence
-        3. inf_entropy: Information entropy
-        The default is `['log_BME']`.
-    plot_post_pred : bool, optional
-        Plot posterior predictive plots. The default is `True`.
-    plot_map_pred : bool, optional
-        Plot the model outputs vs the metamodel predictions for the maximum
-        a posteriori (defined as `max_a_posteriori`) parameter set. The
-        default is `False`.
-    max_a_posteriori : str, optional
-        Maximum a posteriori. `'mean'` and `'mode'` are available. The default
-        is `'mean'`.
-    corner_title_fmt : str, optional
-        Title format for the posterior distribution plot with python
-        package `corner`. The default is `'.2e'`.
-
-    """
-
-    def __init__(self, engine, MetaModel = None, discrepancy=None, emulator=True,
-                 name='Calib', bootstrap=False, req_outputs=None,
-                 selected_indices=None, samples=None, n_samples=100000,
-                 measured_data=None, inference_method='rejection',
-                 mcmc_params=None, bayes_loocv=False, n_bootstrap_itrs=1,
-                 perturbed_data=[], bootstrap_noise=0.05, just_analysis=False,
-                 valid_metrics=['BME'], plot_post_pred=True,
-                 plot_map_pred=False, max_a_posteriori='mean',
-                 corner_title_fmt='.2e'):
-
-        self.engine = engine
-        self.MetaModel = engine.MetaModel
-        self.Discrepancy = discrepancy
-        self.emulator = emulator
-        self.name = name
-        self.bootstrap = bootstrap
-        self.req_outputs = req_outputs
-        self.selected_indices = selected_indices
-        self.samples = samples
-        self.n_samples = n_samples
-        self.measured_data = measured_data
-        self.inference_method = inference_method
-        self.mcmc_params = mcmc_params
-        self.perturbed_data = perturbed_data
-        self.bayes_loocv = bayes_loocv
-        self.n_bootstrap_itrs = n_bootstrap_itrs
-        self.bootstrap_noise = bootstrap_noise
-        self.just_analysis = just_analysis
-        self.valid_metrics = valid_metrics
-        self.plot_post_pred = plot_post_pred
-        self.plot_map_pred = plot_map_pred
-        self.max_a_posteriori = max_a_posteriori
-        self.corner_title_fmt = corner_title_fmt
-
-    # -------------------------------------------------------------------------
-    def create_inference(self):
-        """
-        Starts the inference.
-
-        Returns
-        -------
-        BayesInference : obj
-            The Bayes inference object.
-
-        """
-
-        # Set some variables
-        MetaModel = self.MetaModel
-        Model = self.engine.Model
-        n_params = MetaModel.n_params
-        output_names = Model.Output.names
-        par_names = self.engine.ExpDesign.par_names
-
-        # If the prior is set by the user, take it.
-        if self.samples is None:
-            self.samples = self.engine.ExpDesign.generate_samples(
-                self.n_samples, 'random')
-        else:
-            try:
-                samples = self.samples.values
-            except AttributeError:
-                samples = self.samples
-
-            # Take care of an additional Sigma2s
-            self.samples = samples[:, :n_params]
-
-            # Update number of samples
-            self.n_samples = self.samples.shape[0]
-
-        # ---------- Preparation of observation data ----------
-        # Read observation data and perturb it if requested.
-        if self.measured_data is None:
-            self.measured_data = Model.read_observation(case=self.name)
-        # Convert measured_data to a data frame
-        if not isinstance(self.measured_data, pd.DataFrame):
-            self.measured_data = pd.DataFrame(self.measured_data)
-
-        # Extract the total number of measurement points
-        if self.name.lower() == 'calib':
-            self.n_tot_measurement = Model.n_obs
-        else:
-            self.n_tot_measurement = Model.n_obs_valid
-
-        # Find measurement error (if not given) for post predictive plot
-        if not hasattr(self, 'measurement_error'):
-            if isinstance(self.Discrepancy, dict):
-                Disc = self.Discrepancy['known']
-            else:
-                Disc = self.Discrepancy
-            if isinstance(Disc.parameters, dict):
-                self.measurement_error = {k: np.sqrt(Disc.parameters[k]) for k
-                                          in Disc.parameters.keys()}
-            else:
-                try:
-                    self.measurement_error = np.sqrt(Disc.parameters)
-                except TypeError:
-                    pass
-
-        # ---------- Preparation of variance for covariance matrix ----------
-        # Independent and identically distributed
-        total_sigma2 = dict()
-        opt_sigma_flag = isinstance(self.Discrepancy, dict)
-        opt_sigma = None
-        for key_idx, key in enumerate(output_names):
-
-            # Find opt_sigma
-            if opt_sigma_flag and opt_sigma is None:
-                # Option A: known error with unknown bias term
-                opt_sigma = 'A'
-                known_discrepancy = self.Discrepancy['known']
-                self.Discrepancy = self.Discrepancy['infer']
-                sigma2 = np.array(known_discrepancy.parameters[key])
-
-            elif opt_sigma == 'A' or self.Discrepancy.parameters is not None:
-                # Option B: The sigma2 is known (no bias term)
-                if opt_sigma == 'A':
-                    sigma2 = np.array(known_discrepancy.parameters[key])
-                else:
-                    opt_sigma = 'B'
-                    sigma2 = np.array(self.Discrepancy.parameters[key])
-
-            elif not isinstance(self.Discrepancy.InputDisc, str):
-                # Option C: The sigma2 is unknown (bias term including error)
-                opt_sigma = 'C'
-                self.Discrepancy.opt_sigma = opt_sigma
-                n_measurement = self.measured_data[key].values.shape
-                sigma2 = np.zeros((n_measurement[0]))
-
-            total_sigma2[key] = sigma2
-
-            self.Discrepancy.opt_sigma = opt_sigma
-            self.Discrepancy.total_sigma2 = total_sigma2
-
-        # If inferred sigma2s obtained from e.g. calibration are given
-        try:
-            self.sigma2s = self.Discrepancy.get_sample(self.n_samples)
-        except:
-            pass
-
-        # ---------------- Bootstrap & TOM --------------------
-        if self.bootstrap or self.bayes_loocv or self.just_analysis:
-            if len(self.perturbed_data) == 0:
-                # zero mean noise Adding some noise to the observation function
-                self.perturbed_data = self._perturb_data(
-                    self.measured_data, output_names
-                    )
-            else:
-                self.n_bootstrap_itrs = len(self.perturbed_data)
-
-            # -------- Model Discrepancy -----------
-            if hasattr(self, 'error_model') and self.error_model \
-               and self.name.lower() != 'calib':
-                # Select posterior mean as MAP
-                MAP_theta = self.samples.mean(axis=0).reshape((1, n_params))
-                # MAP_theta = stats.mode(self.samples,axis=0)[0]
-
-                # Evaluate the (meta-)model at the MAP
-                y_MAP, y_std_MAP = MetaModel.eval_metamodel(samples=MAP_theta)
-
-                # Train a GPR meta-model using MAP
-                self.error_MetaModel = MetaModel.create_model_error(
-                    self.bias_inputs, y_MAP, Name=self.name
-                    )
-
-            # -----------------------------------------------------
-            # ----- Loop over the perturbed observation data ------
-            # -----------------------------------------------------
-            # Initilize arrays
-            logLikelihoods = np.zeros((self.n_samples, self.n_bootstrap_itrs),
-                                      dtype=np.float16)
-            BME_Corr = np.zeros((self.n_bootstrap_itrs))
-            log_BME = np.zeros((self.n_bootstrap_itrs))
-            KLD = np.zeros((self.n_bootstrap_itrs))
-            inf_entropy = np.zeros((self.n_bootstrap_itrs))
-
-            # Compute the prior predtions
-            # Evaluate the MetaModel
-            if self.emulator:
-                y_hat, y_std = MetaModel.eval_metamodel(samples=self.samples)
-                self.__mean_pce_prior_pred = y_hat
-                self._std_pce_prior_pred = y_std
-
-                # Correct the predictions with Model discrepancy
-                if hasattr(self, 'error_model') and self.error_model:
-                    y_hat_corr, y_std = self.error_MetaModel.eval_model_error(
-                        self.bias_inputs, self.__mean_pce_prior_pred
-                        )
-                    self.__mean_pce_prior_pred = y_hat_corr
-                    self._std_pce_prior_pred = y_std
-
-                # Surrogate model's error using RMSE of test data
-                if hasattr(MetaModel, 'rmse'):
-                    surrError = MetaModel.rmse
-                else:
-                    surrError = None
-
-            else:
-                # Evaluate the original model
-                self.__model_prior_pred = self._eval_model(
-                    samples=self.samples, key='PriorPred'
-                    )
-                surrError = None
-
-            # Start the likelihood-BME computations for the perturbed data
-            for itr_idx, data in tqdm(
-                    enumerate(self.perturbed_data),
-                    total=self.n_bootstrap_itrs,
-                    desc="Bootstrapping the BME calculations", ascii=True
-                    ):
-
-                # ---------------- Likelihood calculation ----------------
-                if self.emulator:
-                    model_evals = self.__mean_pce_prior_pred
-                else:
-                    model_evals = self.__model_prior_pred
-
-                # Leave one out
-                if self.bayes_loocv or self.just_analysis:
-                    self.selected_indices = np.nonzero(data)[0]
-
-                # Prepare data dataframe
-                nobs = list(self.measured_data.count().values[1:])
-                numbers = list(np.cumsum(nobs))
-                indices = list(zip([0] + numbers, numbers))
-                data_dict = {
-                    output_names[i]: data[j:k] for i, (j, k) in
-                    enumerate(indices)
-                    }
-                #print(output_names)
-                #print(indices)
-                #print(numbers)
-                #print(nobs)
-                #print(self.measured_data)
-                #for i, (j, k) in enumerate(indices):
-                #    print(i,j,k)
-                #print(data)
-                #print(data_dict)
-                #stop
-
-                # Unknown sigma2
-                if opt_sigma == 'C' or hasattr(self, 'sigma2s'):
-                    logLikelihoods[:, itr_idx] = self.normpdf(
-                        model_evals, data_dict, total_sigma2,
-                        sigma2=self.sigma2s, std=surrError
-                        )
-                else:
-                    # known sigma2
-                    logLikelihoods[:, itr_idx] = self.normpdf(
-                        model_evals, data_dict, total_sigma2,
-                        std=surrError
-                        )
-
-                # ---------------- BME Calculations ----------------
-                # BME (log)
-                log_BME[itr_idx] = np.log(
-                    np.nanmean(np.exp(logLikelihoods[:, itr_idx],
-                                      dtype=np.longdouble))#float128))
-                    )
-
-                # BME correction when using Emulator
-                if self.emulator:
-                    BME_Corr[itr_idx] = self.__corr_factor_BME(
-                        data_dict, total_sigma2, log_BME[itr_idx]
-                        )
-
-                # Rejection Step
-                if 'kld' in list(map(str.lower, self.valid_metrics)) and\
-                   'inf_entropy' in list(map(str.lower, self.valid_metrics)):
-                    # Random numbers between 0 and 1
-                    unif = np.random.rand(1, self.n_samples)[0]
-
-                    # Reject the poorly performed prior
-                    Likelihoods = np.exp(logLikelihoods[:, itr_idx],
-                                         dtype=np.float64)
-                    accepted = (Likelihoods/np.max(Likelihoods)) >= unif
-                    posterior = self.samples[accepted]
-
-                    # Posterior-based expectation of likelihoods
-                    postExpLikelihoods = np.mean(
-                        logLikelihoods[:, itr_idx][accepted]
-                        )
-
-                    # Calculate Kullback-Leibler Divergence
-                    KLD[itr_idx] = postExpLikelihoods - log_BME[itr_idx]
-
-                # Posterior-based expectation of prior densities
-                if 'inf_entropy' in list(map(str.lower, self.valid_metrics)):
-                    n_thread = int(0.875 * multiprocessing.cpu_count())
-                    with multiprocessing.Pool(n_thread) as p:
-                        postExpPrior = np.mean(np.concatenate(
-                            p.map(
-                                self.engine.ExpDesign.JDist.pdf,
-                                np.array_split(posterior.T, n_thread, axis=1))
-                            )
-                            )
-                    # Information Entropy based on Entropy paper Eq. 38
-                    inf_entropy[itr_idx] = log_BME[itr_idx] - postExpPrior - \
-                        postExpLikelihoods
-
-                # Clear memory
-                gc.collect(generation=2)
-
-            # ---------- Store metrics for perturbed data set ----------------
-            # Likelihoods (Size: n_samples, n_bootstrap_itr)
-            self.log_likes = logLikelihoods
-
-            # BME (log), KLD, infEntropy (Size: 1,n_bootstrap_itr)
-            self.log_BME = log_BME
-
-            # BMECorrFactor (log) (Size: 1,n_bootstrap_itr)
-            if self.emulator:
-                self.log_BME_corr_factor = BME_Corr
-
-            if 'kld' in list(map(str.lower, self.valid_metrics)):
-                self.KLD = KLD
-            if 'inf_entropy' in list(map(str.lower, self.valid_metrics)):
-                self.inf_entropy = inf_entropy
-
-            # BME = BME + BMECorrFactor
-            if self.emulator:
-                self.log_BME += self.log_BME_corr_factor
-
-        # ---------------- Parameter Bayesian inference ----------------
-        if self.inference_method.lower() == 'mcmc':
-            # Instantiate the MCMC object
-            MCMC_Obj = MCMC(self)
-            self.posterior_df = MCMC_Obj.run_sampler(
-                self.measured_data, total_sigma2
-                )
-
-        elif self.name.lower() == 'valid':
-            # Convert to a dataframe if samples are provided after calibration.
-            self.posterior_df = pd.DataFrame(self.samples, columns=par_names)
-
-        else:
-            # Rejection sampling
-            self.posterior_df = self._rejection_sampling()
-
-        # Provide posterior's summary
-        print('\n')
-        print('-'*15 + 'Posterior summary' + '-'*15)
-        pd.options.display.max_columns = None
-        pd.options.display.max_rows = None
-        print(self.posterior_df.describe())
-        print('-'*50)
-
-        # -------- Model Discrepancy -----------
-        if hasattr(self, 'error_model') and self.error_model \
-           and self.name.lower() == 'calib':
-            if self.inference_method.lower() == 'mcmc':
-                self.error_MetaModel = MCMC_Obj.error_MetaModel
-            else:
-                # Select posterior mean as MAP
-                if opt_sigma == "B":
-                    posterior_df = self.posterior_df.values
-                else:
-                    posterior_df = self.posterior_df.values[:, :-Model.n_outputs]
-
-                # Select posterior mean as Maximum a posteriori
-                map_theta = posterior_df.mean(axis=0).reshape((1, n_params))
-                # map_theta = stats.mode(Posterior_df,axis=0)[0]
-
-                # Evaluate the (meta-)model at the MAP
-                y_MAP, y_std_MAP = MetaModel.eval_metamodel(samples=map_theta)
-
-                # Train a GPR meta-model using MAP
-                self.error_MetaModel = MetaModel.create_model_error(
-                    self.bias_inputs, y_MAP, Name=self.name
-                    )
-
-        # -------- Posterior perdictive -----------
-        self._posterior_predictive()
-
-        # -----------------------------------------------------
-        # ------------------ Visualization --------------------
-        # -----------------------------------------------------
-        # Create Output directory, if it doesn't exist already.
-        out_dir = f'Outputs_Bayes_{Model.name}_{self.name}'
-        os.makedirs(out_dir, exist_ok=True)
-
-        # -------- Posteior parameters --------
-        if opt_sigma != "B":
-            par_names.extend(
-                [self.Discrepancy.InputDisc.Marginals[i].name for i
-                 in range(len(self.Discrepancy.InputDisc.Marginals))]
-                )
-        # Pot with corner
-        figPosterior = corner.corner(self.posterior_df.to_numpy(),
-                                     labels=par_names,
-                                     quantiles=[0.15, 0.5, 0.85],
-                                     show_titles=True,
-                                     title_fmt=self.corner_title_fmt,
-                                     labelpad=0.2,
-                                     use_math_text=True,
-                                     title_kwargs={"fontsize": 28},
-                                     plot_datapoints=False,
-                                     plot_density=False,
-                                     fill_contours=True,
-                                     smooth=0.5,
-                                     smooth1d=0.5)
-
-        # Loop over axes and set x limits
-        if opt_sigma == "B":
-            axes = np.array(figPosterior.axes).reshape(
-                (len(par_names), len(par_names))
-                )
-            for yi in range(len(par_names)):
-                ax = axes[yi, yi]
-                ax.set_xlim(self.engine.ExpDesign.bound_tuples[yi])
-                for xi in range(yi):
-                    ax = axes[yi, xi]
-                    ax.set_xlim(self.engine.ExpDesign.bound_tuples[xi])
-        plt.close()
-
-        # Turn off gridlines
-        for ax in figPosterior.axes:
-            ax.grid(False)
-
-        if self.emulator:
-            plotname = f'/Posterior_Dist_{Model.name}_emulator'
-        else:
-            plotname = f'/Posterior_Dist_{Model.name}'
-
-        figPosterior.set_size_inches((24, 16))
-        figPosterior.savefig(f'./{out_dir}{plotname}.pdf',
-                             bbox_inches='tight')
-
-        # -------- Plot MAP --------
-        if self.plot_map_pred:
-            self._plot_max_a_posteriori()
-
-        # -------- Plot log_BME dist --------
-        if self.bootstrap:
-
-            # Computing the TOM performance
-            self.log_BME_tom = stats.chi2.rvs(
-                self.n_tot_measurement, size=self.log_BME.shape[0]
-                )
-
-            fig, ax = plt.subplots()
-            sns.kdeplot(self.log_BME_tom, ax=ax, color="green", shade=True)
-            sns.kdeplot(
-                self.log_BME, ax=ax, color="blue", shade=True,
-                label='Model BME')
-
-            ax.set_xlabel('log$_{10}$(BME)')
-            ax.set_ylabel('Probability density')
-
-            legend_elements = [
-                Patch(facecolor='green', edgecolor='green', label='TOM BME'),
-                Patch(facecolor='blue', edgecolor='blue', label='Model BME')
-                ]
-            ax.legend(handles=legend_elements)
-
-            if self.emulator:
-                plotname = f'/BME_hist_{Model.name}_emulator'
-            else:
-                plotname = f'/BME_hist_{Model.name}'
-
-            plt.savefig(f'./{out_dir}{plotname}.pdf', bbox_inches='tight')
-            plt.show()
-            plt.close()
-
-        # -------- Posteior perdictives --------
-        if self.plot_post_pred:
-            # Plot the posterior predictive
-            self._plot_post_predictive()
-
-        return self
-
-    # -------------------------------------------------------------------------
-    def _perturb_data(self, data, output_names):
-        """
-        Returns an array with n_bootstrap_itrs rowsof perturbed data.
-        The first row includes the original observation data.
-        If `self.bayes_loocv` is True, a 2d-array will be returned with
-        repeated rows and zero diagonal entries.
-
-        Parameters
-        ----------
-        data : pandas DataFrame
-            Observation data.
-        output_names : list
-            List of the output names.
-
-        Returns
-        -------
-        final_data : array
-            Perturbed data set.
-
-        """
-        noise_level = self.bootstrap_noise
-        obs_data = data[output_names].values
-        n_measurement, n_outs = obs_data.shape
-        self.n_tot_measurement = obs_data[~np.isnan(obs_data)].shape[0]
-        # Number of bootstrap iterations
-        if self.bayes_loocv:
-            self.n_bootstrap_itrs = self.n_tot_measurement
-
-        # Pass loocv dataset
-        if self.bayes_loocv:
-            obs = obs_data.T[~np.isnan(obs_data.T)]
-            final_data = np.repeat(np.atleast_2d(obs), self.n_bootstrap_itrs,
-                                   axis=0)
-            np.fill_diagonal(final_data, 0)
-            return final_data
-
-        else:
-            final_data = np.zeros(
-                (self.n_bootstrap_itrs, self.n_tot_measurement)
-                )
-            final_data[0] = obs_data.T[~np.isnan(obs_data.T)]
-            for itrIdx in range(1, self.n_bootstrap_itrs):
-                data = np.zeros((n_measurement, n_outs))
-                for idx in range(len(output_names)):
-                    std = np.nanstd(obs_data[:, idx])
-                    if std == 0:
-                        std = 0.001
-                    noise = std * noise_level
-                    data[:, idx] = np.add(
-                        obs_data[:, idx],
-                        np.random.normal(0, 1, obs_data.shape[0]) * noise,
-                    )
-
-                final_data[itrIdx] = data.T[~np.isnan(data.T)]
-
-            return final_data
-
-    # -------------------------------------------------------------------------
-    def _logpdf(self, x, mean, cov):
-        """
-        computes the likelihood based on a multivariate normal distribution.
-
-        Parameters
-        ----------
-        x : TYPE
-            DESCRIPTION.
-        mean : array_like
-            Observation data.
-        cov : 2d array
-            Covariance matrix of the distribution.
-
-        Returns
-        -------
-        log_lik : float
-            Log likelihood.
-
-        """
-        n = len(mean)
-        L = spla.cholesky(cov, lower=True)
-        beta = np.sum(np.log(np.diag(L)))
-        dev = x - mean
-        alpha = dev.dot(spla.cho_solve((L, True), dev))
-        log_lik = -0.5 * alpha - beta - n / 2. * np.log(2 * np.pi)
-        return log_lik
-
-    # -------------------------------------------------------------------------
-    def _eval_model(self, samples=None, key='MAP'):
-        """
-        Evaluates Forward Model.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params), optional
-            Parameter sets. The default is None.
-        key : str, optional
-            Key string to be passed to the run_model_parallel method.
-            The default is 'MAP'.
-
-        Returns
-        -------
-        model_outputs : dict
-            Model outputs.
-
-        """
-        MetaModel = self.MetaModel
-        Model = self.engine.Model
-
-        if samples is None:
-            self.samples = self.engine.ExpDesign.generate_samples(
-                self.n_samples, 'random')
-        else:
-            self.samples = samples
-            self.n_samples = len(samples)
-
-        model_outputs, _ = Model.run_model_parallel(
-            self.samples, key_str=key+self.name)
-
-        # Clean up
-        # Zip the subdirectories
-        try:
-            dir_name = f'{Model.name}MAP{self.name}'
-            key = dir_name + '_'
-            Model.zip_subdirs(dir_name, key)
-        except:
-            pass
-
-        return model_outputs
-
-    # -------------------------------------------------------------------------
-    def _kernel_rbf(self, X, hyperparameters):
-        """
-        Isotropic squared exponential kernel.
-
-        Higher l values lead to smoother functions and therefore to coarser
-        approximations of the training data. Lower l values make functions
-        more wiggly with wide uncertainty regions between training data points.
-
-        sigma_f controls the marginal variance of b(x)
-
-        Parameters
-        ----------
-        X : ndarray of shape (n_samples_X, n_features)
-
-        hyperparameters : Dict
-            Lambda characteristic length
-            sigma_f controls the marginal variance of b(x)
-            sigma_0 unresolvable error nugget term, interpreted as random
-                    error that cannot be attributed to measurement error.
-        Returns
-        -------
-        var_cov_matrix : ndarray of shape (n_samples_X,n_samples_X)
-            Kernel k(X, X).
-
-        """
-        from sklearn.gaussian_process.kernels import RBF
-        min_max_scaler = preprocessing.MinMaxScaler()
-        X_minmax = min_max_scaler.fit_transform(X)
-
-        nparams = len(hyperparameters)
-        # characteristic length (0,1]
-        Lambda = hyperparameters[0]
-        # sigma_f controls the marginal variance of b(x)
-        sigma2_f = hyperparameters[1]
-
-        # cov_matrix = sigma2_f*rbf_kernel(X_minmax, gamma = 1/Lambda**2)
-
-        rbf = RBF(length_scale=Lambda)
-        cov_matrix = sigma2_f * rbf(X_minmax)
-        if nparams > 2:
-            # (unresolvable error) nugget term that is interpreted as random
-            # error that cannot be attributed to measurement error.
-            sigma2_0 = hyperparameters[2:]
-            for i, j in np.ndindex(cov_matrix.shape):
-                cov_matrix[i, j] += np.sum(sigma2_0) if i == j else 0
-
-        return cov_matrix
-
-    # -------------------------------------------------------------------------
-    def normpdf(self, outputs, obs_data, total_sigma2s, sigma2=None, std=None):
-        """
-        Calculates the likelihood of simulation outputs compared with
-        observation data.
-
-        Parameters
-        ----------
-        outputs : dict
-            A dictionary containing the simulation outputs as array of shape
-            (n_samples, n_measurement) for each model output.
-        obs_data : dict
-            A dictionary/dataframe containing the observation data.
-        total_sigma2s : dict
-            A dictionary with known values of the covariance diagonal entries,
-            a.k.a sigma^2.
-        sigma2 : array, optional
-            An array of the sigma^2 samples, when the covariance diagonal
-            entries are unknown and are being jointly inferred. The default is
-            None.
-        std : dict, optional
-            A dictionary containing the root mean squared error as array of
-            shape (n_samples, n_measurement) for each model output. The default
-            is None.
-
-        Returns
-        -------
-        logLik : array of shape (n_samples)
-            Likelihoods.
-
-        """
-        Model = self.engine.Model
-        logLik = 0.0
-
-        # Extract the requested model outputs for likelihood calulation
-        if self.req_outputs is None:
-            req_outputs = Model.Output.names
-        else:
-            req_outputs = list(self.req_outputs)
-
-        # Loop over the outputs
-        for idx, out in enumerate(req_outputs):
-
-            # (Meta)Model Output
-            nsamples, nout = outputs[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout]
-
-            # Add the std of the PCE is chosen as emulator.
-            if self.emulator:
-                if std is not None:
-                    tot_sigma2s += std[out]**2
-
-            # Covariance Matrix
-            covMatrix = np.diag(tot_sigma2s)
-
-            # Select the data points to compare
-            try:
-                indices = self.selected_indices[out]
-            except:
-                indices = list(range(nout))
-            covMatrix = np.diag(covMatrix[indices, indices])
-
-            # If sigma2 is not given, use given total_sigma2s
-            if sigma2 is None:
-                logLik += stats.multivariate_normal.logpdf(
-                    outputs[out][:, indices], data[indices], covMatrix)
-                continue
-
-            # Loop over each run/sample and calculate logLikelihood
-            logliks = np.zeros(nsamples)
-            for s_idx in range(nsamples):
-
-                # Simulation run
-                tot_outputs = outputs[out]
-
-                # Covariance Matrix
-                covMatrix = np.diag(tot_sigma2s)
-
-                if sigma2 is not None:
-                    # Check the type error term
-                    if hasattr(self, 'bias_inputs') and \
-                       not hasattr(self, 'error_model'):
-                        # Infer a Bias model usig Gaussian Process Regression
-                        bias_inputs = np.hstack(
-                            (self.bias_inputs[out],
-                             tot_outputs[s_idx].reshape(-1, 1)))
-
-                        params = sigma2[s_idx, idx*3:(idx+1)*3]
-                        covMatrix = self._kernel_rbf(bias_inputs, params)
-                    else:
-                        # Infer equal sigma2s
-                        try:
-                            sigma_2 = sigma2[s_idx, idx]
-                        except TypeError:
-                            sigma_2 = 0.0
-
-                        covMatrix += sigma_2 * np.eye(nout)
-                        # covMatrix = np.diag(sigma2 * total_sigma2s)
-
-                # Select the data points to compare
-                try:
-                    indices = self.selected_indices[out]
-                except:
-                    indices = list(range(nout))
-                covMatrix = np.diag(covMatrix[indices, indices])
-
-                # Compute loglikelihood
-                logliks[s_idx] = self._logpdf(
-                    tot_outputs[s_idx, indices], data[indices], covMatrix
-                    )
-
-            logLik += logliks
-        return logLik
-
-    # -------------------------------------------------------------------------
-    def _corr_factor_BME_old(self, Data, total_sigma2s, posterior):
-        """
-        Calculates the correction factor for BMEs.
-        """
-        MetaModel = self.MetaModel
-        OrigModelOutput = self.engine.ExpDesign.Y
-        Model = self.engine.Model
-
-        # Posterior with guassian-likelihood
-        postDist = stats.gaussian_kde(posterior.T)
-
-        # Remove NaN
-        Data = Data[~np.isnan(Data)]
-        total_sigma2s = total_sigma2s[~np.isnan(total_sigma2s)]
-
-        # Covariance Matrix
-        covMatrix = np.diag(total_sigma2s[:self.n_tot_measurement])
-
-        # Extract the requested model outputs for likelihood calulation
-        if self.req_outputs is None:
-            OutputType = Model.Output.names
-        else:
-            OutputType = list(self.req_outputs)
-
-        # SampleSize = OrigModelOutput[OutputType[0]].shape[0]
-
-
-        # Flatten the OutputType for OrigModel
-        TotalOutputs = np.concatenate([OrigModelOutput[x] for x in OutputType], 1)
-
-        NrofBayesSamples = self.n_samples
-        # Evaluate MetaModel on the experimental design
-        Samples = self.engine.ExpDesign.X
-        OutputRS, stdOutputRS = MetaModel.eval_metamodel(samples=Samples)
-
-        # Reset the NrofSamples to NrofBayesSamples
-        self.n_samples = NrofBayesSamples
-
-        # Flatten the OutputType for MetaModel
-        TotalPCEOutputs = np.concatenate([OutputRS[x] for x in OutputRS], 1)
-        TotalPCEstdOutputRS= np.concatenate([stdOutputRS[x] for x in stdOutputRS], 1)
-
-        logweight = 0
-        for i, sample in enumerate(Samples):
-            # Compute likelilhood output vs RS
-            covMatrix = np.diag(TotalPCEstdOutputRS[i]**2)
-            logLik = self._logpdf(TotalOutputs[i], TotalPCEOutputs[i], covMatrix)
-            # Compute posterior likelihood of the collocation points
-            logpostLik = np.log(postDist.pdf(sample[:, None]))[0]
-            if logpostLik != -np.inf:
-                logweight += logLik + logpostLik
-        return logweight
-
-    # -------------------------------------------------------------------------
-    def __corr_factor_BME(self, obs_data, total_sigma2s, logBME):
-        """
-        Calculates the correction factor for BMEs.
-        """
-        MetaModel = self.MetaModel
-        samples = self.engine.ExpDesign.X
-        model_outputs = self.engine.ExpDesign.Y
-        Model = self.engine.Model
-        n_samples = samples.shape[0]
-
-        # Extract the requested model outputs for likelihood calulation
-        output_names = Model.Output.names
-
-        # Evaluate MetaModel on the experimental design and ValidSet
-        OutputRS, stdOutputRS = MetaModel.eval_metamodel(samples=samples)
-
-        logLik_data = np.zeros((n_samples))
-        logLik_model = np.zeros((n_samples))
-        # Loop over the outputs
-        for idx, out in enumerate(output_names):
-
-            # (Meta)Model Output
-            nsamples, nout = model_outputs[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout]
-
-            # Covariance Matrix
-            covMatrix_data = np.diag(tot_sigma2s)
-
-            for i, sample in enumerate(samples):
-
-                # Simulation run
-                y_m = model_outputs[out][i]
-
-                # Surrogate prediction
-                y_m_hat = OutputRS[out][i]
-
-                # CovMatrix with the surrogate error
-                covMatrix = np.eye(len(y_m)) * 1/(2*np.pi)
-
-                # Select the data points to compare
-                try:
-                    indices = self.selected_indices[out]
-                except:
-                    indices = list(range(nout))
-                covMatrix = np.diag(covMatrix[indices, indices])
-                covMatrix_data = np.diag(covMatrix_data[indices, indices])
-
-                # Compute likelilhood output vs data
-                logLik_data[i] += self._logpdf(
-                    y_m_hat[indices], data[indices],
-                    covMatrix_data
-                    )
-
-                # Compute likelilhood output vs surrogate
-                logLik_model[i] += self._logpdf(
-                    y_m_hat[indices], y_m[indices],
-                    covMatrix
-                    )
-
-        # Weight
-        logLik_data -= logBME
-        weights = np.mean(np.exp(logLik_model+logLik_data))
-
-        return np.log(weights)
-
-    # -------------------------------------------------------------------------
-    def _rejection_sampling(self):
-        """
-        Performs rejection sampling to update the prior distribution on the
-        input parameters.
-
-        Returns
-        -------
-        posterior : pandas.dataframe
-            Posterior samples of the input parameters.
-
-        """
-
-        MetaModel = self.MetaModel
-        try:
-            sigma2_prior = self.Discrepancy.sigma2_prior
-        except:
-            sigma2_prior = None
-
-        # Check if the discrepancy is defined as a distribution:
-        samples = self.samples
-
-        if sigma2_prior is not None:
-            samples = np.hstack((samples, sigma2_prior))
-
-        # Take the first column of Likelihoods (Observation data without noise)
-        if self.just_analysis or self.bayes_loocv:
-            index = self.n_tot_measurement-1
-            likelihoods = np.exp(self.log_likes[:, index], dtype=np.longdouble)#np.float128)
-        else:
-            likelihoods = np.exp(self.log_likes[:, 0], dtype=np.longdouble)#np.float128)
-
-        n_samples = len(likelihoods)
-        norm_ikelihoods = likelihoods / np.max(likelihoods)
-
-        # Normalize based on min if all Likelihoods are zero
-        if all(likelihoods == 0.0):
-            likelihoods = self.log_likes[:, 0]
-            norm_ikelihoods = likelihoods / np.min(likelihoods)
-
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, n_samples)[0]
-
-        # Reject the poorly performed prior
-        accepted_samples = samples[norm_ikelihoods >= unif]
-
-        # Output the Posterior
-        par_names = self.engine.ExpDesign.par_names
-        if sigma2_prior is not None:
-            for name in self.Discrepancy.name:
-                par_names.append(name)
-
-        return pd.DataFrame(accepted_samples, columns=sigma2_prior)
-
-    # -------------------------------------------------------------------------
-    def _posterior_predictive(self):
-        """
-        Stores the prior- and posterior predictive samples, i.e. model
-        evaluations using the samples, into hdf5 files.
-
-        priorPredictive.hdf5 : Prior predictive samples.
-        postPredictive_wo_noise.hdf5 : Posterior predictive samples without
-        the additive noise.
-        postPredictive.hdf5 : Posterior predictive samples with the additive
-        noise.
-
-        Returns
-        -------
-        None.
-
-        """
-
-        MetaModel = self.MetaModel
-        Model = self.engine.Model
-
-        # Make a directory to save the prior/posterior predictive
-        out_dir = f'Outputs_Bayes_{Model.name}_{self.name}'
-        os.makedirs(out_dir, exist_ok=True)
-
-        # Read observation data and perturb it if requested
-        if self.measured_data is None:
-            self.measured_data = Model.read_observation(case=self.name)
-
-        if not isinstance(self.measured_data, pd.DataFrame):
-            self.measured_data = pd.DataFrame(self.measured_data)
-
-        # X_values
-        x_values = self.engine.ExpDesign.x_values
-
-        try:
-            sigma2_prior = self.Discrepancy.sigma2_prior
-        except:
-            sigma2_prior = None
-
-        # Extract posterior samples
-        posterior_df = self.posterior_df
-
-        # Take care of the sigma2
-        if sigma2_prior is not None:
-            try:
-                sigma2s = posterior_df[self.Discrepancy.name].values
-                posterior_df = posterior_df.drop(
-                    labels=self.Discrepancy.name, axis=1
-                    )
-            except:
-                sigma2s = self.sigma2s
-
-        # Posterior predictive
-        if self.emulator:
-            if self.inference_method == 'rejection':
-                prior_pred = self.__mean_pce_prior_pred
-            if self.name.lower() != 'calib':
-                post_pred = self.__mean_pce_prior_pred
-                post_pred_std = self._std_pce_prior_pred
-            else:
-                post_pred, post_pred_std = MetaModel.eval_metamodel(
-                    samples=posterior_df.values
-                    )
-
-        else:
-            if self.inference_method == 'rejection':
-                prior_pred = self.__model_prior_pred
-            if self.name.lower() != 'calib':
-                post_pred = self.__mean_pce_prior_pred,
-                post_pred_std = self._std_pce_prior_pred
-            else:
-                post_pred = self._eval_model(
-                    samples=posterior_df.values, key='PostPred'
-                    )
-        # Correct the predictions with Model discrepancy
-        if hasattr(self, 'error_model') and self.error_model:
-            y_hat, y_std = self.error_MetaModel.eval_model_error(
-                self.bias_inputs, post_pred
-                )
-            post_pred, post_pred_std = y_hat, y_std
-
-        # Add discrepancy from likelihood Sample to the current posterior runs
-        total_sigma2 = self.Discrepancy.total_sigma2
-        post_pred_withnoise = copy.deepcopy(post_pred)
-        for varIdx, var in enumerate(Model.Output.names):
-            for i in range(len(post_pred[var])):
-                pred = post_pred[var][i]
-
-                # Known sigma2s
-                clean_sigma2 = total_sigma2[var][~np.isnan(total_sigma2[var])]
-                tot_sigma2 = clean_sigma2[:len(pred)]
-                cov = np.diag(tot_sigma2)
-
-                # Check the type error term
-                if sigma2_prior is not None:
-                    # Inferred sigma2s
-                    if hasattr(self, 'bias_inputs') and \
-                       not hasattr(self, 'error_model'):
-                        # TODO: Infer a Bias model usig GPR
-                        bias_inputs = np.hstack((
-                            self.bias_inputs[var], pred.reshape(-1, 1)))
-                        params = sigma2s[i, varIdx*3:(varIdx+1)*3]
-                        cov = self._kernel_rbf(bias_inputs, params)
-                    else:
-                        # Infer equal sigma2s
-                        try:
-                            sigma2 = sigma2s[i, varIdx]
-                        except TypeError:
-                            sigma2 = 0.0
-
-                        # Convert biasSigma2s to a covMatrix
-                        cov += sigma2 * np.eye(len(pred))
-
-                if self.emulator:
-                    if hasattr(MetaModel, 'rmse') and \
-                       MetaModel.rmse is not None:
-                        stdPCE = MetaModel.rmse[var]
-                    else:
-                        stdPCE = post_pred_std[var][i]
-                    # Expected value of variance (Assump: i.i.d stds)
-                    cov += np.diag(stdPCE**2)
-
-                # Sample a multivariate normal distribution with mean of
-                # prediction and variance of cov
-                post_pred_withnoise[var][i] = np.random.multivariate_normal(
-                    pred, cov, 1
-                    )
-
-        # ----- Prior Predictive -----
-        if self.inference_method.lower() == 'rejection':
-            # Create hdf5 metadata
-            hdf5file = f'{out_dir}/priorPredictive.hdf5'
-            hdf5_exist = os.path.exists(hdf5file)
-            if hdf5_exist:
-                os.remove(hdf5file)
-            file = h5py.File(hdf5file, 'a')
-
-            # Store x_values
-            if type(x_values) is dict:
-                grp_x_values = file.create_group("x_values/")
-                for varIdx, var in enumerate(Model.Output.names):
-                    grp_x_values.create_dataset(var, data=x_values[var])
-            else:
-                file.create_dataset("x_values", data=x_values)
-
-            # Store posterior predictive
-            grpY = file.create_group("EDY/")
-            for varIdx, var in enumerate(Model.Output.names):
-                grpY.create_dataset(var, data=prior_pred[var])
-
-        # ----- Posterior Predictive only model evaluations -----
-        # Create hdf5 metadata
-        hdf5file = out_dir+'/postPredictive_wo_noise.hdf5'
-        hdf5_exist = os.path.exists(hdf5file)
-        if hdf5_exist:
-            os.remove(hdf5file)
-        file = h5py.File(hdf5file, 'a')
-
-        # Store x_values
-        if type(x_values) is dict:
-            grp_x_values = file.create_group("x_values/")
-            for varIdx, var in enumerate(Model.Output.names):
-                grp_x_values.create_dataset(var, data=x_values[var])
-        else:
-            file.create_dataset("x_values", data=x_values)
-
-        # Store posterior predictive
-        grpY = file.create_group("EDY/")
-        for varIdx, var in enumerate(Model.Output.names):
-            grpY.create_dataset(var, data=post_pred[var])
-
-        # ----- Posterior Predictive with noise -----
-        # Create hdf5 metadata
-        hdf5file = out_dir+'/postPredictive.hdf5'
-        hdf5_exist = os.path.exists(hdf5file)
-        if hdf5_exist:
-            os.remove(hdf5file)
-        file = h5py.File(hdf5file, 'a')
-
-        # Store x_values
-        if type(x_values) is dict:
-            grp_x_values = file.create_group("x_values/")
-            for varIdx, var in enumerate(Model.Output.names):
-                grp_x_values.create_dataset(var, data=x_values[var])
-        else:
-            file.create_dataset("x_values", data=x_values)
-
-        # Store posterior predictive
-        grpY = file.create_group("EDY/")
-        for varIdx, var in enumerate(Model.Output.names):
-            grpY.create_dataset(var, data=post_pred_withnoise[var])
-
-        return
-
-    # -------------------------------------------------------------------------
-    def _plot_max_a_posteriori(self):
-        """
-        Plots the response of the model output against that of the metamodel at
-        the maximum a posteriori sample (mean or mode of posterior.)
-
-        Returns
-        -------
-        None.
-
-        """
-
-        MetaModel = self.MetaModel
-        Model = self.engine.Model
-        out_dir = f'Outputs_Bayes_{Model.name}_{self.name}'
-        opt_sigma = self.Discrepancy.opt_sigma
-
-        # -------- Find MAP and run MetaModel and origModel --------
-        # Compute the MAP
-        if self.max_a_posteriori.lower() == 'mean':
-            if opt_sigma == "B":
-                Posterior_df = self.posterior_df.values
-            else:
-                Posterior_df = self.posterior_df.values[:, :-Model.n_outputs]
-            map_theta = Posterior_df.mean(axis=0).reshape(
-                (1, MetaModel.n_params))
-        else:
-            map_theta = stats.mode(Posterior_df.values, axis=0)[0]
-        # Prin report
-        print("\nPoint estimator:\n", map_theta[0])
-
-        # Run the models for MAP
-        # MetaModel
-        map_metamodel_mean, map_metamodel_std = MetaModel.eval_metamodel(
-            samples=map_theta)
-        self.map_metamodel_mean = map_metamodel_mean
-        self.map_metamodel_std = map_metamodel_std
-
-        # origModel
-        map_orig_model = self._eval_model(samples=map_theta)
-        self.map_orig_model = map_orig_model
-
-        # Extract slicing index
-        x_values = map_orig_model['x_values']
-
-        # List of markers and colors
-        Color = ['k', 'b', 'g', 'r']
-        Marker = 'x'
-
-        # Create a PdfPages object
-        pdf = PdfPages(f'./{out_dir}MAP_PCE_vs_Model_{self.name}.pdf')
-        fig = plt.figure()
-        for i, key in enumerate(Model.Output.names):
-
-            y_val = map_orig_model[key]
-            y_pce_val = map_metamodel_mean[key]
-            y_pce_val_std = map_metamodel_std[key]
-
-            plt.plot(x_values, y_val, color=Color[i], marker=Marker,
-                     lw=2.0, label='$Y_{MAP}^{M}$')
-
-            plt.plot(
-                x_values, y_pce_val[i], color=Color[i], lw=2.0,
-                marker=Marker, linestyle='--', label='$Y_{MAP}^{PCE}$'
-                )
-            # plot the confidence interval
-            plt.fill_between(
-                x_values, y_pce_val[i] - 1.96*y_pce_val_std[i],
-                y_pce_val[i] + 1.96*y_pce_val_std[i],
-                color=Color[i], alpha=0.15
-                )
-
-            # Calculate the adjusted R_squared and RMSE
-            R2 = r2_score(y_pce_val.reshape(-1, 1), y_val.reshape(-1, 1))
-            rmse = np.sqrt(mean_squared_error(y_pce_val, y_val))
-
-            plt.ylabel(key)
-            plt.xlabel("Time [s]")
-            plt.title(f'Model vs MetaModel {key}')
-
-            ax = fig.axes[0]
-            leg = ax.legend(loc='best', frameon=True)
-            fig.canvas.draw()
-            p = leg.get_window_extent().inverse_transformed(ax.transAxes)
-            ax.text(
-                p.p0[1]-0.05, p.p1[1]-0.25,
-                f'RMSE = {rmse:.3f}\n$R^2$ = {R2:.3f}',
-                transform=ax.transAxes, color='black',
-                bbox=dict(facecolor='none', edgecolor='black',
-                          boxstyle='round,pad=1'))
-
-            plt.show()
-
-            # save the current figure
-            pdf.savefig(fig, bbox_inches='tight')
-
-            # Destroy the current plot
-            plt.clf()
-
-        pdf.close()
-
-    # -------------------------------------------------------------------------
-    def _plot_post_predictive(self):
-        """
-        Plots the posterior predictives against the observation data.
-
-        Returns
-        -------
-        None.
-
-        """
-
-        Model = self.engine.Model
-        out_dir = f'Outputs_Bayes_{Model.name}_{self.name}'
-        # Plot the posterior predictive
-        for out_idx, out_name in enumerate(Model.Output.names):
-            fig, ax = plt.subplots()
-            with sns.axes_style("ticks"):
-                x_key = list(self.measured_data)[0]
-
-                # --- Read prior and posterior predictive ---
-                if self.inference_method == 'rejection' and \
-                   self.name.lower() != 'valid':
-                    #  --- Prior ---
-                    # Load posterior predictive
-                    f = h5py.File(
-                        f'{out_dir}/priorPredictive.hdf5', 'r+')
-
-                    try:
-                        x_coords = np.array(f[f"x_values/{out_name}"])
-                    except:
-                        x_coords = np.array(f["x_values"])
-
-                    X_values = np.repeat(x_coords, 10000)
-
-                    prior_pred_df = {}
-                    prior_pred_df[x_key] = X_values
-                    prior_pred_df[out_name] = np.array(
-                        f[f"EDY/{out_name}"])[:10000].flatten('F')
-                    prior_pred_df = pd.DataFrame(prior_pred_df)
-
-                    tags_post = ['prior'] * len(prior_pred_df)
-                    prior_pred_df.insert(
-                        len(prior_pred_df.columns), "Tags", tags_post,
-                        True)
-                    f.close()
-
-                    # --- Posterior ---
-                    f = h5py.File(f"{out_dir}/postPredictive.hdf5", 'r+')
-
-                    X_values = np.repeat(
-                        x_coords, np.array(f[f"EDY/{out_name}"]).shape[0])
-
-                    post_pred_df = {}
-                    post_pred_df[x_key] = X_values
-                    post_pred_df[out_name] = np.array(
-                        f[f"EDY/{out_name}"]).flatten('F')
-
-                    post_pred_df = pd.DataFrame(post_pred_df)
-
-                    tags_post = ['posterior'] * len(post_pred_df)
-                    post_pred_df.insert(
-                        len(post_pred_df.columns), "Tags", tags_post, True)
-                    f.close()
-                    # Concatenate two dataframes based on x_values
-                    frames = [prior_pred_df, post_pred_df]
-                    all_pred_df = pd.concat(frames)
-
-                    # --- Plot posterior predictive ---
-                    sns.violinplot(
-                        x_key, y=out_name, data=all_pred_df, hue="Tags",
-                        legend=False, ax=ax, split=True, inner=None,
-                        color=".8")
-
-                    # --- Plot Data ---
-                    # Find the x,y coordinates for each point
-                    x_coords = np.arange(x_coords.shape[0])
-                    first_header = list(self.measured_data)[0]
-                    obs_data = self.measured_data.round({first_header: 6})
-                    sns.pointplot(
-                        x=first_header, y=out_name, color='g', markers='x',
-                        linestyles='', capsize=16, data=obs_data, ax=ax)
-
-                    ax.errorbar(
-                        x_coords, obs_data[out_name].values,
-                        yerr=1.96*self.measurement_error[out_name],
-                        ecolor='g', fmt=' ', zorder=-1)
-
-                    # Add labels to the legend
-                    handles, labels = ax.get_legend_handles_labels()
-                    labels.append('Data')
-
-                    data_marker = mlines.Line2D(
-                        [], [], color='lime', marker='+', linestyle='None',
-                        markersize=10)
-                    handles.append(data_marker)
-
-                    # Add legend
-                    ax.legend(handles=handles, labels=labels, loc='best',
-                              fontsize='large', frameon=True)
-
-                else:
-                    # Load posterior predictive
-                    f = h5py.File(f"{out_dir}/postPredictive.hdf5", 'r+')
-
-                    try:
-                        x_coords = np.array(f[f"x_values/{out_name}"])
-                    except:
-                        x_coords = np.array(f["x_values"])
-
-                    mu = np.mean(np.array(f[f"EDY/{out_name}"]), axis=0)
-                    std = np.std(np.array(f[f"EDY/{out_name}"]), axis=0)
-
-                    # --- Plot posterior predictive ---
-                    plt.plot(
-                        x_coords, mu, marker='o', color='b',
-                        label='Mean Post. Predictive')
-                    plt.fill_between(
-                        x_coords, mu-1.96*std, mu+1.96*std, color='b',
-                        alpha=0.15)
-
-                    # --- Plot Data ---
-                    ax.plot(
-                        x_coords, self.measured_data[out_name].values,
-                        'ko', label='data', markeredgecolor='w')
-
-                    # --- Plot ExpDesign ---
-                    orig_ED_Y = self.engine.ExpDesign.Y[out_name]
-                    for output in orig_ED_Y:
-                        plt.plot(
-                            x_coords, output, color='grey', alpha=0.15
-                            )
-
-                    # Add labels for axes
-                    plt.xlabel('Time [s]')
-                    plt.ylabel(out_name)
-
-                    # Add labels to the legend
-                    handles, labels = ax.get_legend_handles_labels()
-
-                    patch = Patch(color='b', alpha=0.15)
-                    handles.insert(1, patch)
-                    labels.insert(1, '95 $\\%$ CI')
-
-                    # Add legend
-                    ax.legend(handles=handles, labels=labels, loc='best',
-                              frameon=True)
-
-                # Save figure in pdf format
-                if self.emulator:
-                    plotname = f'/Post_Prior_Perd_{Model.name}_emulator'
-                else:
-                    plotname = f'/Post_Prior_Perd_{Model.name}'
-
-                fig.savefig(f'./{out_dir}{plotname}_{out_name}.pdf',
-                            bbox_inches='tight')
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/bayes_model_comparison.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/bayes_model_comparison.py
deleted file mode 100644
index b946281c5..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/bayes_model_comparison.py
+++ /dev/null
@@ -1,658 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Created on Sat Aug 24 16:04:06 2019
-
-@author: farid
-"""
-import numpy as np
-import os
-from scipy import stats
-import seaborn as sns
-import matplotlib.patches as patches
-import matplotlib.colors as mcolors
-import matplotlib.pylab as plt
-from .bayes_inference import BayesInference
-
-# Load the mplstyle
-plt.style.use(os.path.join(os.path.split(__file__)[0],
-                           '../', 'bayesvalidrox.mplstyle'))
-
-
-class BayesModelComparison:
-    """
-    A class to perform Bayesian Analysis.
-
-
-    Attributes
-    ----------
-    justifiability : bool, optional
-        Whether to perform the justifiability analysis. The default is
-        `True`.
-    perturbed_data : array of shape (n_bootstrap_itrs, n_obs), optional
-        User defined perturbed data. The default is `None`.
-    n_bootstarp : int
-        Number of bootstrap iteration. The default is `1000`.
-    data_noise_level : float
-        A noise level to perturb the data set. The default is `0.01`.
-    just_n_meas : int
-        Number of measurements considered for visualization of the
-        justifiability results.
-
-    """
-
-    def __init__(self, justifiability=True, perturbed_data=None,
-                 n_bootstarp=1000, data_noise_level=0.01, just_n_meas=2):
-
-        self.justifiability = justifiability
-        self.perturbed_data = perturbed_data
-        self.n_bootstarp = n_bootstarp
-        self.data_noise_level = data_noise_level
-        self.just_n_meas = just_n_meas
-
-    # --------------------------------------------------------------------------
-    def create_model_comparison(self, model_dict, opts_dict):
-        """
-        Starts the two-stage model comparison.
-        Stage I: Compare models using Bayes factors.
-        Stage II: Compare models via justifiability analysis.
-
-        Parameters
-        ----------
-        model_dict : dict
-            A dictionary including the metamodels.
-        opts_dict : dict
-            A dictionary given the `BayesInference` options.
-
-            Example:
-
-                >>> opts_bootstrap = {
-                    "bootstrap": True,
-                    "n_samples": 10000,
-                    "Discrepancy": DiscrepancyOpts,
-                    "emulator": True,
-                    "plot_post_pred": True
-                    }
-
-        Returns
-        -------
-        output : dict
-            A dictionary containing the objects and the model weights for the
-            comparison using Bayes factors and justifiability analysis.
-
-        """
-
-        # Bayes factor
-        bayes_dict_bf, model_weights_dict_bf = self.compare_models(
-            model_dict, opts_dict
-            )
-
-        output = {
-            'Bayes objects BF': bayes_dict_bf,
-            'Model weights BF': model_weights_dict_bf
-            }
-
-        # Justifiability analysis
-        if self.justifiability:
-            bayes_dict_ja, model_weights_dict_ja = self.compare_models(
-                model_dict, opts_dict, justifiability=True
-                )
-
-            output['Bayes objects JA'] = bayes_dict_ja
-            output['Model weights JA'] = model_weights_dict_ja
-
-        return output
-
-    # --------------------------------------------------------------------------
-    def compare_models(self, model_dict, opts_dict, justifiability=False):
-        """
-        Passes the options to instantiates the BayesInference class for each
-        model and passes the options from `opts_dict`. Then, it starts the
-        computations.
-        It also creates a folder and saves the diagrams, e.g., Bayes factor
-        plot, confusion matrix, etc.
-
-        Parameters
-        ----------
-        model_dict : dict
-            A dictionary including the metamodels.
-        opts_dict : dict
-            A dictionary given the `BayesInference` options.
-        justifiability : bool, optional
-            Whether to perform the justifiability analysis. The default is
-            `False`.
-
-        Returns
-        -------
-        bayes_dict : dict
-            A dictionary with `BayesInference` objects.
-        model_weights_dict : dict
-            A dictionary containing the model weights.
-
-        """
-
-        if not isinstance(model_dict, dict):
-            raise Exception("To run model comparsion, you need to pass a "
-                            "dictionary of models.")
-
-        # Extract model names
-        self.model_names = [*model_dict]
-
-        # Compute total number of the measurement points
-        Engine = list(model_dict.items())[0][1]
-        Engine.Model.read_observation()
-        self.n_meas = Engine.Model.n_obs
-
-        # ----- Generate data -----
-        # Find n_bootstrap
-        if self.perturbed_data is None:
-            n_bootstarp = self.n_bootstarp
-        else:
-            n_bootstarp = self.perturbed_data.shape[0]
-
-        # Create dataset
-        justData = self.generate_dataset(
-            model_dict, justifiability, n_bootstarp=n_bootstarp)
-
-        # Run create Interface for each model
-        bayes_dict = {}
-        for model in model_dict.keys():
-            print("-"*20)
-            print("Bayesian inference of {}.\n".format(model))
-
-            BayesOpts = BayesInference(model_dict[model])
-
-            # Set BayesInference options
-            for key, value in opts_dict.items():
-                if key in BayesOpts.__dict__.keys():
-                    if key == "Discrepancy" and isinstance(value, dict):
-                        setattr(BayesOpts, key, value[model])
-                    else:
-                        setattr(BayesOpts, key, value)
-
-            # Pass justifiability data as perturbed data
-            BayesOpts.perturbed_data = justData
-            BayesOpts.just_analysis = justifiability
-
-            bayes_dict[model] = BayesOpts.create_inference()
-            print("-"*20)
-
-        # Compute model weights
-        BME_Dict = dict()
-        for modelName, bayesObj in bayes_dict.items():
-            BME_Dict[modelName] = np.exp(bayesObj.log_BME, dtype=np.longdouble)#float128)
-
-        # BME correction in BayesInference class
-        model_weights = self.cal_model_weight(
-            BME_Dict, justifiability, n_bootstarp=n_bootstarp)
-
-        # Plot model weights
-        if justifiability:
-            model_names = self.model_names
-            model_names.insert(0, 'Observation')
-
-            # Split the model weights and save in a dict
-            list_ModelWeights = np.split(
-                model_weights, model_weights.shape[1]/self.n_meas, axis=1)
-            model_weights_dict = {key: weights for key, weights in
-                                  zip(model_names, list_ModelWeights)}
-
-            #self.plot_just_analysis(model_weights_dict)
-        else:
-            # Create box plot for model weights
-            self.plot_model_weights(model_weights, 'model_weights')
-
-            # Create kde plot for bayes factors
-            self.plot_bayes_factor(BME_Dict, 'kde_plot')
-
-            # Store model weights in a dict
-            model_weights_dict = {key: weights for key, weights in
-                                  zip(self.model_names, model_weights)}
-
-        return bayes_dict, model_weights_dict
-
-    # -------------------------------------------------------------------------
-    def generate_dataset(self, model_dict, justifiability=False,
-                         n_bootstarp=1):
-        """
-        Generates the perturbed data set for the Bayes factor calculations and
-        the data set for the justifiability analysis.
-
-        Parameters
-        ----------
-        model_dict : dict
-            A dictionary including the metamodels.
-        bool, optional
-            Whether to perform the justifiability analysis. The default is
-            `False`.
-        n_bootstarp : int, optional
-            Number of bootstrap iterations. The default is `1`.
-
-        Returns
-        -------
-        all_just_data: array
-            Created data set.
-
-        """
-        # Compute some variables
-        all_just_data = []
-        Engine = list(model_dict.items())[0][1]
-        out_names = Engine.Model.Output.names
-
-        # Perturb observations for Bayes Factor
-        if self.perturbed_data is None:
-            self.perturbed_data = self.__perturb_data(
-                    Engine.Model.observations, out_names, n_bootstarp,
-                    noise_level=self.data_noise_level)
-
-        # Only for Bayes Factor
-        if not justifiability:
-            return self.perturbed_data
-
-        # Evaluate metamodel
-        runs = {}
-        for key, metaModel in model_dict.items():
-            y_hat, _ = metaModel.eval_metamodel(nsamples=n_bootstarp)
-            runs[key] = y_hat
-
-        # Generate data
-        for i in range(n_bootstarp):
-            y_data = self.perturbed_data[i].reshape(1, -1)
-            justData = np.tril(np.repeat(y_data, y_data.shape[1], axis=0))
-            # Use surrogate runs for data-generating process
-            for key, metaModel in model_dict.items():
-                model_data = np.array(
-                    [runs[key][out][i] for out in out_names]).reshape(y_data.shape)
-                justData = np.vstack((
-                    justData,
-                    np.tril(np.repeat(model_data, model_data.shape[1], axis=0))
-                    ))
-            # Save in a list
-            all_just_data.append(justData)
-
-        # Squeeze the array
-        all_just_data = np.array(all_just_data).transpose(1, 0, 2).reshape(
-            -1, np.array(all_just_data).shape[2]
-            )
-
-        return all_just_data
-
-    # -------------------------------------------------------------------------
-    def __perturb_data(self, data, output_names, n_bootstrap, noise_level):
-        """
-        Returns an array with n_bootstrap_itrs rowsof perturbed data.
-        The first row includes the original observation data.
-        If `self.bayes_loocv` is True, a 2d-array will be returned with
-        repeated rows and zero diagonal entries.
-
-        Parameters
-        ----------
-        data : pandas DataFrame
-            Observation data.
-        output_names : list
-            List of the output names.
-
-        Returns
-        -------
-        final_data : array
-            Perturbed data set.
-
-        """
-        obs_data = data[output_names].values
-        n_measurement, n_outs = obs_data.shape
-        n_tot_measurement = obs_data[~np.isnan(obs_data)].shape[0]
-        final_data = np.zeros(
-            (n_bootstrap, n_tot_measurement)
-            )
-        final_data[0] = obs_data.T[~np.isnan(obs_data.T)]
-        for itrIdx in range(1, n_bootstrap):
-            data = np.zeros((n_measurement, n_outs))
-            for idx in range(len(output_names)):
-                std = np.nanstd(obs_data[:, idx])
-                if std == 0:
-                    std = 0.001
-                noise = std * noise_level
-                data[:, idx] = np.add(
-                    obs_data[:, idx],
-                    np.random.normal(0, 1, obs_data.shape[0]) * noise,
-                )
-
-            final_data[itrIdx] = data.T[~np.isnan(data.T)]
-
-        return final_data
-
-    # -------------------------------------------------------------------------
-    def cal_model_weight(self, BME_Dict, justifiability=False, n_bootstarp=1):
-        """
-        Normalize the BME (Asumption: Model Prior weights are equal for models)
-
-        Parameters
-        ----------
-        BME_Dict : dict
-            A dictionary containing the BME values.
-
-        Returns
-        -------
-        model_weights : array
-            Model weights.
-
-        """
-        # Stack the BME values for all models
-        all_BME = np.vstack(list(BME_Dict.values()))
-
-        if justifiability:
-            # Compute expected log_BME for justifiabiliy analysis
-            all_BME = all_BME.reshape(
-                all_BME.shape[0], -1, n_bootstarp).mean(axis=2)
-
-        # Model weights
-        model_weights = np.divide(all_BME, np.nansum(all_BME, axis=0))
-
-        return model_weights
-
-    # -------------------------------------------------------------------------
-    def plot_just_analysis(self, model_weights_dict):
-        """
-        Visualizes the confusion matrix and the model wights for the
-        justifiability analysis.
-
-        Parameters
-        ----------
-        model_weights_dict : dict
-            Model weights.
-
-        Returns
-        -------
-        None.
-
-        """
-
-        directory = 'Outputs_Comparison/'
-        os.makedirs(directory, exist_ok=True)
-        Color = [*mcolors.TABLEAU_COLORS]
-        names = [*model_weights_dict]
-
-        model_names = [model.replace('_', '$-$') for model in self.model_names]
-        for name in names:
-            fig, ax = plt.subplots()
-            for i, model in enumerate(model_names[1:]):
-                plt.plot(list(range(1, self.n_meas+1)),
-                         model_weights_dict[name][i],
-                         color=Color[i], marker='o',
-                         ms=10, linewidth=2, label=model
-                         )
-
-            plt.title(f"Data generated by: {name.replace('_', '$-$')}")
-            plt.ylabel("Weights")
-            plt.xlabel("No. of measurement points")
-            ax.set_xticks(list(range(1, self.n_meas+1)))
-            plt.legend(loc="best")
-            fig.savefig(
-                f'{directory}modelWeights_{name}.svg', bbox_inches='tight'
-                )
-            plt.close()
-
-        # Confusion matrix for some measurement points
-        epsilon = 1 if self.just_n_meas != 1 else 0
-        for index in range(0, self.n_meas+epsilon, self.just_n_meas):
-            weights = np.array(
-                [model_weights_dict[key][:, index] for key in model_weights_dict]
-                )
-            g = sns.heatmap(
-                weights.T, annot=True, cmap='Blues', xticklabels=model_names,
-                yticklabels=model_names[1:], annot_kws={"size": 24}
-                )
-
-            # x axis on top
-            g.xaxis.tick_top()
-            g.xaxis.set_label_position('top')
-            g.set_xlabel(r"\textbf{Data generated by:}", labelpad=15)
-            g.set_ylabel(r"\textbf{Model weight for:}", labelpad=15)
-            g.figure.savefig(
-                f"{directory}confusionMatrix_ND_{index+1}.pdf",
-                bbox_inches='tight'
-                )
-            plt.close()
-
-    # -------------------------------------------------------------------------
-    def plot_model_weights(self, model_weights, plot_name):
-        """
-        Visualizes the model weights resulting from BMS via the observation
-        data.
-
-        Parameters
-        ----------
-        model_weights : array
-            Model weights.
-        plot_name : str
-            Plot name.
-
-        Returns
-        -------
-        None.
-
-        """
-        font_size = 40
-        # mkdir for plots
-        directory = 'Outputs_Comparison/'
-        os.makedirs(directory, exist_ok=True)
-
-        # Create figure
-        fig, ax = plt.subplots()
-
-        # Filter data using np.isnan
-        mask = ~np.isnan(model_weights.T)
-        filtered_data = [d[m] for d, m in zip(model_weights, mask.T)]
-
-        # Create the boxplot
-        bp = ax.boxplot(filtered_data, patch_artist=True, showfliers=False)
-
-        # change outline color, fill color and linewidth of the boxes
-        for box in bp['boxes']:
-            # change outline color
-            box.set(color='#7570b3', linewidth=4)
-            # change fill color
-            box.set(facecolor='#1b9e77')
-
-        # change color and linewidth of the whiskers
-        for whisker in bp['whiskers']:
-            whisker.set(color='#7570b3', linewidth=2)
-
-        # change color and linewidth of the caps
-        for cap in bp['caps']:
-            cap.set(color='#7570b3', linewidth=2)
-
-        # change color and linewidth of the medians
-        for median in bp['medians']:
-            median.set(color='#b2df8a', linewidth=2)
-
-        # change the style of fliers and their fill
-        # for flier in bp['fliers']:
-        #     flier.set(marker='o', color='#e7298a', alpha=0.75)
-
-        # Custom x-axis labels
-        model_names = [model.replace('_', '$-$') for model in self.model_names]
-        ax.set_xticklabels(model_names)
-
-        ax.set_ylabel('Weight', fontsize=font_size)
-
-        # Title
-        plt.title('Posterior Model Weights')
-
-        # Set y lim
-        ax.set_ylim((-0.05, 1.05))
-
-        # Set size of the ticks
-        for t in ax.get_xticklabels():
-            t.set_fontsize(font_size)
-        for t in ax.get_yticklabels():
-            t.set_fontsize(font_size)
-
-        # Save the figure
-        fig.savefig(
-            f'./{directory}{plot_name}.pdf', bbox_inches='tight'
-            )
-
-        plt.close()
-
-    # -------------------------------------------------------------------------
-    def plot_bayes_factor(self, BME_Dict, plot_name=''):
-        """
-        Plots the Bayes factor distibutions in a :math:`N_m \\times N_m`
-        matrix, where :math:`N_m` is the number of the models.
-
-        Parameters
-        ----------
-        BME_Dict : dict
-            A dictionary containing the BME values of the models.
-        plot_name : str, optional
-            Plot name. The default is ''.
-
-        Returns
-        -------
-        None.
-
-        """
-
-        font_size = 40
-
-        # mkdir for plots
-        directory = 'Outputs_Comparison/'
-        os.makedirs(directory, exist_ok=True)
-
-        Colors = ["blue", "green", "gray", "brown"]
-
-        model_names = list(BME_Dict.keys())
-        nModels = len(model_names)
-
-        # Plots
-        fig, axes = plt.subplots(
-            nrows=nModels, ncols=nModels, sharex=True, sharey=True
-            )
-
-        for i, key_i in enumerate(model_names):
-
-            for j, key_j in enumerate(model_names):
-                ax = axes[i, j]
-                # Set size of the ticks
-                for t in ax.get_xticklabels():
-                    t.set_fontsize(font_size)
-                for t in ax.get_yticklabels():
-                    t.set_fontsize(font_size)
-
-                if j != i:
-
-                    # Null hypothesis: key_j is the better model
-                    BayesFactor = np.log10(
-                        np.divide(BME_Dict[key_i], BME_Dict[key_j])
-                        )
-
-                    # sns.kdeplot(BayesFactor, ax=ax, color=Colors[i], shade=True)
-                    # sns.histplot(BayesFactor, ax=ax, stat="probability",
-                    #              kde=True, element='step',
-                    #              color=Colors[j])
-
-                    # taken from seaborn's source code (utils.py and
-                    # distributions.py)
-                    def seaborn_kde_support(data, bw, gridsize, cut, clip):
-                        if clip is None:
-                            clip = (-np.inf, np.inf)
-                        support_min = max(data.min() - bw * cut, clip[0])
-                        support_max = min(data.max() + bw * cut, clip[1])
-                        return np.linspace(support_min, support_max, gridsize)
-
-                    kde_estim = stats.gaussian_kde(
-                        BayesFactor, bw_method='scott'
-                        )
-
-                    # manual linearization of data
-                    # linearized = np.linspace(
-                    #     quotient.min(), quotient.max(), num=500)
-
-                    # or better: mimic seaborn's internal stuff
-                    bw = kde_estim.scotts_factor() * np.std(BayesFactor)
-                    linearized = seaborn_kde_support(
-                        BayesFactor, bw, 100, 3, None)
-
-                    # computes values of the estimated function on the
-                    # estimated linearized inputs
-                    Z = kde_estim.evaluate(linearized)
-
-                    # https://stackoverflow.com/questions/29661574/normalize-
-                    # numpy-array-columns-in-python
-                    def normalize(x):
-                        return (x - x.min(0)) / x.ptp(0)
-
-                    # normalize so it is between 0;1
-                    Z2 = normalize(Z)
-                    ax.plot(linearized, Z2, "-", color=Colors[i], linewidth=4)
-                    ax.fill_between(
-                        linearized, 0, Z2, color=Colors[i], alpha=0.25
-                        )
-
-                    # Draw BF significant levels according to Jeffreys 1961
-                    # Strong evidence for both models
-                    ax.axvline(
-                        x=np.log10(3), ymin=0, linewidth=4, color='dimgrey'
-                        )
-                    # Strong evidence for one model
-                    ax.axvline(
-                        x=np.log10(10), ymin=0, linewidth=4, color='orange'
-                        )
-                    # Decisive evidence for one model
-                    ax.axvline(
-                        x=np.log10(100), ymin=0, linewidth=4, color='r'
-                        )
-
-                    # legend
-                    BF_label = key_i.replace('_', '$-$') + \
-                        '/' + key_j.replace('_', '$-$')
-                    legend_elements = [
-                        patches.Patch(facecolor=Colors[i], edgecolor=Colors[i],
-                                      label=f'BF({BF_label})')
-                        ]
-                    ax.legend(
-                        loc='upper left', handles=legend_elements,
-                        fontsize=font_size-(nModels+1)*5
-                        )
-
-                elif j == i:
-                    # build a rectangle in axes coords
-                    left, width = 0, 1
-                    bottom, height = 0, 1
-
-                    # axes coordinates are 0,0 is bottom left and 1,1 is upper
-                    # right
-                    p = patches.Rectangle(
-                        (left, bottom), width, height, color='white',
-                        fill=True, transform=ax.transAxes, clip_on=False
-                        )
-                    ax.grid(False)
-                    ax.add_patch(p)
-                    # ax.text(0.5*(left+right), 0.5*(bottom+top), key_i,
-                    fsize = font_size+20 if nModels < 4 else font_size
-                    ax.text(0.5, 0.5, key_i.replace('_', '$-$'),
-                            horizontalalignment='center',
-                            verticalalignment='center',
-                            fontsize=fsize, color=Colors[i],
-                            transform=ax.transAxes)
-
-        # Defining custom 'ylim' values.
-        custom_ylim = (0, 1.05)
-
-        # Setting the values for all axes.
-        plt.setp(axes, ylim=custom_ylim)
-
-        # set labels
-        for i in range(nModels):
-            axes[-1, i].set_xlabel('log$_{10}$(BF)', fontsize=font_size)
-            axes[i, 0].set_ylabel('Probability', fontsize=font_size)
-
-        # Adjust subplots
-        plt.subplots_adjust(wspace=0.2, hspace=0.1)
-
-        plt.savefig(
-            f'./{directory}Bayes_Factor{plot_name}.pdf', bbox_inches='tight'
-            )
-
-        plt.close()
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/discrepancy.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/discrepancy.py
deleted file mode 100644
index ac1b400c1..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/discrepancy.py
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import scipy.stats as stats
-from bayesvalidrox.surrogate_models.exp_designs import ExpDesigns
-
-
-class Discrepancy:
-    """
-    Discrepancy class for Bayesian inference method.
-    We define the reference or reality to be equal to what we can model and a
-    descripancy term \\( \\epsilon \\). We consider the followin format:
-
-    $$\\textbf{y}_{\\text{reality}} = \\mathcal{M}(\\theta) + \\epsilon,$$
-
-    where \\( \\epsilon \\in R^{N_{out}} \\) represents the the effects of
-    measurement error and model inaccuracy. For simplicity, it can be defined
-    as an additive Gaussian disrepancy with zeromean and given covariance
-    matrix \\( \\Sigma \\):
-
-    $$\\epsilon \\sim \\mathcal{N}(\\epsilon|0, \\Sigma). $$
-
-    In the context of model inversion or calibration, an observation point
-    \\( \\textbf{y}_i \\in \\mathcal{y} \\) is a realization of a Gaussian
-    distribution with mean value of \\(\\mathcal{M}(\\theta) \\) and covariance
-    matrix of \\( \\Sigma \\).
-
-    $$ p(\\textbf{y}|\\theta) = \\mathcal{N}(\\textbf{y}|\\mathcal{M}
-                                             (\\theta))$$
-
-    The following options are available:
-
-    * Option A: With known redidual covariance matrix \\(\\Sigma\\) for
-    independent measurements.
-
-    * Option B: With unknown redidual covariance matrix \\(\\Sigma\\),
-    paramethrized as \\(\\Sigma(\\theta_{\\epsilon})=\\sigma^2 \\textbf{I}_
-    {N_{out}}\\) with unknown residual variances \\(\\sigma^2\\).
-    This term will be jointly infer with the uncertain input parameters. For
-    the inversion, you need to define a prior marginal via `Input` class. Note
-    that \\(\\sigma^2\\) is only a single scalar multiplier for the diagonal
-    entries of the covariance matrix \\(\\Sigma\\).
-
-    Attributes
-    ----------
-    InputDisc : obj
-        Input object. When the \\(\\sigma^2\\) is expected to be inferred
-        jointly with the parameters (`Option B`).If multiple output groups are
-        defined by `Model.Output.names`, each model output needs to have.
-        a prior marginal using the `Input` class. The default is `''`.
-    disc_type : str
-        Type of the noise definition. `'Gaussian'` is only supported so far.
-    parameters : dict or pandas.DataFrame
-        Known residual variance \\(\\sigma^2\\), i.e. diagonal entry of the
-        covariance matrix of the multivariate normal likelihood in case of
-        `Option A`.
-
-    """
-
-    def __init__(self, InputDisc='', disc_type='Gaussian', parameters=None):
-        self.InputDisc = InputDisc
-        self.disc_type = disc_type
-        self.parameters = parameters
-
-    # -------------------------------------------------------------------------
-    def get_sample(self, n_samples):
-        """
-        Generate samples for the \\(\\sigma^2\\), i.e. the diagonal entries of
-        the variance-covariance matrix in the multivariate normal distribution.
-
-        Parameters
-        ----------
-        n_samples : int
-            Number of samples (parameter sets).
-
-        Returns
-        -------
-        sigma2_prior: array of shape (n_samples, n_params)
-            \\(\\sigma^2\\) samples.
-
-        """
-        self.n_samples = n_samples # TODO: not used again in here - needed from the outside?
-        
-        # Create and store BoundTuples
-        self.ExpDesign = ExpDesigns(self.InputDisc)
-        self.ExpDesign.sampling_method = 'random'
-        self.ExpDesign.generate_ED(
-            n_samples, max_pce_deg=1
-            )
-        # TODO: need to recheck the following line
-        # This used to simply be the return from the call above
-        self.sigma2_prior = self.ExpDesign.X
-
-        # Naive approach: Fit a gaussian kernel to the provided data
-        self.ExpDesign.JDist = stats.gaussian_kde(self.ExpDesign.raw_data)
-
-        # Save the names of sigmas
-        if len(self.InputDisc.Marginals) != 0:
-            self.name = []
-            for Marginalidx in range(len(self.InputDisc.Marginals)):
-                self.name.append(self.InputDisc.Marginals[Marginalidx].name)
-
-        return self.sigma2_prior
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/mcmc.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/mcmc.py
deleted file mode 100644
index fe22a152f..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayes_inference/mcmc.py
+++ /dev/null
@@ -1,909 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import os
-import numpy as np
-import emcee
-import pandas as pd
-import matplotlib.pyplot as plt
-from matplotlib.backends.backend_pdf import PdfPages
-import multiprocessing
-import scipy.stats as st
-from scipy.linalg import cholesky as chol
-import warnings
-import shutil
-os.environ["OMP_NUM_THREADS"] = "1"
-
-
-class MCMC:
-    """
-    A class for bayesian inference via a Markov-Chain Monte-Carlo (MCMC)
-    Sampler to approximate the posterior distribution of the Bayes theorem:
-    $$p(\\theta|\\mathcal{y}) = \\frac{p(\\mathcal{y}|\\theta) p(\\theta)}
-                                         {p(\\mathcal{y})}.$$
-
-    This class make inference with emcee package [1] using an Affine Invariant
-    Ensemble sampler (AIES) [2].
-
-    [1] Foreman-Mackey, D., Hogg, D.W., Lang, D. and Goodman, J., 2013.emcee:
-        the MCMC hammer. Publications of the Astronomical Society of the
-        Pacific, 125(925), p.306. https://emcee.readthedocs.io/en/stable/
-
-    [2] Goodman, J. and Weare, J., 2010. Ensemble samplers with affine
-        invariance. Communications in applied mathematics and computational
-        science, 5(1), pp.65-80.
-
-
-    Attributes
-    ----------
-    BayesOpts : obj
-        Bayes object.
-    """
-
-    def __init__(self, BayesOpts):
-
-        self.BayesOpts = BayesOpts
-
-    def run_sampler(self, observation, total_sigma2):
-
-        BayesObj = self.BayesOpts
-        MetaModel = BayesObj.engine.MetaModel
-        Model = BayesObj.engine.Model
-        Discrepancy = self.BayesOpts.Discrepancy
-        n_cpus = Model.n_cpus
-        priorDist = BayesObj.engine.ExpDesign.JDist
-        ndim = MetaModel.n_params
-        self.counter = 0
-        output_dir = f'Outputs_Bayes_{Model.name}_{self.BayesOpts.name}'
-        if not os.path.exists(output_dir):
-            os.makedirs(output_dir)
-
-        self.observation = observation
-        self.total_sigma2 = total_sigma2
-
-        # Unpack mcmc parameters given to BayesObj.mcmc_params
-        self.initsamples = None
-        self.nwalkers = 100
-        self.nburn = 200
-        self.nsteps = 100000
-        self.moves = None
-        self.mp = False
-        self.verbose = False
-
-        # Extract initial samples
-        if 'init_samples' in BayesObj.mcmc_params:
-            self.initsamples = BayesObj.mcmc_params['init_samples']
-            if isinstance(self.initsamples, pd.DataFrame):
-                self.initsamples = self.initsamples.values
-
-        # Extract number of steps per walker
-        if 'n_steps' in BayesObj.mcmc_params:
-            self.nsteps = int(BayesObj.mcmc_params['n_steps'])
-        # Extract number of walkers (chains)
-        if 'n_walkers' in BayesObj.mcmc_params:
-            self.nwalkers = int(BayesObj.mcmc_params['n_walkers'])
-        # Extract moves
-        if 'moves' in BayesObj.mcmc_params:
-            self.moves = BayesObj.mcmc_params['moves']
-        # Extract multiprocessing
-        if 'multiprocessing' in BayesObj.mcmc_params:
-            self.mp = BayesObj.mcmc_params['multiprocessing']
-        # Extract verbose
-        if 'verbose' in BayesObj.mcmc_params:
-            self.verbose = BayesObj.mcmc_params['verbose']
-
-        # Set initial samples
-        np.random.seed(0)
-        if self.initsamples is None:
-            try:
-                initsamples = priorDist.sample(self.nwalkers).T
-            except:
-                # when aPCE selected - gaussian kernel distribution
-                inputSamples = MetaModel.ExpDesign.raw_data.T
-                random_indices = np.random.choice(
-                    len(inputSamples), size=self.nwalkers, replace=False
-                    )
-                initsamples = inputSamples[random_indices]
-
-        else:
-            if self.initsamples.ndim == 1:
-                # When MAL is given.
-                theta = self.initsamples
-                initsamples = [theta + 1e-1*np.multiply(
-                    np.random.randn(ndim), theta) for i in
-                               range(self.nwalkers)]
-            else:
-                # Pick samples based on a uniform dist between min and max of
-                # each dim
-                initsamples = np.zeros((self.nwalkers, ndim))
-                bound_tuples = []
-                for idx_dim in range(ndim):
-                    lower = np.min(self.initsamples[:, idx_dim])
-                    upper = np.max(self.initsamples[:, idx_dim])
-                    bound_tuples.append((lower, upper))
-                    dist = st.uniform(loc=lower, scale=upper-lower)
-                    initsamples[:, idx_dim] = dist.rvs(size=self.nwalkers)
-
-                # Update lower and upper
-                MetaModel.ExpDesign.bound_tuples = bound_tuples
-
-        # Check if sigma^2 needs to be inferred
-        if Discrepancy.opt_sigma != 'B':
-            sigma2_samples = Discrepancy.get_sample(self.nwalkers)
-
-            # Update initsamples
-            initsamples = np.hstack((initsamples, sigma2_samples))
-
-            # Update ndim
-            ndim = initsamples.shape[1]
-
-            # Discrepancy bound
-            disc_bound_tuple = Discrepancy.ExpDesign.bound_tuples
-
-            # Update bound_tuples
-            BayesObj.engine.ExpDesign.bound_tuples += disc_bound_tuple
-
-        print("\n>>>> Bayesian inference with MCMC for "
-              f"{self.BayesOpts.name} started. <<<<<<")
-
-        # Set up the backend
-        filename = f"{output_dir}/emcee_sampler.h5"
-        backend = emcee.backends.HDFBackend(filename)
-        # Clear the backend in case the file already exists
-        backend.reset(self.nwalkers, ndim)
-
-        # Define emcee sampler
-        # Here we'll set up the computation. emcee combines multiple "walkers",
-        # each of which is its own MCMC chain. The number of trace results will
-        # be nwalkers * nsteps.
-        if self.mp:
-            # Run in parallel
-            if n_cpus is None:
-                n_cpus = multiprocessing.cpu_count()
-
-            with multiprocessing.Pool(n_cpus) as pool:
-                sampler = emcee.EnsembleSampler(
-                    self.nwalkers, ndim, self.log_posterior, moves=self.moves,
-                    pool=pool, backend=backend
-                    )
-
-                # Check if a burn-in phase is needed!
-                if self.initsamples is None:
-                    # Burn-in
-                    print("\n Burn-in period is starting:")
-                    pos = sampler.run_mcmc(
-                        initsamples, self.nburn, progress=True
-                        )
-
-                    # Reset sampler
-                    sampler.reset()
-                    pos = pos.coords
-                else:
-                    pos = initsamples
-
-                # Production run
-                print("\n Production run is starting:")
-                pos, prob, state = sampler.run_mcmc(
-                    pos, self.nsteps, progress=True
-                    )
-
-        else:
-            # Run in series and monitor the convergence
-            sampler = emcee.EnsembleSampler(
-                self.nwalkers, ndim, self.log_posterior, moves=self.moves,
-                backend=backend, vectorize=True
-                )
-
-            # Check if a burn-in phase is needed!
-            if self.initsamples is None:
-                # Burn-in
-                print("\n Burn-in period is starting:")
-                pos = sampler.run_mcmc(
-                    initsamples, self.nburn, progress=True
-                    )
-
-                # Reset sampler
-                sampler.reset()
-                pos = pos.coords
-            else:
-                pos = initsamples
-
-            # Production run
-            print("\n Production run is starting:")
-
-            # Track how the average autocorrelation time estimate changes
-            autocorrIdx = 0
-            autocorr = np.empty(self.nsteps)
-            tauold = np.inf
-            autocorreverynsteps = 50
-
-            # sample step by step using the generator sampler.sample
-            for sample in sampler.sample(pos,
-                                         iterations=self.nsteps,
-                                         tune=True,
-                                         progress=True):
-
-                # only check convergence every autocorreverynsteps steps
-                if sampler.iteration % autocorreverynsteps:
-                    continue
-
-                # Train model discrepancy/error
-                if hasattr(BayesObj, 'errorModel') and BayesObj.errorModel \
-                   and not sampler.iteration % 3 * autocorreverynsteps:
-                    try:
-                        self.error_MetaModel = self.train_error_model(sampler)
-                    except:
-                        pass
-
-                # Print the current mean acceptance fraction
-                if self.verbose:
-                    print("\nStep: {}".format(sampler.iteration))
-                    acc_fr = np.mean(sampler.acceptance_fraction)
-                    print(f"Mean acceptance fraction: {acc_fr:.3f}")
-
-                # compute the autocorrelation time so far
-                # using tol=0 means that we'll always get an estimate even if
-                # it isn't trustworthy
-                tau = sampler.get_autocorr_time(tol=0)
-                # average over walkers
-                autocorr[autocorrIdx] = np.nanmean(tau)
-                autocorrIdx += 1
-
-                # output current autocorrelation estimate
-                if self.verbose:
-                    print(f"Mean autocorr. time estimate: {np.nanmean(tau):.3f}")
-                    list_gr = np.round(self.gelman_rubin(sampler.chain), 3)
-                    print("Gelman-Rubin Test*: ", list_gr)
-
-                # check convergence
-                converged = np.all(tau*autocorreverynsteps < sampler.iteration)
-                converged &= np.all(np.abs(tauold - tau) / tau < 0.01)
-                converged &= np.all(self.gelman_rubin(sampler.chain) < 1.1)
-
-                if converged:
-                    break
-                tauold = tau
-
-        # Posterior diagnostics
-        try:
-            tau = sampler.get_autocorr_time(tol=0)
-        except emcee.autocorr.AutocorrError:
-            tau = 5
-
-        if all(np.isnan(tau)):
-            tau = 5
-
-        burnin = int(2*np.nanmax(tau))
-        thin = int(0.5*np.nanmin(tau)) if int(0.5*np.nanmin(tau)) != 0 else 1
-        finalsamples = sampler.get_chain(discard=burnin, flat=True, thin=thin)
-        acc_fr = np.nanmean(sampler.acceptance_fraction)
-        list_gr = np.round(self.gelman_rubin(sampler.chain[:, burnin:]), 3)
-
-        # Print summary
-        print('\n')
-        print('-'*15 + 'Posterior diagnostics' + '-'*15)
-        print(f"Mean auto-correlation time: {np.nanmean(tau):.3f}")
-        print(f"Thin: {thin}")
-        print(f"Burn-in: {burnin}")
-        print(f"Flat chain shape: {finalsamples.shape}")
-        print(f"Mean acceptance fraction*: {acc_fr:.3f}")
-        print("Gelman-Rubin Test**: ", list_gr)
-
-        print("\n* This value must lay between 0.234 and 0.5.")
-        print("** These values must be smaller than 1.1.")
-        print('-'*50)
-
-        print(f"\n>>>> Bayesian inference with MCMC for {self.BayesOpts.name} "
-              "successfully completed. <<<<<<\n")
-
-        # Extract parameter names and their prior ranges
-        par_names = self.BayesOpts.engine.ExpDesign.par_names
-
-        if Discrepancy.opt_sigma != 'B':
-            for i in range(len(Discrepancy.InputDisc.Marginals)):
-                par_names.append(Discrepancy.InputDisc.Marginals[i].name)
-
-        params_range = self.BayesOpts.engine.ExpDesign.bound_tuples
-
-        # Plot traces
-        if self.verbose and self.nsteps < 10000:
-            pdf = PdfPages(output_dir+'/traceplots.pdf')
-            fig = plt.figure()
-            for parIdx in range(ndim):
-                # Set up the axes with gridspec
-                fig = plt.figure()
-                grid = plt.GridSpec(4, 4, hspace=0.2, wspace=0.2)
-                main_ax = fig.add_subplot(grid[:-1, :3])
-                y_hist = fig.add_subplot(grid[:-1, -1], xticklabels=[],
-                                         sharey=main_ax)
-
-                for i in range(self.nwalkers):
-                    samples = sampler.chain[i, :, parIdx]
-                    main_ax.plot(samples, '-')
-
-                    # histogram on the attached axes
-                    y_hist.hist(samples[burnin:], 40, histtype='stepfilled',
-                                orientation='horizontal', color='gray')
-
-                main_ax.set_ylim(params_range[parIdx])
-                main_ax.set_title('traceplot for ' + par_names[parIdx])
-                main_ax.set_xlabel('step number')
-
-                # save the current figure
-                pdf.savefig(fig, bbox_inches='tight')
-
-                # Destroy the current plot
-                plt.clf()
-
-            pdf.close()
-
-        # plot development of autocorrelation estimate
-        if not self.mp:
-            fig1 = plt.figure()
-            steps = autocorreverynsteps*np.arange(1, autocorrIdx+1)
-            taus = autocorr[:autocorrIdx]
-            plt.plot(steps, steps / autocorreverynsteps, "--k")
-            plt.plot(steps, taus)
-            plt.xlim(0, steps.max())
-            plt.ylim(0, np.nanmax(taus)+0.1*(np.nanmax(taus)-np.nanmin(taus)))
-            plt.xlabel("number of steps")
-            plt.ylabel(r"mean $\hat{\tau}$")
-            fig1.savefig(f"{output_dir}/autocorrelation_time.pdf",
-                         bbox_inches='tight')
-
-        # logml_dict = self.marginal_llk_emcee(sampler, self.nburn, logp=None,
-        # maxiter=5000)
-        # print('\nThe Bridge Sampling Estimation is "
-        #       f"{logml_dict['logml']:.5f}.')
-
-        # # Posterior-based expectation of posterior probablity
-        # postExpPostLikelihoods = np.mean(sampler.get_log_prob(flat=True)
-        # [self.nburn*self.nwalkers:])
-
-        # # Posterior-based expectation of prior densities
-        # postExpPrior = np.mean(self.log_prior(emcee_trace.T))
-
-        # # Posterior-based expectation of likelihoods
-        # postExpLikelihoods_emcee = postExpPostLikelihoods - postExpPrior
-
-        # # Calculate Kullback-Leibler Divergence
-        # KLD_emcee = postExpLikelihoods_emcee - logml_dict['logml']
-        # print("Kullback-Leibler divergence: %.5f"%KLD_emcee)
-
-        # # Information Entropy based on Entropy paper Eq. 38
-        # infEntropy_emcee = logml_dict['logml'] - postExpPrior -
-        #                    postExpLikelihoods_emcee
-        # print("Information Entropy: %.5f" %infEntropy_emcee)
-
-        Posterior_df = pd.DataFrame(finalsamples, columns=par_names)
-
-        return Posterior_df
-
-    # -------------------------------------------------------------------------
-    def log_prior(self, theta):
-        """
-        Calculates the log prior likelihood \\( p(\\theta)\\) for the given
-        parameter set(s) \\( \\theta \\).
-
-        Parameters
-        ----------
-        theta : array of shape (n_samples, n_params)
-            Parameter sets, i.e. proposals of MCMC chains.
-
-        Returns
-        -------
-        logprior: float or array of shape n_samples
-            Log prior likelihood. If theta has only one row, a single value is
-            returned otherwise an array.
-
-        """
-
-        MetaModel = self.BayesOpts.MetaModel
-        Discrepancy = self.BayesOpts.Discrepancy
-
-        # Find the number of sigma2 parameters
-        if Discrepancy.opt_sigma != 'B':
-            disc_bound_tuples = Discrepancy.ExpDesign.bound_tuples
-            disc_marginals = Discrepancy.ExpDesign.InputObj.Marginals
-            disc_prior_space = Discrepancy.ExpDesign.prior_space
-            n_sigma2 = len(disc_bound_tuples)
-        else:
-            n_sigma2 = -len(theta)
-        prior_dist = self.BayesOpts.engine.ExpDesign.prior_space
-        params_range = self.BayesOpts.engine.ExpDesign.bound_tuples
-        theta = theta if theta.ndim != 1 else theta.reshape((1, -1))
-        nsamples = theta.shape[0]
-        logprior = -np.inf*np.ones(nsamples)
-
-        for i in range(nsamples):
-            # Check if the sample is within the parameters' range
-            if self._check_ranges(theta[i], params_range):
-                # Check if all dists are uniform, if yes priors are equal.
-                if all(MetaModel.input_obj.Marginals[i].dist_type == 'uniform'
-                       for i in range(MetaModel.n_params)):
-                    logprior[i] = 0.0
-                else:
-                    logprior[i] = np.log(
-                        prior_dist.pdf(theta[i, :-n_sigma2].T)
-                        )
-
-                # Check if bias term needs to be inferred
-                if Discrepancy.opt_sigma != 'B':
-                    if self._check_ranges(theta[i, -n_sigma2:],
-                                          disc_bound_tuples):
-                        if all('unif' in disc_marginals[i].dist_type for i in
-                               range(Discrepancy.ExpDesign.ndim)):
-                            logprior[i] = 0.0
-                        else:
-                            logprior[i] += np.log(
-                                disc_prior_space.pdf(theta[i, -n_sigma2:])
-                                )
-
-        if nsamples == 1:
-            return logprior[0]
-        else:
-            return logprior
-
-    # -------------------------------------------------------------------------
-    def log_likelihood(self, theta):
-        """
-        Computes likelihood \\( p(\\mathcal{Y}|\\theta)\\) of the performance
-        of the (meta-)model in reproducing the observation data.
-
-        Parameters
-        ----------
-        theta : array of shape (n_samples, n_params)
-            Parameter set, i.e. proposals of the MCMC chains.
-
-        Returns
-        -------
-        log_like : array of shape (n_samples)
-            Log likelihood.
-
-        """
-
-        BayesOpts = self.BayesOpts
-        MetaModel = BayesOpts.MetaModel
-        Discrepancy = self.BayesOpts.Discrepancy
-
-        # Find the number of sigma2 parameters
-        if Discrepancy.opt_sigma != 'B':
-            disc_bound_tuples = Discrepancy.ExpDesign.bound_tuples
-            n_sigma2 = len(disc_bound_tuples)
-        else:
-            n_sigma2 = -len(theta)
-        # Check if bias term needs to be inferred
-        if Discrepancy.opt_sigma != 'B':
-            sigma2 = theta[:, -n_sigma2:]
-            theta = theta[:, :-n_sigma2]
-        else:
-            sigma2 = None
-        theta = theta if theta.ndim != 1 else theta.reshape((1, -1))
-
-        # Evaluate Model/MetaModel at theta
-        mean_pred, BayesOpts._std_pce_prior_pred = self.eval_model(theta)
-
-        # Surrogate model's error using RMSE of test data
-        surrError = MetaModel.rmse if hasattr(MetaModel, 'rmse') else None
-
-        # Likelihood
-        log_like = BayesOpts.normpdf(
-            mean_pred, self.observation, self.total_sigma2, sigma2,
-            std=surrError
-            )
-        return log_like
-
-    # -------------------------------------------------------------------------
-    def log_posterior(self, theta):
-        """
-        Computes the posterior likelihood \\(p(\\theta| \\mathcal{Y})\\) for
-        the given parameterset.
-
-        Parameters
-        ----------
-        theta : array of shape (n_samples, n_params)
-            Parameter set, i.e. proposals of the MCMC chains.
-
-        Returns
-        -------
-        log_like : array of shape (n_samples)
-            Log posterior likelihood.
-
-        """
-
-        nsamples = 1 if theta.ndim == 1 else theta.shape[0]
-
-        if nsamples == 1:
-            if self.log_prior(theta) == -np.inf:
-                return -np.inf
-            else:
-                # Compute log prior
-                log_prior = self.log_prior(theta)
-                # Compute log Likelihood
-                log_likelihood = self.log_likelihood(theta)
-
-                return log_prior + log_likelihood
-        else:
-            # Compute log prior
-            log_prior = self.log_prior(theta)
-
-            # Initialize log_likelihood
-            log_likelihood = -np.inf*np.ones(nsamples)
-
-            # find the indices for -inf sets
-            non_inf_idx = np.where(log_prior != -np.inf)[0]
-
-            # Compute loLikelihoods
-            if non_inf_idx.size != 0:
-                log_likelihood[non_inf_idx] = self.log_likelihood(
-                    theta[non_inf_idx]
-                    )
-
-            return log_prior + log_likelihood
-
-    # -------------------------------------------------------------------------
-    def eval_model(self, theta):
-        """
-        Evaluates the (meta-) model at the given theta.
-
-        Parameters
-        ----------
-        theta : array of shape (n_samples, n_params)
-            Parameter set, i.e. proposals of the MCMC chains.
-
-        Returns
-        -------
-        mean_pred : dict
-            Mean model prediction.
-        std_pred : dict
-            Std of model prediction.
-
-        """
-
-        BayesObj = self.BayesOpts
-        MetaModel = BayesObj.MetaModel
-        Model = BayesObj.engine.Model
-
-        if BayesObj.emulator:
-            # Evaluate the MetaModel
-            mean_pred, std_pred = MetaModel.eval_metamodel(samples=theta)
-        else:
-            # Evaluate the origModel
-            mean_pred, std_pred = dict(), dict()
-
-            model_outs, _ = Model.run_model_parallel(
-                theta, prevRun_No=self.counter,
-                key_str='_MCMC', mp=False, verbose=False)
-
-            # Save outputs in respective dicts
-            for varIdx, var in enumerate(Model.Output.names):
-                mean_pred[var] = model_outs[var]
-                std_pred[var] = np.zeros((mean_pred[var].shape))
-
-            # Remove the folder
-            if Model.link_type.lower() != 'function':
-                shutil.rmtree(f"{Model.name}_MCMC_{self.counter+1}")
-
-            # Add one to the counter
-            self.counter += 1
-
-        if hasattr(self, 'error_MetaModel') and BayesObj.error_model:
-            meanPred, stdPred = self.error_MetaModel.eval_model_error(
-                BayesObj.BiasInputs, mean_pred
-                )
-
-        return mean_pred, std_pred
-
-    # -------------------------------------------------------------------------
-    def train_error_model(self, sampler):
-        """
-        Trains an error model using a Gaussian Process Regression.
-
-        Parameters
-        ----------
-        sampler : obj
-            emcee sampler.
-
-        Returns
-        -------
-        error_MetaModel : obj
-            A error model.
-
-        """
-        BayesObj = self.BayesOpts
-        MetaModel = BayesObj.MetaModel
-
-        # Prepare the poster samples
-        try:
-            tau = sampler.get_autocorr_time(tol=0)
-        except emcee.autocorr.AutocorrError:
-            tau = 5
-
-        if all(np.isnan(tau)):
-            tau = 5
-
-        burnin = int(2*np.nanmax(tau))
-        thin = int(0.5*np.nanmin(tau)) if int(0.5*np.nanmin(tau)) != 0 else 1
-        finalsamples = sampler.get_chain(discard=burnin, flat=True, thin=thin)
-        posterior = finalsamples[:, :MetaModel.n_params]
-
-        # Select posterior mean as MAP
-        map_theta = posterior.mean(axis=0).reshape((1, MetaModel.n_params))
-        # MAP_theta = st.mode(Posterior_df,axis=0)[0]
-
-        # Evaluate the (meta-)model at the MAP
-        y_map, y_std_map = MetaModel.eval_metamodel(samples=map_theta)
-
-        # Train a GPR meta-model using MAP
-        error_MetaModel = MetaModel.create_model_error(
-            BayesObj.BiasInputs, y_map, name='Calib')
-
-        return error_MetaModel
-
-    # -------------------------------------------------------------------------
-    def gelman_rubin(self, chain, return_var=False):
-        """
-        The potential scale reduction factor (PSRF) defined by the variance
-        within one chain, W, with the variance between chains B.
-        Both variances are combined in a weighted sum to obtain an estimate of
-        the variance of a parameter \\( \\theta \\).The square root of the
-        ratio of this estimates variance to the within chain variance is called
-        the potential scale reduction.
-        For a well converged chain it should approach 1. Values greater than
-        1.1 typically indicate that the chains have not yet fully converged.
-
-        Source: http://joergdietrich.github.io/emcee-convergence.html
-
-        https://github.com/jwalton3141/jwalton3141.github.io/blob/master/assets/posts/ESS/rwmh.py
-
-        Parameters
-        ----------
-        chain : array (n_walkers, n_steps, n_params)
-            The emcee ensamples.
-
-        Returns
-        -------
-        R_hat : float
-            The Gelman-Robin values.
-
-        """
-        m_chains, n_iters = chain.shape[:2]
-
-        # Calculate between-chain variance
-        θb = np.mean(chain, axis=1)
-        θbb = np.mean(θb, axis=0)
-        B_over_n = ((θbb - θb)**2).sum(axis=0)
-        B_over_n /= (m_chains - 1)
-
-        # Calculate within-chain variances
-        ssq = np.var(chain, axis=1, ddof=1)
-        W = np.mean(ssq, axis=0)
-
-        # (over) estimate of variance
-        var_θ = W * (n_iters - 1) / n_iters + B_over_n
-
-        if return_var:
-            return var_θ
-        else:
-            # The square root of the ratio of this estimates variance to the
-            # within chain variance
-            R_hat = np.sqrt(var_θ / W)
-            return R_hat
-
-    # -------------------------------------------------------------------------
-    def marginal_llk_emcee(self, sampler, nburn=None, logp=None, maxiter=1000):
-        """
-        The Bridge Sampling Estimator of the Marginal Likelihood based on
-        https://gist.github.com/junpenglao/4d2669d69ddfe1d788318264cdcf0583
-
-        Parameters
-        ----------
-        sampler : TYPE
-            MultiTrace, result of MCMC run.
-        nburn : int, optional
-            Number of burn-in step. The default is None.
-        logp : TYPE, optional
-            Model Log-probability function. The default is None.
-        maxiter : int, optional
-            Maximum number of iterations. The default is 1000.
-
-        Returns
-        -------
-        marg_llk : dict
-            Estimated Marginal log-Likelihood.
-
-        """
-        r0, tol1, tol2 = 0.5, 1e-10, 1e-4
-
-        if logp is None:
-            logp = sampler.log_prob_fn
-
-        # Split the samples into two parts
-        # Use the first 50% for fiting the proposal distribution
-        # and the second 50% in the iterative scheme.
-        if nburn is None:
-            mtrace = sampler.chain
-        else:
-            mtrace = sampler.chain[:, nburn:, :]
-
-        nchain, len_trace, nrofVars = mtrace.shape
-
-        N1_ = len_trace // 2
-        N1 = N1_*nchain
-        N2 = len_trace*nchain - N1
-
-        samples_4_fit = np.zeros((nrofVars, N1))
-        samples_4_iter = np.zeros((nrofVars, N2))
-        effective_n = np.zeros((nrofVars))
-
-        # matrix with already transformed samples
-        for var in range(nrofVars):
-
-            # for fitting the proposal
-            x = mtrace[:, :N1_, var]
-
-            samples_4_fit[var, :] = x.flatten()
-            # for the iterative scheme
-            x2 = mtrace[:, N1_:, var]
-            samples_4_iter[var, :] = x2.flatten()
-
-            # effective sample size of samples_4_iter, scalar
-            effective_n[var] = self._my_ESS(x2)
-
-        # median effective sample size (scalar)
-        neff = np.median(effective_n)
-
-        # get mean & covariance matrix and generate samples from proposal
-        m = np.mean(samples_4_fit, axis=1)
-        V = np.cov(samples_4_fit)
-        L = chol(V, lower=True)
-
-        # Draw N2 samples from the proposal distribution
-        gen_samples = m[:, None] + np.dot(
-            L, st.norm.rvs(0, 1, size=samples_4_iter.shape)
-            )
-
-        # Evaluate proposal distribution for posterior & generated samples
-        q12 = st.multivariate_normal.logpdf(samples_4_iter.T, m, V)
-        q22 = st.multivariate_normal.logpdf(gen_samples.T, m, V)
-
-        # Evaluate unnormalized posterior for posterior & generated samples
-        q11 = logp(samples_4_iter.T)
-        q21 = logp(gen_samples.T)
-
-        # Run iterative scheme:
-        tmp = self._iterative_scheme(
-            N1, N2, q11, q12, q21, q22, r0, neff, tol1, maxiter, 'r'
-            )
-        if ~np.isfinite(tmp['logml']):
-            warnings.warn(
-                "Logml could not be estimated within maxiter, rerunning with "
-                "adjusted starting value. Estimate might be more variable than"
-                " usual.")
-            # use geometric mean as starting value
-            r0_2 = np.sqrt(tmp['r_vals'][-2]*tmp['r_vals'][-1])
-            tmp = self._iterative_scheme(
-                q11, q12, q21, q22, r0_2, neff, tol2, maxiter, 'logml'
-                )
-
-        marg_llk = dict(
-            logml=tmp['logml'], niter=tmp['niter'], method="normal",
-            q11=q11, q12=q12, q21=q21, q22=q22
-            )
-        return marg_llk
-
-    # -------------------------------------------------------------------------
-    def _iterative_scheme(self, N1, N2, q11, q12, q21, q22, r0, neff, tol,
-                          maxiter, criterion):
-        """
-        Iterative scheme as proposed in Meng and Wong (1996) to estimate the
-        marginal likelihood
-
-        """
-        l1 = q11 - q12
-        l2 = q21 - q22
-        # To increase numerical stability,
-        # subtracting the median of l1 from l1 & l2 later
-        lstar = np.median(l1)
-        s1 = neff/(neff + N2)
-        s2 = N2/(neff + N2)
-        r = r0
-        r_vals = [r]
-        logml = np.log(r) + lstar
-        criterion_val = 1 + tol
-
-        i = 0
-        while (i <= maxiter) & (criterion_val > tol):
-            rold = r
-            logmlold = logml
-            numi = np.exp(l2 - lstar)/(s1 * np.exp(l2 - lstar) + s2 * r)
-            deni = 1/(s1 * np.exp(l1 - lstar) + s2 * r)
-            if np.sum(~np.isfinite(numi))+np.sum(~np.isfinite(deni)) > 0:
-                warnings.warn(
-                    """Infinite value in iterative scheme, returning NaN.
-                     Try rerunning with more samples.""")
-            r = (N1/N2) * np.sum(numi)/np.sum(deni)
-            r_vals.append(r)
-            logml = np.log(r) + lstar
-            i += 1
-            if criterion == 'r':
-                criterion_val = np.abs((r - rold)/r)
-            elif criterion == 'logml':
-                criterion_val = np.abs((logml - logmlold)/logml)
-
-        if i >= maxiter:
-            return dict(logml=np.NaN, niter=i, r_vals=np.asarray(r_vals))
-        else:
-            return dict(logml=logml, niter=i)
-
-    # -------------------------------------------------------------------------
-    def _my_ESS(self, x):
-        """
-        Compute the effective sample size of estimand of interest.
-        Vectorised implementation.
-        https://github.com/jwalton3141/jwalton3141.github.io/blob/master/assets/posts/ESS/rwmh.py
-
-
-        Parameters
-        ----------
-        x : array of shape (n_walkers, n_steps)
-            MCMC Samples.
-
-        Returns
-        -------
-        int
-            Effective sample size.
-
-        """
-        m_chains, n_iters = x.shape
-
-        def variogram(t):
-            variogram = ((x[:, t:] - x[:, :(n_iters - t)])**2).sum()
-            variogram /= (m_chains * (n_iters - t))
-            return variogram
-
-        post_var = self.gelman_rubin(x, return_var=True)
-
-        t = 1
-        rho = np.ones(n_iters)
-        negative_autocorr = False
-
-        # Iterate until the sum of consecutive estimates of autocorrelation is
-        # negative
-        while not negative_autocorr and (t < n_iters):
-            rho[t] = 1 - variogram(t) / (2 * post_var)
-
-            if not t % 2:
-                negative_autocorr = sum(rho[t-1:t+1]) < 0
-
-            t += 1
-
-        return int(m_chains*n_iters / (1 + 2*rho[1:t].sum()))
-
-    # -------------------------------------------------------------------------
-    def _check_ranges(self, theta, ranges):
-        """
-        This function checks if theta lies in the given ranges.
-
-        Parameters
-        ----------
-        theta : array
-            Proposed parameter set.
-        ranges : nested list
-            List of the praremeter ranges.
-
-        Returns
-        -------
-        c : bool
-            If it lies in the given range, it return True else False.
-
-        """
-        c = True
-        # traverse in the list1
-        for i, bounds in enumerate(ranges):
-            x = theta[i]
-            # condition check
-            if x < bounds[0] or x > bounds[1]:
-                c = False
-                return c
-        return c
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayesvalidrox.mplstyle b/examples/umbridge_tsunamitutorial/bayesvalidrox/bayesvalidrox.mplstyle
deleted file mode 100644
index 1f31c01f2..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/bayesvalidrox.mplstyle
+++ /dev/null
@@ -1,16 +0,0 @@
-figure.titlesize : 30
-axes.titlesize : 30
-axes.labelsize : 30
-axes.linewidth : 3
-axes.grid : True
-lines.linewidth : 3
-lines.markersize : 10
-xtick.labelsize : 30
-ytick.labelsize : 30
-legend.fontsize : 30
-font.family : serif
-font.serif : Arial
-font.size : 30
-text.usetex : True
-grid.linestyle : -
-figure.figsize : 24, 16
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__init__.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__init__.py
deleted file mode 100644
index 81c982542..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from .post_processing import PostProcessing
-
-__all__ = [
-    "PostProcessing"
-    ]
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/__init__.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index c8590a242166b2e8d40de7ee2eece71980bd1571..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 261
zcmZ8bu};G<5Vf5GRYl8y)IVUz!u<fM7!d7*A|aM6CpWel3nz|z4z!=dFJ)!o7g*rZ
ziSnd-r+4q2?!tUN6O76AjZNG?NAVYm#XT1-nT#;fi$<1G3Zr(iR3>{C`Q%Honag2O
z1WH8=l_hfRE{@Ajc{W^iJjd?T7%mXC_lO@No^kL<-z79{f(l;9MuPYnYF}$j@DQrL
zv27w)yR_-I@aV&Pp;HZ8eX#VVy)!ZF;ol`dbgfH>x7}fw-ZjDW-mb=X>740Oscic5
E3kw-WVE_OC

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/__init__.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index 9d21ad3c9193151d5353eea7e29d38f3b43e4b39..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 295
zcmZ3^%ge<81T4a;sU<-AF^B^LOi;#W2_R!SLkdF*V-7<uV-zDJLkd$mV-!;gb1;J@
z%S%R}v?k*%zJUDVl7OQ8<kaHg%)Im>W}vX2Ci5-+0-$(&0jk6;_W1b3oSgXhl?<Oj
z*8B={wu%WYPAw{qDay{z$jL}dERJ!>PcF?(%_}L6anCIAC{2oS%gHYfNG!>SNlL6t
zEiOyU$xJEAuZTgjASOOOGcU6wK3=b&@)w6qZhlH>PO4oIC(s&@Q;Ri$#0O?ZM#c|p
d42(J#7_^ZQP>fad12YphTLU`?7O?|W0{}&mQW5|F

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/__init__.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index 58a0eb24635d0b97a14d13708e616de6a0659976..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 326
zcmZ9G&q@O^5XO_;ibbs6e1|=xP{fOf2=(GYS&#)Ofsk&pH8lT7Hl_9IbNB$hg4e#q
zUOo8=UUarz)Pea8Gv7DE@X_c1K|H^0g@O9sH@_o;<_a>N00a_PBZFrcBatoeEED-X
zDh3}I!~%CmrHgGDTrFc%b`kpJyCUz7J<OT^D|GveajhA9MPUz&JAA%O&uJB9h&0Hh
zn^2KVTK|w3Wo6)6J@HmKOB%`B6ePKsmgKs+tsYLtXLO#F7Nj<ODJl0}Q&oE^0mL-4
zQI_i<W72J0O&(eA3dzzr-^jRv%Obcn{r4<oOj*@3HujrtcwwAKT3+VxaU1{+^X%&z
DlmueV

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-310.pyc
deleted file mode 100644
index 0924d8afac04d4fe82ebe791bc55a8ae48d7c117..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 28679
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-311.pyc
deleted file mode 100644
index 2922ed407a89b026bf4d9e031464e011a7ad4a9b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 58838
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
C=CgqS

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/__pycache__/post_processing.cpython-39.pyc
deleted file mode 100644
index 312575d7655db85df423489051f494f3dce62692..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 28771
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/post_processing.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/post_processing.py
deleted file mode 100644
index 6520a40f9..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/post_processing/post_processing.py
+++ /dev/null
@@ -1,1338 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import numpy as np
-import math
-import os
-from itertools import combinations, cycle
-import pandas as pd
-import scipy.stats as stats
-from sklearn.linear_model import LinearRegression
-from sklearn.metrics import mean_squared_error, r2_score
-import matplotlib.pyplot as plt
-import matplotlib.ticker as ticker
-from matplotlib.offsetbox import AnchoredText
-from matplotlib.patches import Patch
-# Load the mplstyle
-plt.style.use(os.path.join(os.path.split(__file__)[0],
-                           '../', 'bayesvalidrox.mplstyle'))
-
-
-class PostProcessing:
-    """
-    This class provides many helper functions to post-process the trained
-    meta-model.
-
-    Attributes
-    ----------
-    MetaModel : obj
-        MetaModel object to do postprocessing on.
-    name : str
-        Type of the anaylsis. The default is `'calib'`. If a validation is
-        expected to be performed change this to `'valid'`.
-    """
-
-    def __init__(self, engine, name='calib'):
-        self.engine = engine
-        self.MetaModel = engine.MetaModel
-        self.ExpDesign = engine.ExpDesign
-        self.ModelObj = engine.Model
-        self.name = name
-
-    # -------------------------------------------------------------------------
-    def plot_moments(self, xlabel='Time [s]', plot_type=None):
-        """
-        Plots the moments in a pdf format in the directory
-        `Outputs_PostProcessing`.
-
-        Parameters
-        ----------
-        xlabel : str, optional
-            String to be displayed as x-label. The default is `'Time [s]'`.
-        plot_type : str, optional
-            Options: bar or line. The default is `None`.
-
-        Returns
-        -------
-        pce_means: dict
-            Mean of the model outputs.
-        pce_means: dict
-            Standard deviation of the model outputs.
-
-        """
-
-        bar_plot = True if plot_type == 'bar' else False
-        meta_model_type = self.MetaModel.meta_model_type
-        Model = self.ModelObj
-
-        # Read Monte-Carlo reference
-        self.mc_reference = Model.read_observation('mc_ref')
-
-        # Set the x values
-        x_values_orig = self.engine.ExpDesign.x_values
-
-        # Compute the moments with the PCEModel object
-        self.pce_means, self.pce_stds = self.compute_pce_moments()
-
-        # Get the variables
-        out_names = Model.Output.names
-
-        # Open a pdf for the plots
-        newpath = (f'Outputs_PostProcessing_{self.name}/')
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        # Plot the best fit line, set the linewidth (lw), color and
-        # transparency (alpha) of the line
-        for key in out_names:
-            fig, ax = plt.subplots(nrows=1, ncols=2)
-
-            # Extract mean and std
-            mean_data = self.pce_means[key]
-            std_data = self.pce_stds[key]
-
-            # Extract a list of x values
-            if type(x_values_orig) is dict:
-                x = x_values_orig[key]
-            else:
-                x = x_values_orig
-
-            # Plot: bar plot or line plot
-            if bar_plot:
-                ax[0].bar(list(map(str, x)), mean_data, color='b',
-                          width=0.25)
-                ax[1].bar(list(map(str, x)), std_data, color='b',
-                          width=0.25)
-                ax[0].legend(labels=[meta_model_type])
-                ax[1].legend(labels=[meta_model_type])
-            else:
-                ax[0].plot(x, mean_data, lw=3, color='k', marker='x',
-                           label=meta_model_type)
-                ax[1].plot(x, std_data, lw=3, color='k', marker='x',
-                           label=meta_model_type)
-
-            if self.mc_reference is not None:
-                if bar_plot:
-                    ax[0].bar(list(map(str, x)), self.mc_reference['mean'],
-                              color='r', width=0.25)
-                    ax[1].bar(list(map(str, x)), self.mc_reference['std'],
-                              color='r', width=0.25)
-                    ax[0].legend(labels=[meta_model_type])
-                    ax[1].legend(labels=[meta_model_type])
-                else:
-                    ax[0].plot(x, self.mc_reference['mean'], lw=3, marker='x',
-                               color='r', label='Ref.')
-                    ax[1].plot(x, self.mc_reference['std'], lw=3, marker='x',
-                               color='r', label='Ref.')
-
-            # Label the axes and provide a title
-            ax[0].set_xlabel(xlabel)
-            ax[1].set_xlabel(xlabel)
-            ax[0].set_ylabel(key)
-            ax[1].set_ylabel(key)
-
-            # Provide a title
-            ax[0].set_title('Mean of ' + key)
-            ax[1].set_title('Std of ' + key)
-
-            if not bar_plot:
-                ax[0].legend(loc='best')
-                ax[1].legend(loc='best')
-
-            plt.tight_layout()
-
-            # save the current figure
-            fig.savefig(
-                f'./{newpath}Mean_Std_PCE_{key}.pdf',
-                bbox_inches='tight'
-                )
-
-        return self.pce_means, self.pce_stds
-
-    # -------------------------------------------------------------------------
-    def valid_metamodel(self, n_samples=1, samples=None, model_out_dict=None,
-                        x_axis='Time [s]'):
-        """
-        Evaluates and plots the meta model and the PCEModel outputs for the
-        given number of samples or the given samples.
-
-        Parameters
-        ----------
-        n_samples : int, optional
-            Number of samples to be evaluated. The default is 1.
-        samples : array of shape (n_samples, n_params), optional
-            Samples to be evaluated. The default is None.
-        model_out_dict: dict
-            The model runs using the samples provided.
-        x_axis : str, optional
-            Label of x axis. The default is `'Time [s]'`.
-
-        Returns
-        -------
-        None.
-
-        """
-        MetaModel = self.MetaModel
-        Model = self.ModelObj
-
-        if samples is None:
-            self.n_samples = n_samples
-            samples = self._get_sample()
-        else:
-            self.n_samples = samples.shape[0]
-
-        # Extract x_values
-        x_values = self.engine.ExpDesign.x_values
-
-        if model_out_dict is not None:
-            self.model_out_dict = model_out_dict
-        else:
-            self.model_out_dict = self._eval_model(samples, key_str='valid')
-        self.pce_out_mean, self.pce_out_std = MetaModel.eval_metamodel(samples)
-
-        try:
-            key = Model.Output.names[1]
-        except IndexError:
-            key = Model.Output.names[0]
-
-        n_obs = self.model_out_dict[key].shape[1]
-
-        if n_obs == 1:
-            self._plot_validation()
-        else:
-            self._plot_validation_multi(x_values=x_values, x_axis=x_axis)
-
-    # -------------------------------------------------------------------------
-    def check_accuracy(self, n_samples=None, samples=None, outputs=None):
-        """
-        Checks accuracy of the metamodel by computing the root mean square
-        error and validation error for all outputs.
-
-        Parameters
-        ----------
-        n_samples : int, optional
-            Number of samples. The default is None.
-        samples : array of shape (n_samples, n_params), optional
-            Parameter sets to be checked. The default is None.
-        outputs : dict, optional
-            Output dictionary with model outputs for all given output types in
-            `Model.Output.names`. The default is None.
-
-        Raises
-        ------
-        Exception
-            When neither n_samples nor samples are provided.
-
-        Returns
-        -------
-        rmse: dict
-            Root mean squared error for each output.
-        valid_error : dict
-            Validation error for each output.
-
-        """
-        MetaModel = self.MetaModel
-        Model = self.ModelObj
-
-        # Set the number of samples
-        if n_samples:
-            self.n_samples = n_samples
-        elif samples is not None:
-            self.n_samples = samples.shape[0]
-        else:
-            raise Exception("Please provide either samples or pass the number"
-                            " of samples!")
-
-        # Generate random samples if necessary
-        Samples = self._get_sample() if samples is None else samples
-
-        # Run the original model with the generated samples
-        if outputs is None:
-            outputs = self._eval_model(Samples, key_str='validSet')
-
-        # Run the PCE model with the generated samples
-        pce_outputs, _ = MetaModel.eval_metamodel(samples=Samples)
-
-        self.rmse = {}
-        self.valid_error = {}
-        # Loop over the keys and compute RMSE error.
-        for key in Model.Output.names:
-            # Root mena square
-            self.rmse[key] = mean_squared_error(outputs[key], pce_outputs[key],
-                                                squared=False,
-                                                multioutput='raw_values')
-            # Validation error
-            self.valid_error[key] = (self.rmse[key]**2) / \
-                np.var(outputs[key], ddof=1, axis=0)
-
-            # Print a report table
-            print("\n>>>>> Errors of {} <<<<<".format(key))
-            print("\nIndex  |  RMSE   |  Validation Error")
-            print('-'*35)
-            print('\n'.join(f'{i+1}  |  {k:.3e}  |  {j:.3e}' for i, (k, j)
-                            in enumerate(zip(self.rmse[key],
-                                             self.valid_error[key]))))
-        # Save error dicts in PCEModel object
-        self.MetaModel.rmse = self.rmse
-        self.MetaModel.valid_error = self.valid_error
-
-        return
-
-    # -------------------------------------------------------------------------
-    def plot_seq_design_diagnostics(self, ref_BME_KLD=None):
-        """
-        Plots the Bayesian Model Evidence (BME) and Kullback-Leibler divergence
-        (KLD) for the sequential design.
-
-        Parameters
-        ----------
-        ref_BME_KLD : array, optional
-            Reference BME and KLD . The default is `None`.
-
-        Returns
-        -------
-        None.
-
-        """
-        engine = self.engine
-        PCEModel = self.MetaModel
-        n_init_samples = engine.ExpDesign.n_init_samples
-        n_total_samples = engine.ExpDesign.X.shape[0]
-
-        newpath = f'Outputs_PostProcessing_{self.name}/seq_design_diagnostics/'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        plotList = ['Modified LOO error', 'Validation error', 'KLD', 'BME',
-                    'RMSEMean', 'RMSEStd', 'Hellinger distance']
-        seqList = [engine.SeqModifiedLOO, engine.seqValidError,
-                   engine.SeqKLD, engine.SeqBME, engine.seqRMSEMean,
-                   engine.seqRMSEStd, engine.SeqDistHellinger]
-
-        markers = ('x', 'o', 'd', '*', '+')
-        colors = ('k', 'darkgreen', 'b', 'navy', 'darkred')
-
-        # Plot the evolution of the diagnostic criteria of the
-        # Sequential Experimental Design.
-        for plotidx, plot in enumerate(plotList):
-            fig, ax = plt.subplots()
-            seq_dict = seqList[plotidx]
-            name_util = list(seq_dict.keys())
-
-            if len(name_util) == 0:
-                continue
-
-            # Box plot when Replications have been detected.
-            if any(int(name.split("rep_", 1)[1]) > 1 for name in name_util):
-                # Extract the values from dict
-                sorted_seq_opt = {}
-                # Number of replications
-                n_reps = engine.ExpDesign.n_replication
-
-                # Get the list of utility function names
-                # Handle if only one UtilityFunction is provided
-                if not isinstance(engine.ExpDesign.util_func, list):
-                    util_funcs = [engine.ExpDesign.util_func]
-                else:
-                    util_funcs = engine.ExpDesign.util_func
-
-                for util in util_funcs:
-                    sortedSeq = {}
-                    # min number of runs available from reps
-                    n_runs = min([seq_dict[f'{util}_rep_{i+1}'].shape[0]
-                                 for i in range(n_reps)])
-
-                    for runIdx in range(n_runs):
-                        values = []
-                        for key in seq_dict.keys():
-                            if util in key:
-                                values.append(seq_dict[key][runIdx].mean())
-                        sortedSeq['SeqItr_'+str(runIdx)] = np.array(values)
-                    sorted_seq_opt[util] = sortedSeq
-
-                # BoxPlot
-                def draw_plot(data, labels, edge_color, fill_color, idx):
-                    pos = labels - (idx-1)
-                    bp = plt.boxplot(data, positions=pos, labels=labels,
-                                     patch_artist=True, sym='', widths=0.75)
-                    elements = ['boxes', 'whiskers', 'fliers', 'means',
-                                'medians', 'caps']
-                    for element in elements:
-                        plt.setp(bp[element], color=edge_color[idx])
-
-                    for patch in bp['boxes']:
-                        patch.set(facecolor=fill_color[idx])
-
-                if engine.ExpDesign.n_new_samples != 1:
-                    step1 = engine.ExpDesign.n_new_samples
-                    step2 = 1
-                else:
-                    step1 = 5
-                    step2 = 5
-                edge_color = ['red', 'blue', 'green']
-                fill_color = ['tan', 'cyan', 'lightgreen']
-                plot_label = plot
-                # Plot for different Utility Functions
-                for idx, util in enumerate(util_funcs):
-                    all_errors = np.empty((n_reps, 0))
-
-                    for key in list(sorted_seq_opt[util].keys()):
-                        errors = sorted_seq_opt.get(util, {}).get(key)[:, None]
-                        all_errors = np.hstack((all_errors, errors))
-
-                    # Special cases for BME and KLD
-                    if plot == 'KLD' or plot == 'BME':
-                        # BME convergence if refBME is provided
-                        if ref_BME_KLD is not None:
-                            if plot == 'BME':
-                                refValue = ref_BME_KLD[0]
-                                plot_label = r'BME/BME$^{Ref.}$'
-                            if plot == 'KLD':
-                                refValue = ref_BME_KLD[1]
-                                plot_label = '$D_{KL}[p(\\theta|y_*),p(\\theta)]'\
-                                    ' / D_{KL}^{Ref.}[p(\\theta|y_*), '\
-                                    'p(\\theta)]$'
-
-                            # Difference between BME/KLD and the ref. values
-                            all_errors = np.divide(all_errors,
-                                                   np.full((all_errors.shape),
-                                                           refValue))
-
-                            # Plot baseline for zero, i.e. no difference
-                            plt.axhline(y=1.0, xmin=0, xmax=1, c='green',
-                                        ls='--', lw=2)
-
-                    # Plot each UtilFuncs
-                    labels = np.arange(n_init_samples, n_total_samples+1, step1)
-                    draw_plot(all_errors[:, ::step2], labels, edge_color,
-                              fill_color, idx)
-
-                plt.xticks(labels, labels)
-                # Set the major and minor locators
-                ax.xaxis.set_major_locator(ticker.AutoLocator())
-                ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())
-                ax.xaxis.grid(True, which='major', linestyle='-')
-                ax.xaxis.grid(True, which='minor', linestyle='--')
-
-                # Legend
-                legend_elements = []
-                for idx, util in enumerate(util_funcs):
-                    legend_elements.append(Patch(facecolor=fill_color[idx],
-                                                 edgecolor=edge_color[idx],
-                                                 label=util))
-                plt.legend(handles=legend_elements[::-1], loc='best')
-
-                if plot != 'BME' and plot != 'KLD':
-                    plt.yscale('log')
-                plt.autoscale(True)
-                plt.xlabel('\\# of training samples')
-                plt.ylabel(plot_label)
-                plt.title(plot)
-
-                # save the current figure
-                plot_name = plot.replace(' ', '_')
-                fig.savefig(
-                    f'./{newpath}/seq_{plot_name}.pdf',
-                    bbox_inches='tight'
-                    )
-                # Destroy the current plot
-                plt.clf()
-                # Save arrays into files
-                f = open(f'./{newpath}/seq_{plot_name}.txt', 'w')
-                f.write(str(sorted_seq_opt))
-                f.close()
-            else:
-                for idx, name in enumerate(name_util):
-                    seq_values = seq_dict[name]
-                    if engine.ExpDesign.n_new_samples != 1:
-                        step = engine.ExpDesign.n_new_samples
-                    else:
-                        step = 1
-                    x_idx = np.arange(n_init_samples, n_total_samples+1, step)
-                    if n_total_samples not in x_idx:
-                        x_idx = np.hstack((x_idx, n_total_samples))
-
-                    if plot == 'KLD' or plot == 'BME':
-                        # BME convergence if refBME is provided
-                        if ref_BME_KLD is not None:
-                            if plot == 'BME':
-                                refValue = ref_BME_KLD[0]
-                                plot_label = r'BME/BME$^{Ref.}$'
-                            if plot == 'KLD':
-                                refValue = ref_BME_KLD[1]
-                                plot_label = '$D_{KL}[p(\\theta|y_*),p(\\theta)]'\
-                                    ' / D_{KL}^{Ref.}[p(\\theta|y_*), '\
-                                    'p(\\theta)]$'
-
-                            # Difference between BME/KLD and the ref. values
-                            values = np.divide(seq_values,
-                                               np.full((seq_values.shape),
-                                                       refValue))
-
-                            # Plot baseline for zero, i.e. no difference
-                            plt.axhline(y=1.0, xmin=0, xmax=1, c='green',
-                                        ls='--', lw=2)
-
-                            # Set the limits
-                            plt.ylim([1e-1, 1e1])
-
-                            # Create the plots
-                            plt.semilogy(x_idx, values, marker=markers[idx],
-                                         color=colors[idx], ls='--', lw=2,
-                                         label=name.split("_rep", 1)[0])
-                        else:
-                            plot_label = plot
-
-                            # Create the plots
-                            plt.plot(x_idx, seq_values, marker=markers[idx],
-                                     color=colors[idx], ls='--', lw=2,
-                                     label=name.split("_rep", 1)[0])
-
-                    else:
-                        plot_label = plot
-                        seq_values = np.nan_to_num(seq_values)
-
-                        # Plot the error evolution for each output
-                        plt.semilogy(x_idx, seq_values.mean(axis=1),
-                                     marker=markers[idx], ls='--', lw=2,
-                                     color=colors[idx],
-                                     label=name.split("_rep", 1)[0])
-
-                # Set the major and minor locators
-                ax.xaxis.set_major_locator(ticker.AutoLocator())
-                ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())
-                ax.xaxis.grid(True, which='major', linestyle='-')
-                ax.xaxis.grid(True, which='minor', linestyle='--')
-
-                ax.tick_params(axis='both', which='major', direction='in',
-                               width=3, length=10)
-                ax.tick_params(axis='both', which='minor', direction='in',
-                               width=2, length=8)
-                plt.xlabel('Number of runs')
-                plt.ylabel(plot_label)
-                plt.title(plot)
-                plt.legend(frameon=True)
-
-                # save the current figure
-                plot_name = plot.replace(' ', '_')
-                fig.savefig(
-                    f'./{newpath}/seq_{plot_name}.pdf',
-                    bbox_inches='tight'
-                    )
-                # Destroy the current plot
-                plt.clf()
-
-                # ---------------- Saving arrays into files ---------------
-                np.save(f'./{newpath}/seq_{plot_name}.npy', seq_values)
-
-        return
-
-    # -------------------------------------------------------------------------
-    def sobol_indices(self, xlabel='Time [s]', plot_type=None):
-        """
-        Provides Sobol indices as a sensitivity measure to infer the importance
-        of the input parameters. See Eq. 27 in [1] for more details. For the
-        case with Principal component analysis refer to [2].
-
-        [1] Global sensitivity analysis: A flexible and efficient framework
-        with an example from stochastic hydrogeology S. Oladyshkin, F.P.
-        de Barros, W. Nowak  https://doi.org/10.1016/j.advwatres.2011.11.001
-
-        [2] Nagel, J.B., Rieckermann, J. and Sudret, B., 2020. Principal
-        component analysis and sparse polynomial chaos expansions for global
-        sensitivity analysis and model calibration: Application to urban
-        drainage simulation. Reliability Engineering & System Safety, 195,
-        p.106737.
-
-        Parameters
-        ----------
-        xlabel : str, optional
-            Label of the x-axis. The default is `'Time [s]'`.
-        plot_type : str, optional
-            Plot type. The default is `None`. This corresponds to line plot.
-            Bar chart can be selected by `bar`.
-
-        Returns
-        -------
-        sobol_cell: dict
-            Sobol indices.
-        total_sobol: dict
-            Total Sobol indices.
-
-        """
-        # Extract the necessary variables
-        PCEModel = self.MetaModel
-        basis_dict = PCEModel.basis_dict
-        coeffs_dict = PCEModel.coeffs_dict
-        n_params = PCEModel.n_params
-        max_order = np.max(PCEModel.pce_deg)
-        sobol_cell_b = {}
-        total_sobol_b = {}
-        cov_Z_p_q = np.zeros((n_params))
-
-        for b_i in range(PCEModel.n_bootstrap_itrs):
-
-            sobol_cell_, total_sobol_ = {}, {}
-
-            for output in self.ModelObj.Output.names:
-
-                n_meas_points = len(coeffs_dict[f'b_{b_i+1}'][output])
-
-                # Initialize the (cell) array containing the (total) Sobol indices.
-                sobol_array = dict.fromkeys(range(1, max_order+1), [])
-                sobol_cell_array = dict.fromkeys(range(1, max_order+1), [])
-
-                for i_order in range(1, max_order+1):
-                    n_comb = math.comb(n_params, i_order)
-
-                    sobol_cell_array[i_order] = np.zeros((n_comb, n_meas_points))
-
-                total_sobol_array = np.zeros((n_params, n_meas_points))
-
-                # Initialize the cell to store the names of the variables
-                TotalVariance = np.zeros((n_meas_points))
-                # Loop over all measurement points and calculate sobol indices
-                for pIdx in range(n_meas_points):
-
-                    # Extract the basis indices (alpha) and coefficients
-                    Basis = basis_dict[f'b_{b_i+1}'][output][f'y_{pIdx+1}']
-
-                    try:
-                        clf_poly = PCEModel.clf_poly[f'b_{b_i+1}'][output][f'y_{pIdx+1}']
-                        PCECoeffs = clf_poly.coef_
-                    except:
-                        PCECoeffs = coeffs_dict[f'b_{b_i+1}'][output][f'y_{pIdx+1}']
-
-                    # Compute total variance
-                    TotalVariance[pIdx] = np.sum(np.square(PCECoeffs[1:]))
-
-                    nzidx = np.where(PCECoeffs != 0)[0]
-                    # Set all the Sobol indices equal to zero in the presence of a
-                    # null output.
-                    if len(nzidx) == 0:
-                        # This is buggy.
-                        for i_order in range(1, max_order+1):
-                            sobol_cell_array[i_order][:, pIdx] = 0
-
-                    # Otherwise compute them by summing well-chosen coefficients
-                    else:
-                        nz_basis = Basis[nzidx]
-                        for i_order in range(1, max_order+1):
-                            idx = np.where(np.sum(nz_basis > 0, axis=1) == i_order)
-                            subbasis = nz_basis[idx]
-                            Z = np.array(list(combinations(range(n_params), i_order)))
-
-                            for q in range(Z.shape[0]):
-                                Zq = Z[q]
-                                subsubbasis = subbasis[:, Zq]
-                                subidx = np.prod(subsubbasis, axis=1) > 0
-                                sum_ind = nzidx[idx[0][subidx]]
-                                if TotalVariance[pIdx] == 0.0:
-                                    sobol_cell_array[i_order][q, pIdx] = 0.0
-                                else:
-                                    sobol = np.sum(np.square(PCECoeffs[sum_ind]))
-                                    sobol /= TotalVariance[pIdx]
-                                    sobol_cell_array[i_order][q, pIdx] = sobol
-
-                        # Compute the TOTAL Sobol indices.
-                        for ParIdx in range(n_params):
-                            idx = nz_basis[:, ParIdx] > 0
-                            sum_ind = nzidx[idx]
-
-                            if TotalVariance[pIdx] == 0.0:
-                                total_sobol_array[ParIdx, pIdx] = 0.0
-                            else:
-                                sobol = np.sum(np.square(PCECoeffs[sum_ind]))
-                                sobol /= TotalVariance[pIdx]
-                                total_sobol_array[ParIdx, pIdx] = sobol
-
-                    # ----- if PCA selected: Compute covariance -----
-                    if PCEModel.dim_red_method.lower() == 'pca':
-                        # Extract the basis indices (alpha) and coefficients for
-                        # next component
-                        if pIdx < n_meas_points-1:
-                            nextBasis = basis_dict[f'b_{b_i+1}'][output][f'y_{pIdx+2}']
-                            if PCEModel.bootstrap_method != 'fast' or b_i == 0:
-                                clf_poly = PCEModel.clf_poly[f'b_{b_i+1}'][output][f'y_{pIdx+2}']
-                                nextPCECoeffs = clf_poly.coef_
-                            else:
-                                nextPCECoeffs = coeffs_dict[f'b_{b_i+1}'][output][f'y_{pIdx+2}']
-
-                            # Choose the common non-zero basis
-                            mask = (Basis[:, None] == nextBasis).all(-1).any(-1)
-                            n_mask = (nextBasis[:, None] == Basis).all(-1).any(-1)
-
-                            # Compute the covariance in Eq 17.
-                            for ParIdx in range(n_params):
-                                idx = (mask) & (Basis[:, ParIdx] > 0)
-                                n_idx = (n_mask) & (nextBasis[:, ParIdx] > 0)
-                                try:
-                                    cov_Z_p_q[ParIdx] += np.sum(np.dot(
-                                        PCECoeffs[idx], nextPCECoeffs[n_idx])
-                                        )
-                                except:
-                                    pass
-
-                # Compute the sobol indices according to Ref. 2
-                if PCEModel.dim_red_method.lower() == 'pca':
-                    n_c_points = self.engine.ExpDesign.Y[output].shape[1]
-                    PCA = PCEModel.pca[f'b_{b_i+1}'][output]
-                    compPCA = PCA.components_
-                    nComp = compPCA.shape[0]
-                    var_Z_p = PCA.explained_variance_
-
-                    # Extract the sobol index of the components
-                    for i_order in range(1, max_order+1):
-                        n_comb = math.comb(n_params, i_order)
-                        sobol_array[i_order] = np.zeros((n_comb, n_c_points))
-                        Z = np.array(list(combinations(range(n_params), i_order)))
-
-                        # Loop over parameters
-                        for q in range(Z.shape[0]):
-                            S_Z_i = sobol_cell_array[i_order][q]
-
-                            for tIdx in range(n_c_points):
-                                var_Y_t = np.var(
-                                    self.engine.ExpDesign.Y[output][:, tIdx])
-                                if var_Y_t == 0.0:
-                                    term1, term2 = 0.0, 0.0
-                                else:
-                                    # Eq. 17
-                                    term1 = 0.0
-                                    for i in range(nComp):
-                                        a = S_Z_i[i] * var_Z_p[i]
-                                        a *= compPCA[i, tIdx]**2
-                                        term1 += a
-
-                                    # TODO: Term 2
-                                    # term2 = 0.0
-                                    # for i in range(nComp-1):
-                                    #     term2 += cov_Z_p_q[q] * compPCA[i, tIdx]
-                                    #     term2 *= compPCA[i+1, tIdx]
-                                    # term2 *= 2
-
-                                sobol_array[i_order][q, tIdx] = term1 #+ term2
-
-                                # Devide over total output variance Eq. 18
-                                sobol_array[i_order][q, tIdx] /= var_Y_t
-
-                    # Compute the TOTAL Sobol indices.
-                    total_sobol = np.zeros((n_params, n_c_points))
-                    for ParIdx in range(n_params):
-                        S_Z_i = total_sobol_array[ParIdx]
-
-                        for tIdx in range(n_c_points):
-                            var_Y_t = np.var(self.engine.ExpDesign.Y[output][:, tIdx])
-                            if var_Y_t == 0.0:
-                                term1, term2 = 0.0, 0.0
-                            else:
-                                term1 = 0
-                                for i in range(nComp):
-                                    term1 += S_Z_i[i] * var_Z_p[i] * \
-                                        (compPCA[i, tIdx]**2)
-
-                                # Term 2
-                                term2 = 0
-                                for i in range(nComp-1):
-                                    term2 += cov_Z_p_q[ParIdx] * compPCA[i, tIdx] \
-                                        * compPCA[i+1, tIdx]
-                                term2 *= 2
-
-                            total_sobol[ParIdx, tIdx] = term1 #+ term2
-
-                            # Devide over total output variance Eq. 18
-                            total_sobol[ParIdx, tIdx] /= var_Y_t
-
-                    sobol_cell_[output] = sobol_array
-                    total_sobol_[output] = total_sobol
-                else:
-                    sobol_cell_[output] = sobol_cell_array
-                    total_sobol_[output] = total_sobol_array
-
-            # Save for each bootsrtap iteration
-            sobol_cell_b[b_i] = sobol_cell_
-            total_sobol_b[b_i] = total_sobol_
-
-        # Average total sobol indices
-        total_sobol_all = {}
-        for i in sorted(total_sobol_b):
-            for k, v in total_sobol_b[i].items():
-                if k not in total_sobol_all:
-                    total_sobol_all[k] = [None] * len(total_sobol_b)
-                total_sobol_all[k][i] = v
-
-        self.total_sobol = {}
-        for output in self.ModelObj.Output.names:
-            self.total_sobol[output] = np.mean(total_sobol_all[output], axis=0)
-
-        # ---------------- Plot -----------------------
-        par_names = self.engine.ExpDesign.par_names
-        x_values_orig = self.engine.ExpDesign.x_values
-
-        newpath = (f'Outputs_PostProcessing_{self.name}/')
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        fig = plt.figure()
-
-        for outIdx, output in enumerate(self.ModelObj.Output.names):
-
-            # Extract total Sobol indices
-            total_sobol = self.total_sobol[output]
-
-            # Compute quantiles
-            q_5 = np.quantile(total_sobol_all[output], q=0.05, axis=0)
-            q_97_5 = np.quantile(total_sobol_all[output], q=0.975, axis=0)
-
-            # Extract a list of x values
-            if type(x_values_orig) is dict:
-                x = x_values_orig[output]
-            else:
-                x = x_values_orig
-
-            if plot_type == 'bar':
-                ax = fig.add_axes([0, 0, 1, 1])
-                dict1 = {xlabel: x}
-                dict2 = {param: sobolIndices for param, sobolIndices
-                         in zip(par_names, total_sobol)}
-
-                df = pd.DataFrame({**dict1, **dict2})
-                df.plot(x=xlabel, y=par_names, kind="bar", ax=ax, rot=0,
-                        colormap='Dark2', yerr=q_97_5-q_5)
-                ax.set_ylabel('Total Sobol indices, $S^T$')
-
-            else:
-                for i, sobolIndices in enumerate(total_sobol):
-                    plt.plot(x, sobolIndices, label=par_names[i],
-                             marker='x', lw=2.5)
-                    plt.fill_between(x, q_5[i], q_97_5[i], alpha=0.15)
-
-                plt.ylabel('Total Sobol indices, $S^T$')
-                plt.xlabel(xlabel)
-
-            plt.title(f'Sensitivity analysis of {output}')
-            if plot_type != 'bar':
-                plt.legend(loc='best', frameon=True)
-
-            # Save indices
-            np.savetxt(f'./{newpath}totalsobol_' +
-                       output.replace('/', '_') + '.csv',
-                       total_sobol.T, delimiter=',',
-                       header=','.join(par_names), comments='')
-
-            # save the current figure
-            fig.savefig(
-                f'./{newpath}Sobol_indices_{output}.pdf',
-                bbox_inches='tight'
-                )
-
-            # Destroy the current plot
-            plt.clf()
-
-        return self.total_sobol
-
-    # -------------------------------------------------------------------------
-    def check_reg_quality(self, n_samples=1000, samples=None):
-        """
-        Checks the quality of the metamodel for single output models based on:
-        https://towardsdatascience.com/how-do-you-check-the-quality-of-your-regression-model-in-python-fa61759ff685
-
-
-        Parameters
-        ----------
-        n_samples : int, optional
-            Number of parameter sets to use for the check. The default is 1000.
-        samples : array of shape (n_samples, n_params), optional
-            Parameter sets to use for the check. The default is None.
-
-        Returns
-        -------
-        None.
-
-        """
-        MetaModel = self.MetaModel
-
-        if samples is None:
-            self.n_samples = n_samples
-            samples = self._get_sample()
-        else:
-            self.n_samples = samples.shape[0]
-
-        # Evaluate the original and the surrogate model
-        y_val = self._eval_model(samples, key_str='valid')
-        y_pce_val, _ = MetaModel.eval_metamodel(samples=samples)
-
-        # Open a pdf for the plots
-        newpath = f'Outputs_PostProcessing_{self.name}/'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        # Fit the data(train the model)
-        for key in y_pce_val.keys():
-
-            y_pce_val_ = y_pce_val[key]
-            y_val_ = y_val[key]
-            residuals = y_val_ - y_pce_val_
-
-            # ------ Residuals vs. predicting variables ------
-            # Check the assumptions of linearity and independence
-            fig1 = plt.figure()
-            for i, par in enumerate(self.engine.ExpDesign.par_names):
-                plt.title(f"{key}: Residuals vs. {par}")
-                plt.scatter(
-                    x=samples[:, i], y=residuals, color='blue', edgecolor='k')
-                plt.grid(True)
-                xmin, xmax = min(samples[:, i]), max(samples[:, i])
-                plt.hlines(y=0, xmin=xmin*0.9, xmax=xmax*1.1, color='red',
-                           lw=3, linestyle='--')
-                plt.xlabel(par)
-                plt.ylabel('Residuals')
-                plt.show()
-
-                # save the current figure
-                fig1.savefig(f'./{newpath}/Residuals_vs_Par_{i+1}.pdf',
-                             bbox_inches='tight')
-                # Destroy the current plot
-                plt.clf()
-
-            # ------ Fitted vs. residuals ------
-            # Check the assumptions of linearity and independence
-            fig2 = plt.figure()
-            plt.title(f"{key}: Residuals vs. fitted values")
-            plt.scatter(x=y_pce_val_, y=residuals, color='blue', edgecolor='k')
-            plt.grid(True)
-            xmin, xmax = min(y_val_), max(y_val_)
-            plt.hlines(y=0, xmin=xmin*0.9, xmax=xmax*1.1, color='red', lw=3,
-                       linestyle='--')
-            plt.xlabel(key)
-            plt.ylabel('Residuals')
-            plt.show()
-
-            # save the current figure
-            fig2.savefig(f'./{newpath}/Fitted_vs_Residuals.pdf',
-                         bbox_inches='tight')
-            # Destroy the current plot
-            plt.clf()
-
-            # ------ Histogram of normalized residuals ------
-            fig3 = plt.figure()
-            resid_pearson = residuals / (max(residuals)-min(residuals))
-            plt.hist(resid_pearson, bins=20, edgecolor='k')
-            plt.ylabel('Count')
-            plt.xlabel('Normalized residuals')
-            plt.title(f"{key}: Histogram of normalized residuals")
-
-            # Normality (Shapiro-Wilk) test of the residuals
-            ax = plt.gca()
-            _, p = stats.shapiro(residuals)
-            if p < 0.01:
-                annText = "The residuals seem to come from a Gaussian Process."
-            else:
-                annText = "The normality assumption may not hold."
-            at = AnchoredText(annText, prop=dict(size=30), frameon=True,
-                              loc='upper left')
-            at.patch.set_boxstyle("round,pad=0.,rounding_size=0.2")
-            ax.add_artist(at)
-
-            plt.show()
-
-            # save the current figure
-            fig3.savefig(f'./{newpath}/Hist_NormResiduals.pdf',
-                         bbox_inches='tight')
-            # Destroy the current plot
-            plt.clf()
-
-            # ------ Q-Q plot of the normalized residuals ------
-            plt.figure()
-            stats.probplot(residuals[:, 0], plot=plt)
-            plt.xticks()
-            plt.yticks()
-            plt.xlabel("Theoretical quantiles")
-            plt.ylabel("Sample quantiles")
-            plt.title(f"{key}: Q-Q plot of normalized residuals")
-            plt.grid(True)
-            plt.show()
-
-            # save the current figure
-            plt.savefig(f'./{newpath}/QQPlot_NormResiduals.pdf',
-                        bbox_inches='tight')
-            # Destroy the current plot
-            plt.clf()
-
-    # -------------------------------------------------------------------------
-    def eval_pce_model_3d(self):
-
-        self.n_samples = 1000
-
-        PCEModel = self.MetaModel
-        Model = self.ModelObj
-        n_samples = self.n_samples
-
-        # Create 3D-Grid
-        # TODO: Make it general
-        x = np.linspace(-5, 10, n_samples)
-        y = np.linspace(0, 15, n_samples)
-
-        X, Y = np.meshgrid(x, y)
-        PCE_Z = np.zeros((self.n_samples, self.n_samples))
-        Model_Z = np.zeros((self.n_samples, self.n_samples))
-
-        for idxMesh in range(self.n_samples):
-            sample_mesh = np.vstack((X[:, idxMesh], Y[:, idxMesh])).T
-
-            univ_p_val = PCEModel.univ_basis_vals(sample_mesh)
-
-            for Outkey, ValuesDict in PCEModel.coeffs_dict.items():
-
-                pce_out_mean = np.zeros((len(sample_mesh), len(ValuesDict)))
-                pce_out_std = np.zeros((len(sample_mesh), len(ValuesDict)))
-                model_outs = np.zeros((len(sample_mesh), len(ValuesDict)))
-
-                for Inkey, InIdxValues in ValuesDict.items():
-                    idx = int(Inkey.split('_')[1]) - 1
-                    basis_deg_ind = PCEModel.basis_dict[Outkey][Inkey]
-                    clf_poly = PCEModel.clf_poly[Outkey][Inkey]
-
-                    PSI_Val = PCEModel.create_psi(basis_deg_ind, univ_p_val)
-
-                    # Perdiction with error bar
-                    y_mean, y_std = clf_poly.predict(PSI_Val, return_std=True)
-
-                    pce_out_mean[:, idx] = y_mean
-                    pce_out_std[:, idx] = y_std
-
-                    # Model evaluation
-                    model_out_dict, _ = Model.run_model_parallel(sample_mesh,
-                                                                 key_str='Valid3D')
-                    model_outs[:, idx] = model_out_dict[Outkey].T
-
-                PCE_Z[:, idxMesh] = y_mean
-                Model_Z[:, idxMesh] = model_outs[:, 0]
-
-        # ---------------- 3D plot for PCEModel -----------------------
-        fig_PCE = plt.figure()
-        ax = plt.axes(projection='3d')
-        ax.plot_surface(X, Y, PCE_Z, rstride=1, cstride=1,
-                        cmap='viridis', edgecolor='none')
-        ax.set_title('PCEModel')
-        ax.set_xlabel('$x_1$')
-        ax.set_ylabel('$x_2$')
-        ax.set_zlabel('$f(x_1,x_2)$')
-
-        plt.grid()
-        plt.show()
-
-        #  Saving the figure
-        newpath = f'Outputs_PostProcessing_{self.name}/'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        # save the figure to file
-        fig_PCE.savefig(f'./{newpath}/3DPlot_PCEModel.pdf',
-                        bbox_inches='tight')
-        plt.close(fig_PCE)
-
-        # ---------------- 3D plot for Model -----------------------
-        fig_Model = plt.figure()
-        ax = plt.axes(projection='3d')
-        ax.plot_surface(X, Y, PCE_Z, rstride=1, cstride=1,
-                        cmap='viridis', edgecolor='none')
-        ax.set_title('Model')
-        ax.set_xlabel('$x_1$')
-        ax.set_ylabel('$x_2$')
-        ax.set_zlabel('$f(x_1,x_2)$')
-
-        plt.grid()
-        plt.show()
-
-        # Save the figure
-        fig_Model.savefig(f'./{newpath}/3DPlot_Model.pdf',
-                          bbox_inches='tight')
-        plt.close(fig_Model)
-
-        return
-
-    # -------------------------------------------------------------------------
-    def compute_pce_moments(self):
-        """
-        Computes the first two moments using the PCE-based meta-model.
-
-        Returns
-        -------
-        pce_means: dict
-            The first moments (mean) of outpust.
-        pce_means: dict
-            The first moments (mean) of outpust.
-
-        """
-
-        MetaModel = self.MetaModel
-        outputs = self.ModelObj.Output.names
-        pce_means_b = {}
-        pce_stds_b = {}
-
-        # Loop over bootstrap iterations
-        for b_i in range(MetaModel.n_bootstrap_itrs):
-            # Loop over the metamodels
-            coeffs_dicts = MetaModel.coeffs_dict[f'b_{b_i+1}'].items()
-            means = {}
-            stds = {}
-            for output, coef_dict in coeffs_dicts:
-
-                pce_mean = np.zeros((len(coef_dict)))
-                pce_var = np.zeros((len(coef_dict)))
-
-                for index, values in coef_dict.items():
-                    idx = int(index.split('_')[1]) - 1
-                    coeffs = MetaModel.coeffs_dict[f'b_{b_i+1}'][output][index]
-
-                    # Mean = c_0
-                    if coeffs[0] != 0:
-                        pce_mean[idx] = coeffs[0]
-                    else:
-                        clf_poly = MetaModel.clf_poly[f'b_{b_i+1}'][output]
-                        pce_mean[idx] = clf_poly[index].intercept_
-                    # Var = sum(coeffs[1:]**2)
-                    pce_var[idx] = np.sum(np.square(coeffs[1:]))
-
-                # Save predictions for each output
-                if MetaModel.dim_red_method.lower() == 'pca':
-                    PCA = MetaModel.pca[f'b_{b_i+1}'][output]
-                    means[output] = PCA.inverse_transform(pce_mean)
-                    stds[output] = np.sqrt(np.dot(pce_var,
-                                                  PCA.components_**2))
-                else:
-                    means[output] = pce_mean
-                    stds[output] = np.sqrt(pce_var)
-
-            # Save predictions for each bootstrap iteration
-            pce_means_b[b_i] = means
-            pce_stds_b[b_i] = stds
-
-        # Change the order of nesting
-        mean_all = {}
-        for i in sorted(pce_means_b):
-            for k, v in pce_means_b[i].items():
-                if k not in mean_all:
-                    mean_all[k] = [None] * len(pce_means_b)
-                mean_all[k][i] = v
-        std_all = {}
-        for i in sorted(pce_stds_b):
-            for k, v in pce_stds_b[i].items():
-                if k not in std_all:
-                    std_all[k] = [None] * len(pce_stds_b)
-                std_all[k][i] = v
-
-        # Back transformation if PCA is selected.
-        pce_means, pce_stds = {}, {}
-        for output in outputs:
-            pce_means[output] = np.mean(mean_all[output], axis=0)
-            pce_stds[output] = np.mean(std_all[output], axis=0)
-
-            # Print a report table
-            print("\n>>>>> Moments of {} <<<<<".format(output))
-            print("\nIndex  |  Mean   |  Std. deviation")
-            print('-'*35)
-            print('\n'.join(f'{i+1}  |  {k:.3e}  |  {j:.3e}' for i, (k, j)
-                            in enumerate(zip(pce_means[output],
-                                             pce_stds[output]))))
-        print('-'*40)
-
-        return pce_means, pce_stds
-
-    # -------------------------------------------------------------------------
-    def _get_sample(self, n_samples=None):
-        """
-        Generates random samples taken from the input parameter space.
-
-        Returns
-        -------
-        samples : array of shape (n_samples, n_params)
-            Generated samples.
-
-        """
-        if n_samples is None:
-            n_samples = self.n_samples
-        self.samples = self.ExpDesign.generate_samples(
-            n_samples,
-            sampling_method='random')
-        return self.samples
-
-    # -------------------------------------------------------------------------
-    def _eval_model(self, samples=None, key_str='Valid'):
-        """
-        Evaluates Forward Model for the given number of self.samples or given
-        samples.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params), optional
-            Samples to evaluate the model at. The default is None.
-        key_str : str, optional
-            Key string pass to the model. The default is 'Valid'.
-
-        Returns
-        -------
-        model_outs : dict
-            Dictionary of results.
-
-        """
-        Model = self.ModelObj
-
-        if samples is None:
-            samples = self._get_sample()
-            self.samples = samples
-        else:
-            self.n_samples = len(samples)
-
-        model_outs, _ = Model.run_model_parallel(samples, key_str=key_str)
-
-        return model_outs
-
-    # -------------------------------------------------------------------------
-    def _plot_validation(self):
-        """
-        Plots outputs for visual comparison of metamodel outputs with that of
-        the (full) original model.
-
-        Returns
-        -------
-        None.
-
-        """
-        PCEModel = self.MetaModel
-
-        # get the samples
-        x_val = self.samples
-        y_pce_val = self.pce_out_mean
-        y_val = self.model_out_dict
-
-        # Open a pdf for the plots
-        newpath = f'Outputs_PostProcessing_{self.name}/'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        fig = plt.figure()
-        # Fit the data(train the model)
-        for key in y_pce_val.keys():
-
-            y_pce_val_ = y_pce_val[key]
-            y_val_ = y_val[key]
-
-            regression_model = LinearRegression()
-            regression_model.fit(y_pce_val_, y_val_)
-
-            # Predict
-            x_new = np.linspace(np.min(y_pce_val_), np.max(y_val_), 100)
-            y_predicted = regression_model.predict(x_new[:, np.newaxis])
-
-            plt.scatter(y_pce_val_, y_val_, color='gold', linewidth=2)
-            plt.plot(x_new, y_predicted, color='k')
-
-            # Calculate the adjusted R_squared and RMSE
-            # 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():
-                length_list.append(len(value))
-            n_predictors = min(length_list)
-            n_samples = x_val.shape[0]
-
-            R2 = r2_score(y_pce_val_, y_val_)
-            AdjR2 = 1 - (1 - R2) * (n_samples - 1) / \
-                (n_samples - n_predictors - 1)
-            rmse = mean_squared_error(y_pce_val_, y_val_, squared=False)
-
-            plt.annotate(f'RMSE = {rmse:.3f}\n Adjusted $R^2$ = {AdjR2:.3f}',
-                         xy=(0.05, 0.85), xycoords='axes fraction')
-
-            plt.ylabel("Original Model")
-            plt.xlabel("PCE Model")
-            plt.grid()
-            plt.show()
-
-            # save the current figure
-            plot_name = key.replace(' ', '_')
-            fig.savefig(f'./{newpath}/Model_vs_PCEModel_{plot_name}.pdf',
-                        bbox_inches='tight')
-
-            # Destroy the current plot
-            plt.clf()
-
-    # -------------------------------------------------------------------------
-    def _plot_validation_multi(self, x_values=[], x_axis="x [m]"):
-        """
-        Plots outputs for visual comparison of metamodel outputs with that of
-        the (full) multioutput original model
-
-        Parameters
-        ----------
-        x_values : list or array, optional
-            List of x values. The default is [].
-        x_axis : str, optional
-            Label of the x axis. The default is "x [m]".
-
-        Returns
-        -------
-        None.
-
-        """
-        Model = self.ModelObj
-
-        newpath = f'Outputs_PostProcessing_{self.name}/'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        # List of markers and colors
-        color = cycle((['b', 'g', 'r', 'y', 'k']))
-        marker = cycle(('x', 'd', '+', 'o', '*'))
-
-        fig = plt.figure()
-        # Plot the model vs PCE model
-        for keyIdx, key in enumerate(Model.Output.names):
-
-            y_pce_val = self.pce_out_mean[key]
-            y_pce_val_std = self.pce_out_std[key]
-            y_val = self.model_out_dict[key]
-            try:
-                x = self.model_out_dict['x_values'][key]
-            except (TypeError, IndexError):
-                x = x_values
-
-            for idx in range(y_val.shape[0]):
-                Color = next(color)
-                Marker = next(marker)
-
-                plt.plot(x, y_val[idx], color=Color, marker=Marker,
-                         label='$Y_{%s}^M$'%(idx+1))
-
-                plt.plot(x, y_pce_val[idx], color=Color, marker=Marker,
-                         linestyle='--',
-                         label='$Y_{%s}^{PCE}$'%(idx+1))
-                plt.fill_between(x, y_pce_val[idx]-1.96*y_pce_val_std[idx],
-                                 y_pce_val[idx]+1.96*y_pce_val_std[idx],
-                                 color=Color, alpha=0.15)
-
-            # Calculate the RMSE
-            rmse = mean_squared_error(y_pce_val, y_val, squared=False)
-            R2 = r2_score(y_pce_val[idx].reshape(-1, 1),
-                          y_val[idx].reshape(-1, 1))
-
-            plt.annotate(f'RMSE = {rmse:.3f}\n $R^2$ = {R2:.3f}',
-                         xy=(0.85, 0.1), xycoords='axes fraction')
-
-            plt.ylabel(key)
-            plt.xlabel(x_axis)
-            plt.legend(loc='best')
-            plt.grid()
-
-            # save the current figure
-            plot_name = key.replace(' ', '_')
-            fig.savefig(f'./{newpath}/Model_vs_PCEModel_{plot_name}.pdf',
-                        bbox_inches='tight')
-
-            # Destroy the current plot
-            plt.clf()
-
-        # Zip the subdirectories
-        Model.zip_subdirs(f'{Model.name}valid', f'{Model.name}valid_')
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__init__.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__init__.py
deleted file mode 100644
index 4bd81739f..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from .pylink import PyLinkForwardModel
-
-__all__ = [
-    "PyLinkForwardModel"
-    ]
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/__init__.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 5b7c1b3926506fb279b856f55ca6120df31b8888..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 247
zcmYk0F>V4e5Jhb-0ThKMNZf#88|DHCrHFtcL7*rNjb*UKTFkDI?G5aaa;0rk<q9+~
z3k_eIKl*yo{BgbBGb6S7LlbEKHQ`Z$!W&H(kZGnlvYf9uXIkv|TIl49rLBKXFy-~@
zvih*ae(L;DdHw0MLEju$q)FXAR7mWW>yDHPQOaNDpNQY=yn?)lu!Zknd;q_98D>fa
zcz4?}H$@CEvvFQ-V2bXzR562%s!aG%Xtj4IxEFwwwy;sk(V?ol<J{>I&7^rSw8>tC
HNV=CRubV&?

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/__init__.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index 2ce3317406e07859bf08a42b738674e05d5c4339..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 281
zcmZ3^%ge<81T4a;sl`D0F^B^LOi;#W2_R!SLkdF*V-7<uV-zDJLkd$mV-!;gb1;J@
z%S%R}v?k*%p@2%C%)D&3{G#&2q7>i!l+>IeW}uXxCi5+}g327A9GHKLJw84$Cnr9B
zCBtWs4ZnPytztrpQ;UjYin8-FaxxMVi(_2!lS^|`^Gb?i+%ro&N|R#Ta`MXq5=$~-
zk`gOZi^~#oGE<83D`Ft##>B^G=4F<|$LkeT{^GF7%}*)KNwq8D1ey+VT(KsQ_`uA_
g$oPScfl>VegBmgdim^(5U}oZGYhVY#B6gr^0M-CYtpET3

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/__init__.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index 0bbb522855ad250ad55bca46123c0f5023076291..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 312
zcmYk0%}N6?6or$S`h(bw3*TWDDHL%dB0@zFtQ2HGN+6_7M#J1>hGbGZZhZw`!dGzX
zTg=v#ui!@Sv>Pwn?{YYo!;!<`0l|6w_*8)Rs~7(#L2-#2juDC|3dGVmr9>r<be^d6
zo@9e>ie^T;qgi`vTzOsjXX(|nQW|_8aF?asZruWU8{O>*ApwMVCw>S04SwDxXFLzu
z2kv!Qjk$_8uD4{?IPE2v7ulG~u|mrxdd+SoGj^3v^M{ksDPKebiY=`yHJ5b_+$?LZ
z5zH36FiwKkAwm;Y<0sL7`RMpUwmPgZS@~+sw;j0<#+gQlQQda?=eAN2^hJtA!vJxZ
GCcl4{ja-8O

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/pylink.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/pylink.cpython-310.pyc
deleted file mode 100644
index b6ae7c14b35b60388e38fcbd3af64d04771a947c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18654
zcmbVUTZ|;vS*}}mS6BD+Tz2+qJ1N_-cN=zRY?FlGERG%TZZL_*i+AJL1EHs;t7fKp
zd#Za+RqxI;)nJ%KIDm;GA#RqH87@Lb2q8cMo`46Q@_>ZIO9A2m2`LW|NJu;wlI8pV
zQ&nBvGwWTa*K@k6&Z+<0{`39Uc5i0JQt<iV@0|5^d`0<px+#7P+&quJFhb!fuG&?$
z)m2rcYptuTYW%IQ>ili28vI>aE%SF}wZh-#s>$EgRg1rCt2KP<-TL;->P$+jvD)~8
z;u>!0j^dWQ**$%A&eg6d&GNU=v(i+Ps_R5fyX%DE3hpX>M?}8UZBuRWvxuAL@fZFH
z3Qt*8T?M05S9Q+-ea+QDU-wFT`ksnWqCdCfD{h&-@vpq8Y|>pNy+<AW+gNl>w|Ym#
zd@Q$iN5On-cgAhtN!6Wo=kUaG=iLQ-*W6?7BEIYHarXqiXWWzSDSS7o<!Z%!)IH-q
zgtunhhuuf;bk6;l`*D2FyCux^v1H-u?w9=F#+9D9?Fjefp6hj;f1Fno%f{ygdqY0A
zx2eKj_XF1x7S~<h@<Y4rbi>dNJ#otmZ3q9^Z8WrR3#Z@r#FEX8(mUJfc6+x&JKFMW
zZ^vs7BEJ{dy$z=3;IS{<3$)0)cG%m9FdT0=>~(K>!oKaJHsCkIcCYW@E&KD%t{1-M
zbba^L-p-O7(+g1~{PjWPg-rB9{^8p$=GlsN@%poN7zutxv%HQ0@ncY>!4*dD*{-+Y
z47!nx$*!I4?-Gr(Yw5(qAmHibl#ZH%-4nJGq%(HbyPiD={a_PI6?)w+)@ys)30$6{
zz3Jcbf}ENk^aqi>;di}oDSvp)YxmH+*XPyaQEd!@Hr<_Fvu|(t?JaCXIN0`FOvZ`Q
zooizV>z<7f%kFb}j-9=ZdHYf11sE50!HK-?u8l=^?5n%c7IrFZ3%?)9kp#~6^eV2<
zqjUwCTV%`rZi{9xwd5&Du3=iV!#&J)ZK=PzhQ-1-LSm1omkk@7$h)(4HXHESwR{%&
zmaX(6Y$nZ{c9Kb_W9rLUaF?{;+$gQfDCYFG2Vq1VhyJ$T?K&AJXYFjR7hc=<Zc%rh
zO)IwTMV<(G&9H1jIJ-GL^b>A5;JmeSK`V5&``FX-cF^M2!sZ${#I=PN4FovKv0a}x
z)DgRqFVI6yYNvI}=?>_)5gQC5;t}pFq{Av%D0@!xPkD!i-g3ldh@BwvIlUKL*C+0A
zx*)R&z6l~piKjJQG~)Tm<M1=1HMz&(7C5<;aq{Hhx<++5m&@&xrymSD-qY-4<%f^Q
z$0wk`KXjJ5emEXH4QYH#Qf}#k|B3s1yffoddlc=+!(M>bC4U~G|AL)2_~_k8^dpAL
z7dzuC!pZ(F9hbH79C3Vc3hcFuulvuf*%(&av$uL(Aa1@;+&HIJU^>8*A7IiFTO`qN
z&1UI!Uefi!&;&fRufbq@9b{ARB@oPM$$cK5OfPWhtq{kv>teCn-2o7OZ7J$^*FX_l
zC{KXXjs{LQAKUl{r)O-ue&=~Q-VPsw^Y)rN1VnI&8>L+340i6f^~4Lbh-m6}eL5~Q
z?$8cA&wT*)0w3Z8V#z02_Hr(qxYFOScY6b@VYo#+MG#6$C?(>(IXGVl!qA|HR|F0o
zFeB=T-NT1zr5AW>*eM3^c25W|>;vc_Uzm+^YV854+CgOB?ui?;F=LwCMj`?)T#JuC
zCYLQ!QRsasT{`B5Y3R=IBf>7GOL};s`H(X3E%yJQUCULJgXXycbO&^Lv;G_a({AXe
zD3;C+90Q$WYTH&0%_42aynOB+5~hjGgtSPpT<Q&U9%x<G4lU+1P(R~dVC>Cd8mlG1
zlcIN9p0<3Eh+YQW=WTCkbIINT2=oL_7w{(}=!txYP$`=rsy)fu!hz02kVZqw$w4p;
zfLp9VNf|&3<~fl5#U&;6g>eB)n9YW_1}Y4R%A6iAg0tzM9T-)fXlj^AbY8=IiA^aE
z*NfC3I`Os?4;X3WxB8;j_QLR4d%f2i!^Bs%JWNYUb~$jVRI%94<pf4WAkpnY2hA8`
zjO+O%GDbWksjiEGm!eA0YWD{ig&#~xksJ|is!t`!1SjSrkmHntqYX$$ln-M(vRvXE
z8qtRxcg!=V<=k@oE^Cc6taLp+CoCXi-u5~HdtuME(QY6-lIRd)JJE%8hffwDlJEz*
zBkwB9Bq)^;Hb1A8u_`I`#JZBL+r92!o8SzZN8o{d`SwW8V}#4e6}4!d`jY)h0R3_b
zs9C4?p{l+VY=8@ccE&;3j7j(L-Km5B5$2ukmCbbc{Cr;n9ltJ5em3xY!qXFIw}iLx
zAe)v$Za&nPu{GX>7ah@s@bS`hvCm<5c_;EN!wCBV8xCjwmd{gb(lnteF4-@^4j`2_
z-DZ0&+g|`$VS{s8a%Ul%sh7M>C~c1d7p#Smn^&{-!+l9>Bd5m42yzS>A`X!R7oeNJ
z4d8QuS5oJcstc58=Yl+8IQ7JO{azSd$Z4f8!YWDR^;1R$FZYO_#>a)2l6X`?xI8$$
z^{_>{FZgFt1?F4QfuTX9OO$C!A9{$=Wz7e7pXIfEXp{Nr;hQ7RPEL<`bHW5Ao%<sl
zoovqe$$8+J7kK<Wi;$1^L3r%Gi;z=Gx9$*j=61)nJXIfcOYd`_;2V$!DIdu9f1vWo
z=CqDHQ8`~6b)E>`iujpNpVSnF@dxAnHr!JaA02nk<1c&$MdrBrGF)!ty7Ee{b`g%N
z)v{N?wZYdWUzg~b9A(2t4m*#QUSW0Q5?p7Al9Z(iwvv=s>qsn;I8rZdRui+um#tP}
zwOTmy1Jt#WdaHF4mIS@fYKbz&mgvx2li60w37|+bw1uduP?bT-tuS%<z9MGv#l;7&
zEN=(Va(ns9&=bRDaih1@-Ey38`BJYfP2A-#_|cCI)|aoqCw0|{wwBk)pTs;bdOOR~
z9!<aClSr)byl$YEkb1O~x>i@`Q~`e(&6T}FE24zE>+RzxvkzU<(--j<zJnrGW2L3U
z8cH=Tq10j>r5+n7jkt`m6jxA|V-sa1uA(&K8I;wyfzpbVPA#s-wb*jix9Qz_gxXHM
z)7T^0v+*p-xp)rcd_0eGAznavEIx*EF<wM@+*MGXa24#Ow$jvjt$9^>J)0+!YVI;i
z4BC%mX2R5mPgHt$l4|Z=NUX6zn>6HgW<w`tX455RW_u+w6Y617mI_+Bq;k;{z3T;X
zyQ@J<!a|r-36)r+CbRjagt?@aLIbf|QU?aYLn-+tSt#D6&FiwcR5_Az8!n5NE;WxQ
z23&L-;utneke64SpyDJIw4>q_6{o2<L&ZZVl6g72f&qs9`AA5%PiE3Pc{0Sq^yVW}
zJW9o5R6LF%F*D>&8rjv<<Oui1EHCExtyaqq{0K(~ci~eg%9XNu_@AL_{LlPuqg1T5
z^x;EC9O{f}o80r+hd5fpA9M95aN(*W1DvhhF!q%LMa<z^zoE!$S3{ivPSaPeT!%Yd
zhnCwciF0@@(Xk{+dD{=<x3k0FK0JW%edK3aPOvV0!7bqgo8GVEZ9a*HdP+6$Z}{;e
z248$5DZyp!ueWL3*@xyq^Wu5Drqb!8F}vywO?)oGY3gW^zNd-P5l&}E+f#8>>Xi3!
zK0DfhI?@6USEj2CRPj_)?O6M@sJdT2!0GCk2iizS>zP=0b=P=XL+h24CTM`_XNd})
zz8E#!(w_PYYTA1lz5gt?oaNqM=iX=0`|Ek{v)ucWpn%W?dhbp3K6ga#vnfs4`w;KW
zqIUzmSGadzQfI!ia9Y_vcA)Gp9w?pTRMO7otMWUHTpFX*2^#;kY|UuY?{n=e*PbN$
z*ANE5&YQ!(&BfrWp5ungeL=2fsSp;9<#JKqpdbwC!uhMbf$&d5UrXKoBnV%X&eObA
z>iW;`Ng!PzA8r1G-g?0%@*DJgY{C~h;Oasz;?v-hl@HYO?^Afl>%u(@pYQM&uXce&
zP*p|m7I>D`*1~+4iVTm?nN1Z<DCu^g5gfW%^n!c=nZ<9n!&?{FPGe^jwCI<|X5AIQ
z+xWGl#NzAwAI&QToE($=K1b6$m6RY`JpqY;fCnj6ZBGzPBnGWQVvr*s(fV#u%{K>v
zMD(^<NoPDvv|gAPH1ovh^!y+xZ+cPtwwss&4AjEfB-P71ZI7cN;t3F!2>LO)V*Q{3
zjUgCxyU-y9+euj(L{LXsSo);KUlLX`Ff!WMNk9^+tE{b1@8XL@a0-g%cnpOtd>4(v
zizw=~6Hp5*brEGlHC0oq8+CkZcjvU?(=+9|CegQ^Vzlwy;p0a@*mO^Apj7@LEX(oh
zmvMtL2lN_Xz!`dV3?L0O0y?P~`ryeE5i|`(v?n6HV`PX1t$<K~PPL?@0td}bb>E82
z{Tkz%0%TF~PCZsB#Q8R9GU+=m=^yEJ(-{7Be&AjT*|m4xhDX)0kJiGW%1+pD`O6yv
z0b@|WZ*#%Lc5g|uuwV^38#sw}!F-Ga92zj=3di?;AVIDP8A&8?SP?&r#T1`G(VStS
zENFAZlT>_;isz~LQ7WFJ;sq)`PX&n*afyn{R9r#P)L7VwSLneMC(ZNz7L|~HK&z0n
z3d^d4ZOR%kRJm;ZFR@fvFW)Vz!%y6cQHq2nIE9pHQe0Wm1-PL7?WovENVr&q=BVyL
z7HujcXq2ciE-7D~0rKnnrKsGg>_ZprRAb`+QcqQG&JU}E^c^dPbR3nwqQnR(8%k8$
z{j{pkKhz@VJu1DyHMbE{cTRwD^F4i)gaCsj+xgO|E7c?Enj%M278Uam=Axii{&q2>
zng!<A`v4vi-pv7g?Fg%GA)rar*`+`gGRB5SV?u|VsT{-uxbP_8b<3OHkAYs1zSw6u
zsG7e;%#_whtuK$c7DzYif>DbNo(f=&!~q#b{&v47pwY2Xo|GxF9=OwNM!F~Ks7duY
zBHWjS=!s@os#kMzNn5O=vl?G3JdtD#5+zAlKA&dKnuH&o+kc>=kQ86D-p~w~Kc}Ea
zHdI5ef6syfrhRYtv3s$lB;MBXa`vHIkShL|A^!pwu}08!8Vo2iCjeGpp-T$b2nq<;
z@e89;q{T2u_q4CqN9DM@uR}Shd<8ii2AFS8SCzngS_z-L4Hl(;Z{QEAlM!os8s4w}
zlr}O))wr@>f@xKC%kP4nN0pmTG1UsF&M?(-Tp=buMEBJq-J5fqMPWL3ifnxaSrWw7
z;6um`pi&@pi;J&6{T%R%*)i~LLs3WUR{8`bqsx#V7@aiMG4~MrqP=wH*(4yDgbX}@
zp`7hj=tV^~y_!d(b1Hc%#MqTKH3k_c%3mO+Ee45rwDLfVRVBxD`sBl7>s~t9=)HVU
z@U+Qc<^gcTzqvMSPV|(I7}*ENG05xgci;%I3(W<|#R<qG;YbSpHT;ESY;6MczG{t-
zr32BWo>bn2a{8YB4echWsQOU5`1-er$Or0kd<@>#5^d?JMD?c+g>{iU59HE(ZUHZZ
z)X~Gr@Yy4{f6#}P>81NEXTNl@+k>7NK8K5pOrnaFq4CtxC%r_y-K-=fP8mo_Z0aNi
z@?L_(pre@RL%*L?pgdEII4M!$hS#*@X>Uw!Yf{ZOBPp%)Hm*9!G4e6Dq8_-$5$&xO
z4InW|*I{rl=t|y`a-1|Ko3l^H*$$`I<Jb|i#L-Ko*!%)1K~R1kzPn&7sCB)LEA36=
ze}+#!*n&;KMrN@Ql!QYRRV7mPp^4CujkJB(S_kUaaO{6c*-$yf%ZzdO_aNcK$>1Th
zK;l)bzN@@P_L~mdta3vaPe*0f+#?EQw;JnU4C_7AoxppLc94<#6}Lt`#LB+O77^LA
zb>}Cr^<#!jbAk#fPFZ3EXZP6ayL@`#6Gzl*98Q*%ETzWh2>#{vme;-kc_dSlB!s4?
zaLYmR$+`ytx9J5QW$d_+e~4C7ZV7=#r-x{&KaOd-<PayQ0mOg>1VZ*QjiewIS#-iV
zk3%gxI~O+LaRxbo2)K7XpD5FyEH1<@sk3aB97HS}$^2xG$8iJ}Wp7VL;%$7cgEo7e
z@*c2im{%4Y9IuufZ^82d^da8PhfL&F$ka<y5(=xCAz0q_e!w%<88U~|kyr=ofbx7~
zPg9t8Z90Zqgz)R%Cgx7mr9)^&&wq#*pQP~56Pi^<P~6^9ZYi(fz}?iyq4&PJ!Uq&u
z=T8$I!|Qt6Fj`A=xYM)C4x{QtVxFD8c<!@wSjmpi-aMfUpFZMPA~c(2`4sRgdw*D3
zT3%XOW(XeEtd|k&bv8Zw>1T(HD!7s@FIxGt!)MM?I-O$&z2L&o6FphSJR5M32q8}n
zZ9~0B!rXRfTSIMW2_9pELgWC(uIKex1xhNk!^nXU<m*bx;VxKrJ1O-A0=#hcY*E!J
zsxtGgl5(18Qv1qP8I?{J4)3P~xE(Z;o~K%2`j63Ck-Daxuwdt%fDSaL!_HHotgGd_
z+W%NHrfz6Q>q6sIoNz<cK`vL${|X(%>QCt-xQ|9gM2b29Xip2_(Cw(3WMZlOROhD;
z;i=9~btvy}D0fI#Iy)-E7%SgW#0BU{hN~U`BB5KA;}WzVdIFeqjnhhOoP_=a7%Y=K
zd`~;6<hA9~%1MRQeH&EEhg*&+QKe(<L!&xS!&X$;x1{Ejj=>z2quPEQF73*J2JT$P
z^BK1SXVq<fjyqX{HyiTJhzwP@#aUlFF7-9c!^Awk5u1g1n0RN7v^b{x3xMT$IMX${
z8=eM@g?%`?J8-*UhR_&KlhJC$R{9h(!&8*>^eaj*ml`eic<&7*g44Wnd`}Jk5&fPZ
zGq`meeV&ZT8GovC8gy!LjT~Lh^`c0Sq4qRM({4k86J~~k^*nVakM(kP55o17WJExX
zEHPi=YYt3-M`;w}TqmF*tD0kCQki6xjF5R7sUARknB9c>60vh?gxpf}r03!zBlpe@
zfG-*#qcJB+IE&0VdX^@PQ8bnH5K56G74JNyR%RJ2Y3>D$`-X??UnKE<B(pum@uPIj
z6nKB|X-47oDFl82t4w*C>}`X@OJ#FPj|NOqdMYBEh0bA)PRy8=a-97`lc6W$X_E07
zA{7Q(j}$QUmYM?8Doyq|M2|;T*pd&_<!|4`XJ}Bm97AoQw!}{YI#!xzq<ew`5)Fba
z5)c5(e%Fu0b$Y--jL*~6i&Rxc3Vs-ciMj3E@W4MI@N)}k*<Ao9(i5MNVU0Jb{U*0Z
zN(RKI2<Zt&K(^?LeIIOqva{n3J!4ar&<tknIeaDB&Q4;sTYWh3&|{gfH0UK2>~{<M
zEjrYu;s-5?6(tquu<Z1!<^d!*nHnj#8G^q-9Zh*s=7=!7#gxp>%GAq*)HHePSY5Y(
z&#+Q8OEY1!E)rVbg<tOODR}3A<9Y)%4SX*G$s71r*EPKX&zy0W{B$PVFmzYGYk|@n
z;ro%kx~UOJn}p2z>_Y)1S{st&;jaQJfaFk3M`a(DEU-k~*V6FAiAZO+KLP`I4n!Q0
z3#JTbzXI(M4jHJS)qtEeW!SW3SHGc!&DaPpPf&Rl7^!ZkK1q@4@2kJ2j;x>$<g#D^
z0Ttg;VtoUW08c59Q44=OHpCx+dL78Be*GFytvIG`T-%?C8nIcV$ZkOG7qw`%Gq(X5
z11ziur=$5;WfdGad&i6x;<B{mW0F<nMOf>j8KMUIRy;%R#3k{YZiSTZ_q0(XIu<Q<
z77^ww#|_tfo194&LKVm2I$gmw*CuTKKPcMf5wN*)qH~gZ{OT7WMP|RIMyFycIt|C?
z-$k?gXJYFucp5P8xnPlNj-lqCFoQF{gw=B48@OY}7MTrr_K<5Kcr%Ch9>(7z`1@Eq
zcfb<W#k^gEXRVIr(e~pAe9gn`sJ*R^7SPh>XLH%J12wL^rCwBS{wel-eh+(aLw`pV
zXQD@4%nRnnqwY-l-5^S*l|4wbL$&E#@a9<rfoCDjD(>t>C0K|abLZUoJBl3po{APf
zf)?26aVzZp<DgwZXjp$sIVi!Xsl*E#WCJfapMVyaL(!{b(C|?zVi_A6+kMjGA|%(@
z=h6&?W~#+aL0?V{cneI7@GB1qfP}G>)>pu|2Q(N`C^=H=KAd4c9sp$1i#_}jrJbsn
z3`q95%v(&tsX4YO5TUw-6=<#W&=H{PeEQ3aLZ&lGyQ^sC_mDRT_(_wiA#b6~QdEf7
z0uD*!;o<i~$mIzA&45-8(Pg9q!)lut-F3)=V!p>yY33sJlfos&0?@q2SP;|l<Zm_b
zYm!u$vVy_UAvtRdGd!GJbQZsC$%lf?mARVt=;me0>Kyyu4^t~7UDD9;JD&Ak=zS>7
z*SL)z9g!cMQp<;TKl=<^m04Yw2L+t+S7|g@q;VvU+-=Clm9ZhP0;S=?jOcUZi}=I#
z-6rc}pqiS+X)Y$wqR(Z@yd~u&RTjvu9=pDn1CILr2h77}Va-{(O)>Vwu)oZnB+?7-
z$HC+Xa0(~Zc6(4H5e%E4ml@H}M%$!TZXi;&E1d@u>Kbt?GD&;4h*@(Aa1y0j?Fy?P
zQqn=-<{!v5IAs-uBwk3`2YcVjBUr03d~ee0R*>OeMH3_kSmR?SE6G$9YbgF1)c>2P
zE-J$xxrd3$V8vcWMwTNyZNn2d(-a$`b3v*?3UEy=DMiRI>LNsmGjz!GK5{B#dY?Wt
zmE7>A+%8N>zXe^6m6d!h-@#nOZ(}Z~F1hpzG#KcH1Dz~Ut>NMi9Pt@GWf44V(DvV+
zP^!rTY>z!c>1I7^C1$3t9yuFQ<v7m7jsz2tAZ$#8DA3rIAa2nRHK|;3u#0x7uxUIY
z^1`XunAC%CN*R9Uqi#>;NN9dSe4Kh9rV*c|;#DfHQNbBFkKhV9Ka&8IRFNSK-Ea^@
zGDYV%s6Ban6XPmHnhoTe_66x&i55s5lh&G5Tj5e;Qkvmnxan>uRS!l9`_!Z=OR?nf
z3M3T=78neNq_WZNInk#-nUn{C4~R#Klh{PiNx)0thk=8LHPQrN^(2-PQIbH^dd3w$
zM;+--u$wGE`-L&kDwqk)V=_?qb?WlBsQ3mo*GMl;K{T=8h{<&6S^?@3^GbRmIj1O@
z*%ZA&AGybDcqD2+F=-VL@fP4T{2ENWOSF+VAX<J>d4)qfVNzLfR$9Khlhlid#9IzV
z;4!^N1EZZ!79dP0d(Z3UXYO}M=_b#KX&Y)oU(l?QrIxiil<7sN-w1Z!wV-l0G>&H8
zHCW*`zSn?CP3{y;weFg__U6O?wRp_Z5J*Qm1MfVBYtTb&qeRXYJcDX(LYbG8Q47T!
zPmJLc55#=!X{|huMg27RB!<TX=`3}Zf}9j5(BIQX<)GqH8c=>8sU0|+<1+NfN@S2<
z#VtXTHRDRSg7CUV9tLQT6=>|2;k__j_(?|92nl^1t5aj`bQapF1ueUZaC%L?5!axt
znQxQF<dZ=)Ham4VteKX4I`RIWrSDh5b?%`W*T`oB4ZMQ;891}kd-yvnN-Iid_Oo#v
zbZfCe+BSl<d7r^&hL1*#{n;45L5^#fd7ayk2StU(KK1lR6||j0aw1dMAeVXr{*)Pn
zg6DVtIQ6P<-Kg<~5~#No?stZKNvzjnmg&g8m5%IN+@f)KWH+x5A5X`G1S5>w7|qI&
z#?XK#Mwixq=;;3Uo}-&f`zE`CcHw%|=qyk|8-9;H550aauDqj$CwaXW4%EQlmB!Tw
zJ}6pcXx-1t+3?l8TxrZ$O?U7ZMK;lrbpOxARFC<heood0{_r99m>k8_92c+yX-zu2
zg&0;>y6$ya_jlCY&2(;a`KnVN6RQqOYCMMb(cj`d`%7y+q`z+-*&o)iu*)W;lF{$)
zVP_ndnX-v>d8dDgb>bFW$Xo8lr;_Sx^fQlZUerodNBk~;WLV9_*fON0L4m2Earx34
z(%lTKrKHE9wafuY=)J9^TDV-{Xe+g7EYtP4YG&eAe3Jl8zkKQS;S7o~wc$M7PPA<v
zpK_;&uhGlK)~EWr;&r|xk<RHMNnLvVS`5eHk5D@nD@h}*q)9=HCpv=v;tz>JNeY?r
zEm%zL8;SWvZ<izc;!lYJ2}yWry3nd8WX4}o<=;?2f`j2YF=<^nuxHU#i#<Q0M-=Lt
zqTk9^molWpOYV*!d`}Eiy@9NNu8XA>e^1odh4i;s<?G2JDhu}1RW_%lm4iP=`#LEH
zZ{fl;kQ4<OPzPGeBq;;e=3VXXLTM2afNJNoGpdHa1-RC!CF<~ulBCcMZ#4=vC$u^J
z4CKlJKh@sUAOqmK;d@HCTF@FAB+AsYx_+dLI4q7Q0*~_;KgkI8+&l{@N2xOSgNJ@!
zg)gRrZ)7JNkk8=^y!Yi%g(Ly)7DiR*yjA$HpN!y>-Z$W>hTj_gXe8If7JJwiZz4?;
zZJ!v`m=1!CxO*h0W8&`ksGh!Gj_Y_I=NZ9FHJ;grS6}+~Q-A$uZa#hU2ck-B0A+N9
zH{V6_R+T(H<m<<qjkxjk1t2da`BX-;aRdG!B$NW{+VHHDCp;^IqGyFYIu+N1M@QMO
zQB)z#&ybYnqB=Y}@Qr}dTSzOdvM&Rk3=XIweHQ1xjPqX`emA!yR{cIKCKy*_DRGD@
zGo(n#rH8Ps&fzDoE^PDstq1cIz_H1x*V1UtUxv|UU&?-u%i+JV?MsH-;YcJ-AB}*b
zwlZ=~)<a=9_cKYSa}@?)q_N!umoB3EVjT}xj#Sl29p;!H+fY!|$%X<yX|XzON2SIG
zdwF3~=$Oxx?ePwsM*JyI)So#*SHe(QGC~m+LVbCvf;hmd!zPWGw+og>C_~W_%iIZr
z@=>cfD-)K;L7W)3o$if7iX3@o1tEh(v<iqaQdL&{{uP8Pg->-ODt-k8oX6Xd@I2O{
zoAc7WY-YPG{*{{WE$21JU!0IL8GdeR#C~N%^m<WJ!#)2V8!;BKOYc>)C-}h!j4Y&|
zU!~mBv>~&Rpu9Pm9>H}cEftNI(Ns>0?Yw_MyEJl0P14m|r-i?WDr4SIO??r{t4Tg*
z6~Og>W`#Y^1b*LzXS#w^KT4Ybh&}whQzg2hw)coD7CLFFoT%J1*dmudNV(oz5CmO<
za;`)TMN(<C++G`*WyA=8`SlJ~gMWD;mZ{OFsJKeSPf$T&RO$P_Lsx8H{T*Eqyo>Kp
z!4n@BY#EZ#Ot=|7g~C*jBlgCES}y$Rz)-CZ%*U;Y`APGndB%Lq{6XzyHUUKaH9>DT
z=dlA2j{JW!z*f<4B|i~Ah;N}lM(<!7f|tam_!%nxjh^E7NBB)-D6=(xkDl-^RU+7f
qA)A8YeQNukR8UVxO&~EZ!n(n4lb!?K%M)1F$ml5kqwL;A{r>?eX<)Vh

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/pylink.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/pylink.cpython-311.pyc
deleted file mode 100644
index 196cda321394e0169190078c23aeee5b564efdfb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35776
zcmd7532Yl#nkE>$Ns$ss-KQ10tizIg$)|kDl5P2r>`Xf^S7yt!NLjQcQW>OdSw&U4
z3prDCLYQJ^yOHW_CyLo{RVzE4+nSy#jAo|>>#pvZt;Wu5Gt_|<!5IO@3=%sH3>M1G
zD!|Cy!S46J2nHi4scctmFFF)@al9k`_rL%B?|=XQzsEl<EG*z~{BJ9N9*BRB<Ngah
zWDkpS^UXute9ZYdzhQ!#G+Z?p=-xPCylP}u(^V6@ny;GK)pFI!uC}W-cC}x%v#aB3
z0lPY{I&n2kxF!p)7Aj>GT`gj9?yGKG%@dwU?^Q42Ebntyi;dhF&ToC6^V<R?KQVFK
z7x<TttEGP9Wv<=+_w?9q$T<AIsBd(_7l{nx$u{K^qCwvTZk;y*(UH+`C>ofFj;h&_
z$&7z`{)RVDB^_K8*X(gqy^nD}!TlHN^Bfl{ZQ=}EG>ar;@f-AMzHgW@y~W)z#JHR4
z7yZUt>|SvH=A1D@%y^4n<B-ykg$Lg-<$uF(o-@U`m_bgR)WDO=^%LBFp*{-LNN>Ew
zo?j@v(Qm;wOhB~N7X}IncpUxXfzewLJ~+nvCMNjkc!0m{o0tyZO^6RqNBN0hfWIDy
z-U$Rk{A4ghuY4gtKk1vnZ2>Fdl27nW2BHBW!XCTSgFRA?!@N%re0TY<fbt?y_MSdI
zfM({SVSbc=;C(lI!B8a13%<~e0868M@GyYMWx5c)6A<|8;c0*o9%CSDaxl2?L2ZuL
zrlvN}!9Mb8AUZ9Cbg;AcfF<Y;ps4HN@PrET6=6D%#g-mZJ^>LS22W%vFd7^S2K-80
zSnk<9SAg9c!P~&3k~1<Mo}Tanzr2s%Js=~glfO<lMq#0F^zVsMXD?93307^w{dBH6
z5#ArBbo^LYm_#8cH>iBHlOVZ^HoGw%r7uM81f#&S|MZo1YsMIw%2-&NWQzKtQ6Y$L
z22Ke=Sjd<|{@`S$;B}$``Hcyb(QeL|(2^Oe+$6X%L}#ormLf#s)S}-C{fFOvEdpA2
zTeuY-pBVS~B5x0bN2ezPp=jjoGr{QK^!2x|`|buJ3|1jL^LAjyH#s#Ch`c>Ld0hzl
zZv;l7k?D|cG8mnXh6Qx|y!2CdCxW3{Z_AhNsk<2$sx}@BjW9A0N&reZ{v$~Q_qg@#
zCd*~RT9IddJQ2A+IX@XU#ZAxFjRy9%HdXhESoEq?^lHlf>a%Ch(zb&4XA--=KX-3#
zt(Z?Wye1aEE)~C?a=rf4R+zAU|Gj(ftrb<Ks&0ry<5JOh%0B+Iu=w8TwA~pW`@pqo
zt6H&DiMATaR<q6-Eal0P<n2GHUFG+z@OwnQN8)?f>$JBlZcRJA_l6>N0QvpW3hrZX
zn`spH>QSoPee)PMA9Dfjs=?2JRU59F0%pcajbNpwfJM(r^*jPB-0ZjbEkQ6|y5i4z
zgS$abHsu*{^fy-Ox4&-yt1tBz;A;0f!Ll8G7s3L6Aws9W2%*aX-s&&&dyuBk@5P%U
ze=$P0zXYMjZvl5H&lF#}djU;!IxO7r3I3t5KQQ6@JFmiV`iNNRJwHhi{PkeS9}r|#
za%DUi;YWQFkq8eOx(znu!^w{#A%92k5#e|9ERpg=Tq}Gh!g^g`CNMf34TizE##oO7
zZy65?{w^9n?(&iFSQMWP?2LpbZi64lL?idt(ePA&n8`^ZOpt!i|7v)qTZT#PA37ER
zCda-(q&O12i|mK_NL0x233OTZT47Nd=mWezFy@<{i1MiHwN{yqTdye<6Q)C~I%-Lq
z)qyyvFT~3=_FbO{@Y9iC=mt;~84rMukA^2FiB(V?WtO8B7Yt2-zl;UZ;kwnAmjf77
z!A_?b`WRSa)1gs%YQ4ta84r$*qa`Bf#eN{n7gd^W6fl6b0A%_5YI#0Bn;p#-j7Guo
zA^|jmFB+J*OI*^&U%DF|M^i;ch2T_Fh6H^+AC1HGN<kqb7dhqB-4Uum9?q2_Sqv+S
zs!!w3HE@Y*z!u<$5Pe|CQNRW%G77lXngzJ^npz9B&4$BKv?kS?21r)40@IXS3-(Du
zI7_6&WlL1co1DhzMyxnE8Jw8#Wl1@kj%V=#hK|5(`dok~jL9P_!x_*<!>C#wz7rYu
zf%LAmg+?MW6Yb<fBP?5_{Tdso1$lS_#{EIopg!TQOc(fqTGY%4*f9<JR0*JrXoP(%
zLcLWPwUqZ%e}#4k^bwzMBZ8Ko;??r{{Qe+Ok8c9S+>p6HD~VMrhcqI3eSi4w+%>t4
z86`v5lPOu>yDsafTy9ReGk`#IZJO;`D(_(Mu^ynIpABLOft2ee3bjmu{)zg-tYvcD
zcC)gh0SsuMb(uall;6jz310p)GW#QfQ<0seD`J#Wkg~@3Yq>h2`w|nlcI3_Av1>fQ
z8V&H{;R&!@6;Uj)TAGIFz^8&CR9a>(a-orHJd?~j<#K}{XyQE7t|1KIC|2RVBo3%$
z$?cr$nE^-{$fXEC!O-Z$G+6w#?&#FSHI#@ZlzV`0G&=3eNng1xtn{%Q{yJH86j`E^
zzb1DADzKX+QmD!|J@dS#ClQs9h@`=ZAaxglJHm$o0sjk-7w8Z@5GdD^>?w70Vv!KI
z?}n#=!^k+%6tPf3p*$pRO~Gm_5f6pnHx7LJgWwsEl<scqOvB+&;2K(rG4Ro_AOs>)
zVDuPZ7#XXjjZPzKG!*6UgoRtwFu5{W8oB2)#Er1-kIH4yq#gAxD5zu9kk7iae1#@&
z3Q9LtR0S!^e6`<y(ND`*l!0b-1=F3T-kbfN4~*$<B&cvPrFNhg2pxINHoT!0N-{>v
zZCi{m?PyGl778zy1qbR6gqLd@keSb@_xQWy`4a27lxHj`(8MTwNA7JZk|-|Ax;yzm
z_l<6T223C<pm%})M2Pi7gBU{Pu?a(UK&EZM2cd~r8iAx1hk<Dte2a-t@)$q}3-~bl
zYf(z_3*!qQ!fb6=(?Euyp;9f6A%RWnco3@GqbXr_L}xhMYS@&A!|U48FmxifJUjr>
zXmDgo2#*FLk-SOT8{+{~OCH%}z-6h54g2ai0qBWIOiVxs%@RhAud9{F65@uDil%}J
zR|$=bPE7*}?X2?(+D7GwJjE*`iH;Ig2xK^A;HUu<h*U6gkf|fi28e!BcSk+dvV6CF
z!3icd5?Bg81HOocGpcD>H8gEDiFDIKfaY@;#%7{j*L|#KfkhJkf$Ydym5oWHsll9H
zEh|f^B-NvV6tW%-PfSk|JA>pA3V?js<EE6yIGkFXR*Ys<@8&OtAYbM&Y9`bNA*!AY
zje!b7qge{d)|g};Oq=!m`X%a}Z7X^D&HB%81t<eU?tZN2X8~6$oL_;_5g{=4B8{f9
zTou$IQlfSB`-BM$J^=+Ud>dMqwS@Y~NEGctlQn<fc96l=u4pg1`Lmb@kVvaEGk-1H
zzF=sY23E_GTNYz8eML<Zk>?&7D!3Mj`qgMQ{bApdXB%p1tQ%n*gM^4qBr_Lqx8Nig
zAI&Y9#z7HXAVmAR<Q|4zPoy^$jzr}d9FtRIHo`=bXkbbqWYBV$=qcA-h$x9hWfm@X
zobdI?2+6*nAH4|79!Um<1fifPD=GcPPNbk!t>|;m%LgG%s=bFjY}$9!@)&LE=Aa~V
zzf{-B)>-X2FI;mCjXwtoD!ea3W6wo`TAI>y8+fNW@0gT()yp>Nb2=2119C@F0r~Aa
zlv-J}tWA5AN*9~;Ct`0}{;5`<x&ve5FGl^Ns=^94rmW8Duuf<78g%NUwF+4L#v_RF
zo32^|HawY?Cp&wx$WNr7{<dzT2C4fZ6G=#CoZ&K7SqvM_SeWFIDWFkDmQC9o8T$yk
z9T~|KjEtb)Pa|$5;~E)x7qbb<Fft-k0g{Xf(rd;&GU5wCm}cxPf~abWGLwKS)Zq4W
z?i+-hP)x52a$pD*c<~4LkDNqsPxJS*yfSW0m{RsioT9xlU0xlx#G@&DHBQl9ovx{m
z7bFH!_IjKm3vnYfp%|eV0jkH8oWnvTp013RA<Q0R8X!b}LuQSSVKRtuBiT3@1n{Jq
zH)0k%8MBcw7#K#fO~l2_crvSTRy?UjhnNjdRyEF!C!6}@z!PaL*%2$mlWN$A72%0l
zq9`)PC7p6AeHe4aoUww(2EF1EIbGRwQNp@%!0e*Fzgd)ht2dt@uR9wPbK}XQK6&s2
z&7*w8ym+EkWJjzRPoyoDpGxqQRl0JqQaq_x_j4dh<8Zr)5e*{`Mi@|aI#dN9H0L0!
zOrcJ10ppdds>(Q2T}h@OH#^T1$@f`>K*pY(pl0mZiDafwC+lXcvb3oXicF3f(?lR7
z)2$;kBJ;RN#z8EW$p;y?dMoqnj8oxr)Ne8_Fm&i!<qnW3);=l8U2<|+erhkvm?MFS
zF`*Tx6WS=~pkN0D?G$uU&_zKv1v?RByfRptStP#8`n23{Glj~N+_i;Wlyf%)`zY8?
z!2tvrdv^HA6lL%7Dn-mYLd{3qY{MaUWblY!C>R|XnXTD`*<>UC2!%v`fdH0-BCfhA
zZk{hnmsaB9NY{15%@R6u#Wp;;(p8Ntvbq@;cY0eVMb@M%c{~<oFWD^RwRr0UTlhHq
zQ8-<~r;E3xE85m=T*daUIdet9uPC4-zb@da>lUs&{Ek%DEmrN6s&?XSQTAK)-Sm;#
zbj^0UR;Fw5ZOLAhZrnxJ`gCn8drsM_a5DCiu|T~ZygsUO1yqf=0OKg1pqCRzN#e!E
zLvLE}8*Z^O5(eR1ROKqv>u;)MM^zreaX-P^FVq;}nARMs&7<$xLPu2PCmeTEEib9^
zBQ2a;mxJD{emnF4=~NE(`>#e-j({(yU)!8_MOA)*v?^cHV@6xLzSeWbsD>lnEX=|l
zGx|-B&HA)Dh<mrhunMmhJNl9Y@aSBd=*o3R>#{IlShnbK|9vuft60Om%42V;{FMe#
z`ADi<Hv5LIddws>n9ilrr@5(O_(f8qHaVWHf%fu?Qn7VQDptAwOHi?zM~}&urs6Hi
zL2cC-M#W_3WXC@U6|1G|>FFh@I0tb)6{|6u_i_DK85OHJbeMQP6>IYSBc);zCE0;~
zrb7F|RBV%}Som+qO%fwJ?rqQG8fs^KA$&syys756%xzhg%9EeV<JHoB$KJ6;IiLwO
zCUi}UiGPsZq2gIjr!Uz%auD16B)hB6dhE;oQNCc-ZHHu<R|7tOWapGXhE-Ypp^@8m
zYG>EvPDPp@b-u`C09a$8osg9nRGu1pNi{pFuT-C&oX%tvdcQoK8I?j4%dFvB0}nHD
z0AQ#{yZL_EZXAGN3R>D$22E?H`Y|e|l_?5ZNrBxei=M5rIi4c5E<5zBK&KW!bHvkR
zI#u6Lsy?3ZFh=iH11LEg1h31OV9|=vpVABc=tjfe8akOrT3`ZJTR1t*{*y}+kgB0U
z62iC1L5Q?T+KMt{Gq(kjLKXcFbZ6Q`u(M{pZm5P?MLa(mx!uLor_4qK<<?M6+j<&;
zdM;bW!Vm;U9Hy>lug+MQhY%(g@B|=b!)QP_hzexP1V+Y8UQ8L|lt1H8v4c5@5T0bp
zD<)!RjNwSeOrOq}Z-#@Rj1}&7qj&rnyMUG(0dN_|shQCL^AZsDpm2G{VZ+=xG(9na
z+4S^e#tOh-Nyfx{1ZWWsQ8JR<GfwtGmeiRbFOZr5ld4{dH4{AnBAUh%2oaJgsTD|O
z$aok88Z^%~Z6dViC;C^&8Yx3T5Z;?Pm*<CvKRA5<$o!Fo11ru((b>4>u3Bi8s&{;O
zMRf0x+<VqJXJOaRqRRu)ks<NGuykOUy;*DC{^-JL^Wl}|!^=HV?**}WNNOHRm?cj`
z%F_U6o(J1f-W_YT+a8|z(S=Vgd|CXs>hqe%HB0`VhQ!)aQthdPgNiu6<aly9)qGZL
zJ}Wh!&1PTo)+`K2wOwBdk7J_uh~z!8&RGk)(#>sB^S*4NugdG!Ia5RD*PN-M>sJ)u
z(c86-$-y?Ms$;R|aj&%Fh*WiSwd&ML)hV&+j8t`Iwd(vz)p@aMNTTz~YSo)7Rd0$_
zSEZ_}@qzhs>5>Ymq&ekkep=}L;nfeW-hX@k?S(g13Y*2kW(6_3f7T<q4@&NX>zu2w
zYptj_(Ib^~h($Z3q8;ldy!xu6^Ks{D$BC7W6HiK|zBk2=x1^4@2<q09rxloyye%p3
z?oCi5?LQ~ho|kIR12-sS$5QZ@ds7`3#g2<o$Hi;`3U2oP?A4#XEqYH%-jgzJI=ZEf
zzHFkcal<!D_4}8iKmD$BU{I<*yITLsO8qNh{bi~C@@oAXEA?-P^>0aZUR$mAuhjd+
z`Z1|~EIuH)Y8i4mQmzgya^74iY)KWiq}?TwyFTS^Rmtbo$8U@7!;<^(x{33&J*}vb
zD%w(>HnnM^qPIu#!uQKs*#2)ym;KVQi{hb6(xFT2&2!01@;0QrU7I5Dv{-vasy*|Y
z2<&Nd8zUpNz1J(aqV1>$n-7kv$|Cd?np9D@`{uN)TH<cvK|XRmv~vcn&udgO5sT${
z&f*!<huoxZ&Uk|(FIP>eH1%Z10Qb(}IdjakxhHE>ooZp4qkb`|PU5nq&=uw96jFJU
zD!t%g;O2WBoRKNbaudIpDGzE(sHTaFs=_eGHFH9dLC%-w$2(_viwl|WaEiw;dBYie
z<r@ZVHfGScA!|CahH=LE$qbhD*$Ki4hg@=U!<cLzWTv~U+YqyjKv^pU-kpXg0Gz(Y
z;ci8xGlK_3Fb7w9l`Ck2sh4^Dg2l_0dCf5RyutROY$-m>T)uK20P9v_luD}b=Em`M
zmpqD)(37!Yu%S_rRJOs%sjvXm4AZh@tmOC?@(Y)cOn8NYS1BN+5>q~999Q6g$DCE$
zt@3E%QB+Ax>BjVOPR$#+STl{N8LRw0LSign#vzY5PI)k4m7CqR<zU0&|2y(VXt2RJ
zQ_0ox4|}DWE@*zgDzE$WW~%*=xb3jC?QrVI1+jccDj$kFpO#g`3!p}Na9%3yfJ>;O
z&mf2KfwZf9)m69Rs{8c%!y7-E_+$di{pfPDxb3*K?YQVVA-PVZ*tu>rIl9tieBwLF
z(nnQ`=ftuDQrUs{>G<hqYwk)a4ueECkkeI*Wt~!4C#8v>UN<2UF0W7BW%0rYjk15)
z<2`BReqk*;xy|&8Is-zTkG;wr{!Hc$##}%48>k88W6tD<XR2<xkk?BF^3($8_XhO;
z&*v;!&Jwf0OJ2u6_HlF8m^DcpYQv#dBFx#~_liG#eghYBHgUVTi206D?x6<mEzW>H
zoifTCGwSmJwz{_g$(()85wmU1p<?!!!*BWHyf4n#=C|e5$*M0~sgq_Bm8)9Jmd~$V
zu2%DZ<~M@_*?jM7InZhN+mdw_ECX^DB-)TH4Ig=P_c2K4jB|tncc2`F6QFEdmU)uw
zI|iOa#_3!~Cr*R(vQ?NTiINo|d$6GI`zA*sfhfET)GRMHzsQ3@b~sYYppL5bHe%4q
zyelW%`~1EsG6pjfQEsB60)^>|45sQy2}ep68)?^lNrf10tZ-IU<DSPG$tyvVTmTVq
zx)GO5E~N1KhDY!*JhNlmJI*<HddCcY!z|wYF_!3jYWmPP??OwOW{pSQ6sRA5Yd9t}
z;`+HUW9;6QF$5!2w8Fc-EjU89D>959n?1Y<>zbazBqgA<uw38nBNJiFg(Amrlg-->
zvWYaK+<RPVTc3O`zPs?<WM9(vS^vU!=}(Q2waW%!c-FkDyC;w_+-bLEEX+SOV_}~8
z88f`BLm4wM){JR3IF+$s?n(}c84Gy{2igl{=3S(3`iw(uu#9CmJa);KDItf3k!To{
z<r7B7M+oGMoyJeb>&<j0Khtb1Q>0JMjEBC-NTh(_j7W(NneUfuf}GjyFNVYlLKw}_
zF%C3x-s%VLq(SmD#w}@vzMq|1Zu#dIetH2o6SwtAcxSJ9TDcu_3`YwK;)7p#%M#;B
zljv=hyv<<Wg{_Nb7z=-N=#xW#)cdeEVF%YPY-JHF_?nXZih|s`&F;YGH+%hSJGY}d
z)!p~xkk~OKbqrCOVH%1Mik|I>qNFul)3jQ%W2I)t;_&iq3}G~i)eK2BLkWAr{%b2&
zT&@SW1ps?WKQ8#FVBw(XX_h?ADNi#&jVfjXg1UvE*1XHb=I#`z^HV)rFUw*q(u5}b
z*JXXRmcOhu_wkOuY%(DHMN4_V&GJ_^bHCH^S49Sdx`9l!ppK)deqh;pxtQOW&w#be
zT(cZ3Z-D#2q8(7;mNA3h{JuSA%pdslr3;2ozpi}M9_zQn41dghng<On=JH#Wg=j5N
z)tUfJ{)T}=7i*81z*ZceBL6G~9z7HgihrPkLKV0D1^Fpq;oVdO&l`-*F&c)PzE{Ab
za;#HX=b$WNAeT2VEVgPvUL$q=E*nSS<^xB*oQJF&$wb>6M~BM{TSLYcveAGf3w6qP
zFz$mt{dHQwb|Vl9&>{psgl0J41|n>g6n`@e2hm{8P18?4J~ZfIumhtJ;Ds!E#%n}r
zCU3*v2*Zo~v9?G%oM`ZI0ZzSvoHmP<K`T?>j!B?pYsvf~HG_jX#^m7GOzXC(KRmIo
zD=1sP`U6-)y|Vs}Ic#MmVK7OZH?P_@RNOGB$rLYZ4K}l5shakALtt*Aku^(iI_g5T
zLrWLrFXfHCm-F3HwZg=ezbAR{TSK>QT%~t=@z2K9KQx?&j0eLe_l|we5Hs92-sWEC
zJ~n{V9c0@7+%U`rQ>daQkSAjfOavw~78*n%iW=%38yvoM93cvtnG%l8?%rfbfR|}@
z!GdNy&1QL(Mu%2>;MsrW{ws~C#m8|buOxaF_9c$WPuh@;sI!*to!#9#ndC6*EEobr
zz8e94_u<)M2S}I*is{>^saj_bw$hp+AC?4$x@H4HSdL>v&brqW+&-CmFO-*9H8cqa
zw^8_h^98fU?r!+an8{ffqxM7~FvX@@85<3)@CFx%y=1JByP$aBW=epoD{RT*6m<hp
z*@>4;A#Z`4c`~+3vSVGQcq17IaiqviyG~@MT{#?XKJCiIA0mW)g;JhjyzO*4E*REa
zp80c$ckd6)55<SpO3NRdTZnvk@xjITsWo@87PqOcV|Wyck4p&M$0hgib<SRR!I1Wp
zVN9#3d)S_8-nV!L0Zy@czf`?HVM~`(FZez>k~p$fTD8zEmbOc!?WxjsJYmSH=`$=<
z$X9Kc?mzdn$xw6NfHAM^f&qgbLL{INqu2$*uPZr+bKagPy<aq66fau0a@!hL>$+Cz
zy2QGjQr%8C3_W!>r0fl{x`xEO>_MEF2>qLf7%9kZ|2CfHjB}<rvv&D26e2*Bd_>LJ
zyL@X+gsjABx*OzGq(0@9M&D$|b4pXwvC?u++#LLpa^J%A>du_iZ-`lMb3zR!cp4b9
zU&5G{r(E(IHB(M&%(BI_Y^&1pMr^-1S6a+Wf;YxojIOc>{;83!TSAs!mNi!v<;x#6
z=VwrRb;7sR*XC?d)!PY5FLj(vs>-b#ZU9@}h#x79s@8hsCP9}S`ROqARV|N9b*8p?
zKGb<FRxxLd=BmkQd>O3x2B<Wr_5+)(L~gY<zhAvYPEDGPW$5ao)@_seG-T_luTRXP
zhYD18C_AYK?b#Xa*?$Y#v+E#Jy&y;-p#LK9a2OI3X<9ZM@YKswIvB9f7Ff%9L#TcZ
z+RR9y_A4C?!?`loJbF0h3StGx=a;6TVyI#?Px+;V_R<y#|4^_(p=y$qHBoXeQx1Gh
zRmkcoHBzZ-50$$0GAX#5nqSugHj{BxOK<k;bd41N1{K9OtFv)=*m1_3Oa*gAEBngJ
zB$NfV{3s^GBpgPjudB<hR6l*TG7C#BXn`0>q*&n>lm$su0t*Fb2~2LC8pJ-P-N_Xu
z>u;DAgd~PZEYpEl+bN5;vS_N7MiPZAV=E*1ON*#8Gm!A2(^%547D@soRz1=?sF-N6
zA9=#FX+3QmL0XkgS{9pKeWa|LA-Hd069f3+BE1HX=LwyPz`B`wN0Bgh>}KNT^*m9t
z4_IbfRVd3nl}U(F9sx|#kvwny?6L<a>vc6IROVK0QDx{&u9~Epk6;-SnjXvdFp*HS
zZ<I<|sI{Ry2Au{I-x_xQ{r`hw)=WzsnV6U{j4&NhdyQ}oR4Kb*5?5qinUL<LCW4sL
z(2F(-RJD4>8km8!7s=QseYXN2pNR0!kN{HOIM&rqK-|Of(mk?A=MO38G>gTO8q5`h
z-={as`SUj2U7&!e=r7aVA5gG|0`l#J;-49PjWaVD`{>9NjLrD0mE`A8IAcSbkD$$k
z86?fvu(JcX$7XC$3o+xgL-m=JYvd$-QC998L!Jnki-_j3hb&uqsC>9V(B=bd0=c;n
zIWG~-D<bRYz7R6Eb1ki+y&-N-Y+q=Fpy;V4`*GKoQPJHaxoL9;$H8<{tJJhV)p&pm
ziS^7z_;BZ!Fr@C1+`A~nu5^9V!}n6#cESpK@o7~}yogy0VFxffh9DbK7(bJC7bkAS
zzZd^ry1L;<U7vI<n#Af(sk(FVRjGOxWKmc3s;gne)sSrc)2=`1TC$3b2c*UW%Lb|O
z@bVjC;{bd>lVgjod^Vo!PIf~CZQ7mQd-z`-{fnbd%Ei5d(%!*edZoSRDdGajriDW!
zn<4~+xzNs)R6J;3xFHs|EEX-EUfTWnAg)DX@&34N&F!7P^TY3b@I6Gkw@Ys5u?&ue
zHCNI6`30Nk;w2ZKa`8ZtqbTl|iW)?FqhxPP*&EYjA4P4AjvXwBpZUsFJbz)KBH1ds
zIwTjFUCHw5bk846Ih)s5Wa-1YMU=Wra_vgFc2TJ$G*^iBD)_s?xpl3jZLw5pKe8MW
zTZW_-XtH1(VS(ssh@VZ&5<Y_|vfIKfw&h0`Ke@QrFV^moYIiLaOSL_)paSx<iD0r?
zbahIu&J;T#jynoh?fi<JPi|X+EB|51emG@6yl%BQ1`TOg->W-Ut9w?edzP;JbmYk^
z(!Mk4ef>}Rq<yDJ>>nhgB8;DZTHUf*-L+EPwdj8wUiL}dC(_+VmS2&&k5jrnmaY%!
z;^&{On~g75Hp}(w8PQ{DV&K7$=x&tUjno`%WHdheN9P}&2dxdsZE*|h58$<oc?InA
ztKNncZ$om&V)XHMrJbil?`g?<I&PJ1LNw+3pF8?W29I&SJl1`-+a&9+RnZmEB$ko@
z@=Xektv@jSp!{Rq&P(|g;W=xNn<K|E^eOpBqGN45^n-QQ)mYfBwKm^WrwJ%8rz*=6
zqcG5`@FJb6%$mcZhL?oGq&V5NMpYq?<FpRJC{Y!(^+Jg*1~twJ#|#eDDfnLL=AyA4
zA9Icn;ZV&5s}y#3k)ey2V&;Sqq54L+`P<esQuoq16{m2)1FO0{W*9RBNibAJ|3`*@
zW|%8T7(?q2gjFG4+y1b7XhhBX#+Yd=Z+gY@r=ktHTrtB<wMDeK^=&Y~B@FKj%|Rf8
z(v(r1u<+9LQ)u9Kz)TxqCfbsNJ}2Vq>wY6|!n-*xL)(5AOvVZ@4Jw^;#aw=yqDXc@
zuyv_&Er+Q)o=KTAUpD{QKQ?^DoLWfr?Y$|!3V##6w54rId4;h;;HzDSuLeE7wwPEI
zYH_NE6Vt+ugkk<7Yl{|L*>zjciLQn8rKzp8Jz)qPMSH2v#Edf-guT(O9PRn-`rJu%
zx|B<Usg6UR3N~vj^!n|%=kL&SdSgY&O{Zc}()21v%)VK>qi4Yz;GY<y&DnHNil|ez
zF^wuIZ~EpAosAyI<%t>MMi_G(@7s0!$EwFqzL_UxLNBt;VvN!+d7JZWRU=?m<&H5=
zK1?x-(BUs2BhIJBIdAk(4!$T!)yi>GUD|;qan_jku~YwbJ<M|jA-A@qm^(lI<$MpK
zN3(D+HB5c>=_a4O)0dBa^?xySOz{Wh(f({2nr24_a!-0p2sOI?(UeUWE4W{t;|u!l
z%$0=t^2#SKS>?zpzjO2Q<K>_M7Yusfp8AnlM_($fJucLjJ6EDBR~-v<Z?|V*(!C|~
z0Xt$P`g-Y~WNP<Yb(9U6>kC!xnk&_nOA|r4TtlqXZ+%>(r<J)fU22-;u|xMZS4PQZ
zW#}P{+3uIKQRV;EDVIz2sZ{gktI^l8--K#5k2ayi)W&-BW#q+rv0%1TLmfJ4EHCZL
ze&<E$7Gtd6mV+T?^V<j)p^oSqnp$FCy^R#6ubbdSNg8=+vr-`+bmmIU-2o3aEORy8
zH~s{i=?nbJ2UK~sSlJkD$XeoShLEl5AYLVtEt@!Nl^D#FIyps#rzmZX*`_QjZ&%Dt
zc{&fZG$>l242fcIK3VfY$`#s+MWft!L6fMWKiJf+xN%#w901S`^oOy3;HY8~V_FEl
z4Z0C545i(v0@3!I)f5XYZUX}&!(n^~`if3vyFAVIRHSaWgk-@mHhY1xLD~NWiZ)o^
zXw3k_1^hIzc?$Nm!~*<C@J5I*ht;&$!wGh29duWq2+}Un-=%CfL*G$!B!C5)k}Y8A
zqc5-x_OR=yqD5nxMYeW8t~J1nY}^r|75fpYprCQ(4R*Hp%n)tGqwK^(dOBu`*21mX
zDThGE?u*yMk-%>(^L3Uc7~N!3E2T6QyyqzcK~-71GU`FAA=In{4Um*ur@{7JnNfB)
z0V&YlNw9cMu~iyGAAHc?&J?jIRWbZ48|YA3bey8?l1OW*XbH)4Am?VrC}6Wq`(OZX
z*WjF~wDJgB2li{shl>=#&!b>+b?|9=EcT3r1{rHMbme8;1fYf<C4KT37IfT|-6M2*
zTB25L{}aAV#HyB%v1d1L&DazT8~m>n4filpN6NZMdsbOWdPv`$kj`okW+QvUk!bdZ
z2E`xFHV2D+jCsSs56*s>W5#-|#a@_1`b<Hthw7~MLI|<5hqkcSGk(UL{uuMw#0{<j
zLqvpxsb{d+*AL3)k~dkfxcf7g`a-tWmxDtv-k~5tVVCX3j3tT<CMK{N2R(B0O7r-H
zTImAWQ6V=-pz5$BY^Zw1Oxt{9Ot-OlnF$5(yzHv*yH>hgTj`c_DRwRmB>jtf9|h$n
zgsjq79%b><lCRGV8M6-><ZlfHv!xxI9J9L%h^37Y$==yu0f_K9M;(R24j1T9MPn4n
z`rn*Dp!#%FVMT%}*Fa)4L;-vD&`Vy5*GDyZeF*;)Y1)mlj{H3Cg<A+BlvnWu6z=1G
z_TbABPS)S!D4~#sUd7$Rb0p<CvgrN8>V>{fu_A;#{O}_0lrh>RP&MW470%M#B7%%#
z@XD1-L$qmb#ypPwi!v5QyqTiup_B5)$?RF6?LdTU6m(Fq8v*uz&@<_b16zMVX+9l_
z%G)-OAS(zIyh{No_5=q7J_^`g421rS`4TN8Gh>^jDS`ScQ_EAUGi!j*z|utD^-pFT
z0hn=^yH#$jSPt76n-4ZCY-b9FF%kAf_xEJ1)1e^7M(lwh+`u9R0iGzqNXUnEXs9ym
zM419#l-AxwNA~z-%Y?}nx|=D6tpMhe5shJ`y@J^ngdY*?{{sb|5nM*HA}FIzrU1S=
zS<8b{Ge%_Wrxm^>W3KRq5T2gGPFu`WBeNP4_<P2LR~f@p#!k4vvNr6UO<SP~OY|u$
z&l5(18QVp+Kp>K_4f}>ig8rF|OUv1Xe}S|SnsoF0HGbovIK>oWkfv>H0uw5unr(R@
zviu8ljL08a!Mnh`etp8gl~*lPe)!IVcd+~bd(=4B?N}B!e{9uRzv8SHoeh$+A$fJh
zxijV532kw8qg1tHap3XUrMqHPpH$Vy){QaseS8qA@vX9cRk7{U*~R9^onrj~ss6xn
z>CbD$iqlfXY2+%PT)iphwzaZmsjOQp+a;ClqV)(*%c>rH2g?#rZ25xsgX8hz$;SJ~
z(^#U{_W_wfV2L=kTGF~w(khm;OC{}#S6507q)HAf_x$|WYVXCB-iu=ID^l+(sn<qU
zdPh>dBkAVO<ly3)spdhPfMJ__ml*nR2y3ENn-8rtA4*p>BpV*qByTRYrYaAAZ8El0
z|B6FEiQpVtUB58%@Oz6sseYGOwOgv%z0Q?-2VgIuFwvK;s9fm#=yu{ZTy!5ETdmo-
zQnOR6*)7%VUb?zcb39dZ{7KJWA6xBzW2OHMvHvZp|E<(JH&*&@r2229J9`!fv99gS
z<(Xd^e*WF%Npar=Y2SrZ=Lnsbu1J@DPrhFmS{QoTxofqvZ>6&@-O#?+@Tg|-=5lL_
zKM8QV8Ub!s<H8Wo)(q&3Rp(&Ap>Ux;UEi3zxl+F?Rlh5}zyC?Uw0|(Q?`*Pgaa82@
zJX^Q0w02sq@{*u8b|l-r-1GS0(wob^pMGa)NZfH!+Ho?~_!`b9{=W{%cMJUs{ZAXW
zuQnc7X*{q2@FoJhsd1s70EhFkv1)(;K9C1E-?ca@@q1SJLo58D<)-D)pSOv8zr^>a
z`2J^KqYlW1I<%t%?^!AVVWK}>QN3_;1&i=1+SWR|9}h0Q^JFhfGh*kU)H%3Nm>d-=
zJ1940v2#VmQX$q?7CZJP_k2y4HE-?08=|)bs~1<j9V_0B#r>jpkL1MyQE%biB_CkM
z+MSoA#(Mrow?Dc4;~R_PsqJTRE;s+YTfR$g?_PYD{(jc@(~iYCY5P&wg!tny9r4E#
zgNZ@(#99zyIxBlX=J;7)`JA}_jI{p@9>jVqZyZeXtqXS-tHt`gs95bjptp8kVgR7>
z4fNrpU)tWgd_}B3Db=4$3_dNXUgs>{z3G~xOJ`CwM{y<w)|%VCEPY(HbnwaH^uZ%=
z+U__8(_qIjK*H`?2&R_fiJ=79l3LmqD?b~4G@KY(Zvt8vZdmX&Vd+;C<lb#|$K1O&
zruuaoSJRvvcyt~MU}e`kEI)M=v*7-@_^HI+ufP<#zAP2p-IBW-)hIl$R$cqBBl*tK
zUa94PSbb2cKA5m2Y+qq*?GQ|_-d&OxrdOkqP8DBpvpj@AY&j>joLk$`^%yHS4K)W)
z>6!y%xjTR|$}1lPe{6i@{PHB|=nb*+sML8><c~@GvE_H^?@7aQRN@E3@>5dzsrZ>S
zI1e65zPWg3`4#kkvF5l`b3A@wt-j&m+?uEOfn%XHd0@$#^6V8odnM0a^kKdjZN(SI
z&o7unS8d8wi#>l_?)V+HQhE1^vo__dU2}O8&G*mG!#+s2+Z7K-mp4^>CS6>;a6l?<
z0?}x_>c84F3);<9o|ydc717xtIbnr0Ir<Ih?R%HbN!yPDgaXmklyWt#6?$aBWN{K#
z(Q`yXSa?J##Oh>&lA}-BzJF;}+I~{W22vwiY5fW|9&(i?ZY2*ao>{tz3Ob5VK}Qi9
z0D+zJ)GS;`x!Y3qwnzy^zW-%k|KW?hroZhqUp#J084U<^yA!Eij{h0*l-|6UQ$a(?
zp%MB}s&YiLH@N0Jr8f8S$~RU*39Bka^kSr52{UJeQPbo%U>TdnuP<k6glhBen8zc@
zRP4ad$1rGxzla%gi&g!moV4#Z-6G+N6F!Wp3VevRMp>~Jvuv%{!`E(OnVd!E)s&~8
zCa*-8VabRH(Lg?O@ZL5E1DnSr$**F=vC#()#>cE7upT9m9hn`uZzNTdU^b4f@X>?3
z@&*3o1FEQOjm<IZm<B)C%Z{nc=I?~+b7{0#K?(~~s=0r2e9Y`O%>u$X^SlIDH@1<@
zZ-DyV<d;k9)=o8YN_uz@Dv<gOS|~KFt63t6g^if2<$nJtTe|Y&JpU93P-oUzVHCO}
z>?n;TS`*~p{hA{2EAva{TZBbc5llPb)E$INk>auhm4&=xy;`9BlL2sIX9_3P(F~jV
z3gH`YM3ePCYVsG;!7&v9{R+SythSr#W`aFDx|pJ)tw~kFHOcApi|c4gm{T#xyGJmv
z<Za7IW5Q%#rg@lFHY`!$d!F`ZgT9A82Nj=;E2tjjvK6<myvoaN_l5M^8WVvo2AZEK
zGlqpPK%(s)%{=K};{_%|*esVOHP&dDElP8;;^k`Rra_tPYGj%=%M&g(^&&F~n{Z{U
z7pJH2`#123V!9Trfo5yy+U@eh<{l-aK7`Hiuu79{@nOOS?!w<u1XG8QyVMBgDG?&+
z?9_reLJ2>|o7sj<CJ_3G<Qba4ega~|)S;P!yU%zc`tj^Xvp;Tp)Un#QccpRf(rK}=
zS89Y@AsrnOD~6?tVX^3<RCF<JA{nVXZci7v<0g{bd$HLBgaAhw3*!Ax*)9sn<16kx
zDfgaqN%@0A3$Hvlk~DmDEOBhDt}(ec`7Zq}mL#Vi9Tw}lu>l^oODH?Uf(1jmvE|33
ziw&QRJsSJ0W5JfLX~cwMht$!Vs-ZItu@>7)bgkC*tkm{k+^#(;)gDdN9!=Nt$-Yl+
zFWgS^&5xWCzk8KGxWXS?E)n^o5`Q$sA5C}eTr#k~rX}B!?eT>Ld$K~TY)@6TuNM*k
z9uCe%2KLvqXnAxlF}QH~L&!uJ+Zvj&IFkNGlcydPB<u?%9~P!v?!@l<gYo`&KT^0n
zlCx&vy%lG7%GsT6Zb|Nq4<@d{Ukc7rUp2KnI<)x8Vq|GI`+H?+@8g-r--El*&J$0(
zVpG4=)UTwbakMh-X6k}bm5HNWskKQF^i2=$uqeQ+vSJr)Fmw}9@_{8_rcX_C){xUr
z16TGntvF@xwOW+iHgHKQd&3dS8(`qPPPzl-$PJ_9m7*U?;s0Wbe5hTX21cr}Xy^w7
ztxNngC%hT6Z@vI6e*xT_V=F(MoEMG$OBhDmm_4!p9wUw|20o`AR;~ZQW4pedu=2Nu
z>HzPiL#W@XFKJ`$mxmwTE^)O6wn){MxN^jtBoOH9Kj#WnB8NJ3XWNpl{w;FAO}s!6
zY+5yR*AR1UQEO++Og3z6TC4Hn*jV?_UHqP(YR!fqm$QxA2^LVSi<P8xdDjUNbA_?I
zlt=X?db0JyhPFCr#_|_k7KJLY8%Sd|J=+b$NrH;D4s%7ieL%LVf1$kiBUZGr&Kg{{
zX>i%NB`%9z443dUDa0>$$yjsCSew&rpr^%d%$*ZS^XMaoQKgiB6d3g=Sl9%ksQCvv
zDpD6>z!GZm7d-arg)(?&*dk?H_L^cnK0>8i_LjVqb6!o`4r|(WFy`I5pHL5t88*^M
zRP_ize4eKqdL!f3_@&6LN(R-il06$s4t)hWDUtE{TTw_c`kaz~OWG)oc{b@`#T$B<
z1wG7@*Q>Uw({JciFNCci>RtLf)?3N{|7*QL`>ZWDp?%QirVD;Z=}&^JeBg&#%V6~{
z_xZFFkere45^d&@`=L*gDK}f8oU>Y9dF#?CRZyqo1E((czk2r4m9rOzbLM4@?i~||
z7t5n)(_c7!&RYIr<>yR^&;5j2!RO6H@;3t^U$#uashOz(<_0i=rM~0-v3(iG>-2LZ
zm+?!t8H10_GiDuGtLaV{+sw45#jN?%z+3XNU|30LAM4qIoov4onEFRD4$bW_+suVh
z6z!z@TvVa%QTQ1FWI8qQ=4>H?Txqjjdeo&IZZFGQJR<xN<u;G+o4P9m*e#pekYO$3
zl9xD*FiVQ?S9qnF3Kc1lR4aH~WK7rxDmSgdc7pH`8NHRUpAXz+TRaJWL;1-*h6O1T
z@FQq1(HMJD6q%vmGYZJ|ld%(8*_I#$bT`6Qxd?L<<+>qEjbxEaTNesv{WHuelQARe
zEo=`p;RmLL|3;;?QScurA4R^IDMh5lgX9u(AYn=^BKEvPo_hUz<lfYFv(bn(N7Jto
zsGzX$WDn;mNnHQnX#8lpq6fOsv#E+6`HT<72cK5#P4+xGl&aV(pYg%9vWf?9eEfSK
z{a$iVEbEfWy5a?E?vnYt3zf;eqPtacV`Fg4&^%BA+a1FO#3jxr3#8H=qPtUacmB+r
za`)iGN|n|6U9cf6)rj>+rTU`@*IHBO;+4nWk-CnFO~<7steZA@Q3`?&&nHg9>QKtB
zmhN0B-I=be!McK*QX|y%QsXgfjaRnoYtC3k29`49Py-VcP{3g^f~RT4)08~7^qnWw
zWDD^$iJl?JGnDd>y1BL`dF9b}q?Y|+%>k+Az&cm!I0s7%h4;_LPebWnQU^E+JF&iG
zwW1B$|Hbkp)92M<MUPa`lQ1XDSZ4F_%ttdxYcld#fmpFas@Q>-&?Ud}!F%!dpsu|B
zCr6V<v3rROh-L-&^7&tyB<y{nfe1jYn=RhXwYvI;Zzlbz9p{#s5a4`LAz!8K=f%1U
zQr(5b>2xK2X!c059|6v#1M)Rhc~sUGk1gH;j=GPfTA(mKA=R8n3?v4gtyRD%Veoe5
z0_^jij7T**C>pAL6C!B?uPngH^Gi0d`M|QD!Pzf)`codvv$w9_p(R_Y`4G-@d(YBk
zsr?Wd$=eL=x3?GCZ*MPsxtBezTdm&Cbj`73Q>x||&ZRfxD{KaG{TF*4-4yF~OLe=I
z+Mb}=p1`?uN4};i`~E+zZK|0p7tKd;J{e#&J}Y_7raWgw&smU5W%Yx*$;!n8%idH)
zuUOG5RrJPP>79pC?%{ZJ)y=QC`DB^g6|j}#a`b<i`5$L~Y57<0{rtVSIqfWyEszU$
z78^gATbN6`Jgcty6<2-IwrKmzy)>S3)r+p<lIwWNbsSp@Bo5q<&BqqrMWHD-uToI9
zK_(b@=Oxeiln3j3tk%Njbj7aZom9mxoC)(<Yx|>_B{P-~6^O09Qfn`^%)#z(sj5AT
z6$t1o-Mdy%_26!*asRR_)o@BSrxH;=TPva88ZKnJ1<66WqKRS>X4-bAnJ7dB-??~3
z<o7OP+s_>QU**HUZnS#a(lrMc@1$xD;zT3EG;(lhV7c_C=foYyr5(pprEQF+4=+`u
z>JHOc*~?ltwf*q&g;dK~vF4mqb52XgZA49SkgjRXk#L)igfA|g5u1CTz%v4!|BU20
zlk%KlhJ_y%d{A)THSdbEzsNc8(SO_0XF0vY`0sWUpW!V3?zjQrFI|1Mv!%wrDJ?$R
zZuy%w1HymL_YT!^|Do13w8QitIt&Q^*V^8TmE7M}x-Pbw{&u?op>BI1(p)eN${@lY
z7|9E1&V+y6rV2UJgI<Qh9(E9(vPVvDlCRo^eqn%Z*I=Eqkq!jUy>kxuIXSQpecwx&
zEiCy9&9T6Hi+wa>8<scEADKTDGvVuzIp-FTJM}Xiq<vchxgF1!=UguZu{Gw>Yez6Y
zH*day0~G6pNv(b>i`osw0_}znBnRuEhW_Qs{5$he?c(s5S)T?*7kR$)r`i=>ITb#w
zBA}8t=&*`nMf*6+P|UzZ#he>n{RJwRnwxx|dcahPxrUYg^!V6%r$V;=z=rh)S}Jp9
zKa#&mM!tVKOjHD8`J89-b!J#=fO5Z3%LarM+BtLndJ*_bYxFX-Nfox0%F~!&R$;}g
zqG0yFtCI57;1rA)aG)gJKHFv|>nur5Ve}I6dK-R=)DQn#HP?$xKd@|>ZE6I$9geYT
zW)j8*vOko{HZjUgK=83mQbXP(2x#vqd6zk|Noc@%S#ke;G*ZqH66>|G1D-I2m%}<A
zH!}N?S@fG)1gbkA_AMeG$lKhXTVn>e0y;Kv1(df&B?CZ&$XM?QxMve>KL8k!Hywy*
zwkuM%|D%nwBim3CT!&Is=j1clvpo9b%JQw{TMNw;F5hA*XyIQX-E1?}30`~=dABWD
zu=ndcN*fB=-SUd_%gB*2-|<b{((LK#!%Ja-0w&<wP#zQ9ZC8U+r?DTCaEIdNDfnXq
zFpo?|g+PFLgSC6vJRoDwk^nP?$dAkxBmYJi+gx0J%T|+{g>X2UaUv58VqpQhE3lo3
zGLGz<yZCW2_JhfnXlHaKA)_%NMli5_2U(n*FiP;U$px!c#ET>woV%30jwrd(0GsZ0
zq>2CEX)>@20U85)3o_FRZ6XUv2iqJS`mpywZ`}S>TgPMDl3i>&B(=d#VsXIf0fFdh
zjt?YuEKH~CF#ehg@fJbC@wB9Tp*>a7gmbN-=~2a>*8WND;`p*dY&a=3oJ^ccm)3rK
z@uQ2$b7JXEsdQ(mbmy~m2W2nfY9VP@9B1HgLm`|J;AL}W>Acu^Lh3w0#Zwf8q6fQA
z!xvy*n#VSNCNI6GFfsTQTq5rLDE3KgabT%UtnZcTdlQ4{(rv4yEi0uh$<f8OKkxpt
z?&V6c<D}Ga^2u(g<CM7llvsLNDm|TI=emuRXQJ=?x`=!xX73-LKfd6DFI&o4zgDsB
z!F$P>CF^JJEt|xOBT~hY_+Z+L&6-Sw@E1bxw3ZgFd+~rEF+lYl{%APaBbK&FrEQRL
zaFUeWzHZ58VfnBPdtp1aVONUD6_|I&99%X@g>Bo<8`LfZSE|EHqn{std>pUDs&i7+
zx%j!Km9&6ck?J5JddeRZF8D=HljLcFY=kq<zvInR@qm1au2YihRLXVgsl6y}jgXr2
zughu%j+*}ZsQHw^_HWGwgzW~Q9}(?lX5y58X6_1l5OE!Wc)CD6KVusi@rOsT5i@ZV
zOop%DL?>atJSLo^MDI{=gM#0u;14Jufk^mI6#Se5n(+!H7*b^4<tBP0m;`ccV8J2W
zM23*!p8B_LeBEHNuX8K}h*meYJGSt^?}i}pI-0}6qd6@6*CwQV|1CLf0oT~EWM1~C
zYw8wXT^@kFZ!x-jJ>Ar@bn?k{%xo72@Uo$0spm;!nr~b(t{2u>&_DFS3Bw741(drX
z95hx~%GWtH=&7e<YA|4EwV(yn;ELgbfzoTj-!pP24FiUB=dN|rWupaDxFNi0-fO{D
z&T23LR|E?zsG9JKX}`t2&TR~2zD!8Q&$T&8yTX3A9qf(TQs%+LLxukn0e-DvdJ>u&
zvK|T_Pymf98hi?#1-^(dL~s5LrDH#17ljLOgn9o8zo3{!ig9T@j0N(X5lSd1qo!wV
z-AIpW`+sXc0^2x#nemuVgCsb)$p3)=9nN5Y$Zu#&aSht@Dd)Jy{?c6GJ@%L8ocGvY
znk!CaPtD7sd+aaGm87y~nk!Fb&ooz;(w}PHr=0s9`+LeYr}XE#oj1T4O$|;P{7wT}
SVDoUH{A(8Tt1aRgKK@@2*W9!K

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/pylink.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/__pycache__/pylink.cpython-39.pyc
deleted file mode 100644
index 746c82eb52be2e437c61bd201433f9d38b8ab177..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18646
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/pylink.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/pylink.py
deleted file mode 100644
index 8b826c5ce..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/pylink/pylink.py
+++ /dev/null
@@ -1,797 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-from dataclasses import dataclass
-
-import os
-import shutil
-import h5py
-import numpy as np
-import time
-import zipfile
-import pandas as pd
-import multiprocessing
-from functools import partial
-import tqdm
-
-import umbridge # TODO: add this to the imports!?
-#from multiprocessing import get_context
-from multiprocess import get_context
-
-
-
-def within_range(out, minout, maxout):
-    """
-    Checks if all the values in out lie between minout and maxout
-
-    Parameters
-    ----------
-    out : array or list
-        Data to check against range
-    minout : int
-        Lower bound of the range
-    maxout : int
-        Upper bound of the range
-
-    Returns
-    -------
-    inside : bool
-        True if all values in out are in the specified range
-
-    """
-    try:
-        out = np.array(out)
-    except:
-        raise AttributeError('The given values should be a 1D array, but are not')
-    if out.ndim != 1:
-            raise AttributeError('The given values should be a 1D array, but are not')
-        
-    if minout > maxout:
-        raise ValueError('The lower and upper bounds do not form a valid range, they might be switched')
-    
-    inside = False
-    if (out > minout).all() and (out < maxout).all():
-        inside = True
-    return inside
-
-
-class PyLinkForwardModel(object):
-    """
-    A forward model binder
-
-    This calss serves as a code wrapper. This wrapper allows the execution of
-    a third-party software/solver within the scope of BayesValidRox.
-
-    Attributes
-    ----------
-    link_type : str
-        The type of the wrapper. The default is `'pylink'`. This runs the
-        third-party software or an executable using a shell command with given
-        input files.
-        Second option is `'function'` which assumed that model can be run using
-        a function written separately in a Python script.
-    name : str
-        Name of the model.
-    py_file : str
-        Python file name without `.py` extension to be run for the `'function'`
-        wrapper. Note that the name of the python file and that of the function
-        must be simillar. This function must recieve the parameters in an array
-        of shape `(n_samples, n_params)` and returns a dictionary with the
-        x_values and output arrays for given output names.
-    func_args : dict
-        Additional arguments for the python file. The default is `{}`.
-    shell_command : str
-        Shell command to be executed for the `'pylink'` wrapper.
-    input_file : str or list
-        The input file to be passed to the `'pylink'` wrapper.
-    input_template : str or list
-        A template input file to be passed to the `'pylink'` wrapper. This file
-        must be a copy of `input_file` with `<Xi>` place holder for the input
-        parameters defined using `inputs` class, with i being the number of
-        parameter. The file name ending should include `.tpl` before the actual
-        extension of the input file, for example, `params.tpl.input`.
-    aux_file : str or list
-        The list of auxiliary files needed for the `'pylink'` wrapper.
-    exe_path : str
-        Execution path if you wish to run the model for the `'pylink'` wrapper
-        in another directory. The default is `None`, which corresponds to the
-        currecnt working directory.
-    output_file_names : list of str
-        List of the name of the model output text files for the `'pylink'`
-        wrapper.
-    output_names : list of str
-        List of the model outputs to be used for the analysis.
-    output_parser : str
-        Name of the model parser file (without `.py` extension) that recieves
-        the `output_file_names` and returns a 2d-array with the first row being
-        the x_values, e.g. x coordinates or time and the rest of raws pass the
-        simulation output for each model output defined in `output_names`. Note
-        that again here the name of the file and that of the function must be
-        the same.
-    multi_process: bool
-        Whether the model runs to be executed in parallel for the `'pylink'`
-        wrapper. The default is `True`.
-    n_cpus: int
-        The number of cpus to be used for the parallel model execution for the
-        `'pylink'` wrapper. The default is `None`, which corresponds to all
-        available cpus.
-    meas_file : str
-        The name of the measurement text-based file. This file must contain
-        x_values as the first column and one column for each model output. The
-        default is `None`. Only needed for the Bayesian Inference.
-    meas_file_valid : str
-        The name of the measurement text-based file for the validation. The
-        default is `None`. Only needed for the validation with Bayesian
-        Inference.
-    mc_ref_file : str
-        The name of the text file for the Monte-Carlo reference (mean and
-        standard deviation) values. It must contain `x_values` as the first
-        column, `mean` as the second column and `std` as the third. It can be
-        used to compare the estimated moments using meta-model in the post-
-        processing step. This is only available for one output.
-    obs_dict : dict
-        A dictionary containing the measurement text-based file. It must
-        contain `x_values` as the first item and one item for each model output
-        . The default is `{}`. Only needed for the Bayesian Inference.
-    obs_dict_valid : dict
-        A dictionary containing the validation measurement text-based file. It
-        must contain `x_values` as the first item and one item for each model
-        output. The default is `{}`.
-    mc_ref_dict : dict
-        A dictionary containing the Monte-Carlo reference (mean and standard
-        deviation) values. It must contain `x_values` as the first item and
-        `mean` as the second item and `std` as the third. The default is `{}`.
-        This is only available for one output.
-    """
-
-    # Nested class
-    @dataclass
-    class OutputData(object):
-        parser: str = ""
-        names: list = None
-        file_names: list = None
-
-    def __init__(self, link_type='pylink', name=None, py_file=None,
-                 func_args={}, shell_command='', input_file=None,
-                 input_template=None, aux_file=None, exe_path='',
-                 output_file_names=[], output_names=[], output_parser='',
-                 multi_process=True, n_cpus=None, meas_file=None,
-                 meas_file_valid=None, mc_ref_file=None, obs_dict={},
-                 obs_dict_valid={}, mc_ref_dict={}):
-        self.link_type = link_type
-        self.name = name
-        self.shell_command = shell_command
-        self.py_file = py_file
-        self.func_args = func_args
-        self.input_file = input_file
-        self.input_template = input_template
-        self.aux_file = aux_file
-        self.exe_path = exe_path
-        self.multi_process = multi_process
-        self.n_cpus = n_cpus
-        self.Output = self.OutputData(
-            parser=output_parser,
-            names=output_names,
-            file_names=output_file_names,
-        )
-        self.n_outputs = len(self.Output.names)
-        self.meas_file = meas_file
-        self.meas_file_valid = meas_file_valid
-        self.mc_ref_file = mc_ref_file
-        self.observations = obs_dict
-        self.observations_valid = obs_dict_valid
-        self.mc_reference = mc_ref_dict
-
-    # -------------------------------------------------------------------------
-    def read_observation(self, case='calib'):
-        """
-        Reads/prepare the observation/measurement data for
-        calibration.
-        
-        Parameters
-        ----------
-        case : str
-            The type of observation to read in. Can be either 'calib',
-            'valid' or 'mc_ref'
-
-        Returns
-        -------
-        DataFrame
-            A dataframe with the calibration data.
-
-        """
-        # TOOD: check that what is read in/transformed matches the expected form of data/reference
-        if case.lower() == 'calib':
-            if isinstance(self.observations, dict) and bool(self.observations):
-                self.observations = pd.DataFrame.from_dict(self.observations)
-            elif self.meas_file is not None:
-                file_path = os.path.join(os.getcwd(), self.meas_file)
-                self.observations = pd.read_csv(file_path, delimiter=',')
-            elif isinstance(self.observations, pd.DataFrame):
-                self.observations = self.observations
-            else:
-                raise Exception("Please provide the observation data as a "
-                                "dictionary via observations attribute or pass"
-                                " the csv-file path to MeasurementFile "
-                                "attribute")
-            # Compute the number of observation
-            self.n_obs = self.observations[self.Output.names].notnull().sum().values.sum()
-            return self.observations
-            
-        elif case.lower() == 'valid':
-            if isinstance(self.observations_valid, dict) and \
-              bool(self.observations_valid):
-                self.observations_valid = pd.DataFrame.from_dict(self.observations_valid)
-            elif self.meas_file_valid is not None:
-                file_path = os.path.join(os.getcwd(), self.meas_file_valid)
-                self.observations_valid = pd.read_csv(file_path, delimiter=',')
-            elif isinstance(self.observations_valid, pd.DataFrame):
-                self.observations_valid = self.observations_valid
-            else:
-                raise Exception("Please provide the observation data as a "
-                                "dictionary via observations attribute or pass"
-                                " the csv-file path to MeasurementFile "
-                                "attribute")
-            # Compute the number of observation
-            self.n_obs_valid = self.observations_valid[self.Output.names].notnull().sum().values.sum()
-            return self.observations_valid
-                
-        elif case.lower() == 'mc_ref':
-            if self.mc_ref_file is None and \
-               isinstance(self.mc_reference, pd.DataFrame):
-                return self.mc_reference
-            elif isinstance(self.mc_reference, dict) and bool(self.mc_reference):
-                self.mc_reference = pd.DataFrame.from_dict(self.mc_reference)
-            elif self.mc_ref_file is not None:
-                file_path = os.path.join(os.getcwd(), self.mc_ref_file)
-                self.mc_reference = pd.read_csv(file_path, delimiter=',')
-            else:
-                self.mc_reference = None
-            return self.mc_reference
-
-
-    # -------------------------------------------------------------------------
-    def read_output(self):
-        """
-        Reads the the parser output file and returns it as an
-         executable function. It is required when the models returns the
-         simulation outputs in csv files.
-
-        Returns
-        -------
-        Output : func
-            Output parser function.
-
-        """
-        output_func_name = self.Output.parser
-
-        output_func = getattr(__import__(output_func_name), output_func_name)
-
-        file_names = []
-        for File in self.Output.file_names:
-            file_names.append(os.path.join(self.exe_path, File))
-        try:
-            output = output_func(self.name, file_names)
-        except TypeError:
-            output = output_func(file_names)
-        return output
-
-    # -------------------------------------------------------------------------
-    def update_input_params(self, new_input_file, param_set):
-        """
-        Finds this pattern with <X1> in the new_input_file and replace it with
-         the new value from the array param_sets.
-
-        Parameters
-        ----------
-        new_input_file : list
-            List of the input files with the adapted names.
-        param_set : array of shape (n_params)
-            Parameter set.
-
-        Returns
-        -------
-        None.
-
-        """
-        NofPa = param_set.shape[0]
-        text_to_search_list = [f'<X{i+1}>' for i in range(NofPa)]
-
-        for filename in new_input_file:
-            # Read in the file
-            with open(filename, 'r') as file:
-                filedata = file.read()
-
-            # Replace the target string
-            for text_to_search, params in zip(text_to_search_list, param_set):
-                filedata = filedata.replace(text_to_search, f'{params:0.4e}')
-
-            # Write the file out again
-            with open(filename, 'w') as file:
-                file.write(filedata)
-
-    # -------------------------------------------------------------------------
-    def run_command(self, command, output_file_names):
-        """
-        Runs the execution command given by the user to run the given model.
-        It checks if the output files have been generated. If yes, the jobe is
-        done and it extracts and returns the requested output(s). Otherwise,
-        it executes the command again.
-
-        Parameters
-        ----------
-        command : str
-            The shell command to be executed.
-        output_file_names : list
-            Name of the output file names.
-
-        Returns
-        -------
-        simulation_outputs : array of shape (n_obs, n_outputs)
-            Simulation outputs.
-
-        """
-
-        # Check if simulation is finished
-        while True:
-            time.sleep(3)
-            files = os.listdir(".")
-            if all(elem in files for elem in output_file_names):
-                break
-            else:
-                # Run command
-                Process = os.system(f'./../{command}')
-                if Process != 0:
-                    print('\nMessage 1:')
-                    print(f'\tIf the value of \'{Process}\' is a non-zero value'
-                          ', then compilation problems occur \n' % Process)          
-        os.chdir("..")
-
-        # Read the output
-        simulation_outputs = self.read_output()
-
-        return simulation_outputs
-
-    # -------------------------------------------------------------------------
-    def run_forwardmodel(self, xx):
-        """
-        This function creates subdirectory for the current run and copies the
-        necessary files to this directory and renames them. Next, it executes
-        the given command.
-
-        Parameters
-        ----------
-        xx : tuple
-            A tuple including parameter set, simulation number and key string.
-
-        Returns
-        -------
-        output : array of shape (n_outputs+1, n_obs)
-            An array passed by the output paraser containing the x_values as
-            the first row and the simulations results stored in the the rest of
-            the array.
-
-        """
-        c_points, run_no, key_str = xx
-
-        # Handle if only one imput file is provided
-        if not isinstance(self.input_template, list):
-            self.input_template = [self.input_template]
-        if not isinstance(self.input_file, list):
-            self.input_file = [self.input_file]
-
-        new_input_file = []
-        # Loop over the InputTemplates:
-        for in_temp in self.input_template:
-            if '/' in in_temp:
-                in_temp = in_temp.split('/')[-1]
-            new_input_file.append(in_temp.split('.tpl')[0] + key_str +
-                                  f"_{run_no+1}" + in_temp.split('.tpl')[1])
-
-        # Create directories
-        newpath = self.name + key_str + f'_{run_no+1}'
-        if not os.path.exists(newpath):
-            os.makedirs(newpath)
-
-        # Copy the necessary files to the directories
-        print(self.input_template)
-        for in_temp in self.input_template:
-            # Input file(s) of the model
-            shutil.copy2(in_temp, newpath)
-        # Auxiliary file
-        if self.aux_file is not None:
-            shutil.copy2(self.aux_file, newpath)  # Auxiliary file
-
-        # Rename the Inputfile and/or auxiliary file
-        os.chdir(newpath)
-        for input_tem, input_file in zip(self.input_template, new_input_file):
-            if '/' in input_tem:
-                input_tem = input_tem.split('/')[-1]
-            os.rename(input_tem, input_file)
-
-        # Update the parametrs in Input file
-        self.update_input_params(new_input_file, c_points)
-
-        # Update the user defined command and the execution path
-        try:
-            new_command = self.shell_command.replace(self.input_file[0],
-                                                     new_input_file[0])
-            new_command = new_command.replace(self.input_file[1],
-                                              new_input_file[1])
-        except:
-            new_command = self.shell_command.replace(self.input_file[0],
-                                                     new_input_file[0])
-        # Set the exe path if not provided
-        if not bool(self.exe_path):
-            self.exe_path = os.getcwd()
-
-        # Run the model
-        print(new_command)
-        output = self.run_command(new_command, self.Output.file_names)
-
-        return output
-
-    # -------------------------------------------------------------------------
-    def run_model_parallel(self, c_points, prevRun_No=0, key_str='',
-                           mp=True, verbose=True):
-        """
-        Runs model simulations. If mp is true (default), then the simulations
-         are started in parallel.
-
-        Parameters
-        ----------
-        c_points : array of shape (n_samples, n_params)
-            Collocation points (training set).
-        prevRun_No : int, optional
-            Previous run number, in case the sequential design is selected.
-            The default is `0`.
-        key_str : str, optional
-            A descriptive string for validation runs. The default is `''`.
-        mp : bool, optional
-            Multiprocessing. The default is `True`.
-        verbose: bool, optional
-            Verbosity. The default is `True`.
-
-        Returns
-        -------
-        all_outputs : dict
-            A dictionary with x values (time step or point id) and all outputs.
-            Each key contains an array of the shape `(n_samples, n_obs)`.
-        new_c_points : array
-            Updated collocation points (training set). If a simulation does not
-            executed successfully, the parameter set is removed.
-
-        """
-
-        # Initilization
-        n_c_points = len(c_points)
-        all_outputs = {}
-        
-        # TODO: if umbridge, just run, no parallel from here
-        # If the link type is UM-Bridge, then no parallel needs to be started from here
-        if self.link_type.lower() == 'umbridge':
-            # Init model
-            #model = umbridge.HTTPModel('http://localhost:4242', 'forward')
-            self.model = umbridge.HTTPModel(self.host, 'forward') # TODO: is this always forward?
-            Function = self.uMBridge_model
-
-        # Extract the function
-        if self.link_type.lower() == 'function':
-            # Prepare the function
-            Function = getattr(__import__(self.py_file), self.py_file)
-        # ---------------------------------------------------------------
-        # -------------- Multiprocessing with Pool Class ----------------
-        # ---------------------------------------------------------------
-        # Start a pool with the number of CPUs
-        if self.n_cpus is None:
-            n_cpus = multiprocessing.cpu_count()
-        else:
-            n_cpus = self.n_cpus
-
-        # Run forward model
-        if n_c_points == 1 or not mp:
-            if n_c_points== 1:
-                if self.link_type.lower() == 'function' or self.link_type.lower() == 'umbridge':
-                    group_results = Function(c_points, **self.func_args)
-                else:
-                    group_results = self.run_forwardmodel(
-                        (c_points[0], prevRun_No, key_str)
-                        )
-            else:
-                for i in range(c_points.shape[0]):
-                    if i == 0:
-                        if self.link_type.lower() == 'function' or self.link_type.lower() == 'umbridge':
-                            group_results = Function(np.array([c_points[0]]), **self.func_args)
-                        else:
-                            group_results = self.run_forwardmodel(
-                                (c_points[0], prevRun_No, key_str)
-                                )
-                        for key in group_results:
-                            if key != 'x_values':
-                                group_results[key] = [group_results[key]]
-                    else: 
-                        if self.link_type.lower() == 'function' or self.link_type.lower() == 'umbridge':
-                            res = Function(np.array([c_points[i]]), **self.func_args)
-                        else:
-                            res = self.run_forwardmodel(
-                                (c_points[i], prevRun_No, key_str)
-                                )
-                        for key in res:
-                            if key != 'x_values':
-                                group_results[key].append(res[key])
-        
-                for key in group_results:
-                    if key != 'x_values':
-                        group_results[key]= np.array(group_results[key])
-
-        elif self.multi_process or mp:
-            with get_context('spawn').Pool(n_cpus) as p:
-            #with multiprocessing.Pool(n_cpus) as p:
-                
-                if self.link_type.lower() == 'function' or self.link_type.lower() == 'umbridge':
-                    imap_var = p.imap(partial(Function, **self.func_args),
-                                      c_points[:, np.newaxis])
-                else:
-                    args = zip(c_points,
-                               [prevRun_No+i for i in range(n_c_points)],
-                               [key_str]*n_c_points)
-                    imap_var = p.imap(self.run_forwardmodel, args)
-
-                if verbose:
-                    desc = f'Running forward model {key_str}'
-                    group_results = list(tqdm.tqdm(imap_var, total=n_c_points,
-                                                   desc=desc))
-                else:
-                    group_results = list(imap_var)
-
-        # Check for NaN
-        for var_i, var in enumerate(self.Output.names):
-            # If results are given as one dictionary
-            if isinstance(group_results, dict):
-                Outputs = np.asarray(group_results[var])
-            # If results are given as list of dictionaries
-            elif isinstance(group_results, list):
-                Outputs = np.asarray([item[var] for item in group_results],
-                                     dtype=np.float64)
-            NaN_idx = np.unique(np.argwhere(np.isnan(Outputs))[:, 0])
-            new_c_points = np.delete(c_points, NaN_idx, axis=0)
-            all_outputs[var] = np.atleast_2d(
-                np.delete(Outputs, NaN_idx, axis=0)
-                )
-
-        # Print the collocation points whose simulations crashed
-        if len(NaN_idx) != 0:
-            print('\n')
-            print('*'*20)
-            print("\nThe following parameter sets have been removed:\n",
-                  c_points[NaN_idx])
-            print("\n")
-            print('*'*20)
-
-        # Save time steps or x-values
-        if isinstance(group_results, dict):
-            all_outputs["x_values"] = group_results["x_values"]
-        elif any(isinstance(i, dict) for i in group_results):
-            all_outputs["x_values"] = group_results[0]["x_values"]
-
-        # Store simulations in a hdf5 file
-        self._store_simulations(
-            c_points, all_outputs, NaN_idx, key_str, prevRun_No
-            )
-
-        return all_outputs, new_c_points
-    
-    def uMBridge_model(self, params):
-        """
-        Function that calls a UMBridge model and transforms its output into the 
-        shape expected for the surrogate.
-    
-        Parameters
-        ----------
-        params : 2d np.array, shape (#samples, #params)
-            The parameter values for which the model is run.
-    
-        Returns
-        -------
-        dict
-            The transformed model outputs.
-    
-        """
-        # Run the model
-        #out = np.array(model(np.ndarray.tolist(params), {'level':0}))
-        out = np.array(self.model(np.ndarray.tolist(params), self.modelparams))
-        
-        # Sort into dict
-        out_dict = {}
-        cnt = 0
-        for key in self.Output.names:
-            # If needed resort into single-value outputs
-            if self.output_type == 'single-valued':
-                if out.shape[1]>1:  # TODO: this doesn't fully seem correct??
-                    for i in range(out[:,key]): # TODO: this doesn't fully seem correct??
-                        new_key = key+str(i)
-                        if new_key not in self.Output.names:
-                            self.Output.names.append(new_key)
-                            if i == 0:
-                                self.Ouptut.names.remove(key)
-                        out_dict[new_key] = out[:,cnt,i] # TODO: not sure about this, need to test
-                else: 
-                    out_dict[key] = out[:,cnt]
-                    
-                
-            else:
-                out_dict[key] = out[:,cnt]
-            cnt += 1
-        
-            
-        # TODO: how to deal with the x-values?
-        if self.output_type == 'single-valued':
-            out_dict['x_values'] = [0]
-        else:
-            out_dict['x_values'] = np.arange(0,out[:,0].shape[0],1)
-        
-        #return {'T1':out[:,0], 'T2':out[:,1], 'H1':out[:,2], 'H2':out[:,3], 
-       #         'x_values':[0]}
-        return out_dict
-
-    # -------------------------------------------------------------------------
-    def _store_simulations(self, c_points, all_outputs, NaN_idx, key_str,
-                           prevRun_No):
-        """
-        
-
-        Parameters
-        ----------
-        c_points : TYPE
-            DESCRIPTION.
-        all_outputs : TYPE
-            DESCRIPTION.
-        NaN_idx : TYPE
-            DESCRIPTION.
-        key_str : TYPE
-            DESCRIPTION.
-        prevRun_No : TYPE
-            DESCRIPTION.
-
-        Returns
-        -------
-        None.
-
-        """
-
-        # Create hdf5 metadata
-        if key_str == '':
-            hdf5file = f'ExpDesign_{self.name}.hdf5'
-        else:
-            hdf5file = f'ValidSet_{self.name}.hdf5'
-        hdf5_exist = os.path.exists(hdf5file)
-        file = h5py.File(hdf5file, 'a')
-
-        # ---------- Save time steps or x-values ----------
-        if not hdf5_exist:
-            if type(all_outputs["x_values"]) is dict:
-                grp_x_values = file.create_group("x_values/")
-                for varIdx, var in enumerate(self.Output.names):
-                    grp_x_values.create_dataset(
-                        var, data=all_outputs["x_values"][var]
-                        )
-            else:
-                file.create_dataset("x_values", data=all_outputs["x_values"])
-
-        # ---------- Save outputs ----------
-        for varIdx, var in enumerate(self.Output.names):
-            if not hdf5_exist:
-                grpY = file.create_group("EDY/"+var)
-            else:
-                grpY = file.get("EDY/"+var)
-
-            if prevRun_No == 0 and key_str == '':
-                grpY.create_dataset(f'init_{key_str}', data=all_outputs[var])
-            else:
-                try:
-                    oldEDY = np.array(file[f'EDY/{var}/adaptive_{key_str}'])
-                    del file[f'EDY/{var}/adaptive_{key_str}']
-                    data = np.vstack((oldEDY, all_outputs[var]))
-                except KeyError:
-                    data = all_outputs[var]
-                grpY.create_dataset('adaptive_'+key_str, data=data)
-
-            if prevRun_No == 0 and key_str == '':
-                grpY.create_dataset(f"New_init_{key_str}",
-                                    data=all_outputs[var])
-            else:
-                try:
-                    name = f'EDY/{var}/New_adaptive_{key_str}'
-                    oldEDY = np.array(file[name])
-                    del file[f'EDY/{var}/New_adaptive_{key_str}']
-                    data = np.vstack((oldEDY, all_outputs[var]))
-                except KeyError:
-                    data = all_outputs[var]
-                grpY.create_dataset(f'New_adaptive_{key_str}', data=data)
-
-        # ---------- Save CollocationPoints ----------
-        new_c_points = np.delete(c_points, NaN_idx, axis=0)
-        grpX = file.create_group("EDX") if not hdf5_exist else file.get("EDX")
-        if prevRun_No == 0 and key_str == '':
-            grpX.create_dataset("init_"+key_str, data=c_points)
-            if len(NaN_idx) != 0:
-                grpX.create_dataset("New_init_"+key_str, data=new_c_points)
-
-        else:
-            try:
-                name = f'EDX/adaptive_{key_str}'
-                oldCollocationPoints = np.array(file[name])
-                del file[f'EDX/adaptive_{key_str}']
-                data = np.vstack((oldCollocationPoints, new_c_points))
-            except KeyError:
-                data = new_c_points
-            grpX.create_dataset('adaptive_'+key_str, data=data)
-
-            if len(NaN_idx) != 0:
-                try:
-                    name = f'EDX/New_adaptive_{key_str}'
-                    oldCollocationPoints = np.array(file[name])
-                    del file[f'EDX/New_adaptive_{key_str}']
-                    data = np.vstack((oldCollocationPoints, new_c_points))
-                except KeyError:
-                    data = new_c_points
-                grpX.create_dataset('New_adaptive_'+key_str, data=data)
-
-        # Close h5py file
-        file.close()
-
-    # -------------------------------------------------------------------------
-    def zip_subdirs(self, dir_name, key):
-        """
-        Zips all the files containing the key(word).
-
-        Parameters
-        ----------
-        dir_name : str
-            Directory name.
-        key : str
-            Keyword to search for.
-
-        Returns
-        -------
-        None.
-
-        """
-        # setup file paths variable
-        dir_list = []
-        file_paths = []
-
-        # Read all directory, subdirectories and file lists
-        dir_path = os.getcwd()
-
-        for root, directories, files in os.walk(dir_path):
-            for directory in directories:
-                # Create the full filepath by using os module.
-                if key in directory:
-                    folderPath = os.path.join(dir_path, directory)
-                    dir_list.append(folderPath)
-
-        # Loop over the identified directories to store the file paths
-        for direct_name in dir_list:
-            for root, directories, files in os.walk(direct_name):
-                for filename in files:
-                    # Create the full filepath by using os module.
-                    filePath = os.path.join(root, filename)
-                    file_paths.append('.'+filePath.split(dir_path)[1])
-
-        # writing files to a zipfile
-        if len(file_paths) != 0:
-            zip_file = zipfile.ZipFile(dir_name+'.zip', 'w')
-            with zip_file:
-                # writing each file one by one
-                for file in file_paths:
-                    zip_file.write(file)
-
-            file_paths = [path for path in os.listdir('.') if key in path]
-
-            for path in file_paths:
-                shutil.rmtree(path)
-
-            print("\n")
-            print(f'{dir_name}.zip has been created successfully!\n')
-
-        return
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__init__.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__init__.py
deleted file mode 100644
index 70bfb20f5..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from .surrogate_models import MetaModel
-
-__all__ = [
-    "MetaModel"
-    ]
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 8c10c82287a57ba1e3b4dd428962e57cdfbc5c58..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 258
zcmZ8bL23d)5S*DcQG-Gt;14|P#r}Xu4ncEKgy2OF&FBp7;_ObCo;C4Ferd0s{DPOH
z*HcJAS5s6M)xO_<5{%Z%&>nbS8u1s3#VZdDn2a#ei9)WW6h`gkTAAcSq^+xDGnI9B
zZlj)iV_j%+i!`a9sS3gGb+lMC2Hl;yji{YNJd5zamv_2tpeQ5kU_~|%goDpqrZvHv
z-&KVzBf%_>@6{Hj&VMa+%wVfemX6xxCirjoUj>MHnMcIY=c(?DxxaFD()>z~Og*KN
G&d)E$kVM1)

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index fe3d14f8dfc5304350b98b23bc52ca5b2315a871..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 292
zcmZ3^%ge<81T4a;so6mKF^B^LOi;#W2_R!SLkdF*V-7<uV-zDJLkd$mV-!;gb1;J@
z%S%R}v?k*%PT$m$MBn_B)SMz_popI)^DTkm(xRgL^u&_X_*{@gF<9mndwhIiPELIM
zN`}uMD}IGLTg8MHrxq2*6lLdU<YXi!7RR{cCzs}?=9Lu3xM!AllqSWv<>Z$KB$i~v
zBqdg+7MCUFWTq75SHz&(5ECDtnU`4-AFo$X`HRB_Xl-dus$CH$&>oOGi#3772WCb_
g#t&=^j2agh)R7TTj8)(RGZQyk13L&7u>(~D0K~CSSO5S3

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index f1a3fcc2eed66172304cd27ab5fe111ca0198bf5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 323
zcmZ9Hy-EW?5XX1#B7R`N%6GV813_#=M2L;Wi693O7M4wRE-u;KJN6?aw!VkGuV9<E
zxYo*7u+h2Lhy(K*hX2g)A2}Qz5sa7jtx{M&`sQzB*j!_VQ-mUl8e-{`Qlhd2on|V3
zAjRO5qFB)Gu!JbfMuGAD-d&M*Cn0&?EMx>>dm-$UZeIv#j1X_c@8RSQU$2u3UIp-h
zdssGOu98jbUoxv5cxm*rjJk2G1{sqFc00LeH&t0Zo{i4=ENP?I+{z_z*|vu3dCLL8
zY|U%!r121viD5N<68)4<j?d%<!U``d->mt6w_FJAbQEILZn}d@d?6XQ%F%KdAdd6w
F`v>INVKD#z

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/adaptPlot.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/adaptPlot.cpython-311.pyc
deleted file mode 100644
index 2854217e56fecb2456011a91a984951fed9cbcbb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4921
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-310.pyc
deleted file mode 100644
index ffab8b4f67e52a3128aa8740301f958a0d72c502..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2815
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
C4-2yZ

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-311.pyc
deleted file mode 100644
index 92db2e7e7390700d4b6b25bcdc0db1906dee37bc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5228
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
H>m>gNxx5;C

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/apoly_construction.cpython-39.pyc
deleted file mode 100644
index 82737a42dd7351d06b703b3da838031ba95979da..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2886
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
UGiz{V6;d({`I`N<wKeJd7wkkSHUIzs

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-310.pyc
deleted file mode 100644
index 92d0cc0e7a0a07123fdfbc2c777d1b9281a43344..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14412
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-311.pyc
deleted file mode 100644
index 51c4ea4a7b9eb757b303782de26abffc022df39b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 21706
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/bayes_linear.cpython-39.pyc
deleted file mode 100644
index 063355b16a397fb5fd89d38daa0d3ca5a8506766..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14506
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
B<oN&q

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/engine.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/engine.cpython-311.pyc
deleted file mode 100644
index 973173b304ddea1307ffa400cc1815eb81399423..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 84465
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
B$2|Z5

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-310.pyc
deleted file mode 100644
index cbfe4d97e8e83ebc276e45ba6e84f514784f1d0b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5560
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
Z-$TZ+G!?TsR$7>|U8i)t^vVlo{{y+urp*8V

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-311.pyc
deleted file mode 100644
index aaf7d2d285e24e4d2e31c3dab3b1b071be7c5ecf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8154
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
bd8inaNFU$G@89A|r0WO|$^Hun+x`CllJEy5

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/eval_rec_rule.cpython-39.pyc
deleted file mode 100644
index 27878248cbdaa2abf0af9d51d061aa6e2db86f43..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5648
zcmd5=OK%*<5uV4sIHLTJWQl?jr>!80*5R&2T2f%fa7<BhBu6A@QIZ9Q#=5!P%N=oc
zX4O3_a)ntSfMmp%oRWiqIDiD7c*q|}a`PeoVUEd3x14hb^HtA2xFj7bK4pOEo$0CW
zuKudNs_NxOk9roa$AA7>{OyEg{exciUM^nV$E~Rm)~Y3J;RN=ogI_mrTe;PoZHY;d
z6Zt3hYF-pX@rkus5G65z-=a7wJaGhHO2S#O$}e@!VnWaJu5c{{i$WGRCG%VDK(=HU
z^Vmn1AF?|i-Q?@+S2LefJ@1xmNF~F%)N|fUm913SB3Cj9{AtER!LFdIBb1D%vr%(w
zo;4J2$*o9jvPPs>2V+&t{V?vb2OS>9e#5Vur93RP$m4*oPqSqe)vIh4Gu{Z}DqD!c
zMwJx2+X+Ic__`nXad(>C^7SU04|&klzBURh@{n&B^}X{q7Vh4fU!1)#bFn<lZu$?U
zYDZB3%|buMet+qQ8zO2=Gm=1i>C(l@?4`?ZW0$kzJ6o!<n_vGG;Dpl$cE~zfD%Rp*
zhX?HMzy2Ltj)HC&wS2tRn>^B<+-~zw14|8sWjj(a`(cJo<?c-NVrAw6R$pjxU$LlR
zwlvLFctZjpg7nS^Fz=%=z^2)?+t=A@NBQ+8hHUxqBdG$6p)JkMU?20HxEZNA_5oME
zV2e?cw_04lR*Th@deysDS>%2&#~Spx+8TU*-`~>JPUu&3+==52uHveY-c{Mg6FCN{
zdA%!C)RNd?=-2zuM}iz7+!%h>T^-AoX6J8SpDlYgLLK{<Q5rv397@wvyc76!v)yaq
zLtjOqalnAB3}(3T@d}Ix%fX5ow)ddJ%0RtowzaiYJxuGjg68a7-g1LC8ZzACfl#F1
z<r(j%7cO0XXEcN7Ehx#!E8t`wD4%`ELpF1faGdp?gKXAP*-ndX*!Ce0>cqprRm4LM
zH}&Z+&?L67Hyw3WIKq8m^<2Y7tCu4-ZaBSscncCGNPH+J`Vt=a3W?adZy&L!HF9r4
z?g-@K-&hSBtahK2daijs3i%Rdd}$zyUng-B>#?2WsBJi+C|>@pljOxKUpl=)QUKpy
z<$tlkcZO>rYPDerZ5Xd)y`v1NSv`^s@X?2rwJ}pY;97&A0s9!8QdQ>lrtC5}aWmS8
zz&tY@;gb2hhS$*o%bZvr!&v6EGQ7-dSZncZHizI6n|B(q$hZAgr^QBdF(EgUlvN`_
z-L<&emKdgEGUIUM@^E!V0)2T>Ktnk2HKI|}rfAkzcU(cH<b#f{V0(&Bp9XxRBLT;!
zMw4ttb{m0F$OharW{5OPQHW)X0=Hz`QQ_DwP5=BAtS$WdXoEDz+YFGjup$uG@a1v9
ziS87FdAkid@by44#lsCb05vTIazloQuXPx5c+oR?;0kVi3{7l3wG-rqQ@9(>Gke9_
zah9Hw*p8DrVLQzuP(*siPVI2VQb+LNUtcZEt=&N=(`!m@Ml)-o)9P$zZKdT?&<*@Y
zCQerxU`j{H%8iBP%GEoIckaDiy|lL8@dHt*xA>-9BmLL>dV5Wxsk9nv4Ij`esR5sU
zIMamnH>K)?YwNr#H3;P+m~5|Ucww{w7S>u69Q2yRry4d}Q=LFo+uhXR;bq#SgT}HS
zoiR>90>*E3_1z$XtLpcvJRC!axJf)U2rc7bKSDil7Ho6gwPNJb47<n9RqK<pJqNO`
z0E-hx<d0iZ)*0&=WbsyLK>oq`1o)PVODd0fcN|49n`Q$Kxc>R`=VYAc|K8o*HT^p|
zMY^aGnlx_=oaXcc74Nu;(*J5+Kd7yTsqGufWX&WA7fA}A-ocADm4bcDF5zbOBjc?G
zto>N@2R+C7yGF^h*n|@z2aaL%0$!wOBdS2n1U2M1BlXl#yk5oKH_zDYWB~%mSb&6H
z*a9ar3ncJkgStCHeJ7Wpu3o}~8St;t6H2E8%AG{tFL00HcESdw`g}j2E^YQWjd%~u
zL3Q^z%2dx0PGX&~J_qSeTc?l)5^@h_+{4WjeNK*Bc1QMCL|1f>F;knX*YFEk7LaNY
zz4l>y3m-LkjRlh*vrpOwR3^VND&NJ!L6yJ3$IlNCPMm@A!k)rbo*^6U$6TGp)M^Ct
z_vzI*0=cLnnD5~pgZZ3ojDrlCLy*^HC-r#HZt~i?jCopEk2;~yeOOZ04;$%`dK986
zlp*eNG0mHVkxmSgfO?%4BZo69syFbII`daDO^i;4F)#0n5I-Q*7#i!fl2dX^MbF88
zU%~HWVG{3CwzFGs)sG=FmgmXs3H$}z+5uZ)gUw^7=O!+hyywRDQzy={uzNozoYR(Y
zPgxX!k*i56cN)<nL3J+jpP@P+Pmc4+P<9HL8!_kiy*y?rBo;DyUN{ZRGc_EA9y8}@
z>zQMu`m-f@k~1SPFMS;wQy@LCn*FpmSRXT)-oYqji~h*{5^&>tgFZw;=uRt8)Z>2w
z5GLPUL#*z=T3Ja!u=k7LxXELrIb>Abj$mgNM<&UA$m`L%kIEUze4COhl8i7@HBea^
zk@+hxR83GN!Ik1&c0R0WPUjb0HZz$-AEC<7Yzr|@npsD>p>9PVWf{_3WQ7ANlNt&S
z%z0RK@?A?3qs}+g3Zwvl8|(t5t!{EuI-~7O11F=_PiFS+Yyh&}127f1he6zjQZe{%
z7Aq+pmz~k`k~%{@CFA>}7?rw#4AZ<($;7L))IuWn+d(%i2>+okWVw*q+i9_{qxumo
zaSlyd$hMZ+n;A2Qfg(LRmfSZWtSM|;Cp^34e9xY8PTJ?}*LP1ibGEvG{xL3+=5!k_
zUdIE)x)|XX^)E7cpK~s_Xx<E~80u@(#)*@Fg^!*4;2kP-=QF&UjB++{;n6OC`mG)f
zf6lzD?{(Y%|6ZEa1p6z}<q=EA3jca`IuLAq@W((4XFag!TWa3#=*M)b!wD1=+;e!=
zBVMv0-~$Cr8M9O_jGR=RhZh*{RFq>=`*u06rm3$&uSZNC$WTyK>T!w5;{{B5YRo5V
zT&?@D;;Q>O24so%_(|s#`*lZML{FUxguzAi5M>DCkze8=vF=-IPA_L-IeaY1_dU}^
zHYmU|^TsRNy&^oah)m(&q!+>`-K0n!{0Hlgh_SsA`7BP5IrwSOM0h(XJ$94As1MQk
z9J0uMDKqOqNplj+^F^SvFK*++KQM!$gO}EkLWB$=1Qb8SaS_KE)Y^288rb2#pYld=
z`Ot_K*0L&R6wq!f{4YfDs~^N)Bp{EX`QgXK!4Z)Dl*rDF*;$QJ!%Z9wsejKLbb!oG
zzB~w+QP7-XGgbH=H|mp#9d@?-pLz8i4wz)F8W{I2d1HX`p&4Wk^F|nqwx1=t?BAUc
z6ywAk1i$QLF)`#!>a=Ub&@#BNho)5T8upl=UY^*)QO|&D46r)67wL3jnAX$MU_Yx9
zLjX+GoSNZ%hVSF`%ZArR9udvgUqOj1+nn_56V9YFX$op*_n7;pqke|3WgGwZER`qH
zVyz~kdaZ^Mw9{&L%}!R&nCI#UvOSL`{A3xF(pI)tnsQID8D+uJyEy9NaQmK1DpARr
Qn=09pu6MokM(NCd0M{nQGXMYp

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-310.pyc
deleted file mode 100644
index fc01f0f01b8bc70d438a3317b87d304883456f15..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 17477
zcmd5@TWlQHd7j(O&R)1&E-8w-*co4HYgLJggQRU7#j&hg6ic*V$~Ps>YPd5bceT5-
zIx|a&%q);r4s4@Q;PxSHng$??G>MQFMH`?`0g9j~f&^)bwkcZ7LxG~`gIk~v4f<lV
zR=@v0yR)+-Wyxs@l*FDnGv}QDT;`nbzm7jKkyr5dop%m-A8IPfKhsV6Psh#E_ysQ_
zaTQl>DVJ5gYL_*>>X&uC8kY^eX4>ZEtV(sYmesZ{TgdCK(aN=RmvgFeR&g_~`I_RI
zH?_-oS6x)9*|$MkS*WV95nglKZ>zY&O~vW@t@T>n?*yUf)x(D0sZ+)DUj;W$;}?7x
ziN{03uv835qfV(S{IYyCTnqm>JjuJ}isI&%D{jFpzNTI_az-xie!!h@OSsGA^0|y_
zyOVAicc%N0JLOi8%evF<%xlVJ%iZJ7;+k{!x^uYZ-G|+M?tauLxCh*Wcv5s9a392V
z!p&fMkHq=YH@c_1ps~^koR3Z@O5VobrPW4Y*IP~y*ehPg6He#_cHp$TEnJs{-?qb5
z&+ZB@sEfvu=h|&YtTZ}K3#Go`!nW^vEhg4=gwysyPXu-^XmnP%_{zCXw-;Wq{iUW?
z59jk-^F$beTo0Y`?a}0qZ@Gp2BsJlC8mN3GiP(4>q0{ILyGZ&SjqZrunD^%G4#smN
zq2V_04yjwbL_1vXdbZQS5~rUgqyih$bJm<j%UNo9ws5Z7t`j=*ObnA;^<9h*^b+cq
zh@ijBllE?OJ<(`;7-q|MdC}*w)*kZ9POlZ(SoJH9cYM)yT903ux1Yl*k0|+F9wFBW
zylXv>X>h$^=T7YcE&6*503&p2{AT2c`ITb5YP$}70n0QT`mm-ws5yMicb(F*-)i~S
zK|5KA?IaxG*+H+{^+o8pPs$xY@ANR1wd4Bjq~T$^<%Eq+Z52x?>b)f|RTB71zT9TA
z>8jHT{Z6XFs?%;`>$SY~)WiC!x3nItdTWQyT&kv?uZV`b?NKinyn<DC`6IRE2HyJk
z3r?>R)v>uwxax$%4H?|^<#X4aTF1Ly8=kHw?M5d|hP2RYFL{Dq!Xa#Idf!z$6oXCP
z^-(pDZ?aQsJ2&o01a%ti9!~FWB(N`P=bwA77Ovu4ulg<8$;&O@8I6XvDrz;B8#wYU
z&sp=1`W^gwn5ysr7Hdwcf%CuzDWP&5o7kfzNM<$Ky@OML6XSOWGr`zg&tG1y1$ax?
zfa9xuiAs;6*d7#zz73cHeA(B%#>#4l#rB8m-SUB4G#EP2*r_eQ5%Po4Na{W&izVkK
zJH|C!+d2riG&35`?(c`H$QsGw2A&*E-D%Z(*uuOB7&mu`10<>QxP-U+5!{9z$%M9@
z!kq(WSlM|7WxK$>``LTZ7k<ZYBrEj3P9wI@$rn>i-5!9>>2y5oivbc0Uc-G(cksTp
zqt5R0O*&5IJ!tn{^L@ry_k!oTq2z%HiNiJ*oT%?Cc+nBN)puImRcFZy8}$^C#jaEL
zjsg*q`Gd{0YRkP&U2bgRCoQm=qz#=hs?!M9ZK@^@lW#8pEW2J^p1mRZUKw9au#7X3
z{U+o_ylOj9Fm%te7kq5X04x~CB)!{fE5h$}gZtR-vf{jb+NrPFd_!<`x8rafOOXr?
zbMn@}_;55_41&09=(X1AI8wgV@>;_&39s8~)a7Zu+YwCF3BWu%phOE*_uHV>2r$9z
z%=QUMzUv2JE$BF1z+Sj*$}g>gs{?|8D!`ABaf0fDk%RVKfn!@w$&{~L5<TyV>=s12
zck7n6K_>x!s>#6ieut3so02dFlO}%Q)MzT0F>OH>ZG><}jPk;OT{w0!<Hk@RNS=&I
zN)WJ??W-OCx?Jnsy1(-2R|oTVT&Ek>);zJ~2L!B3eu|avw(cys*Z}M<<ZjPiBgP6g
zi|qznb7bl8Xn?0Cy+gcXsgN1w-QSrMLFhzq%S8G-%D41JM!>?SX>>wIa_`~8X-0GS
za2kS`&UTUK5&TK8Nl?W;1fJPp$&y6E<P1wu<*0q?+4J_HXM3&Il2gBW^t{)AEGq0%
z4J;+Z^}3hTyLiz)bn58E;dVVr@>3(gQ6JVgK{Zb7UV}%=qXXhS;{={N8sO2V?6Dzs
za59o%%GI+^cS7NJ*X=`t%&`j>7Ed2@05xkKNe_bF$#5X2&z(Jknh=od1P15YUE!~R
z{dYn>!)IIm5?IM{BOEqhR%0JJKPH8oWGUpuL<*_OSIU#vhR;~VqnHn^4=xQz+(6tR
z@e{I$FWZWql|_6RD~e4ixW{_8?!~5*VHX4`sVm=o^B;cePyXh2k8ezjF@(1b6rQQi
zARYcuUc>Jse!&`&NR5=55@|@)NJpwg22wrBAT=TrX(q}dH6sgYHYy;sq9W2<G=Vf9
z<&YMlJknxRLOKymA}vK_q?6GU(sEQmIu%VLt+>jfa$8-fPRACjSI;dqV^azaah?vE
zR5Rkqp+G<2<#8?%k>iOmp_Xn_;%Pj!L)45*d}<OgXmH;M6WR&ij3>8Ah;gw~8wqIC
z7u^jQ7~Q7$LOemZm4I$MF^0jIUIL2o#27qPXJRApTFY^U*F+TYY6R3}MU*I+q@+yA
z6eXnki&;wcQZh{my;-q`k~vEDQL>+s1C$)3<N+kN6=CD@&S#IcJK?eVu@|6!1jocx
zf3>yhIKi<~e!WM>A~<%o5q`3_bnFb&tcy;#dTfa#8J56>f8$ut6T)8sKb87ka10Av
zlR9TG-(8QbT8%V{S}j0t!DC2F%T(|6pI0}gaYzRSgZUwiI&I|PUj~^he!PXBLS|z!
zRGMn2Me0p#=B6IO3UW*D8!su5(S#L3<^M?8G-RDEwVCM~uMA47nlq0R!JtAq-q{@n
ziR+CJk_S+wBW)Cbl>zFGl*)^V5h5Y94d01&=Pnu)m5o#}LCQBa4rCT-5|QkjDs4Lw
zU}~@h9I<^?-JOx-Lv<Ia@o20&gp(_eOALV}AQ>~ZekTBnYY*7vT}VSqlGUWZwAOGS
zg@cv&K-DE@3DRW%IhEAFbTxU#c^pZHG|-gnaODhaJS4v)6`uFPp6Ez}4OJejYEnK}
zq9>tpK(ruU9jrPqi5yDS`UsYt#JzSP;g_h;-|$5z%PcKV7)_&twU_L^L1v_JD-yN6
zt;Hrx2vC$`L-bl+)r_<CRmTso^UFh%*6?M=I#jwi=ZnV5r%qvI;*wnWLAi+4OVx~c
z5IZ@}C8OqZALo)KjI)E8^6{0)Lueu%NAeba0l|Z|$54x^b;mT#|E{Q}ws9bJnzoOt
zPA6&jS3t(Zk5AQ?VTQy>Qu>)tjWSJ*&Q(nh!5CcirWVZ5DRZ^Gs8h>?CY`%JoxJR(
zwFQIcRZTqN5);XFbeGsjPEv8reM&QbQxzZL(!!t=45e8RmqW0WrhZdBrM!BuZ-x__
zCF(iiHd|^xizky~Pb{z{YegGAtCg>P9A|tgGPcyu5IZB5GYu@rVmw{Yp6Sy#ay*wk
zofF*a*HLbvypNW%k&1qDoe$$#?y44i0oOdrejR0di7Lt-+bD)}&3(i)oBL5-xTQA_
z^m8vMoqa=;Y3|=VNR;ULD@q3}vRMfJc(+!OE`EU02f#ozw|GnI=W)eogYV&KF8B*P
z&o66>3Rr87uQ^y$C!BD1v;zKaH~t0oA?zP1o5EO7wHe8vZVb?Da3DvA?f(YFk};$W
zN_2|;pP<>f_r|TAz&Qjdngjh2SBFpr_O}Au#9_Y+Y!3CEiziP*<7usT{5C9Zz`qsY
z!E8(#KpG1dVEp<Spb$fN-&nZlwWMI2ysH7)q>wl+btFq40uhOxvEg9mm(B=sT*L-h
zGlfN2{o=_Bv2lL!<OT5v?yD+`G}Q+M0Zpv8yiT0EFtqB&28>(nIJ@cu4s7(|80v^a
zl#mD%XCQ)r?guHKXGE@%RXi?_@-^nqaR$h`;>B908|!U=vyN92=NbLkLqJU+l<<RE
zK*p2Uf{|U4D=zsx2zFtQ+z_$)vN%E`I8413y7l%Dt_2A*47+iL@m%~ORk5HqGP@Q>
zaa%1gpi2@g!qL;XklHG-$)X;5YQ#Cru*TiTR<A2_VxC&$Lowtd+mJslB!GVU)E}X4
z;36?+i)x;DfLhWmaDXzWre0DjdPT**Zs{h<O<Yk+vyj&eQ#DjgHQv=U^Ia45Of9eB
z{*I<<cMOBdG}U~!WLRinXdAP;ah21j>ZDl=|A-wWV%j@Hh5}%2s(pxPO|5UZYCp3=
zOoUjAg#Kb58b?##%%FzJ;Gf-6RpnYGQeCYF)`3zhGF<%@K)#>tGZWAV?nw)Q4gyxv
z1}i~p*8sbjV7M=ZlbdDIZknZKZ42OCn@W1L`{o9fSCSqls77-tGLI`SDc7D&fIUa!
z*_@6tqw-f!-pPeC%{`<qHFIv}7L5fuPjgmm4aU3$%6r9DgJwDx?vp*k6_<6bTRPa?
z4A|X%+2cOwV>h*aj&!Q#oQoda{9fg&%Gb2x%C#>hV?KZulbZ*IZNQrHxIdV>Cw;5{
z<_IP(*Rl4%wclS+`o)CC;r;~Acmk{Rpj!Z=i<A2gU~NnN$xazmZKjG^=!Mqlq163k
zRK%MqMU%9ucuU_8AC8K=;*W4GrTGXku4>WwHEe)HW;-Wc4UG+$#*?!N^COO93UBU@
z8PS2dU)=q90qqbmc12pAP(VWG04K+#&gaKmdc-}_r~``9R0fA0!%(tjRP%%^O!*-h
z7}@;*M;B}~ObbrL<<Yvr?U4{^T>NuIA!l<Qh77N>)FQMc<OV!Hip!;qhfczp30)W}
z4*X`T^JzX+_r2xipsK|gC#W|Xu>p0j9&6ni8zBJxoyKzYQ3iPNOQ06#pHF&;b6A%e
zIYtBVF)A}147lTpkI;=l1#y0<*J!yl_Kcq9_Ur^FmuVoL!~^kRN<K<O=7p1s*gxVp
z-DHsQ195`$%==<<fW-+`OYTt~xYcPQwdIzx0_FflEN3PNz67b7vC;M%aE~B#<80e!
zeK^k1z-lxa@d>K<aY{)4j5GYM#52fO%Tkcf4)&$^B-P^8m>jLS>^j@7*8)r;HnBG6
z+#7->EnX&yh157>t=$t>sE9fc=P3CUCC^e~C&@#Udm70k-e~YyWXvhjw+&!@QJqyS
zy{wji>=mt|7Bx*Xz$Z#~Ol`lay<_GLXbm&q19>2Q{*DH|K>T3VD56zaoly<YD1(2L
zHQa+c6vuUo?QC_76_B|ihac+}-^D5uEcG?Ok&d5%AJ_mOjbInL#wq13_0>oFS-_DV
zWdToM6g@>$llu%{U*Cj5ia-ZUB-bIpAJheS4)a+^)T(&O)%u0d+RSYM{yP5{<(S%8
zSML|lw%GYQXd}7J{Fbt&h)=s2s@nv7lD2{r{R5^o)cYRbcv!FJLMG=ns_04jO-Sph
zHU)0;O}Ch|`Jy|)w2SF_$d}N=B<vN%&RcFdsr?Oiifd2otc@oXw3)tTpv{^)leGCK
z9!Uv$5|6|!O)Fsuj4!!Ej^=~sdjaPM2+}9027Z%nc2qiQae!+w^jpxaCZf_7t;NUO
zJxQ<sNh^sptH@RZDziNQ$KAcddT*&>Vo-BBT@(4y3QW3lQSPgXyD!SRSz>(d{;y^F
zli^G>c~kv0+8=w~QiDfvodvzeh+dSzPAJk&h)m=PoHLNiF-t1DYGkZoM~U;8<=#lg
zT*~3x=Dw(m+!UK9_aillQDGJbqRf|+{uI}k+C1nU*n%zx#+}ru9(4W`2Q0zVlfr`)
zO#0yI)DDDtMlJH{zzNlb2N@Ox+yEliYD-Sg2x_pT1p_k@@H!z!+SvsdK`(Hqg^WB&
zA^80<#Szkgp^Ujbh>eU;dAo&%5HZ!+y=*UJ(U4L!gEsn-<4q<*y`8WJh7p^E<v|s8
z2H7i4559G$Q@iRS5@ZmnLyhQ<Ay6)(<cect&$CAfd~W-a4;?hjhgs-P&1eBSh9}yM
z(2H}9SZYAs5$oc4U{h?hJjm0o@R%VoORH+)SEwk%%oSV;hB2rv{t5~jT!6rUwi9Po
z5Cr0Yg0s?tp5na?h*PS1oMBTGF7VKMbk|r8V*@^1CpMc--Ct_FO*&N707oV7uDFgn
z?ozagd=_1CpBX6kaH?pcM-|9yA7>Gcuml&)MvhEMmnaHoqr|?9Wa1kY^6reePUahB
z*o&$UNG45;n0XU(VX;KF#9hS;lrWPc{u!GK95N&qBl`l_JS{}#EYI3_2J>M)EPSeL
z1lI(tUFZE3*(xqTS%4<X(L{0fB{}Rk4=+m3I}IbUki4C>yDStyvg5@X%w)y%_5e#H
zkLW;YQ$Hm>gU+fIsbwwDc!|@-7QDJrn=5f{$g+dDz`M1{F)hqw#R?CXG)bO1vtd{X
zV~h3_Z9GUgXwR=&bg6O{;!EH_!8A^h{yDkr0BmQ*FQLs6G2_>eF)IdGG5v#uYNVt=
z4a3!7Mhvxz?+tZMKIJR1Xky{kyG1BrWj5^<bwmB2dI+qXa&u}4Ez4Brjs^CO6x7j9
zCnXT6Mii_}9_Bzx+t`y*+(y#Y7_%luO&UBi>lZQlP}x-3;H8n2-zS|yCziYq>>JPZ
ztBQCcB<+V;_p5vR2F&s1X4ci9aj9E+pUQN2l`_j3SSkf4>R*7DX_<7Iy%At{gG_*6
z&>`6MO){Mo`Wj4X6+;P&>kEngWo=HRYrwdsUI&AVWWO&!XE7l(C}4j`o8>Jn_!cy~
zsb&Q%0Q4y&66U&si&69~(4R<AhEPEL$}+eHhzk5&Oy%o84=UnUK@a9k%z2UKTs57e
zX*RMrh<+Sd=Z3+5gK)LhdJ4zxj}0U$2#`4)RYd6ep6-SOY461W1}e_aU~wX27q=!=
zqvgxcizHG?n%%c+gbd0I&kJm1l9r`u2|kyxXC;`Opj=1^0~~GUI7=pXtbvrV&rsnZ
zO4xK$N&-VA9uc&}IS=s>9GV(W)DS9GzglDCQXs|fM6symQkEVz*%aieB(i<2;ocxK
z6KqSA(<vc!$bm`83*$*RP2e^3+@XQVrh#$t5aq}K^+RlxfKaYH38M{+Ic4pjX6)7e
zZ5F3|7Dk#fo<U%T*~hp;qP(fi;M@akAj)rh`VKv{vfAfi$k~^|0~(;8Sh>b9fxL`l
z%OP$R><4#yLnQ(Jb#+;FVV8N$>g%DpiSz!3a#KZ_e%07gT^*t(e!v5D(}2y!*h}qz
z0zi?>>k3+H6r7CKW@u6g8~-1`88)LVtO(o!G$0DP))$D91xi``EE4@8mQi?f7Fd#H
zEIAtHnt7BKAkZ6b4kE5bRNXv8QJDTWiy?$v4trMM1^{Yc9H`%%bb(GZx)sfxxTQjv
z9gXH7EGFfopCTa`C{5uc7s(<rhxtN;Rw4WrqKOsE*)2hoFI)?wLUS7S616!KmH4R!
zF;<0`J?M*9p`7YzPrnEo62x$x5%&~v3Sm^;+yig=lx%bDwj49fZ7||WXoj;9Tr0eS
z)qWQ0)O3pW9B7x}v(Ez=nWk&ZDKwY<Of(J4*9?iu=w)v-jWyYG?eDqAO0<W2tX%ss
z`hv&|=g#C+4WhIWRr<5hEL;;6S4SD}9JKgJwd_2b#<jDFJGD*`yMqub=?SnQ2}3TX
zuxOxx@Dbzz%LU~}Qe6T?(s+}$X51eLjv0s&Y6O872H{7NGMV1l@wc>&IC2lslS$=!
zp&;C^2-R;P*a-*|{0v}ta>vr7daq+SlRr9v1ZdOvF(BYgtD!<1&Q<p+H#OK3=fI=Y
zO*q6iaUPpS1V`Ogawl^U&ftu)AJ1X6%Y~#u;WQvFLz59D)vUx$5(Hrkf%`wsEhDrB
z0*}*@C`*<X@o6LwbagBtLQ=c{LFTdQ!kR?h%n^pc)L-j$Lmw+%26_Y(-C&S08ioby
zPF~xnrf?`_YM(z&JEj#pHJ`K}N#|qhLTf~8!|Ot(=a8@ltFli4CV}6IJRU-VCi4zk
ziZDnL0B>u;rAONaT)dd*6&IZYG-mvivbu5PUL#F6TzLBq{zQPLFuGxZy3iGOjGM;3
zh+jZsi;(59^6K4IWAz5-WbzPd#Mbea(_V6&ryd=S%TP8bwrLnPvFi#B8)4qW8!;XO
z`#*?{R#0zO_w$+z%xMU{f*Qo$j}cd8s~x-%jdqRAZSb|=zy@&+%9IEZS{KAwa55KP
ztH8L&tdh3}I)D%zn+Q@x#W>@&yWx7QJ4=D6VH{G|U^Z+7FgeENS`Z@aOxpThry3<n
zND-^<m9L3k*a>?24J2_6T2~O%PGJvP^}!(&-=bo+m90`8<06I@&r%Q2Raa_I#1UkH
zQ`<&xU~F8%sA9DltH_6xw;CPSyHPuNF)nhOx;)$P!V`shH?DAIoQ$m6Lx2#-#^xfb
zzHkyTK-2^^<>S&gTFCeMO&Tq|TyYA?e_=-i&mdz?74?JJ8Lgz1^!@6C>Op-@odKtR
z80W@><X^#Wj?8i}(izYQ=AbW-nXasZ#~Y=0x4CLk`(iAjW}3RfkJ<af*i;aF;ieHs
zAO>qB7_&be5j7FK{%{mLh;jple{$3SIGS+LKzPnV&_}clKczCV!E7&6o7PZFhX6qW
zwgGz`94GxefUE%V9*iFlRsh2)Y!)J`StLf=gi8iM^)#4gVGZA7p+$+)N%3+7*b2*F
z$)FA9HId3^5_;btdPJ#TB6bW%(sj64aQ~*#fkN^o`Piv+60Iw*D-dg-EWAea%3#SR
zeDYsHJBlRuHho96qJb$-gSAh&d8jl~ZjMvr=M=;QXm6@ahs2}efKH`z5|k!D={ulQ
z0;M0}TdX0aJ!wkYC`=|49tMRnDEtHzra<A}VUa|v!afKtJf7M2pi&u9fgnI)3aMZ$
z3P8|;U2b@P94tM3zYhWq#Gh38wN-k{)oJJZ*rf@Jyo3WU1BZxx57Yvi0)sq6Pr)<c
zq|Hu<Y~CeaC?N)`Oe$_D#R~6_<G&1b=k6Zx-GhM^hw2v_?2-X^?kF}&MoWM;nFLbb
z9g!$;4r0sLpof+{7+@YJY2xuwx&87H+e4I--RvPKnrwsi%c(iuOW1%v_~rLMzvTU-
zqso#6KO>&N@n6`%nT8zor^GzpP&RS6NlK8sRE_nzyDYwqBJh;o#AU>z#2@1Jb3l@x
z;-}=5jmJ{#DOsrzdml0<(L(h&3$P>;lekSpX%Ny$rIGQi&PK4i4psb!s?&JEJN0f?
z4iI^h-8Zjn8{=yjpZGB~X;RWbav!9{UsGk8x%gX3Y)TluY2I%pGzC4shU9-u^GidT
z;DH6Ax=0Bbm_(Hl_Lm{fY%SK8ue+?)N)?#gNh4V<W$0sv8X4V2>T{f1Llg*PJTUk-
zsN}CGp*7)2RHr5TJxLGVqJ-qQSgnC)VpFof5L?6ZB|Tp}ICg2V`;5)GaR$n74gN!H
zA1KE3Ug){_4I=rMMABmIIH<i6XECK3Z8ICsA-?f8`w3O#<vxnsSu9O(2^p(WhW<OJ
z8c)vs!1(3-k7Tf^0UO&4xF!PQkSl5y0wVITx>@ARGA!7~;1s(v1FM+@O?n2JHEGlp
z)z%-@!9Qnq+qh%OF})5_j%itfe?<aLrZw2N<*L7@f@>P!XvYyt2Nf&Iz`bv7%mP!j
ztGYM{p9O?<@R@8UADK-p)S)Wl9*Ao|ZOy_=g%5}6e^e9ZsVq!und6|>%)kVP0BtgD
zfwNlV{Q}?3L>8%T;F<Xlel!X;z-PzsW1&tSd>5Pt{G$OX;8~=k@5tdfDa7;~Ji$VM
zfFc5LNp3;D61T|FXj^G6aHc_Dq=5nOCmLg4Zt&+NR7CdH6x`h(q_4jhq>nq;$uc|e
zyC9q&QM9Sf?uD(0z-CXzt{9)hNJ*n``h#BnWckX#T7Tt;eTA&{bR7U0zC#uX*b={>
z53Br6D)3frc+8T7<*}-x1;Up`a4yitDX?VWGiUi7BE~F3w`f@D&x}*^t{UQV*qHJt
z^P!IDmY?DMu`+;9G3%@ph?QUmT;YgG6@_$9QZ@IHnzD%-c`%_&Kn-Y1AhhXmf`)%a
z$CKJy%Em9G4ijDuuk}tQfKljIy>*E`g#IhP^A-BL{Ryb23so!5uE6C$abg5g06e&H
zNE?lHtZHmtMd&nGH2W~fM?VO~iq-YF$UH#msR2V+oaaXzm@x40Q=V~#ams1O>Zw?T
zMljqQ+a?)X!<l@AW;%}^4Vd~7DFv7zKRVz?Gd@o-SC$5t0TkhivOG-nWd0wEcpuWL
z)4Yd&gf65TGQyDU5`Jqvgeje6<^4F*24rs-%pk!cXo|39pK=wJI?m&CUp0j78Zg)E
z8jxgBxn@Q>PH)D!nm)b!RethKAe%g4kY$4mj#R5L`jAxy!?TX}{tYq!0gxMrFymW&
zU<id!H29<+U+v-JeL6ApCp$#bjtr0AaaM*-LBg3XTzmMy2Ri4VUFtmC3kT@q$sKM}
z$aszLZp(lV(?WbXMzQKPeS#+?JPs61^?PY#y*LAz>9_GJVQC@L17b*MS@^r26^cHr
zv+^37GNMQP0qShqc;YK~_CwlpWbZJhh=I+qu~&Q7&^P8%XKl=W4K7Nj_)Jxo*9B>A
z_!m5@mgu_;Ismm=oUhTR9SCkmzF4bW!?(7Bl5DN!`t@2(Jd8FR2`Mg6?rBP1qU10o
zq{?zIr1%fY(Qs2!u<4djB7<BBKR!Da3_~!+LcQh46{Puhv<EmQ<pY%FuUL!Ls`a7#
zv)1#)Cj_;v7UB$S_1$$T$!rnf?@&TE`nZ5trSAGXj0!MTWcVV58?2m+_F*EsjSQ9+
WxdKn&n8;-&>4E+sNkEpU=>G#}NHw+q

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-311.pyc
deleted file mode 100644
index 786fb6880e590007f4cc628dab413d62f1590cce..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19555
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs.cpython-39.pyc
deleted file mode 100644
index e7e0226dc1e28c09b9cd09a610599007b2267e3c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 17597
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
C=1mCz

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs_.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exp_designs_.cpython-311.pyc
deleted file mode 100644
index 076580dd7fa9e11559ef202903d44e00e25b8a26..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 20552
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-310.pyc
deleted file mode 100644
index af7431ce432969f095d1c07f429b8129cb5a2def..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8154
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-311.pyc
deleted file mode 100644
index 93c4663b2cd6bd9acef73471231ba305bddf9dad..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12405
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/exploration.cpython-39.pyc
deleted file mode 100644
index 98964152a4ea29f85f061ea6ec7daa3df7487230..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8190
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
O{Slolq(+zPr9T4XZ>fI(

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-310.pyc
deleted file mode 100644
index 16a383b994853cdb226f7b7fb291cdbef789e1f7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7185
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-311.pyc
deleted file mode 100644
index 1ce136ba4d826073719d19ffbbc87cff8dc02562..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7952
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/glexindex.cpython-39.pyc
deleted file mode 100644
index c3f24cf9cb753b59f9e226f828a7c3598ac65a9a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7232
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/input_space.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/input_space.cpython-311.pyc
deleted file mode 100644
index d2310be6610a4c4824d6749297cdffe80c533a47..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 16785
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-310.pyc
deleted file mode 100644
index ed2b0f6f101965fb42fe059ec79e8084a4b3a9bf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2413
zcmc&$&2HO95GE<=$Exk5b`J%5Sp;rf0g2e4$i-+38*SqTXoVt4f!2mWued9jDYYx_
zE*;y*EqR6B+hbmdKu>*(o;ow6D5(mJ-ns_IoZZ>knc4Y1N^fj*Js9Ekr}DS9=lzAs
z;%I<!0FPxLjy&NB|1CUkf@9PI(EzOhnlHlVUay&e)zSz+JAlXTfRG;8dB=h9j~gO5
z4n;$RZ@uHDXo?p6Z;3Ye=oHPTYMML#C+zJq7>6v$xV6k_CgdnplDTuqa+OHqc&b>6
z=4{FhpGYT-?RU#<&Y5(WJ84OMP!Cdn;AWgEo>{iX^zbFk;bF6RoRo>PefC^Rc1CB|
z{%rNEPaB?TE7dUL&ViSq)>-Z5>4?E%z3L2CcBIXOyHrEOmKk}Gr$!0}vy_jJQ>lbh
zuFR+Qw364iS9~(fma`)3S#XvmT(P07swEh=a7vcxSE(BBmBrcL-)B^2+vh^WlUX%B
z?~$v8<=X4X7pHv%C1#J=?$7bV-CGSsYF+HEr(~V06m!3Q$2?Cs;N-!h`|Qza87tHh
zF5E~go6;=NlL^#NaK~|mU-B&F!%W_%GM3Fii&YiI>7`T@?Eg>)3MZy;9+wwO3Wf6`
z@c|UGf$xZxui>$GL5#iEUJO_R38(>N1cN8NpjfLfr0CB3@10+SR%WAjo@v3}zki7)
z%0)@^lLbIT=2v~5opWxZZ*-DRpvi1>l)CToVe|yr;z#bzqanYR7HcVtzKU#aj2?3*
z<B1kBvrz?r>2=YG<5Z<Cj_+ZlA&8dW^=~$*o%*xImE4d?D7P(mdF{RQe)nDQ#{0wf
zAxF&a=7Oq%AUqTTE|w|z>fd-o5<v8q*IZ(>!aHt!CS7h+33${i%-4<wTFC|TL9b!3
z=0%H75q(8xR$PO5Q7KCS+~^e>OHla?rY!E>TD#dUlV4gN^x9Y}giIV4-54vGXZXGz
z#}_%zs+D#e3!T99-Koy5<3!8R$i}0Lk4*=I_y7f7>Vm*<40a5LX_3M^Ug(FPbb|Ge
z<`bA&8W`vSJoaM{%S4PM4rELOZqOJ12&}1QhpOU1K%GLe1qPw|+o?>_QJN5+S*8i1
ztfmoSHOZ6nIZczl8sz_pqls<ym<1kJ<M|yT2UQ2o{jnF&74UiBc?Jw>+1c*SRs3*g
zw_@r!AKmH?&FG^6EZtvmiQQBAs}IKSM+Up<@V*CSB|M;HZH%;2tpt^@?Bd1a7_udu
zS-V<HXW?w>{gPAm7&nGr*E<d`d72>^RsccbS<U0*w8~<li3@H^p)x7IcPpUAt|Cz1
zgBPMI_=!*w7RZ1otU)tjMPWBhx|d$F2=RK0wfbg??!2f)cb;U?u3~r}CJ7=(a5#aW
z<(GdzM<33RTr<+3*EH*3X*N)7qPT;CK=wX-Ar!uZ$KoR5YkiyGG3W(^F;W&lNj``u
SI$xDo-$#fNMQ%2>qJID($9<0g

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-311.pyc
deleted file mode 100644
index 43d077e6552c249ec0d115a4d34f47de65e354cc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2860
zcmc&$&2Jk;6rXjxjbobhD~L8UFhW&>p|z+`IYcy4MWIwGIkZJWsmo@(Gj=wtcioxY
zwuySkp@$rLMG+E6oPw%K{4E6`5v|0Df526G>WTN>?v9ffMcf$2&olGhym|9JelNdF
zPSzQW_QtR3`*Ftp#zi@*#bkFLCR?n+t~1G=FzIYp7<&%id@SXh3UI~_a2#2^%^I#>
zisG+REOy_6$re*=$&qZSBAul%Sy`&eu_tWFl~tfeqzk8yWbTcqpC;ljxUtS*T;+Z!
zjNwVlrRoHc;>n8QY2+)Nh#=wtiu1nEqNft2O|zaKOA;Nl(?l6sUbKUjUkTj}A`u!s
z&*Szg?crtRK5i;MF-?A3DZWg1m}bdcZqk8Uu~AVw6iEVF+Ho9OH8(mOn3kJp5t&Y`
zdm;&9u-I^|?x%rPlEW^&N2<Pxq>7UKJyz4myFPy;di`+!t4O*u&TwBuysZjvNiGcB
z5{B`^AnMNN&RJMk;N)i06jFM<(i`tLNYx&;)q3}%d(8-3%&+jdZ@f!$hYHHTBwn)C
zC+Rc_@a>167`_uOxO?&P1%CNnZY%f_0<IOhEsD7x_j=$%DH4G@;(-VQ(GJxGa$}wh
z#4Nnf4IZe7jQt<{K<0R4&Xqi{v><ct_+@QiiC}$=!MCWBE_=*8+@~QOSXpVwpiU}_
zUo<M&gbhztA7<k-C#xD2b_^cjuOELl-}>4>Wwi8n@k+QNglS!i{j>+!W?I*S<jb_(
zYKt{x(3eujk6NlovR2w_>p*sumzWfyA0%lK>p+AD<V~t|+!cxPda+cYX%z+2U(0Hq
z7eqngdFxY@am{j#fMBM9Y_Od(Z*NwgPVLOR3qQv;;j@eH-sd2MCvwm&m~4T2R#Ak;
z&(<~N4*n+YaJ3E7=XSXb^3UxV2Otg|x_+O+LXaaRWEPLq!-If;D1`8n=UEOC1>oSp
zTPjI)lp_wV3(&EO7vo6n5npVKX|yssBKlbVS*?tx26Se5{PYA$Ozx}G^;5Yo_idiX
zBj<o@u)#?-G5K`r&)V$owb`Fmepvl+^|xB%k6PnJ`KR9i!NtZn#s|yV^Rl{!(Mv;|
zAN9QZsR#?sxaY~(hwbD2I9&7mSamwa>x81Kv7hK;K%OyDN!Dr%6cLP?xdvpzeg>5p
zw>Dr%K4GWNzNk(Qsuh<Hm?gCd_k#f&CHV!Y+lQ|mWh8e`!`8tT1C0fm48*spr+_V{
zZCi;7j0Z%Cu#o^dQfN(I`9UY}39Ai{34XYRNJ4BS{FPw~qVQS(`%nFckaV6K=uuI3
zm>!6)#f3wC{0<}>v_6rB&>ak4o;&x*yL4`@=t4uRJyaixQA30d)ErTXiCO5g7h`V>
z;gmJ+CM-tGgLV^ZtxP|TB)KpzkiFM&>;!bDRkimyd+w&P%JFiZ3$4YPJ#qDc2tow<
zqV^C}N8fSxUh#@vOz?Kt6AF>Mm+!+G3&uAoqX>R&x=DoQGUwo5Bv_$54T5b<P#VO;
z3Mf_t+v_exui<7@OoD8}#xJW6U7yv5uE@p<OAmqq72o=a5;H8aUWfZk0|+4NG$QN7
z&Y9U9VBbN2-I+N{KW`!L=q7v$G;sBCIHgY@If>*H5-RaGafX<Y7dX}u71YNtF&BaC
zE$|aq;7HE9?%4qwCAlV4ve>BPXh9nH-}1WlX%0vWdKN^{=VlqmV9arxLG42aP-2w4
Z#JyKT#<$KH2aFgcFLCeHzc9$Ue*o51>5l*a

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/inputs.cpython-39.pyc
deleted file mode 100644
index b0c91ff3182adb1245aa7f20656e8e94336a438c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2474
zcmc&$&2HO95GM6w$!hGRO%DZnSp-I10g+lG@Wp5h8*UpIXoMn(fxxCgued9jF}b97
zmyRvu<~&9Z?J=*=Yu|!EPkoD?Iy0mwsS1qVy2g&Vf3rK^&iAeO+FHkfa{K!q;;`j7
ze_><3)S<Bl)i5y69N`G}J=ELUF}7-=4y`)0T+w*xbejRpS|~MW?LjpgV59@{oa35s
zkL#j#+z@rqc<&rHMN_Q6{}s^!AMLz(sM5^xKVfZ$LD^?P#EoG#VM2~VC7C^!EK`Bh
zmWPUkIGv?j^H^G`O}|qtvsQ=0%t}MeUR9|1oa=F@cx2cPONMW#4>z0kW2X$P>9dzo
zvNPJl^rxd|eOmA$F;Wd9ZY_8jCP`GeIUF$<tVXTo%8U{na~mdbV#Bn&%t9>%gI<b9
z$W$sJl`Z0_JT1lb!!?i7XfZ09Jw2RZ0at7&OSA;z26l;}<ZY<NI|VqqySt2FHhnIH
zA5YQvx=XI+hAXcp-=6jrK+K-9&DZ|c=A9EoXsmB<QktEq5M#f4#Vk(P;H0<xm~EdH
zX9X<b!nH)$RKkKJjsZi#Eyo^y#iNi9Bl(zMERul+OBBZ8l~i=t{{aU&j!(yVT3jqO
z=s2$e7f3NJ_>F8ifNCCq89VPBAGih<SOd(c4Swv_^401>^3E*(KDc?q$Y}Jz(JQd_
z?_Umfydwi-@U*;0wmgx=*>z!iF;GYYXcJ1t-biwrY1unG___D}(etC%Px{;5FbgBm
z3u1mDJ)WkK7Y3;(!Sv#h2OQ*)mL`j=x!O91?75ISQ{Ir@NQ2iQbaL&POzULKt@PtW
z$jEplhtiw8?fan$t?xg=U>jf@cg3BoQ%3fugG=zB7!f?5!N)u2jq|H(Yq!pCt_v_B
zK$A-X7J0lc1mp%&^6kGVjXHt?Qe;X&^HMT!;R^|9s6sQaUCKt~c#tSLH+|5pYrM96
z1z-XK=k4kJXpD<)qc9+^PQJFlwy&Ve;A&@e@~{YgVSLbSAy&vb-_JWfBAG?_eb4tV
zGai*AE#DVO0NoGLB)ai~M2<$rA4Pnu+u&S(f(G+q&fsx0CLJEr;Iy{e__9%JH>fv&
zj)j89+=FVq0JEs%_zHlU(+i;SJ>j3jY(i{bl|l-%RjAe=L4>|ZWe|?SfO62VggDMB
z9U@tjJUE}}Jo&3s;y;Nz$<+=s@DQl+>;_T9$_;1!*el2hcwabVHR{UQ=Ek+ZwXs=B
z{Y=pA^oP^v)d89BFS*3rDg9L&;{z1Is_J+@L1XE7py`PQ%B6`C1YwcG^V>0$TiUa7
zH6PC0-jw-;DD5z=HNUA=>|gOPLNzVvfy%WU$H{3KMV!R&V%-@+Ii+|omne-{MU;L7
zAEb5g8>3J>ur<=aI`uS44V*OTUb@Y^f!CX_RyUJ(W}xPsS&(_FJj2HrNd$QYn;ZHe
z1Ts|oO+KCSxYDCRx2f;JOudF?9nF0-M6r*t3q3x8N(u+;dPw9LbZf*gYRnOmJdjAV
PzbkmYOVmV&*1!1&Ix?AS

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/loss_function.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/loss_function.cpython-311.pyc
deleted file mode 100644
index a1e26394365e683dbec6da95fbe223ebcee10ef4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13488
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
Bp;Z6?

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-310.pyc
deleted file mode 100644
index 7ebbfad9c34b1f9e6c819ea7cf7852af65591444..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 42392
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
J{$pjC|2Gc|fYty2

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-311.pyc
deleted file mode 100644
index ff5e3935b0dd191141f8dfb60bedbeb9a3441d01..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 87304
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
VVvQP|=-}`ZcKvS-xy!oPe*=NpfUp1n

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/meta_model_engine.cpython-39.pyc
deleted file mode 100644
index bd6eb8fcd459fd95ff1b85514f996344b6e4880c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 42705
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
X0Qd@E+a(_g`Az8O{>jTCN=^RXpccWy

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-310.pyc
deleted file mode 100644
index 543416416ef052c2402c2e9a97976dc4aab22866..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8915
zcmb_iOKjXodS;Pq_Cu|QC0Vlk7?&Tjac`uSEqfmJ?rbc}qltGck6~*UT6ql))nuzF
zvB};d+jc8#B#38@1NagI*+n+eaWA>&7UY^+ZsB!v86funIb`zvMfOYMM+OK5Ru_v^
ze^vce_5I)fQ^ELnNx`Mhyzl(SRYmzDJq%wtJlw_|K0snC+ltL>)nnT#el<^P>f1V_
zGTqBHjcr5bb6&n#*e)P%*!i!N?c!&OU9gK^DR$8@9Q~!fU9#23N~Lu0L1|4mR^-?`
z@cFuM`On)PzxDyYcH`F7k8gc&ldoJ|St*rnTkWV3h+DjF3D+)ti=ikFDlD0J<m?J3
z3<I&@zHoh%jNNyA#}XTX?Ra=B)*4Q2-`p}gHI*7=7v*VUYq&#>BvNAKkj3nXy=0Mk
zsKuDljB=<SDM###f}yGpzNJQ$T%uV!VWQbVl&F3y(Zk<}DAB@pv!W*KMZ!9NP{cTD
z{<pu}^rPk4@-IS1gv(+-Xm}0F3YYH&wRY3-qj32%H~RDT&hok!Jb!3KjpZGy<Al#F
z&$UJHVmWLJ5$r-YW|JlpE(ZcS*bRKkGn-aaYq<Wd*=mch?MBsBC(&zx5EJM*q=9lK
zCh=3lJ#uMyx{W(rN8%{k3`>fo+}4U}QL|6jx}E!qZR^>><<e!_Htdo;hK0=AWqTaI
z1$)Atq=mJopquGr;fwy*HnO2TOh;yYt}9B3<I0xG#X>)KqXr)|;k`CIYs8;ids;2Y
zRu3&<HJu15l#fgOOFq`!$aH<YtvRiT-{Lz#;5nAR$b(jdjx3K~x%=t*>M!nZ@=y4t
zXgd|zjE3{P;Y1Bb@F?Il%d53LXquyh59HMYyl%K5mkUtk_v$=!qP_&QtXp2_EOI{>
zYW3XpJig=bc8Fc=`hDpbPdW$c{fblFt#aFnEDrh3i<VQPLjaLzX?Zvkc8AxnOB~_Y
zl}s14pw%(Ae%LfIW}5dR--6cDfkBMx*gxUeQz&;M-n2T@ZSc$y&xIRBj-Pdif}J3A
z-qqv!>ix%`4mA7AtQBdE)a-LCQ-s|r)hl(GuI*|R33sO*Ij>#YTHw@8bZrS?bryNp
zuv!jQ@rrNOff#KZ`$3m$s9SeyE*&c#)MZB^g$CMhvQK`ciLF6zTR{lDx>#M?4bvf@
zRwW&jRg2tb&QQm8)R7(gttxG=w~vH$&1v8GfxmR%2yCvQp)K-t+Autzo%h@gowUnG
zP94ka*Ius&oCOYea2NTns*5;92bSvs29d?%=fVvezSR;|XxWSWVU=IGcJt=-N_F^n
z_0Xcfb2HSq#f4MDF~xj&z3pS-(3RC{0exJwp(lA#QRKO`v;aHwx%JHPhR%WQ)Pg2-
z>Qaj;e<*^Q<JeelxfClO;jFKQt`{^d!Pf#mn=1kSV|N#4G+gWt>~RMx(+s)g+o;-X
zVQ+|Vk>9wwbmK-<*4kXJ5pee|$`jm4AU}&t%wok<VihTi0pq3`>qs@5K%70O=*jp9
zXe32H5KUn2fs+{N0Za1Pz6aRrq2txX2?!R`l*~{vO9^3onh@qD1rtC7G%~N_DJ&o{
zRD&6;#11YFkgf-G8O~LEjcNqTy(^E5fm_b0$}lHoPZ7nK?J=^w->@!B)SiYpvOV3_
zzEQiF?OsmQP-?`m#C8s48Z@DOtaPD|y}WpUcLmfh+QtHOl(o}g>PmPshF19*C2bj%
zV;Di(IHjC{@$2Sd{Mq`xhIV?I`zdKzKL^?V*c;`J$0}MI7$qciReuRJC%!iV?e*<r
zb#Kx(_EqsUjrDNK)=8G^Z36E`XMs7R7cDkoy`IA=7p#AU($*w+%AFJf;2jCJ=^i2g
zPG5&91Y=V-u&KEO2zhEPF92RyF96P0CGd}InoqK0EczSQO)+PS(A?r-%Mv)|I77mH
zA<aVy<%EH#U<W>c7r+OUNcWyRTYX_Qz*HDzXe|$)V^{emY*YV~3I_=2hZ5+*2+dKy
z7INPKh=i8tz>@UE;gG}hM50}bWPR7ixsnrK1U$R71|ZhqTV_zN!@Mo>PCvJ0O4R}K
z+O<YsUevHsK|wo$q<%T6b&C*si!b%XRroUUQcS;M_DrfEgL{8P>Vc4XxaDB2681T$
zTrLo{BPb&gSzwKoKd?lnMf#Q=1c5>2ggm3fhFTp#=P=0w8_9-<1*$}68AUka)~+KD
zb)sWE!Xzgxj3`niqQr^jIewzko=9@EDZ)heZMT`|WDqKOagr*rEm5Z5LQj85KARp$
zVPq$To;HsI#+2C-4xpA6%p@Xk3u3}6NQ|*En^FyRf)xNDbL=vk1&qw8C7I44oxszC
zdhp}70LwAqBLMS0Iw6pe0P~N49<W~=p@{7fsaL<zf30>IK!xpT$Z1^w=%G$Ej?`c0
z=uJ1*HM)5KgJR}z>=e_8^GNfMP}l=d*_y2bf&e&i;f&HP#%i||F+dGF9K%tC92{rL
zjp1z>rMUOTd+qinWP3IV_^|;y-SK$5taMS@owQkZ3ipX!r8|v#25l!}0*BdX3J{>b
zRJ$i3>jcWD<C8~hR_V^sb9WvkGXSuYb?W;RWG&da?r9qFVKFWpv3PP{f5pV_<AwMn
zf!{upPbXTh;;Hz=q_V1{Z*6T~6aN5dv+-;^bEKkY^oV(t<KmI}l6BAEX)Zn!&n^&r
z&QLAP;cUEsma6#YcmnshoY(Pp|85&n62REbf33!6>nefu@Y9hBjh*wWBlV`K-roH2
zn%(zCYQ0ukw~Vzt6`zaWi{FEU@{!&>7f&B9#AlBf8}u!E=$@DI)c8DR&1L>v%#ptk
zUx-h|)A2%Gg=tU@PsisWQH?Jg>G52=fHLeYXy`mjR2YN7UMNBHv>q4ZQhZVFg)_Dm
zL09qV_~fi|N_ok!qL;9?^CW3O!P9)INvuXKo+CZR^ZVElei^mq;!AjI%qw3*BQII{
z1_tmPYX5cgo?S@a{tk|4D$g$cPXBxTCCwG>K2o|1@7@uwSnIdFJrVv5W_BLq$lGJo
zC+2cFK9#N5Wx0Ne$wy1<@;(uh3mDf$jO*X<%j5hRXbv^g9e|Uy$M@z*TPVF0gS^;S
zsWev^xBeD**N4+}7o_)xcvq|5ZUCO&Xl68@fcu!AMMZsAYiX(9*VZlm7ZOaDJa->P
zY{b%a3Bp4#DI)2i)oghV$lL4qI;3w33xo*<k+5$uvy~(O&X8yMRusUBJ%hV%?LbUQ
zlxb9*%p;Hk=y&+!wH-d~kDEHQ#I6%Tq}Lvn_b9cb{hHaV`_DuG;e`Y{dvMYEr8JVP
zC454!J}_3B6;&FVq}VZiIQqh^NmC_G195kM`*(Ex)1L|Ast*pv?t$P+<9~}EoP-tv
z82bBPe6jXR?!fyO==eaZt~lR*hiey2<W;#W;8ZJ_b*p=U6@7R^T%e*wB;cYiOfp+$
zk~cdtml!A_b7Xif822tL8JI_E>&Ox$IrwS9Np#z-*Ae0HJBb0u+uwB(t?9xFKD_r}
zU2y8*GF3MakRYd=Xe!m*ZCVI@Y$hjmyr8yEo(<SAOl$~J4Fco%c2e|$z?74MNYvKg
zXG<oX<XQsxR1EscNyiV5(h*DTb*b-^o0a#a;T3;EgOR4U*kAjkG}vs3v6W3dQ$Y@P
znKVE%H@E0D<r4NNE9xXnB;%4QVeqyK!<>}J<1=MhQiMsZxgmU<q=X2Q*MYd8m6Y(-
zHe~_L$xd=E(ie$=G(wO_-<Pw+q9z6s(x#kYoqpPwH``BGBhh6ewjstyrTP|_L85MM
zCi;#OS=k65B?Z~U_3K#<(vI^A4NUb*$OvB{nL9zmf&37IO=$(DYttYV7c~Ppouz+7
zE2i*%LOye?%=GUHIw*)n1f;AL)B-E$KW0BtFSBV@(x$XB>Xg|ma?_AGhk7NDl~Za#
zQkDW*^M9FO>UYzt)1WT})ShFyZv2m~9-MnKWx=>dVszjo3T<=AQcfWg$p{^g5&QwE
zHV?NVrZ6J2em{(dnd2C8EEtxN-1!klU;5_=Iz$xB`Tv5z?hxjgB>c_5M?L>Q(0dn1
zbxd&bTO4@P>ZAdaJ~9rVI33m?XhIl<>r=Q6@Kg|eN}-WjMiMLGzx%wWD1ODQI@Q!g
z3hE<32qAA!^`NtgF5yZL+K5jn`3y-#8yw~&CuebdKj$;ie?;|=_QUKH_R)nm@1v~#
zNSJ^^q2vq5y;Q<x0k>7aZNXz<zrl2glXi)}YIxScX4w(AFrIVZ!&<kH)zY!^G%%PV
zo{d<8wFiTdysipHIflFJ6HCg+MO&W%8;DC_HDgqQyMR(K;?%Lu-VysPf_E{of!<1z
z4O9IxMuccIabL(+LNh`RZh3BB7frlJoxO>}N#uy9Ptka@`e5X!6O-FcuJ;*4vg7f2
z1x$Ft$L!F@1i0$NO)&4cjMHOS|B0j4U(mH)Ff?_}D5#vqCIMcVQKI<PP;?EOBzp=5
z4sq)H@-JJV`z5?Qc#OM_PqvPtoN)Sv!(x2LqF5>9P^^n$KTlSA@n71ZRC)*T*(ODH
zKSR`O<?7X&RlaIli1OlaXC$N*cpX1zx`_JL8de~~s+LcH9nz8S&yYkS+U1A{3?%Ac
z?*=Ukfp&^_QRkt9MiA`c9f*k63E`+-LD(LY#PUYOAbyDGKKb7PhPLK8q8a$n(mL!M
zNm}VeZsjaiMrI+qdfc|*$uIIda#Gi>y?at4-GeHn6C7v|;cvhTEH@$^gEgx1p9hE+
zKr=Yp6s>EgV?H*WhYifN2F|u}{pytuD~r6<s;*qW@xju{^$$P#zanLSgjo7s_*SBk
z4B!snXb2z&FhPnM9Bnx*tRn%F+&Nj`A>)<<(gm^sn_Z{xB8a&3dhL&dq~1&Uh(tFT
z<;Rvlbz1ba)j(ROC*bwN9vy8;E5ku+xwFHbh><a5mdWm|48B`oHTse3Aq~F^@cU#6
z{YU~h($7W!9)}qJFqIq<F3Bfo>KPzn8WaH{rs0!aWR$=9s=A6eiX@bTnki_@m`I`7
z_9D0Cb&`VY_S(wFi3XM~E}>pxguiJcmIMkE`iPo<4uR!F!m2q*$%^FGG*@iN8U@8k
z6TO9%6Q3YknM~s;8g@-GF}j{9%|mn+LH;md4-)nej5KsN#Fr$bfKLIg-L||$$4Gva
zOh|_3G+Qa%6t}689tm?JDQuc`@Je9XX!usv`7hLy0hkgm>!;Nzy#(%~gBeY$XVsEU
z3~H901)rH?hK@Jt!KJ}g-5CAsRqZd(h#evw62X&pC_zSY8pJQ~DFPu?*oqweq7-&U
zrm##l{=UXd-Xu^SJ|TI%sB8FVBk&;DD{7I8^*sYN09LJ6iiijzAhAlG^hgaOl`Yc|
z`LRJgz!J(4kX3>0Q((OmST6><SeRAjl{i19P#i^;8e<BT#s-zh=t?mz!mj96fXIA*
zU(yGW5dI!Mv<aT>lb+MJ!EL9G&$c$VLcW0r;*%$<{La&#@F#2h?$f7yaJKFMWF>Ik
z#b-4?4cfw40lmW)RYH0|mI$7?c4}o@I$q5kxIFTlr@ah5!db`1F?2@W>JRrPwTg|}
zJAoXBS-Qskw*)(=KyFYEcG8J2h3%aTs#b?4_jXD5{Nsp~eVy?<#C@OlFeMNJiED3{
z2p8NB@!>{}?#`gu-M2S;+d$w8r);6m2!M=zg}e*ZHqi0+Rd{byg#eZBA$Pxr)UTEf
zccqv*$OYJFd;ox4$vq|R<ifyv2H)1{I1=U(;~Appwf)3s$lppSMI)USIAM1ZwwAEF
ziGG(JbC1{PN8P-JdqwQv7$1j|pP}q7Ks6-4r8HkqtLmI~QROO}E5OGzgEOQb{OOzF
z<9mKIzFcjtZ?0EL^rgwiCvnqEN+$hlK-;5y*))N@UiKz$ns!h#O)*D<qo9CrDcPsw
zHYGH|p;1dXqz_qQ3JHDc3aM#9(HTa~O5YXog&!$@S<nl!<qcV<GA3T3Mv{|GN2=;_
zxDSvQew7HFpzm_Y>0S{64|tXSFGJOo6+k<cWV~0QjV~Ty8rUGZE<1VM2$RB3(^>zF
StX4>a*409eT+%Xuv;M!r+lnOs

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-311.pyc
deleted file mode 100644
index e2b6e8e274e98df5f28013ef45589d246125aff5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14832
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/orthogonal_matching_pursuit.cpython-39.pyc
deleted file mode 100644
index 9f1ec9479869fec42f363e7f46e07dba2f1c6be5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8930
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
H7PS8b3n7jV

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-310.pyc
deleted file mode 100644
index 97ed55acc1e800a138ddf489ccea709a8b28f634..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 11629
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
avA&6Yk^<6Wno`U`AM%$xPx3uy*Z&u-bVhUl

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-311.pyc
deleted file mode 100644
index 0784caa91ce5a8acf65a6e83b8f58a47f8e12bcb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19787
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
M>^HBe!Eo^Z0iAV!9smFU

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_ard.cpython-39.pyc
deleted file mode 100644
index 0843cdf8bd820d9cccfdcde3a1193f3f416ccc10..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 11717
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
Zi*F}O^<C;cm`0%G$mvY}IHnd?{}%}UP3r&v

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-310.pyc
deleted file mode 100644
index 30079dce4bc04802324f720381b872c1a2f64018..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9509
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
X4&uxQi9kPt=A@8#$;cEg3d(;2)UokG

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-311.pyc
deleted file mode 100644
index 489534282f927e599530fd2c176b5240e2214e1d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19040
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
RV>v$k20#DP38fgR{|_UFGxGod

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/reg_fast_laplace.cpython-39.pyc
deleted file mode 100644
index 7a3bbc05003eab405d52a934e83053ae50080d25..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9581
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/sequential_design.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/sequential_design.cpython-311.pyc
deleted file mode 100644
index af35ff42f1ea1e8ee19d476f7b51c19199513cde..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 87535
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
E|3L9E)c^nh

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-310.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-310.pyc
deleted file mode 100644
index b856dfef2c2658af8ecc6b1ab85b99c499a39705..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35103
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
RfEonip2Lr$Q;xp){{<f=hrs{<

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-311.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-311.pyc
deleted file mode 100644
index 8d6f35b0e889d838247709ac2440fed2799abfce..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 61708
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

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-39.pyc b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/__pycache__/surrogate_models.cpython-39.pyc
deleted file mode 100644
index f44a774b4165e6ff769d8db2f2c13c4dd0cbe8b3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35188
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
X?l%ZtK(YD%eZCe!@XRZi#_|6P0+p{e

diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/adaptPlot.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/adaptPlot.py
deleted file mode 100644
index 102f0373c..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/adaptPlot.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Created on Thu Aug 13 13:46:24 2020
-
-@author: farid
-"""
-import os
-from sklearn.metrics import mean_squared_error, r2_score
-from itertools import cycle
-from matplotlib.backends.backend_pdf import PdfPages
-import matplotlib.pyplot as plt
-
-
-def adaptPlot(PCEModel, Y_Val, Y_PC_Val, Y_PC_Val_std, x_values=[],
-              plotED=False, SaveFig=True):
-
-    NrofSamples = PCEModel.ExpDesign.n_new_samples
-    initNSamples = PCEModel.ExpDesign.n_init_samples
-    itrNr = 1 + (PCEModel.ExpDesign.X.shape[0] - initNSamples)//NrofSamples
-
-    oldEDY = PCEModel.ExpDesign.Y
-
-    if SaveFig:
-        newpath = 'adaptivePlots'
-        os.makedirs(newpath, exist_ok=True)
-
-        # create a PdfPages object
-        pdf = PdfPages(f'./{newpath}/Model_vs_PCEModel_itr_{itrNr}.pdf')
-
-    # List of markers and colors
-    color = cycle((['b', 'g', 'r', 'y', 'k']))
-    marker = cycle(('x', 'd', '+', 'o', '*'))
-
-    OutNames = list(Y_Val.keys())
-    x_axis = 'Time [s]'
-
-    if len(OutNames) == 1:
-        OutNames.insert(0, x_axis)
-    try:
-        x_values = Y_Val['x_values']
-    except KeyError:
-        x_values = x_values
-
-    fig = plt.figure(figsize=(24, 16))
-
-    # Plot the model vs PCE model
-    for keyIdx, key in enumerate(PCEModel.ModelObj.Output.names):
-        Y_PC_Val_ = Y_PC_Val[key]
-        Y_PC_Val_std_ = Y_PC_Val_std[key]
-        Y_Val_ = Y_Val[key]
-        if Y_Val_.ndim == 1:
-            Y_Val_ = Y_Val_.reshape(1, -1)
-        old_EDY = oldEDY[key]
-        if isinstance(x_values, dict):
-            x = x_values[key]
-        else:
-            x = x_values
-
-        for idx, y in enumerate(Y_Val_):
-            Color = next(color)
-            Marker = next(marker)
-
-            plt.plot(
-                x, y, color=Color, marker=Marker,
-                lw=2.0, label='$Y_{%s}^{M}$'%(idx+itrNr)
-                )
-
-            plt.plot(
-                x, Y_PC_Val_[idx], color=Color, marker=Marker,
-                lw=2.0, linestyle='--', label='$Y_{%s}^{PCE}$'%(idx+itrNr)
-                )
-            plt.fill_between(
-                x, Y_PC_Val_[idx]-1.96*Y_PC_Val_std_[idx],
-                Y_PC_Val_[idx]+1.96*Y_PC_Val_std_[idx], color=Color,
-                alpha=0.15
-                )
-
-            if plotED:
-                for output in old_EDY:
-                    plt.plot(x, output, color='grey', alpha=0.1)
-
-        # Calculate the RMSE
-        RMSE = mean_squared_error(Y_PC_Val_, Y_Val_, squared=False)
-        R2 = r2_score(Y_PC_Val_.reshape(-1, 1), Y_Val_.reshape(-1, 1))
-
-        plt.ylabel(key)
-        plt.xlabel(x_axis)
-        plt.title(key)
-
-        ax = fig.axes[0]
-        ax.legend(loc='best', frameon=True)
-        fig.canvas.draw()
-        ax.text(0.65, 0.85,
-                f'RMSE = {round(RMSE, 3)}\n$R^2$ = {round(R2, 3)}',
-                transform=ax.transAxes, color='black',
-                bbox=dict(facecolor='none',
-                          edgecolor='black',
-                          boxstyle='round,pad=1')
-                )
-        plt.grid()
-
-        if SaveFig:
-            # save the current figure
-            pdf.savefig(fig, bbox_inches='tight')
-
-            # Destroy the current plot
-            plt.clf()
-    pdf.close()
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/apoly_construction.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/apoly_construction.py
deleted file mode 100644
index 40830fe8a..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/apoly_construction.py
+++ /dev/null
@@ -1,124 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-import numpy as np
-
-
-def apoly_construction(Data, degree):
-    """
-    Construction of Data-driven Orthonormal Polynomial Basis
-    Author: Dr.-Ing. habil. Sergey Oladyshkin
-    Department of Stochastic Simulation and Safety Research for Hydrosystems
-    Institute for Modelling Hydraulic and Environmental Systems
-    Universitaet Stuttgart, Pfaffenwaldring 5a, 70569 Stuttgart
-    E-mail: Sergey.Oladyshkin@iws.uni-stuttgart.de
-    http://www.iws-ls3.uni-stuttgart.de
-    The current script is based on definition of arbitrary polynomial chaos
-    expansion (aPC), which is presented in the following manuscript:
-    Oladyshkin, S. and W. Nowak. Data-driven uncertainty quantification using
-    the arbitrary polynomial chaos expansion. Reliability Engineering & System
-    Safety, Elsevier, V. 106, P.  179-190, 2012.
-    DOI: 10.1016/j.ress.2012.05.002.
-
-    Parameters
-    ----------
-    Data : array
-        Raw data.
-    degree : int
-        Maximum polynomial degree.
-
-    Returns
-    -------
-    Polynomial : array
-        The coefficients of the univariate orthonormal polynomials.
-
-    """
-    if Data.ndim !=1:
-        raise AttributeError('Data should be a 1D array')
-
-    # Initialization
-    dd = degree + 1
-    nsamples = len(Data)
-
-    # Forward linear transformation (Avoiding numerical issues)
-    MeanOfData = np.mean(Data)
-    Data = Data/MeanOfData
-
-    # Compute raw moments of input data
-    raw_moments = [np.sum(np.power(Data, p))/nsamples for p in range(2*dd+2)]
-
-    # Main Loop for Polynomial with degree up to dd
-    PolyCoeff_NonNorm = np.empty((0, 1))
-    Polynomial = np.zeros((dd+1, dd+1))
-
-    for degree in range(dd+1):
-        Mm = np.zeros((degree+1, degree+1))
-        Vc = np.zeros((degree+1))
-
-        # Define Moments Matrix Mm
-        for i in range(degree+1):
-            for j in range(degree+1):
-                if (i < degree):
-                    Mm[i, j] = raw_moments[i+j]
-
-                elif (i == degree) and (j == degree):
-                    Mm[i, j] = 1
-
-            # Numerical Optimization for Matrix Solver
-            Mm[i] = Mm[i] / max(abs(Mm[i]))
-
-        # Defenition of Right Hand side ortogonality conditions: Vc
-        for i in range(degree+1):
-            Vc[i] = 1 if i == degree else 0
-
-        # Solution: Coefficients of Non-Normal Orthogonal Polynomial: Vp Eq.(4)
-        try:
-            Vp = np.linalg.solve(Mm, Vc)
-        except:
-            inv_Mm = np.linalg.pinv(Mm)
-            Vp = np.dot(inv_Mm, Vc.T)
-
-        if degree == 0:
-            PolyCoeff_NonNorm = np.append(PolyCoeff_NonNorm, Vp)
-
-        if degree != 0:
-            if degree == 1:
-                zero = [0]
-            else:
-                zero = np.zeros((degree, 1))
-            PolyCoeff_NonNorm = np.hstack((PolyCoeff_NonNorm, zero))
-
-            PolyCoeff_NonNorm = np.vstack((PolyCoeff_NonNorm, Vp))
-
-        if 100*abs(sum(abs(np.dot(Mm, Vp)) - abs(Vc))) > 0.5:
-            print('\n---> Attention: Computational Error too high !')
-            print('\n---> Problem: Convergence of Linear Solver')
-
-        # Original Numerical Normalization of Coefficients with Norm and
-        # orthonormal Basis computation Matrix Storrage
-        # Note: Polynomial(i,j) correspont to coefficient number "j-1"
-        # of polynomial degree "i-1"
-        P_norm = 0
-        for i in range(nsamples):
-            Poly = 0
-            for k in range(degree+1):
-                if degree == 0:
-                    Poly += PolyCoeff_NonNorm[k] * (Data[i]**k)
-                else:
-                    Poly += PolyCoeff_NonNorm[degree, k] * (Data[i]**k)
-
-            P_norm += Poly**2 / nsamples
-
-        P_norm = np.sqrt(P_norm)
-
-        for k in range(degree+1):
-            if degree == 0:
-                Polynomial[degree, k] = PolyCoeff_NonNorm[k]/P_norm
-            else:
-                Polynomial[degree, k] = PolyCoeff_NonNorm[degree, k]/P_norm
-
-    # Backward linear transformation to the real data space
-    Data *= MeanOfData
-    for k in range(len(Polynomial)):
-        Polynomial[:, k] = Polynomial[:, k] / (MeanOfData**(k))
-
-    return Polynomial
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/bayes_linear.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/bayes_linear.py
deleted file mode 100644
index 3bd827ac0..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/bayes_linear.py
+++ /dev/null
@@ -1,523 +0,0 @@
-import numpy as np
-from sklearn.base import RegressorMixin
-from sklearn.linear_model._base import LinearModel
-from sklearn.utils import check_X_y, check_array, as_float_array
-from sklearn.utils.validation import check_is_fitted
-from scipy.linalg import svd
-import warnings
-from sklearn.preprocessing import normalize as f_normalize
-
-
-
-class BayesianLinearRegression(RegressorMixin,LinearModel):
-    '''
-    Superclass for Empirical Bayes and Variational Bayes implementations of 
-    Bayesian Linear Regression Model
-    '''
-    def __init__(self, n_iter, tol, fit_intercept,copy_X, verbose):
-        self.n_iter        = n_iter
-        self.fit_intercept = fit_intercept
-        self.copy_X        = copy_X
-        self.verbose       = verbose
-        self.tol           = tol
-        
-        
-    def _check_convergence(self, mu, mu_old):
-        '''
-        Checks convergence of algorithm using changes in mean of posterior
-        distribution of weights
-        '''
-        return np.sum(abs(mu-mu_old)>self.tol) == 0
-        
-        
-    def _center_data(self,X,y):
-        ''' Centers data'''
-        X     = as_float_array(X,copy = self.copy_X)
-        # normalisation should be done in preprocessing!
-        X_std = np.ones(X.shape[1], dtype = X.dtype)
-        if self.fit_intercept:
-            X_mean = np.average(X,axis = 0)
-            y_mean = np.average(y,axis = 0)
-            X     -= X_mean
-            y      = y - y_mean
-        else:
-            X_mean = np.zeros(X.shape[1],dtype = X.dtype)
-            y_mean = 0. if y.ndim == 1 else np.zeros(y.shape[1], dtype=X.dtype)
-        return X,y, X_mean, y_mean, X_std
-        
-        
-    def predict_dist(self,X):
-        '''
-        Calculates  mean and variance of predictive distribution for each data 
-        point of test set.(Note predictive distribution for each data point is 
-        Gaussian, therefore it is uniquely determined by mean and variance)                    
-                    
-        Parameters
-        ----------
-        x: array-like of size (n_test_samples, n_features)
-            Set of features for which corresponding responses should be predicted
-
-        Returns
-        -------
-        :list of two numpy arrays [mu_pred, var_pred]
-        
-            mu_pred : numpy array of size (n_test_samples,)
-                      Mean of predictive distribution
-                      
-            var_pred: numpy array of size (n_test_samples,)
-                      Variance of predictive distribution        
-        '''
-        # Note check_array and check_is_fitted are done within self._decision_function(X)
-        mu_pred     = self._decision_function(X)
-        data_noise  = 1./self.beta_
-        model_noise = np.sum(np.dot(X,self.eigvecs_)**2 * self.eigvals_,1)
-        var_pred    =  data_noise + model_noise
-        return [mu_pred,var_pred]
-    
-        
-        
-
-class EBLinearRegression(BayesianLinearRegression):
-    '''
-    Bayesian Regression with type II maximum likelihood (Empirical Bayes)
-    
-    Parameters:
-    -----------  
-    n_iter: int, optional (DEFAULT = 300)
-       Maximum number of iterations
-         
-    tol: float, optional (DEFAULT = 1e-3)
-       Threshold for convergence
-       
-    optimizer: str, optional (DEFAULT = 'fp')
-       Method for optimization , either Expectation Maximization or 
-       Fixed Point Gull-MacKay {'em','fp'}. Fixed point iterations are
-       faster, but can be numerically unstable (especially in case of near perfect fit).
-       
-    fit_intercept: bool, optional (DEFAULT = True)
-       If True includes bias term in model
-       
-    perfect_fit_tol: float (DEAFAULT = 1e-5)
-       Prevents overflow of precision parameters (this is smallest value RSS can have).
-       ( !!! Note if using EM instead of fixed-point, try smaller values
-       of perfect_fit_tol, for better estimates of variance of predictive distribution )
-
-    alpha: float (DEFAULT = 1)
-       Initial value of precision paramter for coefficients ( by default we define 
-       very broad distribution )
-       
-    copy_X : boolean, optional (DEFAULT = True)
-        If True, X will be copied, otherwise will be 
-        
-    verbose: bool, optional (Default = False)
-       If True at each iteration progress report is printed out
-    
-    Attributes
-    ----------
-    coef_  : array, shape = (n_features)
-        Coefficients of the regression model (mean of posterior distribution)
-        
-    intercept_: float
-        Value of bias term (if fit_intercept is False, then intercept_ = 0)
-        
-    alpha_ : float
-        Estimated precision of coefficients
-       
-    beta_  : float 
-        Estimated precision of noise
-        
-    eigvals_ : array, shape = (n_features, )
-        Eigenvalues of covariance matrix (from posterior distribution of weights)
-        
-    eigvecs_ : array, shape = (n_features, n_featues)
-        Eigenvectors of covariance matrix (from posterior distribution of weights)
-
-    '''
-    
-    def __init__(self,n_iter = 300, tol = 1e-3, optimizer = 'fp', fit_intercept = True,
-                 normalize=True, perfect_fit_tol = 1e-6, alpha = 1, copy_X = True, verbose = False):
-        super(EBLinearRegression,self).__init__(n_iter, tol, fit_intercept, copy_X, verbose)
-        if optimizer not in ['em','fp']:
-            raise ValueError('Optimizer can be either "em" or "fp" ')
-        self.optimizer     =  optimizer 
-        self.alpha         =  alpha 
-        self.perfect_fit   =  False
-        self.normalize     = True
-        self.scores_       =  [np.NINF]
-        self.perfect_fit_tol = perfect_fit_tol
-    
-    def _check_convergence(self, mu, mu_old):
-        '''
-        Checks convergence of algorithm using changes in mean of posterior
-        distribution of weights
-        '''
-        return np.sum(abs(mu-mu_old)>self.tol) == 0
-        
-        
-    def _center_data(self,X,y):
-        ''' Centers data'''
-        X     = as_float_array(X,copy = self.copy_X)
-        # normalisation should be done in preprocessing!
-        X_std = np.ones(X.shape[1], dtype = X.dtype)
-        if self.fit_intercept:
-            X_mean = np.average(X, axis=0)
-            X -= X_mean
-            if self.normalize:
-                X, X_std = f_normalize(X, axis=0, copy=False,
-                                         return_norm=True)
-            else:
-                X_std = np.ones(X.shape[1], dtype=X.dtype)
-            y_mean = np.average(y, axis=0)
-            y = y - y_mean
-        else:
-            X_mean = np.zeros(X.shape[1],dtype = X.dtype)
-            y_mean = 0. if y.ndim == 1 else np.zeros(y.shape[1], dtype=X.dtype)
-        return X,y, X_mean, y_mean, X_std
-            
-    def fit(self, X, y):
-        '''
-        Fits Bayesian Linear Regression using Empirical Bayes
-        
-        Parameters
-        ----------
-        X: array-like of size [n_samples,n_features]
-           Matrix of explanatory variables (should not include bias term)
-       
-        y: array-like of size [n_features]
-           Vector of dependent variables.
-           
-        Returns
-        -------
-        object: self
-          self
-    
-        '''
-        # preprocess data
-        X, y = check_X_y(X, y, dtype=np.float64, y_numeric=True)
-        n_samples, n_features = X.shape
-        X, y, X_mean, y_mean, X_std = self._center_data(X, y)
-        self._x_mean_ = X_mean
-        self._y_mean  = y_mean
-        self._x_std   = X_std
-        
-        #  precision of noise & and coefficients
-        alpha   =  self.alpha
-        var_y  = np.var(y)
-        # check that variance is non zero !!!
-        if var_y == 0 :
-            beta = 1e-2
-        else:
-            beta = 1. / np.var(y)
-
-        # to speed all further computations save svd decomposition and reuse it later
-        u,d,vt   = svd(X, full_matrices = False)
-        Uy      = np.dot(u.T,y)
-        dsq     = d**2
-        mu      = 0
-    
-        for i in range(self.n_iter):
-            
-            # find mean for posterior of w ( for EM this is E-step)
-            mu_old  =  mu
-            if n_samples > n_features:
-                 mu =  vt.T *  d/(dsq+alpha/beta) 
-            else:
-                 # clever use of SVD here , faster for large n_features
-                 mu =  u * 1./(dsq + alpha/beta)
-                 mu =  np.dot(X.T,mu)
-            mu =  np.dot(mu,Uy)
-
-            # precompute errors, since both methods use it in estimation
-            error   = y - np.dot(X,mu)
-            sqdErr  = np.sum(error**2)
-            
-            if sqdErr / n_samples < self.perfect_fit_tol:
-                self.perfect_fit = True
-                warnings.warn( ('Almost perfect fit!!! Estimated values of variance '
-                                'for predictive distribution are computed using only RSS'))
-                break
-            
-            if self.optimizer == "fp":           
-                gamma      =  np.sum(beta*dsq/(beta*dsq + alpha))
-                # use updated mu and gamma parameters to update alpha and beta
-                # !!! made computation numerically stable for perfect fit case
-                alpha      =   gamma  / (np.sum(mu**2) + np.finfo(np.float32).eps )
-                beta       =  ( n_samples - gamma ) / (sqdErr + np.finfo(np.float32).eps )
-            else:             
-                # M-step, update parameters alpha and beta to maximize ML TYPE II
-                eigvals    = 1. / (beta * dsq + alpha)
-                alpha      = n_features / ( np.sum(mu**2) + np.sum(1/eigvals) )
-                beta       = n_samples / ( sqdErr + np.sum(dsq/eigvals) )
-
-            # if converged or exceeded maximum number of iterations => terminate
-            converged = self._check_convergence(mu_old,mu)
-            if self.verbose:
-                print( "Iteration {0} completed".format(i) )
-                if converged is True:
-                    print("Algorithm converged after {0} iterations".format(i))
-            if converged or i==self.n_iter -1:
-                break
-        eigvals       = 1./(beta * dsq + alpha)
-        self.coef_    = beta*np.dot(vt.T*d*eigvals ,Uy)
-        self._set_intercept(X_mean,y_mean,X_std)
-        self.beta_    = beta
-        self.alpha_   = alpha
-        self.eigvals_ = eigvals
-        self.eigvecs_ = vt.T
-        
-        # set intercept_
-        if self.fit_intercept:
-            self.coef_ = self.coef_ / X_std
-            self.intercept_ = y_mean - np.dot(X_mean, self.coef_.T)
-        else:
-            self.intercept_ = 0.
-
-        return self
-    
-    def predict(self,X, return_std=False):
-        '''
-        Computes predictive distribution for test set.
-        Predictive distribution for each data point is one dimensional
-        Gaussian and therefore is characterised by mean and variance.
-        
-        Parameters
-        -----------
-        X: {array-like, sparse} (n_samples_test, n_features)
-           Test data, matrix of explanatory variables
-           
-        Returns
-        -------
-        : list of length two [y_hat, var_hat]
-        
-             y_hat: numpy array of size (n_samples_test,)
-                    Estimated values of targets on test set (i.e. mean of predictive
-                    distribution)
-           
-             var_hat: numpy array of size (n_samples_test,)
-                    Variance of predictive distribution
-        '''
-        y_hat     = np.dot(X,self.coef_) + self.intercept_
-        
-        if return_std:
-            if self.normalize:
-                X   = (X - self._x_mean_) / self._x_std
-            data_noise  = 1./self.beta_
-            model_noise = np.sum(np.dot(X,self.eigvecs_)**2 * self.eigvals_,1)
-            var_pred    =  data_noise + model_noise
-            std_hat = np.sqrt(var_pred)
-            return y_hat, std_hat
-        else:
-            return y_hat
-            
-            
-# ==============================  VBLR  =========================================
-
-def gamma_mean(a,b):
-    '''
-    Computes mean of gamma distribution
-    
-    Parameters
-    ----------
-    a: float
-      Shape parameter of Gamma distribution
-    
-    b: float
-      Rate parameter of Gamma distribution
-      
-    Returns
-    -------
-    : float
-      Mean of Gamma distribution
-    '''
-    return float(a) / b 
-    
-
-
-class VBLinearRegression(BayesianLinearRegression):
-    '''
-    Implements Bayesian Linear Regression using mean-field approximation.
-    Assumes gamma prior on precision parameters of coefficients and noise.
-
-    Parameters:
-    -----------
-    n_iter: int, optional (DEFAULT = 100)
-       Maximum number of iterations for KL minimization
-
-    tol: float, optional (DEFAULT = 1e-3)
-       Convergence threshold
-       
-    fit_intercept: bool, optional (DEFAULT = True)
-       If True will use bias term in model fitting
-
-    a: float, optional (Default = 1e-4)
-       Shape parameter of Gamma prior for precision of coefficients
-       
-    b: float, optional (Default = 1e-4)
-       Rate parameter of Gamma prior for precision coefficients
-       
-    c: float, optional (Default = 1e-4)
-       Shape parameter of  Gamma prior for precision of noise
-       
-    d: float, optional (Default = 1e-4)
-       Rate parameter of  Gamma prior for precision of noise
-       
-    verbose: bool, optional (Default = False)
-       If True at each iteration progress report is printed out
-       
-    Attributes
-    ----------
-    coef_  : array, shape = (n_features)
-        Coefficients of the regression model (mean of posterior distribution)
-        
-    intercept_: float
-        Value of bias term (if fit_intercept is False, then intercept_ = 0)
-        
-    alpha_ : float
-        Mean of precision of coefficients
-       
-    beta_  : float 
-        Mean of precision of noise
-
-    eigvals_ : array, shape = (n_features, )
-        Eigenvalues of covariance matrix (from posterior distribution of weights)
-        
-    eigvecs_ : array, shape = (n_features, n_featues)
-        Eigenvectors of covariance matrix (from posterior distribution of weights)
-
-    '''
-    
-    def __init__(self, n_iter = 100, tol =1e-4, fit_intercept = True, 
-                 a = 1e-4, b = 1e-4, c = 1e-4, d = 1e-4, copy_X = True,
-                 verbose = False):
-        super(VBLinearRegression,self).__init__(n_iter, tol, fit_intercept, copy_X,
-                                                verbose)
-        self.a,self.b   =  a, b
-        self.c,self.d   =  c, d
-
-        
-    def fit(self,X,y):
-        '''
-        Fits Variational Bayesian Linear Regression Model
-        
-        Parameters
-        ----------
-        X: array-like of size [n_samples,n_features]
-           Matrix of explanatory variables (should not include bias term)
-       
-        Y: array-like of size [n_features]
-           Vector of dependent variables.
-           
-        Returns
-        -------
-        object: self
-          self
-        '''
-        # preprocess data
-        X, y = check_X_y(X, y, dtype=np.float64, y_numeric=True)
-        n_samples, n_features = X.shape
-        X, y, X_mean, y_mean, X_std = self._center_data(X, y)
-        self._x_mean_ = X_mean
-        self._y_mean  = y_mean
-        self._x_std   = X_std
-        
-        # SVD decomposition, done once , reused at each iteration
-        u,D,vt = svd(X, full_matrices = False)
-        dsq    = D**2
-        UY     = np.dot(u.T,y)
-        
-        # some parameters of Gamma distribution have closed form solution
-        a      = self.a + 0.5 * n_features
-        c      = self.c + 0.5 * n_samples
-        b,d    = self.b,  self.d
-        
-        # initial mean of posterior for coefficients
-        mu     = 0
-                
-        for i in range(self.n_iter):
-            
-            # update parameters of distribution Q(weights)
-            e_beta       = gamma_mean(c,d)
-            e_alpha      = gamma_mean(a,b)
-            mu_old       = np.copy(mu)
-            mu,eigvals   = self._posterior_weights(e_beta,e_alpha,UY,dsq,u,vt,D,X)
-            
-            # update parameters of distribution Q(precision of weights) 
-            b            = self.b + 0.5*( np.sum(mu**2) + np.sum(eigvals))
-            
-            # update parameters of distribution Q(precision of likelihood)
-            sqderr       = np.sum((y - np.dot(X,mu))**2)
-            xsx          = np.sum(dsq*eigvals)
-            d            = self.d + 0.5*(sqderr + xsx)
- 
-            # check convergence 
-            converged = self._check_convergence(mu,mu_old)
-            if self.verbose is True:
-                print("Iteration {0} is completed".format(i))
-                if converged is True:
-                    print("Algorithm converged after {0} iterations".format(i))
-               
-            # terminate if convergence or maximum number of iterations are achieved
-            if converged or i==(self.n_iter-1):
-                break
-            
-        # save necessary parameters    
-        self.beta_   = gamma_mean(c,d)
-        self.alpha_  = gamma_mean(a,b)
-        self.coef_, self.eigvals_ = self._posterior_weights(self.beta_, self.alpha_, UY,
-                                                            dsq, u, vt, D, X)
-        self._set_intercept(X_mean,y_mean,X_std)
-        self.eigvecs_ = vt.T
-        return self
-        
-
-    def _posterior_weights(self, e_beta, e_alpha, UY, dsq, u, vt, d, X):
-        '''
-        Calculates parameters of approximate posterior distribution 
-        of weights
-        '''
-        # eigenvalues of covariance matrix
-        sigma = 1./ (e_beta*dsq + e_alpha)
-        
-        # mean of approximate posterior distribution
-        n_samples, n_features = X.shape
-        if n_samples > n_features:
-             mu =  vt.T *  d/(dsq + e_alpha/e_beta)# + np.finfo(np.float64).eps) 
-        else:
-             mu =  u * 1./(dsq + e_alpha/e_beta)# + np.finfo(np.float64).eps)
-             mu =  np.dot(X.T,mu)
-        mu =  np.dot(mu,UY)
-        return mu,sigma
-        
-    def predict(self,X, return_std=False):
-        '''
-        Computes predictive distribution for test set.
-        Predictive distribution for each data point is one dimensional
-        Gaussian and therefore is characterised by mean and variance.
-        
-        Parameters
-        -----------
-        X: {array-like, sparse} (n_samples_test, n_features)
-           Test data, matrix of explanatory variables
-           
-        Returns
-        -------
-        : list of length two [y_hat, var_hat]
-        
-             y_hat: numpy array of size (n_samples_test,)
-                    Estimated values of targets on test set (i.e. mean of predictive
-                    distribution)
-           
-             var_hat: numpy array of size (n_samples_test,)
-                    Variance of predictive distribution
-        '''
-        x         = (X - self._x_mean_) / self._x_std
-        y_hat     = np.dot(x,self.coef_) + self._y_mean
-        
-        if return_std:
-            data_noise  = 1./self.beta_
-            model_noise = np.sum(np.dot(X,self.eigvecs_)**2 * self.eigvals_,1)
-            var_pred    =  data_noise + model_noise
-            std_hat = np.sqrt(var_pred)
-            return y_hat, std_hat
-        else:
-            return y_hat
\ No newline at end of file
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/engine.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/engine.py
deleted file mode 100644
index 7f5c1bf77..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/engine.py
+++ /dev/null
@@ -1,2195 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Created on Sat Dec 16 10:16:50 2023
-Engine to train the surrogate with
-
-@author: Rebecca Kohlhaas
-"""
-import copy
-from copy import deepcopy, copy
-import h5py
-import joblib
-import numpy as np
-import os
-
-from scipy import stats, signal, linalg, sparse
-from scipy.spatial import distance
-from tqdm import tqdm
-import scipy.optimize as opt
-from sklearn.metrics import mean_squared_error
-import multiprocessing
-import matplotlib.pyplot as plt
-import sys
-import seaborn as sns
-from joblib import Parallel, delayed
-from .exploration import Exploration
-import pathlib
-
-#from .inputs import Input
-#from .exp_designs import ExpDesigns
-#from .surrogate_models import MetaModel
-#from bayesvalidrox.post_processing.post_processing import PostProcessing
-
-def hellinger_distance(P, Q):
-    """
-    Hellinger distance between two continuous distributions.
-
-    The maximum distance 1 is achieved when P assigns probability zero to
-    every set to which Q assigns a positive probability, and vice versa.
-    0 (identical) and 1 (maximally different)
-
-    Parameters
-    ----------
-    P : array
-        Reference likelihood.
-    Q : array
-        Estimated likelihood.
-
-    Returns
-    -------
-    float
-        Hellinger distance of two distributions.
-
-    """
-    P = np.array(P)
-    Q= np.array(Q)
-    
-    mu1 = P.mean()
-    Sigma1 = np.std(P)
-
-    mu2 = Q.mean()
-    Sigma2 = np.std(Q)
-
-    term1 = np.sqrt(2*Sigma1*Sigma2 / (Sigma1**2 + Sigma2**2))
-
-    term2 = np.exp(-.25 * (mu1 - mu2)**2 / (Sigma1**2 + Sigma2**2))
-
-    H_squared = 1 - term1 * term2
-
-    return np.sqrt(H_squared)
-
-
-def logpdf(x, mean, cov):
-    """
-    Computes the likelihood based on a multivariate normal distribution.
-
-    Parameters
-    ----------
-    x : TYPE
-        DESCRIPTION.
-    mean : array_like
-        Observation data.
-    cov : 2d array
-        Covariance matrix of the distribution.
-
-    Returns
-    -------
-    log_lik : float
-        Log likelihood.
-
-    """
-    n = len(mean)
-    L = linalg.cholesky(cov, lower=True)
-    beta = np.sum(np.log(np.diag(L)))
-    dev = x - mean
-    alpha = dev.dot(linalg.cho_solve((L, True), dev))
-    log_lik = -0.5 * alpha - beta - n / 2. * np.log(2 * np.pi)
-
-    return log_lik
-
-def subdomain(Bounds, n_new_samples):
-    """
-    Divides a domain defined by Bounds into sub domains.
-
-    Parameters
-    ----------
-    Bounds : list of tuples
-        List of lower and upper bounds.
-    n_new_samples : int
-        Number of samples to divide the domain for.
-    n_params : int
-        The number of params to build the subdomains for
-
-    Returns
-    -------
-    Subdomains : List of tuples of tuples
-        Each tuple of tuples divides one set of bounds into n_new_samples parts.
-
-    """
-    n_params = len(Bounds)
-    n_subdomains = n_new_samples + 1
-    LinSpace = np.zeros((n_params, n_subdomains))
-
-    for i in range(n_params):
-        LinSpace[i] = np.linspace(start=Bounds[i][0], stop=Bounds[i][1],
-                                  num=n_subdomains)
-    Subdomains = []
-    for k in range(n_subdomains-1):
-        mylist = []
-        for i in range(n_params):
-            mylist.append((LinSpace[i, k+0], LinSpace[i, k+1]))
-        Subdomains.append(tuple(mylist))
-
-    return Subdomains
-
-class Engine():
-    
-    
-    def __init__(self, MetaMod, Model, ExpDes):
-        self.MetaModel = MetaMod
-        self.Model = Model
-        self.ExpDesign = ExpDes
-        self.parallel = False
-        
-    def start_engine(self) -> None:
-        """
-        Do all the preparations that need to be run before the actual training
-
-        Returns
-        -------
-        None
-
-        """
-        self.out_names = self.Model.Output.names
-        self.MetaModel.out_names = self.out_names
-        
-        
-    def train_normal(self, parallel = False, verbose = False, save = False) -> None:
-        """
-        Trains surrogate on static samples only.
-        Samples are taken from the experimental design and the specified 
-        model is run on them.
-        Alternatively the samples can be read in from a provided hdf5 file.
-        
-
-        Returns
-        -------
-        None
-
-        """
-            
-        ExpDesign = self.ExpDesign
-        MetaModel = self.MetaModel
-        
-        # Read ExpDesign (training and targets) from the provided hdf5
-        if ExpDesign.hdf5_file is not None:
-            # TODO: need to run 'generate_ED' as well after this or not?
-            ExpDesign.read_from_file(self.out_names)
-        else:
-            # Check if an old hdf5 file exists: if yes, rename it
-            hdf5file = f'ExpDesign_{self.Model.name}.hdf5'
-            if os.path.exists(hdf5file):
-           #     os.rename(hdf5file, 'old_'+hdf5file)
-                file = pathlib.Path(hdf5file)
-                file.unlink()
-
-        # Prepare X samples 
-        # For training the surrogate use ExpDesign.X_tr, ExpDesign.X is for the model to run on 
-        ExpDesign.generate_ED(ExpDesign.n_init_samples,
-                                              transform=True,
-                                              max_pce_deg=np.max(MetaModel.pce_deg))
-        
-        # Run simulations at X 
-        if not hasattr(ExpDesign, 'Y') or ExpDesign.Y is None:
-            print('\n Now the forward model needs to be run!\n')
-            ED_Y, up_ED_X = self.Model.run_model_parallel(ExpDesign.X, mp = parallel)
-            ExpDesign.Y = ED_Y
-        else:
-            # Check if a dict has been passed.
-            if not type(ExpDesign.Y) is dict:
-                raise Exception('Please provide either a dictionary or a hdf5'
-                                'file to ExpDesign.hdf5_file argument.')
-                
-        # Separate output dict and x-values
-        if 'x_values' in ExpDesign.Y:
-            ExpDesign.x_values = ExpDesign.Y['x_values']
-            del ExpDesign.Y['x_values']
-        else:
-            print('No x_values are given, this might lead to issues during PostProcessing')
-        
-        
-        # Fit the surrogate
-        MetaModel.fit(ExpDesign.X_tr, ExpDesign.Y, parallel, verbose)
-        
-        # Save what there is to save
-        if save:
-            # Save surrogate
-            with open(f'surrogates/surrogate_{self.Model.name}.pk1', 'wb') as output:
-                joblib.dump(MetaModel, output, 2)
-                    
-            # Zip the model run directories
-            if self.Model.link_type.lower() == 'pylink' and\
-               self.ExpDesign.sampling_method.lower() != 'user':
-                self.Model.zip_subdirs(self.Model.name, f'{self.Model.name}_')
-                
-            
-    def train_sequential(self, parallel = False, verbose = False) -> None:
-        """
-        Train the surrogate in a sequential manner.
-        First build and train evereything on the static samples, then iterate
-        choosing more samples and refitting the surrogate on them.
-
-        Returns
-        -------
-        None
-
-        """
-        #self.train_normal(parallel, verbose)
-        self.parallel = parallel
-        self.train_seq_design(parallel, verbose)
-        
-        
-    # -------------------------------------------------------------------------
-    def eval_metamodel(self, samples=None, nsamples=None,
-                       sampling_method='random', return_samples=False):
-        """
-        Evaluates meta-model at the requested samples. One can also generate
-        nsamples.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params), optional
-            Samples to evaluate meta-model at. The default is None.
-        nsamples : int, optional
-            Number of samples to generate, if no `samples` is provided. The
-            default is None.
-        sampling_method : str, optional
-            Type of sampling, if no `samples` is provided. The default is
-            'random'.
-        return_samples : bool, optional
-            Retun samples, if no `samples` is provided. The default is False.
-
-        Returns
-        -------
-        mean_pred : dict
-            Mean of the predictions.
-        std_pred : dict
-            Standard deviatioon of the predictions.
-        """
-        # Generate or transform (if need be) samples
-        if samples is None:
-            # Generate
-            samples = self.ExpDesign.generate_samples(
-                nsamples,
-                sampling_method
-                )
-
-        # Transformation to other space is to be done in the MetaModel
-        # TODO: sort the transformations better
-        mean_pred, std_pred = self.MetaModel.eval_metamodel(samples)
-
-        if return_samples:
-            return mean_pred, std_pred, samples
-        else:
-            return mean_pred, std_pred
-        
-        
-    # -------------------------------------------------------------------------
-    def train_seq_design(self, parallel = False, verbose = False):
-        """
-        Starts the adaptive sequential design for refining the surrogate model
-        by selecting training points in a sequential manner.
-
-        Returns
-        -------
-        MetaModel : object
-            Meta model object.
-
-        """
-        self.parallel = parallel
-        
-        # Initialization
-        self.SeqModifiedLOO = {}
-        self.seqValidError = {}
-        self.SeqBME = {}
-        self.SeqKLD = {}
-        self.SeqDistHellinger = {}
-        self.seqRMSEMean = {}
-        self.seqRMSEStd = {}
-        self.seqMinDist = []
-        
-        if not hasattr(self.MetaModel, 'valid_samples'):
-            self.ExpDesign.valid_samples = []
-            self.ExpDesign.valid_model_runs = []
-            self.valid_likelihoods = []
-        
-        validError = None
-
-
-        # Determine the metamodel type
-        if self.MetaModel.meta_model_type.lower() != 'gpe':
-            pce = True
-        else:
-            pce = False
-        mc_ref = True if bool(self.Model.mc_reference) else False
-        if mc_ref:
-            self.Model.read_observation('mc_ref')
-
-        # Get the parameters
-        max_n_samples = self.ExpDesign.n_max_samples
-        mod_LOO_threshold = self.ExpDesign.mod_LOO_threshold
-        n_canddidate = self.ExpDesign.n_canddidate
-        post_snapshot = self.ExpDesign.post_snapshot
-        n_replication = self.ExpDesign.n_replication
-        util_func = self.ExpDesign.util_func
-        output_name = self.out_names
-        
-        # Handle if only one UtilityFunctions is provided
-        if not isinstance(util_func, list):
-            util_func = [self.ExpDesign.util_func]
-
-        # Read observations or MCReference
-        # TODO: recheck the logic in this if statement
-        if (len(self.Model.observations) != 0 or self.Model.meas_file is not None) and hasattr(self.MetaModel, 'Discrepancy'):
-            self.observations = self.Model.read_observation()
-            obs_data = self.observations
-        else:
-            obs_data = []
-            # TODO: TotalSigma2 not defined if not in this else???
-            # TODO: no self.observations if in here
-            TotalSigma2 = {}
-            
-        # ---------- Initial self.MetaModel ----------
-        self.train_normal(parallel = parallel, verbose=verbose)
-        
-        initMetaModel = deepcopy(self.MetaModel)
-
-        # Validation error if validation set is provided.
-        if self.ExpDesign.valid_model_runs:
-            init_rmse, init_valid_error = self._validError(initMetaModel)
-            init_valid_error = list(init_valid_error.values())
-        else:
-            init_rmse = None
-
-        # Check if discrepancy is provided
-        if len(obs_data) != 0 and hasattr(self.MetaModel, 'Discrepancy'):
-            TotalSigma2 = self.MetaModel.Discrepancy.parameters
-
-            # Calculate the initial BME
-            out = self._BME_Calculator(
-                obs_data, TotalSigma2, init_rmse)
-            init_BME, init_KLD, init_post, init_likes, init_dist_hellinger = out
-            print(f"\nInitial BME: {init_BME:.2f}")
-            print(f"Initial KLD: {init_KLD:.2f}")
-
-            # Posterior snapshot (initial)
-            if post_snapshot:
-                parNames = self.ExpDesign.par_names
-                print('Posterior snapshot (initial) is being plotted...')
-                self.__posteriorPlot(init_post, parNames, 'SeqPosterior_init')
-
-        # Check the convergence of the Mean & Std
-        if mc_ref and pce:
-            init_rmse_mean, init_rmse_std = self._error_Mean_Std()
-            print(f"Initial Mean and Std error: {init_rmse_mean:.2f},"
-                  f" {init_rmse_std:.2f}")
-
-        # Read the initial experimental design
-        Xinit = self.ExpDesign.X
-        init_n_samples = len(self.ExpDesign.X)
-        initYprev = self.ExpDesign.Y#initMetaModel.ModelOutputDict
-        #self.MetaModel.ModelOutputDict = self.ExpDesign.Y
-        initLCerror = initMetaModel.LCerror
-        n_itrs = max_n_samples - init_n_samples
-
-        ## Get some initial statistics
-        # Read the initial ModifiedLOO
-        if pce:
-            Scores_all, varExpDesignY = [], []
-            for out_name in output_name:
-                y = self.ExpDesign.Y[out_name]
-                Scores_all.append(list(
-                    self.MetaModel.score_dict['b_1'][out_name].values()))
-                if self.MetaModel.dim_red_method.lower() == 'pca':
-                    pca = self.MetaModel.pca['b_1'][out_name]
-                    components = pca.transform(y)
-                    varExpDesignY.append(np.var(components, axis=0))
-                else:
-                    varExpDesignY.append(np.var(y, axis=0))
-
-            Scores = [item for sublist in Scores_all for item in sublist]
-            weights = [item for sublist in varExpDesignY for item in sublist]
-            init_mod_LOO = [np.average([1-score for score in Scores],
-                                       weights=weights)]
-
-        prevMetaModel_dict = {}
-        #prevExpDesign_dict = {}
-        # Can run sequential design multiple times for comparison
-        for repIdx in range(n_replication):
-            print(f'\n>>>> Replication: {repIdx+1}<<<<')
-
-            # util_func: the function to use inside the type of exploitation
-            for util_f in util_func:
-                print(f'\n>>>> Utility Function: {util_f} <<<<')
-                # To avoid changes ub original aPCE object
-                self.ExpDesign.X = Xinit
-                self.ExpDesign.Y = initYprev
-                self.ExpDesign.LCerror = initLCerror
-
-                # Set the experimental design
-                Xprev = Xinit
-                total_n_samples = init_n_samples
-                Yprev = initYprev
-
-                Xfull = []
-                Yfull = []
-
-                # Store the initial ModifiedLOO
-                if pce:
-                    print("\nInitial ModifiedLOO:", init_mod_LOO)
-                    SeqModifiedLOO = np.array(init_mod_LOO)
-
-                if len(self.ExpDesign.valid_model_runs) != 0:
-                    SeqValidError = np.array(init_valid_error)
-
-                # Check if data is provided
-                if len(obs_data) != 0 and hasattr(self.MetaModel, 'Discrepancy'):
-                    SeqBME = np.array([init_BME])
-                    SeqKLD = np.array([init_KLD])
-                    SeqDistHellinger = np.array([init_dist_hellinger])
-
-                if mc_ref and pce:
-                    seqRMSEMean = np.array([init_rmse_mean])
-                    seqRMSEStd = np.array([init_rmse_std])
-
-                # ------- Start Sequential Experimental Design -------
-                postcnt = 1
-                for itr_no in range(1, n_itrs+1):
-                    print(f'\n>>>> Iteration number {itr_no} <<<<')
-
-                    # Save the metamodel prediction before updating
-                    prevMetaModel_dict[itr_no] = deepcopy(self.MetaModel)
-                    #prevExpDesign_dict[itr_no] = deepcopy(self.ExpDesign)
-                    if itr_no > 1:
-                        pc_model = prevMetaModel_dict[itr_no-1]
-                        self._y_hat_prev, _ = pc_model.eval_metamodel(
-                            samples=Xfull[-1].reshape(1, -1))
-                        del prevMetaModel_dict[itr_no-1]
-
-                    # Optimal Bayesian Design
-                    #self.MetaModel.ExpDesignFlag = 'sequential'
-                    Xnew, updatedPrior = self.choose_next_sample(TotalSigma2,
-                                                            n_canddidate,
-                                                            util_f)
-                    S = np.min(distance.cdist(Xinit, Xnew, 'euclidean'))
-                    self.seqMinDist.append(S)
-                    print(f"\nmin Dist from OldExpDesign: {S:2f}")
-                    print("\n")
-
-                    # Evaluate the full model response at the new sample
-                    Ynew, _ = self.Model.run_model_parallel(
-                        Xnew, prevRun_No=total_n_samples
-                        )
-                    total_n_samples += Xnew.shape[0]
-
-                    # ------ Plot the surrogate model vs Origninal Model ------
-                    if hasattr(self.ExpDesign, 'adapt_verbose') and \
-                       self.ExpDesign.adapt_verbose:
-                        from .adaptPlot import adaptPlot
-                        y_hat, std_hat = self.MetaModel.eval_metamodel(
-                            samples=Xnew
-                            )
-                        adaptPlot(
-                            self.MetaModel, Ynew, y_hat, std_hat,
-                            plotED=False
-                            )
-
-                    # -------- Retrain the surrogate model -------
-                    # Extend new experimental design
-                    Xfull = np.vstack((Xprev, Xnew))
-
-                    # Updating experimental design Y
-                    for out_name in output_name:
-                        Yfull = np.vstack((Yprev[out_name], Ynew[out_name]))
-                        self.ExpDesign.Y[out_name] = Yfull
-
-                    # Pass new design to the metamodel object
-                    self.ExpDesign.sampling_method = 'user'
-                    self.ExpDesign.X = Xfull
-                    #self.ExpDesign.Y = self.MetaModel.ModelOutputDict
-
-                    # Save the Experimental Design for next iteration
-                    Xprev = Xfull
-                    Yprev = self.ExpDesign.Y 
-
-                    # Pass the new prior as the input
-                    # TODO: another look at this - no difference apc to pce to gpe?
-                    self.MetaModel.input_obj.poly_coeffs_flag = False
-                    if updatedPrior is not None:
-                        self.MetaModel.input_obj.poly_coeffs_flag = True
-                        print("updatedPrior:", updatedPrior.shape)
-                        # Arbitrary polynomial chaos
-                        for i in range(updatedPrior.shape[1]):
-                            self.MetaModel.input_obj.Marginals[i].dist_type = None
-                            x = updatedPrior[:, i]
-                            self.MetaModel.input_obj.Marginals[i].raw_data = x
-
-                    # Train the surrogate model for new ExpDesign
-                    self.train_normal(parallel=False)
-
-                    # -------- Evaluate the retrained surrogate model -------
-                    # Extract Modified LOO from Output
-                    if pce:
-                        Scores_all, varExpDesignY = [], []
-                        for out_name in output_name:
-                            y = self.ExpDesign.Y[out_name]
-                            Scores_all.append(list(
-                                self.MetaModel.score_dict['b_1'][out_name].values()))
-                            if self.MetaModel.dim_red_method.lower() == 'pca':
-                                pca = self.MetaModel.pca['b_1'][out_name]
-                                components = pca.transform(y)
-                                varExpDesignY.append(np.var(components,
-                                                            axis=0))
-                            else:
-                                varExpDesignY.append(np.var(y, axis=0))
-                        Scores = [item for sublist in Scores_all for item
-                                  in sublist]
-                        weights = [item for sublist in varExpDesignY for item
-                                   in sublist]
-                        ModifiedLOO = [np.average(
-                            [1-score for score in Scores], weights=weights)]
-
-                        print('\n')
-                        print(f"Updated ModifiedLOO {util_f}:\n", ModifiedLOO)
-                        print('\n')
-
-                    # Compute the validation error
-                    if self.ExpDesign.valid_model_runs:
-                        rmse, validError = self._validError(self.MetaModel)
-                        ValidError = list(validError.values())
-                    else:
-                        rmse = None
-
-                    # Store updated ModifiedLOO
-                    if pce:
-                        SeqModifiedLOO = np.vstack(
-                            (SeqModifiedLOO, ModifiedLOO))
-                        if len(self.ExpDesign.valid_model_runs) != 0:
-                            SeqValidError = np.vstack(
-                                (SeqValidError, ValidError))
-                    # -------- Caclulation of BME as accuracy metric -------
-                    # Check if data is provided
-                    if len(obs_data) != 0:
-                        # Calculate the initial BME
-                        out = self._BME_Calculator(obs_data, TotalSigma2, rmse)
-                        BME, KLD, Posterior, likes, DistHellinger = out
-                        print('\n')
-                        print(f"Updated BME: {BME:.2f}")
-                        print(f"Updated KLD: {KLD:.2f}")
-                        print('\n')
-
-                        # Plot some snapshots of the posterior
-                        step_snapshot = self.ExpDesign.step_snapshot
-                        if post_snapshot and postcnt % step_snapshot == 0:
-                            parNames = self.ExpDesign.par_names
-                            print('Posterior snapshot is being plotted...')
-                            self.__posteriorPlot(Posterior, parNames,
-                                                 f'SeqPosterior_{postcnt}')
-                        postcnt += 1
-
-                    # Check the convergence of the Mean&Std
-                    if mc_ref and pce:
-                        print('\n')
-                        RMSE_Mean, RMSE_std = self._error_Mean_Std()
-                        print(f"Updated Mean and Std error: {RMSE_Mean:.2f}, "
-                              f"{RMSE_std:.2f}")
-                        print('\n')
-
-                    # Store the updated BME & KLD
-                    # Check if data is provided
-                    if len(obs_data) != 0:
-                        SeqBME = np.vstack((SeqBME, BME))
-                        SeqKLD = np.vstack((SeqKLD, KLD))
-                        SeqDistHellinger = np.vstack((SeqDistHellinger,
-                                                      DistHellinger))
-                    if mc_ref and pce:
-                        seqRMSEMean = np.vstack((seqRMSEMean, RMSE_Mean))
-                        seqRMSEStd = np.vstack((seqRMSEStd, RMSE_std))
-
-                    if pce and any(LOO < mod_LOO_threshold
-                                   for LOO in ModifiedLOO):
-                        break
-
-                    # Clean up
-                    if len(obs_data) != 0:
-                        del out
-                    print()
-                    print('-'*50)
-                    print()
-
-                # Store updated ModifiedLOO and BME in dictonary
-                strKey = f'{util_f}_rep_{repIdx+1}'
-                if pce:
-                    self.SeqModifiedLOO[strKey] = SeqModifiedLOO
-                if len(self.ExpDesign.valid_model_runs) != 0:
-                    self.seqValidError[strKey] = SeqValidError
-
-                # Check if data is provided
-                if len(obs_data) != 0:
-                    self.SeqBME[strKey] = SeqBME
-                    self.SeqKLD[strKey] = SeqKLD
-                if hasattr(self.MetaModel, 'valid_likelihoods') and \
-                   self.valid_likelihoods:
-                    self.SeqDistHellinger[strKey] = SeqDistHellinger
-                if mc_ref and pce:
-                    self.seqRMSEMean[strKey] = seqRMSEMean
-                    self.seqRMSEStd[strKey] = seqRMSEStd
-
-        # return self.MetaModel
-
-    # -------------------------------------------------------------------------
-    def util_VarBasedDesign(self, X_can, index, util_func='Entropy'):
-        """
-        Computes the exploitation scores based on:
-        active learning MacKay(ALM) and active learning Cohn (ALC)
-        Paper: Sequential Design with Mutual Information for Computer
-        Experiments (MICE): Emulation of a Tsunami Model by Beck and Guillas
-        (2016)
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        index : int
-            Model output index.
-        UtilMethod : string, optional
-            Exploitation utility function. The default is 'Entropy'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-        MetaModel = self.MetaModel
-        ED_X = self.ExpDesign.X
-        out_dict_y = self.ExpDesign.Y
-        out_names = self.out_names
-
-        # Run the Metamodel for the candidate
-        X_can = X_can.reshape(1, -1)
-        Y_PC_can, std_PC_can = MetaModel.eval_metamodel(samples=X_can)
-
-        if util_func.lower() == 'alm':
-            # ----- Entropy/MMSE/active learning MacKay(ALM)  -----
-            # Compute perdiction variance of the old model
-            canPredVar = {key: std_PC_can[key]**2 for key in out_names}
-
-            varPCE = np.zeros((len(out_names), X_can.shape[0]))
-            for KeyIdx, key in enumerate(out_names):
-                varPCE[KeyIdx] = np.max(canPredVar[key], axis=1)
-            score = np.max(varPCE, axis=0)
-
-        elif util_func.lower() == 'eigf':
-            # ----- Expected Improvement for Global fit -----
-            # Find closest EDX to the candidate
-            distances = distance.cdist(ED_X, X_can, 'euclidean')
-            index = np.argmin(distances)
-
-            # Compute perdiction error and variance of the old model
-            predError = {key: Y_PC_can[key] for key in out_names}
-            canPredVar = {key: std_PC_can[key]**2 for key in out_names}
-
-            # Compute perdiction error and variance of the old model
-            # Eq (5) from Liu et al.(2018)
-            EIGF_PCE = np.zeros((len(out_names), X_can.shape[0]))
-            for KeyIdx, key in enumerate(out_names):
-                residual = predError[key] - out_dict_y[key][int(index)]
-                var = canPredVar[key]
-                EIGF_PCE[KeyIdx] = np.max(residual**2 + var, axis=1)
-            score = np.max(EIGF_PCE, axis=0)
-
-        return -1 * score   # -1 is for minimization instead of maximization
-
-    # -------------------------------------------------------------------------
-    def util_BayesianActiveDesign(self, y_hat, std, sigma2Dict, var='DKL'):
-        """
-        Computes scores based on Bayesian active design criterion (var).
-
-        It is based on the following paper:
-        Oladyshkin, Sergey, Farid Mohammadi, Ilja Kroeker, and Wolfgang Nowak.
-        "Bayesian3 active learning for the gaussian process emulator using
-        information theory." Entropy 22, no. 8 (2020): 890.
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        var : string, optional
-            BAL design criterion. The default is 'DKL'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-
-        # Get the data
-        obs_data = self.observations
-        # TODO: this should be optimizable to be calculated explicitly
-        if hasattr(self.Model, 'n_obs'):
-            n_obs = self.Model.n_obs
-        else:
-            n_obs = self.n_obs
-        mc_size = 10000
-
-        # Sample a distribution for a normal dist
-        # with Y_mean_can as the mean and Y_std_can as std.
-        Y_MC, std_MC = {}, {}
-        logPriorLikelihoods = np.zeros((mc_size))
-       # print(y_hat)
-       # print(list[y_hat])
-        for key in list(y_hat):
-            cov = np.diag(std[key]**2)
-           # print(y_hat[key], cov)
-            # TODO: added the allow_singular = True here
-            rv = stats.multivariate_normal(mean=y_hat[key], cov=cov,)
-            Y_MC[key] = rv.rvs(size=mc_size)
-            logPriorLikelihoods += rv.logpdf(Y_MC[key])
-            std_MC[key] = np.zeros((mc_size, y_hat[key].shape[0]))
-
-        #  Likelihood computation (Comparison of data and simulation
-        #  results via PCE with candidate design)
-        likelihoods = self._normpdf(Y_MC, std_MC, obs_data, sigma2Dict)
-        
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, mc_size)[0]
-
-        # Reject the poorly performed prior
-        accepted = (likelihoods/np.max(likelihoods)) >= unif
-
-        # Prior-based estimation of BME
-        logBME = np.log(np.nanmean(likelihoods), dtype=np.longdouble)#float128)
-
-        # Posterior-based expectation of likelihoods
-        postLikelihoods = likelihoods[accepted]
-        postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-        # Posterior-based expectation of prior densities
-        postExpPrior = np.mean(logPriorLikelihoods[accepted])
-
-        # Utility function Eq.2 in Ref. (2)
-        # Posterior covariance matrix after observing data y
-        # Kullback-Leibler Divergence (Sergey's paper)
-        if var == 'DKL':
-
-            # TODO: Calculate the correction factor for BME
-            # BMECorrFactor = self.BME_Corr_Weight(PCE_SparseBayes_can,
-            #                                      ObservationData, sigma2Dict)
-            # BME += BMECorrFactor
-            # Haun et al implementation
-            # U_J_d = np.mean(np.log(Likelihoods[Likelihoods!=0])- logBME)
-            U_J_d = postExpLikelihoods - logBME
-
-        # Marginal log likelihood
-        elif var == 'BME':
-            U_J_d = np.nanmean(likelihoods)
-
-        # Entropy-based information gain
-        elif var == 'infEntropy':
-            logBME = np.log(np.nanmean(likelihoods))
-            infEntropy = logBME - postExpPrior - postExpLikelihoods
-            U_J_d = infEntropy * -1  # -1 for minimization
-
-        # Bayesian information criterion
-        elif var == 'BIC':
-            coeffs = self.MetaModel.coeffs_dict.values()
-            nModelParams = max(len(v) for val in coeffs for v in val.values())
-            maxL = np.nanmax(likelihoods)
-            U_J_d = -2 * np.log(maxL) + np.log(n_obs) * nModelParams
-
-        # Akaike information criterion
-        elif var == 'AIC':
-            coeffs = self.MetaModel.coeffs_dict.values()
-            nModelParams = max(len(v) for val in coeffs for v in val.values())
-            maxlogL = np.log(np.nanmax(likelihoods))
-            AIC = -2 * maxlogL + 2 * nModelParams
-            # 2 * nModelParams * (nModelParams+1) / (n_obs-nModelParams-1)
-            penTerm = 0
-            U_J_d = 1*(AIC + penTerm)
-
-        # Deviance information criterion
-        elif var == 'DIC':
-            # D_theta_bar = np.mean(-2 * Likelihoods)
-            N_star_p = 0.5 * np.var(np.log(likelihoods[likelihoods != 0]))
-            Likelihoods_theta_mean = self._normpdf(
-                y_hat, std, obs_data, sigma2Dict
-                )
-            DIC = -2 * np.log(Likelihoods_theta_mean) + 2 * N_star_p
-
-            U_J_d = DIC
-
-        else:
-            print('The algorithm you requested has not been implemented yet!')
-
-        # Handle inf and NaN (replace by zero)
-        if np.isnan(U_J_d) or U_J_d == -np.inf or U_J_d == np.inf:
-            U_J_d = 0.0
-
-        # Clear memory
-        del likelihoods
-        del Y_MC
-        del std_MC
-
-        return -1 * U_J_d   # -1 is for minimization instead of maximization
-
-    # -------------------------------------------------------------------------
-    def util_BayesianDesign(self, X_can, X_MC, sigma2Dict, var='DKL'):
-        """
-        Computes scores based on Bayesian sequential design criterion (var).
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        var : string, optional
-            Bayesian design criterion. The default is 'DKL'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-
-        # To avoid changes ub original aPCE object
-        MetaModel = self.MetaModel
-        out_names = self.out_names
-        if X_can.ndim == 1:
-            X_can = X_can.reshape(1, -1)
-
-        # Compute the mean and std based on the MetaModel
-        # pce_means, pce_stds = self._compute_pce_moments(MetaModel)
-        if var == 'ALC':
-            Y_MC, Y_MC_std = MetaModel.eval_metamodel(samples=X_MC)
-
-        # Old Experimental design
-        oldExpDesignX = self.ExpDesign.X
-        oldExpDesignY = self.ExpDesign.Y
-
-        # Evaluate the PCE metamodels at that location ???
-        Y_PC_can, Y_std_can = MetaModel.eval_metamodel(samples=X_can)
-        PCE_Model_can = deepcopy(MetaModel)
-        engine_can = deepcopy(self)
-        # Add the candidate to the ExpDesign
-        NewExpDesignX = np.vstack((oldExpDesignX, X_can))
-
-        NewExpDesignY = {}
-        for key in oldExpDesignY.keys():
-            NewExpDesignY[key] = np.vstack(
-                (oldExpDesignY[key], Y_PC_can[key])
-                )
-
-        engine_can.ExpDesign.sampling_method = 'user'
-        engine_can.ExpDesign.X = NewExpDesignX
-        #engine_can.ModelOutputDict = NewExpDesignY
-        engine_can.ExpDesign.Y = NewExpDesignY
-
-        # Train the model for the observed data using x_can
-        engine_can.MetaModel.input_obj.poly_coeffs_flag = False
-        engine_can.start_engine()
-        engine_can.train_normal(parallel=False)
-        engine_can.MetaModel.fit(NewExpDesignX, NewExpDesignY)
-#        engine_can.train_norm_design(parallel=False)
-
-        # Set the ExpDesign to its original values
-        engine_can.ExpDesign.X = oldExpDesignX
-        engine_can.ModelOutputDict = oldExpDesignY
-        engine_can.ExpDesign.Y = oldExpDesignY
-
-        if var.lower() == 'mi':
-            # Mutual information based on Krause et al
-            # Adapted from Beck & Guillas (MICE) paper
-            _, std_PC_can = engine_can.MetaModel.eval_metamodel(samples=X_can)
-            std_can = {key: std_PC_can[key] for key in out_names}
-
-            std_old = {key: Y_std_can[key] for key in out_names}
-
-            varPCE = np.zeros((len(out_names)))
-            for i, key in enumerate(out_names):
-                varPCE[i] = np.mean(std_old[key]**2/std_can[key]**2)
-            score = np.mean(varPCE)
-
-            return -1 * score
-
-        elif var.lower() == 'alc':
-            # Active learning based on Gramyc and Lee
-            # Adaptive design and analysis of supercomputer experiments Techno-
-            # metrics, 51 (2009), pp. 130–145.
-
-            # Evaluate the MetaModel at the given samples
-            Y_MC_can, Y_MC_std_can = engine_can.MetaModel.eval_metamodel(samples=X_MC)
-
-            # Compute the score
-            score = []
-            for i, key in enumerate(out_names):
-                pce_var = Y_MC_std_can[key]**2
-                pce_var_can = Y_MC_std[key]**2
-                score.append(np.mean(pce_var-pce_var_can, axis=0))
-            score = np.mean(score)
-
-            return -1 * score
-
-        # ---------- Inner MC simulation for computing Utility Value ----------
-        # Estimation of the integral via Monte Varlo integration
-        MCsize = X_MC.shape[0]
-        ESS = 0
-
-        while ((ESS > MCsize) or (ESS < 1)):
-
-            # Enriching Monte Carlo samples if need be
-            if ESS != 0:
-                X_MC = self.ExpDesign.generate_samples(
-                    MCsize, 'random'
-                    )
-
-            # Evaluate the MetaModel at the given samples
-            Y_MC, std_MC = PCE_Model_can.eval_metamodel(samples=X_MC)
-
-            # Likelihood computation (Comparison of data and simulation
-            # results via PCE with candidate design)
-            likelihoods = self._normpdf(
-                Y_MC, std_MC, self.observations, sigma2Dict
-                )
-
-            # Check the Effective Sample Size (1<ESS<MCsize)
-            ESS = 1 / np.sum(np.square(likelihoods/np.sum(likelihoods)))
-
-            # Enlarge sample size if it doesn't fulfill the criteria
-            if ((ESS > MCsize) or (ESS < 1)):
-                print("--- increasing MC size---")
-                MCsize *= 10
-                ESS = 0
-
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, MCsize)[0]
-
-        # Reject the poorly performed prior
-        accepted = (likelihoods/np.max(likelihoods)) >= unif
-
-        # -------------------- Utility functions --------------------
-        # Utility function Eq.2 in Ref. (2)
-        # Kullback-Leibler Divergence (Sergey's paper)
-        if var == 'DKL':
-
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods, dtype=np.longdouble))#float128))
-
-            # Posterior-based expectation of likelihoods
-            postLikelihoods = likelihoods[accepted]
-            postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-            # Haun et al implementation
-            U_J_d = np.mean(np.log(likelihoods[likelihoods != 0]) - logBME)
-
-            # U_J_d = np.sum(G_n_m_all)
-            # Ryan et al (2014) implementation
-            # importanceWeights = Likelihoods[Likelihoods!=0]/np.sum(Likelihoods[Likelihoods!=0])
-            # U_J_d = np.mean(importanceWeights*np.log(Likelihoods[Likelihoods!=0])) - logBME
-
-            # U_J_d = postExpLikelihoods - logBME
-
-        # Marginal likelihood
-        elif var == 'BME':
-
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods))
-            U_J_d = logBME
-
-        # Bayes risk likelihood
-        elif var == 'BayesRisk':
-
-            U_J_d = -1 * np.var(likelihoods)
-
-        # Entropy-based information gain
-        elif var == 'infEntropy':
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods))
-
-            # Posterior-based expectation of likelihoods
-            postLikelihoods = likelihoods[accepted]
-            postLikelihoods /= np.nansum(likelihoods[accepted])
-            postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-            # Posterior-based expectation of prior densities
-            postExpPrior = np.mean(logPriorLikelihoods[accepted])
-
-            infEntropy = logBME - postExpPrior - postExpLikelihoods
-
-            U_J_d = infEntropy * -1  # -1 for minimization
-
-        # D-Posterior-precision
-        elif var == 'DPP':
-            X_Posterior = X_MC[accepted]
-            # covariance of the posterior parameters
-            U_J_d = -np.log(np.linalg.det(np.cov(X_Posterior)))
-
-        # A-Posterior-precision
-        elif var == 'APP':
-            X_Posterior = X_MC[accepted]
-            # trace of the posterior parameters
-            U_J_d = -np.log(np.trace(np.cov(X_Posterior)))
-
-        else:
-            print('The algorithm you requested has not been implemented yet!')
-
-        # Clear memory
-        del likelihoods
-        del Y_MC
-        del std_MC
-
-        return -1 * U_J_d   # -1 is for minimization instead of maximization
-
-
-    # -------------------------------------------------------------------------
-    def run_util_func(self, method, candidates, index, sigma2Dict=None,
-                      var=None, X_MC=None):
-        """
-        Runs the utility function based on the given method.
-
-        Parameters
-        ----------
-        method : string
-            Exploitation method: `VarOptDesign`, `BayesActDesign` and
-            `BayesOptDesign`.
-        candidates : array of shape (n_samples, n_params)
-            All candidate parameter sets.
-        index : int
-            ExpDesign index.
-        sigma2Dict : dict, optional
-            A dictionary containing the measurement errors (sigma^2). The
-            default is None.
-        var : string, optional
-            Utility function. The default is None.
-        X_MC : TYPE, optional
-            DESCRIPTION. The default is None.
-
-        Returns
-        -------
-        index : TYPE
-            DESCRIPTION.
-        List
-            Scores.
-
-        """
-
-        if method.lower() == 'varoptdesign':
-            # U_J_d = self.util_VarBasedDesign(candidates, index, var)
-            U_J_d = np.zeros((candidates.shape[0]))
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="varoptdesign"):
-                U_J_d[idx] = self.util_VarBasedDesign(X_can, index, var)
-
-        elif method.lower() == 'bayesactdesign':
-            NCandidate = candidates.shape[0]
-            U_J_d = np.zeros((NCandidate))
-            # Evaluate all candidates
-            y_can, std_can = self.MetaModel.eval_metamodel(samples=candidates)
-            # loop through candidates
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="BAL Design"):
-                y_hat = {key: items[idx] for key, items in y_can.items()}
-                std = {key: items[idx] for key, items in std_can.items()}
-                
-               # print(y_hat)
-               # print(std)
-                U_J_d[idx] = self.util_BayesianActiveDesign(
-                    y_hat, std, sigma2Dict, var)
-
-        elif method.lower() == 'bayesoptdesign':
-            NCandidate = candidates.shape[0]
-            U_J_d = np.zeros((NCandidate))
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="OptBayesianDesign"):
-                U_J_d[idx] = self.util_BayesianDesign(X_can, X_MC, sigma2Dict,
-                                                      var)
-        return (index, -1 * U_J_d)
-
-    # -------------------------------------------------------------------------
-    def dual_annealing(self, method, Bounds, sigma2Dict, var, Run_No,
-                       verbose=False):
-        """
-        Exploration algorithm to find the optimum parameter space.
-
-        Parameters
-        ----------
-        method : string
-            Exploitation method: `VarOptDesign`, `BayesActDesign` and
-            `BayesOptDesign`.
-        Bounds : list of tuples
-            List of lower and upper boundaries of parameters.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        Run_No : int
-            Run number.
-        verbose : bool, optional
-            Print out a summary. The default is False.
-
-        Returns
-        -------
-        Run_No : int
-            Run number.
-        array
-            Optimial candidate.
-
-        """
-
-        Model = self.Model
-        max_func_itr = self.ExpDesign.max_func_itr
-
-        if method == 'VarOptDesign':
-            Res_Global = opt.dual_annealing(self.util_VarBasedDesign,
-                                            bounds=Bounds,
-                                            args=(Model, var),
-                                            maxfun=max_func_itr)
-
-        elif method == 'BayesOptDesign':
-            Res_Global = opt.dual_annealing(self.util_BayesianDesign,
-                                            bounds=Bounds,
-                                            args=(Model, sigma2Dict, var),
-                                            maxfun=max_func_itr)
-
-        if verbose:
-            print(f"Global minimum: xmin = {Res_Global.x}, "
-                  f"f(xmin) = {Res_Global.fun:.6f}, nfev = {Res_Global.nfev}")
-
-        return (Run_No, Res_Global.x)
-
-    # -------------------------------------------------------------------------
-    def tradeoff_weights(self, tradeoff_scheme, old_EDX, old_EDY):
-        """
-        Calculates weights for exploration scores based on the requested
-        scheme: `None`, `equal`, `epsilon-decreasing` and `adaptive`.
-
-        `None`: No exploration.
-        `equal`: Same weights for exploration and exploitation scores.
-        `epsilon-decreasing`: Start with more exploration and increase the
-            influence of exploitation along the way with a exponential decay
-            function
-        `adaptive`: An adaptive method based on:
-            Liu, Haitao, Jianfei Cai, and Yew-Soon Ong. "An adaptive sampling
-            approach for Kriging metamodeling by maximizing expected prediction
-            error." Computers & Chemical Engineering 106 (2017): 171-182.
-
-        Parameters
-        ----------
-        tradeoff_scheme : string
-            Trade-off scheme for exloration and exploitation scores.
-        old_EDX : array (n_samples, n_params)
-            Old experimental design (training points).
-        old_EDY : dict
-            Old model responses (targets).
-
-        Returns
-        -------
-        exploration_weight : float
-            Exploration weight.
-        exploitation_weight: float
-            Exploitation weight.
-
-        """
-        if tradeoff_scheme is None:
-            exploration_weight = 0
-
-        elif tradeoff_scheme == 'equal':
-            exploration_weight = 0.5
-
-        elif tradeoff_scheme == 'epsilon-decreasing':
-            # epsilon-decreasing scheme
-            # Start with more exploration and increase the influence of
-            # exploitation along the way with a exponential decay function
-            initNSamples = self.ExpDesign.n_init_samples
-            n_max_samples = self.ExpDesign.n_max_samples
-
-            itrNumber = (self.ExpDesign.X.shape[0] - initNSamples)
-            itrNumber //= self.ExpDesign.n_new_samples
-
-            tau2 = -(n_max_samples-initNSamples-1) / np.log(1e-8)
-            exploration_weight = signal.exponential(n_max_samples-initNSamples,
-                                                    0, tau2, False)[itrNumber]
-
-        elif tradeoff_scheme == 'adaptive':
-
-            # Extract itrNumber
-            initNSamples = self.ExpDesign.n_init_samples
-            n_max_samples = self.ExpDesign.n_max_samples
-            itrNumber = (self.ExpDesign.X.shape[0] - initNSamples)
-            itrNumber //= self.ExpDesign.n_new_samples
-
-            if itrNumber == 0:
-                exploration_weight = 0.5
-            else:
-                # New adaptive trade-off according to Liu et al. (2017)
-                # Mean squared error for last design point
-                last_EDX = old_EDX[-1].reshape(1, -1)
-                lastPCEY, _ = self.MetaModel.eval_metamodel(samples=last_EDX)
-                pce_y = np.array(list(lastPCEY.values()))[:, 0]
-                y = np.array(list(old_EDY.values()))[:, -1, :]
-                mseError = mean_squared_error(pce_y, y)
-
-                # Mean squared CV - error for last design point
-                pce_y_prev = np.array(list(self._y_hat_prev.values()))[:, 0]
-                mseCVError = mean_squared_error(pce_y_prev, y)
-
-                exploration_weight = min([0.5*mseError/mseCVError, 1])
-
-        # Exploitation weight
-        exploitation_weight = 1 - exploration_weight
-
-        return exploration_weight, exploitation_weight
-
-    # -------------------------------------------------------------------------
-    def choose_next_sample(self, sigma2=None, n_candidates=5, var='DKL'):
-        """
-        Runs optimal sequential design.
-
-        Parameters
-        ----------
-        sigma2 : dict, optional
-            A dictionary containing the measurement errors (sigma^2). The
-            default is None.
-        n_candidates : int, optional
-            Number of candidate samples. The default is 5.
-        var : string, optional
-            Utility function. The default is None. # TODO: default is set to DKL, not none
-
-        Raises
-        ------
-        NameError
-            Wrong utility function.
-
-        Returns
-        -------
-        Xnew : array (n_samples, n_params)
-            Selected new training point(s).
-        """
-
-        # Initialization
-        Bounds = self.ExpDesign.bound_tuples
-        n_new_samples = self.ExpDesign.n_new_samples
-        explore_method = self.ExpDesign.explore_method
-        exploit_method = self.ExpDesign.exploit_method
-        n_cand_groups = self.ExpDesign.n_cand_groups
-        tradeoff_scheme = self.ExpDesign.tradeoff_scheme
-
-        old_EDX = self.ExpDesign.X
-        old_EDY = self.ExpDesign.Y.copy()
-        ndim = self.ExpDesign.X.shape[1]
-        OutputNames = self.out_names
-
-        # -----------------------------------------
-        # ----------- CUSTOMIZED METHODS ----------
-        # -----------------------------------------
-        # Utility function exploit_method provided by user
-        if exploit_method.lower() == 'user':
-            if not hasattr(self.ExpDesign, 'ExploitFunction'):
-                raise AttributeError('Function `ExploitFunction` not given to the ExpDesign, thus cannor run user-defined sequential scheme')
-            # TODO: syntax does not fully match the rest - can test this??
-            Xnew, filteredSamples = self.ExpDesign.ExploitFunction(self)
-
-            print("\n")
-            print("\nXnew:\n", Xnew)
-
-            return Xnew, filteredSamples
-
-
-        # Dual-Annealing works differently from the rest, so deal with this first
-        # Here exploration and exploitation are performed simulataneously
-        if explore_method == 'dual annealing':
-            # ------- EXPLORATION: OPTIMIZATION -------
-            import time
-            start_time = time.time()
-
-            # Divide the domain to subdomains
-            subdomains = subdomain(Bounds, n_new_samples)
-
-            # Multiprocessing
-            if self.parallel:
-                args = []
-                for i in range(n_new_samples):
-                    args.append((exploit_method, subdomains[i], sigma2, var, i))
-                pool = multiprocessing.Pool(multiprocessing.cpu_count())
-
-                # With Pool.starmap_async()
-                results = pool.starmap_async(self.dual_annealing, args).get()
-
-                # Close the pool
-                pool.close()
-            # Without multiprocessing
-            else:
-                results = []
-                for i in range(n_new_samples):
-                    results.append(self.dual_annealing(exploit_method, subdomains[i], sigma2, var, i))
-                    
-            # New sample
-            Xnew = np.array([results[i][1] for i in range(n_new_samples)])
-            print("\nXnew:\n", Xnew)
-
-            # Computational cost
-            elapsed_time = time.time() - start_time
-            print("\n")
-            print(f"Elapsed_time: {round(elapsed_time,2)} sec.")
-            print('-'*20)
-            
-            return Xnew, None
-        
-        # Generate needed Exploration class
-        explore = Exploration(self.ExpDesign, n_candidates)
-        explore.w = 100  # * ndim #500  # TODO: where does this value come from?
-        
-        # Select criterion (mc-intersite-proj-th, mc-intersite-proj)
-        explore.mc_criterion = 'mc-intersite-proj'
-        
-        # Generate the candidate samples
-        # TODO: here use the sampling method provided by the expdesign?
-        sampling_method = self.ExpDesign.sampling_method
-        
-        # TODO: changed this from 'random' for LOOCV
-        if explore_method == 'LOOCV':
-            allCandidates = self.ExpDesign.generate_samples(n_candidates,
-                                                            sampling_method)
-        else:
-            allCandidates, scoreExploration = explore.get_exploration_samples()
-        
-        # -----------------------------------------
-        # ---------- EXPLORATION METHODS ----------
-        # -----------------------------------------
-        if explore_method == 'LOOCV':
-            # -----------------------------------------------------------------
-            # TODO: LOOCV model construnction based on Feng et al. (2020)
-            # 'LOOCV':
-            # Initilize the ExploitScore array
-
-            # Generate random samples
-            allCandidates = self.ExpDesign.generate_samples(n_candidates,
-                                                                'random')
-
-            # Construct error model based on LCerror
-            errorModel = self.MetaModel.create_ModelError(old_EDX, self.LCerror)
-            self.errorModel.append(copy(errorModel))
-
-            # Evaluate the error models for allCandidates
-            eLCAllCands, _ = errorModel.eval_errormodel(allCandidates)
-            # Select the maximum as the representative error
-            eLCAllCands = np.dstack(eLCAllCands.values())
-            eLCAllCandidates = np.max(eLCAllCands, axis=1)[:, 0]
-
-            # Normalize the error w.r.t the maximum error
-            scoreExploration = eLCAllCandidates / np.sum(eLCAllCandidates)
-
-        else:
-            # ------- EXPLORATION: SPACE-FILLING DESIGN -------
-            # Generate candidate samples from Exploration class
-            explore = Exploration(self.ExpDesign, n_candidates)
-            explore.w = 100  # * ndim #500
-            # Select criterion (mc-intersite-proj-th, mc-intersite-proj)
-            explore.mc_criterion = 'mc-intersite-proj'
-            allCandidates, scoreExploration = explore.get_exploration_samples()
-
-            # Temp: ---- Plot all candidates -----
-            if ndim == 2:
-                def plotter(points, allCandidates, Method,
-                            scoreExploration=None):
-                    if Method == 'Voronoi':
-                        from scipy.spatial import Voronoi, voronoi_plot_2d
-                        vor = Voronoi(points)
-                        fig = voronoi_plot_2d(vor)
-                        ax1 = fig.axes[0]
-                    else:
-                        fig = plt.figure()
-                        ax1 = fig.add_subplot(111)
-                    ax1.scatter(points[:, 0], points[:, 1], s=10, c='r',
-                                marker="s", label='Old Design Points')
-                    ax1.scatter(allCandidates[:, 0], allCandidates[:, 1], s=10,
-                                c='b', marker="o", label='Design candidates')
-                    for i in range(points.shape[0]):
-                        txt = 'p'+str(i+1)
-                        ax1.annotate(txt, (points[i, 0], points[i, 1]))
-                    if scoreExploration is not None:
-                        for i in range(allCandidates.shape[0]):
-                            txt = str(round(scoreExploration[i], 5))
-                            ax1.annotate(txt, (allCandidates[i, 0],
-                                               allCandidates[i, 1]))
-
-                    plt.xlim(self.bound_tuples[0])
-                    plt.ylim(self.bound_tuples[1])
-                    # plt.show()
-                    plt.legend(loc='upper left')
-
-        # -----------------------------------------
-        # --------- EXPLOITATION METHODS ----------
-        # -----------------------------------------
-        if exploit_method == 'BayesOptDesign' or\
-           exploit_method == 'BayesActDesign':
-
-            # ------- Calculate Exoploration weight -------
-            # Compute exploration weight based on trade off scheme
-            explore_w, exploit_w = self.tradeoff_weights(tradeoff_scheme,
-                                                        old_EDX,
-                                                        old_EDY)
-            print(f"\n Exploration weight={explore_w:0.3f} "
-                  f"Exploitation weight={exploit_w:0.3f}\n")
-
-            # ------- EXPLOITATION: BayesOptDesign & ActiveLearning -------
-            if explore_w != 1.0:
-                # Check if all needed properties are set
-                if not hasattr(self.ExpDesign, 'max_func_itr'):
-                    raise AttributeError('max_func_itr not given to the experimental design')
-
-                # Create a sample pool for rejection sampling
-                MCsize = 15000
-                X_MC = self.ExpDesign.generate_samples(MCsize, 'random')
-                candidates = self.ExpDesign.generate_samples(
-                    n_candidates, 'latin_hypercube')
-
-                # Split the candidates in groups for multiprocessing
-                split_cand = np.array_split(
-                    candidates, n_cand_groups, axis=0
-                    )
-               # print(candidates)
-               # print(split_cand)
-                if self.parallel:
-                    results = Parallel(n_jobs=-1, backend='multiprocessing')(
-                        delayed(self.run_util_func)(
-                            exploit_method, split_cand[i], i, sigma2, var, X_MC)
-                        for i in range(n_cand_groups)) 
-                else:
-                    results = []
-                    for i in range(n_cand_groups):
-                        results.append(self.run_util_func(exploit_method, split_cand[i], i, sigma2, var, X_MC))
-                        
-                # Retrieve the results and append them
-                U_J_d = np.concatenate([results[NofE][1] for NofE in
-                                        range(n_cand_groups)])
-
-                # Check if all scores are inf
-                if np.isinf(U_J_d).all() or np.isnan(U_J_d).all():
-                    U_J_d = np.ones(len(U_J_d))
-
-                # Get the expected value (mean) of the Utility score
-                # for each cell
-                if explore_method == 'Voronoi':
-                    U_J_d = np.mean(U_J_d.reshape(-1, n_candidates), axis=1)
-
-                # Normalize U_J_d
-                norm_U_J_d = U_J_d / np.sum(U_J_d)
-            else:
-                norm_U_J_d = np.zeros((len(scoreExploration)))
-
-            # ------- Calculate Total score -------
-            # ------- Trade off between EXPLORATION & EXPLOITATION -------
-            # Total score
-            totalScore = exploit_w * norm_U_J_d
-            totalScore += explore_w * scoreExploration
-
-            # temp: Plot
-            # dim = self.ExpDesign.X.shape[1]
-            # if dim == 2:
-            #     plotter(self.ExpDesign.X, allCandidates, explore_method)
-
-            # ------- Select the best candidate -------
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            temp = totalScore.copy()
-            temp[np.isnan(totalScore)] = -np.inf
-            sorted_idxtotalScore = np.argsort(temp)[::-1]
-            bestIdx = sorted_idxtotalScore[:n_new_samples]
-
-            # select the requested number of samples
-            if explore_method == 'Voronoi':
-                Xnew = np.zeros((n_new_samples, ndim))
-                for i, idx in enumerate(bestIdx):
-                    X_can = explore.closestPoints[idx]
-
-                    # Calculate the maxmin score for the region of interest
-                    newSamples, maxminScore = explore.get_mc_samples(X_can)
-
-                    # select the requested number of samples
-                    Xnew[i] = newSamples[np.argmax(maxminScore)]
-            else:
-                Xnew = allCandidates[sorted_idxtotalScore[:n_new_samples]]
-
-        elif exploit_method == 'VarOptDesign':
-            # ------- EXPLOITATION: VarOptDesign -------
-            UtilMethod = var
-
-            # ------- Calculate Exoploration weight -------
-            # Compute exploration weight based on trade off scheme
-            explore_w, exploit_w = self.tradeoff_weights(tradeoff_scheme,
-                                                        old_EDX,
-                                                        old_EDY)
-            print(f"\nweightExploration={explore_w:0.3f} "
-                  f"weightExploitation={exploit_w:0.3f}")
-
-            # Generate candidate samples from Exploration class
-            nMeasurement = old_EDY[OutputNames[0]].shape[1]
-            
-           # print(UtilMethod)
-            
-            # Find sensitive region
-            if UtilMethod == 'LOOCV':
-                LCerror = self.MetaModel.LCerror
-                allModifiedLOO = np.zeros((len(old_EDX), len(OutputNames),
-                                           nMeasurement))
-                for y_idx, y_key in enumerate(OutputNames):
-                    for idx, key in enumerate(LCerror[y_key].keys()):
-                        allModifiedLOO[:, y_idx, idx] = abs(
-                            LCerror[y_key][key])
-
-                ExploitScore = np.max(np.max(allModifiedLOO, axis=1), axis=1)
-               # print(allModifiedLOO.shape)
-
-            elif UtilMethod in ['EIGF', 'ALM']:
-                # ----- All other in  ['EIGF', 'ALM'] -----
-                # Initilize the ExploitScore array
-                ExploitScore = np.zeros((len(old_EDX), len(OutputNames)))
-
-                # Split the candidates in groups for multiprocessing
-                if explore_method != 'Voronoi':
-                    split_cand = np.array_split(allCandidates,
-                                                n_cand_groups,
-                                                axis=0)
-                    goodSampleIdx = range(n_cand_groups)
-                else:
-                    # Find indices of the Vornoi cells with samples
-                    goodSampleIdx = []
-                    for idx in range(len(explore.closest_points)):
-                        if len(explore.closest_points[idx]) != 0:
-                            goodSampleIdx.append(idx)
-                    split_cand = explore.closest_points
-
-                # Split the candidates in groups for multiprocessing
-                args = []
-                for index in goodSampleIdx:
-                    args.append((exploit_method, split_cand[index], index,
-                                 sigma2, var))
-
-                # Multiprocessing
-                pool = multiprocessing.Pool(multiprocessing.cpu_count())
-                # With Pool.starmap_async()
-                results = pool.starmap_async(self.run_util_func, args).get()
-
-                # Close the pool
-                pool.close()
-
-                # Retrieve the results and append them
-                if explore_method == 'Voronoi':
-                    ExploitScore = [np.mean(results[k][1]) for k in
-                                    range(len(goodSampleIdx))]
-                else:
-                    ExploitScore = np.concatenate(
-                        [results[k][1] for k in range(len(goodSampleIdx))])
-
-            else:
-                raise NameError('The requested utility function is not '
-                                'available.')
-
-            # print("ExploitScore:\n", ExploitScore)
-
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            # Total score
-            # Normalize U_J_d
-            ExploitScore = ExploitScore / np.sum(ExploitScore)
-            totalScore = exploit_w * ExploitScore
-           # print(totalScore.shape)
-           # print(explore_w)
-           # print(scoreExploration.shape)
-            totalScore += explore_w * scoreExploration
-
-            temp = totalScore.copy()
-            sorted_idxtotalScore = np.argsort(temp, axis=0)[::-1]
-            bestIdx = sorted_idxtotalScore[:n_new_samples]
-
-            Xnew = np.zeros((n_new_samples, ndim))
-            if explore_method != 'Voronoi':
-                Xnew = allCandidates[bestIdx]
-            else:
-                for i, idx in enumerate(bestIdx.flatten()):
-                    X_can = explore.closest_points[idx]
-                    # plotter(self.ExpDesign.X, X_can, explore_method,
-                    # scoreExploration=None)
-
-                    # Calculate the maxmin score for the region of interest
-                    newSamples, maxminScore = explore.get_mc_samples(X_can)
-
-                    # select the requested number of samples
-                    Xnew[i] = newSamples[np.argmax(maxminScore)]
-
-        elif exploit_method == 'alphabetic':
-            # ------- EXPLOITATION: ALPHABETIC -------
-            Xnew = self.util_AlphOptDesign(allCandidates, var)
-
-        elif exploit_method == 'Space-filling':
-            # ------- EXPLOITATION: SPACE-FILLING -------
-            totalScore = scoreExploration
-
-            # ------- Select the best candidate -------
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            temp = totalScore.copy()
-            temp[np.isnan(totalScore)] = -np.inf
-            sorted_idxtotalScore = np.argsort(temp)[::-1]
-
-            # select the requested number of samples
-            Xnew = allCandidates[sorted_idxtotalScore[:n_new_samples]]
-
-        else:
-            raise NameError('The requested design method is not available.')
-
-        print("\n")
-        print("\nRun No. {}:".format(old_EDX.shape[0]+1))
-        print("Xnew:\n", Xnew)
-
-        # TODO: why does it also return None?
-        return Xnew, None
-
-    # -------------------------------------------------------------------------
-    def util_AlphOptDesign(self, candidates, var='D-Opt'):
-        """
-        Enriches the Experimental design with the requested alphabetic
-        criterion based on exploring the space with number of sampling points.
-
-        Ref: Hadigol, M., & Doostan, A. (2018). Least squares polynomial chaos
-        expansion: A review of sampling strategies., Computer Methods in
-        Applied Mechanics and Engineering, 332, 382-407.
-
-        Arguments
-        ---------
-        NCandidate : int
-            Number of candidate points to be searched
-
-        var : string
-            Alphabetic optimality criterion
-
-        Returns
-        -------
-        X_new : array of shape (1, n_params)
-            The new sampling location in the input space.
-        """
-        MetaModelOrig = self # TODO: this doesn't fully seem correct?
-        n_new_samples = MetaModelOrig.ExpDesign.n_new_samples
-        NCandidate = candidates.shape[0]
-
-        # TODO: Loop over outputs
-        OutputName = self.out_names[0]
-
-        # To avoid changes ub original aPCE object
-        MetaModel = deepcopy(MetaModelOrig)
-
-        # Old Experimental design
-        oldExpDesignX = self.ExpDesign.X
-
-        # TODO: Only one psi can be selected.
-        # Suggestion: Go for the one with the highest LOO error
-        # TODO: this is just a patch, need to look at again!
-        Scores = list(self.MetaModel.score_dict['b_1'][OutputName].values())
-        #print(Scores)
-        #print(self.MetaModel.score_dict)
-        #print(self.MetaModel.score_dict.values())
-        #print(self.MetaModel.score_dict['b_1'].values())
-        #print(self.MetaModel.score_dict['b_1'][OutputName].values())
-        ModifiedLOO = [1-score for score in Scores]
-        outIdx = np.argmax(ModifiedLOO)
-
-        # Initialize Phi to save the criterion's values
-        Phi = np.zeros((NCandidate))
-
-        # TODO: also patched here
-        BasisIndices = self.MetaModel.basis_dict['b_1'][OutputName]["y_"+str(outIdx+1)]
-        P = len(BasisIndices)
-
-        # ------ Old Psi ------------
-        univ_p_val = self.MetaModel.univ_basis_vals(oldExpDesignX)
-        Psi = self.MetaModel.create_psi(BasisIndices, univ_p_val)
-
-        # ------ New candidates (Psi_c) ------------
-        # Assemble Psi_c
-        univ_p_val_c = self.MetaModel.univ_basis_vals(candidates)
-        Psi_c = self.MetaModel.create_psi(BasisIndices, univ_p_val_c)
-
-        for idx in range(NCandidate):
-
-            # Include the new row to the original Psi
-            Psi_cand = np.vstack((Psi, Psi_c[idx]))
-
-            # Information matrix
-            PsiTPsi = np.dot(Psi_cand.T, Psi_cand)
-            M = PsiTPsi / (len(oldExpDesignX)+1)
-
-            if np.linalg.cond(PsiTPsi) > 1e-12 \
-               and np.linalg.cond(PsiTPsi) < 1 / sys.float_info.epsilon:
-                # faster
-                invM = linalg.solve(M, sparse.eye(PsiTPsi.shape[0]).toarray())
-            else:
-                # stabler
-                invM = np.linalg.pinv(M)
-
-            # ---------- Calculate optimality criterion ----------
-            # Optimality criteria according to Section 4.5.1 in Ref.
-
-            # D-Opt
-            if var.lower() == 'd-opt':
-                Phi[idx] = (np.linalg.det(invM)) ** (1/P)
-
-            # A-Opt
-            elif var.lower() == 'a-opt':
-                Phi[idx] = np.trace(invM)
-
-            # K-Opt
-            elif var.lower() == 'k-opt':
-                Phi[idx] = np.linalg.cond(M)
-
-            else:
-               # print(var.lower())
-                raise Exception('The optimality criterion you requested has '
-                      'not been implemented yet!')
-
-        # find an optimal point subset to add to the initial design
-        # by minimization of the Phi
-        sorted_idxtotalScore = np.argsort(Phi)
-
-        # select the requested number of samples
-        Xnew = candidates[sorted_idxtotalScore[:n_new_samples]]
-
-        return Xnew
-
-    # -------------------------------------------------------------------------
-    def _normpdf(self, y_hat_pce, std_pce, obs_data, total_sigma2s,
-                  rmse=None):
-        """
-        Calculated gaussian likelihood for given y+std based on given obs+sigma
-        # TODO: is this understanding correct?
-        
-        Parameters
-        ----------
-        y_hat_pce : dict of 2d np arrays
-            Mean output of the surrogate.
-        std_pce : dict of 2d np arrays
-            Standard deviation output of the surrogate.
-        obs_data : dict of 1d np arrays
-            Observed data.
-        total_sigma2s : pandas dataframe, matches obs_data
-            Estimated uncertainty for the observed data.
-        rmse : dict, optional
-            RMSE values from validation of the surrogate. The default is None.
-
-        Returns
-        -------
-        likelihoods : dict of float
-            The likelihood for each surrogate eval in y_hat_pce compared to the
-            observations (?).
-
-        """
-
-        likelihoods = 1.0
-
-        # Loop over the outputs
-        for idx, out in enumerate(self.out_names):
-
-            # (Meta)Model Output
-           # print(y_hat_pce[out])
-            nsamples, nout = y_hat_pce[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout].values
-
-            # Surrogate error if valid dataset is given.
-            if rmse is not None:
-                tot_sigma2s += rmse[out]**2
-            else:
-                tot_sigma2s += np.mean(std_pce[out])**2
-
-            likelihoods *= stats.multivariate_normal.pdf(
-                y_hat_pce[out], data, np.diag(tot_sigma2s),
-                allow_singular=True)
-
-        # TODO: remove this here
-        self.Likelihoods = likelihoods
-
-        return likelihoods
-
-    # -------------------------------------------------------------------------
-    def _corr_factor_BME(self, obs_data, total_sigma2s, logBME):
-        """
-        Calculates the correction factor for BMEs.
-        """
-        MetaModel = self.MetaModel
-        samples = self.ExpDesign.X  # valid_samples
-        model_outputs = self.ExpDesign.Y  # valid_model_runs
-        n_samples = samples.shape[0]
-
-        # Extract the requested model outputs for likelihood calulation
-        output_names = self.out_names
-
-        # TODO: Evaluate MetaModel on the experimental design and ValidSet
-        OutputRS, stdOutputRS = MetaModel.eval_metamodel(samples=samples)
-
-        logLik_data = np.zeros((n_samples))
-        logLik_model = np.zeros((n_samples))
-        # Loop over the outputs
-        for idx, out in enumerate(output_names):
-
-            # (Meta)Model Output
-            nsamples, nout = model_outputs[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout]
-
-            # Covariance Matrix
-            covMatrix_data = np.diag(tot_sigma2s)
-
-            for i, sample in enumerate(samples):
-
-                # Simulation run
-                y_m = model_outputs[out][i]
-
-                # Surrogate prediction
-                y_m_hat = OutputRS[out][i]
-
-                # CovMatrix with the surrogate error
-                # covMatrix = np.diag(stdOutputRS[out][i]**2)
-                covMatrix = np.diag((y_m-y_m_hat)**2)
-                covMatrix = np.diag(
-                    np.mean((model_outputs[out]-OutputRS[out]), axis=0)**2
-                    )
-
-                # Compute likelilhood output vs data
-                logLik_data[i] += logpdf(
-                    y_m_hat, data, covMatrix_data
-                    )
-
-                # Compute likelilhood output vs surrogate
-                logLik_model[i] += logpdf(y_m_hat, y_m, covMatrix)
-
-        # Weight
-        logLik_data -= logBME
-        weights = np.exp(logLik_model+logLik_data)
-
-        return np.log(np.mean(weights))
-
-    # -------------------------------------------------------------------------
-    def _posteriorPlot(self, posterior, par_names, key):
-        """
-        Plot the posterior of a specific key as a corner plot
-
-        Parameters
-        ----------
-        posterior : 2d np.array
-            Samples of the posterior.
-        par_names : list of strings
-            List of the parameter names.
-        key : string
-            Output key that this posterior belongs to.
-
-        Returns
-        -------
-        figPosterior : corner.corner
-            Plot of the posterior.
-
-        """
-
-        # Initialization
-        newpath = (r'Outputs_SeqPosteriorComparison/posterior')
-        os.makedirs(newpath, exist_ok=True)
-
-        bound_tuples = self.ExpDesign.bound_tuples
-        n_params = len(par_names)
-        font_size = 40
-        if n_params == 2:
-
-            figPosterior, ax = plt.subplots(figsize=(15, 15))
-
-            sns.kdeplot(x=posterior[:, 0], y=posterior[:, 1],
-                        fill=True, ax=ax, cmap=plt.cm.jet,
-                        clip=bound_tuples)
-            # Axis labels
-            plt.xlabel(par_names[0], fontsize=font_size)
-            plt.ylabel(par_names[1], fontsize=font_size)
-
-            # Set axis limit
-            plt.xlim(bound_tuples[0])
-            plt.ylim(bound_tuples[1])
-
-            # Increase font size
-            plt.xticks(fontsize=font_size)
-            plt.yticks(fontsize=font_size)
-
-            # Switch off the grids
-            plt.grid(False)
-
-        else:
-            import corner
-            figPosterior = corner.corner(posterior, labels=par_names,
-                                         title_fmt='.2e', show_titles=True,
-                                         title_kwargs={"fontsize": 12})
-
-        figPosterior.savefig(f'./{newpath}/{key}.pdf', bbox_inches='tight')
-        plt.close()
-
-        # Save the posterior as .npy
-        np.save(f'./{newpath}/{key}.npy', posterior)
-
-        return figPosterior
-
-    
-    # -------------------------------------------------------------------------
-    def _BME_Calculator(self, obs_data, sigma2Dict, rmse=None):
-        """
-        This function computes the Bayesian model evidence (BME) via Monte
-        Carlo integration.
-
-        Parameters
-        ----------
-        obs_data : dict of 1d np arrays
-            Observed data.
-        sigma2Dict : pandas dataframe, matches obs_data
-            Estimated uncertainty for the observed data.
-        rmse : dict of floats, optional
-            RMSE values for each output-key. The dafault is None.
-
-        Returns
-        -------
-        (logBME, KLD, X_Posterior, Likelihoods, distHellinger)
-        
-        """
-        # Initializations
-        if hasattr(self, 'valid_likelihoods'):
-            valid_likelihoods = self.valid_likelihoods
-        else:
-            valid_likelihoods = []
-        valid_likelihoods = np.array(valid_likelihoods)
-
-        post_snapshot = self.ExpDesign.post_snapshot
-        if post_snapshot or valid_likelihoods.shape[0] != 0:
-            newpath = (r'Outputs_SeqPosteriorComparison/likelihood_vs_ref')
-            os.makedirs(newpath, exist_ok=True)
-
-        SamplingMethod = 'random'
-        MCsize = 10000
-        ESS = 0
-
-        # Estimation of the integral via Monte Varlo integration
-        while (ESS > MCsize) or (ESS < 1):
-
-            # Generate samples for Monte Carlo simulation
-            X_MC = self.ExpDesign.generate_samples(
-                MCsize, SamplingMethod
-                )
-
-            # Monte Carlo simulation for the candidate design
-            Y_MC, std_MC = self.MetaModel.eval_metamodel(samples=X_MC)
-
-            # Likelihood computation (Comparison of data and
-            # simulation results via PCE with candidate design)
-            Likelihoods = self._normpdf(
-                Y_MC, std_MC, obs_data, sigma2Dict, rmse
-                )
-
-            # Check the Effective Sample Size (1000<ESS<MCsize)
-            ESS = 1 / np.sum(np.square(Likelihoods/np.sum(Likelihoods)))
-
-            # Enlarge sample size if it doesn't fulfill the criteria
-            if (ESS > MCsize) or (ESS < 1):
-                print(f'ESS={ESS} MC size should be larger.')
-                MCsize *= 10
-                ESS = 0
-
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, MCsize)[0]
-
-        # Reject the poorly performed prior
-        accepted = (Likelihoods/np.max(Likelihoods)) >= unif
-        X_Posterior = X_MC[accepted]
-
-        # ------------------------------------------------------------
-        # --- Kullback-Leibler Divergence & Information Entropy ------
-        # ------------------------------------------------------------
-        # Prior-based estimation of BME
-        logBME = np.log(np.nanmean(Likelihoods))
-
-        # TODO: Correction factor
-        # log_weight = self.__corr_factor_BME(obs_data, sigma2Dict, logBME)
-
-        # Posterior-based expectation of likelihoods
-        postExpLikelihoods = np.mean(np.log(Likelihoods[accepted]))
-
-        # Posterior-based expectation of prior densities
-        postExpPrior = np.mean(
-            np.log(self.ExpDesign.JDist.pdf(X_Posterior.T))
-            )
-
-        # Calculate Kullback-Leibler Divergence
-        # KLD = np.mean(np.log(Likelihoods[Likelihoods!=0])- logBME)
-        KLD = postExpLikelihoods - logBME
-
-        # Information Entropy based on Entropy paper Eq. 38
-        infEntropy = logBME - postExpPrior - postExpLikelihoods
-
-        # If post_snapshot is True, plot likelihood vs refrence
-        if post_snapshot or valid_likelihoods:
-            # Hellinger distance
-            ref_like = np.log(valid_likelihoods[valid_likelihoods > 0])
-            est_like = np.log(Likelihoods[Likelihoods > 0])
-            distHellinger = hellinger_distance(ref_like, est_like)
-            
-            idx = len([name for name in os.listdir(newpath) if 'Likelihoods_'
-                       in name and os.path.isfile(os.path.join(newpath, name))])
-            
-            fig, ax = plt.subplots()
-            try:
-                sns.kdeplot(np.log(valid_likelihoods[valid_likelihoods > 0]),
-                            shade=True, color="g", label='Ref. Likelihood')
-                sns.kdeplot(np.log(Likelihoods[Likelihoods > 0]), shade=True,
-                            color="b", label='Likelihood with PCE')
-            except:
-                pass
-
-            text = f"Hellinger Dist.={distHellinger:.3f}\n logBME={logBME:.3f}"
-            "\n DKL={KLD:.3f}"
-
-            plt.text(0.05, 0.75, text, bbox=dict(facecolor='wheat',
-                                                 edgecolor='black',
-                                                 boxstyle='round,pad=1'),
-                     transform=ax.transAxes)
-
-            fig.savefig(f'./{newpath}/Likelihoods_{idx}.pdf',
-                        bbox_inches='tight')
-            plt.close()
-
-        else:
-            distHellinger = 0.0
-
-        # Bayesian inference with Emulator only for 2D problem
-        if post_snapshot and self.MetaModel.n_params == 2 and not idx % 5:
-            from bayesvalidrox.bayes_inference.bayes_inference import BayesInference
-            from bayesvalidrox.bayes_inference.discrepancy import Discrepancy
-            import pandas as pd
-            BayesOpts = BayesInference(self)
-            BayesOpts.emulator = True
-            BayesOpts.plot_post_pred = False
-
-            # Select the inference method
-            import emcee
-            BayesOpts.inference_method = "MCMC"
-            # Set the MCMC parameters passed to self.mcmc_params
-            BayesOpts.mcmc_params = {
-                'n_steps': 1e5,
-                'n_walkers': 30,
-                'moves': emcee.moves.KDEMove(),
-                'verbose': False
-                }
-
-            # ----- Define the discrepancy model -------
-            # TODO: check with Farid if this first line is how it should be
-            BayesOpts.measured_data = obs_data
-            obs_data = pd.DataFrame(obs_data, columns=self.out_names)
-            BayesOpts.measurement_error = obs_data
-            # TODO: shouldn't the uncertainty be sigma2Dict instead of obs_data?
-
-            # # -- (Option B) --
-            DiscrepancyOpts = Discrepancy('')
-            DiscrepancyOpts.type = 'Gaussian'
-            DiscrepancyOpts.parameters = obs_data**2
-            BayesOpts.Discrepancy = DiscrepancyOpts
-            # Start the calibration/inference
-            Bayes_PCE = BayesOpts.create_inference()
-            X_Posterior = Bayes_PCE.posterior_df.values
-
-        return (logBME, KLD, X_Posterior, Likelihoods, distHellinger)
-
-    # -------------------------------------------------------------------------
-    def _validError(self):
-        """
-        Evaluate the metamodel on the validation samples and calculate the
-        error against the corresponding model runs
-
-        Returns
-        -------
-        rms_error : dict
-            RMSE for each validation run.
-        valid_error : dict
-            Normed (?)RMSE for each validation run.
-
-        """
-        # Extract the original model with the generated samples
-        valid_model_runs = self.ExpDesign.valid_model_runs
-
-        # Run the PCE model with the generated samples
-        valid_PCE_runs, _ = self.MetaModel.eval_metamodel(samples=self.ExpDesign.valid_samples)
-
-        rms_error = {}
-        valid_error = {}
-        # Loop over the keys and compute RMSE error.
-        for key in self.out_names:
-            rms_error[key] = mean_squared_error(
-                valid_model_runs[key], valid_PCE_runs[key],
-                multioutput='raw_values',
-                sample_weight=None,
-                squared=False)
-            # Validation error
-            valid_error[key] = (rms_error[key]**2)
-            valid_error[key] /= np.var(valid_model_runs[key], ddof=1, axis=0)
-
-            # Print a report table
-            print("\n>>>>> Updated Errors of {} <<<<<".format(key))
-            print("\nIndex  |  RMSE   |  Validation Error")
-            print('-'*35)
-            print('\n'.join(f'{i+1}  |  {k:.3e}  |  {j:.3e}' for i, (k, j)
-                            in enumerate(zip(rms_error[key],
-                                             valid_error[key]))))
-
-        return rms_error, valid_error
-
-    # -------------------------------------------------------------------------
-    def _error_Mean_Std(self):
-        """
-        Calculates the error in the overall mean and std approximation of the
-        surrogate against the mc-reference provided to the model.
-        This can only be applied to metamodels of polynomial type
-
-        Returns
-        -------
-        RMSE_Mean : float
-            RMSE of the means 
-        RMSE_std : float
-            RMSE of the standard deviations
-
-        """
-        # Compute the mean and std based on the MetaModel
-        pce_means, pce_stds = self.MetaModel._compute_pce_moments()
-
-        # Compute the root mean squared error
-        for output in self.out_names:
-
-            # Compute the error between mean and std of MetaModel and OrigModel
-            RMSE_Mean = mean_squared_error(
-                self.Model.mc_reference['mean'], pce_means[output], squared=False
-                )
-            RMSE_std = mean_squared_error(
-                self.Model.mc_reference['std'], pce_stds[output], squared=False
-                )
-
-        return RMSE_Mean, RMSE_std
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/eval_rec_rule.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/eval_rec_rule.py
deleted file mode 100644
index b583c7eb2..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/eval_rec_rule.py
+++ /dev/null
@@ -1,197 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-
-
-Based on the implementation in UQLab [1].
-
-References:
-1. S. Marelli, and B. Sudret, UQLab: A framework for uncertainty quantification
-in Matlab, Proc. 2nd Int. Conf. on Vulnerability, Risk Analysis and Management
-(ICVRAM2014), Liverpool, United Kingdom, 2014, 2554-2563.
-
-2. S. Marelli, N. Lüthen, B. Sudret, UQLab user manual – Polynomial chaos
-expansions, Report # UQLab-V1.4-104, Chair of Risk, Safety and Uncertainty
-Quantification, ETH Zurich, Switzerland, 2021.
-
-Author: Farid Mohammadi, M.Sc.
-E-Mail: farid.mohammadi@iws.uni-stuttgart.de
-Department of Hydromechanics and Modelling of Hydrosystems (LH2)
-Institute for Modelling Hydraulic and Environmental Systems (IWS), University
-of Stuttgart, www.iws.uni-stuttgart.de/lh2/
-Pfaffenwaldring 61
-70569 Stuttgart
-
-Created on Fri Jan 14 2022
-"""
-import numpy as np
-from numpy.polynomial.polynomial import polyval
-
-
-def poly_rec_coeffs(n_max, poly_type, params=None):
-    """
-    Computes the recurrence coefficients for classical Wiener-Askey orthogonal
-    polynomials.
-
-    Parameters
-    ----------
-    n_max : int
-        Maximum polynomial degree.
-    poly_type : string
-        Polynomial type.
-    params : list, optional
-        Parameters required for `laguerre` poly type. The default is None.
-
-    Returns
-    -------
-    AB : dict
-        The 3 term recursive coefficients and the applicable ranges.
-
-    """
-
-    if poly_type == 'legendre':
-
-        def an(n):
-            return np.zeros((n+1, 1))
-
-        def sqrt_bn(n):
-            sq_bn = np.zeros((n+1, 1))
-            sq_bn[0, 0] = 1
-            for i in range(1, n+1):
-                sq_bn[i, 0] = np.sqrt(1./(4-i**-2))
-            return sq_bn
-
-        bounds = [-1, 1]
-
-    elif poly_type == 'hermite':
-
-        def an(n):
-            return np.zeros((n+1, 1))
-
-        def sqrt_bn(n):
-            sq_bn = np.zeros((n+1, 1))
-            sq_bn[0, 0] = 1
-            for i in range(1, n+1):
-                sq_bn[i, 0] = np.sqrt(i)
-            return sq_bn
-
-        bounds = [-np.inf, np.inf]
-
-    elif poly_type == 'laguerre':
-
-        def an(n):
-            a = np.zeros((n+1, 1))
-            for i in range(1, n+1):
-                a[i] = 2*n + params[1]
-            return a
-
-        def sqrt_bn(n):
-            sq_bn = np.zeros((n+1, 1))
-            sq_bn[0, 0] = 1
-            for i in range(1, n+1):
-                sq_bn[i, 0] = -np.sqrt(i * (i+params[1]-1))
-            return sq_bn
-
-        bounds = [0, np.inf]
-
-    AB = {'alpha_beta': np.concatenate((an(n_max), sqrt_bn(n_max)), axis=1),
-          'bounds': bounds}
-
-    return AB
-
-
-def eval_rec_rule(x, max_deg, poly_type):
-    """
-    Evaluates the polynomial that corresponds to the Jacobi matrix defined
-    from the AB.
-
-    Parameters
-    ----------
-    x : array (n_samples)
-        Points where the polynomials are evaluated.
-    max_deg : int
-        Maximum degree.
-    poly_type : string
-        Polynomial type.
-
-    Returns
-    -------
-    values : array of shape (n_samples, max_deg+1)
-        Polynomials corresponding to the Jacobi matrix.
-
-    """
-    AB = poly_rec_coeffs(max_deg, poly_type)
-    AB = AB['alpha_beta']
-
-    values = np.zeros((len(x), AB.shape[0]+1))
-    values[:, 1] = 1 / AB[0, 1]
-
-    for k in range(AB.shape[0]-1):
-        values[:, k+2] = np.multiply((x - AB[k, 0]), values[:, k+1]) - \
-                         np.multiply(values[:, k], AB[k, 1])
-        values[:, k+2] = np.divide(values[:, k+2], AB[k+1, 1])
-    return values[:, 1:]
-
-
-def eval_rec_rule_arbitrary(x, max_deg, poly_coeffs):
-    """
-    Evaluates the polynomial at sample array x.
-
-    Parameters
-    ----------
-    x : array (n_samples)
-        Points where the polynomials are evaluated.
-    max_deg : int
-        Maximum degree.
-    poly_coeffs : dict
-        Polynomial coefficients computed based on moments.
-
-    Returns
-    -------
-    values : array of shape (n_samples, max_deg+1)
-        Univariate Polynomials evaluated at samples.
-
-    """
-    values = np.zeros((len(x), max_deg+1))
-
-    for deg in range(max_deg+1):
-        values[:, deg] = polyval(x, poly_coeffs[deg]).T
-
-    return values
-
-
-def eval_univ_basis(x, max_deg, poly_types, apoly_coeffs=None):
-    """
-    Evaluates univariate regressors along input directions.
-
-    Parameters
-    ----------
-    x : array of shape (n_samples, n_params)
-        Training samples.
-    max_deg : int
-        Maximum polynomial degree.
-    poly_types : list of strings
-        List of polynomial types for all parameters.
-    apoly_coeffs : dict , optional
-        Polynomial coefficients computed based on moments. The default is None.
-
-    Returns
-    -------
-    univ_vals : array of shape (n_samples, n_params, max_deg+1)
-        Univariate polynomials for all degrees and parameters evaluated at x.
-
-    """
-    # Initilize the output array
-    n_samples, n_params = x.shape
-    univ_vals = np.zeros((n_samples, n_params, max_deg+1))
-
-    for i in range(n_params):
-
-        if poly_types[i] == 'arbitrary':
-            polycoeffs = apoly_coeffs[f'p_{i+1}']
-            univ_vals[:, i] = eval_rec_rule_arbitrary(x[:, i], max_deg,
-                                                      polycoeffs)
-        else:
-            univ_vals[:, i] = eval_rec_rule(x[:, i], max_deg, poly_types[i])
-
-    return univ_vals
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/exp_designs.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/exp_designs.py
deleted file mode 100644
index 665ee4fc3..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/exp_designs.py
+++ /dev/null
@@ -1,493 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import numpy as np
-import math
-import itertools
-import chaospy
-import scipy.stats as st
-from tqdm import tqdm
-import h5py
-import os
-
-from .apoly_construction import apoly_construction
-from .input_space import InputSpace
-
-# -------------------------------------------------------------------------
-def check_ranges(theta, ranges):
-    """
-    This function checks if theta lies in the given ranges.
-
-    Parameters
-    ----------
-    theta : array
-        Proposed parameter set.
-    ranges : nested list
-        List of the praremeter ranges.
-
-    Returns
-    -------
-    c : bool
-        If it lies in the given range, it return True else False.
-
-    """
-    c = True
-    # traverse in the list1
-    for i, bounds in enumerate(ranges):
-        x = theta[i]
-        # condition check
-        if x < bounds[0] or x > bounds[1]:
-            c = False
-            return c
-    return c
-
-
-class ExpDesigns(InputSpace):
-    """
-    This class generates samples from the prescribed marginals for the model
-    parameters using the `Input` object.
-
-    Attributes
-    ----------
-    Input : obj
-        Input object containing the parameter marginals, i.e. name,
-        distribution type and distribution parameters or available raw data.
-    meta_Model_type : str
-        Type of the meta_Model_type.
-    sampling_method : str
-        Name of the sampling method for the experimental design. The following
-        sampling method are supported:
-
-        * random
-        * latin_hypercube
-        * sobol
-        * halton
-        * hammersley
-        * chebyshev(FT)
-        * grid(FT)
-        * user
-    hdf5_file : str
-        Name of the hdf5 file that contains the experimental design.
-    n_new_samples : int
-        Number of (initial) training points.
-    n_max_samples : int
-        Number of maximum training points.
-    mod_LOO_threshold : float
-        The modified leave-one-out cross validation threshold where the
-        sequential design stops.
-    tradeoff_scheme : str
-        Trade-off scheme to assign weights to the exploration and exploitation
-        scores in the sequential design.
-    n_canddidate : int
-        Number of candidate training sets to calculate the scores for.
-    explore_method : str
-        Type of the exploration method for the sequential design. The following
-        methods are supported:
-
-        * Voronoi
-        * random
-        * latin_hypercube
-        * LOOCV
-        * dual annealing
-    exploit_method : str
-        Type of the exploitation method for the sequential design. The
-        following methods are supported:
-
-        * BayesOptDesign
-        * BayesActDesign
-        * VarOptDesign
-        * alphabetic
-        * Space-filling
-    util_func : str or list
-        The utility function to be specified for the `exploit_method`. For the
-        available utility functions see Note section.
-    n_cand_groups : int
-        Number of candidate groups. Each group of candidate training sets will
-        be evaulated separately in parallel.
-    n_replication : int
-        Number of replications. Only for comparison. The default is 1.
-    post_snapshot : int
-        Whether to plot the posterior in the sequential design. The default is
-        `True`.
-    step_snapshot : int
-        The number of steps to plot the posterior in the sequential design. The
-        default is 1.
-    max_a_post : list or array
-        Maximum a posteriori of the posterior distribution, if known. The
-        default is `[]`.
-    adapt_verbose : bool
-        Whether to plot the model response vs that of metamodel for the new
-        trining point in the sequential design.
-
-    Note
-    ----------
-    The following utiliy functions for the **exploitation** methods are
-    supported:
-
-    #### BayesOptDesign (when data is available)
-    - DKL (Kullback-Leibler Divergence)
-    - DPP (D-Posterior-percision)
-    - APP (A-Posterior-percision)
-
-    #### VarBasedOptDesign -> when data is not available
-    - Entropy (Entropy/MMSE/active learning)
-    - EIGF (Expected Improvement for Global fit)
-    - LOOCV (Leave-one-out Cross Validation)
-
-    #### alphabetic
-    - D-Opt (D-Optimality)
-    - A-Opt (A-Optimality)
-    - K-Opt (K-Optimality)
-    """
-
-    def __init__(self, Input, meta_Model_type='pce',
-                 sampling_method='random', hdf5_file=None,
-                 n_new_samples=1, n_max_samples=None, mod_LOO_threshold=1e-16,
-                 tradeoff_scheme=None, n_canddidate=1, explore_method='random',
-                 exploit_method='Space-filling', util_func='Space-filling',
-                 n_cand_groups=4, n_replication=1, post_snapshot=False,
-                 step_snapshot=1, max_a_post=[], adapt_verbose=False, max_func_itr=1):
-
-        self.InputObj = Input
-        self.meta_Model_type = meta_Model_type
-        self.sampling_method = sampling_method
-        self.hdf5_file = hdf5_file
-        self.n_new_samples = n_new_samples
-        self.n_max_samples = n_max_samples
-        self.mod_LOO_threshold = mod_LOO_threshold
-        self.explore_method = explore_method
-        self.exploit_method = exploit_method
-        self.util_func = util_func
-        self.tradeoff_scheme = tradeoff_scheme
-        self.n_canddidate = n_canddidate
-        self.n_cand_groups = n_cand_groups
-        self.n_replication = n_replication
-        self.post_snapshot = post_snapshot
-        self.step_snapshot = step_snapshot
-        self.max_a_post = max_a_post
-        self.adapt_verbose = adapt_verbose
-        self.max_func_itr = max_func_itr
-        
-        # Other 
-        self.apce = None
-        self.ndim = None
-        
-        # Init 
-        self.check_valid_inputs()
-        
-    # -------------------------------------------------------------------------
-    def generate_samples(self, n_samples, sampling_method='random',
-                         transform=False):
-        """
-        Generates samples with given sampling method
-
-        Parameters
-        ----------
-        n_samples : int
-            Number of requested samples.
-        sampling_method : str, optional
-            Sampling method. The default is `'random'`.
-        transform : bool, optional
-            Transformation via an isoprobabilistic transformation method. The
-            default is `False`.
-
-        Returns
-        -------
-        samples: array of shape (n_samples, n_params)
-            Generated samples from defined model input object.
-
-        """
-        try:
-            samples = chaospy.generate_samples(
-                int(n_samples), domain=self.origJDist, rule=sampling_method
-                )
-        except:
-            samples = self.random_sampler(int(n_samples)).T
-
-        return samples.T
-
-
-            
-    # -------------------------------------------------------------------------
-    def generate_ED(self, n_samples, transform=False,
-                    max_pce_deg=None):
-        """
-        Generates experimental designs (training set) with the given method.
-
-        Parameters
-        ----------
-        n_samples : int
-            Number of requested training points.
-        sampling_method : str, optional
-            Sampling method. The default is `'random'`.
-        transform : bool, optional
-            Isoprobabilistic transformation. The default is `False`.
-        max_pce_deg : int, optional
-            Maximum PCE polynomial degree. The default is `None`.
-            
-        Returns
-        -------
-        None
-
-        """
-        if n_samples <0:
-            raise ValueError('A negative number of samples cannot be created. Please provide positive n_samples')
-        n_samples = int(n_samples)
-        
-        if not hasattr(self, 'n_init_samples'):
-            self.n_init_samples = n_samples
-
-        # Generate the samples based on requested method
-        self.init_param_space(max_pce_deg)
-
-        sampling_method = self.sampling_method
-        # Pass user-defined samples as ED
-        if sampling_method == 'user':
-            if not hasattr(self, 'X'):
-                raise AttributeError('User-defined sampling cannot proceed as no samples provided. Please add them to this class as attribute X')
-            if not self.X.ndim == 2:
-                raise AttributeError('The provided samples shuld have 2 dimensions')
-            samples = self.X
-            self.n_samples = len(samples)
-
-        # Sample the distribution of parameters
-        elif self.input_data_given:
-            # Case II: Input values are directly given by the user.
-
-            if sampling_method == 'random':
-                samples = self.random_sampler(n_samples)
-
-            elif sampling_method == 'PCM' or \
-                    sampling_method == 'LSCM':
-                samples = self.pcm_sampler(n_samples, max_pce_deg)
-
-            else:
-                # Create ExpDesign in the actual space using chaospy
-                try:
-                    samples = chaospy.generate_samples(n_samples,
-                                                       domain=self.JDist,
-                                                       rule=sampling_method).T
-                except:
-                    samples = self.JDist.resample(n_samples).T
-
-        elif not self.input_data_given:
-            # Case I = User passed known distributions
-            samples = chaospy.generate_samples(n_samples, domain=self.JDist,
-                                               rule=sampling_method).T
-
-        # Transform samples to the original space
-        if transform:
-            self.init_param_space(max_pce_deg)
-            tr_samples = self.transform(
-                samples,
-                method=sampling_method
-                )
-            if sampling_method == 'user' or not self.apce:
-                self.X = samples
-                self.X_tr = tr_samples
-                #return samples, tr_samples
-            else:
-                self.X = tr_samples
-                self.X_tr = samples
-                #return tr_samples, samples  # TODO: why is this swapped here?
-        else:
-            self.X = samples
-            self.X_tr = None
-            
-    def read_from_file(self, out_names):
-        """
-        Reads in the ExpDesign from a provided h5py file and saves the results.
-
-        Parameters
-        ----------
-        out_names : list of strings
-            The keys that are in the outputs (y) saved in the provided file.
-
-        Returns
-        -------
-        None.
-
-        """
-        if self.hdf5_file == None:
-            raise AttributeError('ExpDesign cannot be read in, please provide hdf5 file first')
-
-        # Read hdf5 file
-        f = h5py.File(self.hdf5_file, 'r+')
-
-        # Read EDX and pass it to ExpDesign object
-        try:
-            self.X = np.array(f["EDX/New_init_"])
-        except KeyError:
-            self.X = np.array(f["EDX/init_"])
-
-        # Update number of initial samples
-        self.n_init_samples = self.X.shape[0]
-
-        # Read EDX and pass it to ExpDesign object
-        self.Y = {}
-
-        # Extract x values
-        try:
-            self.Y["x_values"] = dict()
-            for varIdx, var in enumerate(out_names):
-                x = np.array(f[f"x_values/{var}"])
-                self.Y["x_values"][var] = x
-        except KeyError:
-            self.Y["x_values"] = np.array(f["x_values"])
-
-        # Store the output
-        for varIdx, var in enumerate(out_names):
-            try:
-                y = np.array(f[f"EDY/{var}/New_init_"])
-            except KeyError:
-                y = np.array(f[f"EDY/{var}/init_"])
-            self.Y[var] = y
-        f.close()
-        print(f'Experimental Design is read in from file {self.hdf5_file}')
-        print('')
-        
-    
-
-    # -------------------------------------------------------------------------
-    def random_sampler(self, n_samples, max_deg = None):
-        """
-        Samples the given raw data randomly.
-
-        Parameters
-        ----------
-        n_samples : int
-            Number of requested samples.
-            
-        max_deg : int, optional
-            Maximum degree. The default is `None`.
-            This will be used to run init_param_space, if it has not been done
-            until now.
-
-        Returns
-        -------
-        samples: array of shape (n_samples, n_params)
-            The sampling locations in the input space.
-
-        """
-        if not hasattr(self, 'raw_data'):
-            self.init_param_space(max_deg)
-        else:
-            if np.array(self.raw_data).ndim !=2:
-                raise AttributeError('The given raw data for sampling should have two dimensions')
-        samples = np.zeros((n_samples, self.ndim))
-        sample_size = self.raw_data.shape[1]
-
-        # Use a combination of raw data
-        if n_samples < sample_size:
-            for pa_idx in range(self.ndim):
-                # draw random indices
-                rand_idx = np.random.randint(0, sample_size, n_samples)
-                # store the raw data with given random indices
-                samples[:, pa_idx] = self.raw_data[pa_idx, rand_idx]
-        else:
-            try:
-                samples = self.JDist.resample(int(n_samples)).T
-            except AttributeError:
-                samples = self.JDist.sample(int(n_samples)).T
-            # Check if all samples are in the bound_tuples
-            for idx, param_set in enumerate(samples):
-                if not check_ranges(param_set, self.bound_tuples):
-                    try:
-                        proposed_sample = chaospy.generate_samples(
-                            1, domain=self.JDist, rule='random').T[0]
-                    except:
-                        proposed_sample = self.JDist.resample(1).T[0]
-                    while not check_ranges(proposed_sample,
-                                                 self.bound_tuples):
-                        try:
-                            proposed_sample = chaospy.generate_samples(
-                                1, domain=self.JDist, rule='random').T[0]
-                        except:
-                            proposed_sample = self.JDist.resample(1).T[0]
-                    samples[idx] = proposed_sample
-
-        return samples
-
-    # -------------------------------------------------------------------------
-    def pcm_sampler(self, n_samples, max_deg):
-        """
-        Generates collocation points based on the root of the polynomial
-        degrees.
-
-        Parameters
-        ----------
-        n_samples : int
-            Number of requested samples.
-        max_deg : int
-            Maximum degree defined by user. Will also be used to run 
-            init_param_space if that has not been done beforehand.
-
-        Returns
-        -------
-        opt_col_points: array of shape (n_samples, n_params)
-            Collocation points.
-
-        """
-        
-        if not hasattr(self, 'raw_data'):
-            self.init_param_space(max_deg)
-
-        raw_data = self.raw_data
-
-        # Guess the closest degree to self.n_samples
-        def M_uptoMax(deg):
-            result = []
-            for d in range(1, deg+1):
-                result.append(math.factorial(self.ndim+d) //
-                              (math.factorial(self.ndim) * math.factorial(d)))
-            return np.array(result)
-        #print(M_uptoMax(max_deg))
-        #print(np.where(M_uptoMax(max_deg) > n_samples)[0])
-
-        guess_Deg = np.where(M_uptoMax(max_deg) > n_samples)[0][0]
-
-        c_points = np.zeros((guess_Deg+1, self.ndim))
-
-        def PolynomialPa(parIdx):
-            return apoly_construction(self.raw_data[parIdx], max_deg)
-
-        for i in range(self.ndim):
-            poly_coeffs = PolynomialPa(i)[guess_Deg+1][::-1]
-            c_points[:, i] = np.trim_zeros(np.roots(poly_coeffs))
-
-        #  Construction of optimal integration points
-        Prod = itertools.product(np.arange(1, guess_Deg+2), repeat=self.ndim)
-        sort_dig_unique_combos = np.array(list(filter(lambda x: x, Prod)))
-
-        # Ranking relatively mean
-        Temp = np.empty(shape=[0, guess_Deg+1])
-        for j in range(self.ndim):
-            s = abs(c_points[:, j]-np.mean(raw_data[j]))
-            Temp = np.append(Temp, [s], axis=0)
-        temp = Temp.T
-
-        index_CP = np.sort(temp, axis=0)
-        sort_cpoints = np.empty((0, guess_Deg+1))
-
-        for j in range(self.ndim):
-            #print(index_CP[:, j])
-            sort_cp = c_points[index_CP[:, j], j]
-            sort_cpoints = np.vstack((sort_cpoints, sort_cp))
-
-        # Mapping of Combination to Cpoint Combination
-        sort_unique_combos = np.empty(shape=[0, self.ndim])
-        for i in range(len(sort_dig_unique_combos)):
-            sort_un_comb = []
-            for j in range(self.ndim):
-                SortUC = sort_cpoints[j, sort_dig_unique_combos[i, j]-1]
-                sort_un_comb.append(SortUC)
-                sort_uni_comb = np.asarray(sort_un_comb)
-            sort_unique_combos = np.vstack((sort_unique_combos, sort_uni_comb))
-
-        # Output the collocation points
-        if self.sampling_method.lower() == 'lscm':
-            opt_col_points = sort_unique_combos
-        else:
-            opt_col_points = sort_unique_combos[0:self.n_samples]
-
-        return opt_col_points
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/exploration.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/exploration.py
deleted file mode 100644
index e18537207..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/exploration.py
+++ /dev/null
@@ -1,364 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import numpy as np
-from scipy.spatial import distance
-
-
-class Exploration:
-    """
-    Created based on the Surrogate Modeling Toolbox (SUMO) [1].
-
-    [1] Gorissen, D., Couckuyt, I., Demeester, P., Dhaene, T. and Crombecq, K.,
-        2010. A surrogate modeling and adaptive sampling toolbox for computer
-        based design. Journal of machine learning research.-Cambridge, Mass.,
-        11, pp.2051-2055. sumo@sumo.intec.ugent.be - http://sumo.intec.ugent.be
-
-    Attributes
-    ----------
-    ExpDesign : obj
-        ExpDesign object.
-    n_candidate : int
-        Number of candidate samples.
-    mc_criterion : str
-        Selection crieterion. The default is `'mc-intersite-proj-th'`. Another
-        option is `'mc-intersite-proj'`.
-    w : int
-        Number of random points in the domain for each sample of the
-        training set.
-    """
-
-    def __init__(self, ExpDesign, n_candidate,
-                 mc_criterion='mc-intersite-proj-th'):
-        self.ExpDesign = ExpDesign
-        self.n_candidate = n_candidate
-        self.mc_criterion = mc_criterion
-        self.w = 100
-
-    def get_exploration_samples(self):
-        """
-        This function generates candidates to be selected as new design and
-        their associated exploration scores.
-
-        Returns
-        -------
-        all_candidates : array of shape (n_candidate, n_params)
-            A list of samples.
-        exploration_scores: arrays of shape (n_candidate)
-            Exploration scores.
-        """
-        explore_method = self.ExpDesign.explore_method
-
-        print("\n")
-        print(f' The {explore_method}-Method is selected as the exploration '
-              'method.')
-        print("\n")
-
-        if explore_method == 'Voronoi':
-            # Generate samples using the Voronoi method
-            all_candidates, exploration_scores = self.get_vornoi_samples()
-        else:
-            # Generate samples using the MC method
-            all_candidates, exploration_scores = self.get_mc_samples()
-
-        return all_candidates, exploration_scores
-
-    # -------------------------------------------------------------------------
-    def get_vornoi_samples(self):
-        """
-        This function generates samples based on voronoi cells and their
-        corresponding scores
-
-        Returns
-        -------
-        new_samples : array of shape (n_candidate, n_params)
-            A list of samples.
-        exploration_scores: arrays of shape (n_candidate)
-            Exploration scores.
-        """
-
-        mc_criterion = self.mc_criterion
-        n_candidate = self.n_candidate
-        # Get the Old ExpDesign #samples
-        old_ED_X = self.ExpDesign.X
-        ndim = old_ED_X.shape[1]
-
-        # calculate error #averageErrors
-        error_voronoi, all_candidates = self.approximate_voronoi(
-            self.w, old_ED_X
-            )
-
-        # Pick the best candidate point in the voronoi cell
-        # for each best sample
-        selected_samples = np.empty((0, ndim))
-        bad_samples = []
-
-        for index in range(len(error_voronoi)):
-
-            # get candidate new samples from voronoi tesselation
-            candidates = self.closest_points[index]
-
-            # get total number of candidates
-            n_new_samples = candidates.shape[0]
-
-            # still no candidate samples around this one, skip it!
-            if n_new_samples == 0:
-                print('The following sample has been skipped because there '
-                      'were no candidate samples around it...')
-                print(old_ED_X[index])
-                bad_samples.append(index)
-                continue
-
-            # find candidate that is farthest away from any existing sample
-            max_min_distance = 0
-            best_candidate = 0
-            min_intersite_dist = np.zeros((n_new_samples))
-            min_projected_dist = np.zeros((n_new_samples))
-
-            for j in range(n_new_samples):
-
-                new_samples = np.vstack((old_ED_X, selected_samples))
-
-                # find min distorted distance from all other samples
-                euclidean_dist = self._build_dist_matrix_point(
-                    new_samples, candidates[j], do_sqrt=True)
-                min_euclidean_dist = np.min(euclidean_dist)
-                min_intersite_dist[j] = min_euclidean_dist
-
-                # Check if this is the maximum minimum distance from all other
-                # samples
-                if min_euclidean_dist >= max_min_distance:
-                    max_min_distance = min_euclidean_dist
-                    best_candidate = j
-
-                # Projected distance
-                projected_dist = distance.cdist(
-                    new_samples, [candidates[j]], 'chebyshev')
-                min_projected_dist[j] = np.min(projected_dist)
-
-            if mc_criterion == 'mc-intersite-proj':
-                weight_euclidean_dist = 0.5 * ((n_new_samples+1)**(1/ndim) - 1)
-                weight_projected_dist = 0.5 * (n_new_samples+1)
-                total_dist_scores = weight_euclidean_dist * min_intersite_dist
-                total_dist_scores += weight_projected_dist * min_projected_dist
-
-            elif mc_criterion == 'mc-intersite-proj-th':
-                alpha = 0.5  # chosen (tradeoff)
-                d_min = 2 * alpha / n_new_samples
-                if any(min_projected_dist < d_min):
-                    candidates = np.delete(
-                        candidates, [min_projected_dist < d_min], axis=0
-                        )
-                    total_dist_scores = np.delete(
-                        min_intersite_dist, [min_projected_dist < d_min],
-                        axis=0
-                        )
-                else:
-                    total_dist_scores = min_intersite_dist
-            else:
-                raise NameError(
-                    'The MC-Criterion you requested is not available.'
-                    )
-
-            # Add the best candidate to the list of new samples
-            best_candidate = np.argsort(total_dist_scores)[::-1][:n_candidate]
-            selected_samples = np.vstack(
-                (selected_samples, candidates[best_candidate])
-                )
-
-        self.new_samples = selected_samples
-        self.exploration_scores = np.delete(error_voronoi, bad_samples, axis=0)
-
-        return self.new_samples, self.exploration_scores
-
-    # -------------------------------------------------------------------------
-    def get_mc_samples(self, all_candidates=None):
-        """
-        This function generates random samples based on Global Monte Carlo
-        methods and their corresponding scores, based on [1].
-
-        [1] Crombecq, K., Laermans, E. and Dhaene, T., 2011. Efficient
-            space-filling and non-collapsing sequential design strategies for
-            simulation-based modeling. European Journal of Operational Research
-            , 214(3), pp.683-696.
-            DOI: https://doi.org/10.1016/j.ejor.2011.05.032
-
-        Implemented methods to compute scores:
-            1) mc-intersite-proj
-            2) mc-intersite-proj-th
-
-        Arguments
-        ---------
-        all_candidates : array, optional
-            Samples to compute the scores for. The default is `None`. In this
-            case, samples will be generated by defined model input marginals.
-
-        Returns
-        -------
-        new_samples : array of shape (n_candidate, n_params)
-            A list of samples.
-        exploration_scores: arrays of shape (n_candidate)
-            Exploration scores.
-        """
-        explore_method = self.ExpDesign.explore_method
-        mc_criterion = self.mc_criterion
-        if all_candidates is None:
-            n_candidate = self.n_candidate
-        else:
-            n_candidate = all_candidates.shape[0]
-
-        # Get the Old ExpDesign #samples
-        old_ED_X = self.ExpDesign.X
-        ndim = old_ED_X.shape[1]
-
-        # ----- Compute the number of random points -----
-        if all_candidates is None:
-            # Generate MC Samples
-            all_candidates = self.ExpDesign.generate_samples(
-                self.n_candidate, explore_method
-                )
-        self.all_candidates = all_candidates
-
-        # initialization
-        min_intersite_dist = np.zeros((n_candidate))
-        min_projected_dist = np.zeros((n_candidate))
-
-        for i, candidate in enumerate(all_candidates):
-
-            # find candidate that is farthest away from any existing sample
-            maxMinDistance = 0
-
-            # find min distorted distance from all other samples
-            euclidean_dist = self._build_dist_matrix_point(
-                old_ED_X, candidate, do_sqrt=True
-                )
-            min_euclidean_dist = np.min(euclidean_dist)
-            min_intersite_dist[i] = min_euclidean_dist
-
-            # Check if this is the maximum minimum distance from all other
-            # samples
-            if min_euclidean_dist >= maxMinDistance:
-                maxMinDistance = min_euclidean_dist
-
-            # Projected distance
-            projected_dist = self._build_dist_matrix_point(
-                old_ED_X, candidate, 'chebyshev'
-                )
-            min_projected_dist[i] = np.min(projected_dist)
-
-        if mc_criterion == 'mc-intersite-proj':
-            weight_euclidean_dist = ((n_candidate+1)**(1/ndim) - 1) * 0.5
-            weight_projected_dist = (n_candidate+1) * 0.5
-            total_dist_scores = weight_euclidean_dist * min_intersite_dist
-            total_dist_scores += weight_projected_dist * min_projected_dist
-
-        elif mc_criterion == 'mc-intersite-proj-th':
-            alpha = 0.5  # chosen (tradeoff)
-            d_min = 2 * alpha / n_candidate
-            if any(min_projected_dist < d_min):
-                all_candidates = np.delete(
-                    all_candidates, [min_projected_dist < d_min], axis=0
-                    )
-                total_dist_scores = np.delete(
-                    min_intersite_dist, [min_projected_dist < d_min], axis=0
-                    )
-            else:
-                total_dist_scores = min_intersite_dist
-        else:
-            raise NameError('The MC-Criterion you requested is not available.')
-
-        self.new_samples = all_candidates
-        self.exploration_scores = total_dist_scores
-        self.exploration_scores /= np.nansum(total_dist_scores)
-
-        return self.new_samples, self.exploration_scores
-
-    # -------------------------------------------------------------------------
-    def approximate_voronoi(self, w, samples):
-        """
-        An approximate (monte carlo) version of Matlab's voronoi command.
-
-        Arguments
-        ---------
-        samples : array
-            Old experimental design to be used as center points for voronoi
-            cells.
-
-        Returns
-        -------
-        areas : array
-            An approximation of the voronoi cells' areas.
-        all_candidates: list of arrays
-            A list of samples in each voronoi cell.
-        """
-        n_samples = samples.shape[0]
-        ndim = samples.shape[1]
-
-        # Compute the number of random points
-        n_points = w * samples.shape[0]
-        # Generate w random points in the domain for each sample
-        points = self.ExpDesign.generate_samples(n_points, 'random')
-        self.all_candidates = points
-
-        # Calculate the nearest sample to each point
-        self.areas = np.zeros((n_samples))
-        self.closest_points = [np.empty((0, ndim)) for i in range(n_samples)]
-
-        # Compute the minimum distance from all the samples of old_ED_X for
-        # each test point
-        for idx in range(n_points):
-            # calculate the minimum distance
-            distances = self._build_dist_matrix_point(
-                samples, points[idx], do_sqrt=True
-                )
-            closest_sample = np.argmin(distances)
-
-            # Add to the voronoi list of the closest sample
-            self.areas[closest_sample] = self.areas[closest_sample] + 1
-            prev_closest_points = self.closest_points[closest_sample]
-            self.closest_points[closest_sample] = np.vstack(
-                (prev_closest_points, points[idx])
-                )
-
-        # Divide by the amount of points to get the estimated volume of each
-        # voronoi cell
-        self.areas /= n_points
-
-        self.perc = np.max(self.areas * 100)
-
-        self.errors = self.areas
-
-        return self.areas, self.all_candidates
-
-    # -------------------------------------------------------------------------
-    def _build_dist_matrix_point(self, samples, point, method='euclidean',
-                                 do_sqrt=False):
-        """
-        Calculates the intersite distance of all points in samples from point.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params)
-            The old experimental design.
-        point : array
-            A candidate point.
-        method : str
-            Distance method.
-        do_sqrt : bool, optional
-            Whether to return distances or squared distances. The default is
-            `False`.
-
-        Returns
-        -------
-        distances : array
-            Distances.
-
-        """
-        distances = distance.cdist(samples, np.array([point]), method)
-
-        # do square root?
-        if do_sqrt:
-            return distances
-        else:
-            return distances**2
-
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/glexindex.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/glexindex.py
deleted file mode 100644
index 90877331e..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/glexindex.py
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Multi indices for monomial exponents.
-Credit: Jonathan Feinberg
-https://github.com/jonathf/numpoly/blob/master/numpoly/utils/glexindex.py
-"""
-
-import numpy
-import numpy.typing
-
-
-def glexindex(start, stop=None, dimensions=1, cross_truncation=1.,
-              graded=False, reverse=False):
-    """
-    Generate graded lexicographical multi-indices for the monomial exponents.
-    Args:
-        start (Union[int, numpy.ndarray]):
-            The lower order of the indices. If array of int, counts as lower
-            bound for each axis.
-        stop (Union[int, numpy.ndarray, None]):
-            The maximum shape included. If omitted: stop <- start; start <- 0
-            If int is provided, set as largest total order. If array of int,
-            set as upper bound for each axis.
-        dimensions (int):
-            The number of dimensions in the expansion.
-        cross_truncation (float, Tuple[float, float]):
-            Use hyperbolic cross truncation scheme to reduce the number of
-            terms in expansion. If two values are provided, first is low bound
-            truncation, while the latter upper bound. If only one value, upper
-            bound is assumed.
-        graded (bool):
-            Graded sorting, meaning the indices are always sorted by the index
-            sum. E.g. ``(2, 2, 2)`` has a sum of 6, and will therefore be
-            consider larger than both ``(3, 1, 1)`` and ``(1, 1, 3)``.
-        reverse (bool):
-            Reversed lexicographical sorting meaning that ``(1, 3)`` is
-            considered smaller than ``(3, 1)``, instead of the opposite.
-    Returns:
-        list:
-            Order list of indices.
-    Examples:
-        >>> numpoly.glexindex(4).tolist()
-        [[0], [1], [2], [3]]
-        >>> numpoly.glexindex(2, dimensions=2).tolist()
-        [[0, 0], [1, 0], [0, 1]]
-        >>> numpoly.glexindex(start=2, stop=3, dimensions=2).tolist()
-        [[2, 0], [1, 1], [0, 2]]
-        >>> numpoly.glexindex([1, 2, 3]).tolist()
-        [[0, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 2]]
-        >>> numpoly.glexindex([1, 2, 3], cross_truncation=numpy.inf).tolist()
-        [[0, 0, 0], [0, 1, 0], [0, 0, 1], [0, 1, 1], [0, 0, 2], [0, 1, 2]]
-    """
-    if stop is None:
-        start, stop = 0, start
-    start = numpy.array(start, dtype=int).flatten()
-    stop = numpy.array(stop, dtype=int).flatten()
-    start, stop, _ = numpy.broadcast_arrays(start, stop, numpy.empty(dimensions))
-
-    cross_truncation = cross_truncation*numpy.ones(2)
-    
-    # Moved here from _glexindex
-    bound = stop.max()
-    dimensions = len(start)
-    start = numpy.clip(start, a_min=0, a_max=None)
-    dtype = numpy.uint8 if bound < 256 else numpy.uint16
-    range_ = numpy.arange(bound, dtype=dtype)
-    indices = range_[:, numpy.newaxis]
-
-    for idx in range(dimensions-1):
-
-        # Truncate at each step to keep memory usage low
-        if idx:
-            indices = indices[cross_truncate(indices, bound-1, cross_truncation[1])]
-
-        # Repeats the current set of indices.
-        # e.g. [0,1,2] -> [0,1,2,0,1,2,...,0,1,2]
-        indices = numpy.tile(indices, (bound, 1))
-
-        # Stretches ranges over the new dimension.
-        # e.g. [0,1,2] -> [0,0,...,0,1,1,...,1,2,2,...,2]
-        front = range_.repeat(len(indices)//bound)[:, numpy.newaxis]
-
-        # Puts them two together.
-        indices = numpy.column_stack((front, indices))
-
-    # Complete the truncation scheme
-    if dimensions == 1:
-        indices = indices[(indices >= start) & (indices < bound)]
-    else:
-        lower = cross_truncate(indices, start-1, cross_truncation[0])
-        upper = cross_truncate(indices, stop-1, cross_truncation[1])
-        indices = indices[lower ^ upper]
-
-    indices = numpy.array(indices, dtype=int).reshape(-1, dimensions)
-    if indices.size:
-        # moved here from glexsort
-        keys = indices.T
-        keys_ = numpy.atleast_2d(keys)
-        if reverse:
-            keys_ = keys_[::-1]
-    
-        indices_sort = numpy.array(numpy.lexsort(keys_))
-        if graded:
-            indices_sort = indices_sort[numpy.argsort(
-                numpy.sum(keys_[:, indices_sort], axis=0))].T
-        
-        indices = indices[indices_sort]
-    return indices
-
-def cross_truncate(indices, bound, norm):
-    r"""
-    Truncate of indices using L_p norm.
-    .. math:
-        L_p(x) = \sum_i |x_i/b_i|^p ^{1/p} \leq 1
-    where :math:`b_i` are bounds that each :math:`x_i` should follow.
-    Args:
-        indices (Sequence[int]):
-            Indices to be truncated.
-        bound (int, Sequence[int]):
-            The bound function for witch the indices can not be larger than.
-        norm (float, Sequence[float]):
-            The `p` in the `L_p`-norm. Support includes both `L_0` and `L_inf`.
-    Returns:
-        Boolean indices to ``indices`` with True for each index where the
-        truncation criteria holds.
-    Examples:
-        >>> indices = numpy.array(numpy.mgrid[:10, :10]).reshape(2, -1).T
-        >>> indices[cross_truncate(indices, 2, norm=0)].T
-        array([[0, 0, 0, 1, 2],
-               [0, 1, 2, 0, 0]])
-        >>> indices[cross_truncate(indices, 2, norm=1)].T
-        array([[0, 0, 0, 1, 1, 2],
-               [0, 1, 2, 0, 1, 0]])
-        >>> indices[cross_truncate(indices, [0, 1], norm=1)].T
-        array([[0, 0],
-               [0, 1]])
-    """
-    assert norm >= 0, "negative L_p norm not allowed"
-    bound = numpy.asfarray(bound).flatten()*numpy.ones(indices.shape[1])
-
-    if numpy.any(bound < 0):
-        return numpy.zeros((len(indices),), dtype=bool)
-
-    if numpy.any(bound == 0):
-        out = numpy.all(indices[:, bound == 0] == 0, axis=-1)
-        if numpy.any(bound):
-            out &= cross_truncate(indices[:, bound != 0], bound[bound != 0], norm=norm)
-        return out
-
-    if norm == 0:
-        out = numpy.sum(indices > 0, axis=-1) <= 1
-        out[numpy.any(indices > bound, axis=-1)] = False
-    elif norm == numpy.inf:
-        out = numpy.max(indices/bound, axis=-1) <= 1
-    else:
-        out = numpy.sum((indices/bound)**norm, axis=-1)**(1./norm) <= 1
-
-    assert numpy.all(out[numpy.all(indices == 0, axis=-1)])
-
-    return out
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/input_space.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/input_space.py
deleted file mode 100644
index 3160ba2d0..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/input_space.py
+++ /dev/null
@@ -1,395 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import numpy as np
-import chaospy
-import scipy.stats as st
-
-
-class InputSpace:
-    """
-    This class generates the input space for the metamodel from the
-    distributions provided using the `Input` object.
-
-    Attributes
-    ----------
-    Input : obj
-        Input object containing the parameter marginals, i.e. name,
-        distribution type and distribution parameters or available raw data.
-    meta_Model_type : str
-        Type of the meta_Model_type.
-
-    """
-
-    def __init__(self, Input, meta_Model_type='pce'):
-        self.InputObj = Input
-        self.meta_Model_type = meta_Model_type
-        
-        # Other 
-        self.apce = None
-        self.ndim = None
-        
-        # Init 
-        self.check_valid_inputs()
-        
-        
-    def check_valid_inputs(self)-> None:
-        """
-        Check if the given InputObj is valid to use for further calculations:
-            Has some Marginals
-            Marginals have valid priors
-            All Marginals given as the same type (samples vs dist)
-
-        Returns
-        -------
-        None
-
-        """
-        Inputs = self.InputObj
-        self.ndim = len(Inputs.Marginals)
-        
-        # Check if PCE or aPCE metamodel is selected.
-        # TODO: test also for 'pce'??
-        if self.meta_Model_type.lower() == 'apce':
-            self.apce = True
-        else:
-            self.apce = False
-
-        # check if marginals given 
-        if not self.ndim >=1:
-            raise AssertionError('Cannot build distributions if no marginals are given')
-            
-        # check that each marginal is valid
-        for marginals in Inputs.Marginals:
-            if len(marginals.input_data) == 0:
-                if marginals.dist_type == None:
-                    raise AssertionError('Not all marginals were provided priors')
-                    break
-            if np.array(marginals.input_data).shape[0] and (marginals.dist_type != None):
-                raise AssertionError('Both samples and distribution type are given. Please choose only one.')
-                break
-                
-        # Check if input is given as dist or input_data.
-        self.input_data_given = -1
-        for marg in Inputs.Marginals:
-            #print(self.input_data_given)
-            size = np.array(marg.input_data).shape[0]
-            #print(f'Size: {size}')
-            if size and abs(self.input_data_given) !=1:
-                self.input_data_given = 2
-                break
-            if (not size) and self.input_data_given > 0:
-                self.input_data_given = 2
-                break
-            if not size:
-                self.input_data_given = 0
-            if size:
-                self.input_data_given = 1
-                
-        if self.input_data_given == 2:
-            raise AssertionError('Distributions cannot be built as the priors have different types')
-            
-    
-        # Get the bounds if input_data are directly defined by user:
-        if self.input_data_given:
-            for i in range(self.ndim):
-                low_bound = np.min(Inputs.Marginals[i].input_data)
-                up_bound = np.max(Inputs.Marginals[i].input_data)
-                Inputs.Marginals[i].parameters = [low_bound, up_bound]
-
-  
-
-    # -------------------------------------------------------------------------
-    def init_param_space(self, max_deg=None):
-        """
-        Initializes parameter space.
-
-        Parameters
-        ----------
-        max_deg : int, optional
-            Maximum degree. The default is `None`.
-
-        Creates
-        -------
-        raw_data : array of shape (n_params, n_samples)
-            Raw data.
-        bound_tuples : list of tuples
-            A list containing lower and upper bounds of parameters.
-
-        """
-        # Recheck all before running!
-        self.check_valid_inputs()
-        
-        Inputs = self.InputObj
-        ndim = self.ndim
-        rosenblatt_flag = Inputs.Rosenblatt
-        mc_size = 50000
-
-        # Save parameter names
-        self.par_names = []
-        for parIdx in range(ndim):
-            self.par_names.append(Inputs.Marginals[parIdx].name)
-
-        # Create a multivariate probability distribution
-        # TODO: change this to make max_deg obligatory? at least in some specific cases?
-        if max_deg is not None:
-            JDist, poly_types = self.build_polytypes(rosenblatt=rosenblatt_flag)
-            self.JDist, self.poly_types = JDist, poly_types
-
-        if self.input_data_given:
-            self.MCSize = len(Inputs.Marginals[0].input_data)
-            self.raw_data = np.zeros((ndim, self.MCSize))
-
-            for parIdx in range(ndim):
-                # Save parameter names
-                try:
-                    self.raw_data[parIdx] = np.array(
-                        Inputs.Marginals[parIdx].input_data)
-                except:
-                    self.raw_data[parIdx] = self.JDist[parIdx].sample(mc_size)
-
-        else:
-            # Generate random samples based on parameter distributions
-            self.raw_data = chaospy.generate_samples(mc_size,
-                                                     domain=self.JDist)
-
-        # Extract moments
-        for parIdx in range(ndim):
-            mu = np.mean(self.raw_data[parIdx])
-            std = np.std(self.raw_data[parIdx])
-            self.InputObj.Marginals[parIdx].moments = [mu, std]
-
-        # Generate the bounds based on given inputs for marginals
-        bound_tuples = []
-        for i in range(ndim):
-            if Inputs.Marginals[i].dist_type == 'unif':
-                low_bound = Inputs.Marginals[i].parameters[0]
-                up_bound = Inputs.Marginals[i].parameters[1]
-            else:
-                low_bound = np.min(self.raw_data[i])
-                up_bound = np.max(self.raw_data[i])
-
-            bound_tuples.append((low_bound, up_bound))
-
-        self.bound_tuples = tuple(bound_tuples)
-
-    # -------------------------------------------------------------------------
-    def build_polytypes(self, rosenblatt):
-        """
-        Creates the polynomial types to be passed to univ_basis_vals method of
-        the MetaModel object.
-
-        Parameters
-        ----------
-        rosenblatt : bool
-            Rosenblatt transformation flag.
-
-        Returns
-        -------
-        orig_space_dist : object
-            A chaospy JDist object or a gaussian_kde object.
-        poly_types : list
-            List of polynomial types for the parameters.
-
-        """
-        Inputs = self.InputObj
-        
-        all_data = []
-        all_dist_types = []
-        orig_joints = []
-        poly_types = []
-        
-        for parIdx in range(self.ndim):
-
-            if Inputs.Marginals[parIdx].dist_type is None:
-                data = Inputs.Marginals[parIdx].input_data
-                all_data.append(data)
-                dist_type = None
-            else:
-                dist_type = Inputs.Marginals[parIdx].dist_type
-                params = Inputs.Marginals[parIdx].parameters
-
-            if rosenblatt:
-                polytype = 'hermite'
-                dist = chaospy.Normal()
-
-            elif dist_type is None:
-                polytype = 'arbitrary'
-                dist = None
-
-            elif 'unif' in dist_type.lower():
-                polytype = 'legendre'
-                if not np.array(params).shape[0]>=2:
-                    raise AssertionError('Distribution has too few parameters!')
-                dist = chaospy.Uniform(lower=params[0], upper=params[1])
-
-            elif 'norm' in dist_type.lower() and \
-                 'log' not in dist_type.lower():
-                if not np.array(params).shape[0]>=2:
-                    raise AssertionError('Distribution has too few parameters!')
-                polytype = 'hermite'
-                dist = chaospy.Normal(mu=params[0], sigma=params[1])
-
-            elif 'gamma' in dist_type.lower():
-                polytype = 'laguerre'
-                if not np.array(params).shape[0]>=3:
-                    raise AssertionError('Distribution has too few parameters!')
-                dist = chaospy.Gamma(shape=params[0],
-                                     scale=params[1],
-                                     shift=params[2])
-
-            elif 'beta' in dist_type.lower():
-                if not np.array(params).shape[0]>=4:
-                    raise AssertionError('Distribution has too few parameters!')
-                polytype = 'jacobi'
-                dist = chaospy.Beta(alpha=params[0], beta=params[1],
-                                    lower=params[2], upper=params[3])
-
-            elif 'lognorm' in dist_type.lower():
-                polytype = 'hermite'
-                if not np.array(params).shape[0]>=2:
-                    raise AssertionError('Distribution has too few parameters!')
-                mu = np.log(params[0]**2/np.sqrt(params[0]**2 + params[1]**2))
-                sigma = np.sqrt(np.log(1 + params[1]**2 / params[0]**2))
-                dist = chaospy.LogNormal(mu, sigma)
-                # dist = chaospy.LogNormal(mu=params[0], sigma=params[1])
-
-            elif 'expon' in dist_type.lower():
-                polytype = 'exponential'
-                if not np.array(params).shape[0]>=2:
-                    raise AssertionError('Distribution has too few parameters!')
-                dist = chaospy.Exponential(scale=params[0], shift=params[1])
-
-            elif 'weibull' in dist_type.lower():
-                polytype = 'weibull'
-                if not np.array(params).shape[0]>=3:
-                    raise AssertionError('Distribution has too few parameters!')
-                dist = chaospy.Weibull(shape=params[0], scale=params[1],
-                                       shift=params[2])
-
-            else:
-                message = (f"DistType {dist_type} for parameter"
-                           f"{parIdx+1} is not available.")
-                raise ValueError(message)
-
-            if self.input_data_given or self.apce:
-                polytype = 'arbitrary'
-
-            # Store dists and poly_types
-            orig_joints.append(dist)
-            poly_types.append(polytype)
-            all_dist_types.append(dist_type)
-
-        # Prepare final output to return
-        if None in all_dist_types:
-            # Naive approach: Fit a gaussian kernel to the provided data
-            Data = np.asarray(all_data)
-            try:
-                orig_space_dist = st.gaussian_kde(Data)
-            except:
-                raise ValueError('The samples provided to the Marginals should be 1D only')
-            self.prior_space = orig_space_dist
-        else:
-            orig_space_dist = chaospy.J(*orig_joints)
-            try:
-                self.prior_space = st.gaussian_kde(orig_space_dist.sample(10000))
-            except:
-                raise ValueError('Parameter values are not valid, please set differently')
-
-        return orig_space_dist, poly_types
-
-    # -------------------------------------------------------------------------
-    def transform(self, X, params=None, method=None):
-        """
-        Transforms the samples via either a Rosenblatt or an isoprobabilistic
-        transformation.
-
-        Parameters
-        ----------
-        X : array of shape (n_samples,n_params)
-            Samples to be transformed.
-        method : string
-            If transformation method is 'user' transform X, else just pass X.
-
-        Returns
-        -------
-        tr_X: array of shape (n_samples,n_params)
-            Transformed samples.
-
-        """
-        # Check for built JDist
-        if not hasattr(self, 'JDist'):
-            raise AttributeError('Call function init_param_space first to create JDist')
-            
-        # Check if X is 2d
-        if X.ndim != 2:
-            raise AttributeError('X should have two dimensions')
-            
-        # Check if size of X matches Marginals
-        if X.shape[1]!= self.ndim:
-            raise AttributeError('The second dimension of X should be the same size as the number of marginals in the InputObj')
-        
-        if self.InputObj.Rosenblatt:
-            self.origJDist, _ = self.build_polytypes(False)
-            if method == 'user':
-                tr_X = self.JDist.inv(self.origJDist.fwd(X.T)).T
-            else:
-                # Inverse to original spcace -- generate sample ED
-                tr_X = self.origJDist.inv(self.JDist.fwd(X.T)).T
-        else:
-            # Transform samples via an isoprobabilistic transformation
-            n_samples, n_params = X.shape
-            Inputs = self.InputObj
-            origJDist = self.JDist
-            poly_types = self.poly_types
-
-            disttypes = []
-            for par_i in range(n_params):
-                disttypes.append(Inputs.Marginals[par_i].dist_type)
-
-            # Pass non-transformed X, if arbitrary PCE is selected.
-            if None in disttypes or self.input_data_given or self.apce:
-                return X
-
-            cdfx = np.zeros((X.shape))
-            tr_X = np.zeros((X.shape))
-
-            for par_i in range(n_params):
-
-                # Extract the parameters of the original space
-                disttype = disttypes[par_i]
-                if disttype is not None:
-                    dist = origJDist[par_i]
-                else:
-                    dist = None
-                polytype = poly_types[par_i]
-                cdf = np.vectorize(lambda x: dist.cdf(x))
-
-                # Extract the parameters of the transformation space based on
-                # polyType
-                if polytype == 'legendre' or disttype == 'uniform':
-                    # Generate Y_Dists based
-                    params_Y = [-1, 1]
-                    dist_Y = st.uniform(loc=params_Y[0],
-                                        scale=params_Y[1]-params_Y[0])
-                    inv_cdf = np.vectorize(lambda x: dist_Y.ppf(x))
-
-                elif polytype == 'hermite' or disttype == 'norm':
-                    params_Y = [0, 1]
-                    dist_Y = st.norm(loc=params_Y[0], scale=params_Y[1])
-                    inv_cdf = np.vectorize(lambda x: dist_Y.ppf(x))
-
-                elif polytype == 'laguerre' or disttype == 'gamma':
-                    if params == None:
-                        raise AttributeError('Additional parameters have to be set for the gamma distribution!')
-                    params_Y = [1, params[1]]
-                    dist_Y = st.gamma(loc=params_Y[0], scale=params_Y[1])
-                    inv_cdf = np.vectorize(lambda x: dist_Y.ppf(x))
-
-                # Compute CDF_x(X)
-                cdfx[:, par_i] = cdf(X[:, par_i])
-
-                # Compute invCDF_y(cdfx)
-                tr_X[:, par_i] = inv_cdf(cdfx[:, par_i])
-
-        return tr_X
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/inputs.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/inputs.py
deleted file mode 100644
index 783e82b05..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/inputs.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-class Input:
-    """
-    A class to define the uncertain input parameters.
-
-    Attributes
-    ----------
-    Marginals : obj
-        Marginal objects. See `inputs.Marginal`.
-    Rosenblatt : bool
-        If Rossenblatt transformation is required for the dependent input
-        parameters.
-
-    Examples
-    -------
-    Marginals can be defined as following:
-
-    >>> Inputs.add_marginals()
-    >>> Inputs.Marginals[0].name = 'X_1'
-    >>> Inputs.Marginals[0].dist_type = 'uniform'
-    >>> Inputs.Marginals[0].parameters = [-5, 5]
-
-    If there is no common data is avaliable, the input data can be given
-    as following:
-
-    >>> Inputs.add_marginals()
-    >>> Inputs.Marginals[0].name = 'X_1'
-    >>> Inputs.Marginals[0].input_data = input_data
-    """
-    poly_coeffs_flag = True
-
-    def __init__(self):
-        self.Marginals = []
-        self.Rosenblatt = False
-
-    def add_marginals(self):
-        """
-        Adds a new Marginal object to the input object.
-
-        Returns
-        -------
-        None.
-
-        """
-        self.Marginals.append(Marginal())
-
-
-# Nested class
-class Marginal:
-    """
-    An object containing the specifications of the marginals for each uncertain
-    parameter.
-
-    Attributes
-    ----------
-    name : string
-        Name of the parameter. The default is `'$x_1$'`.
-    dist_type : string
-        Name of the distribution. The default is `None`.
-    parameters : list
-        List of the parameters corresponding to the distribution type. The
-        default is `None`.
-    input_data : array
-        Available input data. The default is `[]`.
-    moments : list
-        List of the moments.
-    """
-
-    def __init__(self):
-        self.name = '$x_1$'
-        self.dist_type = None
-        self.parameters = None
-        self.input_data = []
-        self.moments = None
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/orthogonal_matching_pursuit.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/orthogonal_matching_pursuit.py
deleted file mode 100644
index 96ef9c1d5..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/orthogonal_matching_pursuit.py
+++ /dev/null
@@ -1,366 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Created on Fri Jul 15 14:08:59 2022
-
-@author: farid
-"""
-import numpy as np
-from sklearn.base import RegressorMixin
-from sklearn.linear_model._base import LinearModel
-from sklearn.utils import check_X_y
-
-
-def corr(x, y):
-    return abs(x.dot(y))/np.sqrt((x**2).sum())
-
-
-class OrthogonalMatchingPursuit(LinearModel, RegressorMixin):
-    '''
-    Regression with Orthogonal Matching Pursuit [1].
-
-    Parameters
-    ----------
-    fit_intercept : boolean, optional (DEFAULT = True)
-        whether to calculate the intercept for this model. If set
-        to false, no intercept will be used in calculations
-        (e.g. data is expected to be already centered).
-
-    copy_X : boolean, optional (DEFAULT = True)
-        If True, X will be copied; else, it may be overwritten.
-
-    verbose : boolean, optional (DEFAULT = FALSE)
-        Verbose mode when fitting the model
-
-    Attributes
-    ----------
-    coef_ : array, shape = (n_features)
-        Coefficients of the regression model (mean of posterior distribution)
-
-    active_ : array, dtype = np.bool, shape = (n_features)
-       True for non-zero coefficients, False otherwise
-
-    References
-    ----------
-    [1] Pati, Y., Rezaiifar, R., Krishnaprasad, P. (1993). Orthogonal matching
-        pursuit: recursive function approximation with application to wavelet
-        decomposition. Proceedings of 27th Asilomar Conference on Signals,
-        Systems and Computers, 40-44.
-    '''
-
-    def __init__(self, fit_intercept=True, normalize=False, copy_X=True,
-                 verbose=False):
-        self.fit_intercept   = fit_intercept
-        self.normalize       = normalize
-        self.copy_X          = copy_X
-        self.verbose         = verbose
-
-    def _preprocess_data(self, X, y):
-        """Center and scale data.
-        Centers data to have mean zero along axis 0. If fit_intercept=False or
-        if the X is a sparse matrix, no centering is done, but normalization
-        can still be applied. The function returns the statistics necessary to
-        reconstruct the input data, which are X_offset, y_offset, X_scale, such
-        that the output
-            X = (X - X_offset) / X_scale
-        X_scale is the L2 norm of X - X_offset.
-        """
-
-        if self.copy_X:
-            X = X.copy(order='K')
-
-        y = np.asarray(y, dtype=X.dtype)
-
-        if self.fit_intercept:
-            X_offset = np.average(X, axis=0)
-            X -= X_offset
-            if self.normalize:
-                X_scale = np.ones(X.shape[1], dtype=X.dtype)
-                std = np.sqrt(np.sum(X**2, axis=0)/(len(X)-1))
-                X_scale[std != 0] = std[std != 0]
-                X /= X_scale
-            else:
-                X_scale = np.ones(X.shape[1], dtype=X.dtype)
-            y_offset = np.mean(y)
-            y = y - y_offset
-        else:
-            X_offset = np.zeros(X.shape[1], dtype=X.dtype)
-            X_scale = np.ones(X.shape[1], dtype=X.dtype)
-            if y.ndim == 1:
-                y_offset = X.dtype.type(0)
-            else:
-                y_offset = np.zeros(y.shape[1], dtype=X.dtype)
-
-        return X, y, X_offset, y_offset, X_scale
-
-    def fit(self, X, y):
-        '''
-        Fits Regression with Orthogonal Matching Pursuit Algorithm.
-
-        Parameters
-        -----------
-        X: {array-like, sparse matrix} of size (n_samples, n_features)
-           Training data, matrix of explanatory variables
-
-        y: array-like of size [n_samples, n_features]
-           Target values
-
-        Returns
-        -------
-        self : object
-            Returns self.
-        '''
-        X, y = check_X_y(X, y, dtype=np.float64, y_numeric=True)
-        n_samples, n_features = X.shape
-
-        X, y, X_mean, y_mean, X_std = self._preprocess_data(X, y)
-        self._x_mean_ = X_mean
-        self._y_mean = y_mean
-        self._x_std = X_std
-
-        # Normalize columns of Psi, so that each column has norm = 1
-        norm_X = np.linalg.norm(X, axis=0)
-        X_norm = X/norm_X
-
-        # Initialize residual vector to full model response and normalize
-        R = y
-        norm_y = np.sqrt(np.dot(y, y))
-        r = y/norm_y
-
-        # Check for constant regressors
-        const_indices = np.where(~np.diff(X, axis=0).any(axis=0))[0]
-        bool_const = not const_indices
-
-        # Start regression using OPM algorithm
-        precision = 0        # Set precision criterion to precision of program
-        early_stop = True
-        cond_early = True    # Initialize condition for early stop
-        ind = []
-        iindx = []           # index of selected columns
-        indtot = np.arange(n_features)  # Full index set for remaining columns
-        kmax = min(n_samples, n_features)  # Maximum number of iterations
-        LOO = np.PINF * np.ones(kmax)  # Store LOO error at each iteration
-        LOOmin = np.PINF               # Initialize minimum value of LOO
-        coeff = np.zeros((n_features, kmax))
-        count = 0
-        k = 0.1                # Percentage of iteration history for early stop
-
-        # Begin iteration over regressors set (Matrix X)
-        while (np.linalg.norm(R) > precision) and (count <= kmax-1) and \
-              ((cond_early or early_stop) ^ ~cond_early):
-
-            # Update index set of columns yet to select
-            if count != 0:
-                indtot = np.delete(indtot, iindx)
-
-            # Find column of X that is most correlated with residual
-            h = abs(np.dot(r, X_norm))
-            iindx = np.argmax(h[indtot])
-            indx = indtot[iindx]
-
-            # initialize with the constant regressor, if it exists in the basis
-            if (count == 0) and bool_const:
-                # overwrite values for iindx and indx
-                iindx = const_indices[0]
-                indx = indtot[iindx]
-
-            # Invert the information matrix at the first iteration, later only
-            # update its value on the basis of the previously inverted one,
-            if count == 0:
-                M = 1 / np.dot(X[:, indx], X[:, indx])
-            else:
-                x = np.dot(X[:, ind].T, X[:, indx])
-                r = np.dot(X[:, indx], X[:, indx])
-                M = self.blockwise_inverse(M, x, x.T, r)
-
-            # Add newly found index to the selected indexes set
-            ind.append(indx)
-
-            # Select regressors subset (Projection subspace)
-            Xpro = X[:, ind]
-
-            # Obtain coefficient by performing OLS
-            TT = np.dot(y, Xpro)
-            beta = np.dot(M, TT)
-            coeff[ind, count] = beta
-
-            # Compute LOO error
-            LOO[count] = self.loo_error(Xpro, M, y, beta)
-
-            # Compute new residual due to new projection
-            R = y - np.dot(Xpro, beta)
-
-            # Normalize residual
-            norm_R = np.sqrt(np.dot(R, R))
-            r = R / norm_R
-
-            # Update counters and early-stop criterions
-            countinf = max(0, int(count-k*kmax))
-            LOOmin = min(LOOmin, LOO[count])
-
-            if count == 0:
-                cond_early = (LOO[0] <= LOOmin)
-            else:
-                cond_early = (min(LOO[countinf:count+1]) <= LOOmin)
-
-            if self.verbose:
-                print(f'Iteration: {count+1}, mod. LOOCV error : '
-                      f'{LOO[count]:.2e}')
-
-            # Update counter
-            count += 1
-
-        # Select projection with smallest cross-validation error
-        countmin = np.argmin(LOO[:-1])
-        self.coef_ = coeff[:, countmin]
-        self.active = coeff[:, countmin] != 0.0
-
-        # set intercept_
-        if self.fit_intercept:
-            self.coef_ = self.coef_ / X_std
-            self.intercept_ = y_mean - np.dot(X_mean, self.coef_.T)
-        else:
-            self.intercept_ = 0.
-
-        return self
-
-    def predict(self, X):
-        '''
-        Computes predictive distribution for test set.
-
-        Parameters
-        -----------
-        X: {array-like, sparse} (n_samples_test, n_features)
-           Test data, matrix of explanatory variables
-
-        Returns
-        -------
-        y_hat: numpy array of size (n_samples_test,)
-               Estimated values of targets on test set (i.e. mean of
-               predictive distribution)
-        '''
-
-        y_hat = np.dot(X, self.coef_) + self.intercept_
-
-        return y_hat
-
-    def loo_error(self, psi, inv_inf_matrix, y, coeffs):
-        """
-        Calculates the corrected LOO error for regression on regressor
-        matrix `psi` that generated the coefficients based on [1] and [2].
-
-        [1] Blatman, G., 2009. Adaptive sparse polynomial chaos expansions for
-            uncertainty propagation and sensitivity analysis (Doctoral
-            dissertation, Clermont-Ferrand 2).
-
-        [2] Blatman, G. and Sudret, B., 2011. Adaptive sparse polynomial chaos
-            expansion based on least angle regression. Journal of computational
-            Physics, 230(6), pp.2345-2367.
-
-        Parameters
-        ----------
-        psi : array of shape (n_samples, n_feature)
-            Orthogonal bases evaluated at the samples.
-        inv_inf_matrix : array
-            Inverse of the information matrix.
-        y : array of shape (n_samples, )
-            Targets.
-        coeffs : array
-            Computed regresssor cofficients.
-
-        Returns
-        -------
-        loo_error : float
-            Modified LOOCV error.
-
-        """
-
-        # NrEvaluation (Size of experimental design)
-        N, P = psi.shape
-
-        # h factor (the full matrix is not calculated explicitly,
-        # only the trace is, to save memory)
-        PsiM = np.dot(psi, inv_inf_matrix)
-
-        h = np.sum(np.multiply(PsiM, psi), axis=1, dtype=np.longdouble)
-
-        # ------ Calculate Error Loocv for each measurement point ----
-        # Residuals
-        residual = np.dot(psi, coeffs) - y
-
-        # Variance
-        varY = np.var(y)
-
-        if varY == 0:
-            norm_emp_error = 0
-            loo_error = 0
-        else:
-            norm_emp_error = np.mean(residual**2)/varY
-
-            loo_error = np.mean(np.square(residual / (1-h))) / varY
-
-            # if there are NaNs, just return an infinite LOO error (this
-            # happens, e.g., when a strongly underdetermined problem is solved)
-            if np.isnan(loo_error):
-                loo_error = np.inf
-
-        # Corrected Error for over-determined system
-        tr_M = np.trace(np.atleast_2d(inv_inf_matrix))
-        if tr_M < 0 or abs(tr_M) > 1e6:
-            tr_M = np.trace(np.linalg.pinv(np.dot(psi.T, psi)))
-
-        # Over-determined system of Equation
-        if N > P:
-            T_factor = N/(N-P) * (1 + tr_M)
-
-        # Under-determined system of Equation
-        else:
-            T_factor = np.inf
-
-        loo_error *= T_factor
-
-        return loo_error
-
-    def blockwise_inverse(self, Ainv, B, C, D):
-        """
-        non-singular square matrix M defined as M = [[A B]; [C D]] .
-        B, C and D can have any dimension, provided their combination defines
-        a square matrix M.
-
-        Parameters
-        ----------
-        Ainv : float or array
-            inverse of the square-submatrix A.
-        B : float or array
-            Information matrix with all new regressor.
-        C : float or array
-            Transpose of B.
-        D : float or array
-            Information matrix with all selected regressors.
-
-        Returns
-        -------
-        M : array
-            Inverse of the information matrix.
-
-        """
-        if np.isscalar(D):
-            # Inverse of D
-            Dinv = 1/D
-            # Schur complement
-            SCinv = 1/(D - np.dot(C, np.dot(Ainv, B[:, None])))[0]
-        else:
-            # Inverse of D
-            Dinv = np.linalg.solve(D, np.eye(D.shape))
-            # Schur complement
-            SCinv = np.linalg.solve((D - C*Ainv*B), np.eye(D.shape))
-
-        T1 = np.dot(Ainv, np.dot(B[:, None], SCinv))
-        T2 = np.dot(C, Ainv)
-
-        # Assemble the inverse matrix
-        M = np.vstack((
-            np.hstack((Ainv+T1*T2, -T1)),
-            np.hstack((-(SCinv)*T2, SCinv))
-            ))
-        return M
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/reg_fast_ard.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/reg_fast_ard.py
deleted file mode 100644
index e6883a3ed..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/reg_fast_ard.py
+++ /dev/null
@@ -1,475 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Created on Tue Mar 24 19:41:45 2020
-
-@author: farid
-"""
-import numpy as np
-from scipy.linalg import solve_triangular
-from numpy.linalg import LinAlgError
-from sklearn.base import RegressorMixin
-from sklearn.linear_model._base import LinearModel
-import warnings
-from sklearn.utils import check_X_y
-from scipy.linalg import pinvh
-
-
-def update_precisions(Q,S,q,s,A,active,tol,n_samples,clf_bias):
-    '''
-    Selects one feature to be added/recomputed/deleted to model based on
-    effect it will have on value of log marginal likelihood.
-    '''
-    # initialise vector holding changes in log marginal likelihood
-    deltaL = np.zeros(Q.shape[0])
-
-    # identify features that can be added , recomputed and deleted in model
-    theta        =  q**2 - s
-    add          =  (theta > 0) * (active == False)
-    recompute    =  (theta > 0) * (active == True)
-    delete       = ~(add + recompute)
-
-    # compute sparsity & quality parameters corresponding to features in
-    # three groups identified above
-    Qadd,Sadd      = Q[add], S[add]
-    Qrec,Srec,Arec = Q[recompute], S[recompute], A[recompute]
-    Qdel,Sdel,Adel = Q[delete], S[delete], A[delete]
-
-    # compute new alpha's (precision parameters) for features that are
-    # currently in model and will be recomputed
-    Anew           = s[recompute]**2/ ( theta[recompute] + np.finfo(np.float32).eps)
-    delta_alpha    = (1./Anew - 1./Arec)
-
-    # compute change in log marginal likelihood
-    deltaL[add]       = ( Qadd**2 - Sadd ) / Sadd + np.log(Sadd/Qadd**2 )
-    deltaL[recompute] = Qrec**2 / (Srec + 1. / delta_alpha) - np.log(1 + Srec*delta_alpha)
-    deltaL[delete]    = Qdel**2 / (Sdel - Adel) - np.log(1 - Sdel / Adel)
-    deltaL            = deltaL  / n_samples
-
-    # find feature which caused largest change in likelihood
-    feature_index = np.argmax(deltaL)
-
-    # no deletions or additions
-    same_features  = np.sum( theta[~recompute] > 0) == 0
-
-    # changes in precision for features already in model is below threshold
-    no_delta       = np.sum( abs( Anew - Arec ) > tol ) == 0
-    # if same_features: print(abs( Anew - Arec ))
-    # print("same_features = {} no_delta = {}".format(same_features,no_delta))
-    # check convergence: if no features to add or delete and small change in
-    #                    precision for current features then terminate
-    converged = False
-    if same_features and no_delta:
-        converged = True
-        return [A,converged]
-
-    # if not converged update precision parameter of weights and return
-    if theta[feature_index] > 0:
-        A[feature_index] = s[feature_index]**2 / theta[feature_index]
-        if active[feature_index] == False:
-            active[feature_index] = True
-    else:
-        # at least two active features
-        if active[feature_index] == True and np.sum(active) >= 2:
-            # do not remove bias term in classification
-            # (in regression it is factored in through centering)
-            if not (feature_index == 0 and clf_bias):
-                active[feature_index] = False
-                A[feature_index]      = np.PINF
-
-    return [A,converged]
-
-
-class RegressionFastARD(LinearModel, RegressorMixin):
-    '''
-    Regression with Automatic Relevance Determination (Fast Version uses
-    Sparse Bayesian Learning)
-    https://github.com/AmazaspShumik/sklearn-bayes/blob/master/skbayes/rvm_ard_models/fast_rvm.py
-
-    Parameters
-    ----------
-    n_iter: int, optional (DEFAULT = 100)
-        Maximum number of iterations
-
-    start: list, optional (DEFAULT = None)
-        Initial selected features.
-
-    tol: float, optional (DEFAULT = 1e-3)
-        If absolute change in precision parameter for weights is below threshold
-        algorithm terminates.
-
-    fit_intercept : boolean, optional (DEFAULT = True)
-        whether to calculate the intercept for this model. If set
-        to false, no intercept will be used in calculations
-        (e.g. data is expected to be already centered).
-
-    copy_X : boolean, optional (DEFAULT = True)
-        If True, X will be copied; else, it may be overwritten.
-
-    compute_score : bool, default=False
-        If True, compute the log marginal likelihood at each iteration of the
-        optimization.
-
-    verbose : boolean, optional (DEFAULT = FALSE)
-        Verbose mode when fitting the model
-
-    Attributes
-    ----------
-    coef_ : array, shape = (n_features)
-        Coefficients of the regression model (mean of posterior distribution)
-
-    alpha_ : float
-       estimated precision of the noise
-
-    active_ : array, dtype = np.bool, shape = (n_features)
-       True for non-zero coefficients, False otherwise
-
-    lambda_ : array, shape = (n_features)
-       estimated precisions of the coefficients
-
-    sigma_ : array, shape = (n_features, n_features)
-        estimated covariance matrix of the weights, computed only
-        for non-zero coefficients
-
-    scores_ : array-like of shape (n_iter_+1,)
-        If computed_score is True, value of the log marginal likelihood (to be
-        maximized) at each iteration of the optimization.
-
-    References
-    ----------
-    [1] Fast marginal likelihood maximisation for sparse Bayesian models
-    (Tipping & Faul 2003) (http://www.miketipping.com/papers/met-fastsbl.pdf)
-    [2] Analysis of sparse Bayesian learning (Tipping & Faul 2001)
-        (http://www.miketipping.com/abstracts.htm#Faul:NIPS01)
-    '''
-
-    def __init__(self, n_iter=300, start=None, tol=1e-3, fit_intercept=True,
-                 normalize=False, copy_X=True, compute_score=False, verbose=False):
-        self.n_iter          = n_iter
-        self.start           = start
-        self.tol             = tol
-        self.scores_         = list()
-        self.fit_intercept   = fit_intercept
-        self.normalize       = normalize
-        self.copy_X          = copy_X
-        self.compute_score   = compute_score
-        self.verbose         = verbose
-
-    def _preprocess_data(self, X, y):
-        """Center and scale data.
-        Centers data to have mean zero along axis 0. If fit_intercept=False or
-        if the X is a sparse matrix, no centering is done, but normalization
-        can still be applied. The function returns the statistics necessary to
-        reconstruct the input data, which are X_offset, y_offset, X_scale, such
-        that the output
-            X = (X - X_offset) / X_scale
-        X_scale is the L2 norm of X - X_offset.
-        """
-
-        if self.copy_X:
-            X = X.copy(order='K')
-
-        y = np.asarray(y, dtype=X.dtype)
-
-        if self.fit_intercept:
-            X_offset = np.average(X, axis=0)
-            X -= X_offset
-            if self.normalize:
-                X_scale = np.ones(X.shape[1], dtype=X.dtype)
-                std = np.sqrt(np.sum(X**2, axis=0)/(len(X)-1))
-                X_scale[std != 0] = std[std != 0]
-                X /= X_scale
-            else:
-                X_scale = np.ones(X.shape[1], dtype=X.dtype)
-            y_offset = np.mean(y)
-            y = y - y_offset
-        else:
-            X_offset = np.zeros(X.shape[1], dtype=X.dtype)
-            X_scale = np.ones(X.shape[1], dtype=X.dtype)
-            if y.ndim == 1:
-                y_offset = X.dtype.type(0)
-            else:
-                y_offset = np.zeros(y.shape[1], dtype=X.dtype)
-
-        return X, y, X_offset, y_offset, X_scale
-
-    def fit(self, X, y):
-        '''
-        Fits ARD Regression with Sequential Sparse Bayes Algorithm.
-
-        Parameters
-        -----------
-        X: {array-like, sparse matrix} of size (n_samples, n_features)
-           Training data, matrix of explanatory variables
-
-        y: array-like of size [n_samples, n_features]
-           Target values
-
-        Returns
-        -------
-        self : object
-            Returns self.
-        '''
-        X, y = check_X_y(X, y, dtype=np.float64, y_numeric=True)
-        n_samples, n_features = X.shape
-
-        X, y, X_mean, y_mean, X_std = self._preprocess_data(X, y)
-        self._x_mean_ = X_mean
-        self._y_mean = y_mean
-        self._x_std = X_std
-
-        #  precompute X'*Y , X'*X for faster iterations & allocate memory for
-        #  sparsity & quality vectors
-        XY = np.dot(X.T, y)
-        XX = np.dot(X.T, X)
-        XXd = np.diag(XX)
-
-        #  initialise precision of noise & and coefficients
-        var_y = np.var(y)
-
-        # check that variance is non zero !!!
-        if var_y == 0:
-            beta = 1e-2
-            self.var_y = True
-        else:
-            beta = 1. / np.var(y)
-            self.var_y = False
-
-        A = np.PINF * np.ones(n_features)
-        active = np.zeros(n_features, dtype=np.bool)
-
-        if self.start is not None and not hasattr(self, 'active_'):
-            start = self.start
-            # start from a given start basis vector
-            proj = XY**2 / XXd
-            active[start] = True
-            A[start] = XXd[start]/(proj[start] - var_y)
-
-        else:
-            # in case of almost perfect multicollinearity between some features
-            # start from feature 0
-            if np.sum(XXd - X_mean**2 < np.finfo(np.float32).eps) > 0:
-                A[0] = np.finfo(np.float16).eps
-                active[0] = True
-
-            else:
-                # start from a single basis vector with largest projection on
-                # targets
-                proj = XY**2 / XXd
-                start = np.argmax(proj)
-                active[start] = True
-                A[start] = XXd[start]/(proj[start] - var_y +
-                                       np.finfo(np.float32).eps)
-
-        warning_flag = 0
-        scores_ = []
-        for i in range(self.n_iter):
-            # Handle variance zero
-            if self.var_y:
-                A[0] = y_mean
-                active[0] = True
-                converged = True
-                break
-
-            XXa = XX[active, :][:, active]
-            XYa = XY[active]
-            Aa = A[active]
-
-            # mean & covariance of posterior distribution
-            Mn, Ri, cholesky = self._posterior_dist(Aa, beta, XXa, XYa)
-            if cholesky:
-                Sdiag = np.sum(Ri**2, 0)
-            else:
-                Sdiag = np.copy(np.diag(Ri))
-                warning_flag += 1
-
-            # raise warning in case cholesky fails
-            if warning_flag == 1:
-                warnings.warn(("Cholesky decomposition failed! Algorithm uses "
-                               "pinvh, which is significantly slower. If you "
-                               "use RVR it is advised to change parameters of "
-                               "the kernel!"))
-
-            # compute quality & sparsity parameters
-            s, q, S, Q = self._sparsity_quality(XX, XXd, XY, XYa, Aa, Ri,
-                                                active, beta, cholesky)
-
-            # update precision parameter for noise distribution
-            rss = np.sum((y - np.dot(X[:, active], Mn))**2)
-
-            # if near perfect fit , then terminate
-            if (rss / n_samples/var_y) < self.tol:
-                warnings.warn('Early termination due to near perfect fit')
-                converged = True
-                break
-            beta = n_samples - np.sum(active) + np.sum(Aa * Sdiag)
-            beta /= rss
-            # beta /= (rss + np.finfo(np.float32).eps)
-
-            # update precision parameters of coefficients
-            A, converged = update_precisions(Q, S, q, s, A, active, self.tol,
-                                             n_samples, False)
-
-            if self.compute_score:
-                scores_.append(self.log_marginal_like(XXa, XYa, Aa, beta))
-
-            if self.verbose:
-                print(('Iteration: {0}, number of features '
-                       'in the model: {1}').format(i, np.sum(active)))
-
-            if converged or i == self.n_iter - 1:
-                if converged and self.verbose:
-                    print('Algorithm converged!')
-                break
-
-        # after last update of alpha & beta update parameters
-        # of posterior distribution
-        XXa, XYa, Aa = XX[active, :][:, active], XY[active], A[active]
-        Mn, Sn, cholesky = self._posterior_dist(Aa, beta, XXa, XYa, True)
-        self.coef_ = np.zeros(n_features)
-        self.coef_[active] = Mn
-        self.sigma_ = Sn
-        self.active_ = active
-        self.lambda_ = A
-        self.alpha_ = beta
-        self.converged = converged
-        if self.compute_score:
-            self.scores_ = np.array(scores_)
-
-        # set intercept_
-        if self.fit_intercept:
-            self.coef_ = self.coef_ / X_std
-            self.intercept_ = y_mean - np.dot(X_mean, self.coef_.T)
-        else:
-            self.intercept_ = 0.
-        return self
-
-    def log_marginal_like(self, XXa, XYa, Aa, beta):
-        """Computes the log of the marginal likelihood."""
-        N, M = XXa.shape
-        A = np.diag(Aa)
-
-        Mn, sigma_, cholesky = self._posterior_dist(Aa, beta, XXa, XYa,
-                                                    full_covar=True)
-
-        C = sigma_ + np.dot(np.dot(XXa.T, np.linalg.pinv(A)), XXa)
-
-        score = np.dot(np.dot(XYa.T, np.linalg.pinv(C)), XYa) +\
-            np.log(np.linalg.det(C)) + N * np.log(2 * np.pi)
-
-        return -0.5 * score
-
-    def predict(self, X, return_std=False):
-        '''
-        Computes predictive distribution for test set.
-        Predictive distribution for each data point is one dimensional
-        Gaussian and therefore is characterised by mean and variance based on
-        Ref.[1] Section 3.3.2.
-
-        Parameters
-        -----------
-        X: {array-like, sparse} (n_samples_test, n_features)
-           Test data, matrix of explanatory variables
-
-        Returns
-        -------
-        : list of length two [y_hat, var_hat]
-
-             y_hat: numpy array of size (n_samples_test,)
-                    Estimated values of targets on test set (i.e. mean of
-                    predictive distribution)
-
-                var_hat: numpy array of size (n_samples_test,)
-                    Variance of predictive distribution
-        References
-        ----------
-        [1] Bishop, C. M. (2006). Pattern recognition and machine learning.
-        springer.
-        '''
-
-        y_hat = np.dot(X, self.coef_) + self.intercept_
-
-        if return_std:
-            # Handle the zero variance case
-            if self.var_y:
-                return y_hat, np.zeros_like(y_hat)
-
-            if self.normalize:
-                X -= self._x_mean_[self.active_]
-                X /= self._x_std[self.active_]
-            var_hat = 1./self.alpha_
-            var_hat += np.sum(X.dot(self.sigma_) * X, axis=1)
-            std_hat = np.sqrt(var_hat)
-            return y_hat, std_hat
-        else:
-            return y_hat
-
-    def _posterior_dist(self, A, beta, XX, XY, full_covar=False):
-        '''
-        Calculates mean and covariance matrix of posterior distribution
-        of coefficients.
-        '''
-        # compute precision matrix for active features
-        Sinv = beta * XX
-        np.fill_diagonal(Sinv, np.diag(Sinv) + A)
-        cholesky = True
-
-        # try cholesky, if it fails go back to pinvh
-        try:
-            # find posterior mean : R*R.T*mean = beta*X.T*Y
-            # solve(R*z = beta*X.T*Y) =>find z=> solve(R.T*mean = z)=>find mean
-            R = np.linalg.cholesky(Sinv)
-            Z = solve_triangular(R, beta*XY, check_finite=True, lower=True)
-            Mn = solve_triangular(R.T, Z, check_finite=True, lower=False)
-
-            # invert lower triangular matrix from cholesky decomposition
-            Ri = solve_triangular(R, np.eye(A.shape[0]), check_finite=False,
-                                  lower=True)
-            if full_covar:
-                Sn = np.dot(Ri.T, Ri)
-                return Mn, Sn, cholesky
-            else:
-                return Mn, Ri, cholesky
-        except LinAlgError:
-            cholesky = False
-            Sn = pinvh(Sinv)
-            Mn = beta*np.dot(Sinv, XY)
-            return Mn, Sn, cholesky
-
-    def _sparsity_quality(self, XX, XXd, XY, XYa, Aa, Ri, active, beta, cholesky):
-        '''
-        Calculates sparsity and quality parameters for each feature
-
-        Theoretical Note:
-        -----------------
-        Here we used Woodbury Identity for inverting covariance matrix
-        of target distribution
-        C    = 1/beta + 1/alpha * X' * X
-        C^-1 = beta - beta^2 * X * Sn * X'
-        '''
-        bxy = beta*XY
-        bxx = beta*XXd
-        if cholesky:
-            # here Ri is inverse of lower triangular matrix obtained from
-            # cholesky decomp
-            xxr = np.dot(XX[:, active], Ri.T)
-            rxy = np.dot(Ri, XYa)
-            S = bxx - beta**2 * np.sum(xxr**2, axis=1)
-            Q = bxy - beta**2 * np.dot(xxr, rxy)
-        else:
-            # here Ri is covariance matrix
-            XXa = XX[:, active]
-            XS = np.dot(XXa, Ri)
-            S = bxx - beta**2 * np.sum(XS*XXa, 1)
-            Q = bxy - beta**2 * np.dot(XS, XYa)
-        # Use following:
-        # (EQ 1) q = A*Q/(A - S) ; s = A*S/(A-S)
-        # so if A = np.PINF q = Q, s = S
-        qi = np.copy(Q)
-        si = np.copy(S)
-        # If A is not np.PINF, then it should be 'active' feature => use (EQ 1)
-        Qa, Sa = Q[active], S[active]
-        qi[active] = Aa * Qa / (Aa - Sa)
-        si[active] = Aa * Sa / (Aa - Sa)
-
-        return [si, qi, S, Q]
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/reg_fast_laplace.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/reg_fast_laplace.py
deleted file mode 100644
index 7fdcb5cf6..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/reg_fast_laplace.py
+++ /dev/null
@@ -1,452 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-import numpy as np
-from sklearn.utils import as_float_array
-from sklearn.model_selection import KFold
-
-
-class RegressionFastLaplace():
-    '''
-    Sparse regression with Bayesian Compressive Sensing as described in Alg. 1
-    (Fast Laplace) of Ref.[1], which updated formulas from [2].
-
-    sigma2: noise precision (sigma^2)
-    nu fixed to 0
-
-    uqlab/lib/uq_regression/BCS/uq_bsc.m
-
-    Parameters
-    ----------
-    n_iter: int, optional (DEFAULT = 1000)
-        Maximum number of iterations
-
-    tol: float, optional (DEFAULT = 1e-7)
-        If absolute change in precision parameter for weights is below
-        threshold algorithm terminates.
-
-    fit_intercept : boolean, optional (DEFAULT = True)
-        whether to calculate the intercept for this model. If set
-        to false, no intercept will be used in calculations
-        (e.g. data is expected to be already centered).
-
-    copy_X : boolean, optional (DEFAULT = True)
-        If True, X will be copied; else, it may be overwritten.
-
-    verbose : boolean, optional (DEFAULT = FALSE)
-        Verbose mode when fitting the model
-
-    Attributes
-    ----------
-    coef_ : array, shape = (n_features)
-        Coefficients of the regression model (mean of posterior distribution)
-
-    alpha_ : float
-       estimated precision of the noise
-
-    active_ : array, dtype = np.bool, shape = (n_features)
-       True for non-zero coefficients, False otherwise
-
-    lambda_ : array, shape = (n_features)
-       estimated precisions of the coefficients
-
-    sigma_ : array, shape = (n_features, n_features)
-        estimated covariance matrix of the weights, computed only
-        for non-zero coefficients
-
-    References
-    ----------
-    [1] Babacan, S. D., Molina, R., & Katsaggelos, A. K. (2009). Bayesian
-        compressive sensing using Laplace priors. IEEE Transactions on image
-        processing, 19(1), 53-63.
-    [2] Fast marginal likelihood maximisation for sparse Bayesian models
-        (Tipping & Faul 2003).
-        (http://www.miketipping.com/papers/met-fastsbl.pdf)
-    '''
-
-    def __init__(self, n_iter=1000, n_Kfold=10, tol=1e-7, fit_intercept=False,
-                 bias_term=True, copy_X=True, verbose=False):
-        self.n_iter = n_iter
-        self.n_Kfold = n_Kfold
-        self.tol = tol
-        self.fit_intercept = fit_intercept
-        self.bias_term = bias_term
-        self.copy_X = copy_X
-        self.verbose = verbose
-
-    def _center_data(self, X, y):
-        ''' Centers data'''
-        X = as_float_array(X, copy = self.copy_X)
-
-        # normalisation should be done in preprocessing!
-        X_std = np.ones(X.shape[1], dtype=X.dtype)
-        if self.fit_intercept:
-            X_mean = np.average(X, axis=0)
-            y_mean = np.average(y, axis=0)
-            X -= X_mean
-            y -= y_mean
-        else:
-            X_mean = np.zeros(X.shape[1], dtype=X.dtype)
-            y_mean = 0. if y.ndim == 1 else np.zeros(y.shape[1], dtype=X.dtype)
-        return X, y, X_mean, y_mean, X_std
-
-    def fit(self, X, y):
-
-        k_fold = KFold(n_splits=self.n_Kfold)
-
-        varY = np.var(y, ddof=1) if np.var(y, ddof=1) != 0 else 1.0
-        sigma2s = len(y)*varY*(10**np.linspace(-16, -1, self.n_Kfold))
-
-        errors = np.zeros((len(sigma2s), self.n_Kfold))
-        for s, sigma2 in enumerate(sigma2s):
-            for k, (train, test) in enumerate(k_fold.split(X, y)):
-                self.fit_(X[train], y[train], sigma2)
-                errors[s, k] = np.linalg.norm(
-                    y[test] - self.predict(X[test])
-                    )**2/len(test)
-
-        KfCVerror = np.sum(errors, axis=1)/self.n_Kfold/varY
-        i_minCV = np.argmin(KfCVerror)
-
-        self.kfoldCVerror = np.min(KfCVerror)
-
-        return self.fit_(X, y, sigma2s[i_minCV])
-
-    def fit_(self, X, y, sigma2):
-
-        N, P = X.shape
-        # n_samples, n_features = X.shape
-
-        X, y, X_mean, y_mean, X_std = self._center_data(X, y)
-        self._x_mean_ = X_mean
-        self._y_mean = y_mean
-        self._x_std = X_std
-
-        # check that variance is non zero !!!
-        if np.var(y) == 0:
-            self.var_y = True
-        else:
-            self.var_y = False
-        beta = 1./sigma2
-
-        #  precompute X'*Y , X'*X for faster iterations & allocate memory for
-        #  sparsity & quality vectors X=Psi
-        PsiTY = np.dot(X.T, y)
-        PsiTPsi = np.dot(X.T, X)
-        XXd = np.diag(PsiTPsi)
-
-        # initialize with constant regressor, or if that one does not exist,
-        # with the one that has the largest correlation with Y
-        ind_global_to_local = np.zeros(P, dtype=np.int32)
-
-        # identify constant regressors
-        constidx = np.where(~np.diff(X, axis=0).all(axis=0))[0]
-
-        if self.bias_term and constidx.size != 0:
-            ind_start = constidx[0]
-            ind_global_to_local[ind_start] = True
-        else:
-            # start from a single basis vector with largest projection on
-            # targets
-            proj = np.divide(np.square(PsiTY), XXd)
-            ind_start = np.argmax(proj)
-            ind_global_to_local[ind_start] = True
-
-        num_active = 1
-        active_indices = [ind_start]
-        deleted_indices = []
-        bcs_path = [ind_start]
-        gamma = np.zeros(P)
-        # for the initial value of gamma(ind_start), use the RVM formula
-        #   gamma = (q^2 - s) / (s^2)
-        # and the fact that initially s = S = beta*Psi_i'*Psi_i and q = Q =
-        # beta*Psi_i'*Y
-        gamma[ind_start] = np.square(PsiTY[ind_start])
-        gamma[ind_start] -= sigma2 * PsiTPsi[ind_start, ind_start]
-        gamma[ind_start] /= np.square(PsiTPsi[ind_start, ind_start])
-
-        Sigma = 1. / (beta * PsiTPsi[ind_start, ind_start]
-                      + 1./gamma[ind_start])
-
-        mu = Sigma * PsiTY[ind_start] * beta
-        tmp1 = beta * PsiTPsi[ind_start]
-        S = beta * np.diag(PsiTPsi).T - Sigma * np.square(tmp1)
-        Q = beta * PsiTY.T - mu*(tmp1)
-
-        tmp2 = np.ones(P)  # alternative computation for the initial s,q
-        q0tilde = PsiTY[ind_start]
-        s0tilde = PsiTPsi[ind_start, ind_start]
-        tmp2[ind_start] = s0tilde / (q0tilde**2) / beta
-        s = np.divide(S, tmp2)
-        q = np.divide(Q, tmp2)
-        Lambda = 2*(num_active - 1) / np.sum(gamma)
-
-        Delta_L_max = []
-        for i in range(self.n_iter):
-            # Handle variance zero
-            if self.var_y:
-                mu = np.mean(y)
-                break
-
-            if self.verbose:
-                print('    lambda = {0:.6e}\n'.format(Lambda))
-
-            # Calculate the potential updated value of each gamma[i]
-            if Lambda == 0.0:  # RVM
-                gamma_potential = np.multiply((
-                    (q**2 - s) > Lambda),
-                    np.divide(q**2 - s, s**2)
-                    )
-            else:
-                a = Lambda * s**2
-                b = s**2 + 2*Lambda*s
-                c = Lambda + s - q**2
-                gamma_potential = np.multiply(
-                    (c < 0), np.divide(
-                        -b + np.sqrt(b**2 - 4*np.multiply(a, c)), 2*a)
-                    )
-
-            l_gamma = - np.log(np.absolute(1 + np.multiply(gamma, s)))
-            l_gamma += np.divide(np.multiply(q**2, gamma),
-                                 (1 + np.multiply(gamma, s)))
-            l_gamma -= Lambda*gamma  # omitted the factor 1/2
-
-            # Contribution of each updated gamma(i) to L(gamma)
-            l_gamma_potential = - np.log(
-                np.absolute(1 + np.multiply(gamma_potential, s))
-                )
-            l_gamma_potential += np.divide(
-                np.multiply(q**2, gamma_potential),
-                (1 + np.multiply(gamma_potential, s))
-                )
-            # omitted the factor 1/2
-            l_gamma_potential -= Lambda*gamma_potential
-
-            # Check how L(gamma) would change if we replaced gamma(i) by the
-            # updated gamma_potential(i), for each i separately
-            Delta_L_potential = l_gamma_potential - l_gamma
-
-            # deleted indices should not be chosen again
-            if len(deleted_indices) != 0:
-                values = -np.inf * np.ones(len(deleted_indices))
-                Delta_L_potential[deleted_indices] = values
-
-            Delta_L_max.append(np.nanmax(Delta_L_potential))
-            ind_L_max = np.nanargmax(Delta_L_potential)
-
-            # in case there is only 1 regressor in the model and it would now
-            # be deleted
-            if len(active_indices) == 1 and ind_L_max == active_indices[0] \
-               and gamma_potential[ind_L_max] == 0.0:
-                Delta_L_potential[ind_L_max] = -np.inf
-                Delta_L_max[i] = np.max(Delta_L_potential)
-                ind_L_max = np.argmax(Delta_L_potential)
-
-            # If L did not change significantly anymore, break
-            if Delta_L_max[i] <= 0.0 or\
-                    (i > 0 and all(np.absolute(Delta_L_max[i-1:])
-                                   < sum(Delta_L_max)*self.tol)) or \
-                    (i > 0 and all(np.diff(bcs_path)[i-1:] == 0.0)):
-                if self.verbose:
-                    print('Increase in L: {0:.6e} (eta = {1:.3e})\
-                          -- break\n'.format(Delta_L_max[i], self.tol))
-                break
-
-            # Print information
-            if self.verbose:
-                print('    Delta L = {0:.6e} \n'.format(Delta_L_max[i]))
-
-            what_changed = int(gamma[ind_L_max] == 0.0)
-            what_changed -= int(gamma_potential[ind_L_max] == 0.0)
-
-            # Print information
-            if self.verbose:
-                if what_changed < 0:
-                    print(f'{i+1} - Remove regressor #{ind_L_max+1}..\n')
-                elif what_changed == 0:
-                    print(f'{i+1} - Recompute regressor #{ind_L_max+1}..\n')
-                else:
-                    print(f'{i+1} - Add regressor #{ind_L_max+1}..\n')
-
-            # --- Update all quantities ----
-            if what_changed == 1:
-                # adding a regressor
-
-                # update gamma
-                gamma[ind_L_max] = gamma_potential[ind_L_max]
-
-                Sigma_ii = 1.0 / (1.0/gamma[ind_L_max] + S[ind_L_max])
-                try:
-                    x_i = np.matmul(
-                        Sigma, PsiTPsi[active_indices, ind_L_max].reshape(-1, 1)
-                        )
-                except ValueError:
-                    x_i = Sigma * PsiTPsi[active_indices, ind_L_max]
-                tmp_1 = - (beta * Sigma_ii) * x_i
-                Sigma = np.vstack(
-                    (np.hstack(((beta**2 * Sigma_ii) * np.dot(x_i, x_i.T)
-                                + Sigma, tmp_1)), np.append(tmp_1.T, Sigma_ii))
-                    )
-                mu_i = Sigma_ii * Q[ind_L_max]
-                mu = np.vstack((mu - (beta * mu_i) * x_i, mu_i))
-
-                tmp2_1 = PsiTPsi[:, ind_L_max] - beta * np.squeeze(
-                    np.matmul(PsiTPsi[:, active_indices], x_i)
-                    )
-                if i == 0:
-                    tmp2_1[0] /= 2
-                tmp2 = beta * tmp2_1.T
-                S = S - Sigma_ii * np.square(tmp2)
-                Q = Q - mu_i * tmp2
-
-                num_active += 1
-                ind_global_to_local[ind_L_max] = num_active
-                active_indices.append(ind_L_max)
-                bcs_path.append(ind_L_max)
-
-            elif what_changed == 0:
-                # recomputation
-                # zero if regressor has not been chosen yet
-                if not ind_global_to_local[ind_L_max]:
-                    raise Exception('Cannot recompute index{0} -- not yet\
-                                    part of the model!'.format(ind_L_max))
-                Sigma = np.atleast_2d(Sigma)
-                mu = np.atleast_2d(mu)
-                gamma_i_new = gamma_potential[ind_L_max]
-                gamma_i_old = gamma[ind_L_max]
-                # update gamma
-                gamma[ind_L_max] = gamma_potential[ind_L_max]
-
-                # index of regressor in Sigma
-                local_ind = ind_global_to_local[ind_L_max]-1
-
-                kappa_i = (1.0/gamma_i_new - 1.0/gamma_i_old)
-                kappa_i = 1.0 / kappa_i
-                kappa_i += Sigma[local_ind, local_ind]
-                kappa_i = 1 / kappa_i
-                Sigma_i_col = Sigma[:, local_ind]
-
-                Sigma = Sigma - kappa_i * (Sigma_i_col * Sigma_i_col.T)
-                mu_i = mu[local_ind]
-                mu = mu - (kappa_i * mu_i) * Sigma_i_col[:, None]
-
-                tmp1 = beta * np.dot(
-                    Sigma_i_col.reshape(1, -1), PsiTPsi[active_indices])[0]
-                S = S + kappa_i * np.square(tmp1)
-                Q = Q + (kappa_i * mu_i) * tmp1
-
-                # no change in active_indices or ind_global_to_local
-                bcs_path.append(ind_L_max + 0.1)
-
-            elif what_changed == -1:
-                gamma[ind_L_max] = 0
-
-                # index of regressor in Sigma
-                local_ind = ind_global_to_local[ind_L_max]-1
-
-                Sigma_ii_inv = 1. / Sigma[local_ind, local_ind]
-                Sigma_i_col = Sigma[:, local_ind]
-
-                Sigma = Sigma - Sigma_ii_inv * (Sigma_i_col * Sigma_i_col.T)
-
-                Sigma = np.delete(
-                    np.delete(Sigma, local_ind, axis=0), local_ind, axis=1)
-
-                mu = mu - (mu[local_ind] * Sigma_ii_inv) * Sigma_i_col[:, None]
-                mu = np.delete(mu, local_ind, axis=0)
-
-                tmp1 = beta * np.dot(Sigma_i_col, PsiTPsi[active_indices])
-                S = S + Sigma_ii_inv * np.square(tmp1)
-                Q = Q + (mu_i * Sigma_ii_inv) * tmp1
-
-                num_active -= 1
-                ind_global_to_local[ind_L_max] = 0.0
-                v = ind_global_to_local[ind_global_to_local > local_ind] - 1
-                ind_global_to_local[ind_global_to_local > local_ind] = v
-                del active_indices[local_ind]
-                deleted_indices.append(ind_L_max)
-                # and therefore ineligible
-                bcs_path.append(-ind_L_max)
-
-            # same for all three cases
-            tmp3 = 1 - np.multiply(gamma, S)
-            s = np.divide(S, tmp3)
-            q = np.divide(Q, tmp3)
-
-            # Update lambda
-            Lambda = 2*(num_active - 1) / np.sum(gamma)
-
-        # Prepare the result object
-        self.coef_ = np.zeros(P)
-        self.coef_[active_indices] = np.squeeze(mu)
-        self.sigma_ = Sigma
-        self.active_ = active_indices
-        self.gamma = gamma
-        self.Lambda = Lambda
-        self.beta = beta
-        self.bcs_path = bcs_path
-
-        # set intercept_
-        if self.fit_intercept:
-            self.coef_ = self.coef_ / X_std
-            self.intercept_ = y_mean - np.dot(X_mean, self.coef_.T)
-        else:
-            self.intercept_ = 0.
-
-        return self
-
-    def predict(self, X, return_std=False):
-        '''
-        Computes predictive distribution for test set.
-        Predictive distribution for each data point is one dimensional
-        Gaussian and therefore is characterised by mean and variance based on
-        Ref.[1] Section 3.3.2.
-
-        Parameters
-        -----------
-        X: {array-like, sparse} (n_samples_test, n_features)
-           Test data, matrix of explanatory variables
-
-        Returns
-        -------
-        : list of length two [y_hat, var_hat]
-
-             y_hat: numpy array of size (n_samples_test,)
-                    Estimated values of targets on test set (i.e. mean of
-                    predictive distribution)
-
-                var_hat: numpy array of size (n_samples_test,)
-                    Variance of predictive distribution
-
-        References
-        ----------
-        [1] Bishop, C. M. (2006). Pattern recognition and machine learning.
-        springer.
-        '''
-        y_hat = np.dot(X, self.coef_) + self.intercept_
-
-        if return_std:
-            # Handle the zero variance case
-            if self.var_y:
-                return y_hat, np.zeros_like(y_hat)
-
-            var_hat = 1./self.beta
-            var_hat += np.sum(X.dot(self.sigma_) * X, axis=1)
-            std_hat = np.sqrt(var_hat)
-            return y_hat, std_hat
-        else:
-            return y_hat
-
-# l2norm = 0.0
-# for idx in range(10):
-#     sigma2 = np.genfromtxt('./test/sigma2_{0}.csv'.format(idx+1), delimiter=',')
-#     Psi_train = np.genfromtxt('./test/Psi_train_{0}.csv'.format(idx+1), delimiter=',')
-#     Y_train = np.genfromtxt('./test/Y_train_{0}.csv'.format(idx+1))
-#     Psi_test = np.genfromtxt('./test/Psi_test_{0}.csv'.format(idx+1), delimiter=',')
-#     Y_test = np.genfromtxt('./test/Y_test_{0}.csv'.format(idx+1))
-
-#     clf = RegressionFastLaplace(verbose=True)
-#     clf.fit_(Psi_train, Y_train, sigma2)
-#     coeffs_fold = np.genfromtxt('./test/coeffs_fold_{0}.csv'.format(idx+1))
-#     print("coeffs error: {0:.4g}".format(np.linalg.norm(clf.coef_ - coeffs_fold)))
-#     l2norm += np.linalg.norm(Y_test - clf.predict(Psi_test))**2/len(Y_test)
-#     print("l2norm error: {0:.4g}".format(l2norm))
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/sequential_design.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/sequential_design.py
deleted file mode 100644
index e1feb7317..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/sequential_design.py
+++ /dev/null
@@ -1,2187 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Created on Fri Jan 28 09:21:18 2022
-
-@author: farid
-"""
-import numpy as np
-from scipy import stats, signal, linalg, sparse
-from scipy.spatial import distance
-from copy import deepcopy, copy
-from tqdm import tqdm
-import scipy.optimize as opt
-from sklearn.metrics import mean_squared_error
-import multiprocessing
-import matplotlib.pyplot as plt
-import sys
-import os
-import gc
-import seaborn as sns
-from joblib import Parallel, delayed
-#import resource
-from .exploration import Exploration
-
-
-class SeqDesign():
-    """ Sequential experimental design
-    This class provieds method for trainig the meta-model in an iterative
-    manners.
-    The main method to execute the task is `train_seq_design`, which
-      recieves a model object and returns the trained metamodel.
-    """
-
-    # -------------------------------------------------------------------------
-    def train_seq_design(self, MetaModel):
-        """
-        Starts the adaptive sequential design for refining the surrogate model
-        by selecting training points in a sequential manner.
-
-        Parameters
-        ----------
-        Model : object
-            An object containing all model specifications.
-
-        Returns
-        -------
-        MetaModel : object
-            Meta model object.
-
-        """
-        # MetaModel = self
-        Model = MetaModel.ModelObj
-        self.MetaModel = MetaModel
-        self.Model = Model
-
-        # Initialization
-        MetaModel.SeqModifiedLOO = {}
-        MetaModel.seqValidError = {}
-        MetaModel.SeqBME = {}
-        MetaModel.SeqKLD = {}
-        MetaModel.SeqDistHellinger = {}
-        MetaModel.seqRMSEMean = {}
-        MetaModel.seqRMSEStd = {}
-        MetaModel.seqMinDist = []
-        pce = True if MetaModel.meta_model_type.lower() != 'gpe' else False
-        mc_ref = True if bool(Model.mc_reference) else False
-        if mc_ref:
-            Model.read_mc_reference()
-
-        if not hasattr(MetaModel, 'valid_likelihoods'):
-            MetaModel.valid_samples = []
-            MetaModel.valid_model_runs = []
-            MetaModel.valid_likelihoods = []
-
-        # Get the parameters
-        max_n_samples = MetaModel.ExpDesign.n_max_samples
-        mod_LOO_threshold = MetaModel.ExpDesign.mod_LOO_threshold
-        n_canddidate = MetaModel.ExpDesign.n_canddidate
-        post_snapshot = MetaModel.ExpDesign.post_snapshot
-        n_replication = MetaModel.ExpDesign.n_replication
-        util_func = MetaModel.ExpDesign.util_func
-        output_name = Model.Output.names
-        validError = None
-        # Handle if only one UtilityFunctions is provided
-        if not isinstance(util_func, list):
-            util_func = [MetaModel.ExpDesign.util_func]
-
-        # Read observations or MCReference
-        if len(Model.observations) != 0 or Model.meas_file is not None:
-            self.observations = Model.read_observation()
-            obs_data = self.observations
-        else:
-            obs_data = []
-            TotalSigma2 = {}
-        # ---------- Initial MetaModel ----------
-        initMetaModel = deepcopy(MetaModel)
-
-        # Validation error if validation set is provided.
-        if len(MetaModel.valid_model_runs) != 0:
-            init_rmse, init_valid_error = self.__validError(initMetaModel)
-            init_valid_error = list(init_valid_error.values())
-        else:
-            init_rmse = None
-
-        # Check if discrepancy is provided
-        if len(obs_data) != 0 and hasattr(MetaModel, 'Discrepancy'):
-            TotalSigma2 = MetaModel.Discrepancy.parameters
-
-            # Calculate the initial BME
-            out = self.__BME_Calculator(
-                initMetaModel, obs_data, TotalSigma2, init_rmse)
-            init_BME, init_KLD, init_post, init_likes, init_dist_hellinger = out
-            print(f"\nInitial BME: {init_BME:.2f}")
-            print(f"Initial KLD: {init_KLD:.2f}")
-
-            # Posterior snapshot (initial)
-            if post_snapshot:
-                parNames = MetaModel.ExpDesign.par_names
-                print('Posterior snapshot (initial) is being plotted...')
-                self.__posteriorPlot(init_post, parNames, 'SeqPosterior_init')
-
-        # Check the convergence of the Mean & Std
-        if mc_ref and pce:
-            init_rmse_mean, init_rmse_std = self.__error_Mean_Std()
-            print(f"Initial Mean and Std error: {init_rmse_mean},"
-                  f" {init_rmse_std}")
-
-        # Read the initial experimental design
-        Xinit = initMetaModel.ExpDesign.X
-        init_n_samples = len(MetaModel.ExpDesign.X)
-        initYprev = initMetaModel.ModelOutputDict
-        initLCerror = initMetaModel.LCerror
-        n_itrs = max_n_samples - init_n_samples
-
-        # Read the initial ModifiedLOO
-        if pce:
-            Scores_all, varExpDesignY = [], []
-            for out_name in output_name:
-                y = initMetaModel.ExpDesign.Y[out_name]
-                Scores_all.append(list(
-                    initMetaModel.score_dict['b_1'][out_name].values()))
-                if MetaModel.dim_red_method.lower() == 'pca':
-                    pca = MetaModel.pca['b_1'][out_name]
-                    components = pca.transform(y)
-                    varExpDesignY.append(np.var(components, axis=0))
-                else:
-                    varExpDesignY.append(np.var(y, axis=0))
-
-            Scores = [item for sublist in Scores_all for item in sublist]
-            weights = [item for sublist in varExpDesignY for item in sublist]
-            init_mod_LOO = [np.average([1-score for score in Scores],
-                                       weights=weights)]
-
-        prevMetaModel_dict = {}
-        # Replicate the sequential design
-        for repIdx in range(n_replication):
-            print(f'\n>>>> Replication: {repIdx+1}<<<<')
-
-            # To avoid changes ub original aPCE object
-            MetaModel.ExpDesign.X = Xinit
-            MetaModel.ExpDesign.Y = initYprev
-            MetaModel.LCerror = initLCerror
-
-            for util_f in util_func:
-                print(f'\n>>>> Utility Function: {util_f} <<<<')
-                # To avoid changes ub original aPCE object
-                MetaModel.ExpDesign.X = Xinit
-                MetaModel.ExpDesign.Y = initYprev
-                MetaModel.LCerror = initLCerror
-
-                # Set the experimental design
-                Xprev = Xinit
-                total_n_samples = init_n_samples
-                Yprev = initYprev
-
-                Xfull = []
-                Yfull = []
-
-                # Store the initial ModifiedLOO
-                if pce:
-                    print("\nInitial ModifiedLOO:", init_mod_LOO)
-                    SeqModifiedLOO = np.array(init_mod_LOO)
-
-                if len(MetaModel.valid_model_runs) != 0:
-                    SeqValidError = np.array(init_valid_error)
-
-                # Check if data is provided
-                if len(obs_data) != 0:
-                    SeqBME = np.array([init_BME])
-                    SeqKLD = np.array([init_KLD])
-                    SeqDistHellinger = np.array([init_dist_hellinger])
-
-                if mc_ref and pce:
-                    seqRMSEMean = np.array([init_rmse_mean])
-                    seqRMSEStd = np.array([init_rmse_std])
-
-                # ------- Start Sequential Experimental Design -------
-                postcnt = 1
-                for itr_no in range(1, n_itrs+1):
-                    print(f'\n>>>> Iteration number {itr_no} <<<<')
-
-                    # Save the metamodel prediction before updating
-                    prevMetaModel_dict[itr_no] = deepcopy(MetaModel)
-                    if itr_no > 1:
-                        pc_model = prevMetaModel_dict[itr_no-1]
-                        self._y_hat_prev, _ = pc_model.eval_metamodel(
-                            samples=Xfull[-1].reshape(1, -1))
-
-                    # Optimal Bayesian Design
-                    m_1 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-                    MetaModel.ExpDesignFlag = 'sequential'
-                    Xnew, updatedPrior = self.opt_SeqDesign(TotalSigma2,
-                                                            n_canddidate,
-                                                            util_f)
-                    m_2 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-                    S = np.min(distance.cdist(Xinit, Xnew, 'euclidean'))
-                    MetaModel.seqMinDist.append(S)
-                    print(f"\nmin Dist from OldExpDesign: {S:2f}")
-                    print("\n")
-
-                    # Evaluate the full model response at the new sample
-                    Ynew, _ = Model.run_model_parallel(
-                        Xnew, prevRun_No=total_n_samples
-                        )
-                    total_n_samples += Xnew.shape[0]
-                    # ------ Plot the surrogate model vs Origninal Model ------
-                    if hasattr(MetaModel, 'adapt_verbose') and \
-                       MetaModel.adapt_verbose:
-                        from .adaptPlot import adaptPlot
-                        y_hat, std_hat = MetaModel.eval_metamodel(samples=Xnew)
-                        adaptPlot(MetaModel, Ynew, y_hat, std_hat, plotED=False)
-
-                    # -------- Retrain the surrogate model -------
-                    # Extend new experimental design
-                    Xfull = np.vstack((Xprev, Xnew))
-
-                    # Updating experimental design Y
-                    for out_name in output_name:
-                        Yfull = np.vstack((Yprev[out_name], Ynew[out_name]))
-                        MetaModel.ModelOutputDict[out_name] = Yfull
-
-                    # Pass new design to the metamodel object
-                    MetaModel.ExpDesign.sampling_method = 'user'
-                    MetaModel.ExpDesign.X = Xfull
-                    MetaModel.ExpDesign.Y = MetaModel.ModelOutputDict
-
-                    # Save the Experimental Design for next iteration
-                    Xprev = Xfull
-                    Yprev = MetaModel.ModelOutputDict
-
-                    # Pass the new prior as the input
-                    MetaModel.input_obj.poly_coeffs_flag = False
-                    if updatedPrior is not None:
-                        MetaModel.input_obj.poly_coeffs_flag = True
-                        print("updatedPrior:", updatedPrior.shape)
-                        # Arbitrary polynomial chaos
-                        for i in range(updatedPrior.shape[1]):
-                            MetaModel.input_obj.Marginals[i].dist_type = None
-                            x = updatedPrior[:, i]
-                            MetaModel.input_obj.Marginals[i].raw_data = x
-
-                    # Train the surrogate model for new ExpDesign
-                    MetaModel.train_norm_design(parallel=False)
-                    m_3 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-
-                    # -------- Evaluate the retrained surrogate model -------
-                    # Extract Modified LOO from Output
-                    if pce:
-                        Scores_all, varExpDesignY = [], []
-                        for out_name in output_name:
-                            y = MetaModel.ExpDesign.Y[out_name]
-                            Scores_all.append(list(
-                                MetaModel.score_dict['b_1'][out_name].values()))
-                            if MetaModel.dim_red_method.lower() == 'pca':
-                                pca = MetaModel.pca['b_1'][out_name]
-                                components = pca.transform(y)
-                                varExpDesignY.append(np.var(components,
-                                                            axis=0))
-                            else:
-                                varExpDesignY.append(np.var(y, axis=0))
-                        Scores = [item for sublist in Scores_all for item
-                                  in sublist]
-                        weights = [item for sublist in varExpDesignY for item
-                                   in sublist]
-                        ModifiedLOO = [np.average(
-                            [1-score for score in Scores], weights=weights)]
-
-                        print('\n')
-                        print(f"Updated ModifiedLOO {util_f}:\n", ModifiedLOO)
-                        print('\n')
-
-                    # Compute the validation error
-                    if len(MetaModel.valid_model_runs) != 0:
-                        rmse, validError = self.__validError(MetaModel)
-                        ValidError = list(validError.values())
-                    else:
-                        rmse = None
-
-                    # Store updated ModifiedLOO
-                    if pce:
-                        SeqModifiedLOO = np.vstack(
-                            (SeqModifiedLOO, ModifiedLOO))
-                        if len(MetaModel.valid_model_runs) != 0:
-                            SeqValidError = np.vstack(
-                                (SeqValidError, ValidError))
-                    m_4 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-                    # -------- Caclulation of BME as accuracy metric -------
-                    # Check if data is provided
-                    if len(obs_data) != 0:
-                        # Calculate the initial BME
-                        out = self.__BME_Calculator(MetaModel, obs_data,
-                                                    TotalSigma2, rmse)
-                        BME, KLD, Posterior, likes, DistHellinger = out
-                        print('\n')
-                        print(f"Updated BME: {BME:.2f}")
-                        print(f"Updated KLD: {KLD:.2f}")
-                        print('\n')
-
-                        # Plot some snapshots of the posterior
-                        step_snapshot = MetaModel.ExpDesign.step_snapshot
-                        if post_snapshot and postcnt % step_snapshot == 0:
-                            parNames = MetaModel.ExpDesign.par_names
-                            print('Posterior snapshot is being plotted...')
-                            self.__posteriorPlot(Posterior, parNames,
-                                                 f'SeqPosterior_{postcnt}')
-                        postcnt += 1
-                    m_5 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-
-                    # Check the convergence of the Mean&Std
-                    if mc_ref and pce:
-                        print('\n')
-                        RMSE_Mean, RMSE_std = self.__error_Mean_Std()
-                        print(f"Updated Mean and Std error: {RMSE_Mean:.2f}, "
-                              f"{RMSE_std:.2f}")
-                        print('\n')
-
-                    # Store the updated BME & KLD
-                    # Check if data is provided
-                    if len(obs_data) != 0:
-                        SeqBME = np.vstack((SeqBME, BME))
-                        SeqKLD = np.vstack((SeqKLD, KLD))
-                        SeqDistHellinger = np.vstack((SeqDistHellinger,
-                                                      DistHellinger))
-                    if mc_ref and pce:
-                        seqRMSEMean = np.vstack((seqRMSEMean, RMSE_Mean))
-                        seqRMSEStd = np.vstack((seqRMSEStd, RMSE_std))
-
-                    if pce and any(LOO < mod_LOO_threshold
-                                   for LOO in ModifiedLOO):
-                        break
-
-                    print(f"Memory itr {itr_no}: I: {m_2-m_1:.2f} MB")
-                    print(f"Memory itr {itr_no}: II: {m_3-m_2:.2f} MB")
-                    print(f"Memory itr {itr_no}: III: {m_4-m_3:.2f} MB")
-                    print(f"Memory itr {itr_no}: IV: {m_5-m_4:.2f} MB")
-                    m_6 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-                    print(f"Memory itr {itr_no}: total: {m_6:.2f} MB")
-
-                    # Clean up
-                    if len(obs_data) != 0:
-                        del out
-                    gc.collect()
-                    print()
-                    print('-'*50)
-                    print()
-
-                # Store updated ModifiedLOO and BME in dictonary
-                strKey = f'{util_f}_rep_{repIdx+1}'
-                if pce:
-                    MetaModel.SeqModifiedLOO[strKey] = SeqModifiedLOO
-                if len(MetaModel.valid_model_runs) != 0:
-                    MetaModel.seqValidError[strKey] = SeqValidError
-
-                # Check if data is provided
-                if len(obs_data) != 0:
-                    MetaModel.SeqBME[strKey] = SeqBME
-                    MetaModel.SeqKLD[strKey] = SeqKLD
-                if len(MetaModel.valid_likelihoods) != 0:
-                    MetaModel.SeqDistHellinger[strKey] = SeqDistHellinger
-                if mc_ref and pce:
-                    MetaModel.seqRMSEMean[strKey] = seqRMSEMean
-                    MetaModel.seqRMSEStd[strKey] = seqRMSEStd
-
-        return MetaModel
-
-    # -------------------------------------------------------------------------
-    def util_VarBasedDesign(self, X_can, index, util_func='Entropy'):
-        """
-        Computes the exploitation scores based on:
-        active learning MacKay(ALM) and active learning Cohn (ALC)
-        Paper: Sequential Design with Mutual Information for Computer
-        Experiments (MICE): Emulation of a Tsunami Model by Beck and Guillas
-        (2016)
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        index : int
-            Model output index.
-        UtilMethod : string, optional
-            Exploitation utility function. The default is 'Entropy'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-        MetaModel = self.MetaModel
-        ED_X = MetaModel.ExpDesign.X
-        out_dict_y = MetaModel.ExpDesign.Y
-        out_names = MetaModel.ModelObj.Output.names
-
-        # Run the Metamodel for the candidate
-        X_can = X_can.reshape(1, -1)
-        Y_PC_can, std_PC_can = MetaModel.eval_metamodel(samples=X_can)
-
-        if util_func.lower() == 'alm':
-            # ----- Entropy/MMSE/active learning MacKay(ALM)  -----
-            # Compute perdiction variance of the old model
-            canPredVar = {key: std_PC_can[key]**2 for key in out_names}
-
-            varPCE = np.zeros((len(out_names), X_can.shape[0]))
-            for KeyIdx, key in enumerate(out_names):
-                varPCE[KeyIdx] = np.max(canPredVar[key], axis=1)
-            score = np.max(varPCE, axis=0)
-
-        elif util_func.lower() == 'eigf':
-            # ----- Expected Improvement for Global fit -----
-            # Find closest EDX to the candidate
-            distances = distance.cdist(ED_X, X_can, 'euclidean')
-            index = np.argmin(distances)
-
-            # Compute perdiction error and variance of the old model
-            predError = {key: Y_PC_can[key] for key in out_names}
-            canPredVar = {key: std_PC_can[key]**2 for key in out_names}
-
-            # Compute perdiction error and variance of the old model
-            # Eq (5) from Liu et al.(2018)
-            EIGF_PCE = np.zeros((len(out_names), X_can.shape[0]))
-            for KeyIdx, key in enumerate(out_names):
-                residual = predError[key] - out_dict_y[key][int(index)]
-                var = canPredVar[key]
-                EIGF_PCE[KeyIdx] = np.max(residual**2 + var, axis=1)
-            score = np.max(EIGF_PCE, axis=0)
-
-        return -1 * score   # -1 is for minimization instead of maximization
-
-    # -------------------------------------------------------------------------
-    def util_BayesianActiveDesign(self, X_can, sigma2Dict, var='DKL'):
-        """
-        Computes scores based on Bayesian active design criterion (var).
-
-        It is based on the following paper:
-        Oladyshkin, Sergey, Farid Mohammadi, Ilja Kroeker, and Wolfgang Nowak.
-        "Bayesian3 active learning for the gaussian process emulator using
-        information theory." Entropy 22, no. 8 (2020): 890.
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        var : string, optional
-            BAL design criterion. The default is 'DKL'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-
-        # Evaluate the PCE metamodels at that location ???
-        Y_mean_can, Y_std_can = self.MetaModel.eval_metamodel(
-            samples=np.array([X_can])
-            )
-
-        # Get the data
-        obs_data = self.observations
-        n_obs = self.Model.n_obs
-        # TODO: Analytical DKL
-        # Sample a distribution for a normal dist
-        # with Y_mean_can as the mean and Y_std_can as std.
-
-        # priorMean, priorSigma2, Obs = np.empty((0)),np.empty((0)),np.empty((0))
-
-        # for key in list(Y_mean_can):
-        #     # concatenate the measurement error
-        #     Obs = np.hstack((Obs,ObservationData[key]))
-
-        #     # concatenate the mean and variance of prior predictive
-        #     means, stds = Y_mean_can[key][0], Y_std_can[key][0]
-        #     priorMean = np.hstack((priorSigma2,means))
-        #     priorSigma2 = np.hstack((priorSigma2,stds**2))
-
-        # # Covariance Matrix of prior
-        # covPrior = np.zeros((priorSigma2.shape[0], priorSigma2.shape[0]), float)
-        # np.fill_diagonal(covPrior, priorSigma2)
-
-        # # Covariance Matrix of Likelihood
-        # covLikelihood = np.zeros((sigma2Dict.shape[0], sigma2Dict.shape[0]), float)
-        # np.fill_diagonal(covLikelihood, sigma2Dict)
-
-        # # Calculate moments of the posterior (Analytical derivation)
-        # n = priorSigma2.shape[0]
-        # covPost = np.dot(np.dot(covPrior,np.linalg.inv(covPrior+(covLikelihood/n))),covLikelihood/n)
-
-        # meanPost = np.dot(np.dot(covPrior,np.linalg.inv(covPrior+(covLikelihood/n))) , Obs) + \
-        #             np.dot(np.dot(covPrior,np.linalg.inv(covPrior+(covLikelihood/n))),
-        #                     priorMean/n)
-        # # Compute DKL from prior to posterior
-        # term1 = np.trace(np.dot(np.linalg.inv(covPrior),covPost))
-        # deltaMean = priorMean-meanPost
-        # term2 = np.dot(np.dot(deltaMean,np.linalg.inv(covPrior)),deltaMean[:,None])
-        # term3 = np.log(np.linalg.det(covPrior)/np.linalg.det(covPost))
-        # DKL = 0.5 * (term1 + term2 - n + term3)[0]
-
-        # ---------- Inner MC simulation for computing Utility Value ----------
-        # Estimation of the integral via Monte Varlo integration
-        MCsize = 20000
-        ESS = 0
-
-        while ((ESS > MCsize) or (ESS < 1)):
-
-            # Sample a distribution for a normal dist
-            # with Y_mean_can as the mean and Y_std_can as std.
-            Y_MC, std_MC = {}, {}
-            logPriorLikelihoods = np.zeros((MCsize))
-            for key in list(Y_mean_can):
-                means, stds = Y_mean_can[key][0], Y_std_can[key][0]
-                # cov = np.zeros((means.shape[0], means.shape[0]), float)
-                # np.fill_diagonal(cov, stds**2)
-
-                Y_MC[key] = np.zeros((MCsize, n_obs))
-                logsamples = np.zeros((MCsize, n_obs))
-                for i in range(n_obs):
-                    NormalDensity = stats.norm(means[i], stds[i])
-                    Y_MC[key][:, i] = NormalDensity.rvs(MCsize)
-                    logsamples[:, i] = NormalDensity.logpdf(Y_MC[key][:, i])
-
-                logPriorLikelihoods = np.sum(logsamples, axis=1)
-                std_MC[key] = np.zeros((MCsize, means.shape[0]))
-
-            #  Likelihood computation (Comparison of data and simulation
-            #  results via PCE with candidate design)
-            likelihoods = self.__normpdf(Y_MC, std_MC, obs_data, sigma2Dict)
-
-            # Check the Effective Sample Size (1<ESS<MCsize)
-            ESS = 1 / np.sum(np.square(likelihoods/np.nansum(likelihoods)))
-
-            # Enlarge sample size if it doesn't fulfill the criteria
-            if ((ESS > MCsize) or (ESS < 1)):
-                MCsize *= 10
-                ESS = 0
-
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, MCsize)[0]
-
-        # Reject the poorly performed prior
-        accepted = (likelihoods/np.max(likelihoods)) >= unif
-
-        # Prior-based estimation of BME
-        logBME = np.log(np.nanmean(likelihoods))
-
-        # Posterior-based expectation of likelihoods
-        postLikelihoods = likelihoods[accepted]
-        postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-        # Posterior-based expectation of prior densities
-        postExpPrior = np.mean(logPriorLikelihoods[accepted])
-
-        # Utility function Eq.2 in Ref. (2)
-        # Posterior covariance matrix after observing data y
-        # Kullback-Leibler Divergence (Sergey's paper)
-        if var == 'DKL':
-
-            # TODO: Calculate the correction factor for BME
-            # BMECorrFactor = self.BME_Corr_Weight(PCE_SparseBayes_can,
-            #                                      ObservationData, sigma2Dict)
-            # BME += BMECorrFactor
-            # Haun et al implementation
-            # U_J_d = np.mean(np.log(Likelihoods[Likelihoods!=0])- logBME)
-            U_J_d = postExpLikelihoods - logBME
-
-        # Marginal log likelihood
-        elif var == 'BME':
-            U_J_d = logBME
-
-        # Entropy-based information gain
-        elif var == 'infEntropy':
-            logBME = np.log(np.nanmean(likelihoods))
-            infEntropy = logBME - postExpPrior - postExpLikelihoods
-            U_J_d = infEntropy * -1  # -1 for minimization
-
-        # Bayesian information criterion
-        elif var == 'BIC':
-            coeffs = self.MetaModel.coeffs_dict.values()
-            nModelParams = max(len(v) for val in coeffs for v in val.values())
-            maxL = np.nanmax(likelihoods)
-            U_J_d = -2 * np.log(maxL) + np.log(n_obs) * nModelParams
-
-        # Akaike information criterion
-        elif var == 'AIC':
-            coeffs = self.MetaModel.coeffs_dict.values()
-            nModelParams = max(len(v) for val in coeffs for v in val.values())
-            maxlogL = np.log(np.nanmax(likelihoods))
-            AIC = -2 * maxlogL + 2 * nModelParams
-            # 2 * nModelParams * (nModelParams+1) / (n_obs-nModelParams-1)
-            penTerm = 0
-            U_J_d = 1*(AIC + penTerm)
-
-        # Deviance information criterion
-        elif var == 'DIC':
-            # D_theta_bar = np.mean(-2 * Likelihoods)
-            N_star_p = 0.5 * np.var(np.log(likelihoods[likelihoods != 0]))
-            Likelihoods_theta_mean = self.__normpdf(
-                Y_mean_can, Y_std_can, obs_data, sigma2Dict
-                )
-            DIC = -2 * np.log(Likelihoods_theta_mean) + 2 * N_star_p
-
-            U_J_d = DIC
-
-        else:
-            print('The algorithm you requested has not been implemented yet!')
-
-        # Handle inf and NaN (replace by zero)
-        if np.isnan(U_J_d) or U_J_d == -np.inf or U_J_d == np.inf:
-            U_J_d = 0.0
-
-        # Clear memory
-        del likelihoods
-        del Y_MC
-        del std_MC
-        gc.collect(generation=2)
-
-        return -1 * U_J_d   # -1 is for minimization instead of maximization
-
-    # -------------------------------------------------------------------------
-    def update_metamodel(self, MetaModel, output, y_hat_can, univ_p_val, index,
-                         new_pca=False):
-        BasisIndices = MetaModel.basis_dict[output]["y_"+str(index+1)]
-        clf_poly = MetaModel.clf_poly[output]["y_"+str(index+1)]
-        Mn = clf_poly.coef_
-        Sn = clf_poly.sigma_
-        beta = clf_poly.alpha_
-        active = clf_poly.active_
-        Psi = self.MetaModel.create_psi(BasisIndices, univ_p_val)
-
-        Sn_new_inv = np.linalg.inv(Sn)
-        Sn_new_inv += beta * np.dot(Psi[:, active].T, Psi[:, active])
-        Sn_new = np.linalg.inv(Sn_new_inv)
-
-        Mn_new = np.dot(Sn_new_inv, Mn[active]).reshape(-1, 1)
-        Mn_new += beta * np.dot(Psi[:, active].T, y_hat_can)
-        Mn_new = np.dot(Sn_new, Mn_new).flatten()
-
-        # Compute the old and new moments of PCEs
-        mean_old = Mn[0]
-        mean_new = Mn_new[0]
-        std_old = np.sqrt(np.sum(np.square(Mn[1:])))
-        std_new = np.sqrt(np.sum(np.square(Mn_new[1:])))
-
-        # Back transformation if PCA is selected.
-        if MetaModel.dim_red_method.lower() == 'pca':
-            old_pca = MetaModel.pca[output]
-            mean_old = old_pca.mean_[index]
-            mean_old += np.sum(mean_old * old_pca.components_[:, index])
-            std_old = np.sqrt(np.sum(std_old**2 *
-                                     old_pca.components_[:, index]**2))
-            mean_new = new_pca.mean_[index]
-            mean_new += np.sum(mean_new * new_pca.components_[:, index])
-            std_new = np.sqrt(np.sum(std_new**2 *
-                                     new_pca.components_[:, index]**2))
-            # print(f"mean_old: {mean_old:.2f} mean_new: {mean_new:.2f}")
-            # print(f"std_old: {std_old:.2f} std_new: {std_new:.2f}")
-        # Store the old and new moments of PCEs
-        results = {
-            'mean_old': mean_old,
-            'mean_new': mean_new,
-            'std_old': std_old,
-            'std_new': std_new
-            }
-        return results
-
-    # -------------------------------------------------------------------------
-    def util_BayesianDesign_old(self, X_can, X_MC, sigma2Dict, var='DKL'):
-        """
-        Computes scores based on Bayesian sequential design criterion (var).
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        var : string, optional
-            Bayesian design criterion. The default is 'DKL'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-
-        # To avoid changes ub original aPCE object
-        Model = self.Model
-        MetaModel = deepcopy(self.MetaModel)
-        old_EDY = MetaModel.ExpDesign.Y
-
-        # Evaluate the PCE metamodels using the candidate design
-        Y_PC_can, Y_std_can = self.MetaModel.eval_metamodel(
-            samples=np.array([X_can])
-            )
-
-        # Generate y from posterior predictive
-        m_size = 100
-        y_hat_samples = {}
-        for idx, key in enumerate(Model.Output.names):
-            means, stds = Y_PC_can[key][0], Y_std_can[key][0]
-            y_hat_samples[key] = np.random.multivariate_normal(
-                means, np.diag(stds), m_size)
-
-        # Create the SparseBayes-based PCE metamodel:
-        MetaModel.input_obj.poly_coeffs_flag = False
-        univ_p_val = self.MetaModel.univ_basis_vals(X_can)
-        G_n_m_all = np.zeros((m_size, len(Model.Output.names), Model.n_obs))
-
-        for i in range(m_size):
-            for idx, key in enumerate(Model.Output.names):
-                if MetaModel.dim_red_method.lower() == 'pca':
-                    # Equal number of components
-                    new_outputs = np.vstack(
-                        (old_EDY[key], y_hat_samples[key][i])
-                        )
-                    new_pca, _ = MetaModel.pca_transformation(new_outputs)
-                    target = new_pca.transform(
-                        y_hat_samples[key][i].reshape(1, -1)
-                        )[0]
-                else:
-                    new_pca, target = False, y_hat_samples[key][i]
-
-                for j in range(len(target)):
-
-                    # Update surrogate
-                    result = self.update_metamodel(
-                        MetaModel, key, target[j], univ_p_val, j, new_pca)
-
-                    # Compute Expected Information Gain (Eq. 39)
-                    G_n_m = np.log(result['std_old']/result['std_new']) - 1./2
-                    G_n_m += result['std_new']**2 / (2*result['std_old']**2)
-                    G_n_m += (result['mean_new'] - result['mean_old'])**2 /\
-                        (2*result['std_old']**2)
-
-                    G_n_m_all[i, idx, j] = G_n_m
-
-        U_J_d = G_n_m_all.mean(axis=(1, 2)).mean()
-        return -1 * U_J_d
-
-    # -------------------------------------------------------------------------
-    def util_BayesianDesign(self, X_can, X_MC, sigma2Dict, var='DKL'):
-        """
-        Computes scores based on Bayesian sequential design criterion (var).
-
-        Parameters
-        ----------
-        X_can : array of shape (n_samples, n_params)
-            Candidate samples.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        var : string, optional
-            Bayesian design criterion. The default is 'DKL'.
-
-        Returns
-        -------
-        float
-            Score.
-
-        """
-
-        # To avoid changes ub original aPCE object
-        Model = self.Model
-        MetaModel = deepcopy(self.MetaModel)
-        out_names = MetaModel.ModelObj.Output.names
-        if X_can.ndim == 1:
-            X_can = X_can.reshape(1, -1)
-
-        # Compute the mean and std based on the MetaModel
-        # pce_means, pce_stds = self._compute_pce_moments(MetaModel)
-        if var == 'ALC':
-            Y_MC, Y_MC_std = MetaModel.eval_metamodel(samples=X_MC)
-
-        # Old Experimental design
-        oldExpDesignX = MetaModel.ExpDesign.X
-        oldExpDesignY = MetaModel.ExpDesign.Y
-
-        # Evaluate the PCE metamodels at that location ???
-        Y_PC_can, Y_std_can = MetaModel.eval_metamodel(samples=X_can)
-
-        # Add all suggestion as new ExpDesign
-        NewExpDesignX = np.vstack((oldExpDesignX, X_can))
-
-        NewExpDesignY = {}
-        for key in oldExpDesignY.keys():
-            try:
-                NewExpDesignY[key] = np.vstack((oldExpDesignY[key],
-                                                Y_PC_can[key]))
-            except:
-                NewExpDesignY[key] = oldExpDesignY[key]
-
-        MetaModel.ExpDesign.sampling_method = 'user'
-        MetaModel.ExpDesign.X = NewExpDesignX
-        MetaModel.ExpDesign.Y = NewExpDesignY
-
-        # Train the model for the observed data using x_can
-        MetaModel.input_obj.poly_coeffs_flag = False
-        MetaModel.train_norm_design(parallel=False)
-        PCE_Model_can = MetaModel
-
-        if var.lower() == 'mi':
-            # Mutual information based on Krause et al
-            # Adapted from Beck & Guillas (MICE) paper
-            _, std_PC_can = PCE_Model_can.eval_metamodel(samples=X_can)
-            std_can = {key: std_PC_can[key] for key in out_names}
-
-            std_old = {key: Y_std_can[key] for key in out_names}
-
-            varPCE = np.zeros((len(out_names)))
-            for i, key in enumerate(out_names):
-                varPCE[i] = np.mean(std_old[key]**2/std_can[key]**2)
-            score = np.mean(varPCE)
-
-            return -1 * score
-
-        elif var.lower() == 'alc':
-            # Active learning based on Gramyc and Lee
-            # Adaptive design and analysis of supercomputer experiments Techno-
-            # metrics, 51 (2009), pp. 130–145.
-
-            # Evaluate the MetaModel at the given samples
-            Y_MC_can, Y_MC_std_can = PCE_Model_can.eval_metamodel(samples=X_MC)
-
-            # Compute the score
-            score = []
-            for i, key in enumerate(out_names):
-                pce_var = Y_MC_std_can[key]**2
-                pce_var_can = Y_MC_std[key]**2
-                score.append(np.mean(pce_var-pce_var_can, axis=0))
-            score = np.mean(score)
-
-            return -1 * score
-
-        # ---------- Inner MC simulation for computing Utility Value ----------
-        # Estimation of the integral via Monte Varlo integration
-        MCsize = X_MC.shape[0]
-        ESS = 0
-
-        while ((ESS > MCsize) or (ESS < 1)):
-
-            # Enriching Monte Carlo samples if need be
-            if ESS != 0:
-                X_MC = self.MetaModel.ExpDesign.generate_samples(
-                    MCsize, 'random'
-                    )
-
-            # Evaluate the MetaModel at the given samples
-            Y_MC, std_MC = PCE_Model_can.eval_metamodel(samples=X_MC)
-
-            # Likelihood computation (Comparison of data and simulation
-            # results via PCE with candidate design)
-            likelihoods = self.__normpdf(
-                Y_MC, std_MC, self.observations, sigma2Dict
-                )
-
-            # Check the Effective Sample Size (1<ESS<MCsize)
-            ESS = 1 / np.sum(np.square(likelihoods/np.sum(likelihoods)))
-
-            # Enlarge sample size if it doesn't fulfill the criteria
-            if ((ESS > MCsize) or (ESS < 1)):
-                print("--- increasing MC size---")
-                MCsize *= 10
-                ESS = 0
-
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, MCsize)[0]
-
-        # Reject the poorly performed prior
-        accepted = (likelihoods/np.max(likelihoods)) >= unif
-
-        # -------------------- Utility functions --------------------
-        # Utility function Eq.2 in Ref. (2)
-        # Kullback-Leibler Divergence (Sergey's paper)
-        if var == 'DKL':
-
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods, dtype=np.float128))
-
-            # Posterior-based expectation of likelihoods
-            postLikelihoods = likelihoods[accepted]
-            postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-            # Haun et al implementation
-            U_J_d = np.mean(np.log(likelihoods[likelihoods != 0]) - logBME)
-
-            # U_J_d = np.sum(G_n_m_all)
-            # Ryan et al (2014) implementation
-            # importanceWeights = Likelihoods[Likelihoods!=0]/np.sum(Likelihoods[Likelihoods!=0])
-            # U_J_d = np.mean(importanceWeights*np.log(Likelihoods[Likelihoods!=0])) - logBME
-
-            # U_J_d = postExpLikelihoods - logBME
-
-        # Marginal likelihood
-        elif var == 'BME':
-
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods))
-            U_J_d = logBME
-
-        # Bayes risk likelihood
-        elif var == 'BayesRisk':
-
-            U_J_d = -1 * np.var(likelihoods)
-
-        # Entropy-based information gain
-        elif var == 'infEntropy':
-            # Prior-based estimation of BME
-            logBME = np.log(np.nanmean(likelihoods))
-
-            # Posterior-based expectation of likelihoods
-            postLikelihoods = likelihoods[accepted] / np.nansum(likelihoods[accepted])
-            postExpLikelihoods = np.mean(np.log(postLikelihoods))
-
-            # Posterior-based expectation of prior densities
-            postExpPrior = np.mean(logPriorLikelihoods[accepted])
-
-            infEntropy = logBME - postExpPrior - postExpLikelihoods
-
-            U_J_d = infEntropy * -1  # -1 for minimization
-
-        # D-Posterior-precision
-        elif var == 'DPP':
-            X_Posterior = X_MC[accepted]
-            # covariance of the posterior parameters
-            U_J_d = -np.log(np.linalg.det(np.cov(X_Posterior)))
-
-        # A-Posterior-precision
-        elif var == 'APP':
-            X_Posterior = X_MC[accepted]
-            # trace of the posterior parameters
-            U_J_d = -np.log(np.trace(np.cov(X_Posterior)))
-
-        else:
-            print('The algorithm you requested has not been implemented yet!')
-
-        # Clear memory
-        del likelihoods
-        del Y_MC
-        del std_MC
-        gc.collect(generation=2)
-
-        return -1 * U_J_d   # -1 is for minimization instead of maximization
-
-    # -------------------------------------------------------------------------
-    def subdomain(self, Bounds, n_new_samples):
-        """
-        Divides a domain defined by Bounds into sub domains.
-
-        Parameters
-        ----------
-        Bounds : list of tuples
-            List of lower and upper bounds.
-        n_new_samples : TYPE
-            DESCRIPTION.
-
-        Returns
-        -------
-        Subdomains : TYPE
-            DESCRIPTION.
-
-        """
-        n_params = self.MetaModel.n_params
-        n_subdomains = n_new_samples + 1
-        LinSpace = np.zeros((n_params, n_subdomains))
-
-        for i in range(n_params):
-            LinSpace[i] = np.linspace(start=Bounds[i][0], stop=Bounds[i][1],
-                                      num=n_subdomains)
-        Subdomains = []
-        for k in range(n_subdomains-1):
-            mylist = []
-            for i in range(n_params):
-                mylist.append((LinSpace[i, k+0], LinSpace[i, k+1]))
-            Subdomains.append(tuple(mylist))
-
-        return Subdomains
-
-    # -------------------------------------------------------------------------
-    def run_util_func(self, method, candidates, index, sigma2Dict=None,
-                      var=None, X_MC=None):
-        """
-        Runs the utility function based on the given method.
-
-        Parameters
-        ----------
-        method : string
-            Exploitation method: `VarOptDesign`, `BayesActDesign` and
-            `BayesOptDesign`.
-        candidates : array of shape (n_samples, n_params)
-            All candidate parameter sets.
-        index : int
-            ExpDesign index.
-        sigma2Dict : dict, optional
-            A dictionary containing the measurement errors (sigma^2). The
-            default is None.
-        var : string, optional
-            Utility function. The default is None.
-        X_MC : TYPE, optional
-            DESCRIPTION. The default is None.
-
-        Returns
-        -------
-        index : TYPE
-            DESCRIPTION.
-        List
-            Scores.
-
-        """
-
-        if method.lower() == 'varoptdesign':
-            # U_J_d = self.util_VarBasedDesign(candidates, index, var)
-            U_J_d = np.zeros((candidates.shape[0]))
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="varoptdesign"):
-                U_J_d[idx] = self.util_VarBasedDesign(X_can, index, var)
-
-        elif method.lower() == 'bayesactdesign':
-            NCandidate = candidates.shape[0]
-            U_J_d = np.zeros((NCandidate))
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="OptBayesianDesign"):
-                U_J_d[idx] = self.util_BayesianActiveDesign(X_can, sigma2Dict,
-                                                            var)
-        elif method.lower() == 'bayesoptdesign':
-            NCandidate = candidates.shape[0]
-            U_J_d = np.zeros((NCandidate))
-            for idx, X_can in tqdm(enumerate(candidates), ascii=True,
-                                   desc="OptBayesianDesign"):
-                U_J_d[idx] = self.util_BayesianDesign(X_can, X_MC, sigma2Dict,
-                                                      var)
-        return (index, -1 * U_J_d)
-
-    # -------------------------------------------------------------------------
-    def dual_annealing(self, method, Bounds, sigma2Dict, var, Run_No,
-                       verbose=False):
-        """
-        Exploration algorithim to find the optimum parameter space.
-
-        Parameters
-        ----------
-        method : string
-            Exploitation method: `VarOptDesign`, `BayesActDesign` and
-            `BayesOptDesign`.
-        Bounds : list of tuples
-            List of lower and upper boundaries of parameters.
-        sigma2Dict : dict
-            A dictionary containing the measurement errors (sigma^2).
-        Run_No : int
-            Run number.
-        verbose : bool, optional
-            Print out a summary. The default is False.
-
-        Returns
-        -------
-        Run_No : int
-            Run number.
-        array
-            Optimial candidate.
-
-        """
-
-        Model = self.Model
-        max_func_itr = self.MetaModel.ExpDesign.max_func_itr
-
-        if method == 'VarOptDesign':
-            Res_Global = opt.dual_annealing(self.util_VarBasedDesign,
-                                            bounds=Bounds,
-                                            args=(Model, var),
-                                            maxfun=max_func_itr)
-
-        elif method == 'BayesOptDesign':
-            Res_Global = opt.dual_annealing(self.util_BayesianDesign,
-                                            bounds=Bounds,
-                                            args=(Model, sigma2Dict, var),
-                                            maxfun=max_func_itr)
-
-        if verbose:
-            print(f"Global minimum: xmin = {Res_Global.x}, "
-                  f"f(xmin) = {Res_Global.fun:.6f}, nfev = {Res_Global.nfev}")
-
-        return (Run_No, Res_Global.x)
-
-    # -------------------------------------------------------------------------
-    def tradoff_weights(self, tradeoff_scheme, old_EDX, old_EDY):
-        """
-        Calculates weights for exploration scores based on the requested
-        scheme: `None`, `equal`, `epsilon-decreasing` and `adaptive`.
-
-        `None`: No exploration.
-        `equal`: Same weights for exploration and exploitation scores.
-        `epsilon-decreasing`: Start with more exploration and increase the
-            influence of exploitation along the way with a exponential decay
-            function
-        `adaptive`: An adaptive method based on:
-            Liu, Haitao, Jianfei Cai, and Yew-Soon Ong. "An adaptive sampling
-            approach for Kriging metamodeling by maximizing expected prediction
-            error." Computers & Chemical Engineering 106 (2017): 171-182.
-
-        Parameters
-        ----------
-        tradeoff_scheme : string
-            Trade-off scheme for exloration and exploitation scores.
-        old_EDX : array (n_samples, n_params)
-            Old experimental design (training points).
-        old_EDY : dict
-            Old model responses (targets).
-
-        Returns
-        -------
-        exploration_weight : float
-            Exploration weight.
-        exploitation_weight: float
-            Exploitation weight.
-
-        """
-        if tradeoff_scheme is None:
-            exploration_weight = 0
-
-        elif tradeoff_scheme == 'equal':
-            exploration_weight = 0.5
-
-        elif tradeoff_scheme == 'epsilon-decreasing':
-            # epsilon-decreasing scheme
-            # Start with more exploration and increase the influence of
-            # exploitation along the way with a exponential decay function
-            initNSamples = self.MetaModel.ExpDesign.n_init_samples
-            n_max_samples = self.MetaModel.ExpDesign.n_max_samples
-
-            itrNumber = (self.MetaModel.ExpDesign.X.shape[0] - initNSamples)
-            itrNumber //= self.MetaModel.ExpDesign.n_new_samples
-
-            tau2 = -(n_max_samples-initNSamples-1) / np.log(1e-8)
-            exploration_weight = signal.exponential(n_max_samples-initNSamples,
-                                                    0, tau2, False)[itrNumber]
-
-        elif tradeoff_scheme == 'adaptive':
-
-            # Extract itrNumber
-            initNSamples = self.MetaModel.ExpDesign.n_init_samples
-            n_max_samples = self.MetaModel.ExpDesign.n_max_samples
-            itrNumber = (self.MetaModel.ExpDesign.X.shape[0] - initNSamples)
-            itrNumber //= self.MetaModel.ExpDesign.n_new_samples
-
-            if itrNumber == 0:
-                exploration_weight = 0.5
-            else:
-                # New adaptive trade-off according to Liu et al. (2017)
-                # Mean squared error for last design point
-                last_EDX = old_EDX[-1].reshape(1, -1)
-                lastPCEY, _ = self.MetaModel.eval_metamodel(samples=last_EDX)
-                pce_y = np.array(list(lastPCEY.values()))[:, 0]
-                y = np.array(list(old_EDY.values()))[:, -1, :]
-                mseError = mean_squared_error(pce_y, y)
-
-                # Mean squared CV - error for last design point
-                pce_y_prev = np.array(list(self._y_hat_prev.values()))[:, 0]
-                mseCVError = mean_squared_error(pce_y_prev, y)
-
-                exploration_weight = min([0.5*mseError/mseCVError, 1])
-
-        # Exploitation weight
-        exploitation_weight = 1 - exploration_weight
-
-        return exploration_weight, exploitation_weight
-
-    # -------------------------------------------------------------------------
-    def opt_SeqDesign(self, sigma2, n_candidates=5, var='DKL'):
-        """
-        Runs optimal sequential design.
-
-        Parameters
-        ----------
-        sigma2 : dict, optional
-            A dictionary containing the measurement errors (sigma^2). The
-            default is None.
-        n_candidates : int, optional
-            Number of candidate samples. The default is 5.
-        var : string, optional
-            Utility function. The default is None.
-
-        Raises
-        ------
-        NameError
-            Wrong utility function.
-
-        Returns
-        -------
-        Xnew : array (n_samples, n_params)
-            Selected new training point(s).
-        """
-
-        # Initialization
-        MetaModel = self.MetaModel
-        Bounds = MetaModel.bound_tuples
-        n_new_samples = MetaModel.ExpDesign.n_new_samples
-        explore_method = MetaModel.ExpDesign.explore_method
-        exploit_method = MetaModel.ExpDesign.exploit_method
-        n_cand_groups = MetaModel.ExpDesign.n_cand_groups
-        tradeoff_scheme = MetaModel.ExpDesign.tradeoff_scheme
-
-        old_EDX = MetaModel.ExpDesign.X
-        old_EDY = MetaModel.ExpDesign.Y.copy()
-        ndim = MetaModel.ExpDesign.X.shape[1]
-        OutputNames = MetaModel.ModelObj.Output.names
-
-        # -----------------------------------------
-        # ----------- CUSTOMIZED METHODS ----------
-        # -----------------------------------------
-        # Utility function exploit_method provided by user
-        if exploit_method.lower() == 'user':
-
-            Xnew, filteredSamples = MetaModel.ExpDesign.ExploitFunction(self)
-
-            print("\n")
-            print("\nXnew:\n", Xnew)
-
-            return Xnew, filteredSamples
-
-        # -----------------------------------------
-        # ---------- EXPLORATION METHODS ----------
-        # -----------------------------------------
-        if explore_method == 'dual annealing':
-            # ------- EXPLORATION: OPTIMIZATION -------
-            import time
-            start_time = time.time()
-
-            # Divide the domain to subdomains
-            args = []
-            subdomains = self.subdomain(Bounds, n_new_samples)
-            for i in range(n_new_samples):
-                args.append((exploit_method, subdomains[i], sigma2, var, i))
-
-            # Multiprocessing
-            pool = multiprocessing.Pool(multiprocessing.cpu_count())
-
-            # With Pool.starmap_async()
-            results = pool.starmap_async(self.dual_annealing, args).get()
-
-            # Close the pool
-            pool.close()
-
-            Xnew = np.array([results[i][1] for i in range(n_new_samples)])
-
-            print("\nXnew:\n", Xnew)
-
-            elapsed_time = time.time() - start_time
-            print("\n")
-            print(f"Elapsed_time: {round(elapsed_time,2)} sec.")
-            print('-'*20)
-
-        elif explore_method == 'LOOCV':
-            # -----------------------------------------------------------------
-            # TODO: LOOCV model construnction based on Feng et al. (2020)
-            # 'LOOCV':
-            # Initilize the ExploitScore array
-
-            # Generate random samples
-            allCandidates = MetaModel.ExpDesign.generate_samples(n_candidates,
-                                                                'random')
-
-            # Construct error model based on LCerror
-            errorModel = MetaModel.create_ModelError(old_EDX, self.LCerror)
-            self.errorModel.append(copy(errorModel))
-
-            # Evaluate the error models for allCandidates
-            eLCAllCands, _ = errorModel.eval_errormodel(allCandidates)
-            # Select the maximum as the representative error
-            eLCAllCands = np.dstack(eLCAllCands.values())
-            eLCAllCandidates = np.max(eLCAllCands, axis=1)[:, 0]
-
-            # Normalize the error w.r.t the maximum error
-            scoreExploration = eLCAllCandidates / np.sum(eLCAllCandidates)
-
-        else:
-            # ------- EXPLORATION: SPACE-FILLING DESIGN -------
-            # Generate candidate samples from Exploration class
-            explore = Exploration(MetaModel, n_candidates)
-            explore.w = 100  # * ndim #500
-            # Select criterion (mc-intersite-proj-th, mc-intersite-proj)
-            explore.mc_criterion = 'mc-intersite-proj'
-            allCandidates, scoreExploration = explore.get_exploration_samples()
-
-            # Temp: ---- Plot all candidates -----
-            if ndim == 2:
-                def plotter(points, allCandidates, Method,
-                            scoreExploration=None):
-                    if Method == 'Voronoi':
-                        from scipy.spatial import Voronoi, voronoi_plot_2d
-                        vor = Voronoi(points)
-                        fig = voronoi_plot_2d(vor)
-                        ax1 = fig.axes[0]
-                    else:
-                        fig = plt.figure()
-                        ax1 = fig.add_subplot(111)
-                    ax1.scatter(points[:, 0], points[:, 1], s=10, c='r',
-                                marker="s", label='Old Design Points')
-                    ax1.scatter(allCandidates[:, 0], allCandidates[:, 1], s=10,
-                                c='b', marker="o", label='Design candidates')
-                    for i in range(points.shape[0]):
-                        txt = 'p'+str(i+1)
-                        ax1.annotate(txt, (points[i, 0], points[i, 1]))
-                    if scoreExploration is not None:
-                        for i in range(allCandidates.shape[0]):
-                            txt = str(round(scoreExploration[i], 5))
-                            ax1.annotate(txt, (allCandidates[i, 0],
-                                               allCandidates[i, 1]))
-
-                    plt.xlim(self.bound_tuples[0])
-                    plt.ylim(self.bound_tuples[1])
-                    # plt.show()
-                    plt.legend(loc='upper left')
-
-        # -----------------------------------------
-        # --------- EXPLOITATION METHODS ----------
-        # -----------------------------------------
-        if exploit_method == 'BayesOptDesign' or\
-           exploit_method == 'BayesActDesign':
-
-            # ------- Calculate Exoploration weight -------
-            # Compute exploration weight based on trade off scheme
-            explore_w, exploit_w = self.tradoff_weights(tradeoff_scheme,
-                                                        old_EDX,
-                                                        old_EDY)
-            print(f"\n Exploration weight={explore_w:0.3f} "
-                  f"Exploitation weight={exploit_w:0.3f}\n")
-
-            # ------- EXPLOITATION: BayesOptDesign & ActiveLearning -------
-            if explore_w != 1.0:
-
-                # Create a sample pool for rejection sampling
-                MCsize = 15000
-                X_MC = MetaModel.ExpDesign.generate_samples(MCsize, 'random')
-                candidates = MetaModel.ExpDesign.generate_samples(
-                    MetaModel.ExpDesign.max_func_itr, 'latin_hypercube')
-
-                # Split the candidates in groups for multiprocessing
-                split_cand = np.array_split(
-                    candidates, n_cand_groups, axis=0
-                    )
-
-                results = Parallel(n_jobs=-1, backend='threading')(
-                        delayed(self.run_util_func)(
-                            exploit_method, split_cand[i], i, sigma2, var, X_MC)
-                        for i in range(n_cand_groups))
-                # out = map(self.run_util_func,
-                #           [exploit_method]*n_cand_groups,
-                #           split_cand,
-                #           range(n_cand_groups),
-                #           [sigma2] * n_cand_groups,
-                #           [var] * n_cand_groups,
-                #           [X_MC] * n_cand_groups
-                #           )
-                # results = list(out)
-
-                # Retrieve the results and append them
-                U_J_d = np.concatenate([results[NofE][1] for NofE in
-                                        range(n_cand_groups)])
-
-                # Check if all scores are inf
-                if np.isinf(U_J_d).all() or np.isnan(U_J_d).all():
-                    U_J_d = np.ones(len(U_J_d))
-
-                # Get the expected value (mean) of the Utility score
-                # for each cell
-                if explore_method == 'Voronoi':
-                    U_J_d = np.mean(U_J_d.reshape(-1, n_candidates), axis=1)
-
-                # create surrogate model for U_J_d
-                from sklearn.preprocessing import MinMaxScaler
-                # Take care of inf entries
-                good_indices = [i for i, arr in enumerate(U_J_d)
-                                if np.isfinite(arr).all()]
-                scaler = MinMaxScaler()
-                X_S = scaler.fit_transform(candidates[good_indices])
-                gp = MetaModel.gaussian_process_emulator(
-                    X_S, U_J_d[good_indices], autoSelect=True
-                    )
-                U_J_d = gp.predict(scaler.transform(allCandidates))
-
-                # Normalize U_J_d
-                norm_U_J_d = U_J_d / np.sum(U_J_d)
-                print("norm_U_J_d:\n", norm_U_J_d)
-            else:
-                norm_U_J_d = np.zeros((len(scoreExploration)))
-
-            # ------- Calculate Total score -------
-            # ------- Trade off between EXPLORATION & EXPLOITATION -------
-            # Total score
-            totalScore = exploit_w * norm_U_J_d
-            totalScore += explore_w * scoreExploration
-
-            # temp: Plot
-            # dim = self.ExpDesign.X.shape[1]
-            # if dim == 2:
-            #     plotter(self.ExpDesign.X, allCandidates, explore_method)
-
-            # ------- Select the best candidate -------
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            temp = totalScore.copy()
-            temp[np.isnan(totalScore)] = -np.inf
-            sorted_idxtotalScore = np.argsort(temp)[::-1]
-            bestIdx = sorted_idxtotalScore[:n_new_samples]
-
-            # select the requested number of samples
-            if explore_method == 'Voronoi':
-                Xnew = np.zeros((n_new_samples, ndim))
-                for i, idx in enumerate(bestIdx):
-                    X_can = explore.closestPoints[idx]
-
-                    # Calculate the maxmin score for the region of interest
-                    newSamples, maxminScore = explore.get_mc_samples(X_can)
-
-                    # select the requested number of samples
-                    Xnew[i] = newSamples[np.argmax(maxminScore)]
-            else:
-                Xnew = allCandidates[sorted_idxtotalScore[:n_new_samples]]
-
-        elif exploit_method == 'VarOptDesign':
-            # ------- EXPLOITATION: VarOptDesign -------
-            UtilMethod = var
-
-            # ------- Calculate Exoploration weight -------
-            # Compute exploration weight based on trade off scheme
-            explore_w, exploit_w = self.tradoff_weights(tradeoff_scheme,
-                                                        old_EDX,
-                                                        old_EDY)
-            print(f"\nweightExploration={explore_w:0.3f} "
-                  f"weightExploitation={exploit_w:0.3f}")
-
-            # Generate candidate samples from Exploration class
-            nMeasurement = old_EDY[OutputNames[0]].shape[1]
-
-            # Find sensitive region
-            if UtilMethod == 'LOOCV':
-                LCerror = MetaModel.LCerror
-                allModifiedLOO = np.zeros((len(old_EDX), len(OutputNames),
-                                           nMeasurement))
-                for y_idx, y_key in enumerate(OutputNames):
-                    for idx, key in enumerate(LCerror[y_key].keys()):
-                        allModifiedLOO[:, y_idx, idx] = abs(
-                            LCerror[y_key][key])
-
-                ExploitScore = np.max(np.max(allModifiedLOO, axis=1), axis=1)
-
-            elif UtilMethod in ['EIGF', 'ALM']:
-                # ----- All other in  ['EIGF', 'ALM'] -----
-                # Initilize the ExploitScore array
-                ExploitScore = np.zeros((len(old_EDX), len(OutputNames)))
-
-                # Split the candidates in groups for multiprocessing
-                if explore_method != 'Voronoi':
-                    split_cand = np.array_split(allCandidates,
-                                                n_cand_groups,
-                                                axis=0)
-                    goodSampleIdx = range(n_cand_groups)
-                else:
-                    # Find indices of the Vornoi cells with samples
-                    goodSampleIdx = []
-                    for idx in range(len(explore.closest_points)):
-                        if len(explore.closest_points[idx]) != 0:
-                            goodSampleIdx.append(idx)
-                    split_cand = explore.closest_points
-
-                # Split the candidates in groups for multiprocessing
-                args = []
-                for index in goodSampleIdx:
-                    args.append((exploit_method, split_cand[index], index,
-                                 sigma2, var))
-
-                # Multiprocessing
-                pool = multiprocessing.Pool(multiprocessing.cpu_count())
-                # With Pool.starmap_async()
-                results = pool.starmap_async(self.run_util_func, args).get()
-
-                # Close the pool
-                pool.close()
-                # out = map(self.run_util_func,
-                #           [exploit_method]*len(goodSampleIdx),
-                #           split_cand,
-                #           range(len(goodSampleIdx)),
-                #           [sigma2] * len(goodSampleIdx),
-                #           [var] * len(goodSampleIdx)
-                #           )
-                # results = list(out)
-
-                # Retrieve the results and append them
-                if explore_method == 'Voronoi':
-                    ExploitScore = [np.mean(results[k][1]) for k in
-                                    range(len(goodSampleIdx))]
-                else:
-                    ExploitScore = np.concatenate(
-                        [results[k][1] for k in range(len(goodSampleIdx))])
-
-            else:
-                raise NameError('The requested utility function is not '
-                                'available.')
-
-            # print("ExploitScore:\n", ExploitScore)
-
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            # Total score
-            # Normalize U_J_d
-            ExploitScore = ExploitScore / np.sum(ExploitScore)
-            totalScore = exploit_w * ExploitScore
-            totalScore += explore_w * scoreExploration
-
-            temp = totalScore.copy()
-            sorted_idxtotalScore = np.argsort(temp, axis=0)[::-1]
-            bestIdx = sorted_idxtotalScore[:n_new_samples]
-
-            Xnew = np.zeros((n_new_samples, ndim))
-            if explore_method != 'Voronoi':
-                Xnew = allCandidates[bestIdx]
-            else:
-                for i, idx in enumerate(bestIdx.flatten()):
-                    X_can = explore.closest_points[idx]
-                    # plotter(self.ExpDesign.X, X_can, explore_method,
-                    # scoreExploration=None)
-
-                    # Calculate the maxmin score for the region of interest
-                    newSamples, maxminScore = explore.get_mc_samples(X_can)
-
-                    # select the requested number of samples
-                    Xnew[i] = newSamples[np.argmax(maxminScore)]
-
-        elif exploit_method == 'alphabetic':
-            # ------- EXPLOITATION: ALPHABETIC -------
-            Xnew = self.util_AlphOptDesign(allCandidates, var)
-
-        elif exploit_method == 'Space-filling':
-            # ------- EXPLOITATION: SPACE-FILLING -------
-            totalScore = scoreExploration
-
-            # ------- Select the best candidate -------
-            # find an optimal point subset to add to the initial design by
-            # maximization of the utility score and taking care of NaN values
-            temp = totalScore.copy()
-            temp[np.isnan(totalScore)] = -np.inf
-            sorted_idxtotalScore = np.argsort(temp)[::-1]
-
-            # select the requested number of samples
-            Xnew = allCandidates[sorted_idxtotalScore[:n_new_samples]]
-
-        else:
-            raise NameError('The requested design method is not available.')
-
-        print("\n")
-        print("\nRun No. {}:".format(old_EDX.shape[0]+1))
-        print("Xnew:\n", Xnew)
-        gc.collect()
-
-        return Xnew, None
-
-    # -------------------------------------------------------------------------
-    def util_AlphOptDesign(self, candidates, var='D-Opt'):
-        """
-        Enriches the Experimental design with the requested alphabetic
-        criterion based on exploring the space with number of sampling points.
-
-        Ref: Hadigol, M., & Doostan, A. (2018). Least squares polynomial chaos
-        expansion: A review of sampling strategies., Computer Methods in
-        Applied Mechanics and Engineering, 332, 382-407.
-
-        Arguments
-        ---------
-        NCandidate : int
-            Number of candidate points to be searched
-
-        var : string
-            Alphabetic optimality criterion
-
-        Returns
-        -------
-        X_new : array of shape (1, n_params)
-            The new sampling location in the input space.
-        """
-        MetaModelOrig = self
-        Model = self.Model
-        n_new_samples = MetaModelOrig.ExpDesign.n_new_samples
-        NCandidate = candidates.shape[0]
-
-        # TODO: Loop over outputs
-        OutputName = Model.Output.names[0]
-
-        # To avoid changes ub original aPCE object
-        MetaModel = deepcopy(MetaModelOrig)
-
-        # Old Experimental design
-        oldExpDesignX = MetaModel.ExpDesign.X
-
-        # TODO: Only one psi can be selected.
-        # Suggestion: Go for the one with the highest LOO error
-        Scores = list(MetaModel.score_dict[OutputName].values())
-        ModifiedLOO = [1-score for score in Scores]
-        outIdx = np.argmax(ModifiedLOO)
-
-        # Initialize Phi to save the criterion's values
-        Phi = np.zeros((NCandidate))
-
-        BasisIndices = MetaModelOrig.basis_dict[OutputName]["y_"+str(outIdx+1)]
-        P = len(BasisIndices)
-
-        # ------ Old Psi ------------
-        univ_p_val = MetaModelOrig.univ_basis_vals(oldExpDesignX)
-        Psi = MetaModelOrig.create_psi(BasisIndices, univ_p_val)
-
-        # ------ New candidates (Psi_c) ------------
-        # Assemble Psi_c
-        univ_p_val_c = self.univ_basis_vals(candidates)
-        Psi_c = self.create_psi(BasisIndices, univ_p_val_c)
-
-        for idx in range(NCandidate):
-
-            # Include the new row to the original Psi
-            Psi_cand = np.vstack((Psi, Psi_c[idx]))
-
-            # Information matrix
-            PsiTPsi = np.dot(Psi_cand.T, Psi_cand)
-            M = PsiTPsi / (len(oldExpDesignX)+1)
-
-            if np.linalg.cond(PsiTPsi) > 1e-12 \
-               and np.linalg.cond(PsiTPsi) < 1 / sys.float_info.epsilon:
-                # faster
-                invM = linalg.solve(M, sparse.eye(PsiTPsi.shape[0]).toarray())
-            else:
-                # stabler
-                invM = np.linalg.pinv(M)
-
-            # ---------- Calculate optimality criterion ----------
-            # Optimality criteria according to Section 4.5.1 in Ref.
-
-            # D-Opt
-            if var == 'D-Opt':
-                Phi[idx] = (np.linalg.det(invM)) ** (1/P)
-
-            # A-Opt
-            elif var == 'A-Opt':
-                Phi[idx] = np.trace(invM)
-
-            # K-Opt
-            elif var == 'K-Opt':
-                Phi[idx] = np.linalg.cond(M)
-
-            else:
-                raise Exception('The optimality criterion you requested has '
-                      'not been implemented yet!')
-
-        # find an optimal point subset to add to the initial design
-        # by minimization of the Phi
-        sorted_idxtotalScore = np.argsort(Phi)
-
-        # select the requested number of samples
-        Xnew = candidates[sorted_idxtotalScore[:n_new_samples]]
-
-        return Xnew
-
-    # -------------------------------------------------------------------------
-    def __normpdf(self, y_hat_pce, std_pce, obs_data, total_sigma2s,
-                  rmse=None):
-
-        Model = self.Model
-        likelihoods = 1.0
-
-        # Loop over the outputs
-        for idx, out in enumerate(Model.Output.names):
-
-            # (Meta)Model Output
-            nsamples, nout = y_hat_pce[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout].values
-
-            # Surrogate error if valid dataset is given.
-            if rmse is not None:
-                tot_sigma2s += rmse[out]**2
-
-            likelihoods *= stats.multivariate_normal.pdf(
-                y_hat_pce[out], data, np.diag(tot_sigma2s),
-                allow_singular=True)
-        self.Likelihoods = likelihoods
-
-        return likelihoods
-
-    # -------------------------------------------------------------------------
-    def __corr_factor_BME(self, obs_data, total_sigma2s, logBME):
-        """
-        Calculates the correction factor for BMEs.
-        """
-        MetaModel = self.MetaModel
-        samples = MetaModel.ExpDesign.X  # valid_samples
-        model_outputs = MetaModel.ExpDesign.Y  # valid_model_runs
-        Model = MetaModel.ModelObj
-        n_samples = samples.shape[0]
-
-        # Extract the requested model outputs for likelihood calulation
-        output_names = Model.Output.names
-
-        # TODO: Evaluate MetaModel on the experimental design and ValidSet
-        OutputRS, stdOutputRS = MetaModel.eval_metamodel(samples=samples)
-
-        logLik_data = np.zeros((n_samples))
-        logLik_model = np.zeros((n_samples))
-        # Loop over the outputs
-        for idx, out in enumerate(output_names):
-
-            # (Meta)Model Output
-            nsamples, nout = model_outputs[out].shape
-
-            # Prepare data and remove NaN
-            try:
-                data = obs_data[out].values[~np.isnan(obs_data[out])]
-            except AttributeError:
-                data = obs_data[out][~np.isnan(obs_data[out])]
-
-            # Prepare sigma2s
-            non_nan_indices = ~np.isnan(total_sigma2s[out])
-            tot_sigma2s = total_sigma2s[out][non_nan_indices][:nout]
-
-            # Covariance Matrix
-            covMatrix_data = np.diag(tot_sigma2s)
-
-            for i, sample in enumerate(samples):
-
-                # Simulation run
-                y_m = model_outputs[out][i]
-
-                # Surrogate prediction
-                y_m_hat = OutputRS[out][i]
-
-                # CovMatrix with the surrogate error
-                # covMatrix = np.diag(stdOutputRS[out][i]**2)
-                covMatrix = np.diag((y_m-y_m_hat)**2)
-                covMatrix = np.diag(
-                    np.mean((model_outputs[out]-OutputRS[out]), axis=0)**2
-                    )
-
-                # Compute likelilhood output vs data
-                logLik_data[i] += self.__logpdf(
-                    y_m_hat, data, covMatrix_data
-                    )
-
-                # Compute likelilhood output vs surrogate
-                logLik_model[i] += self.__logpdf(y_m_hat, y_m, covMatrix)
-
-        # Weight
-        logLik_data -= logBME
-        weights = np.exp(logLik_model+logLik_data)
-
-        return np.log(np.mean(weights))
-
-    # -------------------------------------------------------------------------
-    def __logpdf(self, x, mean, cov):
-        """
-        computes the likelihood based on a multivariate normal distribution.
-
-        Parameters
-        ----------
-        x : TYPE
-            DESCRIPTION.
-        mean : array_like
-            Observation data.
-        cov : 2d array
-            Covariance matrix of the distribution.
-
-        Returns
-        -------
-        log_lik : float
-            Log likelihood.
-
-        """
-        n = len(mean)
-        L = linalg.cholesky(cov, lower=True)
-        beta = np.sum(np.log(np.diag(L)))
-        dev = x - mean
-        alpha = dev.dot(linalg.cho_solve((L, True), dev))
-        log_lik = -0.5 * alpha - beta - n / 2. * np.log(2 * np.pi)
-
-        return log_lik
-
-    # -------------------------------------------------------------------------
-    def __posteriorPlot(self, posterior, par_names, key):
-
-        # Initialization
-        newpath = (r'Outputs_SeqPosteriorComparison/posterior')
-        os.makedirs(newpath, exist_ok=True)
-
-        bound_tuples = self.MetaModel.bound_tuples
-        n_params = len(par_names)
-        font_size = 40
-        if n_params == 2:
-
-            figPosterior, ax = plt.subplots(figsize=(15, 15))
-
-            sns.kdeplot(x=posterior[:, 0], y=posterior[:, 1],
-                        fill=True, ax=ax, cmap=plt.cm.jet,
-                        clip=bound_tuples)
-            # Axis labels
-            plt.xlabel(par_names[0], fontsize=font_size)
-            plt.ylabel(par_names[1], fontsize=font_size)
-
-            # Set axis limit
-            plt.xlim(bound_tuples[0])
-            plt.ylim(bound_tuples[1])
-
-            # Increase font size
-            plt.xticks(fontsize=font_size)
-            plt.yticks(fontsize=font_size)
-
-            # Switch off the grids
-            plt.grid(False)
-
-        else:
-            import corner
-            figPosterior = corner.corner(posterior, labels=par_names,
-                                         title_fmt='.2e', show_titles=True,
-                                         title_kwargs={"fontsize": 12})
-
-        figPosterior.savefig(f'./{newpath}/{key}.pdf', bbox_inches='tight')
-        plt.close()
-
-        # Save the posterior as .npy
-        np.save(f'./{newpath}/{key}.npy', posterior)
-
-        return figPosterior
-
-    # -------------------------------------------------------------------------
-    def __hellinger_distance(self, P, Q):
-        """
-        Hellinger distance between two continuous distributions.
-
-        The maximum distance 1 is achieved when P assigns probability zero to
-        every set to which Q assigns a positive probability, and vice versa.
-        0 (identical) and 1 (maximally different)
-
-        Parameters
-        ----------
-        P : array
-            Reference likelihood.
-        Q : array
-            Estimated likelihood.
-
-        Returns
-        -------
-        float
-            Hellinger distance of two distributions.
-
-        """
-        mu1 = P.mean()
-        Sigma1 = np.std(P)
-
-        mu2 = Q.mean()
-        Sigma2 = np.std(Q)
-
-        term1 = np.sqrt(2*Sigma1*Sigma2 / (Sigma1**2 + Sigma2**2))
-
-        term2 = np.exp(-.25 * (mu1 - mu2)**2 / (Sigma1**2 + Sigma2**2))
-
-        H_squared = 1 - term1 * term2
-
-        return np.sqrt(H_squared)
-
-    # -------------------------------------------------------------------------
-    def __BME_Calculator(self, MetaModel, obs_data, sigma2Dict, rmse=None):
-        """
-        This function computes the Bayesian model evidence (BME) via Monte
-        Carlo integration.
-
-        """
-        # Initializations
-        valid_likelihoods = MetaModel.valid_likelihoods
-
-        post_snapshot = MetaModel.ExpDesign.post_snapshot
-        if post_snapshot or len(valid_likelihoods) != 0:
-            newpath = (r'Outputs_SeqPosteriorComparison/likelihood_vs_ref')
-            os.makedirs(newpath, exist_ok=True)
-
-        SamplingMethod = 'random'
-        MCsize = 10000
-        ESS = 0
-
-        # Estimation of the integral via Monte Varlo integration
-        while (ESS > MCsize) or (ESS < 1):
-
-            # Generate samples for Monte Carlo simulation
-            X_MC = MetaModel.ExpDesign.generate_samples(
-                MCsize, SamplingMethod
-                )
-
-            # Monte Carlo simulation for the candidate design
-            m_1 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-            Y_MC, std_MC = MetaModel.eval_metamodel(samples=X_MC)
-            m_2 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-            print(f"\nMemory eval_metamodel in BME: {m_2-m_1:.2f} MB")
-
-            # Likelihood computation (Comparison of data and
-            # simulation results via PCE with candidate design)
-            Likelihoods = self.__normpdf(
-                Y_MC, std_MC, obs_data, sigma2Dict, rmse
-                )
-
-            # Check the Effective Sample Size (1000<ESS<MCsize)
-            ESS = 1 / np.sum(np.square(Likelihoods/np.sum(Likelihoods)))
-
-            # Enlarge sample size if it doesn't fulfill the criteria
-            if (ESS > MCsize) or (ESS < 1):
-                print(f'ESS={ESS} MC size should be larger.')
-                MCsize *= 10
-                ESS = 0
-
-        # Rejection Step
-        # Random numbers between 0 and 1
-        unif = np.random.rand(1, MCsize)[0]
-
-        # Reject the poorly performed prior
-        accepted = (Likelihoods/np.max(Likelihoods)) >= unif
-        X_Posterior = X_MC[accepted]
-
-        # ------------------------------------------------------------
-        # --- Kullback-Leibler Divergence & Information Entropy ------
-        # ------------------------------------------------------------
-        # Prior-based estimation of BME
-        logBME = np.log(np.nanmean(Likelihoods))
-
-        # TODO: Correction factor
-        # log_weight = self.__corr_factor_BME(obs_data, sigma2Dict, logBME)
-
-        # Posterior-based expectation of likelihoods
-        postExpLikelihoods = np.mean(np.log(Likelihoods[accepted]))
-
-        # Posterior-based expectation of prior densities
-        postExpPrior = np.mean(
-            np.log(MetaModel.ExpDesign.JDist.pdf(X_Posterior.T))
-            )
-
-        # Calculate Kullback-Leibler Divergence
-        # KLD = np.mean(np.log(Likelihoods[Likelihoods!=0])- logBME)
-        KLD = postExpLikelihoods - logBME
-
-        # Information Entropy based on Entropy paper Eq. 38
-        infEntropy = logBME - postExpPrior - postExpLikelihoods
-
-        # If post_snapshot is True, plot likelihood vs refrence
-        if post_snapshot or len(valid_likelihoods) != 0:
-            # Hellinger distance
-            ref_like = np.log(valid_likelihoods[valid_likelihoods > 0])
-            est_like = np.log(Likelihoods[Likelihoods > 0])
-            distHellinger = self.__hellinger_distance(ref_like, est_like)
-
-            idx = len([name for name in os.listdir(newpath) if 'Likelihoods_'
-                       in name and os.path.isfile(os.path.join(newpath, name))])
-            fig, ax = plt.subplots()
-            try:
-                sns.kdeplot(np.log(valid_likelihoods[valid_likelihoods > 0]),
-                            shade=True, color="g", label='Ref. Likelihood')
-                sns.kdeplot(np.log(Likelihoods[Likelihoods > 0]), shade=True,
-                            color="b", label='Likelihood with PCE')
-            except:
-                pass
-
-            text = f"Hellinger Dist.={distHellinger:.3f}\n logBME={logBME:.3f}"
-            "\n DKL={KLD:.3f}"
-
-            plt.text(0.05, 0.75, text, bbox=dict(facecolor='wheat',
-                                                 edgecolor='black',
-                                                 boxstyle='round,pad=1'),
-                     transform=ax.transAxes)
-
-            fig.savefig(f'./{newpath}/Likelihoods_{idx}.pdf',
-                        bbox_inches='tight')
-            plt.close()
-
-        else:
-            distHellinger = 0.0
-
-        # Bayesian inference with Emulator only for 2D problem
-        if post_snapshot and MetaModel.n_params == 2 and not idx % 5:
-            from bayes_inference.bayes_inference import BayesInference
-            from bayes_inference.discrepancy import Discrepancy
-            import pandas as pd
-            BayesOpts = BayesInference(MetaModel)
-            BayesOpts.emulator = True
-            BayesOpts.plot_post_pred = False
-
-            # Select the inference method
-            import emcee
-            BayesOpts.inference_method = "MCMC"
-            # Set the MCMC parameters passed to self.mcmc_params
-            BayesOpts.mcmc_params = {
-                'n_steps': 1e5,
-                'n_walkers': 30,
-                'moves': emcee.moves.KDEMove(),
-                'verbose': False
-                }
-
-            # ----- Define the discrepancy model -------
-            obs_data = pd.DataFrame(obs_data, columns=self.Model.Output.names)
-            BayesOpts.measurement_error = obs_data
-
-            # # -- (Option B) --
-            DiscrepancyOpts = Discrepancy('')
-            DiscrepancyOpts.type = 'Gaussian'
-            DiscrepancyOpts.parameters = obs_data**2
-            BayesOpts.Discrepancy = DiscrepancyOpts
-            # Start the calibration/inference
-            Bayes_PCE = BayesOpts.create_inference()
-            X_Posterior = Bayes_PCE.posterior_df.values
-
-        # Clean up
-        del Y_MC, std_MC
-        gc.collect()
-
-        return (logBME, KLD, X_Posterior, Likelihoods, distHellinger)
-
-    # -------------------------------------------------------------------------
-    def __validError(self, MetaModel):
-
-        # MetaModel = self.MetaModel
-        Model = MetaModel.ModelObj
-        OutputName = Model.Output.names
-
-        # Extract the original model with the generated samples
-        valid_samples = MetaModel.valid_samples
-        valid_model_runs = MetaModel.valid_model_runs
-
-        # Run the PCE model with the generated samples
-        m_1 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-        valid_PCE_runs, valid_PCE_std = MetaModel.eval_metamodel(samples=valid_samples)
-        m_2 = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024
-        print(f"\nMemory eval_metamodel: {m_2-m_1:.2f} MB")
-
-        rms_error = {}
-        valid_error = {}
-        # Loop over the keys and compute RMSE error.
-        for key in OutputName:
-            rms_error[key] = mean_squared_error(
-                valid_model_runs[key], valid_PCE_runs[key],
-                multioutput='raw_values',
-                sample_weight=None,
-                squared=False)
-
-            # Validation error
-            valid_error[key] = (rms_error[key]**2)
-            valid_error[key] /= np.var(valid_model_runs[key], ddof=1, axis=0)
-
-            # Print a report table
-            print("\n>>>>> Updated Errors of {} <<<<<".format(key))
-            print("\nIndex  |  RMSE   |  Validation Error")
-            print('-'*35)
-            print('\n'.join(f'{i+1}  |  {k:.3e}  |  {j:.3e}' for i, (k, j)
-                            in enumerate(zip(rms_error[key],
-                                             valid_error[key]))))
-
-        return rms_error, valid_error
-
-    # -------------------------------------------------------------------------
-    def __error_Mean_Std(self):
-
-        MetaModel = self.MetaModel
-        # Extract the mean and std provided by user
-        df_MCReference = MetaModel.ModelObj.mc_reference
-
-        # Compute the mean and std based on the MetaModel
-        pce_means, pce_stds = self._compute_pce_moments(MetaModel)
-
-        # Compute the root mean squared error
-        for output in MetaModel.ModelObj.Output.names:
-
-            # Compute the error between mean and std of MetaModel and OrigModel
-            RMSE_Mean = mean_squared_error(
-                df_MCReference['mean'], pce_means[output], squared=False
-                )
-            RMSE_std = mean_squared_error(
-                df_MCReference['std'], pce_means[output], squared=False
-                )
-
-        return RMSE_Mean, RMSE_std
-
-    # -------------------------------------------------------------------------
-    def _compute_pce_moments(self, MetaModel):
-        """
-        Computes the first two moments using the PCE-based meta-model.
-
-        Returns
-        -------
-        pce_means: dict
-            The first moment (mean) of the surrogate.
-        pce_stds: dict
-            The second moment (standard deviation) of the surrogate.
-
-        """
-        outputs = MetaModel.ModelObj.Output.names
-        pce_means_b = {}
-        pce_stds_b = {}
-
-        # Loop over bootstrap iterations
-        for b_i in range(MetaModel.n_bootstrap_itrs):
-            # Loop over the metamodels
-            coeffs_dicts = MetaModel.coeffs_dict[f'b_{b_i+1}'].items()
-            means = {}
-            stds = {}
-            for output, coef_dict in coeffs_dicts:
-
-                pce_mean = np.zeros((len(coef_dict)))
-                pce_var = np.zeros((len(coef_dict)))
-
-                for index, values in coef_dict.items():
-                    idx = int(index.split('_')[1]) - 1
-                    coeffs = MetaModel.coeffs_dict[f'b_{b_i+1}'][output][index]
-
-                    # Mean = c_0
-                    if coeffs[0] != 0:
-                        pce_mean[idx] = coeffs[0]
-                    else:
-                        clf_poly = MetaModel.clf_poly[f'b_{b_i+1}'][output]
-                        pce_mean[idx] = clf_poly[index].intercept_
-                    # Var = sum(coeffs[1:]**2)
-                    pce_var[idx] = np.sum(np.square(coeffs[1:]))
-
-                # Save predictions for each output
-                if MetaModel.dim_red_method.lower() == 'pca':
-                    PCA = MetaModel.pca[f'b_{b_i+1}'][output]
-                    means[output] = PCA.mean_ + np.dot(
-                        pce_mean, PCA.components_)
-                    stds[output] = np.sqrt(np.dot(pce_var,
-                                                  PCA.components_**2))
-                else:
-                    means[output] = pce_mean
-                    stds[output] = np.sqrt(pce_var)
-
-            # Save predictions for each bootstrap iteration
-            pce_means_b[b_i] = means
-            pce_stds_b[b_i] = stds
-
-        # Change the order of nesting
-        mean_all = {}
-        for i in sorted(pce_means_b):
-            for k, v in pce_means_b[i].items():
-                if k not in mean_all:
-                    mean_all[k] = [None] * len(pce_means_b)
-                mean_all[k][i] = v
-        std_all = {}
-        for i in sorted(pce_stds_b):
-            for k, v in pce_stds_b[i].items():
-                if k not in std_all:
-                    std_all[k] = [None] * len(pce_stds_b)
-                std_all[k][i] = v
-
-        # Back transformation if PCA is selected.
-        pce_means, pce_stds = {}, {}
-        for output in outputs:
-            pce_means[output] = np.mean(mean_all[output], axis=0)
-            pce_stds[output] = np.mean(std_all[output], axis=0)
-
-        return pce_means, pce_stds
diff --git a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/surrogate_models.py b/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/surrogate_models.py
deleted file mode 100644
index a6d31ccd1..000000000
--- a/examples/umbridge_tsunamitutorial/bayesvalidrox/surrogate_models/surrogate_models.py
+++ /dev/null
@@ -1,1473 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import warnings
-import numpy as np
-import math
-import h5py
-import matplotlib.pyplot as plt
-from sklearn.preprocessing import MinMaxScaler
-import scipy as sp
-from tqdm import tqdm
-from sklearn.decomposition import PCA as sklearnPCA
-import sklearn.linear_model as lm
-from sklearn.gaussian_process import GaussianProcessRegressor
-import sklearn.gaussian_process.kernels as kernels
-import os
-from joblib import Parallel, delayed
-import copy
-
-from .input_space import InputSpace
-from .glexindex import glexindex
-from .eval_rec_rule import eval_univ_basis
-from .reg_fast_ard import RegressionFastARD
-from .reg_fast_laplace import RegressionFastLaplace
-from .orthogonal_matching_pursuit import OrthogonalMatchingPursuit
-from .bayes_linear import VBLinearRegression, EBLinearRegression
-from .apoly_construction import apoly_construction
-warnings.filterwarnings("ignore")
-# Load the mplstyle
-plt.style.use(os.path.join(os.path.split(__file__)[0],
-                           '../', 'bayesvalidrox.mplstyle'))
-
-
-class MetaModel():
-    """
-    Meta (surrogate) model
-
-    This class trains a surrogate model. It accepts an input object (input_obj)
-    containing the specification of the distributions for uncertain parameters
-    and a model object with instructions on how to run the computational model.
-
-    Attributes
-    ----------
-    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:
-        polynomial chaos expansion (`PCE`), arbitrary PCE (`aPCE`) and
-        Gaussian process regression (`GPE`). Default is PCE.
-    pce_reg_method : str
-        PCE regression method to compute the coefficients. The following
-        regression methods are available:
-
-        1. OLS: Ordinary Least Square method
-        2. BRR: Bayesian Ridge Regression
-        3. LARS: Least angle regression
-        4. ARD: Bayesian ARD Regression
-        5. FastARD: Fast Bayesian ARD Regression
-        6. VBL: Variational Bayesian Learning
-        7. EBL: Emperical Bayesian Learning
-        Default is `OLS`.
-    bootstrap_method : str
-        Bootstraping method. Options are `'normal'` and `'fast'`. The default
-        is `'fast'`. It means that in each iteration except the first one, only
-        the coefficent are recalculated with the ordinary least square method.
-    n_bootstrap_itrs : int
-        Number of iterations for the bootstrap sampling. The default is `1`.
-    pce_deg : int or list of int
-        Polynomial degree(s). If a list is given, an adaptive algorithm is used
-        to find the best degree with the lowest Leave-One-Out cross-validation
-        (LOO) error (or the highest score=1-LOO). Default is `1`.
-    pce_q_norm : float
-        Hyperbolic (or q-norm) truncation for multi-indices of multivariate
-        polynomials. Default is `1.0`.
-    dim_red_method : str
-        Dimensionality reduction method for the output space. The available
-        method is based on principal component analysis (PCA). The Default is
-        `'no'`. There are two ways to select number of components: use
-        percentage of the explainable variance threshold (between 0 and 100)
-        (Option A) or direct prescription of components' number (Option B):
-
-            >>> MetaModelOpts.dim_red_method = 'PCA'
-            >>> MetaModelOpts.var_pca_threshold = 99.999  # Option A
-            >>> MetaModelOpts.n_pca_components = 12 # Option B
-
-    verbose : bool
-        Prints summary of the regression results. Default is `False`.
-
-    Note
-    -------
-    To define the sampling methods and the training set, an experimental design
-    instance shall be defined. This can be done by:
-
-    >>> MetaModelOpts.add_InputSpace()
-
-    Two experimental design schemes are supported: one-shot (`normal`) and
-    adaptive sequential (`sequential`) designs.
-    For experimental design refer to `InputSpace`.
-
-    """
-
-    def __init__(self, input_obj, meta_model_type='PCE',
-                 pce_reg_method='OLS', bootstrap_method='fast',
-                 n_bootstrap_itrs=1, pce_deg=1, pce_q_norm=1.0,
-                 dim_red_method='no', verbose=False):
-
-        self.input_obj = input_obj
-        self.meta_model_type = meta_model_type
-        self.pce_reg_method = pce_reg_method
-        self.bootstrap_method = bootstrap_method
-        self.n_bootstrap_itrs = n_bootstrap_itrs
-        self.pce_deg = pce_deg
-        self.pce_q_norm = pce_q_norm
-        self.dim_red_method = dim_red_method
-        self.verbose = verbose
- 
-    def build_metamodel(self, n_init_samples = None) -> None:
-        """
-        Builds the parts for the metamodel (polynomes,...) that are neede before fitting.
-
-        Returns
-        -------
-        None
-            DESCRIPTION.
-
-        """
-        
-        # Add InputSpace to MetaModel if it does not have any
-        if not hasattr(self, 'InputSpace'):
-            self.InputSpace = InputSpace(self.input_obj)
-            self.InputSpace.n_init_samples = n_init_samples
-            self.InputSpace.init_param_space(np.max(self.pce_deg))
-            
-        self.ndim = self.InputSpace.ndim
-        
-        if not hasattr(self, 'CollocationPoints'):
-            raise AttributeError('Please provide samples to the metamodel before building it.')
-        
-        self.n_params = len(self.input_obj.Marginals)
-        
-        # Generate polynomials
-        if self.meta_model_type.lower() != 'gpe':
-            self.generate_polynomials(np.max(self.pce_deg))
-
-        # Initialize the nested dictionaries
-        if self.meta_model_type.lower() == 'gpe':
-            self.gp_poly = self.auto_vivification()
-            self.x_scaler = self.auto_vivification()
-            self.LCerror = self.auto_vivification()
-        else:
-            self.deg_dict = self.auto_vivification()
-            self.q_norm_dict = self.auto_vivification()
-            self.coeffs_dict = self.auto_vivification()
-            self.basis_dict = self.auto_vivification()
-            self.score_dict = self.auto_vivification()
-            self.clf_poly = self.auto_vivification()
-            self.LCerror = self.auto_vivification()
-        if self.dim_red_method.lower() == 'pca':
-            self.pca = self.auto_vivification()
-
-        # Define an array containing the degrees
-        self.CollocationPoints = np.array(self.CollocationPoints)
-        self.n_samples, ndim = self.CollocationPoints.shape
-        if self.ndim != ndim:
-            raise AttributeError('The given samples do not match the given number of priors. The samples should be a 2D array of size (#samples, #priors)')
-            
-        self.deg_array = self.__select_degree(ndim, self.n_samples)
-
-        # Generate all basis indices
-        self.allBasisIndices = self.auto_vivification()
-        for deg in self.deg_array:
-            keys = self.allBasisIndices.keys()
-            if deg not in np.fromiter(keys, dtype=float):
-                # Generate the polynomial basis indices
-                for qidx, q in enumerate(self.pce_q_norm):
-                    basis_indices = glexindex(start=0, stop=deg+1,
-                                              dimensions=self.n_params,
-                                              cross_truncation=q,
-                                              reverse=False, graded=True)
-                    self.allBasisIndices[str(deg)][str(q)] = basis_indices
-
-        
-        
-    def fit(self, X, y, parallel = True, verbose = False):
-        """
-        Fits the surrogate to the given data (samples X, outputs y).
-        Note here that the samples X should be the transformed samples provided
-        by the experimental design if the transformation is used there.
-
-        Parameters
-        ----------
-        X : 2D list or np.array of shape (#samples, #dim)
-            The parameter value combinations that the model was evaluated at.
-        y : dict of 2D lists or arrays of shape (#samples, #timesteps)
-            The respective model evaluations.
-
-        Returns
-        -------
-        None.
-
-        """
-        X = np.array(X)
-        for key in y.keys():
-            y_val = np.array(y[key])
-            if y_val.ndim !=2:
-                raise ValueError('The given outputs y should be 2D')
-            y[key] = np.array(y[key])
-        
-        # Output names are the same as the keys in y
-        self.out_names = list(y.keys())
-        
-        # Build the MetaModel on the static samples
-        self.CollocationPoints = X
-        
-        # TODO: other option: rebuild every time
-        if not hasattr(self, 'deg_array'):
-            self.build_metamodel(n_init_samples = X.shape[1])
-            
-        # Evaluate the univariate polynomials on InputSpace
-        if self.meta_model_type.lower() != 'gpe':
-           self.univ_p_val = self.univ_basis_vals(self.CollocationPoints)
-        
-        # --- Loop through data points and fit the surrogate ---
-        if verbose:
-            print(f"\n>>>> Training the {self.meta_model_type} metamodel "
-                  "started. <<<<<<\n")
-
-        # --- Bootstrap sampling ---
-        # Correct number of bootstrap if PCA transformation is required.
-        if self.dim_red_method.lower() == 'pca' and self.n_bootstrap_itrs == 1:
-            self.n_bootstrap_itrs = 100
-
-        # Check if fast version (update coeffs with OLS) is selected.
-        if self.bootstrap_method.lower() == 'fast':
-            fast_bootstrap = True
-            first_out = {}
-            n_comp_dict = {}
-        else:
-            fast_bootstrap = False
-
-        # Prepare tqdm iteration maessage
-        if verbose and self.n_bootstrap_itrs > 1:
-            enum_obj = tqdm(range(self.n_bootstrap_itrs),
-                            total=self.n_bootstrap_itrs,
-                            desc="Bootstrapping the metamodel",
-                            ascii=True)
-        else:
-            enum_obj = range(self.n_bootstrap_itrs)
-
-        # Loop over the bootstrap iterations
-        for b_i in enum_obj:
-            if b_i > 0:
-                b_indices = np.random.randint(self.n_samples, size=self.n_samples)
-            else:
-                b_indices = np.arange(len(X))
-
-            X_train_b = X[b_indices]
-
-            if verbose and self.n_bootstrap_itrs == 1:
-                items = tqdm(y.items(), desc="Fitting regression")
-            else:
-                items = y.items()
-
-            # For loop over the components/outputs
-            for key, Output in items:
-
-                # Dimensionality reduction with PCA, if specified
-                if self.dim_red_method.lower() == 'pca':
-
-                    # Use the stored n_comp for fast bootsrtrapping
-                    if fast_bootstrap and b_i > 0:
-                        self.n_pca_components = n_comp_dict[key]
-
-                    # Start transformation
-                    pca, target, n_comp = self.pca_transformation(
-                        Output[b_indices], verbose=False
-                        )
-                    self.pca[f'b_{b_i+1}'][key] = pca
-                    # Store the number of components for fast bootsrtrapping
-                    if fast_bootstrap and b_i == 0:
-                        n_comp_dict[key] = n_comp
-                else:
-                    target = Output[b_indices]
-
-                # Parallel fit regression
-                if self.meta_model_type.lower() == 'gpe':
-                    # Prepare the input matrix
-                    scaler = MinMaxScaler()
-                    X_S = scaler.fit_transform(X_train_b)
-
-                    self.x_scaler[f'b_{b_i+1}'][key] = scaler
-                    if parallel:
-                        out = Parallel(n_jobs=-1, backend='multiprocessing')(
-                            delayed(self.gaussian_process_emulator)(
-                                X_S, target[:, idx]) for idx in
-                            range(target.shape[1]))
-                    else:
-                        results = map(self.gaussian_process_emulator,
-                                      [X_train_b]*target.shape[1],
-                                      [target[:, idx] for idx in
-                                       range(target.shape[1])]
-                                      )
-                        out = list(results)
-
-                    for idx in range(target.shape[1]):
-                        self.gp_poly[f'b_{b_i+1}'][key][f"y_{idx+1}"] = out[idx]
-
-                else:
-                    self.univ_p_val = self.univ_p_val[b_indices]
-                    if parallel and (not fast_bootstrap or b_i == 0):
-                        out = Parallel(n_jobs=-1, backend='multiprocessing')(
-                            delayed(self.adaptive_regression)(X_train_b,
-                                                              target[:, idx],
-                                                              idx)
-                            for idx in range(target.shape[1]))
-                    elif not parallel and (not fast_bootstrap or b_i == 0):
-                        results = map(self.adaptive_regression,
-                                      [X_train_b]*target.shape[1],
-                                      [target[:, idx] for idx in
-                                       range(target.shape[1])],
-                                      range(target.shape[1]))
-                        out = list(results)
-
-                    # Store the first out dictionary
-                    if fast_bootstrap and b_i == 0:
-                        first_out[key] = copy.deepcopy(out)
-
-                    if b_i > 0 and fast_bootstrap:
-
-                        # fast bootstrap
-                        out = self.update_pce_coeffs(
-                            X_train_b, target, first_out[key])
-
-                    for i in range(target.shape[1]):
-                        # Create a dict to pass the variables
-                        self.deg_dict[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['degree']
-                        self.q_norm_dict[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['qnorm']
-                        self.coeffs_dict[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['coeffs']
-                        self.basis_dict[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['multi_indices']
-                        self.score_dict[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['LOOCVScore']
-                        self.clf_poly[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['clf_poly']
-                        #self.LCerror[f'b_{b_i+1}'][key][f"y_{i+1}"] = out[i]['LCerror']
-
-        if verbose:
-            print(f"\n>>>> Training the {self.meta_model_type} metamodel"
-                  " sucessfully completed. <<<<<<\n")
-
-    # -------------------------------------------------------------------------
-    def update_pce_coeffs(self, X, y, out_dict = None):
-        """
-        Updates the PCE coefficents using only the ordinary least square method
-        for the fast version of the bootstrapping.
-
-        Parameters
-        ----------
-        X : array of shape (n_samples, n_params)
-            Training set.
-        y : array of shape (n_samples, n_outs)
-            The (transformed) model responses.
-        out_dict : dict
-            The training output dictionary of the first iteration, i.e.
-            the surrogate model for the original experimental design.
-
-        Returns
-        -------
-        final_out_dict : dict
-            The updated training output dictionary.
-
-        """
-        # Make a copy
-        final_out_dict = copy.deepcopy(out_dict)
-
-        # Loop over the points
-        for i in range(y.shape[1]):
-
-                    
-            # Extract nonzero basis indices
-            nnz_idx = np.nonzero(out_dict[i]['coeffs'])[0]
-            if len(nnz_idx) != 0:
-                basis_indices = out_dict[i]['multi_indices']
-
-                # Evaluate the multivariate polynomials on CollocationPoints
-                psi = self.create_psi(basis_indices, self.univ_p_val)
-
-                # Calulate the cofficients of surrogate model
-                updated_out = self.regression(
-                    psi, y[:, i], basis_indices, reg_method='OLS',
-                    sparsity=False
-                    )
-
-                # Update coeffs in out_dict
-                final_out_dict[i]['coeffs'][nnz_idx] = updated_out['coeffs']
-
-        return final_out_dict
-
-    # -------------------------------------------------------------------------
-    def add_InputSpace(self):
-        """
-        Instanciates experimental design object.
-
-        Returns
-        -------
-        None.
-
-        """
-        self.InputSpace = InputSpace(self.input_obj,
-                                    meta_Model_type=self.meta_model_type)
-
-    # -------------------------------------------------------------------------
-    def univ_basis_vals(self, samples, n_max=None):
-        """
-        Evaluates univariate regressors along input directions.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params)
-            Samples.
-        n_max : int, optional
-            Maximum polynomial degree. The default is `None`.
-
-        Returns
-        -------
-        univ_basis: array of shape (n_samples, n_params, n_max+1)
-            All univariate regressors up to n_max.
-        """
-        # Extract information
-        poly_types = self.InputSpace.poly_types
-        if samples.ndim != 2:
-            samples = samples.reshape(1, len(samples))
-        n_max = np.max(self.pce_deg) if n_max is None else n_max
-
-        # Extract poly coeffs
-        if self.InputSpace.input_data_given or self.InputSpace.apce:
-            apolycoeffs = self.polycoeffs
-        else:
-            apolycoeffs = None
-
-        # Evaluate univariate basis
-        univ_basis = eval_univ_basis(samples, n_max, poly_types, apolycoeffs)
-
-        return univ_basis
-
-    # -------------------------------------------------------------------------
-    def create_psi(self, basis_indices, univ_p_val):
-        """
-        This function assemble the design matrix Psi from the given basis index
-        set INDICES and the univariate polynomial evaluations univ_p_val.
-
-        Parameters
-        ----------
-        basis_indices : array of shape (n_terms, n_params)
-            Multi-indices of multivariate polynomials.
-        univ_p_val : array of (n_samples, n_params, n_max+1)
-            All univariate regressors up to `n_max`.
-
-        Raises
-        ------
-        ValueError
-            n_terms in arguments do not match.
-
-        Returns
-        -------
-        psi : array of shape (n_samples, n_terms)
-            Multivariate regressors.
-
-        """
-        # Check if BasisIndices is a sparse matrix
-        sparsity = sp.sparse.issparse(basis_indices)
-        if sparsity:
-            basis_indices = basis_indices.toarray()
-
-        # Initialization and consistency checks
-        # number of input variables
-        n_params = univ_p_val.shape[1]
-
-        # Size of the experimental design
-        n_samples = univ_p_val.shape[0]
-
-        # number of basis terms
-        n_terms = basis_indices.shape[0]
-
-        # check that the variables have consistent sizes
-        if n_params != basis_indices.shape[1]:
-            raise ValueError(
-                f"The shapes of basis_indices ({basis_indices.shape[1]}) and "
-                f"univ_p_val ({n_params}) don't match!!"
-                )
-
-        # Preallocate the Psi matrix for performance
-        psi = np.ones((n_samples, n_terms))
-        # Assemble the Psi matrix
-        for m in range(basis_indices.shape[1]):
-            aa = np.where(basis_indices[:, m] > 0)[0]
-            try:
-                basisIdx = basis_indices[aa, m]
-                bb = univ_p_val[:, m, basisIdx].reshape(psi[:, aa].shape)
-                psi[:, aa] = np.multiply(psi[:, aa], bb)
-            except ValueError as err:
-                raise err
-        return psi
-
-    # -------------------------------------------------------------------------
-    def regression(self, X, y, basis_indices, reg_method=None, sparsity=True):
-        """
-        Fit regression using the regression method provided.
-
-        Parameters
-        ----------
-        X : array of shape (n_samples, n_features)
-            Training vector, where n_samples is the number of samples and
-            n_features is the number of features.
-        y : array of shape (n_samples,)
-            Target values.
-        basis_indices : array of shape (n_terms, n_params)
-            Multi-indices of multivariate polynomials.
-        reg_method : str, optional
-            DESCRIPTION. The default is None.
-
-        Returns
-        -------
-        return_out_dict : Dict
-            Fitted estimator, spareMulti-Index, sparseX and coefficients.
-
-        """
-        if reg_method is None:
-            reg_method = self.pce_reg_method
-
-        bias_term = self.dim_red_method.lower() != 'pca'
-
-        compute_score = True if self.verbose else False
-
-        #  inverse of the observed variance of the data
-        if np.var(y) != 0:
-            Lambda = 1 / np.var(y)
-        else:
-            Lambda = 1e-6
-
-        # Bayes sparse adaptive aPCE
-        if reg_method.lower() == 'ols':
-            clf_poly = lm.LinearRegression(fit_intercept=False)
-        elif reg_method.lower() == 'brr':
-            clf_poly = lm.BayesianRidge(n_iter=1000, tol=1e-7,
-                                        fit_intercept=False,
-                                        #normalize=True,
-                                        compute_score=compute_score,
-                                        alpha_1=1e-04, alpha_2=1e-04,
-                                        lambda_1=Lambda, lambda_2=Lambda)
-            clf_poly.converged = True
-
-        elif reg_method.lower() == 'ard':
-            if X.shape[0]<2:
-                raise ValueError('Regression with ARD can only be performed for more than 2 samples')
-            clf_poly = lm.ARDRegression(fit_intercept=False,
-                                        #normalize=True,
-                                        compute_score=compute_score,
-                                        n_iter=1000, tol=0.0001,
-                                        alpha_1=1e-3, alpha_2=1e-3,
-                                        lambda_1=Lambda, lambda_2=Lambda)
-
-        elif reg_method.lower() == 'fastard':
-            clf_poly = RegressionFastARD(fit_intercept=False,
-                                         normalize=True,
-                                         compute_score=compute_score,
-                                         n_iter=300, tol=1e-10)
-
-        elif reg_method.lower() == 'bcs':
-            if X.shape[0]<10:
-                raise ValueError('Regression with BCS can only be performed for more than 10 samples')
-            clf_poly = RegressionFastLaplace(fit_intercept=False,
-                                         bias_term=bias_term,
-                                         n_iter=1000, tol=1e-7)
-
-        elif reg_method.lower() == 'lars':
-            if X.shape[0]<10:
-                raise ValueError('Regression with LARS can only be performed for more than 5 samples')
-            clf_poly = lm.LassoLarsCV(fit_intercept=False)
-
-        elif reg_method.lower() == 'sgdr':
-            clf_poly = lm.SGDRegressor(fit_intercept=False,
-                                       max_iter=5000, tol=1e-7)
-
-        elif reg_method.lower() == 'omp':
-            clf_poly = OrthogonalMatchingPursuit(fit_intercept=False)
-
-        elif reg_method.lower() == 'vbl':
-            clf_poly = VBLinearRegression(fit_intercept=False)
-
-        elif reg_method.lower() == 'ebl':
-            clf_poly = EBLinearRegression(optimizer='em')
-
-        # Fit
-        clf_poly.fit(X, y)
-
-        # Select the nonzero entries of coefficients
-        if sparsity:
-            nnz_idx = np.nonzero(clf_poly.coef_)[0]
-        else:
-            nnz_idx = np.arange(clf_poly.coef_.shape[0])
-
-        # This is for the case where all outputs are zero, thereby
-        # all coefficients are zero
-        if (y == 0).all():
-            nnz_idx = np.insert(np.nonzero(clf_poly.coef_)[0], 0, 0)
-
-        sparse_basis_indices = basis_indices[nnz_idx]
-        sparse_X = X[:, nnz_idx]
-        coeffs = clf_poly.coef_[nnz_idx]
-        clf_poly.coef_ = coeffs
-
-        # Create a dict to pass the outputs
-        return_out_dict = dict()
-        return_out_dict['clf_poly'] = clf_poly
-        return_out_dict['spareMulti-Index'] = sparse_basis_indices
-        return_out_dict['sparePsi'] = sparse_X
-        return_out_dict['coeffs'] = coeffs
-        return return_out_dict
-
-    # --------------------------------------------------------------------------------------------------------
-    def adaptive_regression(self, ED_X, ED_Y, varIdx, verbose=False):
-        """
-        Adaptively fits the PCE model by comparing the scores of different
-        degrees and q-norm.
-
-        Parameters
-        ----------
-        ED_X : array of shape (n_samples, n_params)
-            Experimental design.
-        ED_Y : array of shape (n_samples,)
-            Target values, i.e. simulation results for the Experimental design.
-        varIdx : int
-            Index of the output.
-        verbose : bool, optional
-            Print out summary. The default is False.
-
-        Returns
-        -------
-        returnVars : Dict
-            Fitted estimator, best degree, best q-norm, LOOCVScore and
-            coefficients.
-
-        """
-
-        n_samples, n_params = ED_X.shape
-        # Initialization
-        qAllCoeffs, AllCoeffs = {}, {}
-        qAllIndices_Sparse, AllIndices_Sparse = {}, {}
-        qAllclf_poly, Allclf_poly = {}, {}
-        qAllnTerms, AllnTerms = {}, {}
-        qAllLCerror, AllLCerror = {}, {}
-
-        # Extract degree array and qnorm array
-        deg_array = np.array([*self.allBasisIndices], dtype=int)
-        qnorm = [*self.allBasisIndices[str(int(deg_array[0]))]]
-
-        # Some options for EarlyStop
-        errorIncreases = False
-        # Stop degree, if LOO error does not decrease n_checks_degree times
-        n_checks_degree = 3
-        # Stop qNorm, if criterion isn't fulfilled n_checks_qNorm times
-        n_checks_qNorm = 2
-        nqnorms = len(qnorm)
-        qNormEarlyStop = True
-        if nqnorms < n_checks_qNorm+1:
-            qNormEarlyStop = False
-
-        # =====================================================================
-        # basis adaptive polynomial chaos: repeat the calculation by increasing
-        # polynomial degree until the highest accuracy is reached
-        # =====================================================================
-        # For each degree check all q-norms and choose the best one
-        scores = -np.inf * np.ones(deg_array.shape[0])
-        qNormScores = -np.inf * np.ones(nqnorms)
-
-        for degIdx, deg in enumerate(deg_array):
-
-            for qidx, q in enumerate(qnorm):
-
-                # Extract the polynomial basis indices from the pool of
-                # allBasisIndices
-                BasisIndices = self.allBasisIndices[str(deg)][str(q)]
-
-                # Assemble the Psi matrix
-                Psi = self.create_psi(BasisIndices, self.univ_p_val)
-
-                # Calulate the cofficients of the meta model
-                outs = self.regression(Psi, ED_Y, BasisIndices)
-
-                # Calculate and save the score of LOOCV
-                score, LCerror = self.corr_loocv_error(outs['clf_poly'],
-                                                       outs['sparePsi'],
-                                                       outs['coeffs'],
-                                                       ED_Y)
-
-                # Check the convergence of noise for FastARD
-                if self.pce_reg_method == 'FastARD' and \
-                   outs['clf_poly'].alpha_ < np.finfo(np.float32).eps:
-                    score = -np.inf
-
-                qNormScores[qidx] = score
-                qAllCoeffs[str(qidx+1)] = outs['coeffs']
-                qAllIndices_Sparse[str(qidx+1)] = outs['spareMulti-Index']
-                qAllclf_poly[str(qidx+1)] = outs['clf_poly']
-                qAllnTerms[str(qidx+1)] = BasisIndices.shape[0]
-                qAllLCerror[str(qidx+1)] = LCerror
-
-                # EarlyStop check
-                # if there are at least n_checks_qNorm entries after the
-                # best one, we stop
-                if qNormEarlyStop and \
-                   sum(np.isfinite(qNormScores)) > n_checks_qNorm:
-                    # If the error has increased the last two iterations, stop!
-                    qNormScores_nonInf = qNormScores[np.isfinite(qNormScores)]
-                    deltas = np.sign(np.diff(qNormScores_nonInf))
-                    if sum(deltas[-n_checks_qNorm+1:]) == 2:
-                        # stop the q-norm loop here
-                        break
-                if np.var(ED_Y) == 0:
-                    break
-
-            # Store the score in the scores list
-            best_q = np.nanargmax(qNormScores)
-            scores[degIdx] = qNormScores[best_q]
-
-            AllCoeffs[str(degIdx+1)] = qAllCoeffs[str(best_q+1)]
-            AllIndices_Sparse[str(degIdx+1)] = qAllIndices_Sparse[str(best_q+1)]
-            Allclf_poly[str(degIdx+1)] = qAllclf_poly[str(best_q+1)]
-            AllnTerms[str(degIdx+1)] = qAllnTerms[str(best_q+1)]
-            AllLCerror[str(degIdx+1)] = qAllLCerror[str(best_q+1)]
-
-            # Check the direction of the error (on average):
-            # if it increases consistently stop the iterations
-            if len(scores[scores != -np.inf]) > n_checks_degree:
-                scores_nonInf = scores[scores != -np.inf]
-                ss = np.sign(scores_nonInf - np.max(scores_nonInf))
-                # ss<0 error decreasing
-                errorIncreases = np.sum(np.sum(ss[-2:])) <= -1*n_checks_degree
-
-            if errorIncreases:
-                break
-
-            # Check only one degree, if target matrix has zero variance
-            if np.var(ED_Y) == 0:
-                break
-
-        # ------------------ Summary of results ------------------
-        # Select the one with the best score and save the necessary outputs
-        best_deg = np.nanargmax(scores)+1
-        coeffs = AllCoeffs[str(best_deg)]
-        basis_indices = AllIndices_Sparse[str(best_deg)]
-        clf_poly = Allclf_poly[str(best_deg)]
-        LOOCVScore = np.nanmax(scores)
-        P = AllnTerms[str(best_deg)]
-        LCerror = AllLCerror[str(best_deg)]
-        degree = deg_array[np.nanargmax(scores)]
-        qnorm = float(qnorm[best_q])
-
-        # ------------------ Print out Summary of results ------------------
-        if self.verbose:
-            # Create PSI_Sparse by removing redundent terms
-            nnz_idx = np.nonzero(coeffs)[0]
-            BasisIndices_Sparse = basis_indices[nnz_idx]
-
-            print(f'Output variable {varIdx+1}:')
-            print('The estimation of PCE coefficients converged at polynomial '
-                  f'degree {deg_array[best_deg-1]} with '
-                  f'{len(BasisIndices_Sparse)} terms (Sparsity index = '
-                  f'{round(len(BasisIndices_Sparse)/P, 3)}).')
-
-            print(f'Final ModLOO error estimate: {1-max(scores):.3e}')
-            print('\n'+'-'*50)
-
-        if verbose:
-            print('='*50)
-            print(' '*10 + ' Summary of results ')
-            print('='*50)
-
-            print("Scores:\n", scores)
-            print("Degree of best score:", self.deg_array[best_deg-1])
-            print("No. of terms:", len(basis_indices))
-            print("Sparsity index:", round(len(basis_indices)/P, 3))
-            print("Best Indices:\n", basis_indices)
-
-            if self.pce_reg_method in ['BRR', 'ARD']:
-                fig, ax = plt.subplots(figsize=(12, 10))
-                plt.title("Marginal log-likelihood")
-                plt.plot(clf_poly.scores_, color='navy', linewidth=2)
-                plt.ylabel("Score")
-                plt.xlabel("Iterations")
-                if self.pce_reg_method.lower() == 'bbr':
-                    text = f"$\\alpha={clf_poly.alpha_:.1f}$\n"
-                    f"$\\lambda={clf_poly.lambda_:.3f}$\n"
-                    f"$L={clf_poly.scores_[-1]:.1f}$"
-                else:
-                    text = f"$\\alpha={clf_poly.alpha_:.1f}$\n$"
-                    f"\\L={clf_poly.scores_[-1]:.1f}$"
-
-                plt.text(0.75, 0.5, text, fontsize=18, transform=ax.transAxes)
-                plt.show()
-            print('='*80)
-
-        # Create a dict to pass the outputs
-        returnVars = dict()
-        returnVars['clf_poly'] = clf_poly
-        returnVars['degree'] = degree
-        returnVars['qnorm'] = qnorm
-        returnVars['coeffs'] = coeffs
-        returnVars['multi_indices'] = basis_indices
-        returnVars['LOOCVScore'] = LOOCVScore
-        returnVars['LCerror'] = LCerror
-
-        return returnVars
-
-    # -------------------------------------------------------------------------
-    def corr_loocv_error(self, clf, psi, coeffs, y):
-        """
-        Calculates the corrected LOO error for regression on regressor
-        matrix `psi` that generated the coefficients based on [1] and [2].
-
-        [1] Blatman, G., 2009. Adaptive sparse polynomial chaos expansions for
-            uncertainty propagation and sensitivity analysis (Doctoral
-            dissertation, Clermont-Ferrand 2).
-
-        [2] Blatman, G. and Sudret, B., 2011. Adaptive sparse polynomial chaos
-            expansion based on least angle regression. Journal of computational
-            Physics, 230(6), pp.2345-2367.
-
-        Parameters
-        ----------
-        clf : object
-            Fitted estimator.
-        psi : array of shape (n_samples, n_features)
-            The multivariate orthogonal polynomials (regressor).
-        coeffs : array-like of shape (n_features,)
-            Estimated cofficients.
-        y : array of shape (n_samples,)
-            Target values.
-
-        Returns
-        -------
-        R_2 : float
-            LOOCV Validation score (1-LOOCV erro).
-        residual : array of shape (n_samples,)
-            Residual values (y - predicted targets).
-
-        """
-        psi = np.array(psi, dtype=float)
-
-        # Create PSI_Sparse by removing redundent terms
-        nnz_idx = np.nonzero(coeffs)[0]
-        if len(nnz_idx) == 0:
-            nnz_idx = [0]
-        psi_sparse = psi[:, nnz_idx]
-
-        # NrCoeffs of aPCEs
-        P = len(nnz_idx)
-        # NrEvaluation (Size of experimental design)
-        N = psi.shape[0]
-
-        # Build the projection matrix
-        PsiTPsi = np.dot(psi_sparse.T, psi_sparse)
-
-        if np.linalg.cond(PsiTPsi) > 1e-12: #and \
-           # np.linalg.cond(PsiTPsi) < 1/sys.float_info.epsilon:
-            # faster
-            try:
-                M = sp.linalg.solve(PsiTPsi,
-                                sp.sparse.eye(PsiTPsi.shape[0]).toarray())
-            except:
-                raise AttributeError('There are too few samples for the corrected loo-cv error. Fit surrogate on at least as many samples as parameters to use this')
-        else:
-            # stabler
-            M = np.linalg.pinv(PsiTPsi)
-
-        # h factor (the full matrix is not calculated explicitly,
-        # only the trace is, to save memory)
-        PsiM = np.dot(psi_sparse, M)
-
-        h = np.sum(np.multiply(PsiM, psi_sparse), axis=1, dtype=np.longdouble)#float128)
-
-        # ------ Calculate Error Loocv for each measurement point ----
-        # Residuals
-        try:
-            residual = clf.predict(psi) - y
-        except:
-            residual = np.dot(psi, coeffs) - y
-
-        # Variance
-        var_y = np.var(y)
-
-        if var_y == 0:
-            norm_emp_error = 0
-            loo_error = 0
-            LCerror = np.zeros((y.shape))
-            return 1-loo_error, LCerror
-        else:
-            norm_emp_error = np.mean(residual**2)/var_y
-
-            # LCerror = np.divide(residual, (1-h))
-            LCerror = residual / (1-h)
-            loo_error = np.mean(np.square(LCerror)) / var_y
-            # if there are NaNs, just return an infinite LOO error (this
-            # happens, e.g., when a strongly underdetermined problem is solved)
-            if np.isnan(loo_error):
-                loo_error = np.inf
-
-        # Corrected Error for over-determined system
-        tr_M = np.trace(M)
-        if tr_M < 0 or abs(tr_M) > 1e6:
-            tr_M = np.trace(np.linalg.pinv(np.dot(psi.T, psi)))
-
-        # Over-determined system of Equation
-        if N > P:
-            T_factor = N/(N-P) * (1 + tr_M)
-
-        # Under-determined system of Equation
-        else:
-            T_factor = np.inf
-
-        corrected_loo_error = loo_error * T_factor
-
-        R_2 = 1 - corrected_loo_error
-
-        return R_2, LCerror
-
-    # -------------------------------------------------------------------------
-    def pca_transformation(self, target, verbose=False):
-        """
-        Transforms the targets (outputs) via Principal Component Analysis
-
-        Parameters
-        ----------
-        target : array of shape (n_samples,)
-            Target values.
-
-        Returns
-        -------
-        pca : obj
-            Fitted sklearnPCA object.
-        OutputMatrix : array of shape (n_samples,)
-            Transformed target values.
-        n_pca_components : int
-            Number of selected principal components.
-
-        """
-        # Transform via Principal Component Analysis
-        if hasattr(self, 'var_pca_threshold'):
-            var_pca_threshold = self.var_pca_threshold
-        else:
-            var_pca_threshold = 100.0
-        n_samples, n_features = target.shape
-
-        if hasattr(self, 'n_pca_components'):
-            n_pca_components = self.n_pca_components
-        else:
-            # Instantiate and fit sklearnPCA object
-            covar_matrix = sklearnPCA(n_components=None)
-            covar_matrix.fit(target)
-            var = np.cumsum(np.round(covar_matrix.explained_variance_ratio_,
-                                     decimals=5)*100)
-            # Find the number of components to explain self.varPCAThreshold of
-            # variance
-            try:
-                n_components = np.where(var >= var_pca_threshold)[0][0] + 1
-            except IndexError:
-                n_components = min(n_samples, n_features)
-
-            n_pca_components = min(n_samples, n_features, n_components)
-
-        # Print out a report
-        if verbose:
-            print()
-            print('-' * 50)
-            print(f"PCA transformation is performed with {n_pca_components}"
-                  " components.")
-            print('-' * 50)
-            print()
-
-        # Fit and transform with the selected number of components
-        pca = sklearnPCA(n_components=n_pca_components, svd_solver='arpack')
-        scaled_target = pca.fit_transform(target)
-
-        return pca, scaled_target, n_pca_components
-
-    # -------------------------------------------------------------------------
-    def gaussian_process_emulator(self, X, y, nug_term=None, autoSelect=False,
-                                  varIdx=None):
-        """
-        Fits a Gaussian Process Emulator to the target given the training
-         points.
-
-        Parameters
-        ----------
-        X : array of shape (n_samples, n_params)
-            Training points.
-        y : array of shape (n_samples,)
-            Target values.
-        nug_term : float, optional
-            Nugget term. The default is None, i.e. variance of y.
-        autoSelect : bool, optional
-            Loop over some kernels and select the best. The default is False.
-        varIdx : int, optional
-            The index number. The default is None.
-
-        Returns
-        -------
-        gp : object
-            Fitted estimator.
-
-        """
-
-        nug_term = nug_term if nug_term else np.var(y)
-
-        Kernels = [nug_term * kernels.RBF(length_scale=1.0,
-                                          length_scale_bounds=(1e-25, 1e15)),
-                   nug_term * kernels.RationalQuadratic(length_scale=0.2,
-                                                        alpha=1.0),
-                   nug_term * kernels.Matern(length_scale=1.0,
-                                             length_scale_bounds=(1e-15, 1e5),
-                                             nu=1.5)]
-
-        # Automatic selection of the kernel
-        if autoSelect:
-            gp = {}
-            BME = []
-            for i, kernel in enumerate(Kernels):
-                gp[i] = GaussianProcessRegressor(kernel=kernel,
-                                                 n_restarts_optimizer=3,
-                                                 normalize_y=False)
-
-                # Fit to data using Maximum Likelihood Estimation
-                gp[i].fit(X, y)
-
-                # Store the MLE as BME score
-                BME.append(gp[i].log_marginal_likelihood())
-
-            gp = gp[np.argmax(BME)]
-
-        else:
-            gp = GaussianProcessRegressor(kernel=Kernels[0],
-                                          n_restarts_optimizer=3,
-                                          normalize_y=False)
-            gp.fit(X, y)
-
-        # Compute score
-        if varIdx is not None:
-            Score = gp.score(X, y)
-            print('-'*50)
-            print(f'Output variable {varIdx}:')
-            print('The estimation of GPE coefficients converged,')
-            print(f'with the R^2 score: {Score:.3f}')
-            print('-'*50)
-
-        return gp
-
-    # -------------------------------------------------------------------------
-    def eval_metamodel(self, samples):
-        """
-        Evaluates meta-model at the requested samples. One can also generate
-        nsamples.
-
-        Parameters
-        ----------
-        samples : array of shape (n_samples, n_params), optional
-            Samples to evaluate meta-model at. The default is None.
-        nsamples : int, optional
-            Number of samples to generate, if no `samples` is provided. The
-            default is None.
-        sampling_method : str, optional
-            Type of sampling, if no `samples` is provided. The default is
-            'random'.
-        return_samples : bool, optional
-            Retun samples, if no `samples` is provided. The default is False.
-
-        Returns
-        -------
-        mean_pred : dict
-            Mean of the predictions.
-        std_pred : dict
-            Standard deviatioon of the predictions.
-        """
-        # Transform into np array - can also be given as list
-        samples = np.array(samples)
-        
-        # Transform samples to the independent space
-        samples = self.InputSpace.transform(
-            samples,
-            method='user'
-            )
-        # Compute univariate bases for the given samples
-        if self.meta_model_type.lower() != 'gpe':
-            univ_p_val = self.univ_basis_vals(
-                samples,
-                n_max=np.max(self.pce_deg)
-                )
-
-        mean_pred_b = {}
-        std_pred_b = {}
-        # Loop over bootstrap iterations
-        for b_i in range(self.n_bootstrap_itrs):
-
-            # Extract model dictionary
-            if self.meta_model_type.lower() == 'gpe':
-                model_dict = self.gp_poly[f'b_{b_i+1}']
-            else:
-                model_dict = self.coeffs_dict[f'b_{b_i+1}']
-
-            # Loop over outputs
-            mean_pred = {}
-            std_pred = {}
-            for output, values in model_dict.items():
-
-                mean = np.empty((len(samples), len(values)))
-                std = np.empty((len(samples), len(values)))
-                idx = 0
-                for in_key, InIdxValues in values.items():
-
-                    # Prediction with GPE
-                    if self.meta_model_type.lower() == 'gpe':
-                        X_T = self.x_scaler[f'b_{b_i+1}'][output].transform(samples)
-                        gp = self.gp_poly[f'b_{b_i+1}'][output][in_key]
-                        y_mean, y_std = gp.predict(X_T, return_std=True)
-
-                    else:
-                        # Prediction with PCE
-                        # Assemble Psi matrix
-                        basis = self.basis_dict[f'b_{b_i+1}'][output][in_key]
-                        psi = self.create_psi(basis, univ_p_val)
-
-                        # Prediction
-                        if self.bootstrap_method != 'fast' or b_i == 0:
-                            # with error bar, i.e. use clf_poly
-                            clf_poly = self.clf_poly[f'b_{b_i+1}'][output][in_key]
-                            try:
-                                y_mean, y_std = clf_poly.predict(
-                                    psi, return_std=True
-                                    )
-                            except TypeError:
-                                y_mean = clf_poly.predict(psi)
-                                y_std = np.zeros_like(y_mean)
-                        else:
-                            # without error bar
-                            coeffs = self.coeffs_dict[f'b_{b_i+1}'][output][in_key]
-                            y_mean = np.dot(psi, coeffs)
-                            y_std = np.zeros_like(y_mean)
-
-                    mean[:, idx] = y_mean
-                    std[:, idx] = y_std
-                    idx += 1
-
-                # Save predictions for each output
-                if self.dim_red_method.lower() == 'pca':
-                    PCA = self.pca[f'b_{b_i+1}'][output]
-                    mean_pred[output] = PCA.inverse_transform(mean)
-                    std_pred[output] = np.zeros(mean.shape)
-                else:
-                    mean_pred[output] = mean
-                    std_pred[output] = std
-
-            # Save predictions for each bootstrap iteration
-            mean_pred_b[b_i] = mean_pred
-            std_pred_b[b_i] = std_pred
-
-        # Change the order of nesting
-        mean_pred_all = {}
-        for i in sorted(mean_pred_b):
-            for k, v in mean_pred_b[i].items():
-                if k not in mean_pred_all:
-                    mean_pred_all[k] = [None] * len(mean_pred_b)
-                mean_pred_all[k][i] = v
-
-        # Compute the moments of predictions over the predictions
-        for output in self.out_names:
-            # Only use bootstraps with finite values
-            finite_rows = np.isfinite(
-                mean_pred_all[output]).all(axis=2).all(axis=1)
-            outs = np.asarray(mean_pred_all[output])[finite_rows]
-            # Compute mean
-            mean_pred[output] = np.mean(outs, axis=0)
-            # Compute standard deviation
-            if self.n_bootstrap_itrs > 1:
-                std_pred[output] = np.std(outs, axis=0)
-            else:
-                std_pred[output] = std_pred_b[b_i][output]
-
-        return mean_pred, std_pred
-
-    # -------------------------------------------------------------------------
-    def create_model_error(self, X, y, Model, name='Calib'):
-        """
-        Fits a GPE-based model error.
-
-        Parameters
-        ----------
-        X : array of shape (n_outputs, n_inputs)
-            Input array. It can contain any forcing inputs or coordinates of
-             extracted data.
-        y : array of shape (n_outputs,)
-            The model response for the MAP parameter set.
-        name : str, optional
-            Calibration or validation. The default is `'Calib'`.
-
-        Returns
-        -------
-        self: object
-            Self object.
-
-        """
-        outputNames = self.out_names
-        self.errorRegMethod = 'GPE'
-        self.errorclf_poly = self.auto_vivification()
-        self.errorScale = self.auto_vivification()
-
-        # Read data
-        # TODO: do this call outside the metamodel
-        MeasuredData = Model.read_observation(case=name)
-
-        # Fitting GPR based bias model
-        for out in outputNames:
-            nan_idx = ~np.isnan(MeasuredData[out])
-            # Select data
-            try:
-                data = MeasuredData[out].values[nan_idx]
-            except AttributeError:
-                data = MeasuredData[out][nan_idx]
-
-            # Prepare the input matrix
-            scaler = MinMaxScaler()
-            delta = data  # - y[out][0]
-            BiasInputs = np.hstack((X[out], y[out].reshape(-1, 1)))
-            X_S = scaler.fit_transform(BiasInputs)
-            gp = self.gaussian_process_emulator(X_S, delta)
-
-            self.errorScale[out]["y_1"] = scaler
-            self.errorclf_poly[out]["y_1"] = gp
-
-        return self
-
-    # -------------------------------------------------------------------------
-    def eval_model_error(self, X, y_pred):
-        """
-        Evaluates the error model.
-
-        Parameters
-        ----------
-        X : array
-            Inputs.
-        y_pred : dict
-            Predictions.
-
-        Returns
-        -------
-        mean_pred : dict
-            Mean predition of the GPE-based error model.
-        std_pred : dict
-            standard deviation of the GPE-based error model.
-
-        """
-        mean_pred = {}
-        std_pred = {}
-
-        for Outkey, ValuesDict in self.errorclf_poly.items():
-
-            pred_mean = np.zeros_like(y_pred[Outkey])
-            pred_std = np.zeros_like(y_pred[Outkey])
-
-            for Inkey, InIdxValues in ValuesDict.items():
-
-                gp = self.errorclf_poly[Outkey][Inkey]
-                scaler = self.errorScale[Outkey][Inkey]
-
-                # Transform Samples using scaler
-                for j, pred in enumerate(y_pred[Outkey]):
-                    BiasInputs = np.hstack((X[Outkey], pred.reshape(-1, 1)))
-                    Samples_S = scaler.transform(BiasInputs)
-                    y_hat, y_std = gp.predict(Samples_S, return_std=True)
-                    pred_mean[j] = y_hat
-                    pred_std[j] = y_std
-                    # pred_mean[j] += pred
-
-            mean_pred[Outkey] = pred_mean
-            std_pred[Outkey] = pred_std
-
-        return mean_pred, std_pred
-
-    # -------------------------------------------------------------------------
-    class auto_vivification(dict):
-        """
-        Implementation of perl's AutoVivification feature.
-
-        Source: https://stackoverflow.com/a/651879/18082457
-        """
-
-        def __getitem__(self, item):
-            try:
-                return dict.__getitem__(self, item)
-            except KeyError:
-                value = self[item] = type(self)()
-                return value
-
-    # -------------------------------------------------------------------------
-    def copy_meta_model_opts(self):
-        """
-        This method is a convinient function to copy the metamodel options.
-
-        Returns
-        -------
-        new_MetaModelOpts : object
-            The copied object.
-
-        """
-        # TODO: what properties should be moved to the new object?
-        new_MetaModelOpts = copy.deepcopy(self)
-        new_MetaModelOpts.input_obj = self.input_obj#InputObj
-        new_MetaModelOpts.InputSpace = self.InputSpace
-        #new_MetaModelOpts.InputSpace.meta_Model = 'aPCE'
-        #new_MetaModelOpts.InputSpace.InputObj = self.input_obj
-        #new_MetaModelOpts.InputSpace.ndim = len(self.input_obj.Marginals)
-        new_MetaModelOpts.n_params = len(self.input_obj.Marginals)
-        #new_MetaModelOpts.InputSpace.hdf5_file = None
-
-        return new_MetaModelOpts
-
-    # -------------------------------------------------------------------------
-    def __select_degree(self, ndim, n_samples):
-        """
-        Selects degree based on the number of samples and parameters in the
-        sequential design.
-
-        Parameters
-        ----------
-        ndim : int
-            Dimension of the parameter space.
-        n_samples : int
-            Number of samples.
-
-        Returns
-        -------
-        deg_array: array
-            Array containing the arrays.
-
-        """
-        # Define the deg_array
-        max_deg = np.max(self.pce_deg)
-        min_Deg = np.min(self.pce_deg)
-        
-        # TODO: remove the options for sequential?
-        #nitr = n_samples - self.InputSpace.n_init_samples
-
-        # Check q-norm
-        if not np.isscalar(self.pce_q_norm):
-            self.pce_q_norm = np.array(self.pce_q_norm)
-        else:
-            self.pce_q_norm = np.array([self.pce_q_norm])
-
-        def M_uptoMax(maxDeg):
-            n_combo = np.zeros(maxDeg)
-            for i, d in enumerate(range(1, maxDeg+1)):
-                n_combo[i] = math.factorial(ndim+d)
-                n_combo[i] /= math.factorial(ndim) * math.factorial(d)
-            return n_combo
-
-        deg_new = max_deg
-        #d = nitr if nitr != 0 and self.n_params > 5 else 1
-        # d = 1
-        # min_index = np.argmin(abs(M_uptoMax(max_deg)-ndim*n_samples*d))
-        # deg_new = range(1, max_deg+1)[min_index]
-
-        if deg_new > min_Deg and self.pce_reg_method.lower() != 'fastard':
-            deg_array = np.arange(min_Deg, deg_new+1)
-        else:
-            deg_array = np.array([deg_new])
-
-        return deg_array
-
-    def generate_polynomials(self, max_deg=None):
-        # Check for InputSpace
-        if not hasattr(self, 'InputSpace'):
-            raise AttributeError('Generate or add InputSpace before generating polynomials')
-            
-        ndim = self.InputSpace.ndim
-        # Create orthogonal polynomial coefficients if necessary
-        if (self.meta_model_type.lower()!='gpe') and max_deg is not None:# and self.input_obj.poly_coeffs_flag:
-            self.polycoeffs = {}
-            for parIdx in tqdm(range(ndim), ascii=True,
-                               desc="Computing orth. polynomial coeffs"):
-                poly_coeffs = apoly_construction(
-                    self.InputSpace.raw_data[parIdx],
-                    max_deg
-                    )
-                self.polycoeffs[f'p_{parIdx+1}'] = poly_coeffs
-        else:
-            raise AttributeError('MetaModel cannot generate polynomials in the given scenario!')
-
-    # -------------------------------------------------------------------------
-    def _compute_pce_moments(self):
-        """
-        Computes the first two moments using the PCE-based meta-model.
-
-        Returns
-        -------
-        pce_means: dict
-            The first moment (mean) of the surrogate.
-        pce_stds: dict
-            The second moment (standard deviation) of the surrogate.
-
-        """
-        
-        # Check if its truly a pce-surrogate
-        if self.meta_model_type.lower() == 'gpe':
-            raise AttributeError('Moments can only be computed for pce-type surrogates')
-        
-        outputs = self.out_names
-        pce_means_b = {}
-        pce_stds_b = {}
-
-        # Loop over bootstrap iterations
-        for b_i in range(self.n_bootstrap_itrs):
-            # Loop over the metamodels
-            coeffs_dicts = self.coeffs_dict[f'b_{b_i+1}'].items()
-            means = {}
-            stds = {}
-            for output, coef_dict in coeffs_dicts:
-
-                pce_mean = np.zeros((len(coef_dict)))
-                pce_var = np.zeros((len(coef_dict)))
-
-                for index, values in coef_dict.items():
-                    idx = int(index.split('_')[1]) - 1
-                    coeffs = self.coeffs_dict[f'b_{b_i+1}'][output][index]
-
-                    # Mean = c_0
-                    if coeffs[0] != 0:
-                        pce_mean[idx] = coeffs[0]
-                    else:
-                        clf_poly = self.clf_poly[f'b_{b_i+1}'][output]
-                        pce_mean[idx] = clf_poly[index].intercept_
-                    # Var = sum(coeffs[1:]**2)
-                    pce_var[idx] = np.sum(np.square(coeffs[1:]))
-
-                # Save predictions for each output
-                if self.dim_red_method.lower() == 'pca':
-                    PCA = self.pca[f'b_{b_i+1}'][output]
-                    means[output] = PCA.inverse_transform(pce_mean)
-                    stds[output] = PCA.inverse_transform(np.sqrt(pce_var))
-                else:
-                    means[output] = pce_mean
-                    stds[output] = np.sqrt(pce_var)
-
-            # Save predictions for each bootstrap iteration
-            pce_means_b[b_i] = means
-            pce_stds_b[b_i] = stds
-
-        # Change the order of nesting
-        mean_all = {}
-        for i in sorted(pce_means_b):
-            for k, v in pce_means_b[i].items():
-                if k not in mean_all:
-                    mean_all[k] = [None] * len(pce_means_b)
-                mean_all[k][i] = v
-        std_all = {}
-        for i in sorted(pce_stds_b):
-            for k, v in pce_stds_b[i].items():
-                if k not in std_all:
-                    std_all[k] = [None] * len(pce_stds_b)
-                std_all[k][i] = v
-
-        # Back transformation if PCA is selected.
-        pce_means, pce_stds = {}, {}
-        for output in outputs:
-            pce_means[output] = np.mean(mean_all[output], axis=0)
-            pce_stds[output] = np.mean(std_all[output], axis=0)
-
-        return pce_means, pce_stds
diff --git a/src/bayesvalidrox/pylink/pylink.py b/src/bayesvalidrox/pylink/pylink.py
index 3fd1db366..8b826c5ce 100644
--- a/src/bayesvalidrox/pylink/pylink.py
+++ b/src/bayesvalidrox/pylink/pylink.py
@@ -473,8 +473,6 @@ class PyLinkForwardModel(object):
             #model = umbridge.HTTPModel('http://localhost:4242', 'forward')
             self.model = umbridge.HTTPModel(self.host, 'forward') # TODO: is this always forward?
             Function = self.uMBridge_model
-            # For now just do same as usual
-            self.link_type = 'function'
 
         # Extract the function
         if self.link_type.lower() == 'function':
@@ -492,7 +490,7 @@ class PyLinkForwardModel(object):
         # Run forward model
         if n_c_points == 1 or not mp:
             if n_c_points== 1:
-                if self.link_type.lower() == 'function':
+                if self.link_type.lower() == 'function' or self.link_type.lower() == 'umbridge':
                     group_results = Function(c_points, **self.func_args)
                 else:
                     group_results = self.run_forwardmodel(
@@ -501,7 +499,7 @@ class PyLinkForwardModel(object):
             else:
                 for i in range(c_points.shape[0]):
                     if i == 0:
-                        if self.link_type.lower() == 'function':
+                        if self.link_type.lower() == 'function' or self.link_type.lower() == 'umbridge':
                             group_results = Function(np.array([c_points[0]]), **self.func_args)
                         else:
                             group_results = self.run_forwardmodel(
@@ -511,7 +509,7 @@ class PyLinkForwardModel(object):
                             if key != 'x_values':
                                 group_results[key] = [group_results[key]]
                     else: 
-                        if self.link_type.lower() == 'function':
+                        if self.link_type.lower() == 'function' or self.link_type.lower() == 'umbridge':
                             res = Function(np.array([c_points[i]]), **self.func_args)
                         else:
                             res = self.run_forwardmodel(
@@ -529,7 +527,7 @@ class PyLinkForwardModel(object):
             with get_context('spawn').Pool(n_cpus) as p:
             #with multiprocessing.Pool(n_cpus) as p:
                 
-                if self.link_type.lower() == 'function':
+                if self.link_type.lower() == 'function' or self.link_type.lower() == 'umbridge':
                     imap_var = p.imap(partial(Function, **self.func_args),
                                       c_points[:, np.newaxis])
                 else:
@@ -608,8 +606,8 @@ class PyLinkForwardModel(object):
         for key in self.Output.names:
             # If needed resort into single-value outputs
             if self.output_type == 'single-valued':
-                if out[:,cnt].shape[1] >1:  # TODO: this doesn't fully seem correct??
-                    for i in range(out[:,key]):
+                if out.shape[1]>1:  # TODO: this doesn't fully seem correct??
+                    for i in range(out[:,key]): # TODO: this doesn't fully seem correct??
                         new_key = key+str(i)
                         if new_key not in self.Output.names:
                             self.Output.names.append(new_key)
diff --git a/src/bayesvalidrox/surrogate_models/surrogate_models.py b/src/bayesvalidrox/surrogate_models/surrogate_models.py
index a6d31ccd1..af20e9814 100644
--- a/src/bayesvalidrox/surrogate_models/surrogate_models.py
+++ b/src/bayesvalidrox/surrogate_models/surrogate_models.py
@@ -8,6 +8,7 @@ import h5py
 import matplotlib.pyplot as plt
 from sklearn.preprocessing import MinMaxScaler
 import scipy as sp
+from scipy.optimize import minimize, NonlinearConstraint, LinearConstraint
 from tqdm import tqdm
 from sklearn.decomposition import PCA as sklearnPCA
 import sklearn.linear_model as lm
@@ -82,6 +83,10 @@ class MetaModel():
             >>> MetaModelOpts.dim_red_method = 'PCA'
             >>> MetaModelOpts.var_pca_threshold = 99.999  # Option A
             >>> MetaModelOpts.n_pca_components = 12 # Option B
+    apply_constraints : bool
+        If set to true constraints will be applied during training. 
+        In this case the training uses OLS. In this version the constraints 
+        need to be set explicitly in this class.
 
     verbose : bool
         Prints summary of the regression results. Default is `False`.
@@ -102,7 +107,8 @@ class MetaModel():
     def __init__(self, input_obj, meta_model_type='PCE',
                  pce_reg_method='OLS', bootstrap_method='fast',
                  n_bootstrap_itrs=1, pce_deg=1, pce_q_norm=1.0,
-                 dim_red_method='no', verbose=False):
+                 dim_red_method='no', apply_constraints = False, 
+                 verbose=False):
 
         self.input_obj = input_obj
         self.meta_model_type = meta_model_type
@@ -112,6 +118,7 @@ class MetaModel():
         self.pce_deg = pce_deg
         self.pce_q_norm = pce_q_norm
         self.dim_red_method = dim_red_method
+        self.apply_constraints = apply_constraints
         self.verbose = verbose
  
     def build_metamodel(self, n_init_samples = None) -> None:
@@ -587,9 +594,32 @@ class MetaModel():
 
         elif reg_method.lower() == 'ebl':
             clf_poly = EBLinearRegression(optimizer='em')
-
-        # Fit
-        clf_poly.fit(X, y)
+            
+        
+        # Training with constraints automatically uses L2
+        if self.apply_constraints:       
+            # TODO: set the constraints here
+            # Define the nonlin. constraint     
+            nlc = NonlinearConstraint(lambda x: np.matmul(X,x),-1,1.1)
+            self.nlc = nlc
+            
+            fun = lambda x: (np.linalg.norm(np.matmul(X, x)-y, ord = 2))**2
+            if self.init_type =='zeros':
+                res = minimize(fun, np.zeros(X.shape[1]), method = 'trust-constr', constraints  = self.nlc) 
+            if self.init_type == 'nonpi':
+                clf_poly.fit(X, y)
+                coeff = clf_poly.coef_
+                res = minimize(fun, coeff, method = 'trust-constr', constraints  = self.nlc)
+            
+            coeff = np.array(res.x)
+            clf_poly.coef_ = coeff
+            clf_poly.X = X
+            clf_poly.y = y
+            clf_poly.intercept_ = 0
+            
+        # Training without constraints uses chosen regression method
+        else:
+            clf_poly.fit(X, y)
 
         # Select the nonzero entries of coefficients
         if sparsity:
@@ -614,6 +644,65 @@ class MetaModel():
         return_out_dict['sparePsi'] = sparse_X
         return_out_dict['coeffs'] = coeffs
         return return_out_dict
+    
+    # -------------------------------------------------------------------------
+    def create_psi(self, basis_indices, univ_p_val):
+        """
+        This function assemble the design matrix Psi from the given basis index
+        set INDICES and the univariate polynomial evaluations univ_p_val.
+
+        Parameters
+        ----------
+        basis_indices : array of shape (n_terms, n_params)
+            Multi-indices of multivariate polynomials.
+        univ_p_val : array of (n_samples, n_params, n_max+1)
+            All univariate regressors up to `n_max`.
+
+        Raises
+        ------
+        ValueError
+            n_terms in arguments do not match.
+
+        Returns
+        -------
+        psi : array of shape (n_samples, n_terms)
+            Multivariate regressors.
+
+        """
+        # Check if BasisIndices is a sparse matrix
+        sparsity = sp.sparse.issparse(basis_indices)
+        if sparsity:
+            basis_indices = basis_indices.toarray()
+
+        # Initialization and consistency checks
+        # number of input variables
+        n_params = univ_p_val.shape[1]
+
+        # Size of the experimental design
+        n_samples = univ_p_val.shape[0]
+
+        # number of basis terms
+        n_terms = basis_indices.shape[0]
+
+        # check that the variables have consistent sizes
+        if n_params != basis_indices.shape[1]:
+            raise ValueError(
+                f"The shapes of basis_indices ({basis_indices.shape[1]}) and "
+                f"univ_p_val ({n_params}) don't match!!"
+                )
+
+        # Preallocate the Psi matrix for performance
+        psi = np.ones((n_samples, n_terms))
+        # Assemble the Psi matrix
+        for m in range(basis_indices.shape[1]):
+            aa = np.where(basis_indices[:, m] > 0)[0]
+            try:
+                basisIdx = basis_indices[aa, m]
+                bb = univ_p_val[:, m, basisIdx].reshape(psi[:, aa].shape)
+                psi[:, aa] = np.multiply(psi[:, aa], bb)
+            except ValueError as err:
+                raise err
+        return psi
 
     # --------------------------------------------------------------------------------------------------------
     def adaptive_regression(self, ED_X, ED_Y, varIdx, verbose=False):
diff --git a/tests/test_MetaModel.py b/tests/test_MetaModel.py
index 949ea6435..a2fb876e2 100644
--- a/tests/test_MetaModel.py
+++ b/tests/test_MetaModel.py
@@ -1122,3 +1122,21 @@ def test__compute_pce_moments_gpe() -> None:
     
 #%% Test MetaModel.update_metamodel
 #TODO: taken from engine
+
+if __name__ == '__main__':
+    
+    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]])
+    outputs = np.array([0.5])
+    
+    mm.CollocationPoints = samples
+    mm.build_metamodel(n_init_samples = 2)
+    BasisIndices = mm.allBasisIndices[str(1)][str(1.0)]
+    univ_bas = mm.univ_basis_vals(samples)
+    psi = mm.create_psi(BasisIndices, univ_bas)
+    
+    mm.regression(samples, outputs, psi)
-- 
GitLab