Skip to content

Instantly share code, notes, and snippets.

@smsharma
Created February 12, 2024 16:19
Show Gist options
  • Save smsharma/ec769563c5ba8a9d5a6aa034b431b10b to your computer and use it in GitHub Desktop.
Save smsharma/ec769563c5ba8a9d5a6aa034b431b10b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as onp"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(6.739790948433026, 3.4730425191831813, 3.4730425191831813)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from scipy.stats import truncnorm, norm\n",
"from scipy.special import ndtri\n",
"\n",
"# Parameters of the normal distribution\n",
"sigma = 20\n",
"mu = 50\n",
"\n",
"# Truncation bounds\n",
"a = -1. # Lower bound of truncation\n",
"b = 100. # Upper bound of truncation\n",
"\n",
"# Convert real-world bounds to Z-scores relative to the non-truncated distribution\n",
"# This is just how the truncnorm function likes its arguments\n",
"a_std = (a - mu) / sigma\n",
"b_std = (b - mu) / sigma\n",
"\n",
"def prior_cube_norm1(u):\n",
" \"\"\" Original way, using inverse CDF of standard normal `ndtri`\n",
" \"\"\"\n",
" return mu + ndtri(u) * sigma\n",
"\n",
"def prior_cube_norm2(u):\n",
" \"\"\" Check to make sure this is the same as above but applicable to general `scipy.stats` distribution\n",
" \"\"\"\n",
" return norm.ppf(u, loc=mu, scale=sigma)\n",
"\n",
"def prior_cube_truncnorm(u):\n",
" \"\"\" Generalize for truncated normal distribution\n",
" \"\"\"\n",
" return truncnorm.ppf(u, a_std, b_std, loc=mu, scale=sigma)\n",
"\n",
"# Test\n",
"u = 0.01\n",
"prior_cube_truncnorm(u), prior_cube_norm1(u), prior_cube_norm2(u)\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x117d8eb30>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"u_ary = onp.linspace(0, 1, 10000)\n",
"plt.plot(u_ary, prior_cube_truncnorm(u_ary), label=\"Truncated Normal\")\n",
"plt.plot(u_ary, prior_cube_norm1(u_ary), label=\"Standard Normal\")\n",
"\n",
"# Plot bounds\n",
"plt.axhline(a, ls='--', color='k')\n",
"plt.axhline(b, ls='--', color='k')\n",
"plt.legend()\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x145cff3a0>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkkAAAGdCAYAAAAGx+eQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABO4UlEQVR4nO3de1xUZf4H8M+ADiMioJAMKAomiSaCog5j5qVILFujdVskN5RYbb2lkqUYAtoFxXvpSm7edos0fquumVGIZK2OqFzyEuINYw0GFVdGxwBlzu8PlqMnjsgQOFw+79frvGCe8z3PeZ4ZhK/Pec5zFIIgCCAiIiIiCStLN4CIiIioKWKSRERERCSDSRIRERGRDCZJRERERDKYJBERERHJYJJEREREJINJEhEREZEMJklEREREMtpYugFNiclkQmFhITp06ACFQmHp5hAREVEdCIKAGzduwM3NDVZWDTf+wyTpHoWFhXB3d7d0M4iIiKge/vOf/6Br164NVh+TpHt06NABQNWbbG9vb+HWEBERUV0YDAa4u7uLf8cbCpOke1RfYrO3t2eSRERE1Mw09FQZTtwmIiIiksEkiYiIiEgGkyQiIiIiGZyTRETUSgmCgDt37qCystLSTSGqlbW1Ndq0afPQl+dhkkRE1ApVVFSgqKgIt27dsnRTiOrE1tYWrq6uUCqVD+2cTJKIiFoZk8mE/Px8WFtbw83NDUqlkgvoUpMlCAIqKipw5coV5Ofnw8vLq0EXjKwNkyQiolamoqICJpMJ7u7usLW1tXRziB6oXbt2aNu2LX766SdUVFRApVI9lPNy4jYRUSv1sP43TtQQLPHzyn8hRERERDKYJBERERHJ4JwkIiISrUo981DPN+eZxx7q+VqCESNGwM/PD6tXr7Z0UxqcQqHAzp07ERwcbOmmAOBIEhERNRMKhaLWLS4uztJNvK8RI0Zg9uzZD+VcW7ZsgUKhwOjRoyXl169fh0KhwLfffvtQ2tEScCSJiIiahaKiIvH77du3IyYmBnl5eWKZnZ2d+L0gCKisrESbNq3zz1ybNm2wb98+pKenY+TIkQ1Wb0VFxUNdp8jSOJJERETNglqtFjcHBwcoFArx9enTp9GhQwd89dVX8Pf3h42NDf79739j0qRJNS7dzJ49GyNGjBBfjxgxAq+//jreeustdOrUCWq1usao1PXr1/Haa6/BxcUFKpUKffv2xZ49ewAAJSUlCA0NRZcuXWBrawsfHx989tln4rGTJk3CgQMHsGbNGnHU6+LFiwCAkydP4tlnn4WdnR1cXFzwyiuv4OrVq+KxRqMRYWFhsLOzg6urK1asWFGn96p9+/Z49dVXMX/+/FrjTpw4gaeeegrt2rWDk5MTpkyZgps3b0raHhwcjPfeew9ubm7o1asXLl68CIVCgc8//xxPPvkk2rVrh0GDBuHMmTM4evQoBg4cCDs7Ozz77LO4cuWKWNfRo0fxzDPPwNnZGQ4ODhg+fDiysrLq1B9LYZJERC3GqtQzD31ODTUt8+fPx5IlS5Cbm4t+/frV+bitW7eiffv2yMjIQEJCAhYvXozU1FQAVYtvPvvsszh48CA++eQT/Pjjj1iyZAmsra0BAGVlZfD398eXX36JkydPYsqUKXjllVdw5MgRAMCaNWug1WoxefJkFBUVoaioCO7u7rh+/Tqeeuop9O/fH8eOHUNKSgqKi4vxxz/+UWzXm2++iQMHDuBf//oXvvnmG3z77bd1Tizi4uJw4sQJ/N///Z/sfqPRiKCgIHTs2BFHjx5FcnIy9u3bhxkzZkji0tLSkJeXh9TUVDExBIDY2FhER0cjKysLbdq0wcsvv4y33noLa9aswffff49z584hJiZGjL9x4wYmTpyIf//73zh8+DC8vLzw3HPP4caNG3XqjyW0znFIImrR7k2UODG4dVm8eDGeeeYZs4/r168fYmNjAQBeXl5Yu3Yt0tLS8Mwzz2Dfvn04cuQIcnNz8dhjVT9PPXr0EI/t0qUL5s6dK76eOXMmvv76a3z++ecYPHgwHBwcoFQqYWtrC7VaLcatXbsW/fv3x/vvvy+Wbdq0Ce7u7jhz5gzc3NywceNGfPLJJ3j66acBVCVzXbt2rVOf3NzcMGvWLLz99tuyE6GTkpJQVlaGv//972jfvr3Ypt/97ndYunQpXFxcAFSNSn388cfiZbbqUbC5c+ciKCgIADBr1iyEhoYiLS0NTzzxBAAgIiICW7ZsEc/31FNPSc6/YcMGODo64sCBA3j++efr1KeHjSNJRETUYgwcOLBex/161MnV1RWXL18GAOTk5KBr165igvRrlZWVeOedd+Dj44NOnTrBzs4OX3/9NQoKCmo95w8//ID09HTY2dmJm7e3NwDg/PnzOH/+PCoqKqDRaMRjOnXqhF69etW5X/PmzcOVK1ewadOmGvtyc3Ph6+srJkgA8MQTT8BkMknmevn4+MjOQ7r3PatOqHx8fCRl1e8hABQXF2Py5Mnw8vKCg4MD7O3tcfPmzQe+T5bEkSQiImox7v2DD1St0iwIgqTs9u3bNY5r27at5LVCoYDJZAJQ9UiM2ixbtgxr1qzB6tWr4ePjg/bt22P27NmoqKio9bibN2+Koza/5urqinPnztV6fF04OjoiKioKixYtqvdoza/f02r3vmfVz/77dVn1ewgAEydORElJCdasWYPu3bvDxsYGWq32ge+TJXEkiYiIWqxHHnlEclccUDUyZI5+/frh0qVLOHNGfr7bwYMH8cILL+BPf/oTfH190aNHjxqxSqUSlZWVkrIBAwbg1KlT8PDwQM+ePSVb+/bt8eijj6Jt27bIyMgQj/nvf/9733bcz8yZM2FlZYU1a9ZIynv37o0ffvgBRqNR0hcrKyuzRqvq6uDBg3j99dfx3HPP4fHHH4eNjY1kknpTxCSJiIharKeeegrHjh3D3//+d5w9exaxsbE4efKkWXUMHz4cw4YNw7hx45Camor8/Hx89dVXSElJAVA1hyk1NRWHDh1Cbm4uXnvtNRQXF0vq8PDwQEZGBi5evIirV6/CZDJh+vTpuHbtGkJDQ3H06FGcP38eX3/9NcLDw1FZWQk7OztERETgzTffxP79+3Hy5ElMmjTJ7GeYqVQqLFq0CB988IGkfMKECVCpVJg4cSJOnjyJ9PR0zJw5E6+88op4+awheXl54R//+Adyc3ORkZGBCRMmPHCUztJ4uY2IiEQtbaJ7UFAQFi5ciLfeegtlZWV49dVXERYWhhMnTphVzz//+U/MnTsXoaGhMBqN6NmzJ5YsWQIAiI6OxoULFxAUFARbW1tMmTIFwcHBKC0tFY+fO3cuJk6ciD59+uCXX35Bfn4+PDw8cPDgQcybNw+jRo1CeXk5unfvjtGjR4uJ0LJly8TLch06dMAbb7whqbeuJk6ciBUrVuDHH38Uy2xtbfH1119j1qxZGDRoEGxtbTFu3DisXLnS7PrrYuPGjZgyZQoGDBgAd3d3vP/++5IJ702RQvj1xdpWzGAwwMHBAaWlpbC3t7d0c4jITHK3/7e0P/oNoaysDPn5+fD09IRKpbJ0c4jqpLaf28b6+83LbUREREQyeLmNiFqG9HgEFJSILw93m1IjpHqkiaNLRFQXHEkiIiIiksEkiYiIiEhGvZKkdevWwcPDAyqVChqNRnw+zf0kJyfD29sbKpUKPj4+2Lt3r7jv9u3bmDdvnrgAl5ubG8LCwlBYWCip49q1a5gwYQLs7e3h6OiIiIgIyUP4AOD48eN48sknoVKp4O7ujoSEhPp0j4iIiMj8JGn79u2IjIxEbGwssrKy4Ovri6CgIMnS4/c6dOgQQkNDERERgezsbAQHByM4OFhcp+LWrVvIysrCwoULkZWVhR07diAvLw9jx46V1DNhwgScOnVKfMDed999hylT7s45MBgMGDVqFLp3747MzEwsW7YMcXFx2LBhg7ldJKJmpPqhtroLJQ8OJiIyg9lLAGg0GgwaNAhr164FUPV0ZHd3d8ycORPz58+vER8SEgKj0Sh5cnBAQAD8/PyQmJgoe46jR49i8ODB+Omnn9CtWzfk5uaiT58+OHr0qPhcnpSUFDz33HO4dOkS3NzcsH79erz99tvQ6/XiM2bmz5+PXbt24fTp03XqG5cAIGp+qidjBxTI/4dI28PpbuydcQA4cZtLAFBz1OSXAKioqEBmZiYCAwPvVmBlhcDAQOh0OtljdDqdJB6oWtzrfvEAUFpaCoVCAUdHR7EOR0dHyYMLAwMDYWVlJS7XrtPpMGzYMMlD+IKCgpCXl4f//ve/sucpLy+HwWCQbETUcgUUbKhKptLjqzbcHYkiIvo1s5Kkq1evorKyssZy5S4uLtDr9bLH6PV6s+LLysowb948hIaGitmgXq9H586dJXFt2rRBp06dxHrud57qfXLi4+Ph4OAgbu7u7rJxRNT0MLmhpuDixYtQKBRmPw/O0nVb2pYtW8SBkKasSa2TdPv2bfzxj3+EIAhYv359o58vKioKkZGR4muDwcBEiYhat/+NsD00I6PMCr9y5QpiYmLw5Zdfori4GB07doSvry9iYmLwxBNPAKh6+vzOnTsRHBzcCA1uWkaMGIEDBw7gs88+w/jx48Xy1atXY/Xq1bh48aLlGtcCmJUkOTs7w9rausaD+4qLi6FWq2WPUavVdYqvTpB++ukn7N+/X3JNUa1W15gYfufOHVy7dk2s537nqd4nx8bGBjY2NvfrLhERNTHjxo1DRUUFtm7dih49eqC4uBhpaWkoKWm+E/crKiokU0XMpVKpEB0djXHjxqFt27YN1q7bt283aH3NkVmX25RKJfz9/ZGWliaWmUwmpKWlQavVyh6j1Wol8QCQmpoqia9OkM6ePYt9+/bBycmpRh3Xr19HZmamWLZ//36YTCZoNBox5rvvvsPt27cl5+nVqxc6duxoTjeJqKlLjxfnF4nzjMygu1AC3YUSXq5rZq5fv47vv/8eS5cuxciRI9G9e3cMHjwYUVFR4h3RHh4eAIAXX3wRCoVCfH3+/Hm88MILcHFxgZ2dHQYNGoR9+/ZJ6vfw8MD777+PV199FR06dEC3bt1q3CF95MgR9O/fHyqVCgMHDkR2drZkf2VlJSIiIuDp6Yl27dqhV69eWLNmjSRm0qRJCA4OxnvvvQc3Nzf06tWrTnXfT2hoKK5fv46//e1vtcatX78ejz76KJRKJXr16oV//OMfkv0KhQLr16/H2LFj0b59e7z33nuIi4uDn58fNm3ahG7dusHOzg7Tpk1DZWUlEhISoFar0blzZ7z33nuSulauXCku7ePu7o5p06bVWLanOTB7CYDIyEj87W9/w9atW5Gbm4upU6fCaDQiPDwcABAWFoaoqLvDp7NmzUJKSgpWrFiB06dPIy4uDseOHcOMGTMAVCVIf/jDH3Ds2DF8+umnqKyshF6vh16vR0VFBQCgd+/eGD16NCZPnowjR47g4MGDmDFjBsaPHw83NzcAwMsvvwylUomIiAicOnUK27dvx5o1aySX04ioeavP7f7VCRGXCGj+7OzsYGdnh127dqG8vFw25ujRowCAzZs3o6ioSHx98+ZNPPfcc0hLS0N2djZGjx6N3/3udygoKJAcv2LFCjFBmTZtGqZOnYq8vDyxjueffx59+vRBZmYm4uLiajzF3mQyoWvXrkhOTsaPP/6ImJgYLFiwAJ9//rkkLi0tDXl5eeKyNnWp+37s7e3x9ttvY/HixTAajbIxO3fuxKxZs/DGG2/g5MmTeO211xAeHo709HRJXFxcHF588UWcOHECr776KoCqBPOrr75CSkoKPvvsM2zcuBFjxozBpUuXcODAASxduhTR0dHijVRA1U1dH3zwAU6dOoWtW7di//79eOutt+rUn6bE7DlJISEh4jVhvV4PPz8/pKSkiJOkCwoKYGV1N/caMmQIkpKSEB0djQULFsDLywu7du1C3759AQA///wzdu/eDQDw8/OTnCs9PR0jRowAAHz66aeYMWMGnn76aVhZWWHcuHH44IMPxFgHBwd88803mD59Ovz9/eHs7IyYmBjJWkpERNR8tWnTBlu2bMHkyZORmJiIAQMGYPjw4Rg/fjz69esHAHjkkUcAAI6OjpKpFr6+vvD19RVfv/POO9i5cyd2794t/qcdAJ577jlMmzYNADBv3jysWrUK6enp6NWrF5KSkmAymbBx40aoVCo8/vjjuHTpEqZOnSoe37ZtWyxatEh87enpCZ1Oh88//xx//OMfxfL27dvj448/Fi+zbdiw4YF112batGlYs2YNVq5ciYULF9bYv3z5ckyaNEnsW2RkJA4fPozly5dj5MiRYtzLL78sDnpUM5lM2LRpEzp06IA+ffpg5MiRyMvLw969e2FlZYVevXph6dKlSE9PF6/uzJ49Wzzew8MD7777Lv7yl7/gr3/9a53601TUa+L2jBkzJD9U9/r2229rlL300kt46aWXZOM9PDxQl6WaOnXqhKSkpFpj+vXrh++///6BdRERUfM0btw4jBkzBt9//z0OHz6Mr776CgkJCfj4448xadKk+x538+ZNxMXF4csvv0RRURHu3LmDX375pcZIUnWyBVRdfrp3Tmxubi769esnWaNHbqrJunXrsGnTJhQUFOCXX35BRUVFjUEAHx8fyTykutZ9PzY2Nli8eDFmzpwpm1jl5ubWGDR44oknalwKvHepnWoeHh7o0KGD+NrFxQXW1taSAREXFxfJ3OF9+/YhPj4ep0+fhsFgwJ07d1BWVoZbt27B1ta2zv2yND67jYiImhWVSoVnnnkGCxcuxKFDhzBp0iTExsbWeszcuXOxc+dOvP/++/j++++Rk5MDHx8fcVpHtV9PVFYoFDCZTHVu27Zt2zB37lxERETgm2++QU5ODsLDw2ucp3379nWus67+9Kc/oXv37nj33XfrXYdcu+Tek9rep4sXL+L5559Hv3798M9//hOZmZlYt24dANR4H5o6JklERNSs9enTRzIXp23btqisrJTEHDx4EJMmTcKLL74IHx8fqNVqs2+P7927N44fP46ysjKx7PDhwzXOM2TIEEybNg39+/dHz549cf78+Qap+0GsrKwQHx+P9evX1+hb7969cfDgwRpt7dOnj1nnqIvMzEyYTCasWLECAQEBeOyxx2o8j7W5YJJERPQrXKiyaSopKcFTTz2FTz75BMePH0d+fj6Sk5OR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L9atWye7PyEhAR988AESExORkZGB9u3bIygoCGVldx90O2HCBJw6dQqpqanYs2cPvvvuO0yZMuVhdaHeauv7rVu3kJWVhYULFyIrKws7duxAXl4exo4dWyN28eLFkp+DmTNnPozm19uDPnMAGD16tKRPn332mWR/g33mjbKwADV5CQkJgqenp/g6Pz9fACBkZ2dbrlGNYPDgwcL06dPF15WVlYKbm5sQHx9vwVY1rsuXLwsAhAMHDohlw4cPF2bNmmW5RjWS2NhYwdfXV3bf9evXhbZt2wrJycliWW5urgBA0Ol0D6mFD8+sWbOERx99VDCZTIIgtMzPHICwc+dO8bXJZBLUarWwbNkysez69euCjY2N8NlnnwmCIAg//vijAEA4evSoGPPVV18JCoVC+Pnnnx9a23+rX/ddzpEjRwQAwk8//SSWde/eXVi1alXjNq4RyfV74sSJwgsvvHDfYxryM+dIUitVWlqKTp061SgfO3YsOnfujKFDh2L37t0WaFnDqaioQGZmJgIDA8UyKysrBAYGQqfTWbBljau0tBQAany+n376KZydndG3b19ERUXh1q1blmhegzt79izc3NzQo0cPTJgwAQUFBQCAzMxM3L59W/L5e3t7o1u3bi3u86+oqMAnn3yCV199VfJw7pb6mVfLz8+HXq+XfMYODg7QaDTiZ6zT6eDo6IiBAweKMYGBgbCyskJGRsZDb3NjKi0thUKhqPEM0iVLlsDJyQn9+/fHsmXLcOfOHcs0sAF9++236Ny5M3r16oWpU6eipKRE3NeQn7lZD7illuHcuXP48MMPsXz5crHMzs4OK1aswBNPPAErKyv885//RHBwMHbt2iU7fNscXL16FZWVlXBxcZGUu7i44PTp0xZqVeMymUyYPXs2nnjiCfTt21csf/nll9G9e3e4ubnh+PHjmDdvHvLy8rBjxw4Ltva302g02LJlC3r16oWioiIsWrQITz75JE6ePAm9Xg+lUlnjD4aLiwv0er1lGtxIdu3ahevXr2PSpEliWUv9zO9V/TnK/Ruv3qfX69G5c2fJ/jZt2qBTp04t6uegrKwM8+bNQ2hoqORBr6+//joGDBiATp064dChQ4iKikJRURFWrlxpwdb+NqNHj8bvf/97eHp64vz581iwYAGeffZZ6HQ6WFtbN+hnziSpGZs/fz6WLl1aa0xubq5kIuvPP/+M0aNH46WXXsLkyZPFcmdnZ8lz7gYNGoTCwkIsW7as2SZJrdH06dNx8uRJybwcAJJr8T4+PnB1dcXTTz+N8+fP49FHH33YzWwwzz77rPh9v379oNFo0L17d3z++edo166dBVv2cG3cuBHPPvus+CxLoOV+5lTT7du38cc//hGCIGD9+vWSfff+Xu/Xrx+USiVee+01xMfHw8bG5mE3tUGMHz9e/N7Hxwf9+vXDo48+im+//RZPP/10g56Ll9uasTfeeAO5ubm1bj169BDjCwsLMXLkSAwZMgQbNmx4YP0ajQbnzp1rzC40KmdnZ1hbW9e4m6m4uBhqtdpCrWo8M2bMwJ49e5Ceno6uXbvWGqvRaACgWX++chwdHfHYY4/h3LlzUKvVqKiowPXr1yUxLe3z/+mnn7Bv3z78+c9/rjWuJX7m1Z9jbf/G1Wp1jRs17ty5g2vXrrWIn4PqBOmnn35CamqqZBRJjkajwZ07d3Dx4sWH08CHoEePHnB2dhZ/thvyM2eS1Iw98sgj8Pb2rnVTKpUAqkaQRowYAX9/f2zevBlWVg/+6HNycuDq6trY3Wg0SqUS/v7+SEtLE8tMJhPS0tKg1Wot2LKGJQgCZsyYgZ07d2L//v3w9PR84DE5OTkA0Kw/Xzk3b97E+fPn4erqCn9/f7Rt21by+efl5aGgoKBFff6bN29G586dMWbMmFrjWuJn7unpCbVaLfmMDQYDMjIyxM9Yq9Xi+vXryMzMFGP2798Pk8kkJo7NVXWCdPbsWezbtw9OTk4PPCYnJwdWVlY1Lkc1Z5cuXUJJSYn4s92gn7lZ07ypWbp06ZLQs2dP4emnnxYuXbokFBUViVu1LVu2CElJSUJubq6Qm5srvPfee4KVlZWwadMmC7b8t9u2bZtgY2MjbNmyRfjxxx+FKVOmCI6OjoJer7d00xrM1KlTBQcHB+Hbb7+VfLa3bt0SBEEQzp07JyxevFg4duyYkJ+fL/zrX/8SevToIQwbNszCLf/t3njjDeHbb78V8vPzhYMHDwqBgYGCs7OzcPnyZUEQBOEvf/mL0K1bN2H//v3CsWPHBK1WK2i1Wgu3uuFUVlYK3bp1E+bNmycpb0mf+Y0bN4Ts7GwhOztbACCsXLlSyM7OFu/gWrJkieDo6Cj861//Eo4fPy688MILgqenp/DLL7+IdYwePVro37+/kJGRIfz73/8WvLy8hNDQUEt1qc5q63tFRYUwduxYoWvXrkJOTo7k3355ebkgCIJw6NAhYdWqVUJOTo5w/vx54ZNPPhEeeeQRISwszMI9q11t/b5x44Ywd+5cQafTCfn5+cK+ffuEAQMGCF5eXkJZWZlYR0N95kySWoHNmzcLAGS3alu2bBF69+4t2NraCvb29sLgwYMlt043Zx9++KHQrVs3QalUCoMHDxYOHz5s6SY1qPt9tps3bxYEQRAKCgqEYcOGCZ06dRJsbGyEnj17Cm+++aZQWlpq2YY3gJCQEMHV1VVQKpVCly5dhJCQEOHcuXPi/l9++UWYNm2a0LFjR8HW1lZ48cUXJf85aO6+/vprAYCQl5cnKW9Jn3l6errsz/fEiRMFQahaBmDhwoWCi4uLYGNjIzz99NM13o+SkhIhNDRUsLOzE+zt7YXw8HDhxo0bFuiNeWrre/WyLXJbenq6IAiCkJmZKWg0GsHBwUFQqVRC7969hffff1+STDRFtfX71q1bwqhRo4RHHnlEaNu2rdC9e3dh8uTJNf7j21CfuUIQBMG8sSciIiKilo9zkoiIiIhkMEkiIiIiksEkiYiIiEgGkyQiIiIiGUySiIiIiGQwSSIiIiKSwSSJiIiISAaTJCIiIiIZTJKIiIiIZDBJIiIiIpLBJImIiIhIBpMkIiIiIhn/D1SBs9Ea5TAsAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"n_samples = 100000\n",
"u = onp.random.rand(n_samples) # Between 0 and 1\n",
"\n",
"# Sample from the prior\n",
"samples_trunc = prior_cube_truncnorm(u)\n",
"samples_norm = prior_cube_norm1(u)\n",
"\n",
"# Plot histogram\n",
"plt.hist(samples_trunc, bins=100, density=True, alpha=0.5, label=\"Truncated Normal\")\n",
"plt.hist(samples_norm, bins=100, density=True, alpha=0.5, label=\"Standard Normal\")\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "cfm",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment