{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Nested sampling" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that we want to characterize the posterior distribution.\n", "\n", "It would solve our problem if we could approximate it with a sum of slabs:\n", "\n", "![Approximation with slabs](img/ns-slabs.png)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we had the slabs heights and widths -- volumes in general --, we could integrate the posterior.\n", "\n", "We would also know the posterior probability distributions.\n", "\n", "So lets try to find a way to find such nested slabs. We need a way to measure a sequence of heights (likelihood) and volume." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets think about the volume enclosed above a likelihood threshold.\n", "\n", "\"Likelihood\n", "\n", "Most of the volume will have some low likelihood, and some of it will have the highest likelihood, like so:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Likelihood-Volume curve](img/ns-LV.png)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we had this knowledge, we could build our slabs by dividing the volume into equal sizes, and read off the height of our slabs by the corresponding likelihood values:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Likelihood-Volume curve](img/ns-LV-spacing.png)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unfortunately, we do not know enough about our likelihood function to decompose the space into likelihood thresholds with equally spaced volumes. It is a really hard problem in more than one dimension.\n", "\n", "But what if we sampled **randomly uniformly** in the volume? That would also give us likelihood thresholds:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Likelihood-Volume curve with sampling](img/ns-LV-sampling.png)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We would get likelihoods that divide the space.\n", "\n", "We will not know the volume sliced by the likelihood (because we do not know the yellow curve).\n", "\n", "But order statistics tells us the distribution of the spacing. So we can estimate on average the slab volume (red). The most extreme slab is:\n", "\n", "$\\Delta V$ ~ Beta(1, N)\n", "\n", "The height is $L$ of the sample.\n", "\n", "Now we have a slab. Nested sampling is applying this idea repeatedly.\n", "\n", "Lets see it in action!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Recap\n", "\n", "We have some target function (the likelihood times the prior) in some parameter space, and we want to integrate it.\n", "\n", "As a toy example, we chose the following likelihood:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "def loglikelihood(*parameters):\n", " a = np.asarray(parameters)[:-1] * 10\n", " b = np.asarray(parameters)[1:] * 10\n", " return -2 * (100 * (b - a**2)**2 + (1 - a)**2).sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we assume our prior is uniform in the domain -1/2 to +1/2 in each parameter. \n", "We use two parameters at the moment." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "lo = -0.5\n", "hi = 0.5\n", "dim = 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets plot this function in 2d:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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QyKR4Nprx3vXXPKhcpCKMzAwwB//+Ee+/OUv09zcHHecqqVykIqzb98+zpw5w8qVK/Xx7CJSOUhFSaVSvPbaayxfvpzZs2fHHaeqqRykonR3d9PV1cXq1at1bUORqRykYmQyGXbu3Mk111zDjTfeGHecqqdykIrR09PD9u3bufvuu3WruxJQOUhFiKKId955h8HBQW699VadiCwBlYNUhLNnz7J161buvPNO5syZE3ecmqBykLLn7nR1dfHBBx/w9a9/XXezKhGVg5S9/v5+Xn75ZVauXMmSJUvijlMzVA5S1tydv/zlL+zZs4dvfvObumFNCakcpKydO3eOrVu3snTpUpYvX64TkSWkcpCy5e7s27ePN998k4ceekhfIFtiKgcpW+fPn+eVV15h/vz53H777fpodolpa0tZGvnK+Z07d7Ju3TpmzpwZd6Sao3KQstTf38+LL77I/Pnzueuuu3QnqxioHKTsjHyr9BtvvMG6devQN5HHQ+UgZef06dNs2bKFxYsXa68hRioHKSupVIq33nqLzs5OvvWtb2mvIUYqBykb7s7hw4fZsmULK1eu5I477tB3NsRI5SBlY2BggN/+9rd8/PHHPPLII/qmp5ipHKQspNNpurq6eOWVV7jvvvtIJpM61xAzlYPEzt05evQov/zlL2ltbdXVkGVC5SCxGxgYYPv27XR1dfHwww9zww036GrIMqB/AYlVKpXi3Xffpb29ndtuu401a9bQ0tISdyxB5SAxymQyfPTRR7z88ss0Nzezfv16rrnmmrhjSZbKQWIRRRHHjx/nd7/7HYcOHeLBBx/k5ptv1knIMqJykM9w96I+fxRF9PT0sGvXLt5++21Wr17NV7/6Va666qqirlcuj8pBPsPMcPeilEQURZw5c4bdu3ezc+dObrzxRr7xjW8we/ZsfZFLmdHlZzKmkXIo1Is2k8nQ19dHZ2cnu3btIpFI8MADD9DW1qbDiTKkcpCgkUIoVEGk02l6e3t57733eOutt2hpaeHee+/l85//vL5NukypHGRMI4cXURRhZpd+LkcURaRSKU6fPs3evXvp6OigpaWFO+64gy9+8Yv6wtgypnKQceUWxMj8REUxcr4inU4zODjIyZMn2b9/PwcPHmTatGnccsst3HTTTUybNk3nGcpYQcrBzO4B/h2oB55z96dGLW8GfgHcAvQA69z9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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "a = np.linspace(lo, hi, 400)\n", "b = np.linspace(lo, hi, 400)\n", "\n", "grid = np.meshgrid(a, b)\n", "grid_unnormalised_logposterior = np.vectorize(loglikelihood)(grid[0], grid[1])\n", "\n", "plt.imshow(\n", " np.exp(grid_unnormalised_logposterior[::-1]),\n", " extent=(lo, hi, lo, hi),\n", " aspect='equal', cmap='gray_r');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Nested sampling intro" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we parachute some walkers (called live points) into the parameter space:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "Nlive = 40\n", "\n", "live_points = np.random.uniform(lo, hi, size=(Nlive, dim))\n", "live_points_loglikelihood = np.vectorize(loglikelihood)(*live_points.transpose())\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(live_points[:,0], live_points[:,1]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Nested sampling](img/nested-sampling.png)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "They sample the entire prior volume $V=1$:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "volume = 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The likelihood introduces an unique ordering to these points:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([16, 24, 23, 38, 11, 15, 7, 2, 21, 13, 6, 12, 25, 34, 18, 1, 4,\n", " 32, 31, 3, 8, 33, 39, 35, 29, 14, 20, 5, 30, 36, 0, 9, 27, 37,\n", " 17, 19, 22, 10, 28, 26])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "order = np.argsort(live_points_loglikelihood)\n", "order" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* The likelihood distribution of these points follows the distribution of likelihood values of points distributed according to the prior.\n", "\n", "* The points demarc likelihood thresholds, as visualised below. In between lies approximately similar prior volume. The fractions are distributed as $Beta(1, N_\\mathrm{live})$.\n", "\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.contour(a, b, grid_unnormalised_logposterior, levels=live_points_loglikelihood[order[::4]], cmap='tab20b');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* The volumes enclosed between each likelihood interval is Beta(1, N) of the total volume. \n", "\n", "* But in most cases we do not have the grid above, so we do not know the exact volume. So we need to approximate it.\n", "\n", "* Lets approximate with a random Beta(1, N) draw:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.01573057892187748" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "volume_shell = np.random.beta(1, Nlive)\n", "volume_shell" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The volume remaining becomes smaller by this:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9842694210781225" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "volume *= 1 - volume_shell\n", "volume" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets identify the worst point (lowest likelihood contour):" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "lowest = np.argmin(live_points_loglikelihood)\n", "Lmin = live_points_loglikelihood[lowest]\n", "\n", "plt.scatter(live_points[:,0], live_points[:,1])\n", "plt.plot(live_points[lowest,0], live_points[lowest,1], 'x ', ms=12);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We kill this walker! Lets add it to the dead points:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "dead_points = [live_points[lowest].copy()]\n", "dead_points_loglikelihoods = [Lmin]\n", "dead_points_volume = volume_shell\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have to replace the point with a new point *drawn from the prior*, \n", "but we only accept points whose *likelihoods is above Lmin*.\n", "\n", "So we need a **likelihood-restricted prior sampling** method (LRPS).\n", "\n", "A simple option is to draw and throw away bad points:" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "def LRPS_rejection(Lmin):\n", " for i in range(10):\n", " proposed_points = np.random.uniform(lo, hi, size=(1000, dim))\n", " proposed_points_loglikelihood = np.vectorize(loglikelihood)(*proposed_points.transpose())\n", " if (proposed_points_loglikelihood > Lmin).any():\n", " i = np.where(proposed_points_loglikelihood > Lmin)[0][0]\n", " return proposed_points[i,:], proposed_points_loglikelihood[i]" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "live_points[lowest], live_points_loglikelihood[lowest] = LRPS_rejection(Lmin)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(live_points[:,0], live_points[:,1])\n", "plt.plot(dead_points[0][0], dead_points[0][1], 'x ', ms=12);\n", "plt.plot(live_points[lowest,0], live_points[lowest,1], '* ', ms=12);\n" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "def nested_sampling(Niter, Nlive):\n", " volume = 1\n", " \n", " live_points = np.random.uniform(lo, hi, size=(Nlive, dim))\n", " live_points_loglikelihood = np.vectorize(loglikelihood)(*live_points.transpose())\n", " \n", " dead_points = []\n", " dead_points_loglikelihoods = []\n", " dead_points_volume = []\n", " volume_remaining = []\n", " \n", " for i in range(Niter):\n", " # find the current likelihood threshold\n", " Lmin = live_points_loglikelihood.min()\n", " lowest = np.argmin(live_points_loglikelihood)\n", "\n", " # shrink volume\n", " volume_shell_fraction = np.random.beta(1, Nlive)\n", " volume_shell = volume * volume_shell_fraction\n", " volume *= 1 - volume_shell_fraction\n", "\n", " # eject this point\n", " dead_points.append(live_points[lowest].copy())\n", " dead_points_loglikelihoods.append(np.copy(Lmin))\n", " dead_points_volume.append(volume_shell)\n", " volume_remaining.append(volume)\n", "\n", " # replace point if we can\n", " replacement = LRPS_rejection(Lmin)\n", " if replacement is None: break\n", " live_points[lowest], live_points_loglikelihood[lowest] = replacement\n", " \n", " return dead_points, dead_points_loglikelihoods, dead_points_volume, volume_remaining" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [], "source": [ "dead_points, dead_points_loglikelihoods, dead_points_volume, volume_remaining = nested_sampling(400, Nlive=40)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(volume_remaining);\n", "plt.yscale('log')\n", "plt.xlabel(\"Iteration\")\n", "plt.ylabel(\"Volume\")" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAEGCAYAAAAjc0GqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAiLklEQVR4nO3de5hcdZ3n8fe377nfE0IuJIGOEBAxNDE66DByC6wadBGj7ENWecyqMKC7jsAwI47KDOq47OAAbnaIBvQxMHhJXGFjuHlhDBAgQBIIaYJALuSeviTdXV3V3/3j/JpUOtXXdNWp7vN5PU89fep3TlV966RTn/79zq/OMXdHRESk0EriLkBERJJJASQiIrFQAImISCwUQCIiEgsFkIiIxKIs7gIGivHjx/uMGTPiLkNEZEB59tln97r7hFzrFEA9NGPGDNatWxd3GSIiA4qZvdHZOg3BiYhILBRAIiISCwWQiIjEQgEkIiKxUACJiEgsEh1AZrbAzDabWa2Z3Rh3PSIiSZLYADKzUuBO4BJgDvBpM5sTb1UiIsmR5O8BzQNq3X0rgJmtABYCm2KtSo7SmmnjcEuG5nSGdJuTyTjptjba3Em3OemMk2mLlqOfbbS1QbqtrUO709WlRzqucrzr9cdsn73OO12Xq6Hb1+r4cM9e17vHdtygq+eO7ne+ffd1dn2pl17v8+N47LGvHd8+H4hqZozlQ7Nzfpf0uCQ5gKYAb2Xd3wa8L3sDM1sCLAGYPn164SobBJpSGbYfbKJ2dyOHU2lS6TZSmbZ3fu6ub+FQS5qddc00t2ZobXNa0220Ztpoas1wqCXNoVSGVLot7rcictzM4q7g+HzhL09WABWauy8FlgLU1NQM/D9j+sGBQyl2NTSzu76F3Q0t7A7Le8Ly3sYU+xpbqG9Od/k8wypKGV5VxuRRQxhaUcqw0hLKS42ykpLofmUZQytLGV5RxtDKMqrKSygvKaG0xN65lbX/LDVKS0ootez7R9aXlhilZpSUHP0p0PEzway79R3ud9iiqw+ZYx7bj691zMv2ss7j2Q8dn/uYu/34Wh1fr7sP9d7+e/Wmtu7+PaVnkhxA24FpWfenhjYhGqLYVd/Cq7saeHVXA1t2NfLcmwfYsrvxmG2HV5YxcUQlE0ZUcvqJIxk3rIKJI6uYPKqKUyYOZ9SQcspLS6goK6G8tITKsuim/7QiyZbkAHoGqDazmUTBswj4TLwlxee5Nw/w4lsH2byrkS0hdLJ7MeOGVXDa5JFcfvZUpowZwsQRVUwcUcnEkZUMrUjyr5GI9FViPzncPW1m1wKrgVJgmbtvjLmsgsm0Obsbmln35wOsXL+DR17eBcCoIeW8a9IIPvqeE5k9aUS4DWfc8MqYKxaRwSaxAQTg7g8BD8VdRyFt2F7Hsj++zq9f3EFrJjqsNWZoOV+9aDZX1ExjwohKDY2JSEEkOoCSwN35zUs72bijns1vN/DYK7upKCth0TnTOXXyCE49YQRnTRtDaYlCR0QKSwE0SO1paGHl+u089NJOnnvzIOWlxuihFfz3C2dz1ftPYvTQirhLFJGEUwANMnsaWvj2bzbx+Cu7qW9Oc/KEYXzrsjO4ct70Y6Yhi4jESQE0yHzz/25i9Ya3ufD0SVx/fjWzJ42IuyQRkZwUQIPIk7V7+fULO7j+/Gq+cuHsuMsREelSYk9GOti0Ztr4+soNTB87lC+ed3Lc5YiIdEsBNEg8+Ow2XttziL/7T6dRVV4adzkiIt1SAA0Cza0Z7nh0C2dNG82FcybFXY6ISI8ogAaBn6x9g511zfzNxe/Sl0hFZMBQAA1wv35hB//08Ct8sHo8f3HK+LjLERHpMQXQALf091upnjicu66cG3cpIiK9ogAawA4eTrFhRx2XnDGZEVXlcZcjItIrCqAB7E+v7cMdzq0eF3cpIiK9pgAawJ58bS/DKko5c+rouEsREek1BdAA9mTtPubPGkd5qf4ZRWTg0SfXALX9YBOv7z2kmW8iMmApgAaoRzZFVzBVAInIQKUAGoCaWzPc9UQtZ580htmThsddjohInyiABqD7/vQGu+pbdOYDERnQFEADTN3hVu56opYPVo9n/ixNvxaRgUsBNMD8/coNNDSnuWHBqXGXIiJyXBRAA0jd4VZWvbCDq8+dyRlTRsVdjojIcVEADSDbDzYB8J5po+MtRESkHyiABpCddVEATR5VFXMlIiLHTwE0gOwIPaATRw+JuRIRkeOnABpAdtQ1U15qTBheGXcpIiLHTQE0gOw82MSkkVWUlOi7PyIy8CmABpAddc2cOErDbyIyOCiABog39x2mdncjk0drAoKIDA5FF0Bm9j0ze8XMXjSzX5rZ6Kx1N5lZrZltNrOLs9oXhLZaM7sxq32mmT0V2u83s4rQXhnu14b1Mwr5Hvviy/c/TyrdxifPnhZ3KSIi/aLoAghYA5zh7mcCrwI3AZjZHGARcDqwALjLzErNrBS4E7gEmAN8OmwL8B3gdnc/BTgAXB3arwYOhPbbw3ZFq63N2bSznk+dM41zq3X2axEZHIougNz9t+6eDnfXAlPD8kJghbu3uPvrQC0wL9xq3X2ru6eAFcBCi87S+WHgwfD45cBlWc+1PCw/CJxvRXxWz+0Hm2hubeOUiTrztYgMHkUXQB18Dng4LE8B3spaty20ddY+DjiYFWbt7Uc9V1hfF7YvSrV7GgE4eYICSEQGj7I4XtTMHgFOyLHqZndfGba5GUgDPy1kbdnMbAmwBGD69OlxlcFru6MAUg9IRAaTWALI3S/oar2Z/VfgI8D57u6heTuQfQR+amijk/Z9wGgzKwu9nOzt259rm5mVAaPC9h3rXAosBaipqfGO6wtl4456xg6rYOywirhKEBHpd0U3BGdmC4CvAR9z98NZq1YBi8IMtplANfA08AxQHWa8VRBNVFgVgutx4PLw+MXAyqznWhyWLwceywq6onE4leaOR7fwq/XbWXBGrg6jiMjAFUsPqBv/ClQCa8K8gLXu/gV332hmDwCbiIbmrnH3DICZXQusBkqBZe6+MTzXDcAKM/s28DxwT2i/B7jPzGqB/UShVXS+t3ozP3ryz9ScNIabLz0t7nJERPqVFeEf/kWppqbG161bV7DXa2xJM/8fH+WC0ybyvxa9t2CvKyLSn8zsWXevybWu6IbgJPK7zXtobElz5fyT4i5FRCQvFEBFauOOOspKjDOn6sqnIjI4KYCK1Ms76zll4nAqy0rjLkVEJC8UQEXq5Z0NnDZ5ZNxliIjkjQKoCO1rbOHt+mbmKIBEZBBTABWhX63fAcD7Zo2NuRIRkfxRABWZtjbnnj9sZd7MsZw5dXTc5YiI5I0CqMgcOJxiR10zC07XmQ9EZHBTABWZQy0ZAEZUFeNJKkRE+o8CqMg0tkRXjxheqQASkcFNAVRkDqWiABqmABKRQU4BVGTae0AKIBEZ7BRAReaQhuBEJCEUQEXm0Ds9IJ2CR0QGNwVQkWmfBacekIgMdgqgInNIx4BEJCEUQEWmMZWmoqyE8lL904jI4KZPuSJzqCWt4TcRSQQFUJE51JJhaIUmIIjI4KcAKjKN6gGJSEIogIrMoZa0JiCISCIogIqMAkhEkkIBVGSiITgdAxKRwU8BVGQOtWQYVqEekIgMfgqgIpJpcw4cTjF6aHncpYiI5F2P/9Q2sxrgg8CJQBOwAVjj7gfyVFvivLankZZ0G6dNHhl3KSIieddtD8jMPmtmzwE3AUOAzcBu4FzgETNbbmbT81tmMry0rQ6Ad08ZFXMlIiL515Me0FDgL9y9KddKMzsLqAbe7Me6Euml7XUMKS9l1oThcZciIpJ33QaQu9/Zzfr1/VZNgrWkM/zHa3uZc+JISkss7nJERPKu2wAyszu6Wu/u1/VfOcm0p6GFv3nwBV7d1chdV86NuxwRkYLoySy4Z8OtCpgLbAm3s4CKfBVmZv/DzNzMxof7ZmZ3mFmtmb1oZnOztl1sZlvCbXFW+9lm9lJ4zB1mZqF9rJmtCduvMbMx+Xof3XF3rvvZ8/zptX18c+HpXPruyXGVIiJSUN0GkLsvd/flwJnAee7+A3f/AXA+UQj1OzObBlzE0ceVLiE61lQNLAHuDtuOBW4B3gfMA27JCpS7gc9nPW5BaL8ReNTdq4FHw/1YPPbKbv60dR9/95E5XPX+GXGVISJScL35HtAYIHt+8PDQlg+3A18DPKttIXCvR9YCo81sMnAx0XTw/WFK+BpgQVg30t3XursD9wKXZT3X8rC8PKu94F7d1QjAf547Ja4SRERi0Zuv3N8GPG9mjwMGfAj4Rn8XZGYLge3u/kIYMWs3BXgr6/620NZV+7Yc7QCT3H1nWH4bmNRJLUuIeltMn56fmebNrdEluKvKdPodEUmWHgeQu//IzB4mGupy4AZ3f7svL2pmjwAn5Fh1M/C3RMNvBeHubmbeybqlwFKAmpqanNscr+Z0hoqyEko0801EEqa3Jx2bR3Q2BIhC6Nd9eVF3vyBXu5m9G5gJtPd+pgLPmdk8YDswLWvzqaFtO3Beh/YnQvvUHNsD7DKzye6+MwzV7e7L++gPzakMQ8rV+xGR5OnxMSAzuw24HtgUbteZ2T/2ZzHu/pK7T3T3Ge4+g2jYbG7oaa0Crgqz4eYDdWEYbTVwkZmNCZMPLgJWh3X1ZjY/zH67ClgZXmoV0D5bbnFWe8E1t7ZRVa5T8olI8vSmB3QpcJa7twGY2XLgeaIhs0J4KNRQCxwGPgvg7vvN7FvAM2G7b7r7/rD8JeDHRKcQejjcIDqe9YCZXQ28AVxRiDeQS3M6Q5V6QCKSQL0dghsNtH+45/2EZaEX1L7swDWdbLcMWJajfR1wRo72fUTTyGPX3JrRBAQRSaTeBNA/cewsuNi+PzNYNLW2UVWhABKR5OnNLLifmdkTwDmhqc+z4OSIqAekY0Aikjy9HYI7h6jnA8cxC06OaGnNMHpo3s5oJCJStIpqFlwSNbVmNAtORBJpIM2CG5SaW9v0PSARSaTe/uk9OmtZl+3sB82tmoYtIsmkWXAxUwCJSFJpFlzMmlvbqNQxIBFJoN5+8pUAe4GDwGwz+1DXm0tXMm1OKqNjQCKSTD3uAZnZd4BPARuBttDswO/zUFcitKTDpRgUQCKSQL05BnQZ8C53b8lTLYnT3BrluL6IKiJJ1JtPvq1Aeb4KSaKmcDG6IToVj4gkULc9IDP7AdFQ22FgvZk9CrzTC3L36/JX3uD2ztVQNQQnIgnUkyG4deHns0TX0ZF+0h5AlTobtogkULcB5O7LC1FIEr1zDEjTsEUkgXoyBPeAu19hZi8RDcUdxd3PzEtlCdDeA9I0bBFJop4MwV0ffn4kn4UkkY4BiUiS9WQIbmf4+Ub+y0mWV3c1AjBpZFXMlYiIFF5PhuAaODL0ZuGnh2V395F5qm3Q++2mt3n3lFGcMEoBJCLJ05Me0IhCFJI0uxuaef7Ng3z1otlxlyIiEoteTb8ys3PN7LNhebyZzcxPWYPfxu31AMyfNS7mSkRE4tGbK6LeAtwA3BSaKoCf5KOoJHhtT3T8Z9aE4TFXIiISj970gD4OfAw4BODuOwANz/XR1r2HGD20nLHDKuIuRUQkFr0JoJS7O2FCgpkNy09JybB1TyMzx2sXikhy9SaAHjCz/w2MNrPPA48A/5afsga/1/ceYtZ4Db+JSHL15nIM3wcuAOqBdwFfR9cC6pPDqTS76luYNUE9IBFJrt4E0D3u/jlgDYCZDQceAs7PR2GDWWNLGoCRQ3R1CxFJrt4MwW03s7sAzGwM8Fs0C65PUunoJKSVpToJqYgkV48/Ad3974FGM/shUfh8391/lLfKBrH2ACovs262FBEZvLoNIDP7RPsNeAqYDzwPeGjrd2b212b2ipltNLPvZrXfZGa1ZrbZzC7Oal8Q2mrN7Mas9plm9lRov9/MKkJ7ZbhfG9bPyMf76EwqEwVQRalOQioiydWTY0Af7XD/eaJLc3+UaEr2L/qzIDP7K2Ah8B53bzGziaF9DrAIOB04EXjEzNrPY3MncCGwDXjGzFa5+ybgO8Dt7r4i9NyuBu4OPw+4+ylmtihs96n+fB9dae8BVZRpCE5Ekqsn54L7bCEKyfJF4DZ3bwmvvzu0LwRWhPbXzawWmBfW1br7VgAzWwEsNLOXgQ8DnwnbLAe+QRRAC8MywIPAv5qZhe855V1rRgEkItKTs2F/zd2/a2Y/IPcF6a7r55pmAx80s1uBZuCr7v4MMAVYm7XdttAG8FaH9vcB44CD7p7Osf2U9se4e9rM6sL2e7MLMbMlwBKA6dOn98ubA2hp7wFpEoKIJFhPhuBeDj/X5VjXpx6DmT0CnJBj1c2hprFEx5rOIfoC7Ky+vM7xcvelwFKAmpqafusdaQhORKRnQ3C/Dj+Xd1xnZv/clxd19ws6W2dmXwR+EYbDnjazNmA8sB2YlrXp1NBGJ+37iM7aUBZ6Qdnbtz/XNjMrA0aF7QsipR6QiEjvLseQwxX9UsXRfgX8FUCYZFBBNDS2ClgUZrDNBKqBp4FngOow462CaKLCqhBgjwOXh+ddDKwMy6vCfcL6xwp1/AeyZsGpByQiCdabMyHkko8vsiwDlpnZBiAFLA7hsNHMHgA2AWngGnfPAJjZtcBqoBRY5u4bw3PdAKwws28Tzd67J7TfA9wXJjLsJwqtgtEkBBGRnk1CGNvZKvIQQO6eAv5LJ+tuBW7N0f4Q0WmBOrZv5chMuez2ZuCTx11sH+kYkIhIz3pAzxJNNsgVNqn+LScZdAxIRKRnkxB02e1+pmnYIiI9OxXPjG7Wm5lN7beKEkCTEEREejYE9z0zKyGaQfYssAeoAk4hmq12PnAL0Rc9pQda09GEOwWQiCRZT4bgPhnOw3Yl8DlgMtBE9AXV3wC3hoP60kOpTIbSEqO0RGfDFpHk6tE07HBiz5vzXEtipNJtOv4jIonXq+8BmdkHgBnZj3P3e/u5pkEvlW6jvFS9HxFJth4HkJndB5wMrAcyodkBBVAvpTJtVJTpWkAikmy96QHVAHMKecqawSqVdio1AUFEEq43n4IbyH0Ga+mlqAekABKRZOtND2g8sMnMngZa2hvd/WP9XtUgl0pnNAlBRBKvNwH0jXwVkTSpdBvlZZqEICLJ1uMAcvff5bOQJEllNA1bRKQnZ8NuIPeVTw1wdx/Z71UNcq1p1zEgEUm8npwJYUQhCkmSlkwboyrK4y5DRCRW+jM8BjoTgoiIAigWqXSGCk1CEJGEUwDFQJMQREQUQLFIpfVFVBERfQrGoDWjWXAiIvoULDB3p7k1Q6VORioiCacAKrA9DS0cTmWYNmZI3KWIiMRKAVRgr+5qBGD2JH29SkSSTQFUYK/uagCgWgEkIgmnACqwLbsbGDO0nPHDK+IuRUQkVgqgAtuyq5HqSSMw0xdRRSTZFEAFtu9Qikkjq+IuQ0QkdgqgAmtKZRhSrt0uIqJPwgJras0wpFzfARIRUQAVWFNrhqoKBZCISNEFkJmdZWZrzWy9ma0zs3mh3czsDjOrNbMXzWxu1mMWm9mWcFuc1X62mb0UHnOHhSP/ZjbWzNaE7deY2ZhCvLdMm5NKt6kHJCJCEQYQ8F3gH9z9LODr4T7AJUB1uC0B7oYoTIBbgPcB84BbsgLlbuDzWY9bENpvBB5192rg0XA/75pbMwAKIBERijOAHGi/zPcoYEdYXgjc65G1wGgzmwxcDKxx9/3ufgBYAywI60a6+1p3d+Be4LKs51oelpdntedVU3sAaQhORKT7S3LH4MvAajP7Z6KA/EBonwK8lbXdttDWVfu2HO0Ak9x9Z1h+G5iUqxAzW0LU22L69Ol9ezdZmlJRAFWpByQiEk8AmdkjwAk5Vt0MnA98xd1/bmZXAPcAF+SrFnd3M/NO1i0FlgLU1NTk3KY3NAQnInJELAHk7p0GipndC1wf7v478G9heTswLWvTqaFtO3Beh/YnQvvUHNsD7DKzye6+MwzV7e7TG+mlJgWQiMg7ivEY0A7gL8Pyh4EtYXkVcFWYDTcfqAvDaKuBi8xsTJh8cBGwOqyrN7P5YfbbVcDKrOdqny23OKs9r9qH4HQMSESkOI8BfR74FzMrA5oJx2CAh4BLgVrgMPBZAHffb2bfAp4J233T3feH5S8BPwaGAA+HG8BtwANmdjXwBnBFPt9Qu/YekI4BiYgUYQC5+x+Bs3O0O3BNJ49ZBizL0b4OOCNH+z6iY00FpWNAIiJHFOMQ3KCladgiIkcogAqoKdUGqAckIgIKoILSLDgRkSMUQAXUfgyoqkK7XUREn4QF1JTKUGJQUardLiKiT8ICar8WkC7HLSKiACqoptaMZsCJiAQKoAJqTmX0JVQRkUABVEC6HLeIyBEKoALafyjFiKqiO/mEiEgsFEAF4u68uquB2ZNGxF2KiEhRUAAVyJ6GFg4cbuVdJyiARERAAVQwL7/dAMCpJ4zsZksRkWRQABXI5rfrAThVPSAREUABVDCv7z3EuGEVjBlWEXcpIiJFQQFUIHsaUkwYURl3GSIiRUMBVCD7DrUwfrgCSESknQKoQPY2tjB+uIbfRETaKYAKZG9DSj0gEZEsCqACOJxK09SaYZwCSETkHQqgAtjbkALQEJyISBYFUAHsaWwB0BCciEgWBVAB7FMAiYgcQwFUAHsbwxDcCA3BiYi0UwAVwIHDUQCNGaoAEhFppwAqgLqmVirLSnQ1VBGRLAqgAqhvamXUkPK4yxARKSoKoAKob25lpAJIROQoCqACqFMPSETkGLEEkJl90sw2mlmbmdV0WHeTmdWa2WYzuzirfUFoqzWzG7PaZ5rZU6H9fjOrCO2V4X5tWD+ju9fIl/qmNCOryvL9MiIiA0pcPaANwCeA32c3mtkcYBFwOrAAuMvMSs2sFLgTuASYA3w6bAvwHeB2dz8FOABcHdqvBg6E9tvDdp2+Rr7eKKgHJCKSSywB5O4vu/vmHKsWAivcvcXdXwdqgXnhVuvuW909BawAFpqZAR8GHgyPXw5clvVcy8Pyg8D5YfvOXiNvdAxIRORYxXYMaArwVtb9baGts/ZxwEF3T3doP+q5wvq6sH1nz3UMM1tiZuvMbN2ePXv69IbcnfqmVkZWKYBERLLl7cCEmT0CnJBj1c3uvjJfr9uf3H0psBSgpqbG+/IcjS1p2hwNwYmIdJC3AHL3C/rwsO3AtKz7U0MbnbTvA0abWVno5WRv3/5c28ysDBgVtu/qNfpdfXPUORs5RJMQRESyFdsQ3CpgUZjBNhOoBp4GngGqw4y3CqJJBKvc3YHHgcvD4xcDK7Oea3FYvhx4LGzf2WvkRd3hVkA9IBGRjmL5s9zMPg78AJgA/MbM1rv7xe6+0cweADYBaeAad8+Ex1wLrAZKgWXuvjE83Q3ACjP7NvA8cE9ovwe4z8xqgf1EoUVXr5EP9c1RAOkYkIjI0WIJIHf/JfDLTtbdCtyao/0h4KEc7VvJMYvN3ZuBT/bmNfKhvikEkHpAIiJHKbYhuEFn3PAKLjnjBCaM0LWARESy6ch4np190ljOPmls3GWIiBQd9YBERCQWCiAREYmFAkhERGKhABIRkVgogEREJBYKIBERiYUCSEREYqEAEhGRWFh0fk7pjpntAd7o48PHA3v7sZx8U735pXrzS/XmT19qPcndJ+RaoQAqADNb5+41cdfRU6o3v1Rvfqne/OnvWjUEJyIisVAAiYhILBRAhbE07gJ6SfXml+rNL9WbP/1aq44BiYhILNQDEhGRWCiAREQkFgqgPDOzBWa22cxqzezGuOvJxcz+bGYvmdl6M1sX2saa2Roz2xJ+jomxvmVmttvMNmS15azPIneE/f2imc0tknq/YWbbwz5eb2aXZq27KdS72cwuLnCt08zscTPbZGYbzez60F6U+7eLeot1/1aZ2dNm9kKo9x9C+0wzeyrUdb+ZVYT2ynC/NqyfUST1/tjMXs/av2eF9uP7fXB33fJ0A0qB14BZQAXwAjAn7rpy1PlnYHyHtu8CN4blG4HvxFjfh4C5wIbu6gMuBR4GDJgPPFUk9X4D+GqObeeE34tKYGb4fSktYK2TgblheQTwaqipKPdvF/UW6/41YHhYLgeeCvvtAWBRaP8h8MWw/CXgh2F5EXB/gfdvZ/X+GLg8x/bH9fugHlB+zQNq3X2ru6eAFcDCmGvqqYXA8rC8HLgsrkLc/ffA/g7NndW3ELjXI2uB0WY2uSCFBp3U25mFwAp3b3H314Faot+bgnD3ne7+XFhuAF4GplCk+7eLejsT9/51d28Md8vDzYEPAw+G9o77t32/Pwicb2ZWmGq7rLczx/X7oADKrynAW1n3t9H1f5a4OPBbM3vWzJaEtknuvjMsvw1Miqe0TnVWXzHv82vDMMWyrCHNoqk3DPe8l+iv3qLfvx3qhSLdv2ZWambrgd3AGqJe2EF3T+eo6Z16w/o6YFyc9bp7+/69Nezf282ssmO9Qa/2rwJIAM5197nAJcA1Zvah7JUe9bWLdr5+sdcX3A2cDJwF7AS+H2s1HZjZcODnwJfdvT57XTHu3xz1Fu3+dfeMu58FTCXqfZ0ab0Vd61ivmZ0B3ERU9znAWOCG/ngtBVB+bQemZd2fGtqKirtvDz93A78k+k+yq70rHX7ujq/CnDqrryj3ubvvCv+x24D/w5FhoNjrNbNyog/zn7r7L0Jz0e7fXPUW8/5t5+4HgceB9xMNVZXlqOmdesP6UcC+wlYayap3QRj6dHdvAX5EP+1fBVB+PQNUhxkvFUQHFVfFXNNRzGyYmY1oXwYuAjYQ1bk4bLYYWBlPhZ3qrL5VwFVhds58oC5rKCk2HcbFP060jyGqd1GY/TQTqAaeLmBdBtwDvOzu/zNrVVHu387qLeL9O8HMRoflIcCFRMetHgcuD5t13L/t+/1y4LHQA42z3ley/hgxouNV2fu3778PhZxhkcQb0SyRV4nGfW+Ou54c9c0imiX0ArCxvUaicedHgS3AI8DYGGv8GdGwSivRGPPVndVHNBvnzrC/XwJqiqTe+0I9L4b/tJOztr851LsZuKTAtZ5LNLz2IrA+3C4t1v3bRb3Fun/PBJ4PdW0Avh7aZxEFYS3w70BlaK8K92vD+llFUu9jYf9uAH7CkZlyx/X7oFPxiIhILDQEJyIisVAAiYhILBRAIiISCwWQiIjEQgEkIiKxUACJFJiZNYafM8zsM/383H/b4f5/9Ofzi/QnBZBIfGYAvQqgrG/Pd+aoAHL3D/SyJpGCUQCJxOc24IPh+ipfCSeB/J6ZPRNO+vjfAMzsPDP7g5mtAjaFtl+Fk8dubD+BrJndBgwJz/fT0Nbe27Lw3BssuvbTp7Ke+wkze9DMXjGznxby7MuSbN39NSUi+XMj0TVsPgIQgqTO3c8JZxt+0sx+G7adC5zh0SUFAD7n7vvD6VKeMbOfu/uNZnatRyeS7OgTRCfqfA8wPjzm92Hde4HTgR3Ak8BfAH/s7zcr0pF6QCLF4yKi82qtJ7rEwDiic5cBPJ0VPgDXmdkLwFqik0FW07VzgZ95dMLOXcDviM5s3P7c2zw6ked6oqFBkbxTD0ikeBjw1+6++qhGs/OAQx3uXwC8390Pm9kTROcQ66uWrOUM+lyQAlEPSCQ+DUSXlW63GvhiuNwAZjY7nKG8o1HAgRA+pxJdCrlda/vjO/gD8KlwnGkC0WXDC3ZWaJFc9JeOSHxeBDJhKO3HwL8QDX89FyYC7CH3pdD/H/AFM3uZ6AzPa7PWLQVeNLPn3P3KrPZfEl2H5gWis0l/zd3fDgEmEgudDVtERGKhITgREYmFAkhERGKhABIRkVgogEREJBYKIBERiYUCSEREYqEAEhGRWPx/cx1K6NZuWiQAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(dead_points_loglikelihoods)\n", "plt.xlabel(\"Iteration\")\n", "plt.ylabel(\"ln(Likelihood)\");" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(volume_remaining, dead_points_loglikelihoods, '-', drawstyle='steps-pre')\n", "plt.xscale('log')\n", "plt.ylabel(\"Likelihood\")\n", "plt.xlabel(\"Volume enclosed\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute the integral:\n", "\n", "$Z\\approx\\sum_i \\Delta V_i \\times L_i$" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [], "source": [ "evidence = (dead_points_volume * np.exp(dead_points_loglikelihoods)).sum()" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bayesian evidence: 0.001182\n" ] } ], "source": [ "print(\"Bayesian evidence: %f\" % evidence)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute the normalised weight of each dead point:\n", "\n", "$w_i = \\Delta V_i \\times L_i$\n", "\n", "This gives us weighted posterior samples!" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "dead_points_weight = dead_points_volume * np.exp(dead_points_loglikelihoods) / evidence" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(dead_points_weight)\n", "plt.xlabel(\"Iteration\")\n", "plt.ylabel(\"Dead point importance weight\");" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Effective number of samples: 57'" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def effective_sample_size(importance_weights):\n", " return int(len(importance_weights) / (1 + (importance_weights / importance_weights.mean() - 1)**2).mean() )\n", "\n", "'Effective number of samples: %d' % effective_sample_size(dead_points_weight)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets again get unweighted (equally weighted) posterior samples by resampling with repetition:" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [], "source": [ "indices_chosen = np.random.choice(len(dead_points_weight), p=dead_points_weight, size=effective_sample_size(dead_points_weight))\n", "posterior_samples = np.asarray(dead_points)[indices_chosen]" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(posterior_samples[:,0], posterior_samples[:,1]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercise 1 (10 points)\n", "\n", "Instead of terminating after Niter iterations, \n", "compute the largest live point evidence contribution possible: volume times highest likelihood.\n", "Terminate when this Z_live is very small compared to the evidence summed up so far: $Z_{live} < 10^{-3} \\times Z$\n", "\n", "## Exercise 2 (30 points)\n", "\n", "Rejection sampling is a terribly inefficient LRPS scheme. Lets replace it.\n", "\n", "Implement MCMC as a LRPS scheme. Replace the LRPS_rejection function with one that picks a random live point, runs a MCMC chain for a fixed number of iterations, and returns the found point.\n", "\n", "Hints: \n", "\n", "* MCMC should run on the prior as the target, not the likelihood. The Metropolis rule should deterministically accept if L>Lmin. So reject if outside the prior and if below Lmin.\n", "* Maybe the standard deviation of the live points is a good proposal size?\n", "* Run for many iterations (1000s) before returning a new point to nested sampling.\n", "\n", "## Homework exercise 1 (10 points)\n", "\n", "Make several nested sampling runs.\n", "\n", "Plot the scatter in evidence.\n", "\n", "Plot the scatter in posterior distributions.\n", "\n", "Reference: NESTCHECK paper" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Questions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* How does the volume decrease with iteration? Linearly, Exponentially, ...?\n", "* What other LRPS schemes can you imagine? How would you sample a new point in the prior space under a likelihood threshold?\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Homework exercise 2 (60 points)\n", "\n", "Set up a target likelihood which sums two Gaussians:\n", "\n", "$f(\\theta)=NormalPDF(\\theta,0) + NormalPDF(\\theta + \\Delta, 1).$\n", "\n", "Plot $\\Delta$ vs the number of likelihood function calls needed.\n", "\n", "For this, use the convergence from exercise 1. You can choose a LRPS scheme." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Ticket to leave\n", "\n", "Fill out the [form below](https://indico.ph.tum.de/event/6875/surveys/9) and then you can leave the class. (+5 points)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%html\n", "\n", "" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 4 }