{ "cells": [ { "cell_type": "markdown", "id": "211467e1", "metadata": {}, "source": [ "# Distributions\n", "Generating various multidimensional distributions using pure Python without PyTorch\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "3ce07b83", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from vbi import BoxUniform\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "id": "0d2e15b2", "metadata": {}, "source": [ "Example usage of the `BoxUniform` distribution class.\n", "This demonstrates how to use the pure `numpy/scipy` implementation\n", "of a multivariate uniform distribution over a hyperrectangle.\n", "\n", "It works equivalent to BoxUniform from `sbi.utils`\n", "\n", "```py\n", "\n", "from sbi.utils import BoxUniform\n", "num_dim = 3\n", "prior = BoxUniform(low=-2 * torch.ones(num_dim), high=2 * torch.ones(num_dim))\n", "num_simulations = 20000\n", "theta = prior.sample((num_simulations,))\n", "\n", "```" ] }, { "cell_type": "code", "execution_count": 4, "id": "029c3ab6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BoxUniform Distribution Example\n", "========================================\n", "\n", "1. One-dimensional uniform distribution\n", "Distribution: U(0, 5)\n", "Mean: 2.500 (expected: 2.5)\n", "Std: 1.443 (expected: 1.443)\n", "Sample mean: 2.593\n", "Sample std: 1.420\n", "Sample dtype: float64\n", "\n", "2. Two-dimensional uniform distribution with different dtypes\n", "Float64 distribution: BoxUniform(low=[-1. -2.], high=[3. 1.], dtype=)\n", "Float32 distribution: BoxUniform(low=[-1. -2.], high=[3. 1.], dtype=)\n", "Float64 samples dtype: float64\n", "Float32 samples dtype: float32\n", "Memory usage - Float64: 16000 bytes\n", "Memory usage - Float32: 8000 bytes\n", "Memory ratio: 2.0x\n", "Distribution: U([-1, -2], [3, 1])\n", "Mean: [ 1. -0.5]\n", "Std: [1.15470054 0.8660254 ]\n", "Volume: 12.0\n", "\n", "3. Probability calculations\n", "Point [ 1. -0.5]: prob_64=0.083333, prob_32=0.083333\n", " log_prob_64=-2.485, log_prob_32=-2.485\n", "Point [4. 0.]: prob_64=0.000000, prob_32=0.000000\n", " log_prob_64=-inf, log_prob_32=-inf\n", "Point [0. 2.]: prob_64=0.000000, prob_32=0.000000\n", " log_prob_64=-inf, log_prob_32=-inf\n", "\n", "4. CDF calculations\n", "CDF at [-1. -2.]: float64=0.000000, float32=0.000000\n", "CDF at [3. 1.]: float64=1.000000, float32=1.000000\n", "CDF at [ 1. -0.5]: float64=0.250000, float32=0.250000\n", "\n", "BoxUniform example completed successfully!\n" ] }, { "data": { "image/png": "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AFVh1T///KOYikabZs2aYe/evSrblCdQN0ZeXh7++usvrFq1Co899hgAIDk52aQ6jcGeUrVIXl4ennjiCWzcuBFpaWm4dOkStm7dikWLFmHw4MF46KGHUF5ejk8++QQXL17EF198gZUrV0p2/F9//RWLFi3C33//jeXLl2Pr1q14+eWXNZb93//+Bz8/PwwePBiHDx/GpUuXcOjQIbz88svIzMzEpUuXMHv2bBw9ehT//vsvfvzxR/z99996v5mJiIiIiIiI5GbNmoXKykosXLgQANCoUSMsWbIEr732msrq71IICwvD/v37ceTIEfz111+YPHkysrOz9e43efJknDt3Dq+//jr+/vtvfP3114opeIxd7Eu+yv3q1auRnp6OAwcOIDY21qi6TMFQqhbx9PRE586dsWzZMjz++ONo1aoV5syZg4kTJ+LTTz9Fu3btsHTpUixcuBCtWrXCpk2bEBcnXa+jV199FSkpKWjfvj3eeecdLFmyBH379tVY1sPDA7/88gsaNWqEp59+Gs2bN8e4ceNw9+5deHt7w8PDA+fOncOwYcPQtGlTTJo0CVOnTlVMMkdERERERESky6FDh7B8+XIkJiaqDJmbOHEiHn30UdHD+MSaM2cOOnTogL59+6J79+4ICgrCkCFD9O7XpEkTbNu2DTt27ECbNm2wYsUKxep7rq6uRrXFwcEBX331FVJSUtCqVSu88sorionULUkmSHmFa4jCwkL4+PigoKCg2tCxkpISXLp0CU2aNIGbm5uVWmh/QkNDMX36dJXV/cxF7Op7oX519BcygKXfGxy+R1LS9XOPtON1I6Lahj/3jGOW68bhe2QLlN6HJS6+uBT6HJo0CIJbcFMrNqp2eO+997By5UpcuXLFam3QdQ8s9uce55QiIiIiIiIiIrJhCQkJ6NSpE+rVq4dff/0VixcvxtSpU63dLJMxlCIiIiIiIiIismH//PMP3n33Xdy8eRONGjXCq6++itmzZ1u7WSZjKEUWIfUEcURERERERES1xbJly7Bs2TJrN0NynOiciIiIiIiIiIgsjqEUERERERERERFZHEMpIiIiIiIiIiKyOIZSRERERERERERkcQyliIiIiIiIiIjI4qweSiUkJKBJkyZwc3NDREQEDh8+rLXsjh070Lt3b/j7+8Pb2xuRkZHYt2+fSpnExETIZLJq/0pKSsx9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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\"\"\"Demonstrate BoxUniform usage.\"\"\"\n", "print(\"BoxUniform Distribution Example\")\n", "print(\"=\" * 40)\n", "\n", "# 1D Example\n", "print(\"\\n1. One-dimensional uniform distribution\")\n", "dist_1d = BoxUniform(low=0, high=5)\n", "samples_1d = dist_1d.sample(1000)\n", "\n", "print(f\"Distribution: U(0, 5)\")\n", "print(f\"Mean: {dist_1d.mean()[0]:.3f} (expected: 2.5)\")\n", "print(f\"Std: {dist_1d.std()[0]:.3f} (expected: {5/np.sqrt(12):.3f})\")\n", "print(f\"Sample mean: {samples_1d.mean():.3f}\")\n", "print(f\"Sample std: {samples_1d.std():.3f}\")\n", "print(f\"Sample dtype: {samples_1d.dtype}\")\n", "\n", "# 2D Example with different dtypes\n", "print(\"\\n2. Two-dimensional uniform distribution with different dtypes\")\n", "\n", "# Float64 (default)\n", "dist_2d_64 = BoxUniform(low=[-1, -2], high=[3, 1])\n", "samples_2d_64 = dist_2d_64.sample(1000)\n", "\n", "# Float32\n", "dist_2d_32 = BoxUniform(low=[-1, -2], high=[3, 1], dtype=np.float32)\n", "samples_2d_32 = dist_2d_32.sample(1000)\n", "\n", "print(f\"Float64 distribution: {dist_2d_64}\")\n", "print(f\"Float32 distribution: {dist_2d_32}\")\n", "print(f\"Float64 samples dtype: {samples_2d_64.dtype}\")\n", "print(f\"Float32 samples dtype: {samples_2d_32.dtype}\")\n", "print(f\"Memory usage - Float64: {samples_2d_64.nbytes} bytes\")\n", "print(f\"Memory usage - Float32: {samples_2d_32.nbytes} bytes\")\n", "print(f\"Memory ratio: {samples_2d_64.nbytes / samples_2d_32.nbytes:.1f}x\")\n", "dist_2d = BoxUniform(low=[-1, -2], high=[3, 1])\n", "samples_2d = dist_2d.sample(1000)\n", "\n", "print(f\"Distribution: U([-1, -2], [3, 1])\")\n", "print(f\"Mean: {dist_2d.mean()}\")\n", "print(f\"Std: {dist_2d.std()}\")\n", "print(f\"Volume: {dist_2d.volume}\")\n", "\n", "# Probability calculations\n", "print(\"\\n3. Probability calculations\")\n", "test_points = np.array([\n", " [1, -0.5], # Inside\n", " [4, 0], # Outside (x too large)\n", " [0, 2], # Outside (y too large)\n", "])\n", "\n", "for i, point in enumerate(test_points):\n", " prob_64 = dist_2d_64.prob(point)\n", " prob_32 = dist_2d_32.prob(point)\n", " log_prob_64 = dist_2d_64.log_prob(point)\n", " log_prob_32 = dist_2d_32.log_prob(point)\n", " print(f\"Point {point}: prob_64={prob_64:.6f}, prob_32={prob_32:.6f}\")\n", " print(f\" log_prob_64={log_prob_64:.3f}, log_prob_32={log_prob_32:.3f}\")\n", "\n", "# CDF calculations\n", "print(\"\\n4. CDF calculations\")\n", "cdf_points = np.array([\n", " [-1, -2], # Lower corner\n", " [3, 1], # Upper corner \n", " [1, -0.5], # Middle point\n", "])\n", "\n", "for point in cdf_points:\n", " cdf_64 = dist_2d_64.cdf(point)\n", " cdf_32 = dist_2d_32.cdf(point)\n", " print(f\"CDF at {point}: float64={cdf_64:.6f}, float32={cdf_32:.6f}\")\n", "\n", "# Visualization (optional - requires matplotlib)\n", "try:\n", " plt.figure(figsize=(12, 4))\n", " \n", " # 1D histogram\n", " plt.subplot(1, 3, 1)\n", " plt.hist(samples_1d.flatten(), bins=30, density=True, alpha=0.7, label='Samples')\n", " plt.axhline(y=1/5, color='red', linestyle='--', label='True density')\n", " plt.xlabel('Value')\n", " plt.ylabel('Density')\n", " plt.title('1D BoxUniform U(0, 5)')\n", " plt.legend()\n", " \n", " # 2D scatter plot\n", " plt.subplot(1, 3, 2)\n", " plt.scatter(samples_2d[:, 0], samples_2d[:, 1], alpha=0.5, s=1)\n", " plt.xlim(-1.5, 3.5)\n", " plt.ylim(-2.5, 1.5)\n", " plt.xlabel('X')\n", " plt.ylabel('Y')\n", " plt.title('2D BoxUniform Samples')\n", " \n", " # Add rectangle showing the bounds\n", " from matplotlib.patches import Rectangle\n", " rect = Rectangle((-1, -2), 4, 3, linewidth=2, edgecolor='red', \n", " facecolor='none', linestyle='--')\n", " plt.gca().add_patch(rect)\n", " \n", " # Marginal distributions\n", " plt.subplot(1, 3, 3)\n", " plt.hist(samples_2d[:, 0], bins=30, density=True, alpha=0.7, \n", " label='X marginal')\n", " plt.hist(samples_2d[:, 1], bins=30, density=True, alpha=0.7, \n", " label='Y marginal')\n", " plt.xlabel('Value')\n", " plt.ylabel('Density')\n", " plt.title('Marginal Distributions')\n", " plt.legend()\n", " plt.tight_layout()\n", " \n", "except ImportError:\n", " print(\"\\n5. Matplotlib not available - skipping visualization\")\n", "\n", "print(\"\\nBoxUniform example completed successfully!\")" ] }, { "cell_type": "code", "execution_count": 3, "id": "5f6dedee", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "4D BoxUniform U([0, -1, 0, 0], [1, 1, 1, 1])\n", "Mean: [0.5 0. 0.5 0.5]\n", "Std: [0.28867513 0.57735027 0.28867513 0.28867513]\n", "Volume: 2.0\n", "sample shape: (1000, 4)\n", "sample dtype: float64\n" ] } ], "source": [ "low = [0, -1, 0, 0]\n", "high = [1, 1, 1, 1]\n", "dist_4d = BoxUniform(low=low, high=high)\n", "samples_4d = dist_4d.sample(1000)\n", "print(f\"\\n4D BoxUniform U({low}, {high})\")\n", "print(f\"Mean: {dist_4d.mean()}\")\n", "print(f\"Std: {dist_4d.std()}\")\n", "print(f\"Volume: {dist_4d.volume}\")\n", "print(f\"sample shape: {samples_4d.shape}\")\n", "print(f\"sample dtype: {samples_4d.dtype}\")" ] }, { "cell_type": "code", "execution_count": 9, "id": "f892da52", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(20000, 1)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from vbi import BoxUniform\n", "num_dim = 3\n", "prior = BoxUniform(low=-2 * (num_dim), high=2 * (num_dim))\n", "num_simulations = 20000\n", "theta = prior.sample((num_simulations,))\n", "theta.shape" ] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 5 }