Example_3_Evaluation.ipynb 105 KB
 Maximilian Schanner committed Nov 18, 2019 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ``````{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Evaluation\n", "The third and last step in the `CORBASS` algorithm consists of evaluating the output from the integration step. Thus again this example makes use of the output from the previous example. A standard `run` of `CORBASS` concludes by calculating mean, variance and percentiles of the Gauss coefficient (compound) posterior. Therefore we first load the results from the `Integration` step:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "scrolled": true }, "outputs": [], "source": [ "%matplotlib inline\n", "import sys\n", "import os\n", "import numpy as np\n", "\n", "# relative import\n", "sys.path.append(os.path.abspath('') + '/../')\n", "from corbass.utils import load\n", "from corbass.integration import IntegrationResult\n", "\n", "pars = load('./Example_Parfile.py')\n", "# This example focuses again on the interval 1400-1500 A.D.\n", "year = 1450\n", "\n", `````` Maximilian Schanner committed Dec 03, 2019 33 `````` "with np.load(f'{pars.bin_fname(year)}{IntegrationResult.suffix_large}') as fh:\n", `````` Maximilian Schanner committed Nov 18, 2019 34 35 36 37 38 39 40 41 42 43 44 45 46 47 `````` " posterior = fh['posterior']\n", " mu_coeffs = fh['mu_coeffs']\n", " cov_coeffs = fh['cov_coeffs']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then pass the results to the routine `evaluation.coeffs`:" ] }, { "cell_type": "code", `````` Maximilian Schanner committed Dec 03, 2019 48 `````` "execution_count": 2, `````` Maximilian Schanner committed Nov 18, 2019 49 `````` "metadata": {}, `````` Maximilian Schanner committed Dec 03, 2019 50 51 52 53 54 `````` "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ `````` Maximilian Schanner committed May 08, 2020 55 `````` "/home/arthus/Dokumente/CORBASS/examples/../corbass/evaluation.py:214: RuntimeWarning: covariance is not positive-semidefinite.\n", `````` Maximilian Schanner committed Dec 03, 2019 56 57 58 59 `````` " for it in par_samps]\n" ] } ], `````` Maximilian Schanner committed Nov 18, 2019 60 61 62 63 64 65 66 67 68 69 70 71 72 73 `````` "source": [ "from corbass.evaluation import coeffs\n", "ls, ms, mean, sd, err_16, err_84 = coeffs(posterior, mu_coeffs, cov_coeffs, r_ref=pars.r_ref)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For illustration we show the dipole coefficients together with errorbars derived from the percentiles and one standard deviation:" ] }, { "cell_type": "code", `````` Maximilian Schanner committed Dec 03, 2019 74 `````` "execution_count": 3, `````` Maximilian Schanner committed Nov 18, 2019 75 76 `````` "metadata": {}, "outputs": [ `````` Maximilian Schanner committed Dec 03, 2019 77 78 `````` { "data": { `````` Maximilian Schanner committed May 08, 2020 79 `````` "image/png": "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\n", `````` Maximilian Schanner committed Nov 18, 2019 80 81 82 83 84 85 86 87 88 89 90 91 92 93 `````` "text/plain": [ "