diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 276827e4..744e9d54 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.8] + python-version: ["3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v2 diff --git a/docs/notebooks/active_inference_from_scratch.ipynb b/docs/notebooks/active_inference_from_scratch.ipynb index 53ca2f56..da06de66 100644 --- a/docs/notebooks/active_inference_from_scratch.ipynb +++ b/docs/notebooks/active_inference_from_scratch.ipynb @@ -165,9 +165,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[0.42309635]\n", - " [0.50568896]\n", - " [0.07121468]]\n", + "[[0.16880278]\n", + " [0.51728256]\n", + " [0.31391466]]\n", "Integral of the distribution: 1.0\n" ] } @@ -232,7 +232,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -281,9 +281,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[0.322 0.726 0.772 0.126]\n", - " [0.52 0.812 0.567 0.608]\n", - " [0.452 0.44 0.201 0.441]]\n" + "[[0.089 0.739 0.145 0.399]\n", + " [0.772 0.201 0.026 0.578]\n", + " [0.181 0.253 0.788 0.844]]\n" ] } ], @@ -308,9 +308,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[0.249 0.367 0.501 0.107]\n", - " [0.402 0.41 0.368 0.518]\n", - " [0.349 0.223 0.131 0.375]]\n" + "[[0.086 0.619 0.151 0.219]\n", + " [0.741 0.168 0.027 0.318]\n", + " [0.174 0.212 0.821 0.463]]\n" ] } ], @@ -340,10 +340,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[0.2488664 ]\n", - " [0.40202984]\n", - " [0.34910376]]\n", - "Integral of P(X|Y=0): 1.0\n" + "[[0.08555937]\n", + " [0.74093812]\n", + " [0.1735025 ]]\n", + "Integral of P(X|Y=0): 0.9999999999999999\n" ] } ], @@ -2028,12 +2028,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time 2: Agent observes itself in location: (0, 1)\n" + "Time 2: Agent observes itself in location: (0, 0)\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -2045,12 +2045,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time 3: Agent observes itself in location: (0, 1)\n" + "Time 3: Agent observes itself in location: (0, 0)\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -2062,12 +2062,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time 4: Agent observes itself in location: (0, 2)\n" + "Time 4: Agent observes itself in location: (0, 0)\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -2353,12 +2353,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time 3: Agent observes itself in location: (0, 0)\n" + "Time 3: Agent observes itself in location: (0, 1)\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -2370,12 +2370,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time 4: Agent observes itself in location: (0, 0)\n" + "Time 4: Agent observes itself in location: (0, 2)\n" ] }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEUCAYAAADHgubDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAvl0lEQVR4nO3deVgT194H8C+gViUUxaJeFZBig5VFqaJld0EUvVVLq2BxqcuV9qV1RSFer9Vqq1i9VNw3tGq1iFbcwAUV11eta6tWWgUJrkVRJFgFzLx/+CaXMSxhC+md7+d5eB45c2bmNyF+MzlzMjERBEEAERFJgmltF0BERIbD0CcikhCGPhGRhDD0iYgkhKFPRCQhDH0iIglh6NeAqKgoODo6in6cnZ3RvXt3zJo1C7m5uZXa7tChQ9G9e3ed/VTGrl270L17d7i4uGDSpEmV2kZFLFq0CI6Ojrh161aN7+tVarW63P3++OOPcHR0xOnTpw1UVemysrK0/7516xYcHR2xaNGiWqyobMXrrUi/V5/PxuLatWtwdnY26se8KurUdgH/zRQKBRo3bgwAeP78Oa5fv474+Hj88ssv2Lx5M8zMzKq0/eDgYHh4eFR4vUePHkGhUKBVq1aYNm0a7OzsqlSHMVOpVPj444/h5+eHzz//vLbLKdeoUaNgbW2NuXPnAgCsrKwwb968Sr+417SlS5di+/btOHDgQJn9tm3bhpkzZ+Lnn3/Wtn3yySf4888/a7rECikqKoJCoUBhYWFtl1JjGPo1yN/fH61atRK1tW7dGjNnzsTRo0fRrVu3Km3fzc0Nbm5uFV4vIyMDhYWFCA0NRXBwcJVqMHaPHz/GL7/8Aj8/v9ouRS/Hjx/H+++/r/29YcOG6N+/fy1WVLb//d//xYsXL8rt99NPP+H58+eiNi8vr5oqq9JWrFiB33//vbbLqFEc3jGwLl26AECtPrE0ZzHm5ua1VgORsUlLS8OyZcvwP//zP7VdSo1i6BvYvXv3AAC2trai9uvXryM8PBydOnVC+/btERISgmPHjpW5rZLG9O/du4cpU6bg3XffhYuLCwYMGICdO3eK1hk2bBiAl8NPmnF2QRCwePFi9OrVCy4uLvD09MTkyZNx9+7dco/pypUr+Pzzz+Hp6QknJyd4eHhg0qRJ2mMtLj09HcOGDYOrqyu6du2KhQsX6ryVfvToEWbMmAEfHx84OzujV69eWLlypeiMsrRrBMXbT58+jR49egAAFi9eXOFrCn/++ScWLFiA7t27a6/JzJ8/X2dIoqCgAIsWLUJAQABcXV1LrDczMxORkZHw9fWFs7MzOnfujE8++UT74q8ZuweA7du3a68vlDamn5CQgP79+8PFxQXvvvsuJk2aJDo2zXqJiYmIiYmBr68vXFxcMHDgQJw6darcY1epVFiwYAF69+4NFxcXuLm5YdCgQTh48KC2T/fu3XHmzBncvn27zOsOQ4cOxfbt2wEAjo6OiIqK0rYXH9MfOnQowsLCkJKSgn79+sHFxQV9+/bFkSNHoFKpMH36dLi7u8PDwwPTp0/Hs2fPRPu5cOECRowYoX0HPHLkSNFwUlk0wzpeXl7o16+fXuv8VXF4pwY9efIEOTk5AF6eXd+4cQOzZ8+Gk5OT6MmelpaGjz76CG+88QbCwsJQt25d7N69G2PGjMGCBQvQp08fvfZ3//59DBw4EIIgYOjQobC0tMTBgwcxefJk/PHHHxg9ejSCg4PRrFkzLF++HMHBwejYsSOsrKywfPlyLFmyBKGhodpwXL9+PS5fvozdu3eXev1BU7udnR3GjBmDBg0a4Pz589ixYwcyMzOxdetWUf9x48ahS5cuiIyMxJkzZ7B06VLcvXtXO4adm5uLkJAQ3L59GyEhIbC3t8eJEyewYMECXL16Fd9++63ej7+DgwMUCgXmzJmDnj17omfPnrCystJr3YKCAowYMQIXL15EUFAQnJ2d8fPPP2PVqlU4d+4c1q9fj7p16wIAwsPDcfToUbz33nsYMWIEfv75ZyxYsAAPHz6EQqHAgwcPMGjQIMhkMgwZMgSNGzfGr7/+ii1btuDKlSs4dOiQdux+ypQp6NSpEwYNGgQHBwedYAOA6OhoxMXFwcPDA1OmTMEff/yBjRs34uTJk0hISBANKS5cuBANGjTAyJEjUVhYiLi4OISFhSE1NVV7velVgiAgLCwMV69exZAhQ2Bra4t79+7hhx9+wGeffYbExEQ4Ojpi6tSpWLBggfYaUWnXHT755BOo1WqcPXsW8+bN0znhKe7KlSu4cOEChg0bBgsLC6xYsQLjx4/H22+/jQYNGmDixIk4e/Ys4uPj0bRpU3z22WcAgBMnTiAsLAxt27bFuHHjUFBQgB9//BGhoaFYu3YtOnXqVObfe9WqVcjMzMTSpUtRVFRUZt+/PIGqXWRkpCCXy0v8cXV1FS5evCjqP2TIEMHf31/Iz8/XthUWFgofffSR4OnpKTx//lzbr1u3bjr7Kf57586dhfv372vb1Gq1MHHiRMHZ2Vl48OCBIAiCcOrUKUEulwvbtm3T9gsMDBTGjBkjqmvz5s1Cv379hMzMzFKPdfr06UL79u2FR48eidonTJggyOVybXtsbKwgl8uFcePGifpFRUUJcrlcuHbtmiAIgvDNN98IcrlcOHDggKjfjBkzBLlcLqSmpoq2l5WVJer3antWVpYgl8uF2NjYUo9BEARh27ZtglwuF06dOiUIgiBs2rRJkMvlwtq1a0X9Vq1aJcjlcmHjxo2CIAhCamqqIJfLhWXLlon6TZo0SXBychJyc3OFFStWCI6OjsL169dFfebPny/I5XLh8uXL2ja5XC5ERkZqf3+1/t9//11wdHQUwsPDBbVare138eJFwdHRURg7dqxoPT8/P9Hzas+ePYJcLhfi4+NLfSwuXrwoyOVyYfPmzaL2o0ePCnK5XIiLi9O2vfqcLM2rz9WS1h0yZIggl8uFQ4cOads2btwoyOVyYdCgQdo2tVot+Pr6CsHBwYIgCMKLFy+EHj16CCEhIUJRUZG2X35+vtCzZ0+hf//+Zdb222+/CU5OTtrHRN/nzF8Vh3dq0DfffIO1a9di7dq1WLlyJb744gu0atUKoaGhOHnyJICXQxlnzpyBn58fnj17hpycHOTk5ODJkyfo2bMnHjx4gF9++aXcfanVaqSkpKBTp06oU6eOdjuPHj1CQEAACgoKcOLEiVLXb968OU6fPo3vvvsODx48AACEhIRgx44dZZ6ZzZgxA4cOHUKjRo20bSqVCq+99hoA4OnTp6L+o0aNEv0+dOhQAMCRI0cAAIcOHYKDgwP8/f1F/TTjrMWHF2rSoUOHIJPJEBoaKmofNmwYZDIZDh06BABITU2FqakphgwZIuoXGRmJHTt2wNzcHGPGjMGJEyfg4OCgXf7s2TOYmr787/fqY1SWw4cPQxAEjBkzBiYmJtr29u3bw8vLC0eOHBGdqfr5+aFhw4ba39u2bQsAyM7OLnUf7du3x08//YSgoCBt24sXL6BWqwEA+fn5etdbUa+99hp8fHy0v9vb2wOAdpgOAExMTNCyZUvtMVy9ehVZWVnw9/dHbm6u9rn/7NkzdOvWDb/++ivu379f4v5evHiBqKgodOzYEYMGDaqx4zImHN6pQe+8847O7J3AwEAEBARg1qxZSE5O1s5d3rBhAzZs2FDidvQZV3/06BHy8vKQkpKClJSUCm9nypQp+PTTT/H1119jzpw52iGoQYMGwdrautT1TExM8OjRI6xYsQJpaWlQKpW4c+cOhP+/Y7cmKDTefPNN0e+aFxTNePStW7dE/+k1rK2t8frrr+P27dul1lKdbt26BRsbG+0Qjka9evVgY2OjreP27dto0qQJZDKZTr3FH7fCwkLExMTgypUrUCqVuHXrlnbM/9XHqLy6gP+EYXEODg44fvw4Hj16pG17dTirXr16eu2zTp06+OGHH3DmzBlkZmZCqVRqh5qEGrwbe6NGjVCnzn9iSTOs2KRJE1E/MzMzbR1KpRIAMG/ePMybN6/E7d65cwfNmjXTaV+zZg3S0tKwadMm7VDskydPALy8ppOTk4NGjRppX6D/GzD0Daxx48bo0qULDhw4gNzcXO1//NDQUJ2zW402bdqUu13Ndnr16oWQkJAS+9jY2JS6ftu2bbFv3z4cO3YMhw8fxrFjxxAbG4u1a9ciPj5edJZaXFJSEiIiItC0aVO8++672guVx48fx4oVK3T6Fz87Bf4TIJr/3GUFilqt1gnhV+kzfVAf+tahz/7Onj2LUaNGoWHDhvD09MQHH3yAdu3aQalU4ssvv6zWugCgbt262umRlQmrnJwcDBw4EH/88Qe8vLzQvXt3tG3bFi1btsTAgQMrvL2KKB74xb36vClOc9zjxo1Dhw4dSuzz6smGxrFjx1BYWFjica1ZswZr1qzBwYMHdU7e/soY+rVA8yQ1NTVFy5YtAbwMPU9PT1G/69ev49atW2jQoEG527SyskKDBg1QVFSks507d+7g6tWrpW7nxYsXuHbtGmQyGXr06KF9K52UlIQJEyYgISFBO+PiVQsWLICdnR22bdsmGkbYtWtXif1v376Nt956S/t7RkYGgP+c8bds2VLbVlx2djZUKhX+9re/AfhPmBUUFIj6aYamqqply5a4ePEiCgsLRS80BQUFuHXrlvbCYIsWLXDy5Enk5+eLpsBeuXIFcXFx+PTTTxEbG4v69etjz549ojPv5cuXV7guTfikp6ejffv2omUZGRlo2LAhLC0toVKpKrxtjU2bNuHWrVtYt26d6MN/58+fr/Q2a5Lm/5DmRbW4n3/+Gbm5uahfv36J60ZGRmrP7DUePHiAyZMno3///hgwYECZ73T/iv573rP8RTx48ACnTp3C22+/DQsLCzRt2hTOzs7Yvn27aNyxsLAQU6dOxdixY/WaTVCnTh34+vriyJEjuHbtmmjZ3LlzER4eLnrbX9yLFy8wbNgwfP3116J2TaiUdbb4+PFjtGjRQhT4d+/exf79+7XbLm7Lli2i39euXQsTExPtbKZu3brhxo0bOkNUK1euBAB07doVALT/EYsfq0ql0l4b0NC8g6jIEArwcjqiSqXC999/L2rftGkT8vPztXX4+flBrVYjISFB1G/z5s1ITk7GG2+8gcePH8PKykoU+Hl5edppjMUfI1NT0zJr1Xygb9WqVaKz/itXruDkyZPw8/Mr86xYH48fPwYgfocpCAI2btwIAKLnY3n1Fu8HVPzvoA9nZ2dYW1tjw4YNousNKpUK48ePh0KhKHX2mbOzMzw9PUU/77zzDoCX74w9PT2116f+W/BMvwalpKRop8UJgoB79+5hy5Yt+PPPPzFhwgRtv2nTpmH48OH44IMPMHjwYDRq1Ah79uzBpUuXMGnSpFKn1r0qIiICp0+fRmhoKEJDQ9GiRQukpqbi8OHDCA4OFp1hF1evXj0MHToUy5YtQ3h4OHx8fPDs2TPEx8ejQYMG+OCDD0rdp6+vL5KSkjB9+nS4uLjg1q1b2mMEdC/67dq1CyqVCq6urjhy5AgOHz6M0aNHa28FERYWhv3792P8+PEYPHgwWrdujVOnTmH//v0ICAjQfrLW398fs2fPxpdffonbt2+jXr162LJli+jFB4B2PPbgwYNo0aIFAgICYGlpWe5jOXDgQGzfvh1z587Fb7/9BmdnZ1y+fBk//vgjOnTooB0O6N69O7y9vTF37lz8/vvvcHFxwYULF5CYmIjw8HA0atQIvr6+WLVqFcaNGwdvb29kZ2dj69at2nclxR8jKysrnDlzBlu2bIG3t7dOXW+99RaGDh2KDRs2YMSIEfD390d2djY2bNiA119/vVruo+Tr64sNGzYgLCwMH374IQoLC5GcnIzLly/D1NRUp96ffvoJcXFx6Nixo867j+L9ACA2NhZdunSp1O1DSlO3bl1MmzYNEyZMQFBQED788EO89tprSEhIwJ07dzB//vxSh42kiI9EDZozZ47232ZmZrC0tISLiwu++uor0ZPezc0NmzdvxqJFi7B27VoUFRXB3t4ec+fOFX0kvzy2trbYsmULYmNjsWXLFjx9+hQ2NjZQKBTaWTKlGTt2LBo1aoRt27YhOjoaZmZmeOedd/DNN9+UOp4PvJy907BhQxw6dAg7duxA8+bNMWDAAPTs2RODBw/GqVOn0K5dO23/VatWYfbs2di9ezeaNWsGhUKBjz/+WLu8UaNGiI+Px7fffoukpCQ8efIENjY2mDJliqiflZUVVq1ahQULFiA2NhaNGzfGoEGD8Oabb4peUBs0aIAJEyZgzZo1mD17NmxtbbWfii5LvXr1sG7dOixZsgTJycnYuXMnmjdvjrCwMHz66afaIR9TU1MsXboUS5Yswa5du7Bz507Y2tpi+vTpGDx4MADg888/x4sXL5CUlITDhw+jadOm8PT0xMiRI9G3b1+cOnUKPXv2BPDyhXvBggWYNWsWZs2aVeL88n/+85+wt7fHDz/8gLlz58LS0hI9e/bE2LFjtUMdVeHr64vZs2cjLi5Ou30nJyfEx8fjX//6l+imdKNHj0ZaWhr+/e9/IygoqNTQ1zwXVq9ejV9++aVaQx8AevfuDUtLSyxbtgxLly6Fqakp3nrrLSxbtqzKtzv5b2Mi1OSleCIiMioc0ycikhCGPhGRhDD0iYgkhKFPRCQhDH0iIglh6BMRSchfYp7+o0f5UKsNN7O0SRMZHj6s/MfY/9vqAIynFmOpA2AtxlwHYDy1GLoOU1MTNG5c+rfi/SVCX60WDBr6mn0aA2OpAzCeWoylDoC1lMRY6gCMpxZjqQPg8A4RkaQw9ImIJKTCof/rr7/CycmpxC+9Li4/Px8zZ86El5cX3Nzc8I9//AM3b96sbJ1ERFQNKhT6N27cQFhYmF63+p0wYQL27t2LiIgIREdH4/79+xg2bBjy8vIqXSwREVWNXqFfVFSE77//HgMHDtR+I09Zzp49iyNHjiA6Ohrvv/8+AgICsG7dOuTl5WHz5s1VLpqIiCpHr9A/d+4c5s+fj5EjRyIiIqLc/idOnIC5uTm8vLy0bVZWVnB3d8fRo0crXy0REVWJXqHv4OCAlJQUfPbZZ6V+A01x6enpsLOz0+lra2tb4lfhERGRYeg1T/+NN96o0EZVKhVkMplOu7m5eaW+u7NJE91t1TRrawuD77Mk1V2HuqAApvXqGayWquyvOuuoKaxFl7HUARhPLcZSB1BDH84q63tZyvq+1dI8fKgy6IcbrK0tkJ1d+xeca6IOa2sLnOhf+tcfVjevHduq9RiM5W8DsBZjrgMwnloMXYepqUmZJ8o1Mk9fJpPpfDcq8HIaZ0nvAIiIyDBqJPTt7e2RlZWlc8afmZkJe3v7mtglERHpoUZC39vbG0+ePMHJkye1bTk5OTh79iw8PT1rYpdERKSHagn9nJwcXLx4UXuR1t3dHZ07d8bEiRORkJCAAwcO4OOPP4aFhQUGDx5cHbskIqJKqJbQT01NRXBwMK5cuaJtW7x4Mbp374558+YhKioKzZs3x7p162BpaVkduyQiokowEcqaamMkOHunerfJ2TvVg7UYbx2A8dQiidk7RERknBj6REQSwtAnIpIQhj4RkYQw9ImIJIShT0QkIQx9IiIJYegTEUkIQ5+ISEIY+kREEsLQJyKSEIY+EZGEMPSJiCSEoU9EJCEMfSIiCWHoExFJCEOfiEhCGPpERBLC0CcikhCGPhGRhDD0iYgkhKFPRCQhDH0iIglh6BMRSQhDn4hIQhj6REQSwtAnIpIQhj4RkYToHfq7d+9G37594erqisDAQCQmJpbZPycnBwqFAt7e3ujcuTPCwsJw8+bNKpZLRERVoVfoJyUlISIiAt7e3liyZAk6d+6MyMhI7N27t8T+giAgPDwcR48eRUREBObNm4fs7GwMGzYMubm51XoARESkvzr6dIqJiUFgYCAUCgUAwMfHB7m5uVi4cCF69+6t0//mzZs4f/48oqOjMWDAAACAg4MD/P39cejQIbz//vvVdwRERKS3cs/0s7KyoFQqERAQIGrv1asX0tPTkZWVpbPO8+fPAQDm5ubaNktLSwDA48ePq1IvERFVQbmhn56eDgCwt7cXtdvZ2QEAMjIydNZp27YtunTpgiVLluDGjRvIycnB7Nmz0bBhQ/j7+1dH3UREVAnlDu/k5eUBAGQymahdcxavUqlKXG/GjBkYPXo0+vTpAwCoV68elixZAhsbmyoVTERElVdu6AuCUOZyU1PdNws3btxASEgIbG1tMXXqVNSvXx9btmzB2LFjsXr1anTq1KlCRTZpIiu/UzWztrYw+D5LYix1VEV1H4MxPSasRZex1AEYTy3GUgegR+hbWLwsNj8/X9SuOcPXLC9u3bp1AIC4uDjtWL6Xlxc++ugjfP311/jxxx8rVOTDhyqo1WW/+FQna2sLZGfnGWx/hqyjNp581XkMxvK3AViLMdcBGE8thq7D1NSkzBPlcsf0NWP5SqVS1J6ZmSlaXtydO3fg4OCgDXwAMDExQceOHXH9+nX9KiciompXbujb2dmhVatWOnPy9+/fj9atW6NFixY669jb2+P333/HkydPRO2XLl1Cy5Ytq1gyERFVll7z9MPDw6FQKGBpaYmuXbvi4MGDSE5ORkxMDICXn75VKpVo06YNZDIZPv74Y+zcuRMjR47EmDFjUL9+fezYsQNnzpzRrkNERIanV+gHBQWhoKAAcXFxSEhIgI2NDaKjo7Uzc1JTU6FQKLB+/Xp06dIFrVq1wubNmzF//nwoFAqYmJhALpdj7dq18PT0rNEDIiKi0ukV+gAQEhKCkJCQEpcFBQUhKChI1Obg4IBly5ZVrToiIqpWvMsmEZGEMPSJiCSEoU9EJCEMfSIiCWHoExFJCEOfiEhCGPpERBLC0CcikhCGPhGRhDD0iYgkhKFPRCQhDH0iIglh6BMRSQhDn4hIQhj6REQSwtAnIpIQhj4RkYQw9ImIJIShT0QkIQx9IiIJYegTEUkIQ5+ISEIY+kREEsLQJyKSEIY+EZGEMPSJiCSEoU9EJCEMfSIiCdE79Hfv3o2+ffvC1dUVgYGBSExMLLO/Wq3GsmXL0KNHD7i6uuK9997Dnj17qlovERFVQR19OiUlJSEiIgLDhw+Ht7c3UlJSEBkZifr166N3794lrvP1118jPj4eEydORNu2bbFnzx5MmjQJMpkMfn5+1XoQRESkH71CPyYmBoGBgVAoFAAAHx8f5ObmYuHChSWGvlKpxPfff48vv/wSAwcOBAB4eHjg5s2bOHbsGEOfiKiWlBv6WVlZUCqVmDhxoqi9V69eSE5ORlZWFmxsbETLUlJSUL9+fQwYMEDUvnHjxqpXTERElVbumH56ejoAwN7eXtRuZ2cHAMjIyNBZJy0tDfb29jh58iT69euHdu3aISAgAElJSdVRMxERVVK5oZ+XlwcAkMlkonZzc3MAgEql0lknJycHd+/exdSpUzFkyBCsXr0aTk5OmDBhAk6dOlUddRMRUSWUO7wjCEKZy01NdV83CgsLkZOTg+XLl6Nbt24AgHfffRfp6elYvHgx3n333QoV2aSJrPxO1cza2sLg+yyJsdRRFdV9DMb0mLAWXcZSB2A8tRhLHYAeoW9h8bLY/Px8UbvmDF+zvDhzc3OYmZnBy8tL22ZqagpPT09s3bq1wkU+fKiCWl32i091sra2QHZ2nsH2Z8g6auPJV53HYCx/G4C1GHMdgPHUYug6TE1NyjxRLnd4RzOWr1QqRe2ZmZmi5cXZ2dlBrVajqKhI1F5YWAgTE5PyqyYiohpRbujb2dmhVatW2Lt3r6h9//79aN26NVq0aKGzjo+PDwRBQHJysratqKgIx44dQ8eOHauhbCIiqgy95umHh4dDoVDA0tISXbt2xcGDB5GcnIyYmBgALy/cKpVKtGnTBjKZDB4eHvDz88Ps2bPx9OlTtG7dGps2bcLt27exYMGCGj0gIiIqnV6hHxQUhIKCAsTFxSEhIQE2NjaIjo5Gnz59AACpqalQKBRYv349unTpAgCIjY3FwoULsXLlSuTm5qJdu3aIi4uDs7NzzR0NERGVyUQob3qOEeCF3Ord5on+H1TrNsvitWMbL+QagLHUYix1AMZTy1/uQi4REf33YOgTEUkIQ5+ISEIY+kREEsLQJyKSEIY+EZGEMPSJiCSEoU9EJCEMfSIiCWHoExFJCEOfiEhCGPpERBLC0CcikhCGPhGRhDD0iYgkhKFPRCQhDH0iIglh6BMRSQhDn4hIQhj6REQSwtAnIpIQhj4RkYQw9ImIJIShT0QkIQx9IiIJYegTEUkIQ5+ISEIY+kREEsLQJyKSEL1Df/fu3ejbty9cXV0RGBiIxMREvXdy9+5ddOzYEUuXLq1MjUREVE30Cv2kpCRERETA29sbS5YsQefOnREZGYm9e/eWu64gCJg6dSpUKlWViyUioqqpo0+nmJgYBAYGQqFQAAB8fHyQm5uLhQsXonfv3mWuu2nTJqSnp1e9UiIiqrJyz/SzsrKgVCoREBAgau/VqxfS09ORlZVV5rrz58/HrFmzql4pERFVWbmhrzlLt7e3F7Xb2dkBADIyMkpcT61WIyoqCoGBgfD19a1qnUREVA3KHd7Jy8sDAMhkMlG7ubk5AJQ6Vv/dd9/h1q1bWL58eVVrRJMmsvI7VTNrawuD77MkxlJHVVT3MRjTY8JadBlLHYDx1GIsdQB6hL4gCGUuNzXVfbNw48YNfPvtt4iNjYWFRdUP9uFDFdTqsuuoTtbWFsjOzjPY/gxZR208+arzGIzlbwOwFmOuAzCeWgxdh6mpSZknyuUO72hCOz8/X9SuOcN/NdRfvHgBhUKB3r17w8vLC0VFRSgqKgLwcshH828iIjK8ckNfM5avVCpF7ZmZmaLlGnfv3sWlS5eQmJgIJycn7Q8ALFq0SPtvIiIyvHKHd+zs7NCqVSvs3bsXPXv21Lbv378frVu3RosWLUT9mzZtiq1bt+ps58MPP8TgwYPxwQcfVEPZRERUGXrN0w8PD4dCoYClpSW6du2KgwcPIjk5GTExMQCAnJwcKJVKtGnTBjKZDC4uLiVup2nTpqUuIyKimqfXJ3KDgoIwc+ZMHD9+HOHh4fjpp58QHR2NPn36AABSU1MRHByMK1eu1GixRERUNXqd6QNASEgIQkJCSlwWFBSEoKCgMtdPS0urWGVERFTteJdNIiIJYegTEUkIQ5+ISEIY+kREEsLQJyKSEIY+EZGEMPSJiCSEoU9EJCEMfSIiCWHoExFJCEOfiEhCGPpERBLC0CcikhCGPhGRhDD0iYgkhKFPRCQhDH0iIglh6BMRSQhDn4hIQhj6REQSwtAnIpIQhj4RkYQw9ImIJIShT0QkIQx9IiIJYegTEUkIQ5+ISEIY+kREEqJ36O/evRt9+/aFq6srAgMDkZiYWGb/7OxsTJs2Dd26dYObmxuCgoKQnJxc1XqJiKgK6ujTKSkpCRERERg+fDi8vb2RkpKCyMhI1K9fH71799bpX1BQgNGjRyMvLw9jx45F06ZNsW/fPowfPx4vXrzA3//+92o/ECIiKp9eoR8TE4PAwEAoFAoAgI+PD3Jzc7Fw4cISQ//o0aO4du0aEhIS4OrqCgDw8vLCnTt3sGrVKoY+EVEtKXd4JysrC0qlEgEBAaL2Xr16IT09HVlZWTrrmJubIzg4GC4uLqL2N998E0qlsoolExFRZZV7pp+eng4AsLe3F7Xb2dkBADIyMmBjYyNa5uHhAQ8PD1FbYWEhjhw5grfeeqtKBRMRUeWVe6afl5cHAJDJZKJ2c3NzAIBKpdJrR9988w1u3ryJMWPGVLRGIiKqJuWe6QuCUOZyU9OyXzcEQcA333yD7777DqNGjYK/v3/FKgTQpIms/E7VzNrawuD7LImx1FEV1X0MxvSYsBZdxlIHYDy1GEsdgB6hb2Hxstj8/HxRu+YMX7O8JAUFBYiKisKePXswatQoTJkypVJFPnyoglpd9otPdbK2tkB2dp7B9mfIOmrjyVedx2AsfxuAtRhzHYDx1GLoOkxNTco8US439DVj+UqlEo6Ojtr2zMxM0fJXqVQqhIWF4fz585g6dSqGDx9eocKJiKj6lTumb2dnh1atWmHv3r2i9v3796N169Zo0aKFzjovXrzAp59+ikuXLiEmJoaBT0RkJPSapx8eHg6FQgFLS0t07doVBw8eRHJyMmJiYgAAOTk5UCqVaNOmDWQyGX744QecOXMGwcHBaN68OS5evKjdlomJCdq3b18jB0NERGXTK/SDgoJQUFCAuLg4JCQkwMbGBtHR0ejTpw8AIDU1FQqFAuvXr0eXLl2wb98+AEB8fDzi4+NF2zIzM8PVq1er+TCIiEgfeoU+AISEhCAkJKTEZUFBQQgKCtL+vn79+qpXRkRE1Y532SQikhCGPhGRhDD0iYgkhKFPRCQhDH0iIglh6BMRSQhDn4hIQhj6REQSwtAnIpIQhj4RkYQw9ImIJIShT0QkIQx9IiIJYegTEUkIQ5+ISEIY+kREEsLQJyKSEIY+EZGEMPSJiCSEoU9EJCEMfSIiCWHoExFJCEOfiEhCGPpERBLC0CcikhCGPhGRhDD0iYgkhKFPRCQhDH0iIgnRO/R3796Nvn37wtXVFYGBgUhMTCyzf35+PmbOnAkvLy+4ubnhH//4B27evFnFcomIqCr0Cv2kpCRERETA29sbS5YsQefOnREZGYm9e/eWus6ECROwd+9eREREIDo6Gvfv38ewYcOQl5dXbcUTEVHF1NGnU0xMDAIDA6FQKAAAPj4+yM3NxcKFC9G7d2+d/mfPnsWRI0ewatUq+Pr6AgA6deqEHj16YPPmzRgzZkw1HgIREemr3DP9rKwsKJVKBAQEiNp79eqF9PR0ZGVl6axz4sQJmJubw8vLS9tmZWUFd3d3HD16tBrKJiKiyij3TD89PR0AYG9vL2q3s7MDAGRkZMDGxkZnHTs7O5iZmYnabW1tkZycXOEiTU1NKrxOVdXGPktiLHVURXUfgzE9JqxFl7HUARhPLYaso7x9lRv6mjF4mUwmajc3NwcAqFQqnXVUKpVOf806JfUvT+PG5hVep6qaNNGtvzbURB1eO7ZV+zbLUt3HYCx/G4C1lMRY6gCMpxZjqQPQY3hHEISyN2Cqu4my1impPxERGUa5CWxhYQHg5RTM4jRn7JrlxclkMp3+mm2U9A6AiIgMo9zQ14zlK5VKUXtmZqZo+avrZGVl6ZzxZ2ZmltifiIgMo9zQt7OzQ6tWrXTm5O/fvx+tW7dGixYtdNbx9vbGkydPcPLkSW1bTk4Ozp49C09Pz2oom4iIKkOvefrh4eFQKBSwtLRE165dcfDgQSQnJyMmJgbAy0BXKpVo06YNZDIZ3N3d0blzZ0ycOBERERFo1KgRFi1aBAsLCwwePLhGD4iIiEpnIpR3pfb//fDDD4iLi8Pdu3dhY2ODMWPGYMCAAQCAH3/8EQqFAuvXr0eXLl0AALm5uZg7dy5SUlKgVqvRsWNHREVF4c0336yxgyEiorLpHfpERPTXx/mTREQSwtAnIpIQhn4xFb19dE379ddf4eTkhHv37tXK/tVqNTZv3oz33nsPbm5u8Pf3x5w5cyr1qeqqEgQB69atQ69eveDq6op+/fph165dBq/jVZ999hl69uxZK/suKiqCq6srHB0dRT9ubm4Gr+Wnn37C4MGD0b59e3h7e2PWrFklflanJp0+fVrnsSj+s337doPWs3nzZgQGBqJDhw547733sHPnToPuvzR6zd6RAs3to4cPHw5vb2+kpKQgMjIS9evXL/FOojXtxo0bCAsLQ1FRkcH3rbF69Wp8++23GDVqFDw8PJCRkYHY2Fhcv34da9asMWgtK1asQGxsLD7//HN06NABR48eRUREBMzMzNCnTx+D1qKxY8cOHDhwALa2trWy/4yMDDx//hzR0dFo3bq1tt3Qn3q/ePEiRowYge7du2PZsmXIzMzEv//9b+Tk5Ghn+BmCk5MT4uPjRW2CIOCf//wnnj59Cj8/P4PVEh8fjxkzZmDkyJHw8fHBkSNHMHnyZNStWxeBgYEGq6NEAgmCIAj+/v7C+PHjRW3jxo0TevfubdA6CgsLhY0bNwpubm5C586dBblcLty9e9egNQiCIKjVasHd3V2YMWOGqH3Pnj2CXC4Xrl69arBaCgoKBHd3d+HLL78UtQ8ZMkQYPHiwweoo7t69e4K7u7vg6+sr+Pv710oNO3fuFNq2bSs8ffq0VvavERoaKoSGhgpqtVrbtnHjRqFHjx61Xtu6deuEtm3bChcvXjTofoODg4WhQ4eK2j766CNhyJAhBq2jJBzeQeVuH11Tzp07h/nz52PkyJGIiIgw2H5flZ+fj379+uHvf/+7qF0z5fbVT2jXJDMzM2zYsEHnexjq1q2L58+fG6yO4qZNmwYvLy94eHjUyv6Bl8N/tra2aNCgQa3VoPnQ5eDBg2Fi8p+7O4aGhiIlJaVWa8vOzsbChQu1w06G9Pz5c+1NKTUaNWqEx48fG7SOkjD0od/tow3FwcEBKSkp+Oyzz3RuTW1IMpkM06ZNQ8eOHUXtKSkpAIA2bdoYrBZTU1M4OjqiWbNmEAQBDx48wMqVK3Hy5EkEBwcbrA6NhIQEXLlyBf/6178Mvu/i0tLSUK9ePYwaNQpubm5wd3fH9OnTDXrN5bfffoMgCLC0tMT48ePRoUMHdOzYEV988QWePXtmsDpKsmjRIpiammL8+PEG3/ewYcNw7NgxJCcnQ6VSYe/evUhNTUX//v0NXsurOKaPyt0+uqa88cYbBttXRV26dAkrV66Ev78/HBwcaqWG/fv3Y+zYsQCArl27ol+/fgbd/+3btzFnzhzMmTMHVlZWBt33q65duwaVSoWBAwfik08+weXLl7Fo0SJkZGRg/fr1ojPvmpKTkwMAiIqKQs+ePbFs2TKkpaXh22+/xfPnzzF37twar6EkDx8+RGJiIkaOHInXX3/d4Pvv27cvTp06JXrBef/99zF69GiD1/Iqhj4qd/toqTl37hw++eQTtGrVCrNnz661Otq1a4eNGzciLS0NCxcuxJgxY/Ddd98ZJOAEQcDUqVPh5+eHXr161fj+yhMTEwNLS0s4OjoCANzd3dGkSRNMnjwZJ0+eFH1zXU0pLCwEALzzzjv44osvAAAeHh4QBAHR0dEIDw/X+ZIlQ0hISIBarcawYcMMvm8A+PTTT3HhwgUoFAq0a9cOly5dwtKlS7XvoGsTQx+Vu320lCQlJSEqKgqtW7fG6tWr0bhx41qrxcbGBjY2NnB3d4dMJkNkZCQuXLiAd955p8b3/f333yMtLQ27du3SzqrSnDAUFRXBzMzMIC8+Gp07d9Zp69q1K4CX7wIMEfqad8Oa78LW8Pb2xty5c5GWllYrob9v3z74+PjUyrux8+fP4/jx45gzZw6CgoIAvPxbvf7665g+fToGDRoEuVxu8Lo0eAqLyt0+WirWrl2LiRMnokOHDvj+++/RtGlTg9fw+PFjJCYm4v79+6L2du3aAQD++OMPg9Sxb98+PHr0CN7e3nBycoKTkxMSExOhVCrh5ORk0HngDx8+REJCgs4kA804uqFemDVTRQsKCkTtmncAhnwR1Lh//z6uXr1aa1Mj79y5AwA6JyKdOnUCAFy/ft3gNRXH0Eflbh8tBQkJCZg7dy4CAwOxevXqWnvHo1arERUVpTMH+8SJEwBgsLOmmTNnYuvWraKfbt26oXnz5tp/G4qJiQmmT5+OjRs3itqTkpJgZmamcwG+pjg4OKBly5ZISkoStR8+fBh16tSplQ+KXbp0CQAM9hi8SnOSeO7cOVH7xYsXAQAtW7Y0dEkiHN75f+XdPlpqHj58iK+++gotW7ZEaGgorl69Klpua2trsLfOVlZW+Oijj7By5UrUr18fLi4uOHfuHFasWIGBAwca7M6tJe2nUaNGqFevHlxcXAxSg4aVlRVCQ0OxYcMGyGQydOrUCefOncPy5csRGhqqnXlW00xMTBAREaG9jXpQUBAuX76MZcuWYciQIbUyvPLbb7+hQYMGtRauTk5O8Pf3x1dffYW8vDy8/fbbuHz5MpYsWQJfX1+DTx99FUP//wUFBaGgoABxcXFISEiAjY0NoqOja+3TnrXt2LFj+PPPP3H79m2EhobqLJ83b55Bp58pFAr87W9/w9atW7Fo0SI0b94cY8eOxahRowxWg7GJjIxEs2bNsG3bNqxcuRLNmjXD2LFjDT5DpE+fPqhXrx6WLFmCsLAwNGnSBOHh4QgLCzNoHRoPHjyolRk7xcXExGDx4sVYt24dHj58iJYtW2LkyJE6nzWpDby1MhGRhHBMn4hIQhj6REQSwtAnIpIQhj4RkYQw9ImIJIShT0QkIQx9IiIJYegTEUkIQ5+ISEL+DxLgXmdNmrkwAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -2387,12 +2387,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time 5: Agent observes itself in location: (0, 1)\n" + "Time 5: Agent observes itself in location: (1, 2)\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -2404,12 +2404,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time 6: Agent observes itself in location: (0, 2)\n" + "Time 6: Agent observes itself in location: (2, 2)\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -2421,12 +2421,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time 7: Agent observes itself in location: (1, 2)\n" + "Time 7: Agent observes itself in location: (2, 2)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEUCAYAAADHgubDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAvpklEQVR4nO3deVRT56IF8A0oVQlFsahXBaTYYEVQqmiRyQFR9NZaWgWLQx2u6MM6UjFer9Vqq1i9VJyHi1ZtLaIVJ7AWFcfnPLRqpVWQgFNRFAlWAXPeH77kcmRIGBLSnv1bi7Xkyxl2Qtw5+XKSmAmCIICIiCTBvLYDEBGR8bD0iYgkhKVPRCQhLH0iIglh6RMRSQhLn4hIQlj6BjB9+nS4uLiIftq1a4cePXpg7ty5yMvLq9J2hw4dih49epTaT1Xs3r0bPXr0gJubG6ZOnVqlbVTG0qVL4eLiguzsbIPv62VqtVrnfr///nu4uLjg1KlTRkpVvqysLO2/s7Oz4eLigqVLl9ZiooqVzFuZ5V6+P9cGze1b0Y8p3CdqUp3aDvBXplAo0KhRIwDAs2fPcP36dcTHx+Pnn3/Gli1bYGFhUa3th4SEwMvLq9LrPXz4EAqFAi1btsTMmTPh6OhYrRymTKVS4aOPPoK/vz8+/vjj2o6j06hRo2BnZ4cFCxYAAGxtbbFw4cIqP7gb2ooVK7Bjxw78+OOPFS63fft2zJkzBz/99JN2bOzYsfjjjz8MHbFCmtv3Zc+ePcPcuXPRuHFjtGnTphaSGQ5L34ACAgLQsmVL0VirVq0wZ84cHDlyBN27d6/W9j08PODh4VHp9TIyMlBUVISwsDCEhIRUK4Ope/ToEX7++Wf4+/vXdhS9HDt2DO+995729wYNGuDdd9+txUQV+9///V88f/5c53JnzpzBs2fPRGPe3t6GiqW38m7fzz//HMXFxVi0aBFsbGxqIZnhcHrHyLp06QIA+O2332otQ1FREQDAysqq1jIQmaq0tDRs3rwZ7733Hjp16lTbcWocS9/I7t69CwBwcHAQjV+/fh0RERHo1KkT2rdvj9DQUBw9erTCbZU1p3/37l1MmzYNb7/9Ntzc3DBgwADs2rVLtM6wYcMAvJh+0syzC4KAZcuWoXfv3nBzc0PXrl3xySef4M6dOzqv05UrV/Dxxx+ja9eucHV1hZeXF6ZOnaq9riWlp6dj2LBhcHd3R7du3bBkyRLtg5DGw4cPMXv2bPj6+qJdu3bo3bs31qxZIzqiLO81gpLjp06dQs+ePQEAy5Ytq/RrCn/88QcWL16MHj16aF+TWbRoUakpicLCQixduhSBgYFwd3cvM29mZiaioqLg5+eHdu3aoXPnzhg7dqz2wV8ztwwAO3bs0M4llzenn5CQgHfffRdubm54++23MXXqVNF106yXmJiImJgY+Pn5wc3NDQMHDsTJkyd1XneVSoXFixejT58+cHNzg4eHBwYNGoQDBw5ol+nRowdOnz6NW7duVfi6w9ChQ7Fjxw4AgIuLC6ZPn64dLzmnP3ToUISHhyMlJQX9+/eHm5sb+vXrh8OHD0OlUmHWrFnw9PSEl5cXZs2ahadPn4r2c+HCBYwYMUL7DHjkyJGi6SR9xcTEoF69epg0aVKl1/0z4PSOAT1+/Bi5ubkAXhxd37hxA/PmzYOrq6vozp6WloYPP/wQr732GsLDw1G3bl3s2bMHY8aMweLFi9G3b1+99nfv3j0MHDgQgiBg6NChsLGxwYEDB/DJJ5/g999/x+jRoxESEoKmTZti1apVCAkJQceOHWFra4tVq1Zh+fLlCAsL05bjxo0bcfnyZezZs6fc1x802R0dHTFmzBjUr18f58+fx86dO5GZmYlt27aJlp84cSK6dOmCqKgonD59GitWrMCdO3e0c9h5eXkIDQ3FrVu3EBoaCicnJxw/fhyLFy/G1atX8dVXX+l9+zs7O0OhUGD+/Pno1asXevXqBVtbW73WLSwsxIgRI3Dx4kUEBwejXbt2+Omnn7B27VqcO3cOGzduRN26dQEAEREROHLkCN555x2MGDECP/30ExYvXowHDx5AoVDg/v37GDRoEGQyGYYMGYJGjRrhl19+wdatW3HlyhUcPHhQO7c8bdo0dOrUCYMGDYKzs3OpYgOA6OhoxMXFwcvLC9OmTcPvv/+OzZs348SJE0hISBBNKS5ZsgT169fHyJEjUVRUhLi4OISHhyM1NVX7etPLBEFAeHg4rl69iiFDhsDBwQF3797Fd999h/HjxyMxMREuLi6YMWMGFi9erH2NqLzXHcaOHQu1Wo2zZ89i4cKFpQ54Srpy5QouXLiAYcOGwdraGqtXr8akSZPw5ptvon79+pgyZQrOnj2L+Ph4NGnSBOPHjwcAHD9+HOHh4WjTpg0mTpyIwsJCfP/99wgLC8P69ev1PmK/du0aDh06hJEjR6JJkyZ6rfOnI1CNi4qKEuRyeZk/7u7uwsWLF0XLDxkyRAgICBAKCgq0Y0VFRcKHH34odO3aVXj27Jl2ue7du5faT8nfO3fuLNy7d087plarhSlTpgjt2rUT7t+/LwiCIJw8eVKQy+XC9u3btcsFBQUJY8aMEeXasmWL0L9/fyEzM7Pc6zpr1iyhffv2wsOHD0XjkydPFuRyuXY8NjZWkMvlwsSJE0XLTZ8+XZDL5cK1a9cEQRCEL7/8UpDL5cKPP/4oWm727NmCXC4XUlNTRdvLysoSLffyeFZWliCXy4XY2Nhyr4MgCML27dsFuVwunDx5UhAEQfj2228FuVwurF+/XrTc2rVrBblcLmzevFkQBEFITU0V5HK5sHLlStFyU6dOFVxdXYW8vDxh9erVgouLi3D9+nXRMosWLRLkcrlw+fJl7ZhcLheioqK0v7+c/7fffhNcXFyEiIgIQa1Wa5e7ePGi4OLiIkyYMEG0nr+/v+h+tXfvXkEulwvx8fHl3hYXL14U5HK5sGXLFtH4kSNHBLlcLsTFxWnHXr5Plufl+2pZ6w4ZMkSQy+XCwYMHtWObN28W5HK5MGjQIO2YWq0W/Pz8hJCQEEEQBOH58+dCz549hdDQUKG4uFi7XEFBgdCrVy/h3Xff1ZlPY9asWcKbb74pZGdn673Onw2ndwzoyy+/xPr167F+/XqsWbMGn376KVq2bImwsDCcOHECwIupjNOnT8Pf3x9Pnz5Fbm4ucnNz8fjxY/Tq1Qv379/Hzz//rHNfarUaKSkp6NSpE+rUqaPdzsOHDxEYGIjCwkIcP3683PWbNWuGU6dO4euvv8b9+/cBAKGhodi5c2eFR2azZ8/GwYMH0bBhQ+2YSqXCK6+8AgB48uSJaPlRo0aJfh86dCgA4PDhwwCAgwcPwtnZGQEBAaLl/ud//gcARNMLhnTw4EHIZDKEhYWJxocNGwaZTIaDBw8CAFJTU2Fubo4hQ4aIlouKisLOnTthZWWFMWPG4Pjx43B2dtZe/vTpU5ibv/jv9/JtVJFDhw5BEASMGTMGZmZm2vH27dvD29sbhw8fRnFxsXbc398fDRo00P6uORMlJyen3H20b98eZ86cQXBwsHbs+fPnUKvVAICCggK981bWK6+8Al9fX+3vTk5OAKCdpgMAMzMztGjRQnsdrl69iqysLAQEBCAvL09733/69Cm6d++OX375Bffu3dO576dPn2LXrl3o0aMHWrRoUcPXzHRweseA3nrrrVJn7wQFBSEwMBBz585FcnKy9tzlTZs2YdOmTWVuR5959YcPHyI/Px8pKSlISUmp9HamTZuGcePG4YsvvsD8+fO1U1CDBg2CnZ1dueuZmZnh4cOHWL16NdLS0qBUKnH79m0I//+J3Zqi0Hj99ddFv2seUDTz0dnZ2aL/9Bp2dnZ49dVXcevWrXKz1KTs7GzY29trp3A0LC0tYW9vr81x69YtNG7cGDKZrFTekrdbUVERYmJicOXKFSiVSmRnZ2vn/F++jXTlAv5bhiU5Ozvj2LFjePjwoXbs5eksS0tLvfZZp04dfPfddzh9+jQyMzOhVCq1U02CAT+NvWHDhqhT57+1pJlWbNy4sWg5CwsLbQ6lUgkAWLhwYZmnXwLA7du30bRp0wr3ferUKTx58gR9+vSpcv4/A5a+kTVq1AhdunTBjz/+iLy8PO1//LCwsFJHtxqtW7fWuV3Ndnr37o3Q0NAyl7G3ty93/TZt2uCHH37A0aNHcejQIRw9ehSxsbFYv3494uPjRUepJSUlJSEyMhJNmjTB22+/rX2h8tixY1i9enWp5UsenQL/LRDNf+6KCkWtVpcq4Zfpc/qgPvTNoc/+zp49i1GjRqFBgwbo2rUr3n//fbRt2xZKpRKfffZZjeYCgLp162pPj9Q8m6iM3NxcDBw4EL///ju8vb3Ro0cPtGnTBi1atMDAgQMrvb3KKFn4Jb18vylJc70nTpyIDh06lLnMywcbZTl8+DAsLS3RrVs3ncv+mbH0a4HmTmpubq59GmlhYYGuXbuKlrt+/Tqys7NRv359ndu0tbVF/fr1UVxcXGo7t2/fxtWrV8vdzvPnz3Ht2jXIZDL07NlT+1Q6KSkJkydPRkJCgvaMi5ctXrwYjo6O2L59u2gaYffu3WUuf+vWLbzxxhva3zMyMgD894i/RYsW2rGScnJyoFKp8Le//Q3Af8ussLBQtJxmaqq6WrRogYsXL6KoqEj0QFNYWIjs7GztC4PNmzfHiRMnUFBQIDoF9sqVK4iLi8O4ceMQGxuLevXqYe/evaIj71WrVlU6l+aZY3p6Otq3by+6LCMjAw0aNICNjQ1UKlWlt63x7bffIjs7Gxs2bBC9+e/8+fNV3qYhaf4PaR5US/rpp5+Ql5eHevXq6dzO+fPn0a5du1LP2v5qOKdvZPfv38fJkyfx5ptvwtraGk2aNEG7du2wY8cO0bxjUVERZsyYgQkTJojmaMtTp04d+Pn54fDhw7h27ZrosgULFiAiIkL0tL+k58+fY9iwYfjiiy9E45pSqeho8dGjR2jevLmo8O/cuYP9+/drt13S1q1bRb+vX78eZmZm2rOZunfvjhs3bpSaolqzZg0AaI/CNFMnJa+rSqXSvjagoXkGUZkpFODF6YgqlQrffPONaPzbb79FQUGBNoe/vz/UajUSEhJEy23ZsgXJycl47bXX8OjRI9ja2ooKPz8/X3saY8nbyNzcvMKsmjf0rV27VnTUf+XKFZw4cQL+/v4VHhXr49GjRwDEzzAFQcDmzZsBQHR/1JW35HJA5f8O+mjXrh3s7OywadMm0esNKpUKkyZNgkKh0Pnu96KiIly/fh1t27at8Xymhkf6BpSSkqI9LU4QBNy9exdbt27FH3/8gcmTJ2uXmzlzJoYPH473338fgwcPRsOGDbF3715cunQJU6dOLffUupdFRkbi1KlTCAsLQ1hYGJo3b47U1FQcOnQIISEhoiPskiwtLTF06FCsXLkSERER8PX1xdOnTxEfH4/69evj/fffL3effn5+SEpKwqxZs+Dm5obs7GztdQRKv+i3e/duqFQquLu74/Dhwzh06BBGjx6t/SiI8PBw7N+/H5MmTcLgwYPRqlUrnDx5Evv370dgYKD2nbUBAQGYN28ePvvsM9y6dQuWlpbYunWr6MEHeDFHbG5ujgMHDqB58+YIDAzU6x2WAwcOxI4dO7BgwQL8+uuvaNeuHS5fvozvv/8eHTp00E5z9OjRAz4+PliwYAF+++03uLm54cKFC0hMTERERAQaNmwIPz8/rF27FhMnToSPjw9ycnKwbds27bOSkreRra0tTp8+ja1bt8LHx6dUrjfeeANDhw7Fpk2bMGLECAQEBCAnJwebNm3Cq6++WiOfo+Tn54dNmzYhPDwcH3zwAYqKipCcnIzLly/D3Ny8VN4zZ84gLi4OHTt2LPXso+RyABAbG4suXbpU6eNDylO3bl3MnDkTkydPRnBwMD744AO88sorSEhIwO3bt7Fo0aJyp4007ty5g6KiIu0zyb8ylr4BzZ8/X/tvCwsL2NjYwM3NDZ9//rnoTu/h4YEtW7Zg6dKlWL9+PYqLi+Hk5IQFCxaI3pKvi4ODA7Zu3YrY2Fhs3boVT548gb29PRQKhfYsmfJMmDABDRs2xPbt2xEdHQ0LCwu89dZb+PLLL8udzwdenL3ToEEDHDx4EDt37kSzZs0wYMAA9OrVC4MHD8bJkydFR09r167FvHnzsGfPHjRt2hQKhQIfffSR9vKGDRsiPj4eX331FZKSkvD48WPY29tj2rRpouVsbW2xdu1aLF68GLGxsWjUqBEGDRqE119/XfSAWr9+fUyePBn/+c9/MG/ePDg4OGjfFV0RS0tLbNiwAcuXL0dycjJ27dqFZs2aITw8HOPGjdNO+Zibm2PFihVYvnw5du/ejV27dsHBwQGzZs3C4MGDAQAff/wxnj9/jqSkJBw6dAhNmjRB165dMXLkSPTr1w8nT55Er169ALx44F68eDHmzp2LuXPnlnl++T//+U84OTnhu+++w4IFC2BjY4NevXphwoQJNXLWiZ+fH+bNm4e4uDjt9l1dXREfH49//etfog8gGz16NNLS0vDvf/8bwcHB5Za+5r6wbt06/PzzzzVa+gDQp08f2NjYYOXKlVixYgXMzc3xxhtvYOXKlXp93Inm2c1ffWoHAMwEQ74UT0REJoVz+kREEsLSJyKSEJY+EZGEsPSJiCSEpU9EJCEsfSIiCflTnKf/8GEB1GrjnVnauLEMDx5U/W3sf7UcgOlkMZUcALOYcg7AdLIYO4e5uRkaNSr/W/H+FKWvVgtGLX3NPk2BqeQATCeLqeQAmKUsppIDMJ0sppID4PQOEZGksPSJiCSk0qX/yy+/wNXVtcwvvS6poKAAc+bMgbe3Nzw8PPCPf/wDN2/erGpOIiKqAZUq/Rs3biA8PFyvj/qdPHky9u3bh8jISERHR+PevXsYNmwY8vPzqxyWiIiqR6/SLy4uxjfffIOBAwdqv5GnImfPnsXhw4cRHR2N9957D4GBgdiwYQPy8/OxZcuWaocmIqKq0av0z507h0WLFmHkyJGIjIzUufzx48dhZWUFb29v7ZitrS08PT1x5MiRqqclIqJq0av0nZ2dkZKSgvHjx+v8BhrgxVe5OTo6llrWwcGhzK/CIyIi49DrPP3XXnutUhtVqVRlfhmBlZVVlb67s3Fj43+xgZ2dtdH3WRZTyQGYThZTyQHUfBZ1YSHMLS2NkqU6+6rJHIZkKllMJQdgoDdnVfS9LBV932p5HjxQGfXNDXZ21sjJqf0XnE0lB2A6WUwlB2CYLHZ21jj+bvlfT1mTvHduN0j+v/Lf58+Qw9zcrMIDZYOcpy+TyUp9Nyrw4jROKXwdGRGRqTJI6Ts5OSErK6vUEX9mZiacnJwMsUsiItKDQUrfx8cHjx8/xokTJ7Rjubm5OHv2LLp27WqIXRIRkR5qpPRzc3Nx8eJF7Yu0np6e6Ny5M6ZMmYKEhAT8+OOP+Oijj2BtbY3BgwfXxC6JiKgKaqT0U1NTERISgitXrmjHli1bhh49emDhwoWYPn06mjVrhg0bNsDGxqYmdklERFVgJlR0qo2J4Nk7tc9UsphKDoBn75Tlr/73+TPkqJWzd4iIyDSx9ImIJISlT0QkISx9IiIJYekTEUkIS5+ISEJY+kREEsLSJyKSEJY+EZGEsPSJiCSEpU9EJCEsfSIiCWHpExFJCEufiEhCWPpERBLC0icikhCWPhGRhLD0iYgkhKVPRCQhLH0iIglh6RMRSQhLn4hIQlj6REQSwtInIpIQlj4RkYSw9ImIJISlT0QkISx9IiIJ0bv09+zZg379+sHd3R1BQUFITEyscPnc3FwoFAr4+Pigc+fOCA8Px82bN6sZl4iIqkOv0k9KSkJkZCR8fHywfPlydO7cGVFRUdi3b1+ZywuCgIiICBw5cgSRkZFYuHAhcnJyMGzYMOTl5dXoFSAiIv3V0WehmJgYBAUFQaFQAAB8fX2Rl5eHJUuWoE+fPqWWv3nzJs6fP4/o6GgMGDAAAODs7IyAgAAcPHgQ7733Xs1dAyIi0pvOI/2srCwolUoEBgaKxnv37o309HRkZWWVWufZs2cAACsrK+2YjY0NAODRo0fVyUtERNWgs/TT09MBAE5OTqJxR0dHAEBGRkapddq0aYMuXbpg+fLluHHjBnJzczFv3jw0aNAAAQEBNZGbiIiqQOf0Tn5+PgBAJpOJxjVH8SqVqsz1Zs+ejdGjR6Nv374AAEtLSyxfvhz29vbVCkxERFWns/QFQajwcnPz0k8Wbty4gdDQUDg4OGDGjBmoV68etm7digkTJmDdunXo1KlTpUI2bizTvVANs7OzNvo+y2IqOQDTyWIqOQDTylIVhshvSreJqWQxlRyAHqVvbf0ibEFBgWhcc4SvubykDRs2AADi4uK0c/ne3t748MMP8cUXX+D777+vVMgHD1RQqyt+8KlJdnbWyMnJN9r+TD0HYDpZTCUHYJgsxi4HQ+T/K/99/gw5zM3NKjxQ1jmnr5nLVyqVovHMzEzR5SXdvn0bzs7O2sIHADMzM3Ts2BHXr1/XLzkREdU4naXv6OiIli1bljonf//+/WjVqhWaN29eah0nJyf89ttvePz4sWj80qVLaNGiRTUjExFRVel1nn5ERAQUCgVsbGzQrVs3HDhwAMnJyYiJiQHw4t23SqUSrVu3hkwmw0cffYRdu3Zh5MiRGDNmDOrVq4edO3fi9OnT2nWIiMj49Cr94OBgFBYWIi4uDgkJCbC3t0d0dLT2zJzU1FQoFAps3LgRXbp0QcuWLbFlyxYsWrQICoUCZmZmkMvlWL9+Pbp27WrQK0REROXTq/QBIDQ0FKGhoWVeFhwcjODgYNGYs7MzVq5cWb10RERUo/gpm0REEsLSJyKSEJY+EZGEsPSJiCSEpU9EJCEsfSIiCWHpExFJCEufiEhCWPpERBLC0icikhCWPhGRhLD0iYgkhKVPRCQhLH0iIglh6RMRSQhLn4hIQlj6REQSwtInIpIQlj4RkYSw9ImIJISlT0QkISx9IiIJYekTEUkIS5+ISEJY+kREEsLSJyKSEJY+EZGEsPSJiCRE79Lfs2cP+vXrB3d3dwQFBSExMbHC5dVqNVauXImePXvC3d0d77zzDvbu3VvdvEREVA119FkoKSkJkZGRGD58OHx8fJCSkoKoqCjUq1cPffr0KXOdL774AvHx8ZgyZQratGmDvXv3YurUqZDJZPD396/RK0FERPrRq/RjYmIQFBQEhUIBAPD19UVeXh6WLFlSZukrlUp88803+OyzzzBw4EAAgJeXF27evImjR4+y9ImIaonO0s/KyoJSqcSUKVNE471790ZycjKysrJgb28vuiwlJQX16tXDgAEDROObN2+ufmIiIqoynXP66enpAAAnJyfRuKOjIwAgIyOj1DppaWlwcnLCiRMn0L9/f7Rt2xaBgYFISkqqicxERFRFOks/Pz8fACCTyUTjVlZWAACVSlVqndzcXNy5cwczZszAkCFDsG7dOri6umLy5Mk4efJkTeQmIqIq0Dm9IwhChZebm5d+3CgqKkJubi5WrVqF7t27AwDefvttpKenY9myZXj77bcrFbJxY5nuhWqYnZ210fdZFlPJAZhOFlPJAZhWlqowRH5Tuk1MJYup5AD0KH1r6xdhCwoKROOaI3zN5SVZWVnBwsIC3t7e2jFzc3N07doV27Ztq3TIBw9UUKsrfvCpSXZ21sjJyTfa/kw9B2A6WUwlB2CYLMYuB0Pk/yv/ff4MOczNzSo8UNY5vaOZy1cqlaLxzMxM0eUlOTo6Qq1Wo7i4WDReVFQEMzMz3amJiMggdJa+o6MjWrZsiX379onG9+/fj1atWqF58+al1vH19YUgCEhOTtaOFRcX4+jRo+jYsWMNxCYioqrQ6zz9iIgIKBQK2NjYoFu3bjhw4ACSk5MRExMD4MULt0qlEq1bt4ZMJoOXlxf8/f0xb948PHnyBK1atcK3336LW7duYfHixQa9QkREVD69Sj84OBiFhYWIi4tDQkIC7O3tER0djb59+wIAUlNToVAosHHjRnTp0gUAEBsbiyVLlmDNmjXIy8tD27ZtERcXh3bt2hnu2hARUYXMBF2n55gAvpBb+0wli6nkAAz3Qu7xd9+v0W2Wx3vndr6Q+xfMUe0XcomI6K+DpU9EJCEsfSIiCWHpExFJCEufiEhCWPpERBLC0icikhCWPhGRhLD0iYgkhKVPRCQhLH0iIglh6RMRSQhLn4hIQlj6REQSwtInIpIQlj4RkYSw9ImIJISlT0QkISx9IiIJYekTEUkIS5+ISEJY+kREEsLSJyKSEJY+EZGEsPSJiCSEpU9EJCEsfSIiCWHpExFJCEufiEhC9C79PXv2oF+/fnB3d0dQUBASExP13smdO3fQsWNHrFixoioZiYiohuhV+klJSYiMjISPjw+WL1+Ozp07IyoqCvv27dO5riAImDFjBlQqVbXDEhFR9dTRZ6GYmBgEBQVBoVAAAHx9fZGXl4clS5agT58+Fa777bffIj09vfpJiYio2nQe6WdlZUGpVCIwMFA03rt3b6SnpyMrK6vCdRctWoS5c+dWPykREVWbztLXHKU7OTmJxh0dHQEAGRkZZa6nVqsxffp0BAUFwc/Pr7o5iYioBuic3snPzwcAyGQy0biVlRUAlDtX//XXXyM7OxurVq2qbkY0bizTvVANs7OzNvo+y2IqOQDTyWIqOQDTylIVhshvSreJqWQxlRyAHqUvCEKFl5ubl36ycOPGDXz11VeIjY2FtXX1r+yDByqo1RXnqEl2dtbIyck32v5MPQdgOllMJQdgmCzGLgdD5P8r/33+DDnMzc0qPFDWOb2jKe2CggLRuOYI/+VSf/78ORQKBfr06QNvb28UFxejuLgYwIspH82/iYjI+HSWvmYuX6lUisYzMzNFl2vcuXMHly5dQmJiIlxdXbU/ALB06VLtv4mIyPh0Tu84OjqiZcuW2LdvH3r16qUd379/P1q1aoXmzZuLlm/SpAm2bdtWajsffPABBg8ejPfff78GYhMRUVXodZ5+REQEFAoFbGxs0K1bNxw4cADJycmIiYkBAOTm5kKpVKJ169aQyWRwc3MrcztNmjQp9zIiIjI8vd6RGxwcjDlz5uDYsWOIiIjAmTNnEB0djb59+wIAUlNTERISgitXrhg0LBERVY9eR/oAEBoaitDQ0DIvCw4ORnBwcIXrp6WlVS4ZERHVOH7KJhGRhLD0iYgkhKVPRCQhLH0iIglh6RMRSQhLn4hIQlj6REQSwtInIpIQlj4RkYSw9ImIJISlT0QkISx9IiIJYekTEUkIS5+ISEJY+kREEsLSJyKSEJY+EZGEsPSJiCSEpU9EJCEsfSIiCWHpExFJCEufiEhCWPpERBLC0icikhCWPhGRhLD0iYgkhKVPRCQhLH0iIgnRu/T37NmDfv36wd3dHUFBQUhMTKxw+ZycHMycORPdu3eHh4cHgoODkZycXN28RERUDXX0WSgpKQmRkZEYPnw4fHx8kJKSgqioKNSrVw99+vQptXxhYSFGjx6N/Px8TJgwAU2aNMEPP/yASZMm4fnz5/j73/9e41eEiIh006v0Y2JiEBQUBIVCAQDw9fVFXl4elixZUmbpHzlyBNeuXUNCQgLc3d0BAN7e3rh9+zbWrl3L0iciqiU6p3eysrKgVCoRGBgoGu/duzfS09ORlZVVah0rKyuEhITAzc1NNP76669DqVRWMzIREVWVziP99PR0AICTk5No3NHREQCQkZEBe3t70WVeXl7w8vISjRUVFeHw4cN44403qhWYiIiqTueRfn5+PgBAJpOJxq2srAAAKpVKrx19+eWXuHnzJsaMGVPZjEREVEN0HukLglDh5ebmFT9uCIKAL7/8El9//TVGjRqFgICAyiUE0LixTPdCNczOztro+yyLqeQATCeLqeQATCtLVRgivyndJqaSxVRyAHqUvrX1i7AFBQWicc0RvubyshQWFmL69OnYu3cvRo0ahWnTplUp5IMHKqjVFT/41CQ7O2vk5OQbbX+mngMwnSymkgMwTBZjl4Mh8v+V/z5/hhzm5mYVHijrLH3NXL5SqYSLi4t2PDMzU3T5y1QqFcLDw3H+/HnMmDEDw4cPr1RwIiKqeTrn9B0dHdGyZUvs27dPNL5//360atUKzZs3L7XO8+fPMW7cOFy6dAkxMTEsfCIiE6HXefoRERFQKBSwsbFBt27dcODAASQnJyMmJgYAkJubC6VSidatW0Mmk+G7777D6dOnERISgmbNmuHixYvabZmZmaF9+/YGuTJERFQxvUo/ODgYhYWFiIuLQ0JCAuzt7REdHY2+ffsCAFJTU6FQKLBx40Z06dIFP/zwAwAgPj4e8fHxom1ZWFjg6tWrNXw1iIhIH3qVPgCEhoYiNDS0zMuCg4MRHBys/X3jxo3VT0ZERDWOn7JJRCQhLH0iIglh6RMRSQhLn4hIQlj6REQSwtInIpIQlj4RkYSw9ImIJISlT0QkISx9IiIJYekTEUkIS5+ISEJY+kREEsLSJyKSEJY+EZGEsPSJiCSEpU9EJCEsfSIiCWHpExFJCEufiEhCWPpERBLC0icikhCWPhGRhLD0iYgkhKVPRCQhLH0iIglh6RMRSQhLn4hIQlj6REQSonfp79mzB/369YO7uzuCgoKQmJhY4fIFBQWYM2cOvL294eHhgX/84x+4efNmNeMSEVF16FX6SUlJiIyMhI+PD5YvX47OnTsjKioK+/btK3edyZMnY9++fYiMjER0dDTu3buHYcOGIT8/v8bCExFR5dTRZ6GYmBgEBQVBoVAAAHx9fZGXl4clS5agT58+pZY/e/YsDh8+jLVr18LPzw8A0KlTJ/Ts2RNbtmzBmDFjavAqEBGRvnQe6WdlZUGpVCIwMFA03rt3b6SnpyMrK6vUOsePH4eVlRW8vb21Y7a2tvD09MSRI0dqIDYREVWFziP99PR0AICTk5No3NHREQCQkZEBe3v7Uus4OjrCwsJCNO7g4IDk5ORKhzQ3N6v0OtVVG/ssi6nkAEwni6nkAEwrS1UYIr8p3SamksWYOXTtS2fpa+bgZTKZaNzKygoAoFKpSq2jUqlKLa9Zp6zldWnUyKrS61RX48al89cGU8kBmE4WU8kBGCaL987tNb7N8hgi/1/971MVppID0GN6RxCEijdgXnoTFa1T1vJERGQcOhvY2toawItTMEvSHLFrLi9JJpOVWl6zjbKeARARkXHoLH3NXL5SqRSNZ2Zmii5/eZ2srKxSR/yZmZllLk9ERMahs/QdHR3RsmXLUufk79+/H61atULz5s1LrePj44PHjx/jxIkT2rHc3FycPXsWXbt2rYHYRERUFXqdpx8REQGFQgEbGxt069YNBw4cQHJyMmJiYgC8KHSlUonWrVtDJpPB09MTnTt3xpQpUxAZGYmGDRti6dKlsLa2xuDBgw16hYiIqHxmgq5Xav/fd999h7i4ONy5cwf29vYYM2YMBgwYAAD4/vvvoVAosHHjRnTp0gUAkJeXhwULFiAlJQVqtRodO3bE9OnT8frrrxvsyhARUcX0Ln0iIvrz4/mTREQSwtInIpIQln4Jlf34aEP75Zdf4Orqirt379bK/tVqNbZs2YJ33nkHHh4eCAgIwPz586v0rurqEgQBGzZsQO/eveHu7o7+/ftj9+7dRs/xsvHjx6NXr161su/i4mK4u7vDxcVF9OPh4WH0LGfOnMHgwYPRvn17+Pj4YO7cuWW+V8eQTp06Veq2KPmzY8cOo+bZsmULgoKC0KFDB7zzzjvYtWuXUfdfHr3O3pECzcdHDx8+HD4+PkhJSUFUVBTq1atX5ieJGtqNGzcQHh6O4uJio+9bY926dfjqq68watQoeHl5ISMjA7Gxsbh+/Tr+85//GDXL6tWrERsbi48//hgdOnTAkSNHEBkZCQsLC/Tt29eoWTR27tyJH3/8EQ4ODrWy/4yMDDx79gzR0dFo1aqVdtzY73q/ePEiRowYgR49emDlypXIzMzEv//9b+Tm5mrP8DMGV1dXxMfHi8YEQcA///lPPHnyBP7+/kbLEh8fj9mzZ2PkyJHw9fXF4cOH8cknn6Bu3boICgoyWo4yCSQIgiAEBAQIkyZNEo1NnDhR6NOnj1FzFBUVCZs3bxY8PDyEzp07C3K5XLhz545RMwiCIKjVasHT01OYPXu2aHzv3r2CXC4Xrl69arQshYWFgqenp/DZZ5+JxocMGSIMHjzYaDlKunv3ruDp6Sn4+fkJAQEBtZJh165dQps2bYQnT57Uyv41wsLChLCwMEGtVmvHNm/eLPTs2bPWs23YsEFo06aNcPHiRaPuNyQkRBg6dKho7MMPPxSGDBli1Bxl4fQOqvbx0YZy7tw5LFq0CCNHjkRkZKTR9vuygoIC9O/fH3//+99F45pTbl9+h7YhWVhYYNOmTaW+h6Fu3bp49uyZ0XKUNHPmTHh7e8PLy6tW9g+8mP5zcHBA/fr1ay2D5k2XgwcPhpnZfz/dMSwsDCkpKbWaLScnB0uWLNFOOxnTs2fPtB9KqdGwYUM8evTIqDnKwtKHfh8fbSzOzs5ISUnB+PHjS300tTHJZDLMnDkTHTt2FI2npKQAAFq3bm20LObm5nBxcUHTpk0hCALu37+PNWvW4MSJEwgJCTFaDo2EhARcuXIF//rXv4y+75LS0tJgaWmJUaNGwcPDA56enpg1a5ZRX3P59ddfIQgCbGxsMGnSJHTo0AEdO3bEp59+iqdPnxotR1mWLl0Kc3NzTJo0yej7HjZsGI4ePYrk5GSoVCrs27cPqampePfdd42e5WWc00fVPj7aUF577TWj7auyLl26hDVr1iAgIADOzs61kmH//v2YMGECAKBbt27o37+/Ufd/69YtzJ8/H/Pnz4etra1R9/2ya9euQaVSYeDAgRg7diwuX76MpUuXIiMjAxs3bhQdeRtKbm4uAGD69Ono1asXVq5cibS0NHz11Vd49uwZFixYYPAMZXnw4AESExMxcuRIvPrqq0bff79+/XDy5EnRA857772H0aNHGz3Ly1j6qNrHR0vNuXPnMHbsWLRs2RLz5s2rtRxt27bF5s2bkZaWhiVLlmDMmDH4+uuvjVJwgiBgxowZ8Pf3R+/evQ2+P11iYmJgY2MDFxcXAICnpycaN26MTz75BCdOnBB9c52hFBUVAQDeeustfPrppwAALy8vCIKA6OhoRERElPqSJWNISEiAWq3GsGHDjL5vABg3bhwuXLgAhUKBtm3b4tKlS1ixYoX2GXRtYumjah8fLSVJSUmYPn06WrVqhXXr1qFRo0a1lsXe3h729vbw9PSETCZDVFQULly4gLfeesvg+/7mm2+QlpaG3bt3a8+q0hwwFBcXw8LCwigPPhqdO3cuNdatWzcAL54FGKP0Nc+GNd+FreHj44MFCxYgLS2tVkr/hx9+gK+vb608Gzt//jyOHTuG+fPnIzg4GMCLv9Wrr76KWbNmYdCgQZDL5UbPpcFDWFTt46OlYv369ZgyZQo6dOiAb775Bk2aNDF6hkePHiExMRH37t0Tjbdt2xYA8Pvvvxslxw8//ICHDx/Cx8cHrq6ucHV1RWJiIpRKJVxdXY16HviDBw+QkJBQ6iQDzTy6sR6YNaeKFhYWisY1zwCM+SCoce/ePVy9erXWTo28ffs2AJQ6EOnUqRMA4Pr160bPVBJLH1X7+GgpSEhIwIIFCxAUFIR169bV2jMetVqN6dOnlzoH+/jx4wBgtKOmOXPmYNu2baKf7t27o1mzZtp/G4uZmRlmzZqFzZs3i8aTkpJgYWFR6gV4Q3F2dkaLFi2QlJQkGj906BDq1KlTK28Uu3TpEgAY7TZ4meYg8dy5c6LxixcvAgBatGhh7EginN75f7o+PlpqHjx4gM8//xwtWrRAWFgYrl69KrrcwcHBaE+dbW1t8eGHH2LNmjWoV68e3NzccO7cOaxevRoDBw402ie3lrWfhg0bwtLSEm5ubkbJoGFra4uwsDBs2rQJMpkMnTp1wrlz57Bq1SqEhYVpzzwzNDMzM0RGRmo/Rj04OBiXL1/GypUrMWTIkFqZXvn1119Rv379WitXV1dXBAQE4PPPP0d+fj7efPNNXL58GcuXL4efn5/RTx99GUv//wUHB6OwsBBxcXFISEiAvb09oqOja+3dnrXt6NGj+OOPP3Dr1i2EhYWVunzhwoVGPf1MoVDgb3/7G7Zt24alS5eiWbNmmDBhAkaNGmW0DKYmKioKTZs2xfbt27FmzRo0bdoUEyZMMPoZIn379oWlpSWWL1+O8PBwNG7cGBEREQgPDzdqDo379+/Xyhk7JcXExGDZsmXYsGEDHjx4gBYtWmDkyJGl3mtSG/jRykREEsI5fSIiCWHpExFJCEufiEhCWPpERBLC0icikhCWPhGRhLD0iYgkhKVPRCQhLH0iIgn5P4O0UN4XHDC9AAAAAElFTkSuQmCC", + "image/png": "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", "text/plain": [ "
" ] diff --git a/docs/notebooks/cue_chaining_demo.ipynb b/docs/notebooks/cue_chaining_demo.ipynb index e01e2d68..b00a28f9 100644 --- a/docs/notebooks/cue_chaining_demo.ipynb +++ b/docs/notebooks/cue_chaining_demo.ipynb @@ -118,7 +118,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -698,7 +698,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAF3CAYAAABXMRQwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdd5gb1bnH8e8raat7x9gGG2xserEJEAzYhB6KSeg9oV0CwQmpQJLrBAIpNyGhhAsBAoRQAgk1wA0GTDCBgI2pxjYGDMa9t62Szv3jzIIs7+5od2dXWu3v8zz72JoZnXlndDTzzjlnRuacQ0RERESaFst3ACIiIiKFTgmTiIiISAglTCIiIiIhlDCJiIiIhFDCJCIiIhJCCZOIiIhICCVMIiIiIiHynjCZ2X5m9lczW2xmdWa2ysyeMbOzzSzewbFcZmaPm9kSM3NmNqUF751mZtPaL7qcYphiZge3Q7kt2hchZU0ys8ta+J6xZlZlZkOamL9dMN+Z2chWxnWCmf3NzD42s2ozm2tm15pZj0biX2Zm3VuznoxySszsG2b2kpmtNbNaM/vIzO4ws73aUnYrYslp25t474Rgv0/ogFCbi2GKmUV6PAvKjORBdWbWOyivRZ+tmT1mZjc2M/9/g/1/TyvjGhx81jOCerjCzJ41swOzljMzm2Vm32/NerLK2snM/hTUt1ozW2dmL5rZpWZWHizTUK8Oaev6uprgXOQy/qrNbI6Z/djMyhpZvsLMLjezN4Pj6Doz+5eZnZa13IKsctvytyCr7FPM7IWgDlaZ2dtmdoWZVTQSb0MZ1zQyz8zsw7Z8J5qT14TJzL4FvAT0BX4AHAJ8HZgH3Awc3cEhnQ8MBB7p4PVG5b+ByBOmiE0CWpQwAb8G7nDOLWpi/h+AdW2KCr4LpIArgCPw9e8i4JmsE/GjwBLge61dkZl1A54FfgO8CpwOHAZcDYwI5nWkXLe9UE3A1/1CjrU3PsacE6YgaTkMuLaJ+fsDZwDr2xDXWOBkfL0+ETgHqAGmmdlnx1/nn3D8M+ByM+vb2pWZ2YnALGAX4Cr89p0K/Bv4KXBha8uWzbwF7Bf8fRm4H1///idzITPrBbyA/+4/jD/nnoo/B99jZrdkLH58Rpn74T/Ht7KmNfa3FPi/rGnHZ8RwC3Av8AH+WPhl4CHgcuAFM+vZyPZtAE43M8uafgAwHNgUtoNaxTmXlz/gQCANXN/E/O2B3To4pljwbwJwwJQWvHcaMC1f+zOIwQFXt1O5Oe+LkLLuBD5twfJjg/Xv3MT804BlwLeC5Ua2Mq4BjUw7Kyjz4Kzp3wBWAeWtXNdtQC2wXxPzj+/gepPztjey3IRguQkdGXNWDFOCGBLtUW5EZQ0PYjyvBe95HHiwiXklwDv4k8oC4J5WxtU7e78Fx7+5wL+ypsfxFwvfb+W6RgHV+BPzFp8VMADYP6teHZKvetVZ/4Jz0fRGpt8DLMuadmdwLNq7keUnB5/B2S1ZTyPLNVk/8Qm6AyY3Mm/vILY/ZU13wN34/GFC1rzbgOfb8p1o7i+fV2Q/AFYDjTbxOuc+cM69BU03jZvZnY007VWa2S+D7o264N8rc7lSds6lW7UlTTCz0Wb2cNDMWG1mr5jZEY0st3uw3Cr7vEvk8oz5h5nZk+a7CqvM7B0z+45ldFlm7J8rM5osp2TMPyhoat9gZpvM7P/MbJesOOJmdnXGeqaZ2c45busAM7vFzOYF711oZvdaRjeamd0JnA0MaappthHnAW85595tZJ19gN/iW0jW5hJnU5xzKxqZ/Frwb3ZX4F/xJ5qvtHQ9ZjYYvw/+6Jx7uYlYHs5YfkGw37LL2aKbNKhHj5nZmqAevWRmB4TF1MJtDxU0i387qMd1QX26MftK0cwSZvYDM5ttZjXmu4OeNrMxwfxyM7suqO8bzWyp+S7zMRllTMFfOQPUN9SrjPk5HQ/MbE/z3UI1ZrbIzH4MZF+9NrW9p5jZc0H8G813XZ2dMX848FHw8o8Zdf+cZsrcGjgSf+XdmO/hE5j/aWJ+Tpxza51zyaxpSeANsj5751wKeBD/nWyNb+GTsW9krzMof4Vz7qWsyZVB3VkZ/N1jZr0zFwjq0eXmu51qzQ/v+I0F3XsZy4XWBTPrbmY3mNknQVnLzWxqVp3LaX2NMbOewfYsDt47N/iuWMYyDd2Rx4ZtewutxyfaDevZGt9CeZtz7rVGlr8emA38sA3rDPMD4N1gXZsJYrodODOINdMn+ITtzIYJwf4/AZ9MtYu8JEzmT/QTgX8652oiLDeBb/o7D/g9/oBzG/BjfLdOhwk+4OnA7sAlwEn4k/o/zOzIjOW+ALyMb1H7Nr458rfA0IzitsN303w9mH8X/ur35xnL7Bf8eyefN3veFqzjy8H7N+K/IKcBPYAXzWxYRhlT8E2zf8F3nf0TeCzHTe6Lb8q/HN+t8z38FeVLGQeSq4AngRU00jTbhCOAF5uY9ytgjnPuzznG2FIHBf++lznRObcymLZF8puDifiTRq77NSfmx8b8G/85nA98Fd8KNtXMxraiyEa3PUc/x9fhZ4Bj8J/TOfi6n3nMuT9Y9kl8fTsff4AeHMwvw9fTq/H1/iKgHHjZzLYKlrkNf1AFGM/n9Srn44GZ9QeeA/rjk9mL8Z/t13Pc3u3wXQinB9vxOHCbmf1XMH8JnyfX12bE+I9myjwUnxBtUffNj9P7ET7xqM8xxpyZWWkQX2Of/b+AUWa2XSuKPhR4zTm3pAXv+T2+ReE0fJfdV4Npme7B74978fXkWuBc/HEMaNG54Tr8sfqnQbwX4pPHzEQldH2NCer+P4Cv4bvjjwGexn9Xft7IW3LZ9ubWlwj+eprvXj0deCBjkQn4Otboscj5JpvHgTHmL/QiFZwjxwCPB+tqzGNBjAc1Mu9u4ISM88skfEL4UNSxfiZPTYaD8BXh2hyXn0IjTeP45GBBxuszg3IPzFruSqAOGJjj+trcJYe/8kuS0UWE/+DnAq9nTPsXsBCozHE9FsR3JbCGoBvRfd5UuUWXHDAfeDZrWk9gJfC74HUffEL1v1nL/aCl+yJjW4cF7z0+Y/qd5Ngll1FPzm9k3gH45tqdgtfn0IYuuUbKHwIsB55pYv6fgXmtKLdhf47OcfkFwJ2NTN/sM8EnxO8BpVmfwXvAI1Fue9ayE8joksMnbLXZMeMTdQccG7w+OHh9aQvrVCV+/MK3M6ZPoZEuOXI8HuBPVnXAsIxlugXfD9fCfRcLvp9/BN7MmD6cFnTJ4ceRLWpi3jNkdDcQcfcDcA2+u+OARuZtH2zHaa0otxq4L8dlG+rVXVnTb8RfmFnw+oBgubOyljs9mL5HC+vCO8Bvm4krp/U18d6jg2XOyZre0EXfvyXb3sx6pgXvz/57jIxhBORwLAL+K1jmC02sp9VdcsA+QdkXNvPeMcEy38+Y5vAXUd3xY5VOCaY/CfylPb4TDX+FPEiyNY4APgb+nZFdJ/AtJSXAvh0Yy4HAK865+Q0TnG/Svg/YI8j6K4H98R9yVVMFmb+T5RYz+xj/5a7HV5je+EHqTTKzUfiD3F+y9kkVvmWr4W6YXfEnib9mFXF/rhtsZheZv9NiIz5Z/CSYNTrXMrI0NMNu1mUUXAHfAlznnJvdyrKbZP4OuEfx2/C1JhZbkRFfXpm/k+QgfHdJOuMzNmAqn3/GuZSVy7Y3Z1+gFH8Vnun+oMyGK8XD8Ae+P4bEc5KZ/cfM1gbv34Q/UOZSp3I9HuyH/64ubHijc24T/uo6lJmNMrP7zGwR/rtZj2/JaG29B1+3tugqNbMz8GM7vtOGsptk/s6oHwJXOecaa9ltiKmj6n52K9zb+JbHQcHrI/DHxIca+Yzh87qfa114DTjH/B1a42zLO7VzXV9jGsbtZnez3oP/zuyXNT1s25vzJr6e7I1veb0I+ALwYGb3X2fmnNuIHw93ZtDifBjt2B0H/kooH1bhrza2jbjcgUGZTTVT94t4fc3pi7+LINtS/ImsD/4EEAM+baqQoBn3MfwBagowB7/vJuGvjsL6zRsSqtv5vOsiU0NS09DkuixrfvbrpuL8Jr4f+rf47rg1+G17JYcYm9Lwvtqs6d/C77/rM/r0K4N/e5hZD+fchtasMEg+Hsd3sxzknGvqs6mmddvVcFLeFt/aGIW++NaXHwd/WzCzmAsZo9eCbQ+LBXw31Gecc0kzW5Uxvx+w2jlX3Uw8x+C7EO7Cd0msxJ9wniS3fZ/r8WAwvmUhW2jdDxLMZ/AXID/E3+lThz9B5dql15hysup9sK7fAr8EajPqfgwoCV5vcq3spgv2953A7c65/25isYbPa4vbvXOwkJYf81dnvW7YJw2f/0B8stHUXVH9MpbLpS58E3+M/jq+5XG1md0NXBlc1Oa6vsb0xdf5uqzpSzPmZwrb9uZsdM7NyHj9UvD9+ys+6XuKz887w2n6WDQ8+HdhE/PbInP9TQlb/934xPLb+FbxqVEE1pS8JEzBwXMacKiZlTnnsk+I2WrAtyxkVbbsyrkKP7jypCbKWdCKcFtrNbBVI9O3wl9Zr8EnTGmaH1i7PTAOONM599lVe3Bwy8Wq4N/LabwyNezPhhPcIPwgPDJe5+IUfLffZ1e+ZjYix/c2pSH2PlnTd8Lvx8YeM/A6/upqj5auzMwa+r/HAYc6595uZvG+GfG1xDT8LfzH8PlVaXNq8AfozDiz6/1afD26iSausHJIllqy7c1pOMhvRUY9Cq7C+2XMXwn0NbOKZpKmU4D5zrlzsuLM9bb2XI8HS2i8nudS9/fDn4gPcM5Nz4izrcfWVfhHTGTqj7+T7JrgL9Mw/HYeTysei2JmX8K3UD5M87f2N+z7lS1dB/74c56ZbeWcWxq6dG5W4b8jTd3csDhjudC6ELRaXI5/fMK2+EHEv8AfJ3/QgvU1ZjW+zmefx7bKmN+eGr6Pu+ETpmn448ax+PFdmwlaoo7BjxNtybiznDjnFpnZ3GAdlzex2LH44+ULTcyfik+UvovvSk1FHWemfHbJ/QJ/AP1VYzPNbISZ7Ra8/Dj4d5eM+b2BL2a97Wn8gWOjc25GI3+t+ZK31gvAvubvkAE+G+x+MjDLObc+uGKZDpxhjTygK9DQcvLZlVFw0ji9kWXr2PLKby7+YLBzE/vkrWC5t/BXTdkHlFOa38zN4sy+emusS6e2kRibsgB/cMoeYPoL/ODpzL9fBvPOoBV38QQteX/Bj62Z5Jx7JeQtI2hFC5FzbjH+Kv4CM8tugm+IZVLGy4/JqPeBL2eVuQk/OHh3/Pi4LT7n5mJqxbY35xV8PcyuNyfjL9CmBa//iW9pbe6zqsRfVGQ6E9+alqnhgiu7XuV6PHgZ/1397AYI88/KyuWipLHvZx/guBxjbMocYFhW4rWULev9RHxL2NTg/9NpoaAePoofB3dGSHLdkMS1pnX0OvzJ7w+NdHVhZv3NP1uqJZ7Gt7j0auIzXpyxXIvODc65j51zv8F3he3SwvU15gX8OffErOmn478zjd41G6GG8+kK8AkLvnvwPDPbu5HlL8VfnDZ6jo7Ir4GdzezS7BlBTOfih6w0ul+DunoVvmX8jnaM87MV5u0P37WSxjdpn47P2o/F3wmwCTguWK43/ip6Jn7g3FeB/+BPJgsyyivBV8pF+Icjfgl/N8Ql+AN0swOr8VfXJ+CTBodvvjwh+At77zQ2H/TdMAbhffxdDkfjuxJSwBEZy+2Nb85/A38ymIivJDcE80vxicP8II7jgnXND2IcnlHWLPyB9tBgW7YOph+FP6A/EOy7g4Jt/B1wWcb7rwo+j18HZVyB72IIHfSNv1MkHbznEPwV8Lzs9/L5sz0uCrZ91xz262M51KVzaGTQd8b0CSHvv5nPBxPum/U3NGtZw18NXt1IrAtyiLU7frB/Fb6L5Sj8+IZz8N+FNRnLfi2I6zp8fb4Mn9xm79e98IP2n8EnKwcFn/XPgV9Ete2NvHdC9v4NPnsX1K/Dgs98Az6py7xJ4aGgXv4K301wTFD3JgTzL8za9h/gm/HXkDGoHP+dcPgu632AcS05HuBbbtbgB8ifjO/ufgnfDeBCtn8A/qGpM/CJ7EnB5zM/8734E+XKoNyD8N/Pfjns171yqE8LaHxQ7QJCng2HH1S7Olh2Qvbn38jyk/En98pGYj0nh1hPxCePr+GPcwcGn8k1+NabyVllHpL1/nPY8rh3b/D5/Rg4HH/sOh/fWrZDC+vCy/jWjqP5/IGoKTKeE5TL+prY9hj+O7ABf+47FF+3HXBNI/szdNubWM80fCt7w+d4YLCdy/Dfn94Zy/bGn1c3BNs6kc/vIEzjHznQ3Hra9BymYP7twbpuxx8LJwI/wT8GYWZmvMHyjpDnDYats7V/kRbWqgB8K9GD+GbxevyX95/4loLMg+t4/JesCn8iPoOsu+SC5cr5fKxPbVDea8G0Zh9sF5TX2N0FuVbSaVnTRuObx9fhW0peISNZylhuT3yGvBY/RmAO8IOM+Xvgrxyrggr/M/yVefaBY/+ggtWw5Ql1P+AJ/Be9JqhQ95Px8ET8lfvV+CvZ6mCbdsouq4ntr8CfeFcEX74n8Fej2XF0ww98XxPMWxBS7kX4RKBbyHLn0HjCdHEwfcccvmBNffZTspbdP5i+S9b01/CDh3Op9yVBbP/GHxjq8F0Gt5HxwFb8QfYn+IuDKnzT+fZNxLVj8Jkux9f9T/Hj346Katsbee8EtkyYDD+mYG6wXUvw3YU9s97bcLfnvGC5FfiLitEZ2341vpujCn/C25OsOweDentTsN1pNk9Ucjoe4BPOF/HfjUX4k+FPM8tqZh8cjL9YqcZfYFxKI3f24hOx2fjjXLMJRrBNi4D/zmH9C2g8YVoB3J/j96bRv0aWfwZ4KGval4Pltzi2NbHOnfHH2k+Cz31dsO+/AZRl1atcEqYYPpF7M/j81gX//xW+JSjnuoBvqZ4VlLEJ37p0aVYMOa2viW3vib/bbUmw7fPw3xXLWCbnbW9iHdOyPse6oF7eQiMXQPhW0iuCba3GH7+n41sbw9bT5oQpWOY0/EXk+iCGd/CPbtiioYI8JkwNt2aKFCTzDzv8FP/MmRb/NpCZ3Yu/QjkqwphuxidLB2RM64ZPeE93zmXfaSjSYuYfynk6vtWiRQdqM9sBn7Du45x7NaJ4tsa3uh3mnHs2Y/o1+J6BXVsap0hnktMYJjM7wvwTSeebWXs+9VNkM8659firvu+38nbYA/GtFJEIbl89G98ykumL+G6Y9ntomnQ11+G7TL7aivcehH+OViTJUuB7wAuZyVLGuq5RsiTFLrSFKRicNw/f3/opvgnzVNcOz78RaUwwIP57+P705gZVdkQs+wJ7Ouduzmcc0jWY/ymlvs65pn4ipaPiMPzPWD3mnGvN099FOr1cEqb98OMYDg9eXw7gnGv0F7RFREREik0uXXJD2PyhUZ/Sih/kFBEREemsIntwpZldAFwQvGzNj32KiIiI5MNK59yA5hbIJWFahH/gV4OhNPKEZefcrcCtAGamwX8iIiLSWXwctkAuCdNrwKjgZy4W4R+Kd1ouaz/ktGYfMCwZpt47brPX2nctk73/Jl/fqp+S67J+f2mPzV6r/uVO39220f5rG+2/tsnef80JTZic/923S/APzIsDdzjn3g15m4iIiEjRyGkMk3PuSfwTeEVERES6nHz++K6IiIhIp6CESURERCSEEiYRERGREEqYREREREIoYRIREREJoYRJREREJIQSJhEREZEQSphEREREQihhEhEREQmhhElEREQkhBImERERkRBKmERERERCKGESERERCaGESURERCSEEiYRERGREEqYREREREIk8h1Ae6vdtJRVn0xl3bIZVK/7kHSqjliinG59RtNr0Dj6bXMoJeW98x2miIiIFLCiTZiqNyzko1evZf2KNwBw6brN5tdu/JS1i19iwevX0XfoBIaP/Q6lFf3yEaqIiIgUuKJMmJbMvZ9P3riBdLoeXLrJ5dKpGgBWL3yetYtfYuR+P6XvsAkdFKWIiIh0FkU3hunjN27gkzduJJ2qbTZZyuRcPankJt7/95Usm/9IO0coIiIinU1RJUzLP3ycpXMf+KzlqKXSqVoWzPw165e/HnFkIiIi0pkVTcJUW7Wcj2b8qtXJUoN0qpZ50y8nlayOKDIRERHp7IomYVr41s2kU3XhC+YgWb+RpfP+GklZ0vW88uQ13HL5tk3O/8/Tv+TvNx7Dzd/bmt9f2oP1qz7uwOhERKQ1iiJhStZvZOXH/wSXiqQ8l6plyZx7cTmOgRJpiXdeuoN0OsnQUQfkOxQREclRUdwlt37pDGKWIEVtZGWmklVUr/uQyt4jIytTBODrP30Pi8X48J2n+PCdJ/MdjoiI5KAoWpg2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", + "image/png": "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U7e+e2LRslDLjMYq6NJrVKhlioiISGEqjoSp354YFmqZqWQdXXrvGmqZIiIiUpiKImGq7LkLpZX9QizR6LHd/pSU9QixTBERESlURfEcJjNj8B4X8fF/r27zV6MARKJlDB59fgiRSWeVStTz4exHvzB90PCDWb9yPjVVa1m9ZDYAi+Y8S0XXvvTebhR9BqobWEQkHxVFwgTQd8cvs+rDh9iy9t02PfHbIqX0HTqJbn33CDE66Wzq4lt46u/nfGH6/1z6FK8/fQ3LFs7YNu2FB74LwAGTLqfPwCs6LEYREcle0SRMZsYuB1/DO0+fSSK+EXCtKCRGWZeBDN33e2GHJ53IgcdcwYHHNJ34nDzi6Q6MRkREwlAUY5galFb2Y4+j/k5JeW8sUtqi10ai5VR0G8LoI28jWlLZThGKiIhIISqqhAmgvNtg9j7uIfoMOZxItBwsYBMtRiRaxna7nMKeR/9Tz14SERGRLyiaLrl0sdKujDj4aqrWz2P53LtZv+R5LBKlIhnHAfFYBS6VBDP6DTuOgSPPoKL7DrkOW0RERPJUUSZMDbr2HsUuB1+NSyWp2fIpp7z8Q+pw3LfXJVT2Gk5Zl0GYhfv8JhERESk+RZ0wNbBIlMoew5jgf4XKs0PG5zYgERERKShFN4ZJREREJGxKmEREREQCKGESERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCKGESERERCaCESURERCRAYMJkZreb2Woze78jAhIRERHJN9m0MN0BTGrnOERERETyVixoAefcS2Y2tANiERGRTmby/IuYPGbMZxPmX5S7YApU5v67duTNuQumiJlzLnghL2H6l3NudFaFmgUXmgMv+L8n5DQKERFp8ET6yV5CcfysWbkOoRDNcs6NbW6BwBambJnZhcCFYZUnIiIiki9CS5icc7cAt0D+tjCJiIiItEZoCVNjJp45sz2Lb7Fe07wGsIkTb8lxJI2bNvWz1sB823eFQPuvbdL33+TrtuQwksJz7WXdtv2tutdCGrMUOtXBlkk/9jUnm8cK3AO8Bow0s6Vmdn4bYxMREREpKNncJXdGRwQiIiIikq/0pG8RERGRAEqYRERERAIoYRIREREJoIRJRERE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jRxJ12HDsGg01+GJiIhInivqhGnD7Nks/NvfWPXCC0RLS7GaGhzAFVfgnMMlkww6/nh2Pv98uo0YketwRUREJE8VZcJUt3Ej7155JatfeolkbS04R6K+/rMFtm7d9ueSRx5h2b/+xQ6nnspuP/wh0fLyHEQsIiIi+azoxjBVffIJLxx1FKteeIFkTQ041/wLkklStbV8ev/9vHjcccTXreuYQEVERKRgFFXCVLN8OTNOOYW6DRtI1dW16LWp2lqqly5lximnkKiqaqcIRUREpBAVTcLknGPW5MkktmwJblVqqoxEgtpVq3jvl78MOToREREpZEWTMC199FE2z5uHSybbVE4qHmfF00+zftaskCITERGRQlcUCZNzjgXXX++NWQpBsraWBTfeGEpZIiIiUviKImHa9MEHxNeuDa9A51j3+uvUbdgQXpkiIiJSsIoiYdowe3abu+IyRcrK2Pjee6GWKSIiIoWpOBKmt94iFY+HWmaypobNc+eGWqaIiIgUpqJImNqj68wlEsTXrw+9XBERESk8RZEwWUlJu5QbLS1tl3JFRESksBRFwtR91CiIhLsp0cpKuuy0U6hlioiISGEqioSp1157EausDL3cnrvvHnqZIiIiUniKImHqe9BBpBKJUMss6dqVrsOHh1qmiIiIFKaiSJhiXbow+MQTsVgslPIi5eXsdP75WMjdfCIiIlKYiiYjGDl5MpGQBmmX9OjBjmeeGUpZIiIiUviKJmEq79+fPa+6imhFRZvKiZSXM/a664i1sRwREREpHkWTMAEMPvFEdvrmN1udNEXKy9nz6qvpPWZMyJGJiIhIISuqhAlg1OTJ7H7llUTLy7FoNKvXWEkJsW7dGHv99Qw56aT2DVBEREQKTtElTAA7nn464595hn6HHkqktJRIeXmjy0UrKoiUlTHouOM44vnnGTBhQgdHKiIiIoUgnNvK8lDl4MEc8Le/Ubt6NSueeYZ1b7xB9QsvkHQOhgyh5x570Gf//Rk4aRIl3bvnOlwRERHJY0WbMDUo79+fYeeey7Bzz2Wgf+fbiqlTcxyViIiIFJKi7JITERERCZMSJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCKGESERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQkQ64iV/OO0uR2xmkBfm18N5E88IiIiUhgCW5jMrNzM3jCzd8zsAzP7RUcEJiIiIpIvsmlhigOHO+eqzKwEmGFmTzvnXm/n2EREpMhN22UsTEn7n7E5i6VgTfnsz2mMZeKCmTkLpZgFJkzOOQdU+f+W+D+uPYOSz0ybqoNHa2i/tY32X+tp37XQlFwHUHxUB9tHVoO+zSxqZm8Dq4FnnXP/bWSZC81sppnNrE5sCjlMERERkdzJKmFyziWdc3sDg4H9zWx0I8vc4pwb65wbWxnrEXKYIiIiIrnTorvknHMbzewFYBLwfvuEJOkmnqm+6GylN0Nrv7Vc+v6bfN2WHEZSeK69rNu2v1X3WkZjlsKnOtgy2XZhZnOXXD8z6+n/XQEcCcxrS3AiIiIihSSbFqaBwJ1mFsVLsO53zv2ruResqF7IlFnH512We9KSUgBmjByY40gapxYSERGR/JTNXXLvAvt0QCwiIiIieUlfjSIiIiISQAmTiIiISAAlTCIiIiIBlDCJiIiIBFDCJCIiIhJACZOIiIhIACVMIiIiIgGUMImIiIgEUMIkIiIiEkAJk4iIiEgAJUwiIiIiAZQwiYiIiARQwiQiIiISQAmTiIiISAAlTCIiIiIBYrkOoKOYS0GyDlyKHtWr2VTRD8xyHVbBKEnG6RtfQ4QUm0p6UlXSPdchiYi0u66lXRnQZQBmxsqqlVTVVeU6JMmRok6Yyuq3su8nT/OlhQ/Tf/MiLFUPZlz+xFdwGMt7jeCVXU7jnSGHk4yW5jrcvDOgZjknLr2PQ1Y/T9/4auojpTiMklQd1bGuvNNzXx7e4Uw+6LGXkk8RKRqj+49m8gGTOXr40fTr0o94Ig5AWayMNVvX8MzCZ/jzf//M+6vfz3Gk0pGKM2Fyji99+CDHz74WMMqSNZ+bV5r0Kv+wte8xcONHfHXmb7n3gJ/z/pDxOQk331Qmqvj2/P9jwur/ePvL1QMQS9uPPeo3Mm7NC+y37jWWVw7mV6N/zZIuQ3MUsYhI223XdTvuOPEODtnxEEoiJZRESwAoTbugHtR9EOfudS5njD6DGUtm8LVHv8bKqpW5Clk6UNGNYSqr38rF0y7k+NnXUZas/Xyy1IjyRDWVdVs469WfcNYrPyGSSnRQpPlpaNVC7nj1K4xf9SylqbptyVJjIjgqUjUMrVrIX944i6OWP96BkYqIhOfwYYcz/5L5TBg2gcqSym3JUmNKoiVUllYyfuh45l8ynyOGHdGBkUquFFXCVJKo5eJpF7LDug8CE6VMZcla9lg6nfNe/qE33qkT2qHqY/4883x61G+gzMWzfl0UR3kqzqXzf8ekZY+0Y4QiIuE7fNjhPH7643Qv6/651qQgpdFSupd157HTH+PwYYe3Y4SSD4oqYfrKzN/Tf/MiSlJ1rXp9abKWESvf4NB5U0OOLP+VJONc885lVCSrW10pylO1XLzg/xi25cNQYxMRaS/9u/Tn4VMfpktpl1aX0aW0C4+c9gj9u/QPMTLJN0WTMA1bPZt9Fz+zbXxSa5Ulazn63Zvos2VpSJEVhvM+/is96jYSwbWpnNJUHT99/8edtpVORArLbSfcRnmsvM3llEXLuP2E20OISPJV0SRMx7xzY5uTpQbRVIIJc+8MpaxCUJHYyglL76c8VdvmsiI4+sTXMHbdayFEJp3R609dw82X79jovK2bV/HELadx28935Ybv9eVvPxnOk7efw4bVCzs4SikGI3qP4PBhh1MWK2tzWWWxMiYMm8CI3iNCiEzyUVEkTL2qlrPD+jmhlRd1ScZ+8jQlibYnEIXg8JXP4AjvsQCVyWpO/fSu0MoTaZCoq6assicHHfMTTvrWIxz6ld+wYfWHPHzDccSrN+Y6PCkwl+x/CbFIeDeLxyIxLj3g0tDKk/xSFI8V2Hn1W6QsGmqZyUiUQRvmsajf3qGWm48OWvsSFSG0LqXbddN7mEvhrChycskTPfoO46izb/7ctP5D9uauq/dhyYcvMnyvE3MUmRSio4cf3aJB3kFKo6UcPfzo0MqT/FIUZ7Oha9+hLNGyu+KCxJL1DFk/L9Qy89WILeFvZ4oo29d0rnFgkhsVXXoDkEw0/QgMkUwlkRJ27Nl4129b7NBjh1CTMMkfRdHC1Gtr+A8NK0nVcdKcf3DikudDL7spG9L+7jXtwg5bb0/WE2KPHABJi9Irvo5llTuEW7AI4FIpUi7J1k0reO1fV9Gt9w4M2/3LuQ5LCkivil4kUonQk5tEKkGv8l6s2roq1HIl94oiYWo3+raPNnH6uhRpJ88/8F3ef8W7I6lHn2F85duPUVreLcdRSSFxzmHtdJB3bbzbWPJTUSRMa7sNIbXi9TbfEp+uLlrG47udx6u7nBJamUGmTR277e+JE2/psPVOnXEM/eKrQy0z5hKsK+sXapkiDfY78n/Z/cBz2bJ+CW89fy2P/uUkTv3e83TprufgSHbW16wnGgl37Ct4A7/X16wPvVzJvaIYw7S4zx7UxSpCLTNpMZb23jXUMvPVgm7hb6cDVpZvH3q5IgDdew9hux3HMGKfkzjp248Rr9nEuy933EWGFL6kS/LRho9CL/fjDR+T6ORfsVWsiiJhWjhgLNGQK6jhWNZrl1DLzFcz+k+gOhpewpnCeKfXGFCXnHSAsoru9Og7jE3rFuU6FCkwj857lNoQHx9Tm6jlsXmPhVae5JeiSJg2V/Zj4YAxhPVs6UQkxus7n0Syk9zp8FL/iaH25NdGy3lgx3NDLFGkaTVVa9mw+kN69An/jicpbje9eRPOhTeUwznHjW/eGFp5kl+KYgwTwFN7XczOq98K5WnfyUgJ03c9J4SoCkNdtJx7dvw6Zyy6vc3PY0oQYUnlUN7tuW9I0UlnlErU8+HsR78wfdPaj9mycRmDdj6Yym792LRuEbOn30g0VsroL32j4wOVgrZk8xIenPMgJ+92MhUlbWtlr6mv4aG5D7Fk85KQopN8UzQJ07Leo3h5l9M5ZMF9lCZbf9KPR8t5ZMwP2FzZuQYs37fjuRy+6hkGb11ErA1tdYlIKVfv8Wt1x0mb1MW38NTfv3jR8pWLH2fx/Of58K2HqItX0bXnIAYPH8f+k35Mt16DchCpFLpLnr6EScMntTlh2lq/lYufujikqCQfFU3CBPD0Xt9i8Ia5DFvzbquSpni0nFnDjuaNnY5vh+jyWyoS44q9r+PGN86hW/2mViVNtZEyrhn9K1ZWDG6HCKWzOPCYKzjwmCuanL/DyAkdGI0Uu83xzUz65ySmf2063cpa92iKLfEtfPnuL7M5vjnk6CSfFMUYpgapSIxbD7uW9wcdSjzasm+frouWMWOXU3lwvys6bevImvLtuHj/f7CyYhC1kez3X73FqI5WctUev+W1foe1Y4QiIuF7a8VbHHbHYayqWkVNffbfGlFTX8PqrasZf+d43lrxVvsFKHmhqBImgGS0hLvHXcPdB/+KqrKe1MYqm1w2hRGPVbCuyyBuOvwmntznsk6bLDVYU74d3zzwAR7c4UzikTJqmkmc6i1GPFLG7F77cd5BD/NG33EdGKmISHhmr5zN8OuHM/W9qdQmaptNnGrqa6ipr+Ge9+9h5+t2VrLUSRRVl1y6DwYfxpTtD2bX5TM4cOGjDFk/h67xjaSIECHFpop+LOq7J6+O+B8+6q9b4NMlIzHu3PnbPLDjuRy1/AnGr36WYVULqUhUA95dhMsqhzCz94E8MfhUllcOyXHEIiJtV1VXxTef+CZXPn8lF465kBNHnsiu/Xal3ErAQZwEc9bM4fEFj3PzzJv19SedTNEmTOB10X0weDwfDB4PQDRZTyxVR320jFSkqDc9FNWxrjy6wxk8usMZ4Bx/eO4CDMf3J/wNZ0XXOCkiAsCqrau46qWruOqlqwB48Z4KMOOw06tzHJnkUqfKGpLREpLRklyHUZjMcP6XzyhZEpHOJFWb/bgmKV4684mIiIgEUMIkIiIiEkAJk4iIiEgAJUwiIiIiAZQwiYiIiARQwiQiIiISQAmTiIiISAAlTCIiIiIBlDCJiIiIBFDCJCIiIhJACZOIiIhIACVMIiIiIgGUMImIiIgEUMIkIiIiEkAJk4iIiEgAJUwiIiIiAWLZLmhmUWAmsMw5d1z7hSSSvXHzV3z295gnPpuRNl2y87n9d+d0ADZ8bXxOYhERyTctaWGaDMxtr0BERERE8lVWCZOZDQaOBW5t33BERERE8o8554IXMnsQ+DXQDfjfoC45MwsuVArOC/7vCTmN4vOmpHcjSeimzDo+1yFIsZuS6wCCvfB37/eEr+c2jqxNyXUABWmWc25scwsEtjCZ2XHAaufcrIDlLjSzmWY2s4VBioiIiOS1bLrkDgZOMLNFwL3A4WZ2d+ZCzrlbnHNjgzI0ERERkUITeJecc+5y4HIAMxuP1yV3djaFTzxTjU0tMW3qZ7lmPu67XtMuBGDixFtyHEka3Q3XrvKxHuajfP/s5rNp6Bo7bKqDLZP++W1O1o8VEBERCdvEBTPzPuHsVeNfLC7Io4vFNPm+/4pFixIm59x0YHq7RCLSDvQcoeb18p+3JCIizdOTvkVEREQCKGESERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCKGESERERCaCESURERCSAEiYRERGRALFcByD5K0KSsbzGOHue3XmXQRM+BYOpdgwL2JU33MFM5yiq6ZrrUPNSGVvYJ/Ygu0X/w5DIbCpsE44Im90APkkeyLvJE5ibPBJHNNeh5qUBPZczcd8n2WfnN9mx/8eUlcSpT5awbO0Q3vlkDM/NPoZFq4bnOsw85dh9l4847MBZ7DFqIdv1XU8kkqI2XsZHiwcx671dee6VA9i4uVuuA81LJbEU4/bbxIH7bGbU8GoGVF4AwF01c5n7YSWvz+7OjDd7UJ9Qm0NnooRJGuE4gqe4yP5MGXEqrdqbXOL96sdq+rGaffkv3+IPPMVXuN1dQpzy3IWcR0qo5tiSX/Clkr/jMMoa9p+vwjYzIPIhe8ceod6V83j91byZOBOw3AScZwb0XM73vno1uw99GzNHaax+27wKaui+wwfsMmguJx10H0vXDOUPD/+UhctH5TDi/DJmjzlc9vV76dVjM2Wl9UQibtu8yoo4vXtuZs9RC/nGqY/zyqy9uOGO09hcpYsegIg5Tjl2NWectBoDKitS/pxSAAZ2q2Ng/zoO3Hczk89fyj2P9ueBJ/uTcvrsdgZKmORzurCFn9mP2JV3qbDaZpdtmH+Me4RD7Tl+4v7ER3TuE9egyLtcUHYylbaRUqtpdtlyq6Lcqji59HvsF72Hv8fvpoaeHRNonvrymMe4+ITfUxKtJxZNNrlcNJoiGo2z08D5/Omi83nw5bO5c9r/ozMnnbFogu+cP5XDDnyL8rK6ZpctK/OS0IPHvsN+e87hV9efz8z3duuIMPNWvz51XP2/nzCwfx0V5alml21IpM76ymqOGLeRn/zfMFavLe2IMCWH1J4o23RhC9fbeYxmdmCylK7c4vS1NfzJLmAk77djhPltSGQWl5UfRc/IisBkKV2ZVTMs+hrfqZhABRvbL8A89z/j7uaSE35PRWlts8lSukgEykvj/M8h/+S7X7kacIGvKUaxaIJrfngDhx04KzBZSldakqBrlxp+/t2bOXjs2+0XYJ4b0LeOv1y9gB0G1QYmS+kqylMM2b6WG69awIC+2e93KUxKmMTnmGL/ywCWU2r1wYs3osJq+I1dQg82hBxb/uvCGr5VfiJltrVVry+xOnrbp5xffjqd8aQ/dpdXOe/Iv1Jemn2inq6itJYJe/+bk750T8iRFYZvnfMAu474hPKy1n12y8vq+fG3/87QwctDjiz/lcRS/P7Kj+jWJUmsFcMJY1Ho1iXJ76/8iJJY9smWFB4lTALAUTzBSOa0OllqUEqc/7VfhBRV4Tij7GJKyL5VqTElVseQyGwOiP0jpKgKQ2VZFT8+9aetTpYaVJTWcv6X/8LA3ktDiqwwjB65kKMOfb3VyVKD0pIEP7nsViKR7Fr3isXXTl5Jrx71RNtw70U0Cr161HPeKSvDC0zyjhImIUKCi+zPVLSgG6kppVbP3sxkZ+aFEFlhGBR5l12i0ymxtjfJl1k1J5ReSYRE2wMrECcddB/lJW2vewCxaB1fP+ovoZRVKC4+9/42J0sAkYijX+8NjBv7TghRFYbuXROc9OW1lJe1vVW3vMxx4lFr6d6183x2OxslTMJBvEwsxBN0jDpOsbtDKy/fjY9dT5Twxi9ESTA6+mRo5eWziCX56rh7KCsNZ//Foim+tNt0ulVsCqW8fDd0yDIGD1wVWnmVFXFOO+HfoZWX7yaNX4cLsQfcOTjm8HXhFSh5RQmTcKg9+9mjA0IQsxQHMCO08vLd7rGniVp43RjlVsXesUdCKy+fDR3wESWxcAfLJpIl7LPzm6GWma8O3Oc9otFwx83sNGQZlRXhtPjlu8O/tDGU1qUG5WWO8QduDK08yS9KmIRd2+HOtlLq6MOa0MvNN91tBSW0bexNY3aMdI4T/ohBcwl7kHt5aTWjhrwXapn5as9RH1ISC3fMUW1dKcN3XBJqmfnIzDFkYDz0cocMjBOxznfjRmeg5zAJvVkbepnRRIKrZk+memP7PhCvR3XzrROJ63q26/rLB20mcmqCsJ/Z2Su1hEuuOzrcQhsRW7mx2fknLWnfZ8tsN3wZlWXhtmZEI44vR59gl2lzQy23Oen3hfaadmGHrXfUVVHCfvZURaqGyav/wIZpHXfSz8X+i/YpJ5b6GmGfBh3QvVuCjZtLQi1Xck8tTEKkHW5jdxjWGa6y2mkbrbM8f7G9vhUm2gnqHrTP/jOwTvBtPRaJtMsTPJzzng8mxUctTEI1lfQg3EGydbEyfjPmahazc6jlZho3f0Wz8zd8bXy7rn+AzeO7ZROIUhVqudWRntxw2dOhltmYXndOb3b+jJED23X9J/e7m68nbvzc15+E4b+lh/C7ib8MtczmTJs6dtvfEyfe0mHrvSHxG0byaahl1lgFt+5wLq9O3DvUcpuTi/1XWpLisZL3Qm81iEUdW6s7QcbZCSkPFj5ml9DLLKGeJewYern5Zo0bTizEO+QaLEvuEXqZ+Wjh8pHU1ZeFWmZtXTkfLN4r1DLz1fsLdiaVCrc5MhZN8uGiHUItMx/V1UdYtzH8brP1m0qI1+nUWoz0rgpvuoOodeGetD5mOKlO0ICZIsayVLjJTZ0rZ15qYqhl5qsFy3YN/S45gPcX7R16mfnonTkjqakN97MbrytlzbpeoZaZr97+oCuJEMfMJ5Pwzpwu4RUoeUUJk/Asx4U6jqnaVfKgOzu08vLd9PpLqXXhDW43HG/Ud479Vx3vymtzDyUZYivJ8nWDWby6fbuC88Ub7+weagtTPB7j0X+Pp7N8ifGj/+lLIhHettbVG4880y+08iS/KGESNtKbF5lI3IVzR1QtFczg8FDKKgTvJo8n7sK5qqx3ZbyTOJEqOs9B954XvkEiEU7dq4mXc9e0i0IpqxAkk1Hu/9eR1NSGs/9SLsK/njsklLIKwcJFlSxaWk4yhFamZBI+XVbOh4sq216Y5CUlTALAje4HxKloczm1roxfuV+RoPPcUpuklLvid1Dn2r7/6qjkobo/hBBV4fh45S489vop1Na1rWupPhHj3U/25ZU548MJrEDc/+SRrFnXq80tTTW1pdz0j5PZuLl7SJEVhl/fuCP1IbQy1SeMa24s/nGbnZkSJgFgK92Y4n5PrWv9A4VqXDkPubN4l7HBCxeZj1LjeKH+UuKu9VeXda6C22unUkPP8AIrEHf859ssXrUz8frWtZQkklE2VvXmdw/8ks7SndQglYrysz/+P6pry0i18qHftfES3nxnN56efnC4wRWA5avK+PNtg6mNt77e1MaNa28fzPJV4Y4nk/yihEm2eY99+Zn7AzWugoRr2W2xta6cRzmdO/hWO0WX/56u/wkv1l/c4pampIsSd124tfZePkqNa6fo8lt9spQf3HoTC5ePoibesqS9tq6M1Ru349Kb7mBzdc/2CTDPLVs5gO/+8vts2dqFurqW3WxRU1vKf2eP5pobz6ezJZsNnnulNzfcMYjauLUo6UylvGTpxjsHMW1G7/YLUPKCEib5nNkcwPnuAeaxOzWugpRr/gBa7SrY4HrxM/dHbneX0FkPuB7jqfqf8bfaB9iS6hc4EDzljFrXhU9TY/hNzRssSHWecV+Nqanrwvdu/ht3TbuI2roy4gFddHWJEuL1ZTz95klc8Of7WLe5fwdFmp8WLRnE178/hddn70FtvIREovnDe01tKVtryvjTbWdy9fXfJJns3M8O+vdLfZg8ZQTLVpVRXRN8aqyuibB8VSmTp4zgmRf7dECEkmvFf9+3tNgatuO77jb2YDan2l3s494gRZSk/1hhw1FGnE8ZygPuHF5kIvWoKbrBh6nD+EXNHPaOPcKE2HVsF5lHHRV4ew6iJImQYEFyPM/Xf4ePUgfTuRPNz6RclAdnnMNzbx/Nsfs/wnEHPET3yo3E6z9rdSqN1VFbX8602cfw2GunsXzdkBxGnF+2bO3CVdddwM47LuGrk55j3H7vEImkSCS8Q72Zo6y0ntXrevHIM+P5z8sHUV3T9rF3xeLjTyv45g9GcsA+mznl2NWMGl5Dff1nrU6RCJSUOOZ9VMED/+rPf9/uHvpzsCR/KWGSJhjvsS/vuX0xUmzPEgawggiOTfRkETspSWpGgnJmJs5gZuIMosQZGJlDV1tHykXY4Iaw1u2MUwNvkzZU9eXu5y/g7ucvoGv5ZoZu9xHlpTXU1Zfy6ZphbKzSFX1zPlo8hN/ffB6/v9nRr88GBm+3mmg0ydbqCj5Zsj21Lez27ExSznjtrR689lYPIhHHDoNq6d0jgRms2xjj02XlSpI6KSVMEsgRYRk7sqwTPLm7PSQpY2lqn1yHUbCqarvz/iLtv9Yx1qzrzZp1Gl/TGqmUsWhJBYuW5DoSyQe6xBUREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCKGESERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAsSyWcjMFgFbgCSQcM6Nbc+gRMLS687puQ5BRESKQFYJk2+Cc25tu0UiIiIikqfUJSciIiISwJxzwQuZfQJsABxws3PuloDlgwsVCcGUMU/kOoSiNmXW8bkOQUSkI8wKGm6UbcI0yDm3zMz6A88ClzrnXspY5kLgQv/f0cD7rYu50+sLqOuz9bT/2kb7r/W079pG+69ttP/aZqRzrltzC2SVMH3uBWZTgCrn3P81s8xMDQxvHe27ttH+axvtv9bTvmsb7b+20f5rm2z2X+AYJjPrYmbdGv4GjkKtRyIiItKJZHOX3ADgETNrWH6qc+6Zdo1KREREJI8EJkzOuY+BvVpYbrODwqVZ2ndto/3XNtp/rad91zbaf22j/dc2gfuvxWOYRERERDobPYdJREREJECoCZOZTTKz+Wa20Mx+HGbZxc7Mbjez1WamAfWtYGZDzOwFM5tjZh+Y2eRcx1QozKzczN4ws3f8ffeLXMdUiMwsamazzexfuY6l0JjZIjN7z8zeNrOZuY6nkJhZTzN70MzmmdlcMzso1zEVCjMb6de5hp/NZvadJpcPq0vOzKLAAuBIYCnwJnCGc25OKCsocmZ2KFAF3OWcG53reAqNmQ0EBjrn3vLv6pwFnKT6F8y8Ozq6OOeqzKwEmAFMds69nuPQCoqZfQ8YC3R3zh2X63gKif99pWP19VstZ2Z3Ai875241s1Kg0jm3McdhFRw/h1kGHOCcW9zYMmG2MO0PLHTOfeycqwPuBU4Msfyi5j8IdH2u4yhUzrkVzrm3/L+3AHOBQbmNqjA4T5X/b4n/o8GNLWBmg4FjgVtzHYt0HmbWAzgUuA3AOVenZKnVjgA+aipZgnATpkHAkrT/l6ITluSAmQ0F9gH+m+NQCobfnfQ2sBp41jmnfdcyfwZ+CKRyHEehcsB/zGyW/60Rkp1hwBrg73538K3+8xKl5U4H7mluAQ36lqJiZl2Bh4DvOOc25zqeQuGcSzrn9gYGA/ubmbqFs2RmxwGrnXOzch1LARvnnNsXOBq42B+iIMFiwL7ATc65fYCtgMYPt5DflXkC8EBzy4WZMC0DhqT9P9ifJtIh/PE3DwH/dM49nOt4CpHfnP8CMCnHoRSSg4ET/HE49wKHm9nduQ2psDjnlvm/VwOP4A3xkGBLgaVpLcIP4iVQ0jJHA28551Y1t1CYCdObwAgzG+Zna6cDj4dYvkiT/IHLtwFznXN/zHU8hcTM+plZT//vCrwbN+blNKgC4py73Dk32Dk3FO+497xz7uwch1Uw9PVbreecWwksMbOR/qQjAN3o0nJnENAdB9l9NUpWnHMJM7sE+DcQBW53zn0QVvnFzszuAcYDfc1sKfBz59xtuY2qoBwMnAO854/FAbjCOfdU7kIqGAOBO/27RCLA/c453RovHUVfv9U2lwL/9BsqPga+nuN4CoqfpB8JXBS4rJ70LSIiItI8DfoWERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAvx/X19odWDRDgcAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -977,7 +977,7 @@ }, { "data": { - "image/png": "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wN2u4UGVLRHLwcBw59xfMhmHtA3m/ZRSV+dcuk+UDzsOw/sZq2ecc415+rtI1kolYRqNNz7haP/1lQDOud83uKCIiIhIjkilS64P2x+iB14rU9o/tCkiIiLSWoX24EozOw84z385Iqx6RRrSu3RQpkPIaavKFwYXEhFp/dY553o0VCCVhGkF3oO86vT1p+3AOXcXcBeAmWlQn7SI84feHFxIGm3q7FQfFC8i0qotCSqQSsL0HrCn//MVK/AegnZaKmufcFqDDw6WONMeGrnDa227FM1fFVxGGk37YTB9d5tG269ptP2aJnH7NSQwYXLe77ldjPcgvDzgHufcpwGLiYiIiOSMlMYwOeeex3uyrkirsvHs8ZkOIat1uX9GpkMQEWkVWsOP74qIiIhklBImERERkQBKmEREREQCKGESERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCKGESERERCZCf6QCaW9W21axfOo3Na2ZRsflLYtFqIvnFtOsyhE67jKRb/4kUFHfOdJhZyjGUjznYXmUY79OT1URwbKETnzGM990o3mIctRRkOtCslEc1++S9wJC8VxgYeYdS24AjwkbXly+iY/k0egyLY6MAy3SoWalj6SYO228aB+zxHoN6z6e4sJKa2gIWr9mDOV+OYObHE/lqc69MhykibUTOJkwVW5ex6N3fs+WrDwFwseod5leVLWfTyjdY/P7NdO07ngEjLqOwpFsmQs1Ko3idC+0GurKeQqrIs9jX87rzFQPcQo6wF4kR4RF3Jo9wNtHc3Z3SEqGGIwpu4ciCWzBiFFJGJC4n6sIKBkTe47CCv7LF9eTJ6uv5LDopcwFnmc7tNnDB5BsYu88MYi5CcWHlDvN7dV3F8EHvcs5Rf+HTxQdw69M/Z8X6/hmKVkTaipzskls1/2E+ev4UNq+dhYtV75Qs1YlFK3GxajYsm86Hz36bDctmtGygWaiISq6yK/ml/Zw+tpwSq9ghWaoTMSi1ctpbGafavfzNTqYPSzIQcXbpbgu5ouQgJhbcQIltodh2TJbqRCxGkW2jR2QR5xSdxdlFZ1FAecsHnGUO2XsG9/30W4zddzqFBdU7JUt1igqqKSqoZv/dZ/HXS0/l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nouF+XAYEUnCePS5nlRWhdPMVFML09/sTEVlwC/35ogvN37JrJWziIU0HGFr1Vb+9OafQqlLJNfkTEYwZMoUIiEN0i7o1IndTjstlLpEpGH/fqUbW8vCudipqYlw/2O9Q6mrtbjkhUuojDa9W64mWsNnX33G858/H0JUIrknZxKm4p49Gfbb35JXUtKkeiLFxYy89Vbym1iPiKSmuibCtbft1uRWpspK49Z7+7B+U/PcNZut5qyZw41v3si26qY9e6qytpJTHj8F10Z+VkYkXTmTMAH0PeEEdv/hDxudNEWKixl27bV0HTEi5MhEpCGffd6Om+/u2+ikqbLSeOz5Hvz3jab/CG1rdM2Ma3hm/jOUVZc1avlt1duY/K/JLN60ONzARHJITiVMAHtNmcI+V19NXnExlpfaOAYrKCC/QwdG3nYb/U48sZkjFJFkXnmzK7/98wDKtkWorkktcaqNQmWV8dcHduX+x9tWV1w8h+P0J07nlrdvobymnJhLbUxTeU05y7csZ/z943l1yavNHKVI65ZzCRPAbqecwvgXX6THYYcRKSwkUlyctFxeSQmRoiL6TJ7Mka+8wi6HH97CkYpIvHfndOSsnwxl+pudqao2KiqTJ06VVUZ1tTH7ow786Ioh/Ht69xaONPs4HL+c/kvG3DOGt5a9RUVNRdJHDsRcjC1VWyirLuOOd+9g8G2DmbVyVgYiFmldcuLBlcmU9u3LQX/7G5Vr17LqxRdZ/+67bJk/n1hVFXklJXTebz+6jRpF70mTKOjYMdPhiohva1k+N9zVn7880IdDD9zEsKFl7DmwgpKiGNU1xpfLSvh4bntef69TmxuvlIoPV3/I2HvHMqjrIE4YcgLjdhvH0B5DyY/ks7lyM28tf4uZS2by1LynQn+Gk0guy9mEqU5xz54MPOssBp51VqZDEZE0bCvP48WZ3XhxZrdMh9IqLdywkBvfupEb37ox06GI5ISc7JITERERCZMSJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCKGESERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmQ3xIr+efJc1tiNSIiIiLNIrCFycyKzexdM5tjZp+a2a9bIjARERGRbJFKC1MVcIRzrszMCoDXzewF59zbzRybANMeGpnpEFqFKSNGZDqEnKN9L0VTMx1A7tG+13jads0nMGFyzjmgzH9Z4P+55gxKREREJJukNOjbzPLM7ENgLfCyc+6dJGXOM7NZZjarvHZz2HGKiIiIZExKCZNzLuqcOwDoC4wys32TlLnLOTfSOTeyNL9T2HGKiIiIZExad8k55zaZ2XRgEvBJ84Qk8SacNivTIbQO88/PdAQ5Z8qtWzMdQqvw5w0dMh1CztFxL3WJY5a07dKTzpivwITJzHoANX6yVAJMBP7Y+PBEwnfc7Nk7vNZBIz2JBw0lS2mYuuNL7Xvp0QlfWotUWph6A/ebWR5eF94jzrnnGlpgVflCps4+Tjt+GnTQEBERyV6p3CX3ETC8BWIRERERyUr6aRQRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCKGESERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQC5Gc6ABGReG8/fx1zXruT83+/ZKd527as4ZWHL2Xtio+o2PoVRaWd2XX30Rwy+Rq69ByUgWhFpK1QC5OItBq11eUUlXZm9LG/4MQLnuSwb/2BjWs/54nbJ1NVvinT4YlIDlMLk4i0Gp26D+SoM+7cYVrPfgfwj2uHs+zzmQza/4QMRSYiuU4tTCLSqpW06wpAtLYmw5GISC5TC5OItDouFiPmomzbvIq3nvstHbr2Z+A+R2c6LBHJYUqYRKTVeeXR/+GTN+4BoFO3gXzrwqcpLO6Q4ahEJJepS05EWp0DJ/6Uky+bwbHf/ycl7bvx1P+eyLYtazMdlojkMCVMItLqdOzaj167jWDP4Sdy4oVPU1WxmY9euyvTYYlIDlPCJCKtWlFJRzp1H8jm9YszHYqI5DAlTCLSqlWUrWPj2s/p1G23TIciIjlMg75FJOvEamv4/IOndpq+ed2XbN20gj57jKG0Qw82r1/MBzPuIC+/kH0P+UEGIhWRtkIJk4hkneqqrTx/75k7Tf/WRc+wZP4rfP7+41RXldG+cx/6DhrLqEk/p0OXPhmIVETaCiVMIpJVDj72Kg4+9qp65/cfcngLRiMi4tEYJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCKGESERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCKGESERERCaCESURERCSAEiYRERGRACknTGaWZ2YfmNlzzRmQiIiISLZJp4VpCjC3uQIRERERyVbmnAsuZNYXuB/4HfAT59zkgPLBlYqIiIhkh9nOuZENFUi1hekW4HIg1uSQRERERFqZwITJzCYDa51zswPKnWdms8xsVmjRiYiIiGSBwC45M/s9cCZQCxQDHYEnnHNnNLCMuuRERESktQjskktpDNPXhc3GAz9NdQzThNPU2JSqaQ/t+Dlp26UncftNuXVrhiJpnf58aYcdXmv/S52+u02j7dc02n5NE7f9QhvDJCIiItJm5adT2Dk3A5jRLJGIiIiIZCm1MImIiIgEUMIkIiIiEkAJk4iIiEgAJUwiIiIiAZQwiYiIiARQwiQiIiISQAmTiIiISAAlTCIiIiIBlDCJiIiIBFDCJCIiIhJACZOIiIhIACVMIiIiIgGUMImIiIgEUMIkIiIiEkAJk4iIiEgAJUwiIiIiAZQwiYiIiARQwiQiIiISQAmTiIiISAAlTCIiIiIBlDCJiIiIBFDCJCIiIhJACZNIyN5+/jruvHK3lMo+d/ep/PnSDsx59c5mjkpERJpCCZNIhiyZ+19WLXo302GIiEgKlDCJZEA0WsPMJy5n9ORfZToUERFJgRImkQz4cMb/kl9Qwj4HnZnpUEREJAVKmERa2LYta3j3pesZ9+0/YBF9BUVEWgMdrUVa2OtP/5Ld9jqSPoPGZjoUERFJkRImkRa0atE7LPzwKcaeeG2mQxERkTTkZzoAkbZk5hM/Z98xP6CouCNV5Zu+nl5bU0FVxWaKSjplMDoREamPEiaRFrRx7eesWTKLD2fcscP015/+JW88O5VLb9lUz5IiIpJJSphEWtDx5z2Ci0V3mPb4bcdywLgL2GPY8RmKSkREgihhEmkGsdoaPv/gqZ2m9xk0htIOPXaa3rnHHvTdU4PARUSylRImkWZQXbWV5+/d+RlL37nk+aQJk4iIZDclTCIhO/jYqzj42KtSLj/l1q3NGI2IiIRBjxUQERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCKGESERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmQn0ohM1sMbAWiQK1zbmRzBiUiIiKSTVJKmHyHO+fWNVskIiIiIlnKnHPBhbwWppGpJkxmFlypiIiISHaYHdR7luoYJgf8x8xmm9l5TY9LREREpPVItUturHNuhZn1BF42s3nOuVfjC/iJVF0yVQV8EmKcbUl3QF2fjaft1zTafo2nbdc02n5No+3XNEOCCqTUJbfDAmZTgTLn3A0NlJmlgeGNo23XNNp+TaPt13jadk2j7dc0RkY46AAAA8BJREFU2n5Nk8r2C+ySM7N2Ztah7v/AUaj1SERERNqQVLrkdgGeNLO68g85515s1qhEREREskhgwuSc+xLYP81672pcOIK2XVNp+zWNtl/jads1jbZf02j7NU3g9kt7DJOIiIhIW6OfRhEREREJEGrCZGaTzGy+mS00s5+HWXeuM7N7zGytmWlAfSOYWT8zm25mn5nZp2Y2JdMxtRZmVmxm75rZHH/b/TrTMbVGZpZnZh+Y2XOZjqW1MbPFZvaxmX1oZrMyHU9rYmadzewxM5tnZnPNbHSmY2otzGyIv8/V/W0xsx/XWz6sLjkzywMWABOB5cB7wKnOuc9CWUGOM7PDgDLgH865fTMdT2tjZr2B3s659/27OmcDJ2r/C2beHR3tnHNlZlYAvA5Mcc69neHQWhUz+wkwEujonJuc6Xhak3R/TUK2M7P7gdecc3ebWSFQ6pzblOm4Whs/h1kBHOScW5KsTJgtTKOAhc65L51z1cDDwAkh1p/T/AeBbsh0HK2Vc26Vc+59//9bgblAn8xG1To4T5n/ssD/0+DGNJhZX+CbwN2ZjkXaDjPrBBwG/B3AOVetZKnRjgS+qC9ZgnATpj7AsrjXy9EJSzLAzAYAw4F3MhtJ6+F3J30IrAVeds5p26XnFuByIJbpQFop/fxW4wwEvgLu9buD7/aflyjpOwX4V0MFNOhbcoqZtQceB37snNuS6XhaC+dc1Dl3ANAXGGVm6hZOkZlNBtY652ZnOpZWbKxz7hvAMcBF/hAFCZYPfAP4i3NuOLAN0PjhNPldmccDjzZULsyEaQXQL+51X3+aSIvwx988DjzonHsi0/G0Rn5z/nRgUqZjaUXGAMf743AeBo4wswcyG1Lr4pxb4f+7FngSb4iHBFsOLI9rEX4ML4GS9BwDvO+cW9NQoTATpveAPc1soJ+tnQI8E2L9IvXyBy7/HZjrnLsp0/G0JmbWw8w6+/8vwbtxY15mo2o9nHNXOuf6OucG4B33XnHOnZHhsFoN/fxW4znnVgPLzKzuh2OPBHSjS/pOJaA7DlL7aZSUOOdqzexi4CUgD7jHOfdpWPXnOjP7FzAe6G5my4FrnHN/z2xUrcoY4EzgY38sDsBVzrnnMxhTa9EbuN+/SyQCPOKc063x0lL081tNcwnwoN9Q8SXw/QzH06r4SfpE4PzAsnrSt4iIiEjDNOhbREREJIASJhEREZEASphEREREAihhEhEREQmghElEREQkgBImEZH/324dCAAAAAAI8rceYYGiCGAIEwDAECYAgBHA27BuRaWCVwAAAABJRU5ErkJggg==", + "image/png": "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JUwiIiIiAZQwiYiIiARQwiQiIiISQAmTiIiISAAlTCIiIiIBlDCJiIiIBFDCJCIiIhJACZOIiIhIACVMIiIiIgGUMImIiIgEUMIkIiIiEkAJk4iIiEgAJUwiIXv16au59bI90pr3ydtP44aLO/HOC7e2clQiItISSphEsmTJ3P+watHr2Q5DRETSoIRJJAtisTpmPfxjxk75ebZDERGRNChhEsmCt2f+L0XF5ex38FnZDkVERNKghEmkjW3fsobX/3UNR3z5t1hEH0ERkXygo7VIG3vxsZ+xx95H02/o+GyHIiIiaVLCJNKGVi16jYVvP8r4k67KdigiIpKBomwHINKezHr4J+w/7huUlnWmpnLTZ9Pr66qoqdpMaXmX7AUnIiKNUsIk0oY2rv2INUtm8/bMW3aa/uJjP+OlJ6Zx8fWbshOYiIg0SQmTSBs64bz7cfHYTtMeuuk4DjriOwwZcUKWohIRkSBKmERaQby+jo/eenSX6f2GjqOiU69dpnftNYT+e2kQuIhIrlLCJNIKamu28vSduz5j6SsXPZ0yYRIRkdymhEkkZIccdzmHHHd52vNPvXFrK0YjIiJh0GMFRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCKGESERERCaCESURERCSAEiYRERGRAEqYRERERAIoYRIREREJoIRJREREJIASJhEREZEASphEREREAihhEhEREQmghElEREQkgBImERERkQBKmEREREQCFKUzk5ktBrYCMaDeOTe6NYMSERERySVpJUy+I51z61otEhEREZEcpS45ERERkQDmnAueyWwRsBFwwK3OudsC5g8uVERERCQ3zAkabpRul9x459wKM+sNPGdm85xzLyTOYGbnAef5/9YA72ccrgD0BNT12Xzafy2j/dd82ncto/3XMtp/LTM8aIa0Wph2WsBsGrDNOfeHJuaZrYHhzaN91zLafy2j/dd82ncto/3XMtp/LZPO/gscw2RmHcysU8PfwDGo9UhERETakXS65HYDHjGzhvnvdc4926pRiYiIiOSQwITJOfcJcGCG5TY5KFyapH3XMtp/LaP913zady2j/dcy2n8tE7j/Mh7DJCIiItLe6DlMIiIiIgFCTZjMbLKZzTezhWb2kzDLLnRmdoeZrTUzDahvBjMbYGYzzOxDM/vAzKZmO6Z8YWZlZva6mb3j77tfZDumfGRmUTN7y8yezHYs+cbMFpvZe2b2tpnNznY8+cTMuprZg2Y2z8zmmtnYbMeUL8xsuF/nGn62mNn3Gp0/rC45M4sCC4BJwHLgDeA059yHoaygwJnZ4cA24G/Ouf2zHU++MbO+QF/n3Jv+XZ1zgJNU/4KZd0dHB+fcNjMrBl4EpjrnXs1yaHnFzH4AjAY6O+emZDuefOJ/X+loff1W5szsbuC/zrnbzawEqHDObcpyWHnHz2FWAAc755akmifMFqYxwELn3CfOuVrgPuDEEMsvaP6DQDdkO4585Zxb5Zx70/97KzAX6JfdqPKD82zz/y32fzS4MQNm1h/4InB7tmOR9sPMugCHA38FcM7VKllqtqOBjxtLliDchKkfsCzh/+XohCVZYGaDgJHAa1kOJW/43UlvA2uB55xz2neZuR74MRDPchz5ygH/NrM5/rdGSHoGA58Cd/rdwbf7z0uUzJ0K/LOpGTToWwqKmXUEHgK+55zbku148oVzLuacOwjoD4wxM3ULp8nMpgBrnXNzsh1LHhvvnPsccCzwXX+IggQrAj4H/Mk5NxLYDmj8cIb8rswTgAeami/MhGkFMCDh//7+NJE24Y+/eQj4h3Pu4WzHk4/85vwZwOQsh5JPxgEn+ONw7gOOMrN7shtSfnHOrfB/rwUewRviIcGWA8sTWoQfxEugJDPHAm8659Y0NVOYCdMbwF5mNtjP1k4FHg+xfJFG+QOX/wrMdc79Mdvx5BMz62VmXf2/y/Fu3JiX1aDyiHPuMudcf+fcILzj3vPOuTOzHFbe0NdvNZ9zbjWwzMwavjj2aEA3umTuNAK64yC9r0ZJi3Ou3swuBP4FRIE7nHMfhFV+oTOzfwITgJ5mthy40jn31+xGlVfGAWcB7/ljcQAud849nb2Q8kZf4G7/LpEIcL9zTrfGS1vR12+1zEXAP/yGik+Ar2c5nrziJ+mTgPMD59WTvkVERESapkHfIiIiIgGUMImIiIgEUMIkIiIiEkAJk4iIiEgAJUwiIiIiAZQwiYiIiARQwiQiIiISQAmTiIiISID/B3AH/qLhpUPPAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -1059,7 +1059,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.8.8" }, "orig_nbformat": 4 }, diff --git a/docs/notebooks/free_energy_calculation.ipynb b/docs/notebooks/free_energy_calculation.ipynb index 3f78419b..f80f7826 100644 --- a/docs/notebooks/free_energy_calculation.ipynb +++ b/docs/notebooks/free_energy_calculation.ipynb @@ -26,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -78,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -93,7 +93,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -167,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -216,7 +216,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -267,7 +267,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -285,7 +285,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -327,7 +327,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -388,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -447,7 +447,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -501,7 +501,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -546,7 +546,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -566,7 +566,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -620,7 +620,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -653,7 +653,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -662,13 +662,13 @@ "Text(0.5, 1.0, 'Gradient descent on VFE')" ] }, - "execution_count": 54, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -691,7 +691,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -751,7 +751,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.10" + "version": "3.8.8" }, "vscode": { "interpreter": { diff --git a/docs/notebooks/pymdp_fundamentals.ipynb b/docs/notebooks/pymdp_fundamentals.ipynb index fb43573c..329c96bf 100644 --- a/docs/notebooks/pymdp_fundamentals.ipynb +++ b/docs/notebooks/pymdp_fundamentals.ipynb @@ -171,7 +171,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[0.53712305 0.46287695]\n" + "[0.13370366 0.86629634]\n" ] } ], @@ -533,7 +533,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[0, 1, 6]\n" + "[2, 2, 0]\n" ] } ], @@ -630,7 +630,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.10" + "version": "3.8.8" }, "vscode": { "interpreter": { diff --git a/docs/notebooks/tmaze_demo.ipynb b/docs/notebooks/tmaze_demo.ipynb index 5f8c9e3d..2d791396 100644 --- a/docs/notebooks/tmaze_demo.ipynb +++ b/docs/notebooks/tmaze_demo.ipynb @@ -628,7 +628,7 @@ "output_type": "stream", "text": [ " === Starting experiment === \n", - " Reward condition: Right, Observation: [CENTER, No reward, Cue Right]\n", + " Reward condition: Right, Observation: [CENTER, No reward, Cue Left]\n", "[Step 0] Action: [Move to CUE LOCATION]\n", "[Step 0] Observation: [CUE LOCATION, No reward, Cue Right]\n", "[Step 1] Action: [Move to RIGHT ARM]\n", @@ -636,9 +636,9 @@ "[Step 2] Action: [Move to RIGHT ARM]\n", "[Step 2] Observation: [RIGHT ARM, Reward!, Cue Left]\n", "[Step 3] Action: [Move to RIGHT ARM]\n", - "[Step 3] Observation: [RIGHT ARM, Reward!, Cue Left]\n", + "[Step 3] Observation: [RIGHT ARM, Reward!, Cue Right]\n", "[Step 4] Action: [Move to RIGHT ARM]\n", - "[Step 4] Observation: [RIGHT ARM, Reward!, Cue Left]\n" + "[Step 4] Observation: [RIGHT ARM, Reward!, Cue Right]\n" ] } ], diff --git a/docs/notebooks/using_the_agent_class.ipynb b/docs/notebooks/using_the_agent_class.ipynb index 200392da..c1251a43 100644 --- a/docs/notebooks/using_the_agent_class.ipynb +++ b/docs/notebooks/using_the_agent_class.ipynb @@ -290,7 +290,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -359,7 +359,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -411,7 +411,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -532,7 +532,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEICAYAAABPgw/pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAQWklEQVR4nO3de4xcd3nG8e8Tm0CUhCBwuoXY2KExFW56AZYEBC0rCMJBECMKbSyBiLDiVm1oEIXi0ChyQ1FFK0BINQKLUhRuwYQCVmtqqpJVVCDUDjdhuyHGIdiBFhISyIaWYHj7x5zAdLuXcTzr8f72+5FGOpd3znnPntlnz/7mlqpCkrT4nTLqBiRJw2GgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkDXyCSZSvKEUfcxkyRjSW5Kcl+St466H2kQy0fdgNqR5JvAGPBT4H7gU8AVVTU1U31VnXHiujtmm4G7gEeWb9bQIuEVuobtRV1QPwUYB66eXpDkuC4kTtD9VwP7H0qYH29/0kNloGtBVNWd9K7QzwdIUkn+OMltwG19y87rps9Kcl2S7yW5I8nVSU7p1l2W5LNJ3p7kbmDr9P0l2ZrkhiQf6YZJvpjkN/vWfzPJG5J8Fbg/yfIkT0/yuST3JvlKkomu9n3AK4E/64aFLkpySpItSb6R5O4kO5I8uqtf0x3LpiTfAj7TLX9VkgNJ7kmyO8nqvn4qyR8mua3b/7Yk6Vt/eXff+5LsT/KUbvnjknys+zndnuRP+u5zQZK9SX6Y5L+SvO14z6MWmary5m0oN+CbwEXd9CpgH/Cmbr6AfwEeDZzWt+y8bvo64JPAmcAa4OvApm7dZcBR4NX0hglPm2HfW4GfAC8FHga8DrgdeFhfb1/u+joNOAe4G3gBvQub53XzZ3f17wP+sm/7VwI3AyuBhwPvBj7crVvTHct1wOnd9jcAB4EndT1fDXyub3sF/CPwKODxwPeA9d26lwF3Ak8DApxH7z+GU4BbgGuAU4EnAIeA53f3+zzwim76DODpo35MeDvBv4OjbsBbO7cuNKeAe4E7gHdOC+/nTKuvLqyWAQ8A6/rW/QEw2U1fBnxrnn1vBW7umz8F+A7w2329vapv/RuA90/bxm7gld309EA/ADy3b/6x3R+Q5X2B/oS+9Z+i+4PU18+PgNV9x/6svvU7gC19fVw5wzFeOP3nAFwF/H03fRPwF8CKUT8WvI3m5pCLhu3FVfWoqlpdVX9UVf/dt+7wLPdZQe+q+o6+ZXfQu4qe7779fl5TVT8DjgCPm2Ubq4GXdcMd9ya5F3gWvaCeyWrg4321B+g9+Ts2x/bf0Vf/fXpX2/3H9J990z+id1UNvf8ivjFLD4+b1vMb+3rYBDwR+I8ke5K8cJZjUaN88kYn0mxPMN5F72p3NbC/W/Z4esMO892336oHJ7rx95XAt2fZxmF6V+iXD7DdB+tfVVWfnb4iyZpZtv/mqvrggNufvq9fmWX57VW1dqY7VdVtwMbu2F8C3JDkMVV1/0PoQYuQV+gauar6Kb0hhzcnObN78vC1wAeOcVNPTfKS7lUmrwF+TG/ceyYfAF6U5PlJliV5RJKJJCtnqX9X199qgCRnJ9kwRy/vAq5K8mtd/VlJXjbgcbwHeF2Sp6bnvG6//w7c1z25e1rX9/lJntbt4+VJzu7+O7m329bPBtynGmCg62TxanqvXT8E/BvwIeC9x7iNTwK/D9wDvAJ4SVX9ZKbCqjpM74nLN9J7QvIw8Hpm/514B7AT+HSS++j9obhwtkaq6uPAW4Drk/wQ+Bpw8SAHUVUfBd5M72dwH/AJ4NHdH74XAr9F7wnfu+iF/1ndXdcD+5JMdf1eOm3IS41Lle+Z0OKXZCu9V8y8fNS9SKPiFbokNcJAl6RGOOQiSY3wCl2SGjGy16GvWLGi1qxZM6rdn1D3338/p59++qjb0IA8X4vPUjpnt9xyy11VdfZM60YW6GvWrGHv3r2j2v0JNTk5ycTExKjb0IA8X4vPUjpnSe6YbZ1DLpLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1Ai/gk7SzJJRdzCwiVE3cKwW6EMRvUKXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0YKNCTrE9ya5KDSbbMsP7xSW5M8qUkX03yguG3Kkmay7yBnmQZsA24GFgHbEyyblrZ1cCOqnoycCnwzmE3Kkma2yBX6BcAB6vqUFU9AFwPbJhWU8Aju+mzgG8Pr0VJ0iAG+caic4DDffNHgAun1WwFPp3k1cDpwEUzbSjJZmAzwNjYGJOTk8fY7uI0NTW1ZI61BZ6vnolRN9CwhXp8Desr6DYC76uqtyZ5BvD+JOdX1c/6i6pqO7AdYHx8vCYmJoa0+5Pb5OQkS+VYW+D50kJbqMfXIEMudwKr+uZXdsv6bQJ2AFTV54FHACuG0aAkaTCDBPoeYG2Sc5OcSu9Jz53Tar4FPBcgyZPoBfr3htmoJGlu8wZ6VR0FrgB2AwfovZplX5Jrk1zSlf0pcHmSrwAfBi6rWqCvtZYkzWigMfSq2gXsmrbsmr7p/cAzh9uaJOlY+E5RSWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktSIgQI9yfoktyY5mGTLLDW/l2R/kn1JPjTcNiVJ81k+X0GSZcA24HnAEWBPkp1Vtb+vZi1wFfDMqronyS8tVMOSpJkNcoV+AXCwqg5V1QPA9cCGaTWXA9uq6h6AqvrucNuUJM1n3it04BzgcN/8EeDCaTVPBEjyWWAZsLWq/nn6hpJsBjYDjI2NMTk5+RBaXnympqaWzLG2wPPVMzHqBhq2UI+vQQJ90O2spfcYWAnclOTXq+re/qKq2g5sBxgfH6+JiYkh7f7kNjk5yVI51hZ4vrTQFurxNciQy53Aqr75ld2yfkeAnVX1k6q6Hfg6vYCXJJ0ggwT6HmBtknOTnApcCuycVvMJuv/QkqygNwRzaHhtSpLmM2+gV9VR4ApgN3AA2FFV+5Jcm+SSrmw3cHeS/cCNwOur6u6FalqS9P8NNIZeVbuAXdOWXdM3XcBru5skaQR8p6gkNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJasRAgZ5kfZJbkxxMsmWOut9NUknGh9eiJGkQ8wZ6kmXANuBiYB2wMcm6GerOBK4EvjDsJiVJ8xvkCv0C4GBVHaqqB4DrgQ0z1L0JeAvwP0PsT5I0oEEC/RzgcN/8kW7ZzyV5CrCqqv5piL1Jko7B8uPdQJJTgLcBlw1QuxnYDDA2Nsbk5OTx7n5RmJqaWjLH2gLPV8/EqBto2EI9vlJVcxckzwC2VtXzu/mrAKrqr7r5s4BvAFPdXX4Z+D5wSVXtnW274+PjtXfvrKubMjk5ycTExKjb0IA8X51k1B20a57cnUuSW6pqxheeDDLksgdYm+TcJKcClwI7f9FX/aCqVlTVmqpaA9zMPGEuSRq+eQO9qo4CVwC7gQPAjqral+TaJJcsdIOSpMEMNIZeVbuAXdOWXTNL7cTxtyVJOla+U1SSGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGDBToSdYnuTXJwSRbZlj/2iT7k3w1yb8mWT38ViVJc5k30JMsA7YBFwPrgI1J1k0r+xIwXlW/AdwA/PWwG5UkzW2QK/QLgINVdaiqHgCuBzb0F1TVjVX1o272ZmDlcNuUJM1n+QA15wCH++aPABfOUb8J+NRMK5JsBjYDjI2NMTk5OViXi9zU1NSSOdYWeL56JkbdQMMW6vE1SKAPLMnLgXHg2TOtr6rtwHaA8fHxmpiYGObuT1qTk5MslWNtgedLC22hHl+DBPqdwKq++ZXdsv8jyUXAnwPPrqofD6c9SdKgBhlD3wOsTXJuklOBS4Gd/QVJngy8G7ikqr47/DYlSfOZN9Cr6ihwBbAbOADsqKp9Sa5NcklX9jfAGcBHk3w5yc5ZNidJWiADjaFX1S5g17Rl1/RNXzTkviRJx8h3ikpSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDViqN9YdMIko+7gmEyMuoFjUTXqDiQ9RF6hS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGjFQoCdZn+TWJAeTbJlh/cOTfKRb/4Uka4beqSRpTvMGepJlwDbgYmAdsDHJumllm4B7quo84O3AW4bdqCRpbssHqLkAOFhVhwCSXA9sAPb31WwAtnbTNwB/myRVVUPsVYtZMuoOBjYx6gaOlb9m6gwS6OcAh/vmjwAXzlZTVUeT/AB4DHBXf1GSzcDmbnYqya0PpelFaAXTfhYnrUUUvAto8Zwv8Jz1LKVztnq2FYME+tBU1XZg+4nc58kgyd6qGh91HxqM52vx8Zz1DPKk6J3Aqr75ld2yGWuSLAfOAu4eRoOSpMEMEuh7gLVJzk1yKnApsHNazU7gld30S4HPOH4uSSfWvEMu3Zj4FcBuYBnw3qral+RaYG9V7QT+Dnh/koPA9+mFvn5hyQ0zLXKer8XHcwbEC2lJaoPvFJWkRhjoktQIA30BzfeRCTq5JHlvku8m+dqoe9FgkqxKcmOS/Un2Jbly1D2NkmPoC6T7yISvA8+j92asPcDGqto/5x01Mkl+B5gCrquq80fdj+aX5LHAY6vqi0nOBG4BXrxUf8+8Ql84P//IhKp6AHjwIxN0kqqqm+i9SkuLRFV9p6q+2E3fBxyg9871JclAXzgzfWTCkn2gSQut+5TXJwNfGHErI2OgS1r0kpwBfAx4TVX9cNT9jIqBvnAG+cgESccpycPohfkHq+ofRt3PKBnoC2eQj0yQdByShN471Q9U1dtG3c+oGegLpKqOAg9+ZMIBYEdV7RttV5pLkg8Dnwd+NcmRJJtG3ZPm9UzgFcBzkny5u71g1E2Nii9blKRGeIUuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1Ij/he0Bv8kI+yZxgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -754,12 +754,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Context: Left-Better\n" + "Context: Right-Better\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -779,7 +779,7 @@ }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEICAYAAABPgw/pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAVdElEQVR4nO3df7BcZ33f8ffHErKDcSDBcItlYblYJZEDheRiJ9M0uYApMkksMkCw82MwP6IwqRISAtSk1ONxEhJoGgiJpqAQDzSAhaEtIxpRzTT4hqEEKjmYBNkVFYYgmR8OxgbEjxjBt3/sEXO82nt3db1XV3r0fs3s6JzzPHvOd8+e89mzz2rvpqqQJJ36zljpAiRJ02GgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkA/xSSZS3KoN78vydyE9/3ZJAeTHE7yxCnVsz5JJVk9jfU9UMP7R9OX5LeTvHml69CxDPQVkOTTSb7RBes9Sf4yybqlrKuqLq6q+Qm7/yGwtaoeUlUfXcr2TqQkb0nyu2P6VJKLTlRN0zDNmh/ourpj8bJF2o95gayqV1fVi5a6zeORZHuS/Um+k+TqE7HNU5mBvnJ+pqoeAjwK+ALwJydgmxcA+07AdqRp+Rjwq8DfrnQhpwIDfYVV1TeBdwMbjy5LcmaSP0zymSRfSPLGJN8z6v79K6wkZyS5Jsknk9yd5KYk39+t7zCwCvhYkk92/f9dkjuTfLW7CnrqAtv4qSQfTfKVbsjmuhHdXpDks0k+l+RlQ4/l9V3bZ7vpM7u2q5N8cGhbleSiJFuAXwBe0b2Tee+Iuj7QTX6s6/PcXttvJbmrq+f5S9m3Xf9fTnJ7t49uS/LD3fIfTDKf5N5u2OuK3n3ekmRb987rq0k+kuQxi9Wc5KeT3Nqt70NJHt8tf26STyX53m7+8iSfT/KIxR5/r5bHJHl/dzx8Mcnbkzysa/sL4NHAe7v7v2LovmcD7wPO69oPJzkvyXVJ3tb1OTrk9vzu2LgnyYuTPCnJ33WP50+H1vuCbp/ek2R3kgsW2v9Vta2q/gr45kJ91FNV3k7wDfg0cFk3/WDgrcB/6bW/DtgJfD9wDvBe4Pe7tjng0ALregnwYeB84EzgTcCNvb4FXNRNPxY4CJzXza8HHrNAvXPA4xhcADyewTuKZ/buV8CNwNldv3/s1XR9V9MjgUcAHwJ+p2u7Gvjg0Lb6Nb4F+N0x+/K7/Xu1Hum2+yDgGcDXge8bt29HrPs5wJ3Ak4AAFzF4l/Mg4ADw28Aa4CnAV4HH9uq+G7gEWA28HdixSM1PBO4CLmXwovu87nk9s2t/e7fOhwOfBX56oXWNeAwXAU/rjodHAB8AXj/q+FnkuT80tOw64G1Dz/8bgbOAf8MgfN/TPedru8f2k13/zd2++8Fu37wK+NAE58wHgatX+tw92W8rXsDpeOtOosPAvcC3upP0cV1bgK/RC1fgx4BPddP3O8G4f6DfDjy11/aobv2ru/l+WF7UnWiXAQ86zvpfD7yumz56Qv9Ar/21wJ93058EntFrezrw6W76apYn0L9x9DF3y+4CfnTcvh2x7t3AS0Ys/9fA54EzestuBK7r1f3mXtszgP+7SM3/me5Frrdsfy8EHwZ8Bvh74E2LPf4JnrtnAh8ddfws0P9+x1u37DqODfS1vfa7gef25v8r8Bvd9PuAF/bazmDwgnvBmLoN9AluJ8X/TDhNPbOq/leSVQyuWv46yUbgOwyu2m9JcrRvGFy5jXMB8N+TfKe37NvADIMrze+qqgNJfoPByXlxkt3AS6vqs8MrTXIp8AfADzG4Ij0TeNdQt4O96X9gcKUOcF433287b4LH8kDcXVVHevNfBx7C4Ar1ePbtOgYvSMPOAw5WVX8//wODq9GjPj9i+wu5AHhekl/rLVvTbYequjfJu4CXAs9aZD3HSDID/DGDF6FzGAToPcezjgl9oTf9jRHzRx//BcAfJ/lP/TIZ7Lv+caIlcAx9hVXVt6vqvzEI3h8HvsjgBLi4qh7W3R5agw9QxzkIXN6738Oq6qyqunNU56p6R1X9OIOTrIDXLLDedzAYplhXVQ9l8PY6Q336/0vn0QzeddD9e8ECbV9jELAAJPlnwyUuUM9SHe++PQg8ZsTyzwLrkvTPn0cz9KJ5HA4Cvzf0vD24qm4ESPIE4AUM3gW84TjX/WoG+/FxVfW9wC9y/+du3D6e9nNwEPiVocf6PVX1oSlv57RkoK+wDGwGvg+4vbvq+zPgdUke2fVZm+TpE6zujcDvHf2QqfvgbPMC231skqd0H1B+k0HQfWdUXwZXdl+qqm8muQT4+RF9/kOSBye5GHg+8M5u+Y3Aq7pazgWuBd7WtX2MwbuDJyQ5i8G7hb4vAP98zGOepA8AS9i3bwZeluRHuufpom7ffoTBVfcrkjwog+8B/AywY5I6RtT8Z8CLk1zabefsDD6IPqfbL29jMF7/fGBtkl9dZF3DzmEwvPflJGuBl4+pZVStD0/y0Ike2XhvBF7ZHSckeWiS5yzUOcmabh8EeFCSs4ZeSNW30mM+p+ONwbjlNxicaF8FPg78Qq/9LAZXVncAX2EwNv7rXdscC4+hn8Hgbfn+br2fBF7d69sfn3488H+6fl8C/gfdB6Qj6n02g7fDX+36/SnHjqFuYXDl+nngFUOP5Q3A57rbG4Czeu3/nsGV80EGV4/9GjcAtzL4rOE9C9T24m699wI/N7x/RuyjBfftIuvf3z1XHwee2C2/GPhr4MvAbcDP9u7zFnpj/yOes/vV3C3bBOzpln2OwZDWOQw+xH1f777/snu+Niy0rqH6LwZu6eq/FfitoVo2Mxifvxd42QL74AYG4+L3MhgGum7E89//zOIQMNebfxvwqt78LzH4POAr3fN+wyL7f75bf/82t1D/0/2WbqdJkk5xvnWRpEYY6JLUCANdkhphoEtSI1bsi0XnnnturV+/fqU235Svfe1rnH322StdhrQgj9HpueWWW75YVY8Y1bZigb5+/Xr27t27Uptvyvz8PHNzcytdhrQgj9HpSbLgN2odcpGkRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNmCjQk2zK4DcnDyS5ZkT767rfQ7w1ySeS3Dv1SiVJixr7/9C7X9TZxuB3CQ8Be5LsrKrbjvapqt/s9f81Br+RKEk6gSa5Qr8EOFBVd1TVfQz+iP/IH03oXMXgRw0kSSfQJN8UXcv9fy/yEINfJz9G92suFwLvX6B9C4MfQmBmZob5+fnjqVULOHz4sPvyJDP35CevdAknlbmVLuAkM3/zzcuy3ml/9f9K4N1V9e1RjVW1HdgOMDs7W34VeDr8WrV0almu83WSIZc7uf8PAJ/Pwj+GeyUOt0jSipgk0PcAG5JcmGQNg9DeOdwpyQ8w+KHjv5luiZKkSYwN9Ko6AmwFdjP4Qd2bqmpfkuuTXNHreiWwo/yRUklaERONoVfVLmDX0LJrh+avm15ZkqTj5TdFJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUiIkCPcmmJPuTHEhyzQJ9fi7JbUn2JXnHdMuUJI2zelyHJKuAbcDTgEPAniQ7q+q2Xp8NwCuBf1VV9yR55HIVLEkabZIr9EuAA1V1R1XdB+wANg/1+WVgW1XdA1BVd023TEnSOGOv0IG1wMHe/CHg0qE+/wIgyf8GVgHXVdX/HF5Rki3AFoCZmRnm5+eXULKGHT582H15kplb6QJ0Uluu83WSQJ90PRsYHMfnAx9I8riqurffqaq2A9sBZmdna25ubkqbP73Nz8/jvpROHct1vk4y5HInsK43f363rO8QsLOqvlVVnwI+wSDgJUknyCSBvgfYkOTCJGuAK4GdQ33eQ/cuM8m5DIZg7phemZKkccYGelUdAbYCu4HbgZuqal+S65Nc0XXbDdyd5DbgZuDlVXX3chUtSTrWRGPoVbUL2DW07NredAEv7W6SpBXgN0UlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGjFRoCfZlGR/kgNJrhnRfnWSf0xya3d70fRLlSQtZvW4DklWAduApwGHgD1JdlbVbUNd31lVW5ehRknSBCa5Qr8EOFBVd1TVfcAOYPPyliVJOl5jr9CBtcDB3vwh4NIR/Z6V5CeATwC/WVUHhzsk2QJsAZiZmWF+fv64C9axDh8+7L48ycytdAE6qS3X+TpJoE/ivcCNVfVPSX4FeCvwlOFOVbUd2A4wOztbc3NzU9r86W1+fh73pXTqWK7zdZIhlzuBdb3587tl31VVd1fVP3WzbwZ+ZDrlSZImNUmg7wE2JLkwyRrgSmBnv0OSR/VmrwBun16JkqRJjB1yqaojSbYCu4FVwA1VtS/J9cDeqtoJ/HqSK4AjwJeAq5exZknSCBONoVfVLmDX0LJre9OvBF453dIkScfDb4pKUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakREwV6kk1J9ic5kOSaRfo9K0klmZ1eiZKkSYwN9CSrgG3A5cBG4KokG0f0Owd4CfCRaRcpSRpvkiv0S4ADVXVHVd0H7AA2j+j3O8BrgG9OsT5J0oRWT9BnLXCwN38IuLTfIckPA+uq6i+TvHyhFSXZAmwBmJmZYX5+/rgL1rEOHz7svjzJzK10ATqpLdf5OkmgLyrJGcAfAVeP61tV24HtALOzszU3N/dANy8GB4f7Ujp1LNf5OsmQy53Aut78+d2yo84BfgiYT/Jp4EeBnX4wKkkn1iSBvgfYkOTCJGuAK4GdRxur6stVdW5Vra+q9cCHgSuqau+yVCxJGmlsoFfVEWArsBu4HbipqvYluT7JFctdoCRpMhONoVfVLmDX0LJrF+g798DLkiQdL78pKkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktSIiQI9yaYk+5McSHLNiPYXJ/n7JLcm+WCSjdMvVZK0mLGBnmQVsA24HNgIXDUisN9RVY+rqicArwX+aNqFSpIWN8kV+iXAgaq6o6ruA3YAm/sdquorvdmzgZpeiZKkSayeoM9a4GBv/hBw6XCnJP8WeCmwBnjKqBUl2QJsAZiZmWF+fv44yx2Ye/KTl3S/Vs2tdAEnmfmbb17pEnxOtKilZt84qVr8YjrJs4FNVfWibv6XgEurausC/X8eeHpVPW+x9c7OztbevXuXWHWWdj+dHsYc0yeEx6gW8wCO0SS3VNXsqLZJhlzuBNb15s/vli1kB/DMiauTJE3FJIG+B9iQ5MIka4ArgZ39Dkk29GZ/Cvh/0ytRkjSJsWPoVXUkyVZgN7AKuKGq9iW5HthbVTuBrUkuA74F3AMsOtwiSZq+ST4Upap2AbuGll3bm37JlOuSJB0nvykqSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGTBToSTYl2Z/kQJJrRrS/NMltSf4uyV8luWD6pUqSFjM20JOsArYBlwMbgauSbBzq9lFgtqoeD7wbeO20C5UkLW6SK/RLgANVdUdV3QfsADb3O1TVzVX19W72w8D50y1TkjTOJIG+FjjYmz/ULVvIC4H3PZCiJEnHb/U0V5bkF4FZ4CcXaN8CbAGYmZlhfn5+SduZW1p5Ok0s9biaprmVLkAnteU6RlNVi3dIfgy4rqqe3s2/EqCqfn+o32XAnwA/WVV3jdvw7Oxs7d27d4lVZ2n30+lhzDF9QniMajEP4BhNcktVzY5qm2TIZQ+wIcmFSdYAVwI7hzbwROBNwBWThLkkafrGBnpVHQG2AruB24GbqmpfkuuTXNF1+4/AQ4B3Jbk1yc4FVidJWiYTjaFX1S5g19Cya3vTl025LknScfKbopLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNmCjQk2xKsj/JgSTXjGj/iSR/m+RIkmdPv0xJ0jhjAz3JKmAbcDmwEbgqycahbp8BrgbeMe0CJUmTWT1Bn0uAA1V1B0CSHcBm4LajHarq013bd5ahRknSBCYJ9LXAwd78IeDSpWwsyRZgC8DMzAzz8/NLWQ1zS7qXThdLPa6maW6lC9BJbbmO0UkCfWqqajuwHWB2drbm5uZO5OZ1mvC40sluuY7RST4UvRNY15s/v1smSTqJTBLoe4ANSS5Msga4Eti5vGVJko7X2ECvqiPAVmA3cDtwU1XtS3J9kisAkjwpySHgOcCbkuxbzqIlSceaaAy9qnYBu4aWXdub3sNgKEaStEL8pqgkNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIyYK9CSbkuxPciDJNSPaz0zyzq79I0nWT71SSdKixgZ6klXANuByYCNwVZKNQ91eCNxTVRcBrwNeM+1CJUmLm+QK/RLgQFXdUVX3ATuAzUN9NgNv7abfDTw1SaZXpiRpnNUT9FkLHOzNHwIuXahPVR1J8mXg4cAX+52SbAG2dLOHk+xfStE6xrkM7evTmtcSJyOP0b4HdoxesFDDJIE+NVW1Hdh+Ird5Okiyt6pmV7oOaSEeoyfGJEMudwLrevPnd8tG9kmyGngocPc0CpQkTWaSQN8DbEhyYZI1wJXAzqE+O4HnddPPBt5fVTW9MiVJ44wdcunGxLcCu4FVwA1VtS/J9cDeqtoJ/DnwF0kOAF9iEPo6cRzG0snOY/QEiBfSktQGvykqSY0w0CWpEQb6KWzcn2SQVlqSG5LcleTjK13L6cBAP0VN+CcZpJX2FmDTShdxujDQT12T/EkGaUVV1QcY/M83nQAG+qlr1J9kWLtCtUg6CRjoktQIA/3UNcmfZJB0GjHQT12T/EkGSacRA/0UVVVHgKN/kuF24Kaq2reyVUn3l+RG4G+AxyY5lOSFK11Ty/zqvyQ1wit0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIa8f8B5eY2Hdx7Ua8AAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -799,7 +799,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -813,13 +813,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Action at time 2: Play-left\n", + "Action at time 2: Play-right\n", "Reward at time 2: Reward\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -833,13 +833,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Action at time 3: Play-left\n", + "Action at time 3: Play-right\n", "Reward at time 3: Reward\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -853,13 +853,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Action at time 4: Play-left\n", - "Reward at time 4: Reward\n" + "Action at time 4: Play-right\n", + "Reward at time 4: Loss\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -873,13 +873,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Action at time 5: Play-left\n", - "Reward at time 5: Reward\n" + "Action at time 5: Play-right\n", + "Reward at time 5: Loss\n" ] }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEICAYAAABPgw/pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAWrklEQVR4nO3dfbBcd33f8fcHgTEYY1McboOkSC5WCTKmOLlIoUnhDpgiQ2KRCSRyGgZTQDCNEhIIiQnU4zqEDrQpNI1bUMBjCsHCoS0jiog6U7ihKQ+VXTsEWRUV4kESDwZjAxcMRvDtH3uUHq/23nsk9mqvjt6vmZ17Hn57znfPnvPZs7+7uydVhSTp9PeASRcgSRoPA12SesJAl6SeMNAlqScMdEnqCQNdknrCQD/NJJlJcrg1vjfJTMf7/mKSQ0nmklw6pnrWJqkkDxzH8n5Uw9tH45fk95O8bdJ16HgG+gQk+VySe5tgvTvJB5KsPpllVdXFVTXbsfm/BrZV1cOq6raTWd+plOTGJK9bpE0luehU1TQO46z5R11Wsy9etsD8414gq+r1VfXik13niUiyIsnrknwxybeS3Jbk/FOx7tORgT45v1BVDwN+HPgK8O9OwTrXAHtPwXqkcfkXwD8Engw8HHg+8N2JVrScVZW3U3wDPgdc1hp/FvDp1viDGZxNf4FB2L8FeEgzbwY4PGpZDF6grwY+A9wF3Az8nWZ5c0AB3wY+07T/PeAI8C1gP/D0eep9NnAb8E3gEHBta97aZrlbgS8CXwJ+Z+ixvLmZ98Vm+MHNvKuAvxpaVwEXNcv7PnBfU/v7R9T1kdZjmgN+5dj2AV4J3NnU88Iu23aex/4SYF+zje4AfqqZ/jhgFriHwYvkFa373AhcD3ygud8ngMfMV3Mz/eeB25vlfRR4QjP9V4DPAg9vxi8Hvgz82HzLGqr/McCHmv3ha8CfAec3894J/BC4t7n/7w7d95xm3g+b+XPAo4FrgXcNPf8vbPaNu4GXAU8CPtk8nj8ZWu4/bbbp3cBuYM082/4RzTofM+lj9nS5TbyAM/HG/UP4ocA7gP/Ymv8mYCeDMD4XeD/wL5t5M8wf6C8HPg6saoLrrcBNrbYFXNQMP7Y5AB/djK+d78Bp1nkJgxeMJzAIwue07lfATU0AXAJ8tVXTdU1Nj2pC6KPAHzTzrmKeQG+GbwRet8i2/Nv2rVqPNut9EIMXy+8Aj1hs245Y9vMYvOA9CQiDF5o1zXIPAL8PnAU8jUFwP7ZV913ABuCBDEJ0xwI1X8rgxWcjsAJ4QfO8Hnvh+7NmmY9k8KL48/Mta8RjuAh4RrM/HHsRePOo/WeB5/7w0LRrOT7Q3wKcDfxjBmfQ72ue85XNY3tq035zs+0e12yb1wIfnWfdT2HwgvB7DF7EPg38+qSP3+V8m3gBZ+KtOYjmmp31+81BekkzLwzOuB7Tav9k4LPN8P0OMO4f6PtonWUz6M75PvDAZrwdlhc1B9plwINOsP43A29qho8d0D/Zmv9G4O3N8GeAZ7XmPRP4XDN8FUsT6Pcee8zNtDuBn1ls245Y9m7g5SOm/6MmYB7QmnYTzTuXpu63teY9C/g/C9T8H2he5FrT9rdC8HwG7yj+BnjrQo+/w3P3HOC2UfvPPO3vt781067l+EBf2Zp/F613C8B/An6rGf4g8KLWvAcweMFdM2Ldv9os++3AQxicTHwVeMY4jsM+3uxDn5znVNX5DM5qtgF/meTvMjiLeihwa5J7ktwD/EUzfTFrgP/Sut8+4AfA1HDDqjoA/BaDg/POJDuSPHrUQpNsTPLhJF9N8g0Gb6kvGGp2qDX8eQZvzWn+fn6eeUvlrqo62hr/DvAwTnzbrmbwgjTs0cChqvpha9rnGZyNHvPlEeufzxrglcdqaupa3ayHqroH+HPg8cAfLbCc4ySZap7bI0m+CbyL45+7cfhKa/jeEePHHv8a4N+2HufXGbzQtrdd+34A11XVvVX1SWAHgxdIjWCgT1hV/aCq/jOD4P05Bv2c9wIXV9X5ze28GvwDdTGHgMtb9zu/qs6uqiPzrPvdVfVzDA6yAt4wz3LfzaCbYnVVncfg7XWG2rQ/pfMTDN510PxdM8+8bzMIWACaF7T7lThPPSfrRLftIQZ90MO+CKxO0j5+foJB98zJOAT84dDz9tCqugkgyRMZ9DvfBPzxCS779Qy24yVV9XDg17j/c7fYNh73c3AIeOnQY31IVX10RNtPjqhh3PX0ioE+YRnYzOAfQPuas74/Bd6U5FFNm5VJntlhcW8B/jDJmuZ+P9Yse9R6H5vkaUkezKDP89g/v0Y5F/h6VX03yQYGb4WH/fMkD01yMYN/kL2nmX4T8NqmlguAaxicJQL8NXBxkicmOZvBu4W2rwB/b5HH3KUNACexbd8G/E6Sn26ep4uabfsJBmfdv5vkQc33AH6BwdljF8M1/ynwsuadUJKck+TZSc5ttsu7GPTXvxBYmeSfLbCsYecy6N77RpKVwKsWqWVUrY9Mcl6nR7a4twCvbvYTkpyX5HmjGlbVZ4D/AbwmyYOTPA7YAvzXMdXSP5Pu8zkTbwz6LY99suBbwKeAf9KafzaDM6uDDD5Zsg/4zWbeDAt/yuUVDPpfv8Wgu+D1rbbt/uknAP+rafd1BgfJo+ep97kMuhS+1bT7E47vQz32KZcv0/q0RPNY/pjBp02+1Ayf3Zr/GgZnzocYnD22a1zH///kx/vmqe1lzXLvAX55ePuM2EbzbtsFlr+/ea4+BVzaTL8Y+EvgGww+/fKLrfvcSKvvf8Rzdr+am2mbgD3NtC8x6GI5l8E/cT/Yuu8/aJ6vdfMta6j+i4Fbm/pvZ/Dpn3Ytmxn0z99D69NJQ8u4gUG/+D3M/ymX9v8sDgMzrfF3Aa9tjT+fwf8Djn1q6oYFtv9KBt1ic81z9tJJH7/L+ZZmo0mSTnN2uUhSTxjoktQTBrok9YSBLkk9MbGfPL3gggtq7dq1k1p9r3z729/mnHPOmXQZ0rzcR8fn1ltv/VpVjfwy3MQCfe3atdxyyy2TWn2vzM7OMjMzM+kypHm5j45Pks/PN88uF0nqCQNdknrCQJeknjDQJaknDHRJ6gkDXZJ6wkCXpJ4w0CWpJwx0SeqJiX1TVOq1DF+h78w2M+kClpslug6FZ+iS1BMGuiT1hIEuST1hoEtSTxjoktQTBrok9YSBLkk90SnQk2xKsj/JgSRXj5j/E0k+nOS2JJ9M8qzxlypJWsiigZ5kBXA9cDmwHrgyyfqhZq8Fbq6qS4EtwL8fd6GSpIV1OUPfAByoqoNVdR+wA9g81KaAhzfD5wFfHF+JkqQuunz1fyVwqDV+GNg41OZa4L8l+Q3gHOCyUQtKshXYCjA1NcXs7OwJlqtR5ubm3JbLzMykC9CytlTH67h+y+VK4Maq+qMkTwbemeTxVfXDdqOq2g5sB5ieni6vAj4eXlFdOr0s1fHapcvlCLC6Nb6qmdb2IuBmgKr6GHA2cME4CpQkddMl0PcA65JcmOQsBv/03DnU5gvA0wGSPI5BoH91nIVKkha2aKBX1VFgG7Ab2Mfg0yx7k1yX5Iqm2SuBlyT5a+Am4KqqJfp9SEnSSJ360KtqF7BraNo1reE7gJ8db2mSpBPhN0UlqScMdEnqCQNdknrCQJeknjDQJaknDHRJ6gkDXZJ6wkCXpJ4w0CWpJwx0SeoJA12SesJAl6SeMNAlqScMdEnqCQNdknqiU6An2ZRkf5IDSa4eMf9NSW5vbp9Ocs/YK5UkLWjRC1wkWQFcDzwDOAzsSbKzuagFAFX12632vwFcugS1SpIW0OUMfQNwoKoOVtV9wA5g8wLtr2RwGTpJ0inU5RJ0K4FDrfHDwMZRDZOsAS4EPjTP/K3AVoCpqSlmZ2dPpFbNY25uzm25zMxMugAta0t1vHa6pugJ2AK8t6p+MGpmVW0HtgNMT0/XzMzMmFd/ZpqdncVtKZ0+lup47dLlcgRY3Rpf1UwbZQt2t0jSRHQJ9D3AuiQXJjmLQWjvHG6U5CeBRwAfG2+JkqQuFg30qjoKbAN2A/uAm6tqb5LrklzRaroF2FFVtTSlSpIW0qkPvap2AbuGpl0zNH7t+MqSJJ0ovykqST1hoEtSTxjoktQTBrok9YSBLkk9YaBLUk8Y6JLUEwa6JPWEgS5JPWGgS1JPGOiS1BMGuiT1hIEuST1hoEtSTxjoktQTBrok9USnQE+yKcn+JAeSXD1Pm19OckeSvUnePd4yJUmLWfSKRUlWANcDzwAOA3uS7KyqO1pt1gGvBn62qu5O8qilKliSNFqXM/QNwIGqOlhV9wE7gM1DbV4CXF9VdwNU1Z3jLVOStJgu1xRdCRxqjR8GNg61+fsASf4nsAK4tqr+YnhBSbYCWwGmpqaYnZ09iZI1bG5uzm25zMxMugAta0t1vHa6SHTH5axjsB+vAj6S5JKquqfdqKq2A9sBpqena2ZmZkyrP7PNzs7itpROH0t1vHbpcjkCrG6Nr2qmtR0GdlbV96vqs8CnGQS8JOkU6RLoe4B1SS5MchawBdg51OZ9NO8yk1zAoAvm4PjKlCQtZtFAr6qjwDZgN7APuLmq9ia5LskVTbPdwF1J7gA+DLyqqu5aqqIlScfr1IdeVbuAXUPTrmkNF/CK5iZJmgC/KSpJPWGgS1JPGOiS1BMGuiT1hIEuST1hoEtSTxjoktQTBrok9YSBLkk9YaBLUk8Y6JLUEwa6JPWEgS5JPWGgS1JPGOiS1BOdAj3JpiT7kxxIcvWI+Vcl+WqS25vbi8dfqiRpIYte4CLJCuB64BkMrh26J8nOqrpjqOl7qmrbEtQoSeqgyxn6BuBAVR2sqvuAHcDmpS1LknSiulyCbiVwqDV+GNg4ot0vJXkK8Gngt6vq0HCDJFuBrQBTU1PMzs6ecME63tzcnNtymZmZdAFa1pbqeO10TdEO3g/cVFXfS/JS4B3A04YbVdV2YDvA9PR0zczMjGn1Z7bZ2VncltLpY6mO1y5dLkeA1a3xVc20v1VVd1XV95rRtwE/PZ7yJElddQn0PcC6JBcmOQvYAuxsN0jy463RK4B94ytRktTFol0uVXU0yTZgN7ACuKGq9ia5DrilqnYCv5nkCuAo8HXgqiWsWZI0Qqc+9KraBewamnZNa/jVwKvHW5ok6UT4TVFJ6gkDXZJ6wkCXpJ4w0CWpJwx0SeoJA12SesJAl6SeMNAlqScMdEnqCQNdknrCQJeknjDQJaknDHRJ6gkDXZJ6wkCXpJ4w0CWpJzoFepJNSfYnOZDk6gXa/VKSSjI9vhIlSV0sGuhJVgDXA5cD64Erk6wf0e5c4OXAJ8ZdpCRpcV3O0DcAB6rqYFXdB+wANo9o9wfAG4DvjrE+SVJHXa4puhI41Bo/DGxsN0jyU8DqqvpAklfNt6AkW4GtAFNTU8zOzp5wwTre3Nyc23KZmZl0AVrWlup47XSR6IUkeQDwb4CrFmtbVduB7QDT09M1MzPzo65eDHYOt6V0+liq47VLl8sRYHVrfFUz7ZhzgccDs0k+B/wMsNN/jErSqdUl0PcA65JcmOQsYAuw89jMqvpGVV1QVWurai3wceCKqrplSSqWJI20aKBX1VFgG7Ab2AfcXFV7k1yX5IqlLlCS1E2nPvSq2gXsGpp2zTxtZ370siRJJ8pvikpSTxjoktQTBrok9YSBLkk9YaBLUk8Y6JLUEwa6JPWEgS5JPWGgS1JPGOiS1BMGuiT1hIEuST1hoEtSTxjoktQTBrok9USnQE+yKcn+JAeSXD1i/suS/E2S25P8VZL14y9VkrSQRQM9yQrgeuByYD1w5YjAfndVXVJVTwTeyOCi0ZKkU6jLGfoG4EBVHayq+4AdwOZ2g6r6Zmv0HKDGV6IkqYsul6BbCRxqjR8GNg43SvLrwCuAs4CnjVpQkq3AVoCpqSlmZ2dPsFyNMjc357ZcZmYmXYCWtaU6XlO18Ml0kucCm6rqxc3484GNVbVtnva/Cjyzql6w0HKnp6frlltuObmqdT+zs7PMzMxMugy1JZOuQMvZIrm7kCS3VtX0qHldulyOAKtb46uaafPZATync3WSpLHoEuh7gHVJLkxyFrAF2NlukGRda/TZwP8dX4mSpC4W7UOvqqNJtgG7gRXADVW1N8l1wC1VtRPYluQy4PvA3cCC3S2SpPHr8k9RqmoXsGto2jWt4ZePuS5J0gnym6KS1BMGuiT1hIEuST1hoEtSTxjoktQTBrok9YSBLkk9YaBLUk8Y6JLUEwa6JPWEgS5JPWGgS1JPGOiS1BMGuiT1hIEuST1hoEtST3QK9CSbkuxPciDJ1SPmvyLJHUk+meS/J1kz/lIlSQtZNNCTrACuBy4H1gNXJlk/1Ow2YLqqngC8F3jjuAuVJC2syxn6BuBAVR2sqvuAHcDmdoOq+nBVfacZ/TiwarxlSpIW0+WaoiuBQ63xw8DGBdq/CPjgqBlJtgJbAaamppidne1WpRY0NzfntlxmZiZdgJa1pTpeO10kuqskvwZMA08dNb+qtgPbAaanp2tmZmacqz9jzc7O4raUTh9Ldbx2CfQjwOrW+Kpm2v0kuQx4DfDUqvreeMqTJHXVpQ99D7AuyYVJzgK2ADvbDZJcCrwVuKKq7hx/mZKkxSwa6FV1FNgG7Ab2ATdX1d4k1yW5omn2r4CHAX+e5PYkO+dZnCRpiXTqQ6+qXcCuoWnXtIYvG3NdkqQT5DdFJaknDHRJ6gkDXZJ6wkCXpJ4w0CWpJ8b6TdFTJpl0BcvKzKQLWG6qJl2BNBGeoUtSTxjoktQTBrok9YSBLkk9YaBLUk8Y6JLUEwa6JPWEgS5JPWGgS1JPdAr0JJuS7E9yIMnVI+Y/Jcn/TnI0yXPHX6YkaTGLBnqSFcD1wOXAeuDKJOuHmn0BuAp497gLlCR10+W3XDYAB6rqIECSHcBm4I5jDarqc828Hy5BjZKkDroE+krgUGv8MLDxZFaWZCuwFWBqaorZ2dmTWYw/RqUFnex+NU4zky5Ay9pS7aOn9NcWq2o7sB1genq6ZmZmTuXqdYZwv9Jyt1T7aJd/ih4BVrfGVzXTJEnLSJdA3wOsS3JhkrOALcDOpS1LknSiFg30qjoKbAN2A/uAm6tqb5LrklwBkORJSQ4DzwPemmTvUhYtSTpepz70qtoF7Bqadk1reA+DrhhJ0oT4TVFJ6gkDXZJ6wkCXpJ4w0CWpJwx0SeoJA12SesJAl6SeMNAlqScMdEnqCQNdknrCQJeknjDQJaknDHRJ6gkDXZJ6wkCXpJ4w0CWpJzoFepJNSfYnOZDk6hHzH5zkPc38TyRZO/ZKJUkLWjTQk6wArgcuB9YDVyZZP9TsRcDdVXUR8CbgDeMuVJK0sC5n6BuAA1V1sKruA3YAm4fabAbe0Qy/F3h6koyvTEnSYrpcU3QlcKg1fhjYOF+bqjqa5BvAI4GvtRsl2QpsbUbnkuw/maJ1nAsY2tZnNM8lliP30bYfbR9dM9+MTheJHpeq2g5sP5XrPBMkuaWqpiddhzQf99FTo0uXyxFgdWt8VTNtZJskDwTOA+4aR4GSpG66BPoeYF2SC5OcBWwBdg612Qm8oBl+LvChqqrxlSlJWsyiXS5Nn/g2YDewArihqvYmuQ64pap2Am8H3pnkAPB1BqGvU8duLC137qOnQDyRlqR+8JuiktQTBrok9YSBfhpb7CcZpElLckOSO5N8atK1nAkM9NNUx59kkCbtRmDTpIs4Uxjop68uP8kgTVRVfYTBJ990Chjop69RP8mwckK1SFoGDHRJ6gkD/fTV5ScZJJ1BDPTTV5efZJB0BjHQT1NVdRQ49pMM+4Cbq2rvZKuS7i/JTcDHgMcmOZzkRZOuqc/86r8k9YRn6JLUEwa6JPWEgS5JPWGgS1JPGOiS1BMGuiT1hIEuST3x/wBPo0DpuwMSXQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -893,13 +893,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Action at time 6: Play-left\n", - "Reward at time 6: Loss\n" + "Action at time 6: Play-right\n", + "Reward at time 6: Reward\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -913,13 +913,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Action at time 7: Play-left\n", - "Reward at time 7: Reward\n" + "Action at time 7: Play-right\n", + "Reward at time 7: Loss\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -933,13 +933,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Action at time 8: Play-left\n", + "Action at time 8: Play-right\n", "Reward at time 8: Reward\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -953,8 +953,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Action at time 9: Play-left\n", - "Reward at time 9: Loss\n" + "Action at time 9: Play-right\n", + "Reward at time 9: Reward\n" ] } ], @@ -996,7 +996,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -1011,12 +1011,12 @@ "output_type": "stream", "text": [ "Action at time 0: Play-left\n", - "Reward at time 0: Loss\n" + "Reward at time 0: Reward\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -1030,13 +1030,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Action at time 1: Play-right\n", - "Reward at time 1: Reward\n" + "Action at time 1: Play-left\n", + "Reward at time 1: Loss\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -1050,13 +1050,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Action at time 2: Play-right\n", - "Reward at time 2: Reward\n" + "Action at time 2: Play-left\n", + "Reward at time 2: Loss\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -1076,7 +1076,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -1091,12 +1091,12 @@ "output_type": "stream", "text": [ "Action at time 4: Play-right\n", - "Reward at time 4: Loss\n" + "Reward at time 4: Reward\n" ] }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEICAYAAABPgw/pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAATdUlEQVR4nO3df7DldX3f8ecLEIiAkLi6ld2VJbKxLmqCuQEzSesdJcliE9ZMkwhJ2oDUrdPSmvFXSWIpQxJT0yQaIw1uDEMiCiU2ddYGQ2cab5jUYIFBrcuWzoro7qKiCMhFKSG++8f3u+l3z55779nl3L27n30+Zs7c74/P+X7f5/vjdb7nc37cVBWSpCPfMStdgCRpOgx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOhHmCSzSXYPxrcnmZ3wvj+ZZFeS+STnTKme9UkqyXHTWN7TNbp9NH1JfjnJ+1e6Du3PQF8BSe5P8q0+WB9O8mdJ1h3Msqrq7Kqam7D5bwGXV9XJVXX3wazvUEpyfZJfW6JNJTnrUNU0DdOs+ekuqz8Wz19k/n5PkFX1jqr6Zwe7zgPRP77H+3Nl3ieSxRnoK+cnqupk4HnAV4DfOwTrPAPYfgjWI03T9/YXIScfqieSI5WBvsKq6gngw8DGvdOSnJDkt5J8MclXklyb5DvG3X94hZXkmCRXJPlckoeS3Jzku/rlzQPHAp9O8rm+/b9JsifJY0nuTfKqBdbxj5LcneQbfZfNVWOavS7JA0m+lOQtI4/l3f28B/rhE/p5lyT5q5F1VZKzkmwBfg54W39l9tExdd3WD366b/Pawbw3J3mwr+fSg9m2ffvXJ9nRb6N7krysn/6iJHNJHum7vS4c3Of6JNf0r7weS/LJJC9YrOYkP57kU/3yPpHkpf301yb5fJJn9eMXJPlykucs9vgHtbwgyV/0x8PXknwwyWn9vA8Azwc+2t//bSP3PQn4GHD64Ar59CRXJbmhb7O3y+3S/th4OMkbkvxAks/0j+e9I8t9Xb9NH05ya5IzFtr+OkBV5e0Q34D7gfP74WcCfwT88WD+u4BtwHcBpwAfBX6jnzcL7F5gWW8EbgfWAicA7wNuHLQt4Kx++IXALuD0fnw98IIF6p0FXkJ3AfBSulcUrxncr4AbgZP6dl8d1HR1X9NzgecAnwB+tZ93CfBXI+sa1ng98GtLbMu/az+o9al+vc8AXg18E/jOpbbtmGX/NLAH+AEgwFl0r3KeAewEfhk4Hngl8BjwwkHdDwHnAscBHwRuWqTmc4AHgfPonnR/od+vJ/TzP9gv89nAA8CPL7SsMY/hLOBH+uPhOcBtwLvHHT+L7PvdI9OuAm4Y2f/XAicCPwo8AXyk3+dr+sf2ir795n7bvajfNm8HPrHE/n0A+DLwp8D6lT5/D+fbihdwNN76k2geeAT4m/6AfUk/L8DjDMIV+EHg8/3wPicY+wb6DuBVg3nP65d/XD8+DMuz+hPtfOAZB1j/u4F39cN7T+i/P5j/m8Af9sOfA149mPdjwP398CUsT6B/a+9j7qc9CLx8qW07Ztm3Am8cM/0f9AFzzGDajcBVg7rfP5j3auB/L1Lz79M/yQ2m3TsIwdOALwL/C3jfYo9/gn33GuDuccfPAu33Od76aVexf6CvGcx/CHjtYPw/A7/YD38MuGww7xi6J9wzFlj/P6R70jwNeC/w2eG+9bbvzS6XlfOaqjqN7qrmcuAvk/w9uquoZwJ39S9XHwH+vJ++lDOA/zK43w7gb4HVow2raifwi3Qn54NJbkpy+riFJjkvyceTfDXJo8AbgFUjzXYNhr8A7F3W6f34uHnL5aGqemow/k3gZA58266je0IadTqwq6q+PZj2Bbqr0b2+PGb9CzkDePPemvq61vXroaoeAf4EeDHw24ssZz9JVvf7dk+SbwA3sP++m4avDIa/NWZ87+M/A/jdweP8Ot0T7XDb/Z2quq2qnuy3wRuBM+mu7jWGgb7Cqupvq+pP6YL3h4Gv0Z0AZ1fVaf3t1OreQF3KLuCCwf1Oq6oTq2rPAuv+UFX9MN1JVsA7F1juh+i6KdZV1al0L68z0mb4KZ3n073qoP97xgLzHqcLWAD6J7R9SlygnoN1oNt2F/CCMdMfANYlGZ4/z6frnjkYu4BfH9lvz6yqGwGSfB/wOrpXAe85wGW/g247vqSqngX8PPvuu6W28bT3wS7gn4881u+oqk9MeP9i/2NPPQN9haWzGfhOYEd/1fcHwLuSPLdvsybJj02wuGuBX9/7JlP/xtnmBdb7wiSv7N+gfIIu6L49ri1dX/PXq+qJJOcCPzumzb9N8swkZwOXAv+pn34j8Pa+llXAlXRXiQCfBs5O8n1JTqR7tTD0FeC7l3jMk7QB4CC27fuBtyT5/n4/ndVv20/SXXW/Lckz0n0P4CeAmyapY0zNfwC8oX8llCQnpXsj+pR+u9xA119/KbAmyb9YZFmjTqHr3ns0yRrgrUvUMq7WZyc5daJHtrRrgV/qjxOSnJrkp8c1TLL32Dg2ycl0r0720L3y1Dgr3edzNN7o+i2/RXeiPUbXL/hzg/kn0l1Z3Qd8g+4A/tf9vFkW7kM/BngTXf/rY3TdBe8YtB32T78U+J99u68D/5X+DdIx9f4UXZfCY32797J/H+oW/v+bV28beSzvAb7U394DnDiY/yt0V8676K4ehzVuAD5F917DRxao7Q39ch8BfmZ0+4zZRgtu20WWf2+/rz4LnNNPPxv4S+BR4B7gJwf3uZ5B3/+YfbZPzf20TcAd/bQv0XWxnEL3Ju7HBvf93n5/bVhoWSP1nw3c1df/KeDNI7VspuuffwR4ywLb4Dq6fvFH6LqBrhqz/4fvWewGZgfjNwBvH4z/E7r3A77R7/frFljvK/tt/zjd+yAf2fu4vY2/pd9wkqQjnF0uktQIA12SGmGgS1IjDHRJasSK/eTpqlWrav369Su1+qY8/vjjnHTSSStdhrQgj9Hpueuuu75WVWO/DLdigb5+/XruvPPOlVp9U+bm5pidnV3pMqQFeYxOT5IvLDTPLhdJaoSBLkmNWDLQk1yX7nelP7vA/CR5T5Kd/e8fv2z6ZUqSljLJFfr1dF9LXsgFdF/R3kD39e/ff/plSZIO1JKBXlW30f12xEI20/1zhqqq24HTkjxvWgVKkiYzjU+5rGHf38Le3U/70mjDdP9WbAvA6tWrmZubm8LqNT8/77bUYc1j9NA4pB9brKqtwFaAmZmZ8mNM0+FHwnS48xg9NKbxKZc97PvPDdZy8D/0L0k6SNMI9G3AP+0/7fJy4NGq2q+7RZK0vJbscklyI90P9K9Kshv4d3T/9Zyquha4he6f4O6k+y8uly5XsdIRI/6XtKHZlS7gcLNM/4diyUCvqouXmF/Av5xaRZKkg+I3RSWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqRETBXqSTUnuTbIzyRVj5j8/yceT3J3kM0lePf1SJUmLWTLQkxwLXANcAGwELk6ycaTZ24Gbq+oc4CLgP067UEnS4ia5Qj8X2FlV91XVk8BNwOaRNgU8qx8+FXhgeiVKkiZx3ARt1gC7BuO7gfNG2lwF/Lck/wo4CTh/KtVJkiY2SaBP4mLg+qr67SQ/CHwgyYur6tvDRkm2AFsAVq9ezdzc3JRWf3Sbn593Wx5mZle6AB3Wlut8nSTQ9wDrBuNr+2lDlwGbAKrqr5OcCKwCHhw2qqqtwFaAmZmZmp2dPbiqtY+5uTncltKRY7nO10n60O8ANiQ5M8nxdG96bhtp80XgVQBJXgScCHx1moVKkha3ZKBX1VPA5cCtwA66T7NsT3J1kgv7Zm8GXp/k08CNwCVVVctVtCRpfxP1oVfVLcAtI9OuHAzfA/zQdEuTJB0IvykqSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNmCjQk2xKcm+SnUmuWKDNzyS5J8n2JB+abpmSpKUct1SDJMcC1wA/AuwG7kiyraruGbTZAPwS8ENV9XCS5y5XwZKk8Sa5Qj8X2FlV91XVk8BNwOaRNq8HrqmqhwGq6sHplilJWsokgb4G2DUY391PG/oe4HuS/I8ktyfZNK0CJUmTWbLL5QCWswGYBdYCtyV5SVU9MmyUZAuwBWD16tXMzc1NafVHt/n5ebflYWZ2pQvQYW25ztdJAn0PsG4wvrafNrQb+GRV/Q3w+ST/hy7g7xg2qqqtwFaAmZmZmp2dPciyNTQ3N4fbUjpyLNf5OkmXyx3AhiRnJjkeuAjYNtLmI/QXJUlW0XXB3De9MiVJS1ky0KvqKeBy4FZgB3BzVW1PcnWSC/tmtwIPJbkH+Djw1qp6aLmKliTtb6I+9Kq6BbhlZNqVg+EC3tTfJEkrwG+KSlIjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWrERIGeZFOSe5PsTHLFIu3+cZJKMjO9EiVJk1gy0JMcC1wDXABsBC5OsnFMu1OANwKfnHaRkqSlTXKFfi6ws6ruq6ongZuAzWPa/SrwTuCJKdYnSZrQcRO0WQPsGozvBs4bNkjyMmBdVf1ZkrcutKAkW4AtAKtXr2Zubu6AC9b+5ufn3ZaHmdmVLkCHteU6XycJ9EUlOQb4HeCSpdpW1VZgK8DMzEzNzs4+3dWL7uBwW0pHjuU6XyfpctkDrBuMr+2n7XUK8GJgLsn9wMuBbb4xKkmH1iSBfgewIcmZSY4HLgK27Z1ZVY9W1aqqWl9V64HbgQur6s5lqViSNNaSgV5VTwGXA7cCO4Cbq2p7kquTXLjcBUqSJjNRH3pV3QLcMjLtygXazj79siRJB8pvikpSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMmCvQkm5Lcm2RnkivGzH9TknuSfCbJf09yxvRLlSQtZslAT3IscA1wAbARuDjJxpFmdwMzVfVS4MPAb067UEnS4ia5Qj8X2FlV91XVk8BNwOZhg6r6eFV9sx+9HVg73TIlSUs5boI2a4Bdg/HdwHmLtL8M+Ni4GUm2AFsAVq9ezdzc3GRValHz8/Nuy8PM7EoXoMPacp2vkwT6xJL8PDADvGLc/KraCmwFmJmZqdnZ2Wmu/qg1NzeH21I6cizX+TpJoO8B1g3G1/bT9pHkfOBXgFdU1f+dTnmSpElN0od+B7AhyZlJjgcuArYNGyQ5B3gfcGFVPTj9MiVJS1ky0KvqKeBy4FZgB3BzVW1PcnWSC/tm/wE4GfiTJJ9Ksm2BxUmSlslEfehVdQtwy8i0KwfD50+5LknSAfKbopLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1IjjJmmUZBPwu8CxwPur6t+PzD8B+GPg+4GHgNdW1f3TLXWfFS7boo9EsytdwOGmaqUrkFbEklfoSY4FrgEuADYCFyfZONLsMuDhqjoLeBfwzmkXKkla3CRdLucCO6vqvqp6ErgJ2DzSZjPwR/3wh4FXJV5GS9KhNEmXyxpg12B8N3DeQm2q6qkkjwLPBr42bJRkC7ClH51Pcu/BFK39rGJkWx/VvJY4HHmMDj29Y/SMhWZM1Ic+LVW1Fdh6KNd5NEhyZ1XNrHQd0kI8Rg+NSbpc9gDrBuNr+2lj2yQ5DjiV7s1RSdIhMkmg3wFsSHJmkuOBi4BtI222Ab/QD/8U8BdVftRAkg6lJbtc+j7xy4Fb6T62eF1VbU9yNXBnVW0D/hD4QJKdwNfpQl+Hjt1YOtx5jB4C8UJaktrgN0UlqREGuiQ1wkA/giXZlOTeJDuTXLHS9UijklyX5MEkn13pWo4GBvoRasKfZJBW2vXAppUu4mhhoB+5JvlJBmlFVdVtdJ980yFgoB+5xv0kw5oVqkXSYcBAl6RGGOhHrkl+kkHSUcRAP3JN8pMMko4iBvoRqqqeAvb+JMMO4Oaq2r6yVUn7SnIj8NfAC5PsTnLZStfUMr/6L0mN8ApdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RG/D8NAHU1jcNz7wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -1116,7 +1116,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -1136,7 +1136,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -1151,12 +1151,12 @@ "output_type": "stream", "text": [ "Action at time 7: Play-right\n", - "Reward at time 7: Loss\n" + "Reward at time 7: Reward\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -1176,7 +1176,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEICAYAAABPgw/pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAATcElEQVR4nO3df7BcZX3H8feXBER+SCyRW0liQiFFg4LiBeyMjlf8laA2OKMVtFqoNs1UbJ1qFa1apv4aax2RgsZIM6lFk2qlNmiU6UxdqYNYYEQkYpiIQi5BESHABRwMfPvHOaknm927e8PebO6T92tm5+45z7PnfPfsns85+9z9EZmJJGnmO2DYBUiSBsNAl6RCGOiSVAgDXZIKYaBLUiEMdEkqhIE+w0TEWESMN6Y3RcRYn7d9dURsjYiJiHjOgOpZFBEZEbMHsbzHq337aPAi4r0Rcemw69DuDPQhiIifRcTDdbDeGxFfj4gFe7KszDwhM1t9dv9H4LzMPCwzv78n69ubImJtRHyoR5+MiOP2Vk2DMMiaH++y6ufiSyZp3+0AmZkfycy37Ok6pyIiXhURN9X7ytURsWRvrHemMtCH51WZeRjwVOAXwD/thXUuBDbthfVIj1tELAa+AKwE5gBXABv2lVeD+6TM9LKXL8DPgJc0ps8AbmlMP4HqbPp2qrBfBTyxbhsDxjsti+oAfT7wE+BXwJeA36mXNwEk8CDwk7r/u4E7gAeAzcCLu9T7CuD7wP3AVuCCRtuierkrgG3AncA72u7LhXXbtvr6E+q2c4DvtK0rgePq5f0GeKSu/YoOdV3VuE8TwOt2bh/gHcBddT3n9rNtu9z3PwNurrfRj4CT6/nPAFrAdqqD5B82brMWuAT4en277wHHdqu5nv9K4IZ6eVcDJ9bzXwfcCjypnl4G/Bx4SrdltdV/LPDf9fPhbqqAnFO3/SvwGPBwfft3td320Lrtsbp9AjgauAC4rO3xP7d+btxLFcCnADfW9+fituX+ab1N7wWuBBZ22fbnAV9vTB9Q19PxeeolDfShbPRdQ/gQ4F+AzzfaLwQ2UIXx4VRnJh+t28boHuhvB64B5lMF12eBdY2+CRxXXz++3gGPrqcX7QydDvWOAc+qd6gTqYLwzMbtElhXB8CzgF82avr7uqaj6hC6Gvhg3XYOXQK9vr4W+FCPbfn//Ru17qjXeyDVwfIh4Mm9tm2HZb+W6oB3ChBUB5qF9XK3AO8FDgJOpwru4xt13wOcCsymCtH1k9R8MtXB5zRgFvAn9eO688D3hXqZR1IdFF/ZbVkd7sNxwEvr58POg8CFnZ4/kzz2423zLmD3QF8FHAy8DPg18NX6MZ9X37cX1v3PrLfdM+pt8z7g6i7rfhuwsTE9q172Xw17H95XL0MvYH+81DvRBNXZy456J31W3RZUZ1zHNvr/AfDT+vouOxi7BvrNNM5eqIZzfgPMrqebYXlcvaO9BDhwivVfCHyyvr5zh356o/0fgH+ur/8EOKPR9nLgZ/X1c5ieQH94532u590FPK/Xtu2w7Cs7hQfwAqqz5AMa89ZRv3Kp67600XYG8ONJav4M9UGuMW9zIwTnUL2i+CHw2cnufx+P3ZnA9zs9f7r03+X5Vs+7gN0DfV6j/Vc0Xi0AXwHeXl//BvDmRtsBVAfchR3W/fT68RqjOnC+n+rVwnsGsR+WeHEMfXjOzMw5VGdO5wHfjojfpTqLOgS4PiK2R8R24Jv1/F4WAv/RuN3NwKPASHvHzNxCdUZ/AXBXRKyPiKM7LTQiTouIb0XELyPiPqqX1HPbum1tXL+N6qU59d/burRNl19l5o7G9EPAYUx92y6gOiC1OxrYmpmPNebdRnU2utPPO6y/m4XAO3bWVNe1oF4Pmbkd+DLwTOATkyxnNxFxVP3Y3hER9wOXsftjNwi/aFx/uMP0zvu/EPhU437eQ3WgbW47ADLzx1SvVi6mGjqbSzXs5buYujDQhywzH83My6mC9/lU45wPAydk5pz6ckRW/0DtZSuwrHG7OZl5cGbe0WXdX8zM51PtZAl8rMtyv0g1TLEgM4+genkdbX2a79J5GtWrDuq/C7u0PUgVsADUB7RdSuxSz56a6rbdSjUG3W4bsCAimvvP06iGZ/bEVuDDbY/bIZm5DiAink017rwOuGiKy/4o1XY8MTOfBPwxuz52vbbxoB+DrcCft93XJ2bm1R1XnvnvmfnMzDwS+Duq59K1A66pGAb6kEVlOfBk4Ob6rO9zwCcj4qi6z7yIeHkfi1sFfDgiFta3e0q97E7rPT4iTo+IJ1CNSz5MdVDp5HDgnsz8dUScCry+Q5/3R8QhEXEC1T/I/q2evw54X13LXOADVGeJAD8AToiIZ0fEwVSvFpp+Afxej/vcTx8A9mDbXgq8MyKeWz9Ox9Xb9ntUB6N3RcSB9ecAXgWs76eODjV/DlhZvxKKiDg0Il4REYfX2+UyqvH6c4F5EfEXkyyr3eHUw3sRMQ/4mx61dKr1yIg4oq971tsq4D3184SIOCIiXtutc73tZ0XEU6j+J3RFfeauToY95rM/XqjGLXe+s+AB4CbgDY32g4GPUL274X6qoZO/rNvGmPxdLn9NNf76ANVwwUcafZvj0ycC/1v3uwf4GvU/SDvU+xqqIYUH6n4Xs/sY6s53ufycxrsl6vtyEdVL5jvr6wc32v+W6sx5K9XZY7PGxfz2nR9f7VLbynq524E/at8+HbZR1207yfI314/VTcBz6vknAN8G7qMaBnh14zZraYz9d3jMdqm5nreU6sxze932Zaow/iTwzcZtT6ofr8XdltVW/wnA9XX9N1C9+6dZy3Kq8fntwDu7bIM1VOPi2+n+Lpfm/yzGgbHG9GXA+xrTb6T6f8DOd02tmWT7f4ffPkc/Cxw67P13X75EvdEkSTOcQy6SVAgDXZIKYaBLUiEMdEkqxNC+5Gbu3Lm5aNGiYa2+KA8++CCHHnrosMuQuvI5OjjXX3/93ZnZ8cNwQwv0RYsWcd111w1r9UVptVqMjY0NuwypK5+jgxMRt3Vrc8hFkgphoEtSIQx0SSqEgS5JhTDQJakQPQM9ItZExF0RcVOX9oiIiyJiS0TcGBEnD75MSVIv/Zyhr6X6JrhullF9K95iqm/c+8zjL0uSNFU9Az0zr6L66spullP9HmZm5jXAnIh46qAKlCT1ZxBj6PPY9efHxunwc1KSpOk1iE+Ktv8UGXT52aqIWEE1LMPIyAitVmsAq9fExITbch809qIXDbuEfcbYsAvYx7S+9a1pWe4gAn2cXX9Pcj6//c3IXWTmamA1wOjoaPpR4MHwY9XSzDJd++sghlw2AG+q3+3yPOC+zLxzAMuVJE1BzzP0iFhH9YppbkSMU/3y9oEAmbkK2AicAWwBHqL6IVtJ0l7WM9Az8+we7Qm8dWAVSZL2iJ8UlaRCGOiSVAgDXZIKYaBLUiEMdEkqhIEuSYUw0CWpEAa6JBXCQJekQhjoklQIA12SCmGgS1IhDHRJKoSBLkmFMNAlqRAGuiQVwkCXpEIY6JJUCANdkgphoEtSIQx0SSqEgS5JhTDQJakQBrokFcJAl6RCGOiSVAgDXZIKYaBLUiEMdEkqhIEuSYUw0CWpEAa6JBXCQJekQvQV6BGxNCI2R8SWiDi/Q/sREXFFRPwgIjZFxLmDL1WSNJmegR4Rs4BLgGXAEuDsiFjS1u2twI8y8yRgDPhERBw04FolSZPo5wz9VGBLZt6amY8A64HlbX0SODwiAjgMuAfYMdBKJUmTmt1Hn3nA1sb0OHBaW5+LgQ3ANuBw4HWZ+Vj7giJiBbACYGRkhFartQclq93ExITbch80NuwCtM+arv21n0CPDvOybfrlwA3A6cCxwH9FxP9k5v273ChzNbAaYHR0NMfGxqZarzpotVq4LaWZY7r2136GXMaBBY3p+VRn4k3nApdnZQvwU+DpgylRktSPfgL9WmBxRBxT/6PzLKrhlabbgRcDRMQIcDxw6yALlSRNrueQS2buiIjzgCuBWcCazNwUESvr9lXAB4G1EfFDqiGad2fm3dNYtySpTT9j6GTmRmBj27xVjevbgJcNtjRJ0lT4SVFJKoSBLkmFMNAlqRAGuiQVwkCXpEIY6JJUCANdkgphoEtSIQx0SSqEgS5JhTDQJakQBrokFcJAl6RCGOiSVAgDXZIKYaBLUiEMdEkqhIEuSYUw0CWpEAa6JBXCQJekQhjoklQIA12SCmGgS1IhDHRJKoSBLkmFMNAlqRAGuiQVwkCXpEIY6JJUCANdkgphoEtSIfoK9IhYGhGbI2JLRJzfpc9YRNwQEZsi4tuDLVOS1MvsXh0iYhZwCfBSYBy4NiI2ZOaPGn3mAJ8Glmbm7RFx1DTVK0nqop8z9FOBLZl5a2Y+AqwHlrf1eT1weWbeDpCZdw22TElSLz3P0IF5wNbG9DhwWluf3wcOjIgWcDjwqcz8fPuCImIFsAJgZGSEVqu1ByWr3cTEhNtyHzQ27AK0z5qu/bWfQI8O87LDcp4LvBh4IvDdiLgmM2/Z5UaZq4HVAKOjozk2NjblgrW7VquF21KaOaZrf+0n0MeBBY3p+cC2Dn3uzswHgQcj4irgJOAWJEl7RT9j6NcCiyPimIg4CDgL2NDW5z+BF0TE7Ig4hGpI5ubBlipJmkzPM/TM3BER5wFXArOANZm5KSJW1u2rMvPmiPgmcCPwGHBpZt40nYVLknbVz5ALmbkR2Ng2b1Xb9MeBjw+uNEnSVPhJUUkqhIEuSYUw0CWpEAa6JBXCQJekQhjoklQIA12SCmGgS1IhDHRJKoSBLkmFMNAlqRAGuiQVwkCXpEIY6JJUCANdkgphoEtSIQx0SSqEgS5JhTDQJakQBrokFcJAl6RCGOiSVAgDXZIKYaBLUiEMdEkqhIEuSYUw0CWpEAa6JBXCQJekQhjoklQIA12SCmGgS1IhDHRJKkRfgR4RSyNic0RsiYjzJ+l3SkQ8GhGvGVyJkqR+9Az0iJgFXAIsA5YAZ0fEki79PgZcOegiJUm99XOGfiqwJTNvzcxHgPXA8g793gZ8BbhrgPVJkvo0u48+84Ctjelx4LRmh4iYB7waOB04pduCImIFsAJgZGSEVqs1xXLVycTEhNtyHzQ27AK0z5qu/bWfQI8O87Jt+kLg3Zn5aESn7vWNMlcDqwFGR0dzbGysvyo1qVarhdtSmjmma3/tJ9DHgQWN6fnAtrY+o8D6OsznAmdExI7M/OogipQk9dZPoF8LLI6IY4A7gLOA1zc7ZOYxO69HxFrga4a5JO1dPQM9M3dExHlU716ZBazJzE0RsbJuXzXNNUqS+tDPGTqZuRHY2DavY5Bn5jmPvyxJ0lT5SVFJKoSBLkmFMNAlqRAGuiQVwkCXpEIY6JJUCANdkgphoEtSIQx0SSqEgS5JhTDQJakQBrokFcJAl6RCGOiSVAgDXZIKYaBLUiEMdEkqhIEuSYUw0CWpEAa6JBXCQJekQhjoklQIA12SCmGgS1IhDHRJKoSBLkmFMNAlqRAGuiQVwkCXpEIY6JJUCANdkgphoEtSIfoK9IhYGhGbI2JLRJzfof0NEXFjfbk6Ik4afKmSpMn0DPSImAVcAiwDlgBnR8SStm4/BV6YmScCHwRWD7pQSdLk+jlDPxXYkpm3ZuYjwHpgebNDZl6dmffWk9cA8wdbpiSpl9l99JkHbG1MjwOnTdL/zcA3OjVExApgBcDIyAitVqu/KjWpiYkJt+U+aGzYBWifNV37az+BHh3mZceOES+iCvTnd2rPzNXUwzGjo6M5NjbWX5WaVKvVwm0pzRzTtb/2E+jjwILG9HxgW3uniDgRuBRYlpm/Gkx5kqR+9TOGfi2wOCKOiYiDgLOADc0OEfE04HLgjZl5y+DLlCT10vMMPTN3RMR5wJXALGBNZm6KiJV1+yrgA8CRwKcjAmBHZo5OX9mSpHb9DLmQmRuBjW3zVjWuvwV4y2BLkyRNhZ8UlaRCGOiSVAgDXZIKYaBLUiEMdEkqhIEuSYUw0CWpEAa6JBXCQJekQhjoklQIA12SCmGgS1IhDHRJKoSBLkmFMNAlqRAGuiQVwkCXpEIY6JJUCANdkgphoEtSIQx0SSqEgS5JhTDQJakQBrokFcJAl6RCGOiSVAgDXZIKYaBLUiEMdEkqhIEuSYUw0CWpEAa6JBXCQJekQvQV6BGxNCI2R8SWiDi/Q3tExEV1+40RcfLgS5UkTaZnoEfELOASYBmwBDg7Ipa0dVsGLK4vK4DPDLhOSVIP/ZyhnwpsycxbM/MRYD2wvK3PcuDzWbkGmBMRTx1wrZKkSczuo888YGtjehw4rY8+84A7m50iYgXVGTzARERsnlK16mYucPewi5Am4XO0KeLx3Hpht4Z+Ar3TmnMP+pCZq4HVfaxTUxAR12Xm6LDrkLrxObp39DPkMg4saEzPB7btQR9J0jTqJ9CvBRZHxDERcRBwFrChrc8G4E31u12eB9yXmXe2L0iSNH16Drlk5o6IOA+4EpgFrMnMTRGxsm5fBWwEzgC2AA8B505fyerAYSzt63yO7gWRudtQtyRpBvKTopJUCANdkgphoM9gvb6SQRq2iFgTEXdFxE3DrmV/YKDPUH1+JYM0bGuBpcMuYn9hoM9c/XwlgzRUmXkVcM+w69hfGOgzV7evW5C0nzLQZ66+vm5B0v7DQJ+5/LoFSbsw0Geufr6SQdJ+xECfoTJzB7DzKxluBr6UmZuGW5W0q4hYB3wXOD4ixiPizcOuqWR+9F+SCuEZuiQVwkCXpEIY6JJUCANdkgphoEtSIQx0SSqEgS5Jhfg/f5YkBVeREcQAAAAASUVORK5CYII=", + "image/png": "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", "text/plain": [ "
" ] @@ -1231,7 +1231,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.10" + "version": "3.8.8" }, "vscode": { "interpreter": { diff --git a/examples/building_up_agent_loop.ipynb b/examples/building_up_agent_loop.ipynb new file mode 100644 index 00000000..cdb45e55 --- /dev/null +++ b/examples/building_up_agent_loop.ipynb @@ -0,0 +1,182 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import jax.numpy as jnp\n", + "import jax.tree_util as jtu\n", + "from jax import random as jr\n", + "from pymdp.jax.agent import Agent as AIFAgent\n", + "from pymdp.utils import random_A_matrix, random_B_matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(2, 10, 5, 4)\n", + "[1 1]\n", + "(10, 3, 3, 3)\n", + "(10, 3, 3, 2)\n" + ] + } + ], + "source": [ + "def scan(f, init, xs, length=None, axis=0):\n", + " if xs is None:\n", + " xs = [None] * length\n", + " carry = init\n", + " ys = []\n", + " for x in xs:\n", + " carry, y = f(carry, x)\n", + " if y is not None:\n", + " ys.append(y)\n", + " \n", + " ys = None if len(ys) < 1 else jtu.tree_map(lambda *x: jnp.stack(x,axis=axis), *ys)\n", + "\n", + " return carry, ys\n", + "\n", + "def evolve_trials(agent, env, block_idx, num_timesteps, prng_key=jr.PRNGKey(0)):\n", + "\n", + " batch_keys = jr.split(prng_key, batch_size)\n", + " def step_fn(carry, xs):\n", + " actions = carry['actions']\n", + " outcomes = carry['outcomes']\n", + " beliefs = agent.infer_states(outcomes, actions, *carry['args'])\n", + " q_pi, _ = agent.infer_policies(beliefs)\n", + " actions_t = agent.sample_action(q_pi, rng_key=batch_keys)\n", + "\n", + " outcome_t = env.step(actions_t)\n", + " outcomes = jtu.tree_map(\n", + " lambda prev_o, new_o: jnp.concatenate([prev_o, jnp.expand_dims(new_o, -1)], -1), outcomes, outcome_t\n", + " )\n", + "\n", + " if actions is not None:\n", + " actions = jnp.concatenate([actions, jnp.expand_dims(actions_t, -2)], -2)\n", + " else:\n", + " actions = jnp.expand_dims(actions_t, -2)\n", + "\n", + " args = agent.update_empirical_prior(actions_t, beliefs)\n", + "\n", + " ### @ NOTE !!!!: Shape of policy_probs = (num_blocks, num_trials, batch_size, num_policies) if scan axis = 0, but size of `actions` will \n", + " ### be (num_blocks, batch_size, num_trials, num_controls) -- so we need to 1) swap axes to both to have the same first three dimensiosn aligned,\n", + " # 2) use the action indices (the integers stored in the last dimension of `actions`) to index into the policy_probs array\n", + " \n", + " # args = (pred_{t+1}, [post_1, post_{2}, ..., post_{t}])\n", + " # beliefs = [post_1, post_{2}, ..., post_{t}]\n", + " return {'args': args, 'outcomes': outcomes, 'beliefs': beliefs, 'actions': actions}, {'policy_probs': q_pi}\n", + "\n", + " \n", + " outcome_0 = jtu.tree_map(lambda x: jnp.expand_dims(x, -1), env.step())\n", + " # qs_hist = jtu.tree_map(lambda x: jnp.expand_dims(x, -2), agent.D) # add a time dimension to the initial state prior\n", + " init = {\n", + " 'args': (agent.D, None,),\n", + " 'outcomes': outcome_0, \n", + " 'beliefs': [],\n", + " 'actions': None\n", + " }\n", + " last, q_pis_ = scan(step_fn, init, range(num_timesteps), axis=1)\n", + "\n", + " return last, q_pis_, env\n", + "\n", + "def step_fn(carry, block_idx):\n", + " agent, env = carry\n", + " output, q_pis_, env = evolve_trials(agent, env, block_idx, num_timesteps)\n", + " args = output.pop('args')\n", + " output['beliefs'] = agent.infer_states(output['outcomes'], output['actions'], *args)\n", + " output.update(q_pis_)\n", + "\n", + " # How to deal with contiguous blocks of trials? Two options we can imagine: \n", + " # A) you use final posterior (over current and past timesteps) to compute the smoothing distribution over qs_{t=0} and update pD, and then pass pD as the initial state prior ($D = \\mathbb{E}_{pD}[qs_{t=0}]$);\n", + " # B) we don't assume that blocks 'reset time', and are really just adjacent chunks of one long sequence, so you set the initial state prior to be the final output (`output['beliefs']`) passed through\n", + " # the transition model entailed by the action taken at the last timestep of the previous block.\n", + " # print(output['beliefs'].shape)\n", + " agent = agent.learning(**output)\n", + " \n", + " return (agent, env), output\n", + "\n", + "# define an agent and environment here\n", + "batch_size = 10\n", + "num_obs = [3, 3]\n", + "num_states = [3, 3]\n", + "num_controls = [2, 2]\n", + "num_blocks = 2\n", + "num_timesteps = 5\n", + "\n", + "A_np = random_A_matrix(num_obs=num_obs, num_states=num_states)\n", + "B_np = random_B_matrix(num_states=num_states, num_controls=num_controls)\n", + "A = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_size,) + x.shape), list(A_np))\n", + "B = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_size,) + x.shape), list(B_np))\n", + "C = [jnp.zeros((batch_size, no)) for no in num_obs]\n", + "D = [jnp.ones((batch_size, ns)) / ns for ns in num_states]\n", + "E = jnp.ones((batch_size, 4 )) / 4 \n", + "\n", + "pA = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_size,) + x.shape), list(A_np))\n", + "pB = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_size,) + x.shape), list(B_np))\n", + "\n", + "class TestEnv:\n", + " def __init__(self, num_obs, prng_key=jr.PRNGKey(0)):\n", + " self.num_obs=num_obs\n", + " self.key = prng_key\n", + " def step(self, actions=None):\n", + " # return a list of random observations for each agent or parallel realization (each entry in batch_dim)\n", + " obs = [jr.randint(self.key, (batch_size,), 0, no) for no in self.num_obs]\n", + " self.key, _ = jr.split(self.key)\n", + " return obs\n", + "\n", + "agents = AIFAgent(A, B, C, D, E, pA, pB, use_param_info_gain=True, use_inductive=False, inference_algo='fpi', sampling_mode='marginal', action_selection='stochastic')\n", + "env = TestEnv(num_obs)\n", + "init = (agents, env)\n", + "(agents, env), sequences = scan(step_fn, init, range(num_blocks) )\n", + "print(sequences['policy_probs'].shape)\n", + "print(sequences['actions'][0][0][0])\n", + "print(agents.A[0].shape)\n", + "print(agents.B[0].shape)\n", + "# def loss_fn(agents):\n", + "# env = TestEnv(num_obs)\n", + "# init = (agents, env)\n", + "# (agents, env), sequences = scan(step_fn, init, range(num_blocks)) \n", + "\n", + "# return jnp.sum(jnp.log(sequences['policy_probs']))\n", + "\n", + "# dLoss_dAgents = jax.grad(loss_fn)(agents)\n", + "# print(dLoss_dAgents.A[0].shape)\n", + "\n", + "\n", + "# sequences = jtu.tree_map(lambda x: x.swapaxes(1, 2), sequences)\n", + "\n", + "# NOTE: all elements of sequences will have dimensionality blocks, trials, batch_size, ...\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "jax_pymdp_test", + "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.11.6" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/inductive_inference_example.ipynb b/examples/inductive_inference_example.ipynb new file mode 100644 index 00000000..d4745fb4 --- /dev/null +++ b/examples/inductive_inference_example.ipynb @@ -0,0 +1,146 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from pymdp.jax import control\n", + "import jax.numpy as jnp\n", + "import jax.tree_util as jtu\n", + "from jax import nn, vmap, random, lax\n", + "\n", + "from typing import List, Optional\n", + "from jaxtyping import Array\n", + "from jax import random as jr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Set up generative model (random one with trivial observation model)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up a generative model\n", + "num_states = [5, 3]\n", + "num_controls = [2, 2]\n", + "\n", + "# make some arbitrary policies (policy depth 3, 2 control factors)\n", + "policy_1 = jnp.array([[0, 1],\n", + " [1, 1],\n", + " [0, 0]])\n", + "policy_2 = jnp.array([[1, 0],\n", + " [0, 0],\n", + " [1, 1]])\n", + "policy_matrix = jnp.stack([policy_1, policy_2]) \n", + "\n", + "# observation modalities (isomorphic/identical to hidden states, just need to include for the need to include likleihood model)\n", + "num_obs = [5, 3]\n", + "num_factors = len(num_states)\n", + "num_modalities = len(num_obs)\n", + "\n", + "# sample parameters of the model (A, B, C)\n", + "key = jr.PRNGKey(1)\n", + "factor_keys = jr.split(key, num_factors)\n", + "\n", + "d = [0.1* jr.uniform(factor_key, (ns,)) for factor_key, ns in zip(factor_keys, num_states)]\n", + "qs_init = [jr.dirichlet(factor_key, d_f) for factor_key, d_f in zip(factor_keys, d)]\n", + "A = [jnp.eye(no) for no in num_obs]\n", + "\n", + "factor_keys = jr.split(factor_keys[-1], num_factors)\n", + "b = [jr.uniform(factor_keys[f], shape=(num_controls[f], num_states[f], num_states[f])) for f in range(num_factors)]\n", + "b_sparse = [jnp.where(b_f < 0.75, 1e-5, b_f) for b_f in b]\n", + "B = [jnp.swapaxes(jr.dirichlet(factor_keys[f], b_sparse[f]), 2, 0) for f in range(num_factors)]\n", + "\n", + "modality_keys = jr.split(factor_keys[-1], num_modalities)\n", + "C = [nn.one_hot(jr.randint(modality_keys[m], shape=(1,), minval=0, maxval=num_obs[m]), num_obs[m]) for m in range(num_modalities)]\n", + "\n", + "# trivial dependencies -- factor 1 drives modality 1, etc.\n", + "A_dependencies = [[0], [1]]\n", + "B_dependencies = [[0], [1]]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generate sparse constraints vectors `H` and inductive matrix `I`, using inductive parameters like depth and threshold " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# generate random constraints (H vector)\n", + "factor_keys = jr.split(key, num_factors)\n", + "H = [jr.uniform(factor_key, (ns,)) for factor_key, ns in zip(factor_keys, num_states)]\n", + "H = [jnp.where(h < 0.75, 0., 1.) for h in H]\n", + "\n", + "# depth and threshold for inductive planning algorithm. I made policy-depth equal to inductive planning depth, out of ignorance -- need to ask Tim or Tommaso about this\n", + "inductive_depth, inductive_threshold = 3, 0.5\n", + "I = control.generate_I_matrix(H, B, inductive_threshold, inductive_depth)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Evaluate posterior probability of policies and negative EFE using new version of `update_posterior_policies`\n", + "#### This function no longer computes info gain (for both states and parameters) since deterministic model is assumed, and includes new inductive matrix `I` and `inductive_epsilon` parameter" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# evaluate Q(pi) and negative EFE using the inductive planning algorithm\n", + "\n", + "E = jnp.ones(policy_matrix.shape[0])\n", + "pA = jtu.tree_map(lambda a: jnp.ones_like(a), A)\n", + "pB = jtu.tree_map(lambda b: jnp.ones_like(b), B)\n", + "\n", + "q_pi, neg_efe = control.update_posterior_policies_inductive(policy_matrix, qs_init, A, B, C, E, pA, pB, A_dependencies, B_dependencies, I, gamma=16.0, use_utility=True, use_inductive=True, inductive_epsilon=1e-3)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "atari_env", + "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.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/inductive_inference_gridworld.ipynb b/examples/inductive_inference_gridworld.ipynb new file mode 100644 index 00000000..99fb2f27 --- /dev/null +++ b/examples/inductive_inference_gridworld.ipynb @@ -0,0 +1,202 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import jax.numpy as jnp\n", + "import jax.tree_util as jtu\n", + "from jax import nn, vmap, random, lax\n", + "from typing import List, Optional\n", + "from jaxtyping import Array\n", + "from jax import random as jr\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "from pymdp.envs import GridWorldEnv\n", + "from pymdp.jax import control as j_control\n", + "from pymdp.jax.agent import Agent as AIFAgent\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Grid world generative model" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "num_rows, num_columns = 7, 7\n", + "num_states = [num_rows*num_columns] # number of states equals the number of grid locations\n", + "num_obs = [num_rows*num_columns] # number of observations equals the number of grid locations (fully observable)\n", + "\n", + "# number of agents\n", + "n_batches = 5\n", + "\n", + "# construct A arrays\n", + "A = [jnp.broadcast_to(jnp.eye(num_states[0]), (n_batches,) + (num_obs[0], num_states[0]))] # fully observable (identity observation matrix\n", + "\n", + "# construct B arrays\n", + "grid_world = GridWorldEnv(shape=[num_rows, num_columns])\n", + "B = [jnp.broadcast_to(jnp.array(grid_world.get_transition_dist()), (n_batches,) + (num_states[0], num_states[0], grid_world.n_control))] # easy way to get the generative model parameters is to extract them from one of pre-made GridWorldEnv classes\n", + "num_controls = [grid_world.n_control] # number of control states equals the number of actions\n", + " \n", + "# create mapping from gridworld coordinates to linearly-index states\n", + "grid = np.arange(grid_world.n_states).reshape(grid_world.shape)\n", + "it = np.nditer(grid, flags=[\"multi_index\"])\n", + "coord_to_idx_map = {}\n", + "while not it.finished:\n", + " coord_to_idx_map[it.multi_index] = it.iterindex\n", + " it.iternext()\n", + "\n", + "# construct C arrays\n", + "desired_position = (6,6) # lower corner\n", + "desired_state_id = coord_to_idx_map[desired_position]\n", + "desired_obs_id = jnp.argmax(A[0][:, desired_state_id]) # throw this in there, in case there is some indeterminism between states and observations\n", + "C = [jnp.broadcast_to(nn.one_hot(desired_obs_id, num_obs[0]), (n_batches, num_obs[0]))]\n", + "\n", + "# construct D arrays\n", + "starting_position = (3, 3) # middle\n", + "# starting_position = (0, 0) # upper left corner\n", + "starting_state_id = coord_to_idx_map[starting_position]\n", + "starting_obs_id = jnp.argmax(A[0][:, starting_state_id]) # throw this in there, in case there is some indeterminism between states and observations\n", + "D = [jnp.broadcast_to(nn.one_hot(starting_state_id, num_states[0]), (n_batches, num_states[0]))]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Planning parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "planning_horizon, inductive_threshold = 1, 0.1\n", + "inductive_depth = 7\n", + "policy_matrix = j_control.construct_policies(num_states, num_controls, policy_len=planning_horizon)\n", + "\n", + "# inductive planning goal states\n", + "H = [jnp.broadcast_to(nn.one_hot(desired_state_id, num_states[0]), (n_batches, num_states[0]))] # list of factor-specific goal vectors (shape of each is (n_batches, num_states[f]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Initialize an `Agent()`" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# create agent\n", + "agent = AIFAgent(A, B, C, D, E=None, pA=None, pB=None, policies=policy_matrix, policy_len=planning_horizon, \n", + " inductive_depth=inductive_depth, inductive_threshold=inductive_threshold,\n", + " H=H, use_utility=True, use_states_info_gain=False, use_param_info_gain=False, use_inductive=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run active inference" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Grid position for agent 2 at time 0: (3, 3)\n", + "Grid position for agent 2 at time 1: (3, 4)\n", + "Grid position for agent 2 at time 2: (3, 5)\n", + "Grid position for agent 2 at time 3: (3, 6)\n", + "Grid position for agent 2 at time 4: (4, 6)\n", + "Grid position for agent 2 at time 5: (5, 6)\n", + "Grid position for agent 2 at time 6: (6, 6)\n" + ] + } + ], + "source": [ + "# T = 14 # needed if you start further away from the goal (e.g. in upper left corner)\n", + "T = 7 # can get away with fewer timesteps if you start closer to the goal (e.g. in the middle)\n", + "\n", + "qs_init = [jnp.broadcast_to(nn.one_hot(starting_state_id, num_states[0]), (n_batches, num_states[0]))] # same as D\n", + "obs_idx = [jnp.broadcast_to(starting_obs_id, (n_batches,))] # list of len (num_modalities), each list element of shape (n_batches,)\n", + "obs_idx = jtu.tree_map(lambda x: jnp.expand_dims(x, -1), obs_idx) # list of len (num_modalities), elements each of shape (n_batches,1), this adds a trivial \"time dimension\"\n", + "\n", + "state = jnp.broadcast_to(starting_state_id, (n_batches,))\n", + "infer_args = (agent.D, None,)\n", + "batch_keys = jr.split(jr.PRNGKey(0), n_batches)\n", + "batch_to_track = 1\n", + "\n", + "for t in range(T):\n", + "\n", + " print('Grid position for agent {} at time {}: {}'.format(batch_to_track+1, t, np.unravel_index(state[batch_to_track], grid_world.shape)))\n", + "\n", + " if t == 0:\n", + " actions = None\n", + " else:\n", + " actions = actions_t\n", + " beliefs = agent.infer_states(obs_idx, actions, *infer_args)\n", + " q_pi, _ = agent.infer_policies(beliefs)\n", + " actions_t = agent.sample_action(q_pi, rng_key=batch_keys)\n", + " infer_args = agent.update_empirical_prior(actions_t, beliefs)\n", + "\n", + " # get next state and observation from the grid world (need to vmap everything over batches)\n", + " state = vmap(lambda b, s, a: jnp.argmax(b[:, s, a]), in_axes=(0,0,0))(B[0], state, actions_t)\n", + " next_obs = vmap(lambda a, s: jnp.argmax(a[:, s]), in_axes=(0,0))(A[0], state)\n", + " obs_idx = [next_obs]\n", + " obs_idx = jtu.tree_map(lambda x: jnp.expand_dims(x, -1), obs_idx) # add a trivial time dimension to the observation to enable indexing during agent.infer_states\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "atari_env", + "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.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/model_inversion.ipynb b/examples/model_inversion.ipynb new file mode 100644 index 00000000..563f3501 --- /dev/null +++ b/examples/model_inversion.ipynb @@ -0,0 +1,939 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Active Inference model inversion: T-Maze Environment" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import jax\n", + "import jax.numpy as jnp\n", + "\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from pymdp.jax.agent import Agent as AIFAgent\n", + "from pymdp.envs import TMazeEnv" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pybefit import ModelInference\n", + "\n", + "def param_transform(z):\n", + " init = {} # define some initial values of random variables that should be infered\n", + " params = {} # define parameters that should be infered\n", + " return init, params\n", + "\n", + "\n", + "# we could simplify the interface so that AIFAgent class is constructed as \n", + "# aif_agent = AIFAgent(init_variables, params, options)\n", + "\n", + "# define some static options for the AIFAgent class\n", + "agent_options = {\n", + "\n", + "}\n", + "\n", + "# define properties of inference\n", + "inference_options = {\n", + " # e.g. method can be svi or nuts\n", + " 'method': 'SVI',\n", + " # different forms of the parameteric prior, such as, NormalGamma, NormalHorseshoe, NormalRegularizedHorseshoe\n", + " 'prior': 'NormalGamma',\n", + " # hierachical inference with group level \n", + " 'type': 'Hierarchical',\n", + "\n", + "}\n", + "\n", + "inference = ModelInference(AIFAgent, agent_options, inference_options)\n", + "\n", + "num_samples = 1000\n", + "max_iterations = 1000\n", + "tolerance = 1e-3\n", + "# optimizer options\n", + "opts = {\n", + " 'learning_rate': 1e-3\n", + "}\n", + "\n", + "inference.fit(behavioural_data, num_samples, max_iterations, tolerance, opts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Auxiliary Functions\n", + "\n", + "Define some utility functions that will be helpful for plotting." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def plot_beliefs(belief_dist, title=\"\"):\n", + " plt.grid(zorder=0)\n", + " plt.bar(range(belief_dist.shape[0]), belief_dist, color='r', zorder=3)\n", + " plt.xticks(range(belief_dist.shape[0]))\n", + " plt.title(title)\n", + " plt.show()\n", + " \n", + "def plot_likelihood(A, title=\"\"):\n", + " ax = sns.heatmap(A, cmap=\"OrRd\", linewidth=2.5)\n", + " plt.xticks(range(A.shape[1]))\n", + " plt.yticks(range(A.shape[0]))\n", + " plt.title(title)\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Environment\n", + "\n", + "Here we consider an agent navigating a three-armed 'T-maze,' with the agent starting in a central location of the maze. The bottom arm of the maze contains an informative cue, which signals in which of the two top arms ('Left' or 'Right', the ends of the 'T') a reward is likely to be found. \n", + "\n", + "At each timestep, the environment is described by the joint occurrence of two qualitatively-different 'kinds' of states (hereafter referred to as _hidden state factors_). These hidden state factors are independent of one another.\n", + "\n", + "We represent the first hidden state factor (`Location`) as a $ 1 \\ x \\ 4 $ vector that encodes the current position of the agent, and can take the following values: {`CENTER`, `RIGHT ARM`, `LEFT ARM`, or `CUE LOCATION`}. For example, if the agent is in the `CUE LOCATION`, the current state of this factor would be $s_1 = [0 \\ 0 \\ 0 \\ 1]$.\n", + "\n", + "We represent the second hidden state factor (`Reward Condition`) as a $ 1 \\ x \\ 2 $ vector that encodes the reward condition of the trial: {`Reward on Right`, or `Reward on Left`}. A trial where the condition is reward is `Reward on Left` is thus encoded as the state $s_2 = [0 \\ 1]$.\n", + "\n", + "The environment is designed such that when the agent is located in the `RIGHT ARM` and the reward condition is `Reward on Right`, the agent has a specified probability $a$ (where $a > 0.5$) of receiving a reward, and a low probability $b = 1 - a$ of receiving a 'loss' (we can think of this as an aversive or unpreferred stimulus). If the agent is in the `LEFT ARM` for the same reward condition, the reward probabilities are swapped, and the agent experiences loss with probability $a$, and reward with lower probability $b = 1 - a$. These reward contingencies are intuitively swapped for the `Reward on Left` condition. \n", + "\n", + "For instance, we can encode the state of the environment at the first time step in a `Reward on Right` trial with the following pair of hidden state vectors: $s_1 = [1 \\ 0 \\ 0 \\ 0]$, $s_2 = [1 \\ 0]$, where we assume the agent starts sitting in the central location. If the agent moved to the right arm, then the corresponding hidden state vectors would now be $s_1 = [0 \\ 1 \\ 0 \\ 0]$, $s_2 = [1 \\ 0]$. This highlights the _independence_ of the two hidden state factors -- the location of the agent ($s_1$) can change without affecting the identity of the reward condition ($s_2$).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Initialize environment\n", + "Now we can initialize the T-maze environment using the built-in `TMazeEnv` class from the `pymdp.envs` module." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Choose reward probabilities $a$ and $b$, where $a$ and $b$ are the probabilities of reward / loss in the 'correct' arm, and the probabilities of loss / reward in the 'incorrect' arm. Which arm counts as 'correct' vs. 'incorrect' depends on the reward condition (state of the 2nd hidden state factor)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "reward_probabilities = [0.98, 0.02] # probabilities used in the original SPM T-maze demo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initialize an instance of the T-maze environment" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "env = TMazeEnv(reward_probs = reward_probabilities)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Structure of the state --> outcome mapping\n", + "We can 'peer into' the rules encoded by the environment (also known as the _generative process_ ) by looking at the probability distributions that map from hidden states to observations. Following the SPM version of active inference, we refer to this collection of probabilistic relationships as the `A` array. In the case of the true rules of the environment, we refer to this array as `A_gp` (where the suffix `_gp` denotes the generative process). \n", + "\n", + "It is worth outlining what constitute the agent's observations in this task. In this T-maze demo, we have three sensory channels or observation modalities: `Location`, `Reward`, and `Cue`. \n", + "\n", + ">The `Location` observation values are identical to the `Location` hidden state values. In this case, the agent always unambiguously observes its own state - if the agent is in `RIGHT ARM`, it receives a `RIGHT ARM` observation in the corresponding modality. This might be analogized to a 'proprioceptive' sense of one's own place.\n", + "\n", + ">The `Reward` observation modality assumes the values `No Reward`, `Reward` or `Loss`. The `No Reward` (index 0) observation is observed whenever the agent isn't occupying one of the two T-maze arms (the right or left arms). The `Reward` (index 1) and `Loss` (index 2) observations are observed in the right and left arms of the T-maze, with associated probabilities that depend on the reward condition (i.e. on the value of the second hidden state factor).\n", + "\n", + "> The `Cue` observation modality assumes the values `Cue Right`, `Cue Left`. This observation unambiguously signals the reward condition of the trial, and therefore in which arm the `Reward` observation is more probable. When the agent occupies the other arms, the `Cue` observation will be `Cue Right` or `Cue Left` with equal probability. However (as we'll see below when we intialise the agent), the agent's beliefs about the likelihood mapping render these observations uninformative and irrelevant to state inference.\n", + "\n", + "In `pymdp`, we store the set of probability distributions encoding the conditional probabilities of observations, under different configurations of hidden states, as a set of matrices referred to as the likelihood mapping or `A` array (this is a convention borrowed from SPM). The likelihood mapping _for a single modality_ is stored as a single matrix `A[i]` with the larger likelihood array, where `i` is the index of the corresponding modality. Each modality-specific A matrix has `n_observations[i]` rows, and as many lagging dimensions (e.g. columns, 'slices' and higher-order dimensions) as there are hidden state factors. `n_observations[i]` tells you the number of observation values for observation modality `i`, and is usually stored as a property of the `Env` class (e.g. `env.n_observations`).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "A_gp = env.get_likelihood_dist()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAGkCAYAAAAR/Q0YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAi/UlEQVR4nO3df3BU1f3/8ddugI2AhB/5BWlsEKnUggQDiYkEYRrNAMUPtiAFS0gqUBEV2bGSKBDQlkUrmVgJULEUreOAYMsXC8YvxlLgazrUQDpaFQryQxkSEiigQTY22e8fDqv7yQK7uEnu8T4fM3eGHO6959zs5L73/T5n7zp8Pp9PAADAspztPQAAAHBpBGsAACyOYA0AgMURrAEAsDiCNQAAFkewBgDA4gjWAABYHMEaAACLI1gDAGBxBGsgghwOhxYtWhTRcy5atEgOh+MbHVtfXx/RMQFoWwRrtIm1a9fK4XD4tw4dOigpKUn5+fk6duxYew+vTR0+fDjgd+F0OtWzZ0+NHj1alZWV7TauJUuWaNOmTe3WP4CL69DeA4C9PP744+rbt6/Onz+vv//971q7dq127dql9957T9HR0e09vDY1efJkjRkzRk1NTdq/f79WrFihUaNG6R//+IcGDRrk32/+/PkqLCxs9fEsWbJEEyZM0Pjx41u9LwDhIVijTY0ePVpDhw6VJE2fPl2xsbF68skntXnzZt11113tPLrLa2hoUJcuXSJyrptuukk/+9nP/D9nZ2dr9OjRWrlypVasWOFv79Chgzp04E8VsDPK4GhX2dnZkqSDBw8GtH/44YeaMGGCevbsqejoaA0dOlSbN2/2///p06cVFRWl3/72t/62+vp6OZ1O9erVS1//MrlZs2YpMTHR//POnTs1ceJEXXPNNXK5XEpOTtbcuXP1+eefB4whPz9fXbt21cGDBzVmzBhdffXVuvvuuyVJXq9Xc+fOVVxcnK6++mrdcccd+uSTT1rldxFszvrzzz/Xgw8+qNjYWH//x44du+ic+enTp5Wfn6/u3bsrJiZGBQUFOnfunP//HQ6HGhoa9MILL/jL8/n5+d/oegBEDm/X0a4OHz4sSerRo4e/7V//+pduueUWJSUlqbCwUF26dNErr7yi8ePH69VXX9Wdd96p7t27a+DAgdqxY4cefPBBSdKuXbvkcDh06tQpvf/++/rBD34g6cvgfCEQStKGDRt07tw5zZo1S7169dLu3bv17LPP6pNPPtGGDRsCxvff//5Xubm5Gj58uJ5++ml17txZ0pdVgZdeeklTpkxRVlaW3nrrLY0dOzbiv4uLyc/P1yuvvKKpU6fq5ptv1t/+9rdL9n/XXXepb9++8ng82rNnj55//nnFx8frySeflCT98Y9/1PTp05Wenq6ZM2dKkvr16/eNrgdABPmANvCHP/zBJ8n35ptv+urq6nwff/yxb+PGjb64uDify+Xyffzxx/59f/jDH/oGDRrkO3/+vL+tubnZl5WV5evfv7+/bfbs2b6EhAT/z2632zdixAhffHy8b+XKlT6fz+c7efKkz+Fw+J555hn/fufOnWsxPo/H43M4HL4jR47426ZNm+aT5CssLAzYt7q62ifJd9999wW0T5kyxSfJV1xcfMnfxaFDh3ySfIsXL/bV1dX5ampqfDt37vQNGzbMJ8m3YcOGgP2Li4t9X/9Traqq8knyPfTQQwH75efnt+j/wrE///nPA/a98847fb169Qpo69Kli2/atGmXHDuA9kEZHG0qJydHcXFxSk5O1oQJE9SlSxdt3rxZ3/nOdyRJp06d0ltvvaW77rpLn376qerr61VfX6+TJ08qNzdX//73v/2rx7Ozs1VbW6t9+/ZJ+jKDHjFihLKzs7Vz505JX2bbPp8vILO+6qqr/P9uaGhQfX29srKy5PP5tHfv3hZjnjVrVsDPW7dulSR/Rn/BQw89FNbvori4WHFxcUpMTFR2drY++OADLVu2TBMmTLjkceXl5ZKk++67L6D9gQceuOgx9957b8DP2dnZOnnypM6ePRvWmAG0D4I12lRZWZm2bdumjRs3asyYMaqvr5fL5fL//4EDB+Tz+bRgwQLFxcUFbMXFxZKkEydOSPpqjnfnzp1qaGjQ3r17lZ2drREjRviD9c6dO9WtWzcNHjzY38fRo0eVn5+vnj17qmvXroqLi9Ott94qSTpz5kzAeDt06OB/I3HBkSNH5HQ6W5SJr7/++rB+FzNnztS2bdv02muv+efMm5qaLnvchf779u0b0H7ddddd9Jhrrrkm4OcLpfb//Oc/YY0ZQPtgzhptKj093b8afPz48Ro+fLimTJmiffv2qWvXrmpubpYkPfzww8rNzQ16jgtBqU+fPurbt6927NihlJQU+Xw+ZWZmKi4uTnPmzNGRI0e0c+dOZWVlyen88n1pU1OTbrvtNp06dUrz5s3TgAED1KVLFx07dkz5+fn+/i9wuVz+YyOtf//+ysnJkST96Ec/UlRUlAoLCzVq1Cj/7yhSoqKigrb7vrYQD4B1EazRbqKiouTxeDRq1CgtX75chYWFuvbaayVJHTt29AeyS8nOztaOHTvUt29fpaam6uqrr9bgwYMVExOj8vJy7dmzR4sXL/bv/+6772r//v164YUXlJeX52/ftm1byOP+7ne/q+bmZh08eDAgm75Qjr9Sjz32mFavXq358+f7S92X6v/QoUPq37+/v/3AgQPfqP8rfUoagNZHGRztauTIkUpPT1dpaanOnz+v+Ph4jRw5Ur/73e90/PjxFvvX1dUF/Jydna3Dhw9r/fr1/rK40+lUVlaWSkpK9MUXXwTMV1/IML+eUfp8Pj3zzDMhj3n06NGSFPCxMUkqLS0N+RzBdO/eXb/4xS/0xhtvqLq6+qL7Xag4fP2z2JL07LPPfqP+u3TpotOnT3+jcwBoHWTWaHe//OUvNXHiRK1du1b33nuvysrKNHz4cA0aNEgzZszQtddeq9raWlVWVuqTTz7RP//5T/+xFwLxvn37tGTJEn/7iBEj9Prrr8vlcmnYsGH+9gEDBqhfv356+OGHdezYMXXr1k2vvvpqWHO3qampmjx5slasWKEzZ84oKytLFRUV3zizlaQ5c+aotLRUS5cu1bp164Luk5aWpp/85CcqLS3VyZMn/R/d2r9/v6Qrz5DT0tL05ptvqqSkxD/FkJGRccXXAiByyKzR7n784x+rX79+evrpp9XU1KQbbrhB77zzjsaOHau1a9dq9uzZWrVqlZxOpxYuXBhw7PXXX6/4+HhJ0vDhw/3tF4J4enp6wAK2jh076rXXXlNqaqo8Ho8WL16s/v3768UXXwxrzGvWrNGDDz6o8vJyPfLII/riiy+0ZcuWK/0V+PXp00dTpkzRxo0bWzwc5etefPFFzZ49W1u2bNG8efPU2Nio9evXS9IVP7a1pKREaWlpmj9/viZPnqyVK1de0XkARJ7DxwoT4FuhurpaQ4YM0UsvveR/0hqAbwcya8BA//vRqNKXc+ZOp1MjRoxohxEBaE3MWQMGeuqpp1RVVaVRo0apQ4cOev311/X6669r5syZSk5Obu/hAYgwyuCAgbZt26bFixfr/fff12effaZrrrlGU6dO1WOPPcY3dAHfQpTBAQPddttt2rVrl06dOqXGxkYdOHBAxcXFBGqgle3YsUPjxo1Tnz595HA4tGnTpsses337dt10001yuVy67rrrtHbt2rD7JVgDABCihoYGDR48WGVlZSHtf+jQIY0dO1ajRo1SdXW1HnroIU2fPl1vvPFGWP1SBgcA4Ao4HA79+c9/1vjx4y+6z7x587Rlyxa99957/raf/vSnOn369CWfVPi/Ba2Zeb1eeb3egDaXyxXweVUAAL4NWjPmVVZWtnh0cm5ubtjf0hc0WF94WMTXFRcXa9GiRWGdHACA1rIoUs+zLy5utZhXU1OjhISEgLaEhASdPXtWn3/+ecBX9l5K0GBdVFQkt9sd0EZWDQCwkkgtuppnQMwLGqwpeQMA7KI1Y15iYqJqa2sD2mpra9WtW7eQs2rpCh+KErHSA8KyKNhawPMn234gkKJ7tWzjtWg/QV4P7lPtI+h9qpWY8ApnZmZq69atAW3btm1TZmZmWOfho1sAACM5I7SF47PPPlN1dbX/a2wPHTqk6upqHT16VNKX08h5eXn+/e+991599NFHeuSRR/Thhx9qxYoVeuWVVzR37tywrxUAAITgnXfe0ZAhQzRkyBBJktvt1pAhQ/zfCHj8+HF/4Jakvn37asuWLdq2bZsGDx6sZcuW6fnnn/d/L32oeNwRAMBI7ZFtjhw5Upd6PEmwp5ONHDlSe/fu/Ub9EqwBAEYyYc46UiiDAwBgcWTWAAAj2SnbJFgDAIxkpzI4wRoAYCQ7ZdZ2ulYAAIxEZg0AMJKdsk2CNQDASHaas7bTGxMAAIxEZg0AMJKdsk2CNQDASHYK1na6VgAAjERmDQAwkp0WmBGsAQBGslNp2E7XCgCAkcisAQBGogwOAIDF2ak0TLAGABjJTsHaTtcKAICRyKwBAEZizhoAAIuzU2nYTtcKAICRyKwBAEayU7ZJsAYAGMlOc9Z2emMCAICRyKwBAEayU7ZJsAYAGMlOwdpO1woAgJHIrAEARrLTAjOCNQDASHYqDROsAQBGslNmbac3JgAAGInMGgBgJDtlmwRrAICR7BSs7XStAAAYicwaAGAkOy0wI1gDAIxkp9Kwna4VAAAjkVkDAIxkp2yTYA0AMJKd5qzt9MYEAAAjkVkDAIzkcNontyZYAwCM5HAQrAEAsDSnjTJr5qwBALA4MmsAgJEogwMAYHF2WmBGGRwAAIsjswYAGIkyOAAAFkcZHAAAWAaZNQDASJTBAQCwOMrgAADAMsisAQBGogwOAIDF2enZ4ARrAICR7JRZM2cNAIDFkVkDAIxkp9XgBGsAgJEogwMAAMsgswYAGIkyOAAAFkcZHAAAXFRZWZlSUlIUHR2tjIwM7d69+5L7l5aW6vrrr9dVV12l5ORkzZ07V+fPnw+5PzJrAICR2qsMvn79erndbq1atUoZGRkqLS1Vbm6u9u3bp/j4+Bb7v/zyyyosLNSaNWuUlZWl/fv3Kz8/Xw6HQyUlJSH1SWYNADCSw+GIyBaukpISzZgxQwUFBbrhhhu0atUqde7cWWvWrAm6/9tvv61bbrlFU6ZMUUpKim6//XZNnjz5stn41xGsAQC25vV6dfbs2YDN6/UG3bexsVFVVVXKycnxtzmdTuXk5KiysjLoMVlZWaqqqvIH548++khbt27VmDFjQh4jwRoAYCSn0xGRzePxKCYmJmDzeDxB+6yvr1dTU5MSEhIC2hMSElRTUxP0mClTpujxxx/X8OHD1bFjR/Xr108jR47Uo48+Gvq1hv5rAQDAOiJVBi8qKtKZM2cCtqKiooiNc/v27VqyZIlWrFihPXv26E9/+pO2bNmiJ554IuRzsMAMAGCkSC0wc7lccrlcIe0bGxurqKgo1dbWBrTX1tYqMTEx6DELFizQ1KlTNX36dEnSoEGD1NDQoJkzZ+qxxx6T03n5vJnMGgCAEHXq1ElpaWmqqKjwtzU3N6uiokKZmZlBjzl37lyLgBwVFSVJ8vl8IfVLZg0AMFJ7PRTF7XZr2rRpGjp0qNLT01VaWqqGhgYVFBRIkvLy8pSUlOSf9x43bpxKSko0ZMgQZWRk6MCBA1qwYIHGjRvnD9qXQ7AGABjJ0U614UmTJqmurk4LFy5UTU2NUlNTVV5e7l90dvTo0YBMev78+XI4HJo/f76OHTumuLg4jRs3Tr/+9a9D7tPhCzUH/5pFNnrEm5UsCvZSnT/Z9gOBFN2rZRuvRfsJ8npwn2ofQe9TrWTPdQmX3ykENx2ovfxO7YzMGgBgJDs9G5xgDQAwkp2+dYvV4AAAWByZNQDASE7K4AAAWBtlcAAAYBlk1gAAI7EaHAAAi7NTGZxgDQAwkp0ya+asAQCwODJrAICRKIMDAGBxlMEBAIBlkFkDAIzkcNon3yRYAwCMZKc5a/u8LQEAwFBk1gAAM9logRnBGgBgJMrgAADAMsisAQBGYjU4AAAWZ6eHohCsAQBmYs4aAABYBZk1AMBIzFkDAGBxdpqzts/bEgAADEVmDQAwkp0eikKwBgCYyUbBmjI4AAAWR2YNADCSw2GffJNgDQAwkp3mrO3ztgQAAEORWQMAjGSnzJpgDQAwE3PWAABYm50ya/u8LQEAwFBk1gAAI9kpsyZYAwCMxBd5AAAAyyCzBgCYie+zvrRFPl+kx4ErFd2rvUeAC3gtLIX71Lef7eesvV6vvF5vQJvL5ZLL5WqTQQEAgK8ErSF4PB7FxMQEbB6Pp63HBgDARTkcjohsJnD4fC1rRWTWAACrq70rOyLnSXhlZ0TO05qClsEJzAAAWMeVrQY/fzLCw0BIgixgWmpICefbpjDY4qVzx9t+IPhS594t27hPtY82XGhp+wVmAABYno2SFYI1AMBIdsqs7fOJcgAADEVmDQAwkoMnmAEAYG2mfEY6EuzztgQAAEORWQMAzGSjBWYEawCAkew0Z22fKwUAwFBk1gAAI9lpgRnBGgBgJB6KAgAALIPMGgBgJsrgAABYm53K4ARrAICZ7BOrmbMGAMDqyKwBAGay0Zw1mTUAwEgOR2S2K1FWVqaUlBRFR0crIyNDu3fvvuT+p0+f1uzZs9W7d2+5XC5973vf09atW0Puj8waAIAwrF+/Xm63W6tWrVJGRoZKS0uVm5urffv2KT4+vsX+jY2Nuu222xQfH6+NGzcqKSlJR44cUffu3UPuk2ANADBTO60GLykp0YwZM1RQUCBJWrVqlbZs2aI1a9aosLCwxf5r1qzRqVOn9Pbbb6tjx46SpJSUlLD6pAwOADBSpMrgXq9XZ8+eDdi8Xm/QPhsbG1VVVaWcnBx/m9PpVE5OjiorK4Mes3nzZmVmZmr27NlKSEjQwIEDtWTJEjU1NYV8rQRrAICteTwexcTEBGwejyfovvX19WpqalJCQkJAe0JCgmpqaoIe89FHH2njxo1qamrS1q1btWDBAi1btky/+tWvQh4jZXAAgJkitBq8qKhIbrc7oM3lckXk3JLU3Nys+Ph4Pffcc4qKilJaWpqOHTum3/zmNyouLg7pHARrAICZIlQbdrlcIQfn2NhYRUVFqba2NqC9trZWiYmJQY/p3bu3OnbsqKioKH/b97//fdXU1KixsVGdOnW6bL+UwQEARnI4HBHZwtGpUyelpaWpoqLC39bc3KyKigplZmYGPeaWW27RgQMH1Nzc7G/bv3+/evfuHVKglgjWAACExe12a/Xq1XrhhRf0wQcfaNasWWpoaPCvDs/Ly1NRUZF//1mzZunUqVOaM2eO9u/fry1btmjJkiWaPXt2yH1SBgcAmKmdnmA2adIk1dXVaeHChaqpqVFqaqrKy8v9i86OHj0qp/OrXDg5OVlvvPGG5s6dqxtvvFFJSUmaM2eO5s2bF3KfDp/P5wt7pOdPhn0IIiC6V4umpTZ63J6VFAb7szl3vO0Hgi917t2yjftU+whyn2otDQ//T0TO0+Xp/xOR87QmyuAAAFgcZXAAgJn4PmsAACzOPrGaMjgAAFZHZg0AMFK4n5E2GcEaAGAm+8RqyuAAAFgdmTUAwEgOVoMDAGBx9onVBGsAgKFstMCMOWsAACyOzBoAYCQbJdYEawCAoWy0wIwyOAAAFkdmDQAwEmVwAACszkbRmjI4AAAWR2YNADCSjRJrgjUAwFCsBgcAAFZBZg0AMJON6uAEawCAkWwUqwnWAABD2ShaM2cNAIDFkVkDAIzksFG6SbAGAJiJMjgAALAKMmsAgJnsk1gTrAEAZnJQBgcAAFZBZg0AMJONng1OsAYAmIkyOAAAsAoyawCAmSiDAwBgcTZ6hBnBGgBgJuasAQCAVZBZAwDMxJw1AAAWZ6M5a/tcKQAAhiKzBgCYiTI4AAAWx2pwAABgFWTWAAAzOe2TbxKsAQBmogwOAACsgswaAGAmyuAAAFicjcrgBGsAgJlsFKztU0MAAMBQZNYAADMxZw0AgMVRBgcAAFZBZg0AMJKDL/IAAMDi+D5rAABgFWTWAAAzUQYHAMDiWA0OAACsgswaAGAmHooCAIDF2agMTrAGAJjJRsHaPjUEAAAMRbAGAJjJ6YzMdgXKysqUkpKi6OhoZWRkaPfu3SEdt27dOjkcDo0fPz6s/gjWAAAzORyR2cK0fv16ud1uFRcXa8+ePRo8eLByc3N14sSJSx53+PBhPfzww8rOzg67T4I1AABhKCkp0YwZM1RQUKAbbrhBq1atUufOnbVmzZqLHtPU1KS7775bixcv1rXXXht2nwRrAICZnI6IbF6vV2fPng3YvF5v0C4bGxtVVVWlnJycr4bhdConJ0eVlZUXHerjjz+u+Ph43XPPPVd2qVd0FAAA7c3hjMjm8XgUExMTsHk8nqBd1tfXq6mpSQkJCQHtCQkJqqmpCXrMrl279Pvf/16rV6++4kvlo1sAAFsrKiqS2+0OaHO5XBE596effqqpU6dq9erVio2NveLzEKwBAGaK0Bd5uFyukINzbGysoqKiVFtbG9BeW1urxMTEFvsfPHhQhw8f1rhx4/xtzc3NkqQOHTpo37596tev32X7pQwOADBTO6wG79Spk9LS0lRRUeFva25uVkVFhTIzM1vsP2DAAL377ruqrq72b3fccYdGjRql6upqJScnh9QvmTUAAGFwu92aNm2ahg4dqvT0dJWWlqqhoUEFBQWSpLy8PCUlJcnj8Sg6OloDBw4MOL579+6S1KL9UgjWAAAztdMXeUyaNEl1dXVauHChampqlJqaqvLycv+is6NHj8oZ4bE5fD6fL+yjzp+M6CAQouheLZqW2ujZuFZSGOzP5tzxth8IvtS5d8s27lPtI8h9qrU0/98nInIe5+0LInKe1kRmDQAwk42SFRaYAQBgcWTWAAAzOeyTbxKsAQBmsk8VnDI4AABWR2YNADCTjRaYEawBAGayUbCmDA4AgMWRWQMAzGSjzJpgDQAwlH2CNWVwAAAsjswaAGAm+yTWBGsAgKGYswYAwOJsFKyZswYAwOKuLLNuw+8rxaUF/V5ltI9g36mM9sN96tvPRpl10GDt9Xrl9XoD2lwul1wuV5sMCgCAy7NPsA5aBvd4PIqJiQnYPB5PW48NAABIcvh8LeuoZNYAAKtr/n8lETmP8xZ3RM7TmoKWwQnMAADLs/uc9WWdPxnhYSAkwRbMnDve9uNA0MVkS21047CaoAstuU+1Dxb2tQo+Zw0AMJON3iATrAEAhrJPsOahKAAAWByZNQDATJTBAQCwOII1AAAWZ59YzZw1AABWR2YNADATZXAAAKzOPsGaMjgAABZHZg0AMBNlcAAALM5GwZoyOAAAFkdmDQAwk30Sa4I1AMBQlMEBAIBVkFkDAAxln8yaYA0AMJONyuAEawCAmWwUrJmzBgDA4sisAQBmIrMGAABWQbAGAMDiKIMDAMxkozI4wRoAYCYbBWvK4AAAWByZNQDATDbKrAnWAABD2SdYUwYHAMDiyKwBAGaiDA4AgMU57FMcJlgDAAxln8zaPm9LAAAwFJk1AMBMzFkDAGBxNpqzts+VAgBgKDJrAIChKIMDAGBtNpqzpgwOAIDFkVkDAAxln3yTYA0AMBNlcAAAYBUEawCAmRyOyGxXoKysTCkpKYqOjlZGRoZ279590X1Xr16t7Oxs9ejRQz169FBOTs4l9w+GYA0AMJQjQlt41q9fL7fbreLiYu3Zs0eDBw9Wbm6uTpw4EXT/7du3a/LkyfrrX/+qyspKJScn6/bbb9exY8dCv1Kfz+cLe6TnT4Z9CCIgulfLtnPH234ckDr3btG01EbzZ1ZTGOw2xn2qfQS7T7WS5oObInIeZ7/xYe2fkZGhYcOGafny5V+Oo7lZycnJeuCBB1RYWHjZ45uamtSjRw8tX75ceXl5oY0xrBECAPAt4/V6dfbs2YDN6/UG3bexsVFVVVXKycnxtzmdTuXk5KiysjKk/s6dO6cvvvhCPXv2DHmMBGsAgJkiNGft8XgUExMTsHk8nqBd1tfXq6mpSQkJCQHtCQkJqqmpCWnY8+bNU58+fQIC/uXw0S0AgKEiM/VUVFQkt9sd0OZyuSJy7v9t6dKlWrdunbZv367o6OiQjyNYAwBszeVyhRycY2NjFRUVpdra2oD22tpaJSYmXvLYp59+WkuXLtWbb76pG2+8MawxUgYHAJjJ4YzMFoZOnTopLS1NFRUV/rbm5mZVVFQoMzPzosc99dRTeuKJJ1ReXq6hQ4eGfalk1gAAIzna6RMYbrdb06ZN09ChQ5Wenq7S0lI1NDSooKBAkpSXl6ekpCT/vPeTTz6phQsX6uWXX1ZKSop/brtr167q2rVrSH0SrAEACMOkSZNUV1enhQsXqqamRqmpqSovL/cvOjt69Kiczq8y9pUrV6qxsVETJkwIOE9xcbEWLVoUUp98ztokfM7aOvictaXwOWsLacPPWfsOb43IeRwpYyJyntZEZg0AMFOY880ms8+VAgBgKDJrAICh7DP1RLAGAJjJRutECNYAADMxZw0AAKyCzBoAYCjK4AAAWJuN5qwpgwMAYHFk1gAAM9logRnBGgBgKMrgAADAIsisAQBmstECM4I1AMBQ9ikO2+dKAQAwFJk1AMBMlMEBALA4gjUAAFZnn5lc+1wpAACGIrMGAJiJMjgAAFZnn2BNGRwAAIsjswYAmIkyOAAAVmefYE0ZHAAAiyOzBgCYiTI4AABWZ5/isH2uFAAAQ5FZAwDMRBkcAACrI1gDAGBtNsqsmbMGAMDiyKwBAIayT2ZNsAYAmIkyOAAAsAoyawCAoeyTWROsAQBmogwOAACsgswaAGAo++SbBGsAgJkogwMAAKsgswYAGMo+mTXBGgBgKII1AACW5mDOGgAAWAWZNQDAUPbJrAnWAAAzUQYHAABWQWYNADCUfTJrgjUAwEwO+xSH7XOlAAAYiswaAGAoyuAAAFgbq8EBAIBVkFkDAAxln8yaYA0AMJONyuAEawCAoewTrJmzBgDA4sisAQBmogwOAIDV2SdYUwYHAMDiyKwBAGbi2eAAAFidI0Jb+MrKypSSkqLo6GhlZGRo9+7dl9x/w4YNGjBggKKjozVo0CBt3bo1rP4I1gAAhGH9+vVyu90qLi7Wnj17NHjwYOXm5urEiRNB93/77bc1efJk3XPPPdq7d6/Gjx+v8ePH67333gu5T4fP5/OFPdLzJ8M+BBEQ3atl27njbT8OSJ17t2haaqOVqVZTGOw2xn2qfQS7T7WW8/WROU90bFi7Z2RkaNiwYVq+fLkkqbm5WcnJyXrggQdUWFjYYv9JkyapoaFBf/nLX/xtN998s1JTU7Vq1aqQ+ryyOeu2fDFwaUGCBtpH0ICB9sN9ygba/g1yY2OjqqqqVFRU5G9zOp3KyclRZWVl0GMqKyvldrsD2nJzc7Vp06aQ+2WBGQDA1rxer7xeb0Cby+WSy+VqsW99fb2ampqUkJAQ0J6QkKAPP/ww6PlramqC7l9TUxPyGEOas/Z6vVq0aFGLi0Hb47WwDl4La+H1sKHoXhHZPB6PYmJiAjaPx9PeVxcg5GC9ePFi/ggsgNfCOngtrIXXA1eqqKhIZ86cCdi+Xub+utjYWEVFRam2tjagvba2VomJiUGPSUxMDGv/YFgNDgCwNZfLpW7dugVswUrgktSpUyelpaWpoqLC39bc3KyKigplZmYGPSYzMzNgf0natm3bRfcPhjlrAADC4Ha7NW3aNA0dOlTp6ekqLS1VQ0ODCgoKJEl5eXlKSkryl9LnzJmjW2+9VcuWLdPYsWO1bt06vfPOO3ruuedC7pNgDQBAGCZNmqS6ujotXLhQNTU1Sk1NVXl5uX8R2dGjR+V0flW4zsrK0ssvv6z58+fr0UcfVf/+/bVp0yYNHDgw5D5DCtYul0vFxcUXLQug7fBaWAevhbXweqAt3X///br//vuD/t/27dtbtE2cOFETJ0684v6u7KEoAACgzbDADAAAiyNYAwBgcQRrAAAsjmANAIDFEawBALA4gjUAABZHsAYAwOII1gAAWBzBGgAAiyNYAwBgcQRrAAAs7v8D9K5xQ7iiTasAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_likelihood(A_gp[1][:, :, 0],'Reward Right')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAGkCAYAAAAR/Q0YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAiBUlEQVR4nO3df3BU1f3/8dduhI2ABCTJBmPaAP4ABQkFSROIgkYzavGbzoAUHAOM4khRkR0riZUE/MFC1RgtUSot4thx5IctX6bQ+MUIA9R0qPxw/AUICihDFgIFNJCNZu/3D76s7jcL7PJZknu8z8fMnTYn995zblb2ve/3Ofeuy7IsSwAAwLbc7T0AAABwdgRrAABsjmANAIDNEawBALA5gjUAADZHsAYAwOYI1gAA2BzBGgAAmyNYAwBgcwRroA24XC7NmjWrTfv8/vvv9dhjjykrK0tut1vFxcVt2j+AxCFYo10tXrxYLpcrvF100UXKzMzUxIkTtX///vYeXpvas2ePXC6XnnvuuYScb9GiRXr22Wc1evRovf7665o+fbo+/fRTzZo1S3v27ElIHwDaxkXtPQBAkp588kn16tVLTU1N+ve//63Fixdr48aN+vjjj5WcnNzewzPSe++9p8zMTL3wwgvhtuXLl2v27NkaMWKEsrOz229wAOJCsIYt3HbbbRoyZIgk6b777lNqaqrmzZunlStX6q677mrn0Z1bY2OjOnfu3N7DiHDw4EF169atvYcBIAEog8OWCgoKJEm7d++OaN++fbtGjx6tSy+9VMnJyRoyZIhWrlwZ/v3Ro0eVlJSkl156KdzW0NAgt9utHj166MdfMjdlyhRlZGSEf96wYYPGjBmjn/3sZ/J4PMrKytL06dN18uTJiDFMnDhRXbp00e7du3X77bfrkksu0d133y1JCgaDmj59utLS0nTJJZfozjvv1Ndff524P8z/66OiokJXXHFFeJyPPfaYgsGgpB/K6WvXrtUnn3wSnmJYvHixxowZI0kaOXJkuH3dunUJHR+AxCOzhi2dnlPt3r17uO2TTz7RsGHDlJmZqdLSUnXu3FlLly5VcXGx3n77bf36179Wt27d1L9/f61fv14PP/ywJGnjxo1yuVw6cuSIPv30U1177bWSTgXn0x8KJGnZsmU6ceKEpkyZoh49emjTpk364x//qK+//lrLli2LGN/333+voqIiDR8+XM8995w6deok6VRV4K9//avGjx+v/Px8vffee7rjjjsS9ncJhUK68847tXHjRt1///3q16+fPvroI73wwgvauXOnVqxYobS0NL3xxht65pln9O2338rv90uSrrzySj388MN66aWX9Pjjj6tfv36SFP5fADZmAe3otddesyRZ7777rnXo0CHrq6++spYvX26lpaVZHo/H+uqrr8L73nzzzdaAAQOspqamcFsoFLLy8/OtK6+8Mtw2depUy+v1hn/2+XzWDTfcYKWnp1uvvPKKZVmWdfjwYcvlclkvvvhieL8TJ060Gp/f77dcLpe1d+/ecNuECRMsSVZpaWnEvtu2bbMkWb/97W8j2sePH29JsioqKs76t/jyyy8tSdazzz57xn3eeOMNy+12Wxs2bIhoX7BggSXJ+te//hVuu/HGG61rr702Yr9ly5ZZkqy1a9eedSwA7IUyOGyhsLBQaWlpysrK0ujRo9W5c2etXLlSl19+uSTpyJEjeu+993TXXXfpm2++UUNDgxoaGnT48GEVFRXp888/D68eLygoUCAQ0I4dOySdyqBvuOEGFRQUaMOGDZJOZduWZUVk1hdffHH4/zc2NqqhoUH5+fmyLEtbt25tNeYpU6ZE/Lx69WpJCmf0pz3yyCP/w7/OD5YtW6Z+/fqpb9++4b9BQ0ODbrrpJknS2rVrE9YXAPugDA5bqK6u1lVXXaVjx45p0aJFWr9+vTweT/j3u3btkmVZmjlzpmbOnBn1HAcPHlRmZmY4AG/YsEGXX365tm7dqqefflppaWnh26I2bNigrl27auDAgeHj9+3bp/Lycq1cuVL//e9/I8597NixiJ8vuuii8AeJ0/bu3Su3260+ffpEtF999dVx/jXO7PPPP9dnn32mtLS0qL8/ePBgwvoCYB8Ea9jC0KFDw6vBi4uLNXz4cI0fP147duxQly5dFAqFJEmPPvqoioqKop7jiiuukCRddtll6tWrl9avX6/s7GxZlqW8vDylpaVp2rRp2rt3rzZs2KD8/Hy53aeKSy0tLbrlllt05MgRzZgxQ3379lXnzp21f/9+TZw4Mdz/aR6PJ3xsWwqFQhowYIAqKyuj/j4rK6uNRwSgLRCsYTtJSUny+/0aOXKk5s+fr9LSUvXu3VuS1KFDBxUWFp7zHAUFBVq/fr169eqlnJwcXXLJJRo4cKBSUlJUU1OjLVu2aPbs2eH9P/roI+3cuVOvv/66SkpKwu1r1qyJedw///nPFQqFtHv37ohs+nQ5PhH69OmjDz/8UDfffLNcLlfcx5/PMQDaH3PWsKURI0Zo6NChqqqqUlNTk9LT0zVixAj96U9/0oEDB1rtf+jQoYifCwoKtGfPHi1ZsiRcFne73crPz1dlZaW+++67iPnqpKQkSYq4tcuyLL344osxj/m2226TpIjbxiSpqqoq5nOcy1133aX9+/dr4cKFrX538uRJNTY2nvX40/eCHz16NGFjAnDhkVnDtn73u99pzJgxWrx4sR544AFVV1dr+PDhGjBggCZPnqzevXsrEAiorq5OX3/9tT788MPwsacD8Y4dOzRnzpxw+w033KB//vOf8ng8uv7668Ptffv2VZ8+ffToo49q//796tq1q95+++1Wc9dnk5OTo3Hjxunll1/WsWPHlJ+fr9raWu3atSuu666trVVTU1Or9uLiYt1zzz1aunSpHnjgAa1du1bDhg1TS0uLtm/frqVLl+qdd94JTyecaYxJSUmaN2+ejh07Jo/Ho5tuuknp6elxjRFAG2vPpejA6Vu3/vOf/7T6XUtLi9WnTx+rT58+1vfff29ZlmXt3r3bKikpsTIyMqwOHTpYmZmZ1q9+9Str+fLlrY5PT0+3JFmBQCDctnHjRkuSVVBQ0Gr/Tz/91CosLLS6dOlipaamWpMnT7Y+/PBDS5L12muvhfebMGGC1blz56jXc/LkSevhhx+2evToYXXu3NkaNWqU9dVXX8V169aZtjfeeMOyLMtqbm625s2bZ1177bWWx+Oxunfvbg0ePNiaPXu2dezYsfD5ot26ZVmWtXDhQqt3795WUlISt3EBhnBZ1o/qfgAAwHaYswYAwOYI1gAA2BzBGgAAmyNYAwAQo/Xr12vUqFG67LLL5HK5tGLFinMes27dOv3iF7+Qx+PRFVdcocWLF8fdL8EaAIAYNTY2auDAgaquro5p/y+//FJ33HGHRo4cqW3btumRRx7Rfffdp3feeSeuflkNDgDAeXC5XPr73/+u4uLiM+4zY8YMrVq1Sh9//HG47Te/+Y2OHj2qmpqamPuK+lCUYDAY/iL70zweT8QXKwAA8FNwIWNeXV1dq0ckFxUVxf1tfFGDtd/vj3husiRVVFRo1qxZcZ0cAIALZVainnVfUXHBYl59fb28Xm9Em9fr1fHjx3Xy5MmIr+Y9m6jBuqysTD6fL6KNrBoAYCeJWnQ1w4CYFzVYU/IGADjFhYx5GRkZCgQCEW2BQEBdu3aNOauWzvOLPBJWekBcZkVbC9h0uO0HAim5R+s2Xov2E+X14H2qfUR9n7pATHiF8/LytHr16oi2NWvWKC8vL67zcOsWAMBI7gRt8fj222+1bds2bdu2TdKpW7O2bdumffv2STo1jVxSUhLe/4EHHtAXX3yhxx57TNu3b9fLL7+spUuXavr06XFfKwAAiMEHH3ygQYMGadCgQZIkn8+nQYMGqby8XJJ04MCBcOCWpF69emnVqlVas2aNBg4cqOeff15//vOfVVRUFFe/fJ81AMBI7ZFtjhgxQmd7PEm0p5ONGDFCW7du/R/1S7AGABjJhDnrRKEMDgCAzZFZAwCM5KRsk2ANADCSk8rgBGsAgJGclFk76VoBADASmTUAwEhOyjYJ1gAAIzlpztpJH0wAADASmTUAwEhOyjYJ1gAAIzkpWDvpWgEAMBKZNQDASE5aYEawBgAYyUmlYSddKwAARiKzBgAYiTI4AAA256TSMMEaAGAkJwVrJ10rAABGIrMGABiJOWsAAGzOSaVhJ10rAABGIrMGABjJSdkmwRoAYCQnzVk76YMJAABGIrMGABjJSdkmwRoAYCQnBWsnXSsAAEYiswYAGMlJC8wI1gAAIzmpNEywBgAYyUmZtZM+mAAAYCQyawCAkZyUbRKsAQBGclKwdtK1AgBgJDJrAICRnLTAjGANADCSk0rDTrpWAACMRGYNADCSk7JNgjUAwEhOmrN20gcTAACMRGYNADCSy+2c3JpgDQAwkstFsAYAwNbcDsqsmbMGAMDmyKwBAEaiDA4AgM05aYEZZXAAAGyOzBoAYCTK4AAA2BxlcAAAYBtk1gAAI1EGBwDA5iiDAwAA2yCzBgAYiTI4AAA256RngxOsAQBGclJmzZw1AAA2R2YNADCSk1aDE6wBAEaiDA4AAGyDzBoAYCTK4AAA2BxlcAAAcEbV1dXKzs5WcnKycnNztWnTprPuX1VVpauvvloXX3yxsrKyNH36dDU1NcXcH5k1AMBI7VUGX7JkiXw+nxYsWKDc3FxVVVWpqKhIO3bsUHp6eqv933zzTZWWlmrRokXKz8/Xzp07NXHiRLlcLlVWVsbUJ5k1AMBILpcrIVu8KisrNXnyZE2aNEnXXHONFixYoE6dOmnRokVR93///fc1bNgwjR8/XtnZ2br11ls1bty4c2bjP0awBgA4WjAY1PHjxyO2YDAYdd/m5mZt3rxZhYWF4Ta3263CwkLV1dVFPSY/P1+bN28OB+cvvvhCq1ev1u233x7zGAnWAAAjud2uhGx+v18pKSkRm9/vj9pnQ0ODWlpa5PV6I9q9Xq/q6+ujHjN+/Hg9+eSTGj58uDp06KA+ffpoxIgRevzxx2O/1tj/LAAA2EeiyuBlZWU6duxYxFZWVpawca5bt05z5szRyy+/rC1btuhvf/ubVq1apaeeeirmc7DADABgpEQtMPN4PPJ4PDHtm5qaqqSkJAUCgYj2QCCgjIyMqMfMnDlT99xzj+677z5J0oABA9TY2Kj7779fv//97+V2nztvJrMGACBGHTt21ODBg1VbWxtuC4VCqq2tVV5eXtRjTpw40SogJyUlSZIsy4qpXzJrAICR2uuhKD6fTxMmTNCQIUM0dOhQVVVVqbGxUZMmTZIklZSUKDMzMzzvPWrUKFVWVmrQoEHKzc3Vrl27NHPmTI0aNSoctM+FYA0AMJKrnWrDY8eO1aFDh1ReXq76+nrl5OSopqYmvOhs3759EZn0E088IZfLpSeeeEL79+9XWlqaRo0apWeeeSbmPl1WrDn4j8xy0CPe7GRWtJeq6XDbDwRSco/WbbwW7SfK68H7VPuI+j51gWy5wnvunWLwi12Bc+/UzsisAQBGctKzwQnWAAAjOelbt1gNDgCAzZFZAwCM5KYMDgCAvVEGBwAAtkFmDQAwEqvBAQCwOSeVwQnWAAAjOSmzZs4aAACbI7MGABiJMjgAADZHGRwAANgGmTUAwEgut3PyTYI1AMBITpqzds7HEgAADEVmDQAwk4MWmBGsAQBGogwOAABsg8waAGAkVoMDAGBzTnooCsEaAGAm5qwBAIBdkFkDAIzEnDUAADbnpDlr53wsAQDAUGTWAAAjOemhKARrAICZHBSsKYMDAGBzZNYAACO5XM7JNwnWAAAjOWnO2jkfSwAAMBSZNQDASE7KrAnWAAAzMWcNAIC9OSmzds7HEgAADEVmDQAwkpMya4I1AMBIfJEHAACwDTJrAICZ+D7rs5tlWYkeB85Xco/2HgFO47WwFd6nfvocP2cdDAYVDAYj2jwejzweT5sMCgAA/CBqDcHv9yslJSVi8/v9bT02AADOyOVyJWQzgcuyWteKyKwBAHYXuKsgIefxLt2QkPNcSFHL4ARmAADs4/xWgzcdTvAwEJNoC5hOHGj7cUDq1LNV01xDymk/RaXRFpPxPtU+2nChpeMXmAEAYHsO+oBMsAYAGMlJmbVz7igHAMBQZNYAACO5eIIZAAD2Zso90ongnI8lAAAYiswaAGAmBy0wI1gDAIzkpDlr51wpAACGIrMGABjJSQvMCNYAACPxUBQAAGAbZNYAADNRBgcAwN6cVAYnWAMAzOScWM2cNQAAdkdmDQAwk4PmrMmsAQBGcrkSs52P6upqZWdnKzk5Wbm5udq0adNZ9z969KimTp2qnj17yuPx6KqrrtLq1atj7o/MGgCAOCxZskQ+n08LFixQbm6uqqqqVFRUpB07dig9Pb3V/s3NzbrllluUnp6u5cuXKzMzU3v37lW3bt1i7pNgDQAwUzutBq+srNTkyZM1adIkSdKCBQu0atUqLVq0SKWlpa32X7RokY4cOaL3339fHTp0kCRlZ2fH1SdlcACAkRJVBg8Ggzp+/HjEFgwGo/bZ3NyszZs3q7CwMNzmdrtVWFiourq6qMesXLlSeXl5mjp1qrxer/r37685c+aopaUl5mslWAMAHM3v9yslJSVi8/v9UfdtaGhQS0uLvF5vRLvX61V9fX3UY7744gstX75cLS0tWr16tWbOnKnnn39eTz/9dMxjpAwOADBTglaDl5WVyefzRbR5PJ6EnFuSQqGQ0tPT9eqrryopKUmDBw/W/v379eyzz6qioiKmcxCsAQBmSlBt2OPxxBycU1NTlZSUpEAgENEeCASUkZER9ZiePXuqQ4cOSkpKCrf169dP9fX1am5uVseOHc/ZL2VwAICRXC5XQrZ4dOzYUYMHD1ZtbW24LRQKqba2Vnl5eVGPGTZsmHbt2qVQKBRu27lzp3r27BlToJYI1gAAxMXn82nhwoV6/fXX9dlnn2nKlClqbGwMrw4vKSlRWVlZeP8pU6boyJEjmjZtmnbu3KlVq1Zpzpw5mjp1asx9UgYHAJipnZ5gNnbsWB06dEjl5eWqr69XTk6OampqwovO9u3bJ7f7h1w4KytL77zzjqZPn67rrrtOmZmZmjZtmmbMmBFzny7Lsqy4R9p0OO5DkADJPVq3nTjQ9uOA1Klnq6a5Dnr0od2URnsb432qfUR7n7pAGh/9Xwk5T+fn/ndCznMhUQYHAMDmKIMDAMzE91kDAGBzzonVlMEBALA7MmsAgJHivUfaZARrAICZnBOrKYMDAGB3ZNYAACO5WA0OAIDNOSdWE6wBAIZy0AIz5qwBALA5MmsAgJEclFgTrAEAhnLQAjPK4AAA2ByZNQDASJTBAQCwOwdFa8rgAADYHJk1AMBIDkqsCdYAAEOxGhwAANgFmTUAwEwOqoMTrAEARnJQrCZYAwAM5aBozZw1AAA2R2YNADCSy0HpJsEaAGAmyuAAAMAuyKwBAGZyTmJNsAYAmMlFGRwAANgFmTUAwEwOejY4wRoAYCbK4AAAwC7IrAEAZqIMDgCAzTnoEWYEawCAmZizBgAAdkFmDQAwE3PWAADYnIPmrJ1zpQAAGIrMGgBgJsrgAADYHKvBAQCAXZBZAwDM5HZOvkmwBgCYiTI4AACwCzJrAICZKIMDAGBzDiqDE6wBAGZyULB2Tg0BAABDkVkDAMzEnDUAADZHGRwAANgFmTUAwEguvsgDAACb4/usAQCAXZBZAwDMRBkcAACbYzU4AACwCzJrAICZeCgKAAA256AyOMEaAGAmBwVr59QQAAAwFMEaAGAmtzsx23morq5Wdna2kpOTlZubq02bNsV03FtvvSWXy6Xi4uK4+iNYAwDM5HIlZovTkiVL5PP5VFFRoS1btmjgwIEqKirSwYMHz3rcnj179Oijj6qgoCDuPgnWAADEobKyUpMnT9akSZN0zTXXaMGCBerUqZMWLVp0xmNaWlp09913a/bs2erdu3fcfRKsAQBmcrsSsgWDQR0/fjxiCwaDUbtsbm7W5s2bVVhY+MMw3G4VFhaqrq7ujEN98sknlZ6ernvvvff8LvW8jgIAoL253AnZ/H6/UlJSIja/3x+1y4aGBrW0tMjr9Ua0e71e1dfXRz1m48aN+stf/qKFCxee96Vy6xYAwNHKysrk8/ki2jweT0LO/c033+iee+7RwoULlZqaet7nIVgDAMyUoC/y8Hg8MQfn1NRUJSUlKRAIRLQHAgFlZGS02n/37t3as2ePRo0aFW4LhUKSpIsuukg7duxQnz59ztkvZXAAgJnaYTV4x44dNXjwYNXW1obbQqGQamtrlZeX12r/vn376qOPPtK2bdvC25133qmRI0dq27ZtysrKiqlfMmsAAOLg8/k0YcIEDRkyREOHDlVVVZUaGxs1adIkSVJJSYkyMzPl9/uVnJys/v37RxzfrVs3SWrVfjYEawCAmdrpizzGjh2rQ4cOqby8XPX19crJyVFNTU140dm+ffvkTvDYXJZlWXEf1XQ4oYNAjJJ7tG47caDtxwGpU89WTXMd9JxiuymN9jbG+1T7iPY+dYGE/s9TCTmP+9aZCTnPhURmDQAwk4M+ILPADAAAmyOzBgCYyeWcfJNgDQAwk3Oq4JTBAQCwOzJrAICZHLTAjGANADCTg4I1ZXAAAGyOzBoAYCYHZdYEawCAoZwTrCmDAwBgc2TWAAAzOSexJlgDAAzFnDUAADbnoGDNnDUAADZ3fpl1G35fKc4hyvcqo31E/U5ltB/ep376HJRZRw3WwWBQwWAwos3j8cjj8bTJoAAAODfnBOuoZXC/36+UlJSIze/3t/XYAACAJJdlta7dkVkDAOwu9K/KhJzHPcyXkPNcSFHL4ARmAIDtOX3O+pyaDid4GIhJlAUzcx30H6udRF1MduJA2w8Ep0RbaMn7VPtgYd8FwX3WAAAzOShZIVgDAAzlnGDNQ1EAALA5MmsAgJkogwMAYHMEawAAbM45sZo5awAA7I7MGgBgJsrgAADYnXOCNWVwAABsjswaAGAmyuAAANicg4I1ZXAAAGyOzBoAYCbnJNYEawCAoSiDAwAAuyCzBgAYyjmZNcEaAGAmB5XBCdYAADM5KFgzZw0AgM2RWQMAzERmDQAA7IJgDQCAzVEGBwCYyUFlcII1AMBMDgrWlMEBALA5MmsAgJkclFkTrAEAhnJOsKYMDgCAzZFZAwDMRBkcAACbczmnOEywBgAYyjmZtXM+lgAAYCgyawCAmZizBgDA5hw0Z+2cKwUAwFBk1gAAQ1EGBwDA3hw0Z00ZHAAAmyOzBgAYyjn5JsEaAGAmyuAAAMAuCNYAADO5XInZzkN1dbWys7OVnJys3Nxcbdq06Yz7Lly4UAUFBerevbu6d++uwsLCs+4fDcEaAGAoV4K2+CxZskQ+n08VFRXasmWLBg4cqKKiIh08eDDq/uvWrdO4ceO0du1a1dXVKSsrS7feeqv2798f+5ValmXFPdKmw3EfggRI7tGqaa6D5mzspDTaP5sTB9p+IDilU8/WbbxPtY8o71MXSmj3ioScx92nOK79c3Nzdf3112v+/PmnxhEKKSsrSw899JBKS0vPeXxLS4u6d++u+fPnq6SkJLYxxjVCAAB+YoLBoI4fPx6xBYPBqPs2Nzdr8+bNKiwsDLe53W4VFhaqrq4upv5OnDih7777TpdeemnMYyRYAwDMlKA5a7/fr5SUlIjN7/dH7bKhoUEtLS3yer0R7V6vV/X19TENe8aMGbrssssiAv65cOsWAMBQiZkGLCsrk8/ni2jzeDwJOff/b+7cuXrrrbe0bt06JScnx3wcwRoA4Ggejyfm4JyamqqkpCQFAoGI9kAgoIyMjLMe+9xzz2nu3Ll69913dd1118U1RsrgAAAzudyJ2eLQsWNHDR48WLW1teG2UCik2tpa5eXlnfG4P/zhD3rqqadUU1OjIUOGxH2pZNYAACO52uluGJ/PpwkTJmjIkCEaOnSoqqqq1NjYqEmTJkmSSkpKlJmZGZ73njdvnsrLy/Xmm28qOzs7PLfdpUsXdenSJaY+CdYAAMRh7NixOnTokMrLy1VfX6+cnBzV1NSEF53t27dPbvcPGfsrr7yi5uZmjR49OuI8FRUVmjVrVkx9cp+1SbjP2ja4z9pmuM/aPtrwPmtrz+qEnMeVfXtCznMhkVkDAMwU53yzyZxzpQAAGIrMGgBgKOdMAxKsAQBmctCaHYI1AMBMzFkDAAC7ILMGABiKMjgAAPbmoDlryuAAANgcmTUAwEwOWmBGsAYAGIoyOAAAsAkyawCAmRy0wIxgDQAwlHOKw865UgAADEVmDQAwE2VwAABsjmANAIDdOWcm1zlXCgCAocisAQBmogwOAIDdOSdYUwYHAMDmyKwBAGaiDA4AgN05J1hTBgcAwObIrAEAZqIMDgCA3TmnOOycKwUAwFBk1gAAM1EGBwDA7gjWAADYm4Mya+asAQCwOTJrAIChnJNZE6wBAGaiDA4AAOyCzBoAYCjnZNYEawCAmSiDAwAAuyCzBgAYyjn5JsEaAGAmyuAAAMAuyKwBAIZyTmZNsAYAGIpgDQCArbmYswYAAHZBZg0AMJRzMmuCNQDATJTBAQCAXZBZAwAM5ZzMmmANADCTyznFYedcKQAAhiKzBgAYijI4AAD2xmpwAABgF2TWAABDOSezJlgDAMzkoDI4wRoAYCjnBGvmrAEAsDkyawCAmSiDAwBgd84J1pTBAQCwOTJrAICZeDY4AAB250rQFr/q6mplZ2crOTlZubm52rRp01n3X7Zsmfr27avk5GQNGDBAq1evjqs/gjUAAHFYsmSJfD6fKioqtGXLFg0cOFBFRUU6ePBg1P3ff/99jRs3Tvfee6+2bt2q4uJiFRcX6+OPP465T5dlWVbcI206HPchSIDkHq2a5jpoNaSdlEb7Z3PiQNsPBKd06tm6jfep9hHlfeqCaWpIzHmSU+PaPTc3V9dff73mz58vSQqFQsrKytJDDz2k0tLSVvuPHTtWjY2N+sc//hFu++Uvf6mcnBwtWLAgpj7Pb866LV8MnFXUoIH2ES1goP3wPuUAbZ+sNDc3a/PmzSorKwu3ud1uFRYWqq6uLuoxdXV18vl8EW1FRUVasWJFzP2ywAwA4GjBYFDBYDCizePxyOPxtNq3oaFBLS0t8nq9Ee1er1fbt2+Pev76+vqo+9fX18c8xpjmrIPBoGbNmtXqYtD2eC3sg9fCXng9HCi5R0I2v9+vlJSUiM3v97f31UWIOVjPnj2bfwQ2wGthH7wW9sLrgfNVVlamY8eORWw/LnP/WGpqqpKSkhQIBCLaA4GAMjIyoh6TkZER1/7RsBocAOBoHo9HXbt2jdiilcAlqWPHjho8eLBqa2vDbaFQSLW1tcrLy4t6TF5eXsT+krRmzZoz7h8Nc9YAAMTB5/NpwoQJGjJkiIYOHaqqqio1NjZq0qRJkqSSkhJlZmaGS+nTpk3TjTfeqOeff1533HGH3nrrLX3wwQd69dVXY+6TYA0AQBzGjh2rQ4cOqby8XPX19crJyVFNTU14Edm+ffvkdv9QuM7Pz9ebb76pJ554Qo8//riuvPJKrVixQv3794+5z5iCtcfjUUVFxRnLAmg7vBb2wWthL7weaEsPPvigHnzwwai/W7duXau2MWPGaMyYMefd3/k9FAUAALQZFpgBAGBzBGsAAGyOYA0AgM0RrAEAsDmCNQAANkewBgDA5gjWAADYHMEaAACbI1gDAGBzBGsAAGyOYA0AgM39XybtINfcmX11AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_likelihood(A_gp[1][:, :, 1],'Reward Left')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAGkCAYAAAAR/Q0YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAhUklEQVR4nO3df3BU1f3/8ddNhF0UQSRhgzQSwV8gQmiQGPDnTCQqgrS1/LICEWhrEcFtq8RCEtSyKIWJLSAFQdtqMIpW24KxmBGpQywColWqCARoGRMSEKJBNjbZ7x+dz+qaDWz4Lsk9Pc/HzJ0xJ+fec64z4b3v9zn3rhMKhUICAACuldDWEwAAACdGsAYAwOUI1gAAuBzBGgAAlyNYAwDgcgRrAABcjmANAIDLEawBAHA5gjUAAC5HsAYM9NRTT8lxHO3du7etpwKgFRCs0ep2796tH/3oR+rVq5e8Xq86deqkoUOH6rHHHtMXX3zR6vNJS0uT4zjKzs6O+vsVK1bIcRw5jqMtW7a08uwAQHJ4Nzha09q1a/X9739fHo9HEyZMUL9+/VRfX68333xTL7zwgiZNmqTly5e36pzS0tJUVVWl+vp6HThwQCkpKRG/v+666/T3v/9dx48f19tvv61Bgwa16vyiaWho0JdffimPxyPHcdp6OgBOMzJrtJqKigqNHTtWPXv21I4dO/TYY49p6tSpmjZtmlavXq0dO3bosssua5O5DR06VB07dlRJSUlE+7///W/97W9/0/Dhw9tkXs1JTEyU1+slUAOWIFij1Tz66KP6/PPPtXLlSnXv3r3J7y+88ELNmDFDkrR37145jqOnnnqqST/HcVRYWBjRduDAAd15553y+XzyeDy67LLLtGrVqpjn5vV69d3vflfFxcUR7atXr1aXLl2Uk5PT5Jz33ntPkyZNCpfzU1JSdOedd+rQoUMR/QoLC+U4jj788EONHj1anTp1UteuXTVjxgwdP368yb3dfffdeuaZZ3TJJZfI6/UqIyNDGzdujOgXbc06LS1Nt9xyi958800NHjxYXq9XvXr10u9///uoc7/22mvVoUMHfetb39LDDz+sJ598knVwwKXOaOsJwB5//vOf1atXLw0ZMiSu162qqtKVV14ZDnTJycl65ZVXNHnyZNXW1mrmzJkxXWf8+PEaNmyYdu/erd69e0uSiouLddttt6ldu3ZN+q9fv1579uxRbm6uUlJS9MEHH2j58uX64IMP9NZbbzXJekePHq20tDQFAgG99dZb+vWvf61PP/20STB94403VFJSonvuuUcej0dLly7VjTfeqM2bN6tfv34nvIddu3bptttu0+TJkzVx4kStWrVKkyZNUkZGRrhqceDAAV1//fVyHEd5eXk666yz9MQTT8jj8cT0/wlAGwgBreDo0aMhSaFbb701pv4VFRUhSaEnn3yyye8khQoKCsI/T548OdS9e/dQTU1NRL+xY8eGOnfuHDp27NgJx+rZs2do+PDhof/85z+hlJSU0EMPPRQKhUKhHTt2hCSF3njjjdCTTz4ZkhR6++23w+dFu+7q1atDkkIbN24MtxUUFIQkhUaOHBnR9yc/+UlIUujdd9+NuDdJoS1btoTb9u3bF/J6vaHvfOc74bb/m09FRUXEfXxz7IMHD4Y8Hk/opz/9abht+vTpIcdxQu+880647dChQ6Fzzz23yTUBuANlcLSK2tpaSdLZZ58d1+uGQiG98MILGjFihEKhkGpqasJHTk6Ojh49qm3btsV0rcTERI0ePVqrV6+WJD3zzDNKTU3V1VdfHbV/hw4dwv99/Phx1dTU6Morr5SkqGNOmzYt4ufp06dLktatWxfRnpWVpYyMjPDP559/vm699Va9+uqramhoOOE99O3bN2K+ycnJuuSSS7Rnz55wW2lpqbKyspSenh5uO/fcc3X77bef8NoA2g7BGq2iU6dOkqTPPvssrtetrq7WkSNHtHz5ciUnJ0ccubm5kqSDBw/GfL3x48drx44devfdd1VcXKyxY8c2u4nr8OHDmjFjhnw+nzp06KDk5GRdcMEFkqSjR4826X/RRRdF/Ny7d28lJCQ0WSP+Zj9Juvjii3Xs2DFVV1efcP7nn39+k7YuXbro008/Df+8b98+XXjhhU36RWsD4A6sWaNVdOrUSeedd57ef//9mPo3FyC/mVk2NjZKkn7wgx9o4sSJUc/p379/zPPMzMxU7969NXPmTFVUVGj8+PHN9h09erQ2bdqkn//850pPT1fHjh3V2NioG2+8MTyvEzkdO7kTExOjtod4QhMwGsEareaWW27R8uXLVV5erqysrBP27dKliyTpyJEjEe379u2L+Dk5OVlnn322Ghoamn2pSUuNGzdODz/8sPr06RNRKv66Tz/9VGVlZZo7d67y8/PD7R9//HGz1/3444/Dmbf0381gjY2NSktLa9Lvm3bu3KkzzzxTycnJLbuZKHr27Kldu3Y1aY/WBsAdKIOj1dx3330666yzNGXKFFVVVTX5/e7du/XYY49J+m8mnpSU1OSRpaVLl0b8nJiYqO9973t64YUXombtJysbRzNlyhQVFBRo4cKFzfb5vwz2mxlrUVFRs+csWbIk4uff/OY3kqSbbropor28vDxizftf//qXXn75ZQ0bNqzZzLklcnJyVF5eru3bt4fbDh8+rGeeeeb/+9oATg8ya7Sa3r17q7i4WGPGjFGfPn0i3mC2adMmPf/885o0aVK4/5QpUzR//nxNmTJFgwYN0saNG7Vz584m150/f75ef/11ZWZmaurUqerbt68OHz6sbdu26bXXXtPhw4dbNM+ePXs2eY77mzp16qRrrrlGjz76qL788kv16NFDf/3rX1VRUdHsORUVFRo5cqRuvPFGlZeX6+mnn9b48eM1YMCAiH79+vVTTk5OxKNbkjR37twW3Udz7rvvPj399NO64YYbNH369PCjW+eff74OHz7Mi1YAFyJYo1WNHDlS7733nhYsWKCXX35Zjz/+uDwej/r376+FCxdq6tSp4b75+fmqrq7WmjVr9Nxzz+mmm27SK6+8om7dukVc0+fzafPmzXrwwQf14osvaunSperatasuu+wyPfLII6ftXoqLizV9+nQtWbJEoVBIw4YN0yuvvKLzzjsvav+SkhLl5+dr1qxZOuOMM3T33XdrwYIFTfpde+21ysrK0ty5c7V//3717dtXTz31VIvW3k8kNTVVr7/+uu655x7NmzdPycnJmjZtms466yzdc8898nq9cRkHQPzwbnDgNCssLNTcuXNVXV2tpKSkE/Z1HEfTpk3T4sWLW2l2X5k5c6Z++9vf6vPPP49LuR1A/LBmDVjom99udujQIf3hD3/QVVddRaAGXIgyOGChrKwsXXfdderTp4+qqqq0cuVK1dbWas6cOW09NQBREKwBC918881as2aNli9fLsdx9O1vf1srV67UNddc09ZTAxAFa9YAAMRo48aNWrBggbZu3apPPvlEf/zjHzVq1KgTnrNhwwb5/X598MEHSk1N1ezZsyOefIkFa9YAAMSorq5OAwYMaPLehOZUVFRo+PDhuv7667V9+3bNnDlTU6ZM0auvvtqiccms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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_likelihood(A_gp[2][:, 3, :],'Cue Mapping')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Transition Dynamics\n", + "\n", + "We represent the dynamics of the environment (e.g. changes in the location of the agent and changes to the reward condition) as conditional probability distributions that encode the likelihood of transitions between the states of a given hidden state factor. These distributions are collected into the so-called `B` array, also known as _transition likelihoods_ or _transition distribution_ . As with the `A` array, we denote the true probabilities describing the environmental dynamics as `B_gp`. Each sub-matrix `B_gp[f]` of the larger array encodes the transition probabilities between state-values of a given hidden state factor with index `f`. These matrices encode dynamics as Markovian transition probabilities, such that the entry $i,j$ of a given matrix encodes the probability of transition to state $i$ at time $t+1$, given state $j$ at $t$. " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "B_gp = env.get_transition_dist()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For example, we can inspect the 'dynamics' of the `Reward Condition` factor by indexing into the appropriate sub-matrix of `B_gp`" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAGkCAYAAAAR/Q0YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAqgklEQVR4nO3de3xU5Z3H8e8kJDNAIFxCEgjUQLSCEC7lkk0wAdapqViUcgcLIau4UgpKyi5EuQQsRKiwUQFRKsWty0sElbKCWIiygmYX5eKNAiJykZqBcAsGMinJ2T94ZWRMgEk6kHN6Pu/X67w0T55zznMmJL/5/Z7nnHEYhmEIAACYVkhdDwAAAFwbwRoAAJMjWAMAYHIEawAATI5gDQCAyRGsAQAwOYI1AAAmR7AGAMDkCNYAAJgcwRpB43A4lJOTU9fDqJXDhw/L4XBo5cqVvracnBw5HI6A9l+5cqUcDocOHz58Ywb4DyQ+Pl5jx44NqG/fvn3Vt2/fGzoewAoI1jdB5R/yyq1evXqKi4vT2LFjdfz48boeXp0oLi7W7Nmz1aVLF0VERKh+/frq1KmTpk6dqr/+9a91PbyrmjdvntatW1fXw5D0/ZuJ621mD3Z79+5VTk4Ob3SAa6hX1wOwkzlz5qht27YqLS3V//7v/2rlypXavn27Pv/8c7lcrroe3k1z6NAhud1uHT16VEOHDtXDDz+s8PBwffrpp3rppZf05ptv6sCBA3U9TE2fPl3Tpk3za5s3b56GDBmigQMH+rWPHj1aI0aMkNPpvGnjGzRokG699Vbf1999953Gjx+vX/ziFxo0aJCvPSYm5qaNKRD79+9XSMj3ecLevXs1e/Zs9e3bV/Hx8X59//znP9/k0QHmRLC+ie655x716NFDkvTQQw8pKipK8+fP1/r16zVs2LA6Ht31lZSUqGHDhn/XMS5duqRBgwbJ4/Fo69atuvPOO/2+P3fuXM2fP//vOkew1KtXT/XqBfYrEhoaqtDQ0Bs8In+dO3dW586dfV8XFRVp/Pjx6ty5s375y19edb/S0lKFh4f7BcybqSZvaMLDw2/gSADroAxeh1JTUyVJX331lV/7vn37NGTIEDVr1kwul0s9evTQ+vXrfd8/e/asQkND9eyzz/raioqKFBISoubNm+vKD1IbP368YmNjfV9v27ZNQ4cO1Y9+9CM5nU61adNGkydP1sWLF/3GMHbsWEVEROirr75S//791ahRIz3wwAOSJK/Xq8mTJ6tFixZq1KiR7rvvPn3zzTcBXfPrr7+uTz75RE888USVQC1JjRs31ty5c/3a1qxZo+7du6t+/fqKiorSL3/5yyrTB5XjPX78uAYOHKiIiAi1aNFCU6ZMUXl5uV/fs2fPauzYsYqMjFSTJk2UkZGhs2fPVhnLD+esHQ6HSkpK9PLLL/tKzJVzr1ebs166dKk6duwop9OpVq1aacKECVXO1bdvX3Xq1El79+5Vv3791KBBA8XFxWnBggXXeTWvb+vWrXI4HHr11Vc1ffp0xcXFqUGDBiouLtbp06c1ZcoUJSYmKiIiQo0bN9Y999yjTz75pNpjvPbaa5o7d65at24tl8ulu+66SwcPHvTr++WXX2rw4MGKjY2Vy+VS69atNWLECJ07d87X58o565UrV2ro0KGSpH79+vle161bt/pemx+W8U+cOKEHH3xQMTExcrlc6tKli15++WW/PpVrEJ5++mm9+OKLSkhIkNPpVM+ePfXRRx/59S0sLFRmZqZat24tp9Opli1b6v7776csD1Mhs65DlX8MmjZt6mv74osv1Lt3b8XFxWnatGlq2LChXnvtNQ0cOFCvv/66fvGLX6hJkybq1KmT3n//fU2aNEmStH37djkcDp0+fVp79+5Vx44dJV0OzpVvCqTLge/ChQsaP368mjdvrh07dui5557TN998ozVr1viN79KlS0pPT9edd96pp59+Wg0aNJB0uSrwyiuvaNSoUUpJSdG7776re++9N6BrrnzTMXr06ID6r1y5UpmZmerZs6dyc3Pl8Xj0zDPP6IMPPtDu3bvVpEkTX9/y8nKlp6crKSlJTz/9tLZs2aKFCxcqISFB48ePlyQZhqH7779f27dv1yOPPKIOHTrozTffVEZGxnXH8sc//lEPPfSQevXqpYcffliSlJCQcNX+OTk5mj17ttxut8aPH6/9+/fr+eef10cffaQPPvhAYWFhvr5nzpzRz372Mw0aNEjDhg3T2rVrNXXqVCUmJuqee+4J6LW6lieffFLh4eGaMmWKvF6vwsPDtXfvXq1bt05Dhw5V27Zt5fF49MILL6hPnz7au3evWrVq5XeMp556SiEhIZoyZYrOnTunBQsW6IEHHtD//d//SZLKysqUnp4ur9eriRMnKjY2VseP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vn2+79dGQkKCfvOb3+jPf/6zPv/8c5WVlWnhwoW1OhZwIxCs61Dfvn3Vq1cv5eXlqbS0VNHR0erbt69eeOEFffvtt1X6nzx50u/r1NRUHT58WKtXr/aVxUNCQpSSkqJFixbpb3/7m998dWWWcWVWYRiGnnnmmYDHXLky+crbxiQpLy8voP2HDBmixMREzZ07VwUFBVW+f/78eT3xxBOSpB49eig6OlrLli2T1+v19Xn77bf1l7/8JeAV6Ffq37+/Ll26pOeff97XVl5erueeey6g/Rs2bBhQMHO73QoPD9ezzz7r93q/9NJLOnfuXK3GHmyhoaFVMvc1a9bU+ql6xcXFunTpkl9bYmKiQkJC/H5+P1R5734gr2v//v1VWFio1atX+9ouXbqk5557ThEREb4pnUBduHBBpaWlfm0JCQlq1KjRNccM3GzculXH/u3f/k1Dhw7VypUr9cgjj2jJkiW68847lZiYqHHjxqldu3byeDwqKCjQN99843cPbGUg3r9/v+bNm+drT0tL09tvv+27r7RS+/btlZCQoClTpuj48eNq3LixXn/99RrNi3bt2lUjR47U0qVLde7cOaWkpCg/P7/K/bZXExYWpjfeeENut1tpaWkaNmyYevfurbCwMH3xxRdatWqVmjZtqrlz5yosLEzz589XZmam+vTpo5EjR/pu3YqPj9fkyZMDHnelAQMGqHfv3po2bZoOHz6sO+64Q2+88UbA86rdu3fXli1btGjRIt9URFJSUpV+LVq0UHZ2tmbPnq2f/exnuu+++7R//34tXbpUPXv2vOZDS26Wn//855ozZ44yMzOVkpKizz77TP/1X//lq/DU1Lvvvqtf//rXGjp0qH784x/r0qVL+uMf/6jQ0FANHjz4qvt17dpVoaGhmj9/vs6dOyen06l//ud/VnR0dJW+Dz/8sF544QWNHTtWO3fuVHx8vNauXasPPvhAeXl5AS9erHTgwAHdddddGjZsmO644w7Vq1dPb775pjwej0aMGFHj1wC4YepoFbqtVN7W89FHH1X5Xnl5uZGQkGAkJCQYly5dMgzDML766itjzJgxRmxsrBEWFmbExcUZP//5z421a9dW2T86OtqQZHg8Hl/b9u3bDUlGampqlf579+413G63ERERYURFRRnjxo0zPvnkkyq3LWVkZBgNGzas9nouXrxoTJo0yWje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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_likelihood(B_gp[1][:, :, 0],'Reward Condition Transitions')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above transition array is the 'trivial' identity matrix, meaning that the reward condition doesn't change over time (it's mapped from whatever it's current value is to the same value at the next timestep)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### (Controllable-) Transition Dynamics\n", + "\n", + "Importantly, some hidden state factors are _controllable_ by the agent, meaning that the probability of being in state $i$ at $t+1$ isn't merely a function of the state at $t$, but also of actions (or from the agent's perspective, _control states_ ). So now each transition likelihood encodes conditional probability distributions over states at $t+1$, where the conditioning variables are both the states at $t-1$ _and_ the actions at $t-1$. This extra conditioning on actions is encoded via an optional third dimension to each factor-specific `B` matrix.\n", + "\n", + "For example, in our case the first hidden state factor (`Location`) is under the control of the agent, which means the corresponding transition likelihoods `B[0]` are index-able by both previous state and action." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAGkCAYAAAAR/Q0YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAvFElEQVR4nO3de1xVVf7/8feB4CCiiCKgDiOFzXhN/aISXilJvkqWUxrKlMqYWVlqPBqVLmDZRDeNvql5+X6dGifKS6YzaTRem/EyP0tlupldvE0WeEsp1EPB/v3hgzMez0EPdtC926/n47EfPlisvffaZx38nM9aa+/jMAzDEAAAMK2gy90AAABwfgRrAABMjmANAIDJEawBADA5gjUAACZHsAYAwOQI1gAAmBzBGgAAkyNYAwBgcgTrAHr55ZflcDi0b9++C9bduHGjHA6HNm7cWO/tOldqaqpSU1PdP+/bt08Oh0Mvv/yyu2z06NGKiIgIyPl8HX/atGlyOBwe9RwOh+67776AnDMQ6tJH7733nnr27KmGDRvK4XCopKSk3tsHwD5MG6wdDodf2+UIdnUxZ84cjyCFn58ffvhBw4YN07Fjx/T8889r0aJFat26db2dr+ZDxL59+9wfhM7+O6j5IBQUFKR///vfXvuXl5erQYMGpvtwdK6ioiIVFhbW2/HffPNNDRw4UNHR0QoNDVXLli112223af369fV2TklavXq1pk2bVm/HT0hIcB8/NTVVo0ePrrdz4dK54nI3oDaLFi3y+PlPf/qT1qxZ41Xerl27S9ms87rjjjs0fPhwOZ1Od9mcOXMUHR3t9QfTt29fnTp1SqGhoZe4ld5at26tU6dOKSQk5JKd85FHHtHUqVMv2fnq05dffqn9+/drwYIFuvPOOy93c9ycTqdee+01TZ482aN8+fLll6lFdVNUVKSPPvpIkyZNCuhxDcPQ7373O7388svq2rWrcnJyFBcXp2+++UZvvvmm+vfvr82bN6tnz54BPW+N1atXa/bs2fUasPHzY9pgffvtt3v8/M9//lNr1qzxKj/XyZMnFR4eXp9Nq1VwcLCCg4P9qhsUFKSwsLB6bpF/HA7HJW/LFVdcoSuuMO3br04OHTokSWrSpEnAjllRUaGGDRv+pGMMGjTIZ7AuKipSRkaG3njjjZ90fKuaMWOGXn75ZU2aNEkzZ870mI55+OGHtWjRIsu9Nw3D0OnTp9WgQYPL3RTUE9MOg/sjNTVVHTt21Pbt29W3b1+Fh4froYcekiStXLlSGRkZatmypZxOpxITEzV9+nRVVVX5PMYnn3yi6667TuHh4WrVqpWeeeYZr/O9+OKL6tChg8LDwxUVFaVu3bqpqKjI/ftz56wTEhL08ccf691333UP29fMFdc2H7p06VIlJSWpQYMGio6O1u23366DBw961KmZTz548KCGDBmiiIgINW/eXA8++KDX9fnD15yyLyUlJWrevLlSU1P1/fffS5IOHjyo3/3ud4qNjZXT6VSHDh20cOHCC57T15x1jRUrVqhjx47u4xUXF3vV2blzpwYOHKjGjRsrIiJC/fv31z//+U+venv27NGwYcPUtGlThYeH69prr9WqVau86n311VcaMmSIGjZsqJiYGD3wwANyuVwXvI7Ro0erX79+kqRhw4Z59LEkrV+/Xn369FHDhg3VpEkT3Xzzzdq1a5fP1+KTTz5RVlaWoqKi1Lt37wue+0KysrJUUlKiTz/91F1WWlqq9evXKysry+c+hw4d0pgxYxQbG6uwsDB17txZr7zyivv3P/zwg5o2bars7GyvfcvLyxUWFqYHH3zQXeZyuZSfn682bdrI6XQqPj5ekydPvuBrm5qaqlWrVmn//v3uv52EhAS/21mbU6dOqaCgQG3bttVzzz3n8z14xx13qEePHu6fjx8/rkmTJik+Pl5Op1Nt2rTR008/rerqanedmr+h5557TvPnz1diYqKcTqe6d++u9957z11v9OjRmj17tiTPqb4a1dXVKiwsVIcOHRQWFqbY2FiNGzdO3377rUcbExISdOONN+qdd95Rt27d1KBBA82bN++C1w/rstbHRx+OHj2qgQMHavjw4br99tsVGxsr6UzgjIiIUE5OjiIiIrR+/Xrl5eWpvLxczz77rMcxvv32W/33f/+3brnlFt12221atmyZpkyZok6dOmngwIGSpAULFmjChAkaOnSoJk6cqNOnT+uDDz7Q//t//6/W//gKCwt1//33KyIiQg8//LAkudvny8svv6zs7Gx1795dBQUFKisr0wsvvKDNmzdr586dHplbVVWV0tPTlZycrOeee05r167VjBkzlJiYqHvuueenvKQ+vffee0pPT1e3bt20cuVKNWjQQGVlZbr22mvdc5/NmzfX22+/rTFjxqi8vPyihi83bdqk5cuX695771WjRo30P//zP7r11lt14MABNWvWTJL08ccfq0+fPmrcuLEmT56skJAQzZs3T6mpqXr33XeVnJwsSSorK1PPnj118uRJTZgwQc2aNdMrr7yim266ScuWLdNvfvMbSWf+A+/fv78OHDigCRMmqGXLllq0aJFfc5fjxo1Tq1at9OSTT2rChAnq3r27u4/Xrl2rgQMH6qqrrtK0adN06tQpvfjii+rVq5d27NjhEXykM8H+6quv1pNPPqlAfHNt37599Ytf/EJFRUV6/PHHJUmLFy9WRESEMjIyvOqfOnVKqamp+uKLL3Tffffpyiuv1NKlSzV69GgdP35cEydOVEhIiH7zm99o+fLlmjdvnsc0zooVK+RyuTR8+HBJZwLPTTfdpE2bNumuu+5Su3bt9OGHH+r555/XZ599phUrVtTa9ocfflgnTpzQV199peeff16S3Ase/WlnbTZt2qRjx45p0qRJfo2CnTx5Uv369dPBgwc1btw4/fKXv9SWLVuUm5urb775xmtOvaioSN99953GjRsnh8OhZ555Rrfccov27NmjkJAQjRs3Tl9//bXPKT3pzPup5v+BCRMmaO/evZo1a5Z27typzZs3e0xV7d69WyNGjNC4ceM0duxY/frXv77g9cDCDIsYP368cW5z+/XrZ0gy5s6d61X/5MmTXmXjxo0zwsPDjdOnT3sd409/+pO7zOVyGXFxccatt97qLrv55puNDh06nLeNf/zjHw1Jxt69e91lHTp0MPr16+dVd8OGDYYkY8OGDYZhGEZlZaURExNjdOzY0Th16pS73ltvvWVIMvLy8txlo0aNMiQZjz/+uMcxu3btaiQlJZ23jTXXfHab9u7da0gy/vjHP3qco2HDhoZhGMamTZuMxo0bGxkZGR6v3ZgxY4wWLVoYR44c8Tj+8OHDjcjISHcf+Dp+fn6+V39KMkJDQ40vvvjCXfavf/3LkGS8+OKL7rIhQ4YYoaGhxpdffuku+/rrr41GjRoZffv2dZdNmjTJkGT84x//cJd99913xpVXXmkkJCQYVVVVhmEYRmFhoSHJWLJkibteRUWF0aZNG48+qk1NXy5dutSjvEuXLkZMTIxx9OhRj+sJCgoyRo4c6fVajBgx4rzn8VfN8Q4fPmw8+OCDRps2bdy/6969u5GdnW0YxpnXe/z48e7f1bwOf/7zn91llZWVRkpKihEREWGUl5cbhmEY77zzjiHJ+Otf/+px3kGDBhlXXXWV++dFixYZQUFBHq+/YRjG3LlzDUnG5s2bz3sdGRkZRuvWrb3K/W2nLy+88IIhyXjzzTfPe+4a06dPNxo2bGh89tlnHuVTp041goODjQMHDhiG8Z/3eLNmzYxjx465661cudLrtfL1f5lhGMY//vEPQ5Lx6quvepQXFxd7lbdu3dqQZBQXF/t1HbA+Sw+DS2cW0fgakjt77ua7777TkSNH1KdPH508edJjWFA684n97Lnw0NBQ9ejRQ3v27HGXNWnSRF999ZXHkFYgvf/++zp06JDuvfdej/njjIwMtW3b1ufQ7d133+3xc58+fTzaHAgbNmxQenq6+vfvr+XLl7sXzxmGoTfeeEODBw+WYRg6cuSIe0tPT9eJEye0Y8eOOp8vLS1NiYmJ7p+vueYaNW7c2H1dVVVV+tvf/qYhQ4boqquuctdr0aKFsrKytGnTJpWXl0s6s5CnR48eHkPKERERuuuuu7Rv3z598skn7notWrTQ0KFD3fXCw8N111131bn9Nb755huVlJRo9OjRatq0qcf13HDDDVq9erXXPuf2ZyBkZWXpiy++0Hvvvef+t7aRoNWrVysuLk4jRoxwl4WEhGjChAn6/vvv9e6770qSrr/+ekVHR2vx4sXuet9++63WrFmjzMxMd9nSpUvVrl07tW3b1uP9cf3110s68966GP6205ea90ajRo38OtfSpUvVp08fRUVFeVxDWlqaqqqq9Pe//92jfmZmpqKiotw/9+nTR5L8+rtcunSpIiMjdcMNN3icKykpSREREV6v15VXXqn09HS/rgPWZ/lh8FatWvlcUf3xxx/rkUce0fr1691/oDVOnDjh8fMvfvELr7mrqKgoffDBB+6fp0yZorVr16pHjx5q06aNBgwYoKysLPXq1Ssg17F//35J8jmU1bZtW23atMmjLCwsTM2bN/dq87lzWz/F6dOnlZGRoaSkJC1ZssRj0c3hw4d1/PhxzZ8/X/Pnz/e5f83Cq7r45S9/6VV29nUdPnxYJ0+e9Pk6tWvXTtXV1fr3v/+tDh06aP/+/e4h8XPrSWde844dO2r//v1q06aN13vgpwwrnq8/27Vrp3feecdrEdmVV1550eerTdeuXdW2bVsVFRWpSZMmiouLcwdLX22++uqrFRTk+Rn+7NdLOrM48NZbb1VRUZFcLpecTqeWL1+uH374wSNYf/7559q1a5fX+7TGxbw/6tJOXxo3bizpzAd4f3z++ef64IMP/L6Gc9+/NYHbn7/Lzz//XCdOnFBMTIxf56qP9wvMy/LB2tfqx+PHj6tfv35q3LixHn/8cSUmJiosLEw7duzQlClTPBaGSKp17so4a96wXbt22r17t9566y0VFxfrjTfe0Jw5c5SXl6fHHnsssBflB39Xnf8UTqdTgwYN0sqVK1VcXKwbb7zR/bua1/D222/XqFGjfO5/zTXX1Pmc/vTFz1V9reTNysrSSy+9pEaNGikzM9MryF2M4cOHa968eXr77bc1ZMgQLVmyRG3btlXnzp3ddaqrq9WpUyfNnDnT5zHi4+N/cjvqqm3btpKkDz/8UEOGDLlg/erqat1www1eK+pr/OpXv/L4+ae8f6urqxUTE6NXX33V5+/P/cDAym97sXyw9mXjxo06evSoli9frr59+7rL9+7d+5OO27BhQ2VmZiozM1OVlZW65ZZb9Ic//EG5ubm13vpU24rnc9U8RGP37t1emc/u3bvr9SEbtXE4HHr11Vd18803a9iwYXr77bfdK52bN2+uRo0aqaqqSmlpaZesTc2bN1d4eLh2797t9btPP/1UQUFB7iDQunXrWuvV/L7m348++kiGYXj0l699/XV2f/o6f3R09E++NctfWVlZysvL0zfffONzUVON1q1b64MPPlB1dbVHQD/39ZLOLF5r0aKFFi9erN69e2v9+vXuRZQ1EhMT9a9//Uv9+/f3++/gbLXtU5d2nqt3796KiorSa6+9poceeuiCH3oTExP1/fffB/Q9Xtt1JSYmau3aterVqxeBGF4sP2ftS80f4NmfZisrKzVnzpyLPubRo0c9fg4NDVX79u1lGIZ++OGHWvdr2LChjh8/fsHjd+vWTTExMZo7d67HbS1vv/22du3a5XP17qUQGhqq5cuXq3v37ho8eLC2bdsm6cxrfOutt+qNN97QRx995LXf4cOH66U9wcHBGjBggFauXOnxWNeysjIVFRWpd+/e7qHOQYMGadu2bdq6dau7XkVFhebPn6+EhAS1b9/eXe/rr7/WsmXL3PVOnjxZ6/C+P1q0aKEuXbrolVde8ej/jz76SH/72980aNCgiz52XSUmJqqwsFAFBQUetySda9CgQSotLfWYi/7xxx/14osvKiIiwn2LmnTmOQFDhw7VX//6Vy1atEg//vijxxC4JN122206ePCgFixY4HWuU6dOqaKi4rztbtiwodeUVV3bea7w8HBNmTJFu3bt0pQpU3xmvH/+85/d7/PbbrtNW7du1TvvvONV7/jx4/rxxx/Pew21XVfN/me77bbbVFVVpenTp3vt8+OPP/r1/wh+vn6WmXXPnj0VFRWlUaNGacKECXI4HFq0aNFPGkodMGCA4uLi1KtXL8XGxmrXrl2aNWuWMjIyzrtYJSkpSS+99JKeeOIJtWnTRjExMT7nDENCQvT0008rOztb/fr104gRI9y3biUkJOiBBx646Lb/VA0aNNBbb72l66+/XgMHDtS7776rjh076qmnntKGDRuUnJyssWPHqn379jp27Jh27NihtWvX6tixY/XSnieeeEJr1qxR7969de+99+qKK67QvHnz5HK5PO6Pnzp1ql577TUNHDhQEyZMUNOmTfXKK69o7969euONN9xZ2dixYzVr1iyNHDlS27dvV4sWLbRo0aKf/HCdZ599VgMHDlRKSorGjBnjvnUrMjLykj+96ny3M9W46667NG/ePI0ePVrbt29XQkKCli1bps2bN6uwsNDrfZ6ZmakXX3xR+fn56tSpk9fTBO+44w4tWbJEd999tzZs2KBevXqpqqpKn376qZYsWeK+R7g2SUlJWrx4sXJyctS9e3dFRERo8ODBdW7nuX7/+9/r448/1owZM7RhwwYNHTpUcXFxKi0t1YoVK7Rt2zZt2bLFXfcvf/mLbrzxRo0ePVpJSUmqqKjQhx9+qGXLlmnfvn2Kjo6+4Gt77nVJ0oQJE5Senq7g4GANHz5c/fr107hx41RQUKCSkhINGDBAISEh+vzzz7V06VK98MILHosgYTOXaxl6XdV261Ztt1Nt3rzZuPbaa40GDRoYLVu2NCZPnuy+5eTsW3FqO8aoUaM8bhuZN2+e0bdvX6NZs2aG0+k0EhMTjd///vfGiRMn3HV83bpVWlpqZGRkGI0aNTIkuW+ZOvfWrRqLFy82unbtajidTqNp06bGb3/7W+Orr77yalvNbVVn83U7lC91vXWrxpEjR4z27dsbcXFxxueff24YhmGUlZUZ48ePN+Lj442QkBAjLi7O6N+/vzF//vzzHr+2W7fOvpWo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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_likelihood(B_gp[0][:,:,0],'Transition likelihood for \"Move to Center\"')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAGkCAYAAAAR/Q0YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAwFElEQVR4nO3deXgUZbr38V8nkE5CICzZADlEwZmArBMgBmTTjDkQQVQwkEEgB3cQNK/D4kIQlXYDM8NiAA8uDNGwKTOCKCLxHBUHBXFEBUW2I5qQgCwG6GBS7x9e6aFJBzqxA1XW93NddSlPanmqn07uvu+nqtphGIYhAABgWkEXuwMAAODcCNYAAJgcwRoAAJMjWAMAYHIEawAATI5gDQCAyRGsAQAwOYI1AAAmR7AGAMDkCNY+vPjii3I4HNq7d+951y0oKJDD4VBBQUGd9+ts/fr1U79+/Tz/3rt3rxwOh1588UVP25gxYxQRERGQ4/na//Tp0+VwOLzWczgcGj9+fECOGQg1GaOPP/5YPXv2VIMGDeRwOLRt27Y67x/qnq/3bk23feaZZwLfMcBPdR6sHQ6HX8vFCHY1MX/+/Fr9osM6Tp8+rWHDhunw4cN69tlntWTJErVu3brOjlf5IWLv3r2egHDm70HlB6GgoCD93//9X5Xtjx07prCwMNN9ODpbXl6ecnJyAr7ffv36ef0NCQsLU6dOnZSTk6OKioqAH88fa9eu1fTp02u1bY8ePeRwOPTcc88FtlN+mD59uuLj4yX9O1mBudSr6wMsWbLE698vv/yy1q9fX6W9Xbt2dd0Vv91yyy0aPny4nE6np23+/PmKiorSmDFjvNbt06ePTp48qZCQkAvcy6pat26tkydPqn79+hfsmA899JCmTJlywY5Xl7799lvt27dPixYt0q233nqxu+PhdDr1yiuvaNKkSV7tq1atukg9qpm8vDxt375d9957b8D3fckll8jlckmSSkpKlJeXp/vuu0/FxcV6/PHHPetdqN+NtWvXat68eTUO2N98840+/vhjxcfHa+nSpbrrrrvqpoOwrDoP1iNHjvT690cffaT169dXaT/biRMnFB4eXpddq1ZwcLCCg4P9WjcoKEihoaF13CP/OByOC96XevXqqV69On8bXRAHDx6UJDVu3Dhg+ywtLVWDBg1+1T4GDhzoM1jn5eUpLS1NK1eu/FX7t7LIyEivvyV33nmnEhISNGfOHM2YMcPze3wxfjdq4m9/+5tiYmI0a9YsDR06VHv37vVkuucSiPcXrMEUc9b9+vVThw4dtGXLFvXp00fh4eF64IEHJEmrV69WWlqaWrRoIafTqTZt2ujRRx9VeXm5z318+eWX6t+/v8LDw9WyZUs99dRTVY43Z84cXXHFFQoPD1eTJk3UrVs35eXleX5+9px1fHy8vvjiC7333nueklvlXHF186HLly9XYmKiwsLCFBUVpZEjR+rAgQNe61TOJx84cEBDhgxRRESEoqOjdf/991c5P3/4Oy+3bds2RUdHq1+/fvrpp58kSQcOHNB//dd/KTY2Vk6nU1dccYUWL1583mP6mrOu9Prrr6tDhw6e/a1bt67KOp9++qkGDBigRo0aKSIiQtdcc40++uijKuvt3r1bw4YNU9OmTRUeHq4rr7xSa9asqbLed999pyFDhqhBgwaKiYnRfffdJ7fbfd7zGDNmjPr27StJGjZsmNcYS9K7776r3r17q0GDBmrcuLGuv/56ffXVVz5fiy+//FIZGRlq0qSJrrrqqvMe+3wyMjK0bds27dixw9NWWFiod999VxkZGT63OXjwoMaOHavY2FiFhoaqc+fOeumllzw/P336tJo2barMzMwq2x47dkyhoaG6//77PW1ut1vZ2dlq27atnE6nWrVqpUmTJp33te3Xr5/WrFmjffv2eX53zgxC5+tnTYWGhqp79+46fvy458OXVP3vxvLly9W+fXuFhoaqQ4cOeu211zRmzJhqA+XChQvVpk0bOZ1Ode/eXR9//LHnZ2PGjNG8efMkeU//+SMvL09Dhw7Vddddp8jISK+/R5XO9f6Kj4/Xddddp4KCAnXr1k1hYWHq2LGj5+/SqlWr1LFjR4WGhioxMVGffvqpX/2CeZgmJTp06JAGDBig4cOHa+TIkYqNjZX0S+CMiIhQVlaWIiIi9O6772ratGk6duyYnn76aa99/Pjjj/rP//xP3Xjjjbr55pu1YsUKTZ48WR07dtSAAQMkSYsWLdKECRM0dOhQTZw4UadOndK//vUv/fOf/6z2D19OTo7uueceRURE6MEHH5QkT/98efHFF5WZmanu3bvL5XKpqKhIf/nLX/TBBx/o008/9crcysvLlZqaqqSkJD3zzDN65513NGvWLLVp06ZOSmEff/yxUlNT1a1bN61evVphYWEqKirSlVde6Zn7jI6O1ptvvqmxY8fq2LFjtSpfvv/++1q1apXuvvtuNWzYUH/961910003af/+/WrWrJkk6YsvvlDv3r3VqFEjTZo0SfXr19eCBQvUr18/vffee0pKSpIkFRUVqWfPnjpx4oQmTJigZs2a6aWXXtLgwYO1YsUK3XDDDZKkkydP6pprrtH+/fs1YcIEtWjRQkuWLNG777573v7ecccdatmypWbOnKkJEyaoe/funjF+5513NGDAAF122WWaPn26Tp48qTlz5qhXr17aunVrlT/sw4YN0+WXX66ZM2cqEN9A26dPH11yySXKy8vTjBkzJEn5+fmKiIhQWlpalfVPnjypfv36adeuXRo/frwuvfRSLV++XGPGjNGRI0c0ceJE1a9fXzfccINWrVqlBQsWeE3jvP7663K73Ro+fLgkqaKiQoMHD9b777+v22+/Xe3atdPnn3+uZ599Vl9//bVef/31avv+4IMP6ujRo/ruu+/07LPPSpLngkd/+lkblYH5fBWSNWvWKD09XR07dpTL5dKPP/6osWPHqmXLlj7Xz8vL0/Hjx3XHHXfI4XDoqaee0o033qjdu3erfv36uuOOO/T999/7nOY7l3/+85/atWuXXnjhBYWEhOjGG2/U0qVLPQnL2ap7f+3atUsZGRm64447NHLkSD3zzDMaNGiQcnNz9cADD+juu++WJLlcLt18883auXOngoJMka/BH8YFNm7cOOPsw/bt29eQZOTm5lZZ/8SJE1Xa7rjjDiM8PNw4depUlX28/PLLnja3223ExcUZN910k6ft+uuvN6644opz9vGFF14wJBl79uzxtF1xxRVG3759q6y7ceNGQ5KxceNGwzAMo6yszIiJiTE6dOhgnDx50rPeG2+8YUgypk2b5mkbPXq0IcmYMWOG1z67du1qJCYmnrOPled8Zp/27NljSDJeeOEFr2M0aNDAMAzDeP/9941GjRoZaWlpXq/d2LFjjebNmxslJSVe+x8+fLgRGRnpGQNf+8/Ozq4ynpKMkJAQY9euXZ62zz77zJBkzJkzx9M2ZMgQIyQkxPj22289bd9//73RsGFDo0+fPp62e++915Bk/O///q+n7fjx48all15qxMfHG+Xl5YZhGEZOTo4hyVi2bJlnvdLSUqNt27ZeY1SdyrFcvny5V3uXLl2MmJgY49ChQ17nExQUZIwaNarKazFixIhzHsdflfsrLi427r//fqNt27aen3Xv3t3IzMw0DOOX13vcuHGen1W+Dn/72988bWVlZUZycrIRERFhHDt2zDAMw3jrrbcMScY//vEPr+MOHDjQuOyyyzz/XrJkiREUFOT1+huGYeTm5hqSjA8++OCc55GWlma0bt26Sru//axO3759jYSEBKO4uNgoLi42duzYYfz5z382JBlpaWle6/p673bs2NG45JJLjOPHj3vaCgoKDEle/a3ctlmzZsbhw4c97atXr67y+vn6+3Y+48ePN1q1amVUVFQYhmEYb7/9tiHJ+PTTT73WO9f7q3Xr1oYk48MPP/S0VY5vWFiYsW/fPk/7ggUL/Pp9gLmY5mOV0+n0WZILCwvz/P/x48dVUlKi3r1768SJE15lQemXT+xnzl+FhISoR48e2r17t6etcePG+u6777zKV4H0ySef6ODBg7r77ru95sjS0tKUkJDgs3R75513ev27d+/eXn0OhI0bNyo1NVXXXHONVq1a5bl4zjAMrVy5UoMGDZJhGCopKfEsqampOnr0qLZu3Vrj46WkpKhNmzaef3fq1EmNGjXynFd5ebnefvttDRkyRJdddplnvebNmysjI0Pvv/++jh07JumXi3Z69OjhVVKOiIjQ7bffrr179+rLL7/0rNe8eXMNHTrUs154eLhuv/32Gve/0g8//KBt27ZpzJgxatq0qdf5/PGPf9TatWurbHP2eAZCRkaGdu3apY8//tjz3+oqQWvXrlVcXJxGjBjhaatfv74mTJign376Se+9954k6eqrr1ZUVJTy8/M96/34449av3690tPTPW3Lly9Xu3btlJCQ4PX+uPrqqyX98t6qDX/7eS47duxQdHS0oqOjlZCQoKefflqDBw8+71TQ999/r88//1yjRo3yurWxb9++6tixo89t0tPT1aRJE8+/e/fuLUm/6nf1559/Vn5+vtLT0z0l86uvvloxMTFaunSpz22qe3+1b99eycnJnn9XVqauvvpq/cd//EeV9kD/jUHdMk2wbtmypc8rqr/44gvdcMMNioyMVKNGjRQdHe0JyEePHvVa95JLLqkyR9SkSRP9+OOPnn9PnjxZERER6tGjhy6//HKNGzdOH3zwQcDOY9++fZKk3//+91V+lpCQ4Pl5pdDQUEVHR5+zz7/WqVOnlJaWpq5du2rZsmVer3NxcbGOHDmihQsXev7oVS6VH57OnPvz15l/HCqdeV7FxcU6ceKEz9epXbt2qqio8NyutG/fvmrXq/x55X/btm1b5T3ga1t/nWs827Vrp5KSEpWWlnq1X3rppbU+XnW6du2qhIQE5eXlaenSpYqLi/MES199vvzyy6uUOM9+verVq6ebbrpJq1ev9sw9r1q1SqdPn/YK1t98842++OKLKu+P3/3ud5Jq9/6oST/PJT4+XuvXr9dbb72l+fPnq2XLliouLj7vxWSV+27btm2Vn/lqk6q+pysD96/5XX377bdVXFysHj16aNeuXdq1a5f27Nmj/v3765VXXvF5C1p176+z+xcZGSlJatWqlc/2QP6NQd0zzZz1mRl0pSNHjqhv375q1KiRZsyYoTZt2ig0NFRbt27V5MmTq7yRq7uC2zhjXqddu3bauXOn3njjDa1bt04rV67U/PnzNW3aND3yyCOBPSk/+HvV+a/hdDo1cOBArV69WuvWrdN1113n+Vnlazhy5EiNHj3a5/adOnWq8TH9GYvfKl/v5UDIyMjQc889p4YNGyo9PT0g843Dhw/XggUL9Oabb2rIkCFatmyZEhIS1LlzZ886FRUV6tixo2bPnu1zH2cHgwupQYMGSklJ8fy7V69e+sMf/qAHHnhAf/3rXwN6rLp4T1dmzzfffLPPn7/33nvq37+/V1t176/q+mfn38XfEtMEa18KCgp06NAhrVq1Sn369PG079mz51ftt0GDBkpPT1d6errKysp044036vHHH9fUqVOr/UTu71WdlQ/R2LlzZ5XMZ+fOnXX6kI3qOBwOLV26VNdff72GDRumN99803Olc3R0tBo2bKjy8nKvP3p1LTo6WuHh4dq5c2eVn+3YsUNBQUGeINC6detq16v8eeV/t2/fLsMwvMbL17b+OnM8fR0/Kirqgt06k5GRoWnTpumHH3445wVMrVu31r/+9S9VVFR4BfSzXy/pl4vXmjdvrvz8fF111VV69913PRdRVmrTpo0+++wzXXPNNbV6WEZ129Skn/7q1KmTRo4cqQULFuj+++/3WeE5c9+7du2q8jNfbf6qyetTWlqq1atXKz093WvqptKECRO0dOnSKsEa9mSaMrgvlZ8Iz/wEWFZWpvnz59d6n4cOHfL6d0hIiNq3by/DMHT69Olq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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_likelihood(B_gp[0][:,:,1],'Transition likelihood for \"Move to Right Arm\"')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAGkCAYAAAAR/Q0YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAvCElEQVR4nO3de1hVdb7H8c+GZAMieEFAHY8YNnlNHVTCe8nEUcaySUOpVMbspqnxOCldwKykpsk4413PcXQsyksePaVSStqczI6m2YyWluVlssBLKYW6KVjnDx/2uN0b3dBW1pr1fj3Penr88Vtr/db+Qd/9/f7W2tthGIYhAABgWkF1PQAAAHBpBGsAAEyOYA0AgMkRrAEAMDmCNQAAJkewBgDA5AjWAACYHMEaAACTI1gDAGByBOsaWLJkiRwOhw4dOnTZvlu2bJHD4dCWLVuu+Lgu1r9/f/Xv39/970OHDsnhcGjJkiXuttGjRysiIiIg5/N1/GnTpsnhcHj0czgcGj9+fEDOGQg1maMdO3aoZ8+eql+/vhwOh3bv3n3FxwdzKCwsVJcuXRQaGiqHw6FTp07V9ZBgQ3UWrB0Oh19bXQS7mpg7d65HkMK/nh9//FHDhg3Tt99+q5deeknLli1Tq1atrtj5qt5EHDp0yP1G6MK/g6o3QkFBQfrHP/7htX9paanCwsJM9+boYgUFBcrPzw/4cfv376+OHTsG5FgnT57UnXfeqbCwMM2ZM0fLli1T/fr1NWPGDK1Zs6bGx/v000/lcDgUGhpaJ0E/Pj5e06ZNk3T+dRo9evRVHwNq55q6OvGyZcs8/v2Xv/xFGzdu9Gpv167d1RzWJd1zzz0aPny4nE6nu23u3LmKjo72+qXv27evzp49q5CQkKs8Sm+tWrXS2bNnVa9evat2zieeeEJTp069aue7kr744gsdPnxYixYt0r333lvXw3FzOp169dVX9eijj3q0r169uo5GVDMFBQXas2ePJk2aVNdDqdaOHTv0/fff6+mnn1ZKSoq7fcaMGRo6dKiGDBlSo+O9/PLLiouL03fffadVq1aZ6vcJ5lZnwfruu+/2+PcHH3ygjRs3erVf7MyZMwoPD7+SQ6tWcHCwgoOD/eobFBSk0NDQKzwi/1S9k7+arrnmGl1zTZ39egXUsWPHJEkNGzYM2DHLyspUv379n3WMQYMG+QzWBQUFSktL0+uvv/6zjo/Azr1hGCooKFBGRoYOHjyoV155xa9gbRiGzp07p7CwsJ89BliXqdesq8pZO3fuVN++fRUeHq7HHntMkrR27VqlpaWpefPmcjqdSkhI0NNPP62Kigqfx/jkk0900003KTw8XC1atNAf/vAHr/PNmjVLHTp0UHh4uBo1aqRu3bqpoKDA/fOL16zj4+O1d+9evfvuu+6yfdVacXXroStXrlRiYqLCwsIUHR2tu+++W0ePHvXoU7WefPToUQ0ZMkQRERFq2rSpJk+e7HV9/vC1puzL7t271bRpU/Xv318//PCDJOno0aP63e9+p9jYWDmdTnXo0EGLFy++7Dl9rVlXWbNmjTp27Og+XmFhoVefjz76SAMHDlRkZKQiIiI0YMAAffDBB179vvzySw0bNkyNGzdWeHi4brzxRq1bt86r31dffaUhQ4aofv36iomJ0SOPPCKXy3XZ6xg9erT69esnSRo2bJjHHEvSO++8oz59+qh+/fpq2LChbrvtNn366ac+X4tPPvlEGRkZatSokXr37n3Zc19ORkaGdu/erX379rnbiouL9c477ygjI8PnPseOHdOYMWMUGxur0NBQde7cWUuXLnX//Mcff1Tjxo2VmZnptW9paalCQ0M1efJkd5vL5VJubq7atGkjp9Opli1b6tFHH73sa9u/f3+tW7dOhw8fdv/txMfH+z3OQNiwYYN77ho0aKC0tDTt3bvXY4yjRo2SJHXv3l0Oh0OjR4+Ww+FQWVmZli5d6h67P+XkrVu36tChQxo+fLiGDx+uv/71r/rqq6+8+sXHx+s3v/mN3nrrLXXr1k1hYWFasGCB+/8pK1as0FNPPaUWLVqoQYMGGjp0qE6fPi2Xy6VJkyYpJiZGERERyszM9Ot3HNZg+tTn5MmTGjhwoIYPH667775bsbGxks4HzoiICGVlZSkiIkLvvPOOcnJyVFpaqhdeeMHjGN99953+/d//Xb/97W915513atWqVZoyZYo6deqkgQMHSpIWLVqkCRMmaOjQoZo4caLOnTunv/3tb/q///u/av/Hl5+fr4cfflgRERF6/PHHJck9Pl+WLFmizMxMde/eXXl5eSopKdF//Md/aOvWrfroo4883r1XVFQoNTVVSUlJ+uMf/6hNmzbpxRdfVEJCgh588MGf85L6tGPHDqWmpqpbt25au3atwsLCVFJSohtvvNG99tm0aVNt2LBBY8aMUWlpaa3Kl++9955Wr16thx56SA0aNNCf/vQn3XHHHTpy5IiaNGkiSdq7d6/69OmjyMhIPfroo6pXr54WLFig/v37691331VSUpIkqaSkRD179tSZM2c0YcIENWnSREuXLtWtt96qVatW6fbbb5cknT17VgMGDNCRI0c0YcIENW/eXMuWLdM777xz2fHef//9atGihWbMmKEJEyaoe/fu7jnetGmTBg4cqGuvvVbTpk3T2bNnNWvWLPXq1Uu7du3yCD7S+WB/3XXXacaMGQrEN9P27dtXv/jFL1RQUKDp06dLkpYvX66IiAilpaV59T979qz69++vAwcOaPz48WrdurVWrlyp0aNH69SpU5o4caLq1aun22+/XatXr9aCBQs8lnHWrFkjl8ul4cOHS5IqKyt166236r333tN9992ndu3a6e9//7teeuklffbZZ5dc03388cd1+vRpffXVV3rppZckyX3Doz/j/LmWLVumUaNGKTU1Vc8//7zOnDmjefPmqXfv3vroo48UHx+vxx9/XNdff70WLlyo6dOnq3Xr1kpISFBKSoruvfde9ejRQ/fdd58kKSEh4bLnfOWVV5SQkKDu3burY8eOCg8P16uvvqrf//73Xn3379+vESNG6P7779fYsWN1/fXXu3+Wl5ensLAwTZ06VQcOHNCsWbNUr149BQUF6bvvvtO0adP0wQcfaMmSJWrdurVycnJ+9usFEzBMYty4ccbFw+nXr58hyZg/f75X/zNnzni13X///UZ4eLhx7tw5r2P85S9/cbe5XC4jLi7OuOOOO9xtt912m9GhQ4dLjvHPf/6zIck4ePCgu61Dhw5Gv379vPpu3rzZkGRs3rzZMAzDKC8vN2JiYoyOHTsaZ8+edfd78803DUlGTk6Ou23UqFGGJGP69Okex+zatauRmJh4yTFWXfOFYzp48KAhyfjzn//scY769esbhmEY7733nhEZGWmkpaV5vHZjxowxmjVrZpw4ccLj+MOHDzeioqLcc+Dr+Lm5uV7zKckICQkxDhw44G77+OOPDUnGrFmz3G1DhgwxQkJCjC+++MLd9vXXXxsNGjQw+vbt626bNGmSIcn43//9X3fb999/b7Ru3dqIj483KioqDMMwjPz8fEOSsWLFCne/srIyo02bNh5zVJ2quVy5cqVHe5cuXYyYmBjj5MmTHtcTFBRkjBw50uu1GDFixCXP46+q4x0/ftyYPHmy0aZNG/fPunfvbmRmZhqGcf71HjdunPtnVa/Dyy+/7G4rLy83kpOTjYiICKO0tNQwDMN46623DEnGG2+84XHeQYMGGddee63738uWLTOCgoI8Xn/DMIz58+cbkoytW7de8jrS0tKMVq1aebX7O87q9OvX75J/y99//73RsGFDY+zYsR7txcXFRlRUlEd71d/8jh07PPrWr1/fGDVq1CXHcaHy8nKjSZMmxuOPP+5uy8jIMDp37uzVt1WrVoYko7Cw0KO96vewY8eORnl5ubt9xIgRhsPhMAYOHOjRPzk52efrC2sydRlcOn8Tja+S3IXrN99//71OnDihPn366MyZMx5lQen8O/YL18JDQkLUo0cPffnll+62hg0b6quvvtKOHTuuwFVIH374oY4dO6aHHnrIY/04LS1Nbdu29Vm6feCBBzz+3adPH48xB8LmzZuVmpqqAQMGaPXq1e6b5wzD0Ouvv67BgwfLMAydOHHCvaWmpur06dPatWtXjc+XkpLikYXccMMNioyMdF9XRUWF3n77bQ0ZMkTXXnutu1+zZs2UkZGh9957T6WlpZKk9evXq0ePHh4l5YiICN133306dOiQPvnkE3e/Zs2aaejQoe5+4eHh7qyoNr755hvt3r1bo0ePVuPGjT2u59e//rXWr1/vtc/F8xkIGRkZOnDggHbs2OH+b3WVoPXr1ysuLk4jRoxwt9WrV08TJkzQDz/8oHfffVeSdPPNNys6OlrLly939/vuu++0ceNGpaenu9tWrlypdu3aqW3bth6/HzfffLOk879bteHvOGtr48aNOnXqlEaMGOEx7uDgYCUlJdV63JeyYcMGnTx50uOaRowYoY8//tij9F6ldevWSk1N9XmskSNHetwsmpSUJMMw9Lvf/c6jX1JSkv7xj3/op59+CtBVoC6ZPli3aNHC5x3Ve/fu1e23366oqChFRkaqadOm7oB8+vRpj76/+MUvvNZPGzVqpO+++8797ylTpigiIkI9evTQddddp3Hjxmnr1q0Bu47Dhw9Lkkc5q0rbtm3dP68SGhqqpk2bXnLMP9e5c+eUlpamrl27asWKFR6v8/Hjx3Xq1CktXLhQTZs29diq3jxV3XxTE//2b//m1XbhdR0/flxnzpzx+Tq1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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_likelihood(B_gp[0][:,:,2],'Transition likelihood for \"Move to Left Arm\"')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAGkCAYAAAAR/Q0YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAwYklEQVR4nO3deXRU5f3H8c8kkgkhJCwhCxQJBmvYBAwQw66kREhBqmAgCiFFrAoFzFExLixqiVaJsbJTUaRFQUD8FRDKagvSoiBVFFCRpVITNgENMKHJ/f3ByZRhJjCJE7jX+36dc4/y5K7zzMx3vt/nuTMOwzAMAQAA0wq62icAAAAujWANAIDJEawBADA5gjUAACZHsAYAwOQI1gAAmBzBGgAAkyNYAwBgcgRrAABMzhbB+vXXX5fD4dD+/fsvu+7GjRvlcDi0cePGaj+vi/Xo0UM9evRw/3v//v1yOBx6/fXX3W3Dhg1TeHh4QI7na/8TJ06Uw+HwWM/hcGjUqFEBOWYgVKaPPvzwQ3Xq1Em1atWSw+HQjh07qv38gKupMu93sI5KB2uHw+HXcjWCXWVMnz7dI0jhp+fcuXMaOHCgjh8/rpdeeknz589XkyZNqu145R8i9u/f7/4gdOHroPyDUFBQkP797397bX/q1CnVrFnTdB+OLrZgwQIVFBRU2/7feecd9e7dW1FRUQoJCVHDhg111113af369dV2zIqU9+nixYuv+LEvZ/LkyVq2bNlVOfbFz++LP/Qj8K6p7Abz58/3+Pcbb7yhNWvWeLU3b978x51ZAA0ZMkSDBg2S0+l0t02fPl1RUVEaNmyYx7rdunXTmTNnFBIScoXP0luTJk105swZ1ahR44od88knn9Rjjz12xY5Xnfbu3asDBw5ozpw5uvfee6/26bg5nU69+eabevTRRz3aly5depXOqHIWLFignTt3auzYsQHdr2EY+vWvf63XX39d7dq1U05OjmJjY/Xtt9/qnXfeUc+ePbV582Z16tQpoMe1qsmTJ2vAgAHq37+/R7uv9ztYX6WD9T333OPx73/84x9as2aNV/vFTp8+rbCwsMoeLiCCg4MVHBzs17pBQUEKDQ2t5jPyj8PhuOLncs011+iaayr9tDClw4cPS5Lq1KkTsH0WFxerVq1aP2offfr08RmsFyxYoPT0dC1ZsuRH7d+qpkyZotdff11jx45Vfn6+x3DME088ofnz5/9knpvVqTLvd7COahmz7tGjh1q1aqVt27apW7duCgsL0+OPPy5Jevfdd5Wenq6GDRvK6XQqISFBzzzzjEpLS33u4/PPP9ctt9yisLAwNWrUSL///e+9jvfKK6+oZcuWCgsLU926ddW+fXstWLDA/feLx3Di4+P12Wef6f3333eX7cvHiisaD3377beVlJSkmjVrKioqSvfcc48OHTrksU75ePKhQ4fUv39/hYeHq0GDBnr44Ye9rs8fvsaUfdmxY4caNGigHj166IcffpAkHTp0SL/+9a8VExMjp9Opli1bau7cuZc9pq8x63LLli1Tq1at3PtbtWqV1zoff/yxevfurYiICIWHh6tnz576xz/+4bXe119/rYEDB6pevXoKCwvTzTffrBUrVnit980336h///6qVauWoqOj9dBDD8nlcl32OoYNG6bu3btLkgYOHOjRx5K0fv16de3aVbVq1VKdOnV0++23a9euXT4fi88//1yZmZmqW7euunTpctljX05mZqZ27Nih3bt3u9sKCwu1fv16ZWZm+tzm8OHDGj58uGJiYhQaGqo2bdpo3rx57r+fO3dO9erVU3Z2tte2p06dUmhoqB5++GF3m8vl0oQJE9SsWTM5nU41btxYjz766GUf2x49emjFihU6cOCA+7UTHx/v93lW5MyZM8rLy1NiYqJefPFFn8/BIUOGqGPHjpIqfp5WNF773nvvufu7du3aSk9P12effXbZ8/KXv8/ns2fPauLEifr5z3+u0NBQxcXF6Y477tDevXvd67z44ovq1KmT6tevr5o1ayopKcmrDO9wOFRcXKx58+a5+6G8SljRYzB9+nS1bNlSTqdTDRs21MiRI3XixAmPdSrzvosrq9o+ph47dky9e/fWoEGDdM899ygmJkbS+SdSeHi4cnJyFB4ervXr12v8+PE6deqUXnjhBY99fPfdd7rtttt0xx136K677tLixYs1btw4tW7dWr1795YkzZkzR6NHj9aAAQM0ZswYnT17Vp988on++c9/VvjGV1BQoN/+9rcKDw/XE088IUnu8/Pl9ddfV3Z2tjp06KC8vDwVFRXp5Zdf1ubNm/Xxxx97ZG6lpaVKS0tTcnKyXnzxRa1du1ZTpkxRQkKCHnjggR/zkPr04YcfKi0tTe3bt9e7776rmjVrqqioSDff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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_likelihood(B_gp[0][:,:,3],'Transition likelihood for \"Move to Cue Location\"')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The generative model\n", + "Now we can move onto setting up the generative model of the agent - namely, the agent's beliefs about how hidden states give rise to observations, and how hidden states transition among eachother.\n", + "\n", + "In almost all MDPs, the critical building blocks of this generative model are the agent's representation of the observation likelihood, which we'll refer to as `A_gm`, and its representation of the transition likelihood, or `B_gm`. \n", + "\n", + "Here, we assume the agent has a veridical representation of the rules of the T-maze (namely, how hidden states cause observations) as well as its ability to control its own movements with certain consequences (i.e. 'noiseless' transitions)." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "num_agents = 50 # number of different agents \n", + "A_gm = [jnp.broadcast_to(jnp.array(a), (num_agents,) + a.shape) for a in A_gp] # map the true observation likelihood to jax arrays\n", + "B_gm = [jnp.broadcast_to(jnp.array(b), (num_agents,) + b.shape) for b in B_gp] # map the true transition likelihood to jax arrays\n", + "D_gm = [jnp.broadcast_to(jnp.array([1., 0., 0., 0.]), (num_agents, 4)), jnp.broadcast_to(jnp.array([.5, .5]), (num_agents, 2))]\n", + "C_gm = [jnp.zeros((num_agents, 4)), jnp.broadcast_to(jnp.array([0., -3., 3.]), (num_agents, 3)),jnp.zeros((num_agents, 2))]\n", + "E_gm = jnp.ones((num_agents, 4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Note !\n", + "It is not necessary, or even in many cases _important_ , that the generative model is a veridical representation of the generative process. This distinction between generative model (essentially, beliefs entertained by the agent and its interaction with the world) and the generative process (the actual dynamical system 'out there' generating sensations) is of crucial importance to the active inference formalism and (in our experience) often overlooked in code.\n", + "\n", + "It is for notational and computational convenience that we encode the generative process using `A` and `B` matrices. By doing so, it simply puts the rules of the environment in a data structure that can easily be converted into the Markovian-style conditional distributions useful for encoding the agent's generative model.\n", + "\n", + "Strictly speaking, however, all the generative process needs to do is generate observations and be 'perturbable' by actions. The way in which it does so can be arbitrarily complex, non-linear, and unaccessible by the agent." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introducing the `Agent()` class\n", + "\n", + "In `pymdp`, we have abstracted much of the computations required for active inference into the `Agent()` class, a flexible object that can be used to store necessary aspects of the generative model, the agent's instantaneous observations and actions, and perform action / perception using functions like `Agent.infer_states` and `Agent.infer_policies`. \n", + "\n", + "An instance of `Agent` is straightforwardly initialized with a call to `Agent()` with a list of optional arguments.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In our call to `Agent()`, we need to constrain the default behavior with some of our T-Maze-specific needs. For example, we want to make sure that the agent's beliefs about transitions are constrained by the fact that it can only control the `Location` factor - _not_ the `Reward Condition` (which we assumed stationary across an epoch of time). Therefore we specify this using a list of indices that will be passed as the `control_fac_idx` argument of the `Agent()` constructor. \n", + "\n", + "Each element in the list specifies a hidden state factor (in terms of its index) that is controllable by the agent. Hidden state factors whose indices are _not_ in this list are assumed to be uncontrollable." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "controllable_indices = [0] # this is a list of the indices of the hidden state factors that are controllable" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can construct our agent..." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "agent = Agent(A_gm, B_gm, C_gm, D_gm, E_gm, control_fac_idx=controllable_indices)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(4, 1, 2)\n", + "int32\n" + ] + } + ], + "source": [ + "policies = jnp.stack(agent.policies)\n", + "print(policies.shape)\n", + "print(policies.dtype)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PyTreeDef(CustomNode(Agent[(('A', 'B', 'C', 'D', 'E', 'gamma', 'qs', 'q_pi'), ('num_obs', 'num_modalities', 'num_states', 'num_factors', 'num_controls', 'inference_algo', 'control_fac_idx', 'policy_len', 'policies', 'use_utility', 'use_states_info_gain', 'use_param_info_gain', 'action_selection'), ([4, 3, 2], 3, [4, 2], 2, [4, 1], 'VANILLA', [0], 1, DeviceArray([[[0, 0]],\n", + "\n", + " [[1, 0]],\n", + "\n", + " [[2, 0]],\n", + "\n", + " [[3, 0]]], dtype=int32), True, True, False, 'deterministic'))], [[*, *, *], [*, *], [*, *, *], [*, *], *, *, None, None]))\n" + ] + } + ], + "source": [ + "import jax.tree_util as jtu\n", + "\n", + "vals, tree = jtu.tree_flatten(agent)\n", + "\n", + "print(tree)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Active Inference\n", + "Now we can start off the T-maze with an initial observation and run active inference via a loop over a desired time interval." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " === Starting experiment === \n", + " Reward condition: Right, Observation: [CENTER, No reward, Cue Left]\n", + "[Step 0] Action: [Move to RIGHT ARM]\n", + "[Step 0] Observation: [RIGHT ARM, Reward!, Cue Right]\n", + "[Step 1] Action: [Move to CUE LOCATION]\n", + "[Step 1] Observation: [CUE LOCATION, No reward, Cue Right]\n", + "[Step 2] Action: [Move to LEFT ARM]\n", + "[Step 2] Observation: [LEFT ARM, Loss!, Cue Left]\n", + "[Step 3] Action: [Move to CUE LOCATION]\n", + "[Step 3] Observation: [CUE LOCATION, No reward, Cue Right]\n", + "[Step 4] Action: [Move to LEFT ARM]\n", + "[Step 4] Observation: [LEFT ARM, Reward!, Cue Right]\n" + ] + } + ], + "source": [ + "T = 5 # number of timesteps\n", + "\n", + "emp_prior = D_gm\n", + "_obs = env.reset() # reset the environment and get an initial observation\n", + "obs = jnp.broadcast_to(jnp.array(_obs), (num_agents, len(_obs)))\n", + "\n", + "# these are useful for displaying read-outs during the loop over time\n", + "reward_conditions = [\"Right\", \"Left\"]\n", + "location_observations = ['CENTER','RIGHT ARM','LEFT ARM','CUE LOCATION']\n", + "reward_observations = ['No reward','Reward!','Loss!']\n", + "cue_observations = ['Cue Right','Cue Left']\n", + "msg = \"\"\" === Starting experiment === \\n Reward condition: {}, Observation: [{}, {}, {}]\"\"\"\n", + "print(msg.format(reward_conditions[env.reward_condition], location_observations[_obs[0]], reward_observations[_obs[1]], cue_observations[_obs[2]]))\n", + "\n", + "measurements = {'actions': [], 'outcomes': [obs]}\n", + "for t in range(T):\n", + " qs = agent.infer_states(obs, emp_prior)\n", + "\n", + " q_pi, efe = agent.infer_policies(qs)\n", + "\n", + " actions = agent.sample_action(q_pi)\n", + " emp_prior = agent.update_empirical_prior(actions, qs)\n", + "\n", + " measurements[\"actions\"].append( actions )\n", + " msg = \"\"\"[Step {}] Action: [Move to {}]\"\"\"\n", + " print(msg.format(t, location_observations[int(actions[0, 0])]))\n", + "\n", + " obs = []\n", + " for a in actions:\n", + " obs.append( jnp.array(env.step(list(a))) )\n", + " obs = jnp.stack(obs)\n", + " measurements[\"outcomes\"].append(obs)\n", + "\n", + " msg = \"\"\"[Step {}] Observation: [{}, {}, {}]\"\"\"\n", + " print(msg.format(t, location_observations[obs[0, 0]], reward_observations[obs[0, 1]], cue_observations[obs[0, 2]]))\n", + " \n", + "measurements['actions'] = jnp.stack(measurements['actions']).astype(jnp.int32)\n", + "measurements['outcomes'] = jnp.stack(measurements['outcomes'])\n", + "\n", + "measurements['outcomes'] = measurements['outcomes'][None, :T]\n", + "measurements['actions'] = measurements['actions'][None]" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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t7/pueee08mTJzVz5kxJUseOHZWRkaERI0bo1ltv1QsvvCBJ2rNnjz755BNNmjTpgvN2Z/vbtGmTli1bpocfflh2u10LFizQbbfdpu3bt6tz586S3F831UlLS9NDDz0kX19fPfXUU5Lk3IYvZMmSJfr11191//33y263q2nTpvrmm2/Uq1cvhYSEaMqUKWrQoIGWL1+uxMREvffee/r973+vxo0bq3Pnztq8ebMefvhhSWfeaG02m44fP67du3erU6dOks6Ej5iYGOc8V6xYoeLiYo0fP17NmjXT9u3b9eqrr+qnn37SihUrXOo7ffq04uPj1bt3b82ePVv169eXJN1333165513NHLkSPXs2VPr16+v8XGgrKxMv/vd75SZman/+Z//0aRJk1RYWKiMjAx9/fXXatOmjSzL0tChQ7VhwwaNHTtWERERWrNmjR577DEdOXKk0uW/rVu36h//+IcmTJighg0b6pVXXtGdd96pQ4cOqVmzZpKkr776SnFxcQoICND06dN1+vRppaamVrue+vTpo4cfflivvPKKnnzySXXs2FGSnP+f69SpU+rXr5/27dunBx98UK1bt9aKFSs0evRonThxotK2vnTpUhUWFuoPf/iDbDabXnzxRd1xxx364YcfrunL6hdk4Yq1ZMkSS1KV/yzLsn788UdLkrVkyRLnOKNGjbIkWc8884zLtLp27WpFRka6tBUXF7sMl5aWWp07d7YGDBjg0t6qVStr1KhRF6y1opZ69epZP/30k7P9s88+syRZkydPdrZFRERYgYGB1rFjx5xtX375peXh4WElJSU52xo1amRNnDjxgvMdPHiw1apVq0rtf/vb3ywPDw9ry5YtLu0LFy60JFmffPKJs02S5eHhYX3zzTeVpiPJSk1NdQ4nJiZa3t7e1v79+51tP//8s9WwYUOrT58+zraKdde7d2/r9OnTF/wbLMuyNmzYYEmyQkJCrIKCAmf78uXLLUnWyy+/bFmWZZWXl1vt2rWz4uPjrfLycme/4uJiq3Xr1tbAgQMr1fDjjz862/r27Wv17dv3opZT3759rU6dOrn0mzRpkuXn51ejv/FcNd3+Krb5L774wtl28OBBy8fHx/r973/vbKvpuklNTbWqOvRVtbw6derksrwupGIf8PPzs3Jzc11eu/XWW60uXbpYv/76q7OtvLzc6tmzp9WuXTtn28SJE62goCDncHJystWnTx8rMDDQeu211yzLsqxjx45ZNpvNuU1YVuVlaVmWNXPmTMtms1kHDx50tlUcH6ZMmeLSNysry5JkTZgwwaV95MiRlfaBqixevNiSZM2dO7fSaxXb6apVqyxJ1rPPPuvy+rBhwyybzWbt27fP2SbJ8vb2dmn78ssvLUnWq6++6mxLTEy0fHx8XP7G3bt3W56enpXW8bnHsRUrVliSrA0bNlSq+dz9JC0tzZJkvfPOO8620tJSKzo62vL19XXusxXbQLNmzazjx487+77//vuWJOtf//pXpXnhDC7TXAXmz5+vjIwMl3/VeeCBB1yGY2Ji9MMPP7i0VXzSlqT//Oc/ys/PV0xMjPMyyMVITExUSEiIc7hHjx6KiopSenq6JOmXX35RVlaWRo8eraZNmzr73XzzzRo4cKCznyQ1btxYn332mX7++We361ixYoU6duyoDh06KC8vz/lvwIABkqQNGza49O/bt69uuummC06zrKxMa9euVWJiom644QZne/PmzTVy5Eht3bpVBQUFLuOMGzdOnp6eNa47KSlJDRs2dA4PGzZMzZs3dy6XrKwsff/99xo5cqSOHTvm/LuKiop06623avPmzSovL6/x/NxdTudq3LixioqKarRNnsud7S86OlqRkZHO4ZYtW+r222/XmjVrVFZWdlHr5nK58847FRAQ4Bw+fvy41q9fr7vvvluFhYXOZXzs2DHFx8fr+++/15EjRySd2U9zcnL07bffSjpzBqRPnz6KiYnRli1bJJ05Y2BZlsuZkbOXZVFRkfLy8tSzZ09ZlqVdu3ZVqvHsM6SSnNtXxRmZCjW9Mfy9996Tv7+/HnrooUqvVVwSS09Pl6enZ6V5/PGPf5RlWfr4449d2mNjY9WmTRvn8M033yw/Pz/ncaysrExr1qxRYmKiWrZs6ezXsWNHxcfH16jumkpPT1dwcLBGjBjhbPPy8tLDDz+skydPatOmTS79hw8friZNmjiHK9bVucdg/BeXaa4CPXr0OO8NrFXx8fFxORhKUpMmTfSf//zHpe3DDz/Us88+q6ysLJf7KKq6nl5T7dq1q9R24403avny5ZKkgwcPSpLat29fqV/Hjh21Zs0a5w11L774okaNGqXQ0FBFRkYqISFBSUlJLm825/P9999rz549lZZDhdzcXJfhc59WqsrR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jAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwKiLCiPz589XWFiYfHx8FBUVpe3bt1+wf1pamtq3b6969eopNDRUkydP1q+//npRBQMAgLrF7TCybNkyJScnKzU1VTt37lR4eLji4+OVm5tbZf+lS5dqypQpSk1N1Z49e/Tmm29q2bJlevLJJy+5eAAAcPVzO4zMnTtX48aN05gxY3TTTTdp4cKFql+/vhYvXlxl/08//VS9evXSyJEjFRYWpri4OI0YMaLasykAAODacJ07nUtLS7Vjxw6lpKQ42zw8PBQbG6tt27ZVOU7Pnj31zjvvaPv27erRo4d++OEHpaen69577z3vfEpKSlRSUuIcLigokCQ5HA45HA53Sq6WV61ODah7anufAyq2Kbatuq+m69itMJKXl6eysjIFBQW5tAcFBWnv3r1VjjNy5Ejl5eWpd+/esixLp0+f1gMPPHDByzQzZ87UjBkzKrWvXbtW9evXd6fkat1eq1MD6p709HTTJaCOysjIMF0CLrPi4uIa9XMrjFyMjRs36vnnn9eCBQsUFRWlffv2adKkSfrTn/6kqVOnVjlOSkqKkpOTncMFBQUKDQ1VXFyc/Pz8LnfJAM6SkJBgugTUMQ6HQxkZGRo4cKC8vDg/XZdVXNmojlthxN/fX56ensrJyXFpz8nJUXBwcJXjTJ06Vffee6/uu+8+SVKXLl1UVFSk+++/X0899ZQ8PCrftmK322W32yu1e3l5seECvzH2OVwuHNPrvpquX7duYPX29lZkZKQyMzOdbeXl5crMzFR0dHSV4xQXF1cKHJ6enpIky7LcmT0AAKiD3L5Mk5ycrFGjRqlbt27q0aOH0tLSVFRUpDFjxkiSkpKSFBISopkzZ0qShgwZorlz56pr167OyzRTp07VkCFDnKEEAABcu9wOI8OHD9fRo0c1bdo0ZWdn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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_beliefs(qs[1][0],\"Final posterior beliefs about reward condition\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Model inversion\n", + "Define model likelihood given the observed sequence of actions and outcomes" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 5, 50, 3)\n", + "(1, 5, 50, 2)\n", + "494 ms ± 6.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "172 ms ± 412 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "dict_keys(['actions', 'outcomes'])\n" + ] + } + ], + "source": [ + "import numpyro as npyro\n", + "from jax import random\n", + "from numpyro.infer import Predictive\n", + "from pymdp.jax.likelihoods import aif_likelihood, evolve_trials\n", + "\n", + "print(measurements['outcomes'].shape)\n", + "print(measurements['actions'].shape)\n", + "\n", + "Nb, Nt, Na, _ = measurements['actions'].shape\n", + "\n", + "xs = {'outcomes': measurements['outcomes'][0], 'actions': measurements['actions'][0]}\n", + "evolve_trials(agent, xs)\n", + "%timeit evolve_trials(agent, xs)\n", + "\n", + "rng_key = random.PRNGKey(0)\n", + "\n", + "with npyro.handlers.seed(rng_seed=0):\n", + " aif_likelihood(Nb, Nt, Na, measurements, agent)\n", + "\n", + "%timeit pred_samples = Predictive(aif_likelihood, num_samples=11)(rng_key, Nb, Nt, Na, measurements, agent)\n", + "print(pred_samples.keys())" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "import numpyro as npyro\n", + "import numpyro.distributions as dist\n", + "from jax import nn, lax, vmap\n", + "\n", + "@vmap\n", + "def trans_params(z):\n", + "\n", + " a = nn.sigmoid(z[0])\n", + " lam = nn.softplus(z[1])\n", + " d = nn.sigmoid(z[2])\n", + "\n", + " A = lax.stop_gradient([jnp.array(x) for x in list(A_gp)])\n", + "\n", + " middle_matrix1 = jnp.array([[0., 0.], [a, 1-a], [1-a, a]])\n", + " middle_matrix2 = jnp.array([[0., 0.], [1-a, a], [a, 1-a]])\n", + "\n", + " side_vector = jnp.stack([jnp.array([1.0, 0., 0.]), jnp.array([1.0, 0., 0.])], -1)\n", + "\n", + " A[1] = jnp.stack([side_vector, middle_matrix1, middle_matrix2, side_vector], -2)\n", + " \n", + " C = [\n", + " jnp.zeros(4),\n", + " lam * jnp.array([0., 1., -1.]),\n", + " jnp.zeros(2)\n", + " ]\n", + "\n", + " D = [nn.one_hot(0, 4), jnp.array([d, 1-d])]\n", + "\n", + " E = jnp.ones(4)/4\n", + "\n", + " params = {\n", + " 'A': A,\n", + " 'B': lax.stop_gradient([jnp.array(x) for x in list(B_gp)]),\n", + " 'C': C,\n", + " 'D': D,\n", + " 'E': E\n", + " }\n", + "\n", + " return params, a, lam, d" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "357 ms ± 3.31 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", + "dict_keys(['a', 'actions', 'd', 'lambda', 'outcomes', 'z'])\n" + ] + } + ], + "source": [ + "def model(data, num_blocks, num_steps, num_agents, num_params=3):\n", + " with npyro.plate('agents', num_agents):\n", + " z = npyro.sample('z', dist.Normal(0., 1.).expand([num_params]).to_event(1))\n", + " params, a, lmbd, d = trans_params(z)\n", + " # register parameter values\n", + " npyro.deterministic('a', a)\n", + " npyro.deterministic('lambda', lmbd)\n", + " npyro.deterministic('d', d)\n", + "\n", + " agents = Agent(\n", + " params['A'], \n", + " params['B'], \n", + " params['C'], \n", + " params['D'], \n", + " params['E'], \n", + " control_fac_idx=controllable_indices\n", + " )\n", + "\n", + " aif_likelihood(num_blocks, num_steps, num_agents, data, agents)\n", + " \n", + "with npyro.handlers.seed(rng_seed=101111):\n", + " model(measurements, Nb, Nt, Na)\n", + "\n", + "%timeit pred_samples = Predictive(model, num_samples=11)(rng_key, measurements, Nb, Nt, Na)\n", + "print(pred_samples.keys())" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [], + "source": [ + "# inference with NUTS and MCMC\n", + "from numpyro.infer import NUTS, MCMC\n", + "from numpyro.infer import init_to_feasible, init_to_sample\n", + "\n", + "rng_key = random.PRNGKey(0)\n", + "kernel = NUTS(model, init_strategy=init_to_feasible)\n", + "\n", + "mcmc = MCMC(kernel, num_warmup=1000, num_samples=1000, progress_bar=False)\n", + "\n", + "rng_key, _rng_key = random.split(rng_key)\n", + "mcmc.run(_rng_key, measurements, Nb, Nt, Na)" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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89EPVVVVSrdu3ZRHHnlEOXLkiLJkyRIlISFBmTNnznndl3MudimKonz99ddKnz59lJiYGOXaa69V9uzZ0zBv4sSJymOPPdYofunSpcrAgQOVmJgYZejQocratWv/zebFOTibPuvbt68SGRl50td7773XFKlfkc72GPszKXZdfGfbX7t27VLGjh2rxMbGKv3791emT5+uWK3Wi532Fe1s+sxisSjvv/++MmDAACUuLk7p3bu38txzzymVlZVNkfoVZ8uWLaf8nXSijx577DFl4sSJJy1zzTXXKDExMUr//v2V+fPnN0XqV4S/O5bE+XeqYyEyMrLRz7jRaFSee+45pWPHjkpCQoJyzz33KEVFRY3Wk5ubq9x+++1KfHy80rlzZ+XVV19VLBbLxd6dZu+vxS7pm6azevVqZdiwYUpsbKwyePBg5fvvv2803263K++8847SrVs3JTY2VrnpppuUjIyMRjHl5eXKQw89pCQmJirJycnK448/LjcD/EvV1dXKiy++qPTp00eJi4tT+vfvr7z11luKyWRqiJG+uTj+6XrrfPXDoUOHlAkTJiixsbFKz549lRkzZpz3fVEpioy9EEIIIYQQQgghhBDNgzxNVwghhBBCCCGEEEI0G1LsEkIIIYQQQgghhBDNhhS7hBBCCCGEEEIIIUSzIcUuIYQQQgghhBBCCNFsSLFLCCGEEEIIIYQQQjQbUuwSQgghhBBCCCGEEM2GFLuEEEIIIYQQQgghRLMhxS4hhBBCCCGEEEII0WxIsUsIIYQQQghxxYmKimr0FR0dTfv27bnuuuv44osvsFgsTZbbjz/+SFRUFO+///55W+exY8eIjY3ltdde+9frmjRpElFRUeTm5jaa3q9fP6Kiov71+k8nKiqKfv36XbD1X+zt/FlKSgpRUVF88sknF3W7QjRX2qZOQAghhBBCCCGayqhRowCw2Wzk5eWxe/du9u7dy9q1a5k1axZabfP4k+nNN99Ep9MxefLkpk5FnEK7du3o168fM2fOZOzYsXh4eDR1SkJc1prHmVsIIYQQQgghzsGrr77a6Pu9e/cyadIkNm/ezJIlS7jmmmuaKLPz5+DBgyxfvpxJkybh5eXV1Olc8pYuXYpOp7vo273jjjtYvXo1n3zyCY888shF374QzYkMYxRCCCGEEEKIPyQkJDTc7fXbb781cTbnx3fffQfAyJEjmzaRy0RERAShoaEXfbuJiYmEhYUxf/58zGbzRd++EM2JFLuEEEIIIYQQ4k/atGkDQFlZWaPpiqKwePFiHnzwQQYNGkRiYiJJSUlce+21zJ49G7vdftK63n//faKiovjxxx85fPgwd955Jx07diQxMZGJEyeya9eus8rts88+Izo6msGDB3P8+PF/jK+trWXJkiW0bNmS2NjYk+YXFRXxySefMHHiRHr27ElsbCzdu3fn3nvvZd++fWeV27lav349d955J926dSM2NpbevXtzxx13sHz58lPG22w2Zs6cyaBBgxriX3/99VMWiA4dOsS0adMYPXo0Xbp0ITY2lv79+/Pcc89RWFh4yvWf6pldW7duJSoqiscff5yKigqeffZZevToQWxsLMOGDeOHH3445bqOHDnCf//7X/r3709cXBxdunThmmuu4aWXXqKoqOik+KFDh1JeXs6qVav+qdmEEH9Dil1CCCGEEEII8Se1tbUAJw35M5vNPPzww2zatAkfHx/69u1LYmIi6enpPP/88zz55JOnXeeBAwcYN24ceXl59OjRg7CwMLZv387NN9/MkSNHziivt956i9dee42YmBi+/fZbAgMD/3GZ7du3U1dXR6dOnU45/9dff+WNN96gpKSEqKgoBgwYgJ+fHytXruT666+/4He3vfrqq0yePJl169YRFhbGoEGDCA0NZdeuXXz00UenXObhhx9m+vTphIeH06NHD2pra5k1a9Yp23/mzJl8+eWXALRv357evXujKArfffcdY8aMOW3B63SqqqoYN24cq1evpn379iQnJ5ORkcFTTz3FvHnzGsUeOHCAa6+9lp9//hlnZ2f69+9PYmIiVquVr776iszMzJPWf6Kf1q5de1Z5CSEak2d2CSGEEEIIIcSfbNiwAYCePXs2mq7RaPjwww/p3bt3o2c6lZWVMXnyZH766SfGjBlDx44dT1rn7Nmzeeqpp7jxxhsbpr388st8+eWXzJo1i2nTpp02H7vdznPPPcf3339P586d+eijj3BxcTmjfdmxYwcAcXFxp5yfnJzM4sWLG+5mO2HDhg3cddddTJ06lRUrVqBSqc5oe2dj4cKFfP755/j5+TFz5kzatm3bMM9oNLJz586TlsnLy8PBwYEVK1bg6+sLQE5ODqNHj+bnn3/mP//5T6MhiOPGjeOpp57Cx8enYZrd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NWsGQFlZ2SnPq6rK0qVLefjhhxk8eDBt27alXbt2XHvttXzzzTc4nc4/7evdd98lPj6eH3/8kbS0NO666y46depE27ZtmTBhArt37/5HuX322WckJCQwZMgQ8vPz/zbebDazbNkyoqKiSExM/NP2oqIiPvnkEyZMmECvXr1ITEykR48e3Hfffezfv/8f5fa/2rBhA3fddRfdu3cnMTGRPn36cOedd7JixYrTxjscDj7++GMGDx58Mv7VV189bYEoJSWFV155hdGjR9O1a1cSExPp378/06ZNo7Cw8LT7P92aXdu3byc+Pp4nn3ySiooKpk6dSs+ePUlMTGT48OH88MMPp93X4cOHefTRR+nfvz+tWrWia9euXH311bz44osUFRX9KX7YsGGUl5ezatWqvztsQoi/IMUuIYQQQgghhPgDs9kM8Kcpf1arlcmTJ7Nlyxb8/f3p27cvbdu25ejRo8yYMYOnn376jPs8ePAg48aNIzc3l549exIZGUlSUhI333wzhw8fPqu83njjDV5++WVatmzJvHnzCAkJ+dvXJCUlUVtbS+fOnU+7ffXq1bz22muUlJQQHx/PgAEDCAwMZOXKlVx//fXnfXTbrFmzmDRpEuvXrycyMpLBgwfTpEkTdu/ezezZs0/7msmTJ/PBBx8QHR1Nz549MZvNzJkz57TH/+OPP+bLL78EoEOHDvTp0wdVVZk/fz7XXHPNGQteZ1JVVcW4ceNYs2YNHTp0oH379hw/fpxnnnmGBQsWnBJ78OBBrr32WpYsWYKbmxv9+/enbdu22O125s6dS3p6+p/2/3s/rVu37h/lJYQ4lazZJYQQQgghhBB/sHHjRgB69ep1yvNarZb333+fPn36nLKmU1lZGZMmTeKnn37immuuoVOnTn/a5zfffMMzzzzDjTfeePK5l156iS+//JI5c+bwyiuvnDEfp9PJtGnT+O677+jSpQuzZ8/G3d39rNqyc+dOAFq1anXa7e3bt2fp0qUnR7P9buPGjdx9991Mnz6d3377DUVRzur9/omff/6Zzz//nMDAQD7++GOaN29+clt9fT27du3602tyc3MxmUz89ttvBAQEAJCdnc3o0aNZsmQJDzzwwClTEMeNG8czzzyDv7//yeecTiezZ8/m3Xff5a233mLmzJlnnfPq1asZNmwYs2bNwmAwALBq1SruvfdeZs+e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XmL48OF06dKFgQMH8sADDxAKhY5QtGLp0qVcddVV9O/fn4yMDL766qtfPGbx4sWMGjWKzMxMTjrpJD744IMjEOmhM378eGbPns3atWt599136dq1a73F8lt/L4nfZvLkyZx11llkZWXRt29frrnmGrZt21anTCgUYuLEifTu3ZusrCyuv/56ioqK6pTZtWsXV1xxBV27dqVv3748/PDDWJZ1JKtyzJsyZQoZGRncf//9tdukbepPfn4+f/3rX+nduzddunThtNNOY82aNbX7lVL897//pX///nTp0oWLL76Y7du31zlHWVkZEyZMoHv37vTs2ZM777yT6urqI1yTY4tt2/znP/9h8ODBdOnShaFDh/LMM8+glKotI21zZPzS56lD1Q4bNmzgvPPOo3PnzgwcOJDnnnvu0FdGHULTp09XnTp1Uu+9957avHmz+sc//qF69uypioqKDlh++fLlqkOHDuq5555TW7ZsUf/+979Vp06d1MaNGw9lWOJnHGyb3XLLLeq1115T69atU1u2bFG333676tGjh9qzZ88RjvzP62DbbJ/c3Fx1wgknqPPOO09dffXVRyhaodTBt1koFFKjR49Wl19+uVq2bJnKzc1VixcvVuvXrz/Ckf95HWybffLJJyozM1N98sknKjc3V33zzTfq+OOPVw888MARjvzPa86cOeqJJ55QX375pWrXrp2aOXPmz5bPyclRXbt2VQ8++KDasmWLevXVV1WHDh3UvHnzjlDEx47f+ntJ/HaXXHKJev/999WmTZvU+vXr1eWXX64GDRqkqqura8v885//VAMHDlQLFixQa9asUWeffbY655xzavdblqVGjhypLr74YrVu3To1Z84c1bt3b/X444/XR5WOSatWrVInnniiOu2009R9991Xu13apn6UlZWpE088Ud1+++1q1apVKicnR33zzTdqx44dtWUmT56sevTooWbOnKnWr1+vrrrqKjV48GAVDAZry1x66aXq9NNPVytXrlRLly5VJ510krrlllvqo0rHjEmTJqnjjjtOzZ49W+Xm5qoZM2aobt26qZdffrm2jLTNkfFLn6cORTtUVlaqfv36qQkTJqhNmzapadOmqS5duqi33nrrkNblkCa7xowZoyZOnFj7tW3bqn///mry5MkHLH/jjTeqK664os62sWPHqrvuuutQhiV+xsG22Y9ZlqWysrLUhx9+eJgiFD/2W9rMsix1zjnnqHfeeUfddtttkuw6wg62zd544w01ZMgQFQ6Hj1SI4kcOts0mTpyoLrzwwjrbHnzwQTVu3LjDGqc4sF+T7HrkkUfUqaeeWmfbTTfdpC655JLDGdox6fd+lhC/X3FxsWrXrp1asmSJUkqpiooK1alTJzVjxozaMlu2bFHt2rVTK1asUErV/EHTvn17VVhYWFvmjTfeUN27d1ehUOiIxn8sqqqqUsOGDVPz589X48ePr012SdvUn0cffVSde+65P7nfcRx1/PHHq6lTp9Zuq6ioUJmZmWratGlKqf+11erVq2vLzJ07V2VkZMg//3+HK664Qt1xxx11tl133XVqwoQJSilpm/ry489Th6odXn/9ddWrV68672ePPvqoGj58+CGN/5ANYwyHw3z//ff069evdpuu6/Tr148VK1Yc8JiVK1fSt2/fOtv69+/PypUrD1VY4mf8ljb7sUAggGVZxMfHH64wxQ/81jZ75plnSE5OZuzYsUciTPEDv6XNZs2aRbdu3bj33nvp168fI0eO5P/+7/+wbftIhf2n9lvaLCsri++//7526FZubi5z585l4MCBRyRmcfDkM8ihcSg+S4jfr7KyEqD289jatWuJRCJ12qV169Y0atSo9nt85cqVtGvXrs48b/3796eqqootW7YcueCPUffeey8DBw6s0wYgbVOfZs2aRWZmJjfccAN9+/blzDPP5J133qndv3PnTgoLC+u0TWxsLF27dq19P1uxYgVxcXF07ty5tky/fv3QdV2Gb/8OWVlZLFq0iOzsbKBmiNvy5csZMGAAIG1ztDhU7bBy5Up69uyJ2+2uLdO/f3+ys7MpLy8/ZPEesgnqS0tLsW2b5OTkOtuTk5P3m0Ngn6Kiov0mUk1OTt5vzLo4PH5Lm/3YY489Rlpa2n6/yMXh8VvabNmyZbz33nt89NFHRyBC8WO/pc1yc3NZtGgRp512GlOmTCEnJ4eJEydiWRbXXXfdkQj7T+23tNlpp51GaWkp5513HkopLMti3LhxXHXVVUciZPEbHOgzSEpKClVVVQSDQbxebz1F9sdyKD5LiN/HcRweeOABunfvTrt27YCa72+Xy0VcXFydssnJyRQWFtaWOdDPAFBbRvw206dPZ926dbz33nv77ZO2qT+5ubm8+eab/OUvf+Gqq65izZo13HfffbhcLkaNGlV7bw/0frbv79OioiKSkpLq7DdNk/j4eGmb3+GKK66gqqqKk08+GcMwsG2bm2++mdNPPx1A2uYocajaoaioiCZNmtQps+89rqio6JB1pJGnMYrfbMqUKXz22We88soreDye+g5HHEBVVRV/+9vf+Ne//rXfm444eimlSE5O5l//+heGYZCZmUl+fj7PP/+8JLuOUosXL2by5MncfffddOnShZycHO6//36eeeYZrr322voOTwhxDJs4cSKbN2/mjTfeqO9QBLB7927uv/9+XnjhBfl8fJRRSpGZmcktt9wCQMeOHdm8eTNvvfUWo0aNqufo/txmzJjBp59+yuOPP06bNm1Yv349Dz74IGlpadI24jc7ZMmuxMREDMOguLi4zvbi4uKffAx2SkrKfr24fq68OLR+S5vt8/zzzzNlyhRefPFF2rdvfzjDFD9wsG2Wm5tLXl4eV199de02x3GAml/wn3/+Oc2aNTu8Qf/J/Zafs9TUVEzTxDCM2m2tWrWisLCQcDhcp8uvOPR+S5v997//5fTTT68dKpyRkYHf7+ef//wnV199Nbp+yB9+LH6nA30GKSoqIiYmRnp1HYTf81lC/H733nsvc+bM4bXXXqNhw4a121NSUohEIlRUVNTpQVRcXExqamptmR8P7dn3M7GvjDh433//PcXFxYwePbp2m23bLF26lNdff53nn39e2qaepKam0rp16zrbWrVqxRdffFG7H2raIi0trbZMcXFx7d87KSkplJSU1DmHZVmUl5dL2/wOjzzyCFdccQWnnnoqUPM5ateuXUyePJlRo0ZJ2xwlDlU7/NRnsH37DpVD9unb7XbTqVMnFi5cWLvNcRwWLlxIVlbWAY/p1q0bixYtqrNtwYIFdOvW7VCFJX7Gb2kzgOeee45nn32WqVOn1hmLKw6/g22zVq1a8emnn/LRRx/VLoMHD6Z379589NFHdT4Yi8Pjt/ycde/enZycnNrEJMD27dtJTU2VRNcR8FvaLBgM7pfQ2pesVD94bLY4eshnkEPjt36WEL+PUop7772XmTNn8vLLL9O0adM6+zMzM3G5XHXaZdu2bezatav2e7xbt25s2rSpTqJywYIFxMTE0KZNmyNSj2NRnz599vvslZmZyWmnnVb7WtqmfnTv3r12Tqh9tm/fTuPGjQFo0qQJqampddqmqqqKVatW1b6fZWVlUVFRwdq1a2vLLFq0CMdx6NKlyxGoxbEpGAyiaVqdbYZh1H6GkrY5OhyqdujWrRvLli0jEonUllmwYAEtW7Y8tHOBH8rZ7qdPn64yMzPVBx98oLZs2aLuuusu1bNnz9onidx6663qscceqy2/fPly1bFjR/X888+rLVu2qCeffFJ16tRJbdy48VCGJX7GwbbZ5MmTVadOndTnn3+uCgoKapeqqqr6qsKfzsG22Y/J0xiPvINts127dqmsrCx17733qm3btqnZs2ervn37qmeffba+qvCnc7Bt9uSTT6qsrCw1bdo0lZOTo7799ls1dOhQdeONN9ZTDf58qqqq1Lp169S6detUu3bt1IsvvqjWrVun8vLylFJKPfbYY+rWW2+tLZ+Tk6O6du2qHn74YbVlyxb12muvqQ4dOqh58+bVVxX+sH7p50Ucenfffbfq0aOHWrx4cZ3PY4FAoLbMP//5TzVo0CC1cOFCtWbNGnXOOeeoc845p3a/ZVlq5MiR6pJLLlHr169X8+bNU3369FGPP/54fVTpmPbDpzEqJW1TX1atWqU6duyoJk2apLZv364++eQT1bVrV/Xxxx/Xlpk8ebLq2bOn+uqrr9SGDRvU1VdfrQYPHqyCwWBtmUsvvVSdeeaZatWqVWrZsmVq2LBh6pZbbqmPKh0zbrvtNnXCCSeo2bNnq9zcXPXll1+q3r17q0ceeaS2jLTNkfFLn6cORTtUVFSofv36qVtvvVVt2rRJTZ8+XXXt2lW99dZbh7QuhzTZpZRSr776qho0aJDq1KmTGjNmjFq5cmXtvvHjx6vbbrutTvnPPvtMDRs2THXq1Emdeuqpas6cOYc6JPELDqbNTjzxRNWuXbv9lieffLI+Qv/TOtifsx+SZFf9ONg2++6779TYsWNVZmamGjJkiJo0aZKyLOtIh/2ndjBtFolE1FNPPaWGDh2qOnfurAYOHKjuueceVV5eXh+h/yktWrTogL+f9rXTbbfdpsaPH7/fMWeccYbq1KmTGjJkiHr//ffrI/Rjws/9vIhD70Df6+3atavzPRwMBtU999yjevXqpbp27aquvfZaVVBQUOc8O3fuVJdddpnq0qWL6t27t3rooYdUJBI50tU55v042SVtU39mzZqlRo4cqTIzM9WIESPU22+/XWe/4zjqP//5j+rXr5/KzMxUF110kdq2bVudMqWlpeqWW25R3bp1U927d1e33367/OP/d6qsrFT33XefGjRokOrcubMaMmSIeuKJJ1QoFKotI21zZPzS56lD1Q7r169X5557rsrMzFQnnHCCmjx58iGvi6aUjK8QQgghhBBCCCGEEMcGmTFXCCGEEEIIIYQQQhwzJNklhBBCCCGEEEIIIY4ZkuwSQgghhBBCCCGEEMcMSXYJIYQQQgghhBBCiGOGJLuEEEIIIYQQQgghxDFDkl1CCCGEEEIIIYQQ4pghyS4hhBBCCCGEEEIIccyQZJcQQgghhBBCCCGEOGZIsksIIYQQQgjxp5ORkVFnad++PT169ODss8/mpZdeIhKJ1FtsH3zwARkZGTz11FOH7Jw7duwgMzOThx9++Hef64ILLiAjI4OdO3fW2T548GAyMjJ+9/l/SkZGBoMHDz5s5z/S1/mhdevWkZGRwXPPPXdEryvEscqs7wCEEEIIIYQQor6MGjUKANu2ycvLY8WKFaxatYo5c+YwdepUTPPY+JPp8ccfx+Vycfnll9d3KOIAOnbsyODBg5kyZQpjx44lISGhvkMS4g/t2HjnFkIIIYQQQojf4KGHHqrz9apVq7jgggtYuHAh06dP54wzzqinyA6d77//ni+++IILLriApKSk+g7nqPfZZ5/hcrmO+HWvvPJKZs2axXPPPcett956xK8vxLFEhjEKIYQQQgghxF5du3at7e317bff1nM0h8abb74JwJlnnlm/gfxBtG7dmmbNmh3x63br1o3mzZvz/vvvEw6Hj/j1hTiWSLJLCCGEEEIIIX6gbdu2AJSUlNTZrpRi2rRp3HzzzQwfPpxu3bqRlZXFmDFjeP3113EcZ79zPfXUU2RkZPDBBx+wceNGrrrqKnr16kW3bt0YP34833333UHF9sILL9C+fXtGjBjB7t27f7F8dXU106dPp0WLFmRmZu63v6CggOeee47x48dzwgknkJmZyfHHH891113H6tWrDyq232revHlcddVV9OvXj8zMTAYOHMiVV17JF198ccDytm0zZcoUhg8fXlv+0UcfPWCCaP369TzyyCOMHj2aPn36kJmZyZAhQ7jnnnvIz88/4PkPNGfX4sWLycjI4Pbbb6esrIy7776b/v37k5mZyciRI3nvvfcOeK5Nmzbx17/+lSFDhtC5c2f69OnDGWecwf33309B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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import arviz as az\n", + "az.style.use('arviz-darkgrid')\n", + "\n", + "coords = {\n", + " 'idx': jnp.arange(num_agents),\n", + " 'vars': jnp.arange(3), \n", + "}\n", + "dims = {'z': [\"idx\", \"vars\"], 'd': [\"idx\"], 'lambda': [\"idx\"], 'a': [\"idx\"]}\n", + "data_kwargs = {\n", + " \"dims\": dims,\n", + " \"coords\": coords,\n", + "}\n", + "data_mcmc = az.from_numpyro(posterior=mcmc, **data_kwargs)\n", + "az.plot_trace(data_mcmc, kind=\"rank_bars\", var_names=['d', 'lambda', 'a']);\n", + "\n", + "#TODO: maybe plot real values on top of samples from the posterior" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [], + "source": [ + "# inferenace with SVI and autoguides\n", + "import optax\n", + "from numpyro.infer import SVI, Trace_ELBO, Predictive\n", + "from numpyro.infer.autoguide import AutoMultivariateNormal\n", + "\n", + "num_iters = 1000\n", + "guide = AutoMultivariateNormal(model)\n", + "optimizer = npyro.optim.optax_to_numpyro(optax.chain(optax.adabelief(1e-3)))\n", + "svi = SVI(model, guide, optimizer, Trace_ELBO(num_particles=10))\n", + "rng_key, _rng_key = random.split(rng_key)\n", + "svi_res = svi.run(_rng_key, num_iters, measurements, Nb, Nt, Na, progress_bar=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ZMk273Xs2JFhw4bla8vKyuLRRx/ltddeY9myZVSoUIE//OEPXHHFFVSuXHmbz3nttdd46qmnmD17NsWLF6dt27ZcdtlltGjRIumfR5IkCeCySyKOPgoa1IcffoAxHwVmzsoLSQCKpcCWbHjr7cDxx217Ka7MzMCwZwNHHhFRr67LdUmSJEmStDMKbVgCUK5cOQYOHLhVe61atfJdZ2dnc+GFFzJu3DgOOOAAevTowYIFCxgxYgSffvopL7zwApUqVcr3mocffph77rmHWrVq0a9fPzZs2MCbb75Jv379GDp0KO3atduln02SJBVNURTRaL/4PD0d+veDx4fEe5v0OR4yMqDXMRFXXROYNh3OvyibMwZEHNQlfyDy3PDAsKdhzpzAbbcYlkiSJEmStDMKdVhSvnx5Lr300t/tN3LkSMaNG0evXr244447iKL4C4PnnnuO//u//+Oee+7hxhtvzO0/f/58HnjgAerVq8eLL75IuXLlAOjfvz8nn3wyf/vb33jjjTdISXFLF0mStGv17xcHKM2bQccOeaHHHw4NjH4Ppk6DoU+FrcKSMR/Gx2nTIISQ+98/a9YE1qzF2SaSJEmSJO2AvSINGDFiBAB//OMfc78oAOjXrx916tTh9ddfZ+PGjbntL7/8Mps3b+bCCy/MDUoAmjVrRq9evZgzZw6ff/757vsAkiSpyCpZMmLQGVG+oATgur9E3HxT3DZnLmzenLfZ+4IFgXnz4/M1a+G99+H/bsrm++WBy/8UGHhWYN58N4eXJEmSJGl7FeqwJCsri5dffplHHnmEp59+mq+++mqrPj/99BNfffUV9evX32p5riiK6NKlC5mZmXzzzTe57RMnTgTgoIMO2up5Xbt2zddHkiSpIBQvHtH1IChdCrKyYNFimDkrcNIp2Zw2MH8Q8s9b4lkof7o6MGcObNmSN/NEkiRJkiT9vkK9DNeKFSu49tpr87W1atWKu+66i3333ReAhQsXkp2dTb169bb5jJz2+fPn0759+9zztLQ0qlatulX/unXrArBgwYJfratChQou0fUr0tPTC7oESXsRxxQJmjRdy5dfbua990vy4ss/sX593r309IiMjMDmzfH1/J/958v4iSn88YqKu7XWPYHjiqRkckyRlEyOKZKSzXFlxxTasKRPnz60a9eOxo0bk5aWxvz58xkyZAivvvoqgwYN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Ha7LZvxnlp/mu2VtWsPjgzKHauvWu8Cw8TUw7RsXVF7XzKQNrfhPbdlieexJ15X0/HOGq+qf/3PqZxVvCksuEF1kWdMHUESyk2qKiGQ31RURyU6qKSKSnVRTRHLekqWWRwa6ebA+/9QQFpYzIU5ysusu+SdDN4LqysnOJizxuwj7ISIiIiIiIiIiIiJyyapX1w3PV6oUORaUgBs6zU937XOETruIiIiIiIiIiIiI5GrGGFq2yOm9kJx06c1mJCIiIiIiIiIiIiIichEpLBERERERERERERERkVxNYYmIiIiIiIiIiIiIiORqCktERERERERERERERCRXU1giIiIiIiIiIiIiIiK5msISERERERERERERERHJ1RSWiIiIiIiIiIiIiIhIrqawREREREREREREREREcjWFJSIiIiIiIiIiIiIikqspLBERERERERERERERkVxNYYmIiIiIiIiIiIiIiORqCktERERERERERERERCRXU1giIiIiIiIiIiIiIiK5msISERERERERERERERHJ1RSWiIiIiIiIiIiIiIhIrqawREREREREREREREREcjWFJSIiIiIiIiIiIiIikqspLBERERERERERERERkVzNWGttTu+EiIiIiIiIiIiIiIhITlFniYiIiIiIiIiIiIiI5GoKS0REREREREREREREJFdTWCIiIiIiIiIiIiIiIrmawhIREREREREREREREcnVFJaIiIiIiIiIiIiIiEiu5pfTOyD/br/++isjR45k1apVJCcnExUVRffu3WnTpk1O75qI5KB9+/YxY8YM5s+fzx9//MHBgwcpUKAAtWrVolevXlx++eWZHhMfH8/IkSOZNWsWBw4coHDhwrRs2ZJ7772XkJCQTNunpqYyfvx4Jk2axI4dOwgODqZBgwY89NBDlCpV6mIcpojksDFjxjB8+HAAJk6cSM2aNb3Wq66IyNmYPXs2n332GRs2bCAhIYGIiAhq1qzJo48+SrFixdK2U00RkdOx1jJ79mw+/fRTtm3bRlxcHEWLFqV+/frcfffdmT73qikiAjBt2jRWrFjBunXr2Lx5M0lJSbz88st06NAhy+0vRu1YsGAB7777LuvXr8cYQ7Vq1ejXrx9XXXVVth77pchYa21O74T8Oy1evJhevXoREBDA9ddfT0hICLNmzSImJoZBgwbRs2fPnN5FEckh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iYmJjB07lhkzZrBt2zaSkpIIDw+nfv369O3bN21ONQ/VFBGBM98/ad++PUOHDk37/mLUjvnz5/Puu++yYcMGwM0bec8999CgQYN/eLSXPoUlIiIiIiIiIiIiIiKSq2nOEhERERERERERERERydUUloiIiIiIiIiIiIiISK6msERERERERERERERERHI1hSUiIiIiIiIiIiIiIpKrKSwREREREREREREREZFcTWGJiIiIiIiIiIiIiIjkagpLREREREREREREREQkV1NYIiIiIiIiIiIiIiIiuZrCEhERERERERERERERydUUloiIiIiIyAVXqVIlmjZtmtO7ISIiIiIikiWFJSIiIiIikiOWLFlCpUqVGDx4cE7vyjmLjo6mUqVK3HHHHTm9KyIiIiIikg38cnoHRERERETkv2/69On4+/vn9G6IiIiIiIhkSWGJiIiIiIhccOXLl8/pXRARERERETklY621Ob0TIiIiIiLy31apUiVKlCjBDz/8AMDgwYOZMmVKltvee++93HfffWnf79mzh/fee4/58+ezb98+8uTJwxVXXEGfPn2oVauW12OXLFlCt27daN++PY888ggjRoxgwYIFHDx4kIEDB9K9e/fT7mdMTAxjxoxh8eLF7N27l8DAQCIiIqhduzbdu3enXLlyjBw5krfeeivLx7dv356hQ4emfX/06FE++OAD5s6dS3R0NP7+/lSrVo0ePXpw7bXXej02OjqaZs2aUa9ePd555x1GjBjB7NmzOXz4MCVLluTWW2+lW7du+PhoNGURERERkeymzhIREREREbnoateuzYEDB1i4cCGRkZHUrl07bV2VKlXSvl61ahV9+vQhNjaWsmXL0qRJEw4fPszChQtZsGAB//vf/2jTpk2m5z98+DA333wzKSkp1KpVi8TERPLkyXPafdqzZw8dOnTg6NGjlClThsaNG5OSksLu3buZNGkSNWvWpFy5clSpUoWWLVsyc+ZMChUqRKNGjbyOy2Pbtm306NGDPXv2UKJECRo2bMiff/7JmjVr6Nu3LwMHDuSuu+7KtB+JiYl069aNXbt2ceWVV5KUlMSiRYt4+eWX+e2337zCGBERERERyR4KS0RERERE5KLr1KkTkZGRLFy4kNq1a2cZAMTHx3PfffcRHx/PsGHDaNeuXdq6tWvXctddd/HEE09w5ZVXEhYW5vXYefPmcd111zF8+HACAwPPap8mT57M0aNH6dq1K0899ZTXut27d5OcnAxA8+bNqVy5MjNnzqRcuXJZ7ntKSgr3338/e/bs4dFHH6Vnz55pHSE7duygZ8+eDB8+nEaNGhEVFeX12NWrV1OpUiVmzpyZdlw7d+6kS5cuTJkyhebNm9O8efOzOiYRERERETk76t8WEREREZFL0hdffMGBAwe48847vYISgBo1atCvXz8SEhL4+uuvMz02ICCAp5566qyDEnDdKABXXXVVpnXFixcnMjLyrJ/rxx9/ZPPmzbRs2ZJevXp5DZ1VunRpBg8eTEpKCpMmTcry8YMGDfIKgCIjI+nXrx8A48aNO+v9EBERERGRs6OwRERERERELkk///wzANddd12W6z1DXv3666+Z1lWrVo0iRYqc0+tVq1YNgNdff50ff/yREydOnNPjM1q4cCFw5n1fu3ZtpnUFCxbk6quvzrS8bdu2gBuaLDU19bz3TUREREREMtMwXCIiIiIickmKiYkB4Pbbbz/tdkeOHMm0rFixYuf8eh06dODnn39mxowZ9O3bl8DAQGrUqEGjRo3o2LEjERERZ/1cnn0fMGAAAwYMOKd9L168eJbb5suXj/z583Ps2DFiY2MJDQ096/0REREREZHTU1giIiIiIiKXJE/3RMuWLQkODj7lduXKlcu07FyG3/Lw9fVlxIgR9O7dm7lz57J48WLWrFnD8uXLGTNmDO+//z61atU6p31v1KgRhQoVOuV2CjxERERERC4NCktEREREROSSVLRoUbZt20bv3r2pXr36RXvdqlWrUrVq1bTJ5UeOHMnYsWN56aWX+OKLL87qOYoWLQq4iexbtmx5Tq+/e/fuLJfHx8dz7NgxgoKCyJ8//zk9p4iIiIiInJ7mLBERERERkRzh7+8PQHJycpbrGzRoAMDs2bMv2j6dLG/evDzyyCMYY9iyZUva8jPtu2fOkfPZ96NHj7Jo0aJMy7/77jsAatasia+v7zk/r4iIiIiInJrCEhERERERyRGFCxcGYNu2bVmuv+222wgPD+eDDz5g4sSJmSY1T05OZsGCBWzevDlb9mfq1KlZPtf8+fOx1qZ1i4AbPsvf359du3aRkpKS6TEtWrSgQoUKfPPNN4waNYrExESv9dZaVqxYwYoVK7Lcl1deecVrPpNdu3YxatQoALp06XJexyciIiIiIqemYbhERERERCRHlCxZkkqVKrFu3TpuvvlmKlasiI+PD02bNqVZs2bkz5+ft99+m759+/L000/zzjvvULFiRfLnz8/BgwfZsGEDx44dY9SoUURFRf3j/Zk1axaDBg0iMjKSqKgogoKCiI6OZs2aNfj4+PDggw+mbRsQEEDDhg358ccfufHGG6latSr+/v7UqlWLjh074ufnx6hRo7jrrrt48803GT9+PJUqVSIsLIyjR4+yceNGDh06xGOPPUbt2rW99qNmzZokJSXRokULrrzySpKSkli8eDHHjx+nXbt2tGjR4h8fq4iIiIiIeFNYIiIiIiIiOWbkyJG8+uqrLF++nPXr15OamkrRokVp1qwZ4IKDb775hrFjxzJv3jyWLVsGQEREBHXr1uW6667jqquuypZ96dGjB0WLFmXlypUsX76c48ePU7hwYdq0aUOPHj2oUaOG1/ZDhgzhlVde4ZdffuHbb78lJSWFlJQUOnbsCECZMmWYOnUq48aNY/bs2axevZqUlBQKFSpElSpVaNq0Ka1bt860HwEBAbz//vu89tprzJkzhyNHjlCyZEluueUW7rzzzmw5VhERERER8WastTand0JERERERCS3i46OplmzZtSrV49PP/00p3dHRERERCRX0ZwlIiIiIiIiIiIiIiKSqyksERERERERERERERGRXE1hiYiIiIiIiIiIiIiI5Gqas0RERERERERERERERHI1dZaIiIiIiIiIiIiIiEiuprBERERERERERERERERyNYUlIiIiIiIiIiIiIiKSqyksERERERERERERERGRXE1hiYiIiIiIiIiIiIiI5GoKS0REREREREREREREJFdTWCIiIiIiIiIiIiIiIrmawhIREREREREREREREcnV/g9URy4XZtfl2wAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(16,5))\n", + "plt.plot(svi_res.losses)\n", + "plt.ylabel('Variational free energy');\n", + "plt.xlabel('iter step');" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [], + "source": [ + "rng_key, _rng_key = random.split(rng_key)\n", + "pred = Predictive(\n", + " model, \n", + " guide=guide, \n", + " params=svi_res.params, \n", + " num_samples=1000, \n", + " return_sites=[\"d\", \"a\", \"lambda\"]\n", + ")\n", + "post_sample = pred(_rng_key, measurements, Nb, Nt, Na)\n", + "\n", + "for key in post_sample:\n", + " post_sample[key] = jnp.expand_dims(post_sample[key], 0)\n", + "\n", + "data_svi = az.convert_to_inference_data(post_sample, group=\"posterior\", **data_kwargs)" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB9sAAAJjCAYAAACsvnHyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABRxUlEQVR4nO3dd5xV9Z0//tcMvQkj9tGI7gprwQaCBWNEMYIaW7Ka2I3RqFk1muImq0ZN3diiSYxGY4Iag3XtJpZAFhsKdtQIayWoqDCKlIGZ+/vDL/NzMiAcmJnLlefz8eDxmPmc9j4D73u487qfc6pKpVIpAAAAAAAAAMAyqy53AQAAAAAAAABQaYTtAAAAAAAAAFCQsB0AAAAAAAAAChK2AwAAAAAAAEBBwnYAAAAAAAAAKEjYDgAAAAAAAAAFCdsBAAAAAAAAoCBhOwAAAAAAAAAUJGwHAAAAAAAAgIKE7QAAANBGpk+fnnPOOSe77757tthiiwwdOjRf/epXM3bs2EL7ufbaazNgwIAMGDAg3//+95e7nmeffTYnnXRSdtxxxwwcODDDhw/Pueeem3fffXeJ2/zhD3/IiBEjssUWW2SPPfbItddeu8R133rrrQwaNChHH330cte46DwfffTRT1xv+PDhGTBgQG6++eZm4zfffHPTPhb9WfSzHzVqVE477bSMGTMms2fPXuK+H3300aZtAQAAYEmE7QAAANAGnn766ey333659tprM2/evHz2s5/Nv/zLv+TRRx/Ncccdl4svvniZ9vP666/nvPPOS1VV1QrVc8899+Sggw7Kn//856y33nrZbbfdUl1dnWuuuSZf+MIX8uqrr7bY5pprrsmPf/zjzJ07N5/73OcyZ86cnHPOOfnd73632GOcc845aWhoyNlnn71CtbaG7t27Z//998/++++fUaNGZdttt02HDh1y11135cwzz8zOO++c0aNHp1QqlbtUAAAAKlTHchcAAAAAnzbz58/PSSedlFmzZmXUqFH5yU9+kq5duyb5KIT/2te+ll/96lcZNGhQdtpppyXup7GxMaeffnqSZL/99sstt9yyXPW89dZbOf3007Nw4cKcc845Oeigg5IkDQ0NOf3003PbbbfltNNOyw033NAU6jc0NOSXv/xlampqctttt2X11VfPu+++m1GjRuXSSy/NYYcdlk6dOjUd49577819992Xb3/729lggw2Wq87WVFNTk5/+9Kctxt9+++1cccUVGT16dH70ox/lzTffzHe+850yVAgAAEClM7MdAAAAWtm9996b6dOnZ7XVVsvZZ5/dFLQnyZZbbpkTTzwxSfKrX/3qE/czevToPP744/nWt76V2tra5a7nD3/4Q+bOnZsdd9yxKWhPkg4dOuQHP/hBevXqlWeeeSbjx49vWjZt2rTMnDkzI0aMyOqrr54k6du3b0aMGJH3338/U6dObVp39uzZOffcc7PpppvmyCOPXO4628Naa62V733veznjjDOSJFdeeWUef/zxMlcFAABAJRK2AwAAQCt75plnkiSbb755VltttRbLd9xxxyTJpEmTMmPGjMXu4//+7/9y4YUXZsiQIfnKV76yQvXcd999SZK99967xbIePXpk+PDhST76kMAis2bNSpL07t272fp9+vRJksyZM6dp7IILLsg777yTc889Nx07VsZN9A455JAMHDgwSXLFFVeUuRoAAAAqkbAdAAAAWtmiIHpRMP3PampqkiSlUimTJ09usXzR7d2rqqryox/9aIWe1z579uym57FvscUWi11n0fjHa1k0k/7jM9g//v3aa6+dJHnyySdz3XXX5bDDDmsKryvFF77whSTJo48+moULF5a5GgAAACqNsB0AAABa2aLbrr/++uuLXf7x8TfeeKPF8iuvvDJPPfVUTjnllHzmM59ZoVqmTZvW9PV666232HXWXXfdFrX07ds322yzTcaNG5c777wzs2fPzh133JFx48ZlwIABqa2tzYIFC3LGGWdk3XXXzcknn7xCdZbD5ptvnuSjD0f84x//KHM1AAAAVJrKuLcbAAAAVJDtt98+v/nNb/Lcc89l8uTJ2WyzzZot/9Of/tT09ezZs5st+/vf/56LL74422yzTQ4//PAVruXDDz9s+rpbt26LXad79+6LreX73/9+Dj/88Jx66qlNYz179swPf/jDJMnvfve7/P3vf8/ll1/etI8kmTdvXrp06bJCM/Jb49yXZtEdBpKPbpu/oh9sAAAAYNUibAcAAIBWtsMOO2S77bbLY489luOPPz5nnXVWtttuu8yaNSt//OMf8z//8z/p1KlTFixY0CyQXrhwYU4//fRUV1fnxz/+caqry3tDuoEDB+aOO+7ILbfckrfeeivrrrtu9t9//6y77rp57bXX8utf/zp77713dtlllyTJ1VdfnSuuuCJvvvlmunbtmt133z3/9V//1SzUXlbDhg3LmmuuucTlf/7zn5s9N355lEqlFdoeAACAVZuwHQAAANrAL37xi3zjG9/IpEmTcvzxxzdbdsQRR2TixIl59tlnmz3XfdFs+G9961vZeOONW6WOHj16NH09d+7c9OrVq8U6i0Lrnj17tlhWW1ubb3zjGy3GzzzzzHTt2jXf+973kiSjR4/Oj370o+y2224544wzMnXq1FxyySV59dVXc/311xf+4MCxxx6boUOHLnH5hAkTVjhsnzlzZtPXH/97AAAAgGUhbAcAAIA20Ldv3/zxj3/MQw89lEceeSSzZs1K3759s9tuu2XgwIEZNmxYkqR///5N29x7771Jkr/+9a/529/+1mx/i569Pm7cuBx22GFJPppJvjS1tbVNX//jH//IgAEDWqwzffr0Fut+kltuuSUPP/xwfvzjH6dv375Jkssvvzy1tbW5+OKL07Fjx+y+++754IMP8tvf/jYPPfRQ0/muTJ577rkkH30gYVnPHQAAABYRtgMAAEAbqaqqyk477ZSddtqp2fhrr72WGTNmpE+fPi2e554kEydOXOI+Z8yYkRkzZixzDT179syGG26YV199Nc8+++xiw/Znn302SbL55psvdX/vvfdefvrTn2bo0KE58MADkyTvvPNOZsyYkc9//vPp2PH//1XDoEGD8tvf/jbPP//8Shm233777UmS7bffPh06dChzNQAAAFSa8j78DQAAAFZBV155ZZLkoIMOSufOnZvGb7311rz44ouL/bPoVu5f/OIXm8aW1e67754kueOOO1os+/DDD/PXv/41STJixIil7uunP/1p5s6dm3POOadpbNFz5+fOndts3UXff/y59CuLa6+9Ns8880yS5JhjjilzNQAAAFQiYTsAAAC0gSlTpmT27NnNxhYuXJjf/OY3GTNmTDbccMN8/etfb7Xj3Xvvvdlzzz1zxBFHtFh2xBFHpFu3bnnooYdy/fXXN403NDTk7LPPzvvvv9/s1vZL8tBDD+XWW2/NCSeckH79+jWN9+3bN+uss04effTRvPbaa037vummm5Is24z59jJjxoz85Cc/ybnnnpskOe6447LtttuWuSoAAAAqkdvIAwAAQBsYM2ZMxowZk8033zxrr7126uvr89RTT+Wdd97JhhtumN/97nfp3r17qx3vgw8+yMsvv5z6+voWy9Zee+385Cc/yWmnnZYzzjgjN954Y2pra/PMM8/k9ddfzxprrJHzzz//E2egz5s3L2eddVb69++fr371qy2Wn3DCCTnzzDNz4IEHZujQoXnllVfy0ksvZdttt83222/faue5rGbOnJnTTz89SdLY2JgPP/wwr732WqZMmZLGxsZ07949p512Wg455JB2rw0AAIBPB2E7AAAAtIFddtkl06ZNy+TJk/Pss8+mc+fO2WijjXLUUUfl0EMPTdeuXdu1npEjR2aDDTbIZZddlscffzyTJ0/OWmutlUMOOSQnnHBC1lhjjU/c/le/+lXeeOON/OlPf0qnTp1aLD/ooIPSqVOn/O53v8vYsWPTq1evHHTQQfn2t79dltvIz5kzJ7fcckuSpFOnTunRo0f69u2bkSNHZujQodlrr73Ss2fPdq8LAACAT4+qUqlUKncRAAAAAAAAAFBJPLMdAAAAAAAAAAoStgMAAAAAAABAQcJ2AAAAAAAAAChI2A4AAAAAAAAABQnbAQAAAAAAAKAgYTsAAAAAAAAAFCRsBwAAAAAAAICCOpa7gE+7mTNnttuxevfunbq6unY7HtB69C9UNj0MlU0PQ+XSv1DZ9DBUNj0MlUv/wrKpqalZ6jpmtn+KVFf764RKpX+hsulhqGx6GCqX/oXKpoehsulhqFz6F1qPbgIAAAAAAACAgoTtAAAAAAAAAFCQsB0AAAAAAAAAChK2AwAAAAAAAEBBwnYAAAAAAAAAKEjYDgAAAAAAAAAFCdsBAAAAAAAAoCBhOwAAAAAAAAAUJGwHAAAAAAAAgIKE7QAAAAAAAABQkLAdAAAAAAAAAAoStgMAAAAAAABAQcJ2AAAAAAAAAChI2A4AAAAAAAAABQnbAQAAAAAAAKAgYTsAAAAAAAAAFCRsBwAAAAAAAKAsfvvb32b77bfPxIkTy11KYcJ2AAAAAAAAACioY7kLAAAAAAAAAGDV9KUvfSkjRozIOuusU+5SChO2AwAAAAAAAFAWffr0SZ8+fcpdxnJxG3kAAAAAAAAAlskDDzyQ448/PiNHjsxnP/vZ7L333vnGN76RBx54INOnT88OO+yQE088cbHbLly4MJ///OfzhS98IY2NjUkq+5ntZrYDAAAAAAAArKhSKVk4t9xVLFnHbklV1Qrt4qabbsrPf/7zrLHGGtlll13Su3fvvPvuu5k8eXLGjRuX4cOHZ+utt84TTzyRt99+O2uttVaz7R966KHU1dXlsMMOS3V15c8LF7YDAAAAAAAArIhSKd3GHJIO/3ii3JUsUcN622buQdesUOB+2223pVOnThk9enRWX331Zsvq6uqSJCNHjswTTzyRP//5zznssMOarXP33Xc3rfNpUPkfFwAAAAAAAAAouxWbNV4pOnbsmI4dW87p7t27d5Jk+PDh6dKlS+65555myz/44IM8+OCD6d+/fzbeeON2qbWtmdkOAAAAAAAAsCKqqj6aNf4pv438iBEj8stf/jKHHHJI9thjjwwaNChbbbVVevTo0bROz549M2zYsNx///156aWXsskmmyRJ7r///tTX12fPPfdcoRpWJsJ2AAAAAAAAgBVVVZV06l7uKtrUIYcckt69e+fmm2/OH//4x1x77bXp0KFDdtppp5xyyilZb731knx0m/j7778/99xzT1PYfs8996RDhw75/Oc/X85TaFXCdgAAAAAAAACWqqqqKvvss0/22Wef1NXV5cknn8xf/vKX3H///Xn99ddzzTXXpEOHDtl+++1TU1OTv/zlLznxxBPz5ptv5qmnnsrQoUPTt2/fcp9GqxG2AwAAAAAAAFBI7969s8suu2SXXXZJXV1dHn/88bzxxhvZcMMN07Fjx+y+++654YYbMnHixDz77LMplUqfqlntSVJd7gIAAAAAAAAAWPlNnDgxpVKp2djChQvz/vvvJ0k6d+7cND5y5Mgkyd1335177rkn3bp1y+c+97l2q7U9mNkOAAAAAAAAwFJ997vfTY8ePbLFFltknXXWycKFCzNhwoS8/PLLGT58eNZdd92mdTfbbLNsuOGG+ctf/pKFCxdm5MiR6datWxmrb33CdgAAAAAAAACW6vjjj88jjzyS5557LuPHj0/Xrl1TW1ub73znO/nCF77QYv0999wzl112WdPXnzZVpX+e50+rmjlzZrsdq6ampl2PB7Qe/QuVTQ9DZdPDULn0L1Q2PQyVTQ9D5dK/sGxqamqWuo5ntgMAAAAAAABAQcJ2AAAAAAAAAChI2A4AAAAAAAAABQnbAQAAAAAAAKAgYTsAAAAAAAAAFCRsBwAAAAAAAICChO0AAAAAAAAAUJCwHQAAAAAAAAAKErYDAAAAAAAAQEHCdgAAAAAAAAAoSNgOAAAAAAAAAAUJ2wEAAAAAAACgIGE7AAAAAAAAABQkbAcAAAAAAACAgoTtAAAAAAAAAKwUjj/++Gy//fblLmOZCNsBAAAAAAAAoCBhOwAAAAAAAAAU1LHcBQAAAAAAAABQGSZOnJgTTzwxX/3qVzNs2LD8+te/znPPPZeqqqoMHjw4J598ctZbb70kyT/+8Y8ccMABGTVqVM4888wW+9p+++2zzTbb5NJLL236/uPLFvn49hMnTszVV1+dKVOmpK6uLj179sxnPvOZjBw5Mvvtt18bnnlLwnYAAAAAAACAFVQqlTJvXrmrWLKuXZOqqqpW29/zzz+fa665JoMGDcp+++2Xv//97xk3blymTp2aa6+9Nl26dCm8z69+9au588478+abb+arX/1q03j//v2TJA8++GC+9a1vpVevXtl5552zxhprZObMmZkyZUruvvtuYTsAAAAAAABAJSmVSjnhP0p55tlyV7JkA7dIfn1J6wXuDz30UM4999yMGDGiaezss8/O3Xffnb/97W/NxpfV1772tUyaNClvvvlmvva1r7VYfvvtt6dUKuVXv/pVNtlkk2bL6urqip/ECvLMdgAAAAAAAAAK2WabbVoE6nvvvXeSZPLkyW167MXNmu/du3ebHnNxzGwHAAAAAAAAWAFVVVX59SVZpW4jP2DAgBZja621VpJk9uzZrXacjxsxYkTGjh2bY445JnvssUcGDx6crbfeOn369GmT4y2NsB0AAAAAAABgBVVVVaVbt3JX0X569OjRYqxDhw5JkoaGhjY55m677ZZOnTrluuuuyy233JIbb7wxVVVVGTRoUE466aSmZ7u3F2E7AAAAAAAAAK2uuvqjp5ovLnxf3tnvn/3sZ/PZz342H374YZ5++umMHTs2t99+e0455ZSMGTMmvXr1WqGaixC2AwAAAAAAANDqFgXfM2bMaLHsxRdfXOw2H58dv+jrxenRo0d22GGH7LDDDmlsbMztt9+e5557Lttvv30rVL5sqtvtSAAAAAAAAACsMnr06JENN9wwTz31VF5//fWm8Q8//DCXXnrpYrdZbbXVkiRvvfVWi2VPPPHEYmfJv/fee0mSzp07t0bZy8zMdgAAAAAAAADaxJe//OX89Kc/zde+9rUMHz48pVIpDz/8cDbddNPFrj9o0KA88MAD+c///M/ssMMO6dy5czbZZJPs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mTdvXjbddNOcdNJJ2XHHHVusO3369Pz85z/P+PHjs2DBgmy++eY5+eSTF7vf+vr6jBkzJmPHjs2UKVPy7rvvplevXhk0aFBOOOGEbLbZZiv2wwMAAAAAAACg4rTKzPbrr78+9957b/r375+DDjooX/ziF1MqlXL++efn1FNPXew29fX1OeqoozJp0qSMHDkyw4cPz6RJk3LUUUdl6tSpOfjgg/Paa6/lC1/4Qnbcccc8+OCDOe6449LQ0NBiX3V1dfnyl7+cV155JV/60pey11575cUXX8wxxxyT++67r9m6b7/9dg466KDceeedGThwYA477LD07t07Rx11VJ588snF7vvHP/5x6uvrs8suu+TII4/MkCFDMm7cuBx88MF5+umnW+NHCAAAAAAAAEAFaZWZ7V//+tdz1llnpUOHDk1jpVIp3//+93PTTTdl4sSJGTRoULNtZsyYkUGDBuX8889Px44flbHpppvmvPPOy8EHH5wDDjggp59+eqqqqpIkP/jBD3Ldddfl/vvvzx577NFsXy+++GL23nvvnHfeeU3rH3744fniF7+YM844I8OGDUvXrl2TJBdccEHeeuutnHLKKTn++OOb9jFmzJiceeaZLc6td+/eGTt2bNZee+1m4y+99FL+/d//PRdeeGGuuuqq5f3RAQAAAAAAAFCBWmVm+3rrrdcsaE+SqqqqHHLIIUmShx9+eLHbffe7320K2pNk7733TpIsXLgwp5xySlNw/vFlL7zwQov9dOjQIaeeemqz9f/t3/4t++67b957772MGzcuyUez6e+666707ds3Rx99dLN9fOlLX1rsLeo7d+7cImhPkk022SRDhw7NY489lgULFiz2/AAAAAAAAAD4dGqVme319fW59tprc+edd+b//u//MmfOnJRKpablb7/9dottevfunfXWW6/Z2Jprrpkk6devX7p167bYZYvb17rrrpva2toW44MHD86NN96YyZMn5/Of/3xefvnlzJ8/P9tvv326dOnSbN3q6upsu+22eeWVV1rs5/nnn88VV1yRiRMn5p133mkRrs+cOTNrrbVWi+0AAAAAAAAA+HRqlbD9pJNOyl//+tf069cvo0aNSt++fdOxY8e8//77GT16dOrr61ts07Nnz5bF/L9Z7otbtmjm/MKFC1ssW2ONNRZbV9++fZMks2fPTpJ88MEHzcaXtP7HTZo0KUcccUSSZKeddkq/fv3SvXv3VFVV5b777ssLL7yw2PMDAAAAAAAA4NNrhcP2p59+On/9618zbNiwXH755c1uJ//kk09m9OjRK3qIpXrnnXcWO/7uu+8m+f/D+169ejUbX9L6H/eb3/ymaeb+4MGDmy178sknl7dkAAAAAAAAACrYCj+z/fXXX0+SfO5zn2vx3PbHH398RXe/TKZPn55p06a1GF90/M022yxJstFGG6VLly559tlnM3/+/GbrNjY2ZtKkSS328dprr6VPnz4tgva5c+dm8uTJrXUKAAAAAAAAAFSQFQ7bFz13feLEic3GX3rppVx++eUruvtl0tDQkAsuuKDZc+JfeOGF3HrrrVl99dWzyy67JEk6d+6ckSNH5t13383vfve7Zvu44YYbFvu89tra2tTV1eWll15qdryf/exnee+999rmhAAAAAAAAABYqa3wbeS33HLLbLnllrn77rszY8aMbLXVVpk+fXoeeOCB7LLLLvnzn//cGnV+ogEDBmTSpEk58MADs+OOO+a9997L3XffnYaGhpx77rnp2rVr07qnnXZaHn744Vx00UWZOHFiNttss0ydOjXjxo3LsGHDMn78+Gb7PvTQQzN+/Ph85StfyciRI9O5c+dMmDAhb731VoYMGZIJEya0+fkBAAAAAAAAsHJZ4ZntHTp0yGWXXZYDDzwwr732Wq655ppMmTIl3/nOd/Ltb3+7NWpcqt69e+e6667LhhtumBtuuCF33HFHBgwYkCuuuCK77757s3XXWmut/OlPf8qoUaPy1FNPZfTo0Zk1a1auuuqqbL311i32veuuu+biiy/OBhtskNtuuy133HFHNt5449x4442pra1tl/MDAAAAAAAAYOVSVfr4vddpdY899lg6d+6cTp06tfmx+vTpk1mzZrX5cYDWp3+hsulhqGx6GCqX/oXKpoehsulhqFz6F5ZuwYIF2WqrrZa63grPbAcAAAAAAACAVY2wHQAAAAAAAAAKErYDAAAAAAAAQEHCdgAAAAAAAAAoSNgOAAAAAAAAAAUJ2wEAAAAAAACgIGE7AAAAAAAAABTUsdwFAAAArIw6172STh9My4Jetanv3a/c5QAAAACwkhG2AwAsRYd5sz5xedXcUjrMq2ufYoBW9889XD3//az9+IXp9vZTTWNz19oqbw3+Zhq7rFaOEoEl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9+7Zcccd881vfjMbbLDBYrf53//931x22WV57rnnUlVVlc033zwnnHBCdthhh9Y4NfjUa43+ffzxx3PfffdlwoQJmTZtWubMmZPa2trstttuOe6447Laaqu12OaTrttDhgzJ1VdfvdznBKuS1ujhRx99NIcffvgSly9pfy+//HIuuuiiPPLII5k7d2769euXgw8+OF/+8pdTVVW1XOcDq5rW6OHDDjssEyZM+MR1fvazn2W//fZr+t51GD6ZsL2MHnnkkRxzzDHp3Llz9tprr/To0SN/+ctf8s1vfjNvvvlmjj766KXuo7GxMccff3zGjx+frbfeOnvssUdeffXV3HDDDXn44Ydz/fXXZ/XVV2+2zaWXXpqLLrootbW1Ofjgg/Phhx/mzjvvzMEHH5zf//73GTRoUFudMnyqrGgP19fX59hjj03nzp0zZMiQDBs2LPX19Rk/fnwuvPDC3Hfffbn66qvTrVu3FtvW1tZm//33bzG+6aabttr5wadda1yHF9ltt90W23+1tbVtelxYVbVGHx1++OH54IMPWozPnDkz1157bXr37p2BAwe2WO4aDCvuF7/4RaZNm5aampqstdZaS/3gy5KceeaZueGGG7LJJpvksMMOy9tvv5277747Dz74YMaMGZN+/fo1W//WW2/Nd77znay++upNv5C86667ctRRR+Wiiy7KnnvuuaKnBp96rdG/J598cmbOnJlBgwZl3333TVVVVSZMmJArrrgif/7zn/OnP/0pa6yxRovtevXqlSOOOKLF+OL+zw0sXmtdg5OPArYhQ4a0GF/c/4unTJmSgw8+OPPmzcvIkSOz1lprZdy4cTn77LMzderUnHHGGctdB6xKWqOH999//8X27sKFC3PZZZelurp6sR9EdR2GT1CiLBYsWFDafffdS1tssUVp8uTJTePvv/9+aY899ihtvvnmpTfeeGOp+7nxxhtL/fv3L5166qmlxsbGpvE//vGPpf79+5fOOOOMZuu//PLLpc0226y0xx57lN5///2m8cmTJ5e22GKL0siRI0sNDQ2tcIbw6dYaPVxfX1/69a9/XZo1a1aL8eOOO67Uv3//0m9/+9sW2/Xv37906KGHts6JwCqqta7DN910U6l///6lm266qV2PC6uytu6jK6+8stS/f//Sueee22KZazC0jgcffLCpTy+77LJC19JFHn744VL//v1LhxxySGn+/PlN42PHji3179+/dPTRRzdbf9asWaXBgweXhg4dWpo+fXrT+PTp00tDhw4tDR06tPTBBx+swFnBqqE1+veyyy4rvfnmm83GGhsbS2eddVapf//+pR/84Actttl1111Lu+666/IXDpRKpdbp4UceeaTUv3//0sUXX7zM2xxyyCGl/v37l8aOHds0Nn/+/NJXvvKVUv/+/UuTJk0qVAOsqlqjh5fknnvuKfXv37903HHHtVjmOgyfzDPby+SRRx7Ja6+9lr333rvZp/169eqVr3/961mwYEFuueWWpe7nhhtuSJKceuqpzW63c/DBB2eDDTbI7bffnnnz5jWN33zzzVm4cGGOP/749OrVq2l80003zd57752pU6dm4sSJrXGK8KnWGj3cqVOnHH/88endu3eL8eOOOy5J8thjj7V+8UCrXYcr5bjwadLWfXTjjTcmSb74xS+ucK3A4u24444rPANm0Xvhk08+OZ07d24a32WXXTJkyJCMHz8+//jHP5rG77nnnrz//vs59NBDs8466zSNr7POOjn00EMzc+bM3HfffStUE6wKWqN/jz322Ky99trNxqqqqnLCCSck8T4Y2lJr9HBRL7/8ch577LEMHTo0u+yyS9N4586dc/LJJydJrr/++natCSpVW/aw98Kw/NxGvkwWPRNj2LBhLZYtGlvam4v58+fnqaeeykYbbdTiBbaqqio77rhjxowZk2effbbpWZOLjrvTTjst9rg333xzJkyYkO222674ScEqpDV6+JN07PjRy3OHDh0Wu/z999/PmDFjMnPmzPTu3TvbbrvtJz5HFmiutXt48uTJmTVrVhYuXJj1118/O+ywQ2pqatr8uLAqass+mjRpUqZOnZotttgi//Zv/7bYdVyDYeXw6KOPpnv37tl2221bLNt5550zYcKETJgwoelZk0t77bjkkkuarQ+0v6W9D66vr8/NN9+ct99+Oz179szAgQOz1VZbtWeJwMe88sor+f3vf5/58+dn7bXXzg477NDigzTJJ1+DBw0alO7du3sfDGX25ptvZvz48VlzzTXzuc99brHruA7Dkgnby+SVV15Jkmy44YYtlq255prp3r17Xn311U/cx2uvvZbGxsYWz6FbZNH4K6+80hS2v/LKK+nevXvWXHPNFusvqmVpxwVap4c/yU033ZRk8R+MSZIXXnghZ555ZrOxnXfeOT/72c/St2/f5T4urCpau4evvvrqZt937do1J554Yo499tg2PS6sitqyjxZ9kv9LX/rSEtdxDYbymzNnTmbMmJH+/fsvNpRb3HvbT3rt8F4YVg5Lex88Y8aM/Od//mezsYEDB+aCCy7IZz7zmTavD2jujjvuyB133NH0fceOHXPooYfmO9/5TrPr8yddgzt06JD1118/U6ZMycKFC5s+dAO0r5tuuimNjY3Zf//9l9iHrsOwZK5eZTJ79uwkaXYr94/r2bNnPvjgg0/cx6LlPXv2XOI+Pn6sRV+vvvrqn7j+0o4LtE4PL8m4ceMyZsyY/Mu//Mtif9l/9NFHZ4899ki/fv3SqVOnvPTSS/n1r3+dv/3tbznuuOMyZsyYJc4EAD7SWj28/vrr54wzzsiwYcOyzjrrpK6uLg8//HAuuOCCnH/++enWrVsOO+ywVj8urMraqo8+/PDD3H333enWrVv23nvvxa7jGgwrh2V9L/zx14JPeu3wXhjK7/nnn8+vfvWr9O3bN8ccc0yL5QcccEAGDRqU/v37p3v37nnllVdy1VVX5dZbb82RRx6Z2267bYmvCUDrWn311XPaaadl1113TW1tbebOnZsnnngi559/fn7/+9+nqqoqp59+etP6S/v/e48ePdLY2JgPP/ywxaMWgbZXKpVy8803J1nyLeRdh+GTeWY7wErk6aefzje/+c306tUrv/jFL5o9f3KR7373u9lmm21SU1OTnj17Zptttslll12WIUOG5Jlnnsn9999fhsph1TRkyJAceuih6devX7p27Zq11147++23X6688sp06dIlv/zlL7Nw4cJylwksg7vuuitz5szJnnvuucRfErgGA0Dre/3113PsscemoaEhF1xwwWIniXzjG9/IDjvskL59+6Zbt27ZdNNN89///d/Zd999M23atNxwww1lqBxWTZtsskmOPfbYbLLJJunevXv69u2b3XffPaNHj87qq6+eq6++Ou+++265ywSW0SOPPJI33ngjQ4YMWewdKBLXYVgaYXuZLO2T87Nnz17ip/0WWbT84zPX/3kfHz/Woq8/6Zgf3y+wZK3Rw//smWeeyVe/+tVUV1fniiuuyCabbLLM21ZXVzfNgp80aVKh48KqqC16+OM22WSTDBo0KLNmzcrUqVPb7biwKmirPlp069olfZJ/SVyDof0t63vhj78WfNJrh/fCUD6vv/56Dj/88MycOTMXX3xxtt9++0LbH3TQQUlcg2FlsOaaa2a33XbLwoUL89RTTzWNL+3/7x9++GGqqqrSo0ePdqkTaG7R49SKvhdOXIdhEWF7mSx6nvringk3Y8aMzJkzZ4mfIlpkgw02SHV1ddNzb/7ZovGPP9O9X79+Tc+3+2eLalnacYHW6eGPe+aZZ3L00UensbExV155ZbbccsvCNdXU1CT56BmWwCdr7R5enEU9OXfu3HY9LnzatUUfTZkyJU888UQ23njjDB48uHBNrsHQvrp3754111wzb7zxRhoaGlosX9x720967fBeGMpjUdA+Y8aMXHTRRdl1110L78M1GFYuRd8HNzQ05I033sj666/vee1QBnV1dbn33nuz2mqrZc899yy8veswfETYXibbbbddkmT8+PEtli0aW7TOknTt2jVbbrllXn755UybNq3ZslKplIceeijdu3fPFlts0eK4Dz744BKPO2TIkAJnAqum1ujhRRYF7Q0NDbniiiuy1VZbLVdNiz41vP766y/X9rAqac0eXpyGhoY8++yzSZL11luv3Y4Lq4K26KMV+SR/4hoM5TBkyJDMmTNnsbNo/vd//zdJ89eCZXnt8F4Y2s/Hg/YLL7wwu++++3Lt5+mnn06S1NbWtmZ5wHJa9P/ij/fkJ12DJ06cmDlz5ngfDGVy2223Zf78+dlnn33SpUuXwtu7DsNHhO1lssMOO2SDDTbIHXfckeeff75p/IMPPshvfvObdOrUKfvtt1/T+Ntvv52pU6e2uN3Ov//7vydJLrjggpRKpabxP/3pT3n99dezzz77pGvXrk3jBxxwQDp27JhLL7202b6ef/753HHHHfmXf/mXDBo0qLVPFz51WquHn3322Rx99NFZuHBhfvvb32abbbb5xOO++OKLWbBgQYvxSZMm5YorrkinTp2W61OIsKppzR7+Zw0NDTnvvPPy6quvZujQoVlrrbWW+7hAS63Vv4ssWLAgt95661L7zzUYyuO9997L1KlT89577zUbX/Re+Be/+EXq6+ubxseNG5cJEyZk2LBhzX7pN3LkyPTq1SvXXHNN3nzzzabxN998M9dcc01qamqWO+wDFm9J/bsoaH/77bdzwQUXZMSIEZ+4n6lTpzabJfvx8fPOOy9Jss8++7Re4UCSJffw4t4HJ8kf/vCHPProo+nXr18GDhzYNL7xxhtnu+22y6OPPppx48Y1jdfX1+cXv/hFkjQ9lgloPUvq4Y9blg+euw7D0lWVPp7Q0q4eeeSRHHPMMencuXP22muv9OjRI3/5y18ybdq0fPe7383RRx/dtO7pp5+eW265JT/5yU9ywAEHNI03Njbma1/7WsaPH5+tt9462223XV577bX85S9/SW1tbW644YasvvrqzY576aWX5qKLLkptbW322GOPfPjhh7nzzjuzYMGC/P73vxe2wzJa0R6eNWtW9thjj9TV1WXnnXde7Iz2Xr165cgjj2y2n7Fjx2bQoEFZd91107Fjx7z00kt58MEHU1VVlTPPPDNf/vKX2/zc4dOgNa7DAwYMaPqz9tprp66uLhMmTMgrr7ySddZZJ9dcc0022GCD5T4usHit0b+L/PnPf85JJ52UPfbYI5dccskSj+kaDK3nhhtuyMSJE5Mkf//73/Pcc89l2223bbqN+6BBg5p+6X7JJZfkl7/8Zb7xjW/kP/7jP5rt57/+679yww03ZJNNNskuu+ySGTNm5K677kqPHj3ypz/9KRtttFGz9W+99dZ85zvfyeqrr55Ro0YlSe66667MnDkzF154YUaOHNnWpw4VrzX6d/jw4Zk2bVq23nrrDBs2bLHH+fj6l1xySa666qpst912WW+99dKtW7e88sor+dvf/pYFCxbkuOOOy6mnntpWpwyfKq3Vwx07dswWW2yRtddeO3Pnzs1TTz2VyZMnZ7XVVlvs4xFfeumlfPnLX868efMyatSorLnmmhk3blxeeumlHHrooTnjjDPa6ScAla21/h+dfPTBmQMPPDCbb755br755iUe03UYls6DUMpo++23zx//+MdcfPHFueuuu7Jw4cL0798/3/rWt5re+C9NdXV1Lr300lx++eW59dZb8/vf/z59+vTJF7/4xZxyyiktgvYkOf7441NbW5s//OEPue6669KpU6cMHjw4J598cjbffPPWPk341FrRHp49e3bq6uqSfHSry0W3u/y42traZmH7brvtlvfffz8vvPBCHnrooSxYsCBrrLFG9tprrxxxxBHL9ax3WFW1xnX46KOPzpNPPpmHHnoodXV16dSpUz7zmc/k+OOPz1FHHZXevXu3yXFhVdeafbSst5B3DYbWM3HixNxyyy3NxiZNmtTslvDLMsPtnHPOSf/+/XP99ddn9OjR6d69e0aMGJFvfvOb+cxnPtNi/X333Tc1NTW57LLLmn6huMUWW+T444/PjjvuuIJnBauG1ujfRY9CfPLJJ/Pkk08udp2PhwJDhw7N1KlT8/zzz+fxxx/PvHnzUlNTk89+9rP5yle+ssTAHmipNXr44IMPzvjx4/PYY49l1qxZqa6uznrrrZcjjjgiRx99dNZZZ50W22yyySa5/vrrc9FFF2XcuHGZM2dO+vXrlzPPPDNf+cpXWufkYBXQWv+PTpb9vbDrMCydme0AAAAAAAAAUJBntgMAAAAAAABAQcJ2AAAAAAAAAChI2A4AAAAAAAAABQnbAQAAAAAAAKAgYTsAAAAAAAAAFCRsBwAAAAAAAICChO0AAAAAAAAAUJCwHQAAAAAAAAAKErYDAAAAAAAAQEHCdgAAAAAAAAAoSNgOAAAAAAAAAAUJ2wEAAAAAAACgoP8PHD+WTrZ5KmQAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "axes = az.plot_forest(\n", + " [data_mcmc, data_svi],\n", + " model_names = [\"nuts\", \"svi\"],\n", + " kind='forestplot',\n", + " var_names=['d', 'lambda', 'a'],\n", + " coords={\"idx\": 0},\n", + " combined=True,\n", + " figsize=(20, 6)\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pymdp", + "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.11.0 | packaged by conda-forge | (main, Oct 25 2022, 06:18:27) [GCC 10.4.0]" + }, + "vscode": { + "interpreter": { + "hash": "ee9ec9b0986c80b528a0decd8a099ef790c4bc969bd74a31889dfc8308eb58a2" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/testing_large_latent_spaces.ipynb b/examples/testing_large_latent_spaces.ipynb new file mode 100644 index 00000000..7dffa920 --- /dev/null +++ b/examples/testing_large_latent_spaces.ipynb @@ -0,0 +1,473 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "# Set cuda device to use\n", + "os.environ[\"CUDA_DEVICE_ORDER\"] = \"PCI_BUS_ID\"\n", + "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n", + "\n", + "# do not prealocate memory\n", + "os.environ[\"XLA_PYTHON_CLIENT_PREALLOCATE\"] = \"false\"\n", + "os.environ[\"XLA_PYTHON_CLIENT_ALLOCATOR\"] = \"platform\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import jax.numpy as jnp\n", + "import jax.tree_util as jtu\n", + "import equinox as eqx\n", + "import numpy as np\n", + "from functools import partial\n", + "from jax import vmap, lax, nn, jit, remat\n", + "from jax import random as jr\n", + "from pymdp.jax.agent import Agent as AIFAgent\n", + "from pymdp.utils import random_A_matrix, random_B_matrix\n", + "from opt_einsum import contract" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# @partial(jit, static_argnames=['dims', 'keep_dims'])\n", + "def factor_dot(M, xs, dims, keep_dims = None):\n", + " \"\"\" Dot product of a multidimensional array with `x`.\n", + " \n", + " Parameters\n", + " ----------\n", + " - `qs` [list of 1D numpy.ndarray] - list of jnp.ndarrays\n", + " \n", + " Returns \n", + " -------\n", + " - `Y` [1D numpy.ndarray] - the result of the dot product\n", + " \"\"\"\n", + " all_dims = list(range(M.ndim))\n", + " matrix = [[xs[f], dims[f]] for f in range(len(xs))]\n", + " args = [M, all_dims]\n", + " for row in matrix:\n", + " args.extend(row)\n", + "\n", + " args += [keep_dims]\n", + " return contract(*args, backend='jax', optimize='auto')\n", + "\n", + "@vmap\n", + "def get_marginals(posterior):\n", + " d = posterior.ndim - 1\n", + " marginals = []\n", + " for i in range(d):\n", + " marginals.append( jnp.sum(posterior, axis=(j + 1 for j in range(d) if j != i)) )\n", + "\n", + " return marginals\n", + "\n", + "@vmap\n", + "def merge_marginals(marginals):\n", + " q = marginals[0]\n", + " for m in marginals[1:]:\n", + " q = jnp.expand_dims(q, -1) * m\n", + " \n", + " return q" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 2, 3)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def make_tuple(i, d, ext):\n", + " l = [i,]\n", + " l.extend(d + i for i in ext)\n", + " return tuple(l)\n", + "\n", + "make_tuple(0, 1, (1, 2))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "@partial(vmap, in_axes=(0, 0, None, None))\n", + "def delta_A(beliefs, outcomes, deps, num_obs):\n", + " def merge(beliefs, outcomes):\n", + " y = nn.one_hot(outcomes, num_obs)\n", + " d = beliefs.ndim\n", + " marg_beliefs = jnp.sum(beliefs, axis=(i for i in range(d) if i not in deps))\n", + " axis = ( - (i+1) for i in range(len(deps)))\n", + " return jnp.expand_dims(y, axis) * marg_beliefs\n", + " \n", + " return vmap(merge, in_axes=(0, None))(beliefs, outcomes)\n", + " \n", + "@partial(vmap, in_axes=(0, 0, 0, None))\n", + "def delta_B(post_b, cond_b, action, num_actions):\n", + " a = nn.one_hot(action, num_actions)\n", + " all_dims = tuple(range(cond_b.ndim - 1))\n", + " fd = lambda x, y: factor_dot(x, [y], ((0,),), keep_dims=all_dims)\n", + " b = vmap(fd)(cond_b, post_b)\n", + " return b * a\n", + "\n", + "@partial(vmap, in_axes=(None, 0))\n", + "def get_reverse_conditionals(B, beliefs):\n", + " all_dims = tuple(range(B.ndim - 1))\n", + " dims = tuple((i,) for i in all_dims[1:-1])\n", + " fd = lambda x, y: factor_dot(x, y, dims, keep_dims=all_dims)\n", + " joint = vmap(fd)(B, beliefs)\n", + " pred = joint.sum(axis=all_dims[2:], keepdims=True)\n", + " return joint / pred\n", + "\n", + "@partial(vmap, in_axes=(0, 0, None))\n", + "def get_reverse_predictive(post, cond, deps):\n", + " def pred(post, cond, deps):\n", + " d = post.ndim\n", + " dims = tuple(make_tuple(i, d, deps[i]) for i in range(len(deps)))\n", + " keep_dims = list(dims[0][1:])\n", + " for row in dims[1:]:\n", + " keep_dims.extend(list(row[1:]))\n", + " \n", + " unique_dims = tuple(set(keep_dims))\n", + "\n", + " return factor_dot(post, cond, dims, keep_dims=unique_dims)\n", + " \n", + " out = vmap(pred, in_axes=(0, 0, None))(post, cond, deps)\n", + " return out\n", + "\n", + "def learning(agent, beliefs, actions, outcomes, lag=1):\n", + " A_deps = agent.A_dependencies\n", + " B_deps = agent.B_dependencies\n", + " num_obs = agent.num_obs\n", + " posterior_beliefs = merge_marginals( jtu.tree_map(lambda x: x[..., -1, :], beliefs) )\n", + " qA = agent.pA\n", + " qB = agent.pB\n", + "\n", + " def step_fn(carry, xs):\n", + " posterior_beliefs, qA, qB = carry\n", + " obs, acts, filter_beliefs = xs\n", + " # learn A matrix\n", + " if agent.learn_A:\n", + " qA = jtu.tree_map(\n", + " lambda qa, o, m: qa + delta_A(posterior_beliefs, o, A_deps[m], num_obs[m]).sum(0), \n", + " qA, \n", + " obs, \n", + " list(range(len(num_obs)))\n", + " )\n", + "\n", + " # learn B matrix\n", + " conditional_beliefs = jtu.tree_map(\n", + " lambda b, f: get_reverse_conditionals(b, [filter_beliefs[i] for i in B_deps[f]]),\n", + " agent.B, \n", + " list(range(len(agent.B))) \n", + " )\n", + " post_marg = get_marginals(posterior_beliefs)\n", + " acts = [acts[..., i] for i in range(acts.shape[-1])]\n", + "\n", + " qB = jtu.tree_map(\n", + " lambda qb, pb, cb, a, nc: qb + delta_B(pb, cb, a, nc).sum(0),\n", + " qB,\n", + " post_marg,\n", + " conditional_beliefs,\n", + " acts,\n", + " agent.num_controls \n", + " )\n", + "\n", + " # compute posterior beliefs for the next time step\n", + " get_transition = lambda cb, a: cb[..., a]\n", + " conditional_beliefs = jtu.tree_map(\n", + " lambda cb, a: vmap(get_transition)(cb, a), conditional_beliefs, acts\n", + " )\n", + " posterior_beliefs = get_reverse_predictive(posterior_beliefs, conditional_beliefs, B_deps)\n", + "\n", + " return (posterior_beliefs, qA, qB), None\n", + "\n", + " first_outcomes = jtu.tree_map(lambda x: x[..., 0], outcomes)\n", + " outcomes = jtu.tree_map(lambda x: jnp.flipud(x.swapaxes(0, 1))[1:lag+1], outcomes)\n", + " actions = jnp.flipud(actions.swapaxes(0, 1))[:lag]\n", + " beliefs = jtu.tree_map(lambda x: jnp.flipud(jnp.moveaxis(x, 2, 0))[1:lag+1], beliefs)\n", + " iters = (outcomes, actions, beliefs)\n", + " (last_beliefs, qA, qB), _ = lax.scan(step_fn, (posterior_beliefs, qA, qB), iters)\n", + "\n", + " # update A with the first outcome \n", + " if agent.learn_A:\n", + " qA = jtu.tree_map(\n", + " lambda qa, o, m: qa + delta_A(last_beliefs, o, A_deps[m], num_obs[m]).sum(0), \n", + " qA, \n", + " first_outcomes, \n", + " list(range(len(num_obs)))\n", + " )\n", + "\n", + " if qA is not None:\n", + " E_qA = jtu.tree_map(lambda qa: qa / qa.sum(0), qA)\n", + " else:\n", + " E_qA = agent.A\n", + " E_qB =jtu.tree_map(lambda qb: qb / qb.sum(0), qB)\n", + " agent = eqx.tree_at(\n", + " lambda x: (x.A, x.pA, x.B, x.pB), agent, (E_qA, qA, E_qB, qB), is_leaf=lambda x: x is None\n", + " )\n", + "\n", + " return agent" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "class TestEnv:\n", + " def __init__(self, num_agents, num_obs, prng_key=jr.PRNGKey(0)):\n", + " self.num_obs = num_obs\n", + " self.num_agents = num_agents\n", + " self.key = prng_key\n", + " \n", + " def step(self, actions=None):\n", + " # return a list of random observations for each agent or parallel realization (each entry in batch_dim)\n", + " obs = [jr.randint(self.key, (self.num_agents,), 0, no) for no in self.num_obs]\n", + " self.key, _ = jr.split(self.key)\n", + " return obs" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def update_agent_state(agent, env, args, key, outcomes, actions):\n", + " beliefs = agent.infer_states(outcomes, actions, *args)\n", + " # q_pi, _ = agent.infer_policies(beliefs)\n", + " q_pi = jnp.ones((agent.batch_size, 6)) / 6\n", + " batch_keys = jr.split(key, agent.batch_size)\n", + " actions = agent.sample_action(q_pi, rng_key=batch_keys)\n", + "\n", + " outcomes = env.step(actions)\n", + " outcomes = jtu.tree_map(lambda x: jnp.expand_dims(x, -1), outcomes)\n", + " args = agent.update_empirical_prior(actions, beliefs)\n", + " args = (args[0], None) # remove belief history from args\n", + " latest_belief = jtu.tree_map(lambda x: x[:, 0], beliefs)\n", + "\n", + " return args, latest_belief, outcomes, actions\n", + "\n", + "def evolve_trials(agent, env, batch_size, num_timesteps, prng_key=jr.PRNGKey(0)):\n", + "\n", + " def step_fn(carry, xs):\n", + " actions = carry['actions']\n", + " outcomes = carry['outcomes']\n", + " key = carry['key']\n", + " key, _key = jr.split(key)\n", + " vect_uas = vmap(partial(update_agent_state, agent, env))\n", + " keys = jr.split(_key, batch_size)\n", + " args, beliefs, outcomes, actions = vect_uas(carry['args'], keys, outcomes, actions)\n", + " output = {\n", + " 'args': args, \n", + " 'outcomes': outcomes, \n", + " 'actions': actions,\n", + " 'key': key\n", + " }\n", + "\n", + " return output, {'beliefs': beliefs, 'actions': actions[..., 0, :], 'outcomes': outcomes}\n", + "\n", + " \n", + " outcome_0 = jtu.tree_map(lambda x: jnp.expand_dims(x, -1), env.step())\n", + " outcome_0 = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_size,) + x.shape), outcome_0)\n", + " prior = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_size,) + x.shape), agent.D)\n", + " init = {\n", + " 'args': (prior, None),\n", + " 'outcomes': outcome_0,\n", + " 'actions': - jnp.ones((batch_size, 1, agent.policies.shape[-1]), dtype=jnp.int32),\n", + " 'key': prng_key\n", + " }\n", + "\n", + " last, sequences = lax.scan(step_fn, init, jnp.arange(num_timesteps))\n", + " sequences['outcomes'] = jtu.tree_map(\n", + " lambda x, y: jnp.concatenate([jnp.expand_dims(x.squeeze(), 0), y.squeeze()]), \n", + " outcome_0, \n", + " sequences['outcomes']\n", + " )\n", + "\n", + " return last, sequences\n", + "\n", + "@partial(jit, static_argnums=(1, 2, 3, 4))\n", + "def training_step(agent, env, batch_size, num_timesteps, lag=1):\n", + " output, sequences = evolve_trials(agent, env, batch_size, num_timesteps)\n", + " args = output.pop('args')\n", + " \n", + " outcomes = jtu.tree_map(lambda x: x.swapaxes(0, 1), sequences['outcomes'])\n", + " actions = sequences['actions'].swapaxes(0, 1)\n", + " beliefs = jtu.tree_map(lambda x: jnp.moveaxis(x, [0, 2], [1, 1]), sequences['beliefs'])\n", + "\n", + " def update_beliefs(outcomes, actions, args):\n", + " return agent.infer_states(outcomes, actions, *args)\n", + "\n", + " # update beliefs with the last action-outcome pair\n", + " last_belief = vmap(update_beliefs)(\n", + " output['outcomes'], \n", + " output['actions'],\n", + " args\n", + " )\n", + "\n", + " beliefs = jtu.tree_map(lambda x, y: jnp.concatenate([x, y], -2), beliefs, last_belief)\n", + " # agent, beliefs, actions, outcomes = lax.stop_gradient((agent, beliefs, actions, outcomes))\n", + " agent = learning(agent, beliefs, actions, outcomes, lag=lag)\n", + "\n", + " return agent" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# define an agent and environment here\n", + "batch_size = 16\n", + "num_agents = 1\n", + "\n", + "num_pixels = 32\n", + "# y_pos paddle 1, y_pos paddle 2, (x_pos, y_pos) ball\n", + "num_obs = [num_pixels, num_pixels, num_pixels, num_pixels]\n", + "num_states = [num_pixels, num_pixels, num_pixels, num_pixels, 96]\n", + "num_controls = [1, 1, 1, 1, 6]\n", + "num_blocks = 1\n", + "num_timesteps = 25\n", + "\n", + "action_lists = [jnp.zeros(6, dtype=jnp.int32)] * 4\n", + "action_lists += [jnp.arange(6, dtype=jnp.int32)]\n", + "\n", + "policies = jnp.expand_dims(jnp.stack(action_lists, -1), -2)\n", + "num_policies = len(policies)\n", + "\n", + "A_dependencies = [[0], [1], [2], [3]]\n", + "B_dependencies = [[0, 4], [1, 4], [2, 4], [3, 4], [4]]\n", + "\n", + "A_np = [np.eye(o) for o in num_obs]\n", + "B_np = list(random_B_matrix(num_states=num_states, num_controls=num_controls, B_factor_list=B_dependencies))\n", + "A = jtu.tree_map(lambda x: jnp.broadcast_to(x, (num_agents,) + x.shape), A_np)\n", + "B = jtu.tree_map(lambda x: jnp.broadcast_to(x, (num_agents,) + x.shape), B_np)\n", + "C = [jnp.zeros((num_agents, no)) for no in num_obs]\n", + "D = [jnp.ones((num_agents, ns)) / ns for ns in num_states]\n", + "E = jnp.ones((num_agents, num_policies )) / num_policies\n", + "\n", + "pA = None # jtu.tree_map(lambda x: jnp.broadcast_to(jnp.ones_like(x), (num_agents,) + x.shape), A_np)\n", + "pB = jtu.tree_map(lambda x: jnp.broadcast_to(jnp.ones_like(x), (num_agents,) + x.shape), B_np)\n", + "\n", + "agents = AIFAgent(A, B, C, D, E, pA, pB, learn_A=False, policies=policies, A_dependencies=A_dependencies, B_dependencies=B_dependencies, use_param_info_gain=True, inference_algo='fpi', sampling_mode='marginal', action_selection='deterministic', num_iter=8)\n", + "env = TestEnv(num_agents, num_obs)\n", + "agents = training_step(agents, env, batch_size, num_timesteps, lag=25)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# agents = lax.stop_gradient(agents)\n", + "%timeit training_step(agents, env, batch_size, num_timesteps, lag=25).A[0].block_until_ready()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define an agent and environment here\n", + "batch_size = 16\n", + "num_agents = 1\n", + "\n", + "num_pixels = 32\n", + "# y_pos paddle 1, y_pos paddle 2, (x_pos, y_pos) ball\n", + "num_obs = [num_pixels, num_pixels, num_pixels, num_pixels]\n", + "num_states = [num_pixels, 2, num_pixels, 2, num_pixels, num_pixels, 24]\n", + "num_controls = [1, 6, 1, 6, 1, 1, 6]\n", + "num_blocks = 1\n", + "num_timesteps = 25\n", + "\n", + "action_lists = [jnp.zeros(6, dtype=jnp.int32), jnp.arange(6, dtype=jnp.int32)] * 2\n", + "action_lists += [jnp.zeros(6, dtype=jnp.int32), jnp.zeros(6, dtype=jnp.int32), jnp.arange(6, dtype=jnp.int32)]\n", + "\n", + "policies = jnp.expand_dims(jnp.stack(action_lists, -1), -2)\n", + "num_policies = len(policies)\n", + "\n", + "A_dependencies = [[0], [2], [4], [5]]\n", + "B_dependencies = [[0, 1], [1], [2, 3], [3], [4, 6], [5, 6], [6]]\n", + "\n", + "A_np = [np.eye(o) for o in num_obs]\n", + "B_np = list(random_B_matrix(num_states=num_states, num_controls=num_controls, B_factor_list=B_dependencies))\n", + "A = jtu.tree_map(lambda x: jnp.broadcast_to(x, (num_agents,) + x.shape), A_np)\n", + "B = jtu.tree_map(lambda x: jnp.broadcast_to(x, (num_agents,) + x.shape), B_np)\n", + "C = [jnp.zeros((num_agents, no)) for no in num_obs]\n", + "D = [jnp.ones((num_agents, ns)) / ns for ns in num_states]\n", + "E = jnp.ones((num_agents, num_policies )) / num_policies\n", + "\n", + "pA = None # jtu.tree_map(lambda x: jnp.broadcast_to(jnp.ones_like(x), (num_agents,) + x.shape), A_np)\n", + "pB = jtu.tree_map(lambda x: jnp.broadcast_to(jnp.ones_like(x), (num_agents,) + x.shape), B_np)\n", + "\n", + "agents = AIFAgent(A, B, C, D, E, pA, pB, learn_A=False, policies=policies, A_dependencies=A_dependencies, B_dependencies=B_dependencies, use_param_info_gain=True, inference_algo='fpi', sampling_mode='marginal', action_selection='deterministic', num_iter=8)\n", + "env = TestEnv(num_agents, num_obs)\n", + "agents = training_step(agents, env, batch_size, num_timesteps, lag=25)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "31.4 s ± 15.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" + ] + } + ], + "source": [ + "%timeit training_step(agents, env, batch_size, num_timesteps, lag=25).A[0].block_until_ready()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "jax_pymdp_test", + "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.11.7" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pymdp/__init__.py b/pymdp/__init__.py index 52606d70..8692e691 100644 --- a/pymdp/__init__.py +++ b/pymdp/__init__.py @@ -7,3 +7,4 @@ from . import learning from . import algos from . import default_models +from . import jax diff --git a/pymdp/agent.py b/pymdp/agent.py index d63b2566..de8363c8 100644 --- a/pymdp/agent.py +++ b/pymdp/agent.py @@ -36,10 +36,11 @@ def __init__( B, C=None, D=None, - E = None, + E=None, + H=None, pA=None, - pB = None, - pD = None, + pB=None, + pD=None, num_controls=None, policy_len=1, inference_horizon=1, @@ -59,9 +60,18 @@ def __init__( factors_to_learn="all", lr_pB=1.0, lr_pD=1.0, - use_BMA = True, - policy_sep_prior = False, - save_belief_hist = False + use_BMA=True, + policy_sep_prior=False, + save_belief_hist=False, + A_factor_list=None, + B_factor_list=None, + sophisticated=False, + si_horizon=3, + si_policy_prune_threshold=1/16, + si_state_prune_threshold=1/16, + si_prune_penalty=512, + ii_depth=10, + ii_threshold=1/16, ): ### Constant parameters ### @@ -83,6 +93,15 @@ def __init__( self.lr_pB = lr_pB self.lr_pD = lr_pD + # sophisticated inference parameters + self.sophisticated = sophisticated + if self.sophisticated: + assert self.policy_len == 1, "Sophisticated inference only works with policy_len = 1" + self.si_horizon = si_horizon + self.si_policy_prune_threshold = si_policy_prune_threshold + self.si_state_prune_threshold = si_state_prune_threshold + self.si_prune_penalty = si_prune_penalty + # Initialise observation model (A matrices) if not isinstance(A, np.ndarray): raise TypeError( @@ -91,7 +110,7 @@ def __init__( self.A = utils.to_obj_array(A) - assert utils.is_normalized(self.A), "A matrix is not normalized (i.e. A.sum(axis = 0) must all equal 1.0)" + assert utils.is_normalized(self.A), "A matrix is not normalized (i.e. A[m].sum(axis = 0) must all equal 1.0 for all modalities)" # Determine number of observation modalities and their respective dimensions self.num_obs = [self.A[m].shape[0] for m in range(len(self.A))] @@ -108,7 +127,7 @@ def __init__( self.B = utils.to_obj_array(B) - assert utils.is_normalized(self.B), "B matrix is not normalized (i.e. B.sum(axis = 0) must all equal 1.0)" + assert utils.is_normalized(self.B), "B matrix is not normalized (i.e. B[f].sum(axis = 0) must all equal 1.0 for all factors)" # Determine number of hidden state factors and their dimensionalities self.num_states = [self.B[f].shape[0] for f in range(len(self.B))] @@ -119,13 +138,61 @@ def __init__( # If no `num_controls` are given, then this is inferred from the shapes of the input B matrices if num_controls == None: - self.num_controls = [self.B[f].shape[2] for f in range(self.num_factors)] + self.num_controls = [self.B[f].shape[-1] for f in range(self.num_factors)] else: + inferred_num_controls = [self.B[f].shape[-1] for f in range(self.num_factors)] + assert num_controls == inferred_num_controls, "num_controls must be consistent with the shapes of the input B matrices" self.num_controls = num_controls - + + # checking that `A_factor_list` and `B_factor_list` are consistent with `num_factors`, `num_states`, and lagging dimensions of `A` and `B` tensors + self.factorized = False + if A_factor_list == None: + self.A_factor_list = self.num_modalities * [list(range(self.num_factors))] # defaults to having all modalities depend on all factors + for m in range(self.num_modalities): + factor_dims = tuple([self.num_states[f] for f in self.A_factor_list[m]]) + assert self.A[m].shape[1:] == factor_dims, f"Please input an `A_factor_list` whose {m}-th indices pick out the hidden state factors that line up with lagging dimensions of A{m}..." + if self.pA is not None: + assert self.pA[m].shape[1:] == factor_dims, f"Please input an `A_factor_list` whose {m}-th indices pick out the hidden state factors that line up with lagging dimensions of pA{m}..." + else: + self.factorized = True + for m in range(self.num_modalities): + assert max(A_factor_list[m]) <= (self.num_factors - 1), f"Check modality {m} of A_factor_list - must be consistent with `num_states` and `num_factors`..." + factor_dims = tuple([self.num_states[f] for f in A_factor_list[m]]) + assert self.A[m].shape[1:] == factor_dims, f"Check modality {m} of A_factor_list. It must coincide with lagging dimensions of A{m}..." + if self.pA is not None: + assert self.pA[m].shape[1:] == factor_dims, f"Check modality {m} of A_factor_list. It must coincide with lagging dimensions of pA{m}..." + self.A_factor_list = A_factor_list + + # generate a list of the modalities that depend on each factor + A_modality_list = [] + for f in range(self.num_factors): + A_modality_list.append( [m for m in range(self.num_modalities) if f in self.A_factor_list[m]] ) + + # Store thee `A_factor_list` and the `A_modality_list` in a Markov blanket dictionary + self.mb_dict = { + 'A_factor_list': self.A_factor_list, + 'A_modality_list': A_modality_list + } + + if B_factor_list == None: + self.B_factor_list = [[f] for f in range(self.num_factors)] # defaults to having all factors depend only on themselves + for f in range(self.num_factors): + factor_dims = tuple([self.num_states[f] for f in self.B_factor_list[f]]) + assert self.B[f].shape[1:-1] == factor_dims, f"Please input a `B_factor_list` whose {f}-th indices pick out the hidden state factors that line up with the all-but-final lagging dimensions of B{f}..." + if self.pB is not None: + assert self.pB[f].shape[1:-1] == factor_dims, f"Please input a `B_factor_list` whose {f}-th indices pick out the hidden state factors that line up with the all-but-final lagging dimensions of pB{f}..." + else: + self.factorized = True + for f in range(self.num_factors): + assert max(B_factor_list[f]) <= (self.num_factors - 1), f"Check factor {f} of B_factor_list - must be consistent with `num_states` and `num_factors`..." + factor_dims = tuple([self.num_states[f] for f in B_factor_list[f]]) + assert self.B[f].shape[1:-1] == factor_dims, f"Check factor {f} of B_factor_list. It must coincide with all-but-final lagging dimensions of B{f}..." + if self.pB is not None: + assert self.pB[f].shape[1:-1] == factor_dims, f"Check factor {f} of B_factor_list. It must coincide with all-but-final lagging dimensions of pB{f}..." + self.B_factor_list = B_factor_list + # Users have the option to make only certain factors controllable. - # default behaviour is to make all hidden state factors controllable - # (i.e. self.num_states == self.num_controls) + # default behaviour is to make all hidden state factors controllable, i.e. `self.num_factors == len(self.num_controls)` if control_fac_idx == None: self.control_fac_idx = [f for f in range(self.num_factors) if self.num_controls[f] > 1] else: @@ -138,7 +205,7 @@ def __init__( # Again, the use can specify a set of possible policies, or # all possible combinations of actions and timesteps will be considered - if policies == None: + if policies is None: policies = self._construct_policies() self.policies = policies @@ -183,7 +250,7 @@ def __init__( else: self.D = self._construct_D_prior() - assert utils.is_normalized(self.D), "A matrix is not normalized (i.e. A.sum(axis = 0) must all equal 1.0" + assert utils.is_normalized(self.D), "D vector is not normalized (i.e. D[f].sum() must all equal 1.0 for all factors)" # Assigning prior parameters on initial hidden states (pD vectors) self.pD = pD @@ -201,6 +268,14 @@ def __init__( else: self.E = self._construct_E_prior() + # Construct I for backwards induction (if H specified) + if H is not None: + self.H = H + self.I = control.backwards_induction(H, B, B_factor_list, threshold=ii_threshold, depth=ii_depth) + else: + self.H = None + self.I = None + self.edge_handling_params = {} self.edge_handling_params['use_BMA'] = use_BMA # creates a 'D-like' moving prior self.edge_handling_params['policy_sep_prior'] = policy_sep_prior # carries forward last timesteps posterior, in a policy-conditioned way @@ -309,6 +384,12 @@ def reset(self, init_qs=None): else: self.qs = init_qs + + if self.pA is not None: + self.A = utils.norm_dist_obj_arr(self.pA) + + if self.pB is not None: + self.B = utils.norm_dist_obj_arr(self.pB) return self.qs @@ -394,7 +475,7 @@ def get_future_qs(self): return future_qs_seq - def infer_states(self, observation, distr_obs = False): + def infer_states(self, observation, distr_obs=False): """ Update approximate posterior over hidden states by solving variational inference problem, given an observation. @@ -403,6 +484,8 @@ def infer_states(self, observation, distr_obs = False): observation: ``list`` or ``tuple`` of ints The observation input. Each entry ``observation[m]`` stores the index of the discrete observation for modality ``m``. + distr_obs: ``bool`` + Whether the observation is a distribution over possible observations, rather than a single observation. Returns --------- @@ -421,16 +504,19 @@ def infer_states(self, observation, distr_obs = False): if self.inference_algo == "VANILLA": if self.action is not None: - empirical_prior = control.get_expected_states( - self.qs, self.B, self.action.reshape(1, -1) #type: ignore + empirical_prior = control.get_expected_states_interactions( + self.qs, self.B, self.B_factor_list, self.action.reshape(1, -1) )[0] else: empirical_prior = self.D - qs = inference.update_posterior_states( - self.A, - observation, - empirical_prior, - **self.inference_params + qs = inference.update_posterior_states_factorized( + self.A, + observation, + self.num_obs, + self.num_states, + self.mb_dict, + empirical_prior, + **self.inference_params ) elif self.inference_algo == "MMP": @@ -442,9 +528,11 @@ def infer_states(self, observation, distr_obs = False): latest_obs = self.prev_obs latest_actions = self.prev_actions - qs, F = inference.update_posterior_states_full( + qs, F = inference.update_posterior_states_full_factorized( self.A, + self.mb_dict, self.B, + self.B_factor_list, latest_obs, self.policies, latest_actions, @@ -461,12 +549,12 @@ def infer_states(self, observation, distr_obs = False): return qs - def _infer_states_test(self, observation): + def _infer_states_test(self, observation, distr_obs=False): """ Test version of ``infer_states()`` that additionally returns intermediate variables of MMP, such as the prediction errors and intermediate beliefs from the optimization. Used for benchmarking against SPM outputs. """ - observation = tuple(observation) + observation = tuple(observation) if not distr_obs else observation if not hasattr(self, "qs"): self.reset() @@ -474,15 +562,15 @@ def _infer_states_test(self, observation): if self.inference_algo == "VANILLA": if self.action is not None: empirical_prior = control.get_expected_states( - self.qs, self.B, self.action.reshape(1, -1) #type: ignore - ) + self.qs, self.B, self.action.reshape(1, -1) + )[0] else: empirical_prior = self.D qs = inference.update_posterior_states( - self.A, - observation, - empirical_prior, - **self.inference_params + self.A, + observation, + empirical_prior, + **self.inference_params ) elif self.inference_algo == "MMP": @@ -512,14 +600,19 @@ def _infer_states_test(self, observation): self.qs = qs - return qs, xn, vn - + if self.inference_algo == "MMP": + return qs, xn, vn + else: + return qs + def infer_policies(self): """ Perform policy inference by optimizing a posterior (categorical) distribution over policies. This distribution is computed as the softmax of ``G * gamma + lnE`` where ``G`` is the negative expected free energy of policies, ``gamma`` is a policy precision and ``lnE`` is the (log) prior probability of policies. This function returns the posterior over policies as well as the negative expected free energy of each policy. + In this version of the function, the expected free energy of policies is computed using known factorized structure + in the model, which speeds up computation (particular the state information gain calculations). Returns ---------- @@ -530,29 +623,53 @@ def infer_policies(self): """ if self.inference_algo == "VANILLA": - q_pi, G = control.update_posterior_policies( - self.qs, - self.A, - self.B, - self.C, - self.policies, - self.use_utility, - self.use_states_info_gain, - self.use_param_info_gain, - self.pA, - self.pB, - E = self.E, - gamma = self.gamma - ) + if self.sophisticated: + q_pi, G = control.sophisticated_inference_search( + self.qs, + self.policies, + self.A, + self.B, + self.C, + self.A_factor_list, + self.B_factor_list, + self.I, + self.si_horizon, + self.si_policy_prune_threshold, + self.si_state_prune_threshold, + self.si_prune_penalty, + 1.0, + self.inference_params, + n=0 + ) + else: + q_pi, G = control.update_posterior_policies_factorized( + self.qs, + self.A, + self.B, + self.C, + self.A_factor_list, + self.B_factor_list, + self.policies, + self.use_utility, + self.use_states_info_gain, + self.use_param_info_gain, + self.pA, + self.pB, + E = self.E, + I = self.I, + gamma = self.gamma + ) elif self.inference_algo == "MMP": future_qs_seq = self.get_future_qs() - q_pi, G = control.update_posterior_policies_full( + q_pi, G = control.update_posterior_policies_full_factorized( future_qs_seq, self.A, self.B, self.C, + self.A_factor_list, + self.B_factor_list, self.policies, self.use_utility, self.use_states_info_gain, @@ -560,9 +677,10 @@ def infer_policies(self): self.latest_belief, self.pA, self.pB, - F = self.F, - E = self.E, - gamma = self.gamma + F=self.F, + E=self.E, + I=self.I, + gamma=self.gamma ) if hasattr(self, "q_pi_hist"): @@ -644,6 +762,37 @@ def update_A(self, obs): Posterior Dirichlet parameters over observation model (same shape as ``A``), after having updated it with observations. """ + qA = learning.update_obs_likelihood_dirichlet_factorized( + self.pA, + self.A, + obs, + self.qs, + self.A_factor_list, + self.lr_pA, + self.modalities_to_learn + ) + + self.pA = qA # set new prior to posterior + self.A = utils.norm_dist_obj_arr(qA) # take expected value of posterior Dirichlet parameters to calculate posterior over A array + + return qA + + def _update_A_old(self, obs): + """ + Update approximate posterior beliefs about Dirichlet parameters that parameterise the observation likelihood or ``A`` array. + + Parameters + ---------- + observation: ``list`` or ``tuple`` of ints + The observation input. Each entry ``observation[m]`` stores the index of the discrete + observation for modality ``m``. + + Returns + ----------- + qA: ``numpy.ndarray`` of dtype object + Posterior Dirichlet parameters over observation model (same shape as ``A``), after having updated it with observations. + """ + qA = learning.update_obs_likelihood_dirichlet( self.pA, self.A, @@ -673,6 +822,37 @@ def update_B(self, qs_prev): Posterior Dirichlet parameters over transition model (same shape as ``B``), after having updated it with state beliefs and actions. """ + qB = learning.update_state_likelihood_dirichlet_interactions( + self.pB, + self.B, + self.action, + self.qs, + qs_prev, + self.B_factor_list, + self.lr_pB, + self.factors_to_learn + ) + + self.pB = qB # set new prior to posterior + self.B = utils.norm_dist_obj_arr(qB) # take expected value of posterior Dirichlet parameters to calculate posterior over B array + + return qB + + def _update_B_old(self, qs_prev): + """ + Update posterior beliefs about Dirichlet parameters that parameterise the transition likelihood + + Parameters + ----------- + qs_prev: 1D ``numpy.ndarray`` or ``numpy.ndarray`` of dtype object + Marginal posterior beliefs over hidden states at previous timepoint. + + Returns + ----------- + qB: ``numpy.ndarray`` of dtype object + Posterior Dirichlet parameters over transition model (same shape as ``B``), after having updated it with state beliefs and actions. + """ + qB = learning.update_state_likelihood_dirichlet( self.pB, self.B, @@ -744,7 +924,7 @@ def _get_default_params(self): method = self.inference_algo default_params = None if method == "VANILLA": - default_params = {"num_iter": 10, "dF": 1.0, "dF_tol": 0.001} + default_params = {"num_iter": 10, "dF": 1.0, "dF_tol": 0.001, "compute_vfe": True} elif method == "MMP": default_params = {"num_iter": 10, "grad_descent": True, "tau": 0.25} elif method == "VMP": diff --git a/pymdp/algos/__init__.py b/pymdp/algos/__init__.py index 09e9272f..bb08cc41 100644 --- a/pymdp/algos/__init__.py +++ b/pymdp/algos/__init__.py @@ -1,2 +1,2 @@ -from .fpi import run_vanilla_fpi -from .mmp import run_mmp, _run_mmp_testing +from .fpi import run_vanilla_fpi, run_vanilla_fpi_factorized +from .mmp import run_mmp, run_mmp_factorized, _run_mmp_testing diff --git a/pymdp/algos/fpi.py b/pymdp/algos/fpi.py index 37532130..e007d9a9 100644 --- a/pymdp/algos/fpi.py +++ b/pymdp/algos/fpi.py @@ -3,11 +3,12 @@ # pylint: disable=no-member import numpy as np -from pymdp.maths import spm_dot, get_joint_likelihood, softmax, calc_free_energy, spm_log_single, spm_log_obj_array -from pymdp.utils import to_obj_array, obj_array_uniform +from pymdp.maths import spm_dot, dot_likelihood, get_joint_likelihood, softmax, calc_free_energy, spm_log_single, spm_log_obj_array +from pymdp.utils import to_obj_array, obj_array, obj_array_uniform from itertools import chain +from copy import deepcopy -def run_vanilla_fpi(A, obs, num_obs, num_states, prior=None, num_iter=10, dF=1.0, dF_tol=0.001): +def run_vanilla_fpi(A, obs, num_obs, num_states, prior=None, num_iter=10, dF=1.0, dF_tol=0.001, compute_vfe=True): """ Update marginal posterior beliefs over hidden states using mean-field variational inference, via fixed point iteration. @@ -24,7 +25,7 @@ def run_vanilla_fpi(A, obs, num_obs, num_states, prior=None, num_iter=10, dF=1.0 num_obs: list of ints List of dimensionalities of each observation modality num_states: list of ints - List of dimensionalities of each observation modality + List of dimensionalities of each hidden state factor prior: numpy ndarray of dtype object, default None Prior over hidden states. If absent, prior is set to be the log uniform distribution over hidden states (identical to the initialisation of the posterior) @@ -36,6 +37,9 @@ def run_vanilla_fpi(A, obs, num_obs, num_states, prior=None, num_iter=10, dF=1.0 Threshold value of the time derivative of the variational free energy (dF/dt), to be checked at each iteration. If dF <= dF_tol, the iterations are halted pre-emptively and the final marginal posterior belief(s) is(are) returned + compute_vfe: bool, default True + Whether to compute the variational free energy at each iteration. If False, the function runs through + all variational iterations. Returns ---------- @@ -63,9 +67,7 @@ def run_vanilla_fpi(A, obs, num_obs, num_states, prior=None, num_iter=10, dF=1.0 Create a flat posterior (and prior if necessary) """ - qs = np.empty(n_factors, dtype=object) - for factor in range(n_factors): - qs[factor] = np.ones(num_states[factor]) / num_states[factor] + qs = obj_array_uniform(num_states) """ If prior is not provided, initialise prior to be identical to posterior @@ -82,7 +84,8 @@ def run_vanilla_fpi(A, obs, num_obs, num_states, prior=None, num_iter=10, dF=1.0 =========== Step 3 =========== Initialize initial free energy """ - prev_vfe = calc_free_energy(qs, prior, n_factors) + if compute_vfe: + prev_vfe = calc_free_energy(qs, prior, n_factors) """ =========== Step 4 =========== @@ -102,8 +105,14 @@ def run_vanilla_fpi(A, obs, num_obs, num_states, prior=None, num_iter=10, dF=1.0 Run the FPI scheme """ + # change stop condition for fixed point iterations based on whether we are computing the variational free energy or not + condition_check_both = lambda curr_iter, dF: curr_iter < num_iter and dF >= dF_tol + condition_check_just_numiter = lambda curr_iter, dF: curr_iter < num_iter + check_stop_condition = condition_check_both if compute_vfe else condition_check_just_numiter + curr_iter = 0 - while curr_iter < num_iter and dF >= dF_tol: + + while check_stop_condition(curr_iter, dF): # Initialise variational free energy vfe = 0 @@ -121,6 +130,9 @@ def run_vanilla_fpi(A, obs, num_obs, num_states, prior=None, num_iter=10, dF=1.0 qL = np.einsum(LL_tensor, list(range(n_factors)), [factor])/qs_i qs[factor] = softmax(qL + prior[factor]) + # print(f'Posteriors at iteration {curr_iter}:\n') + # print(qs[0]) + # print(qs[1]) # List of orders in which marginal posteriors are sequentially multiplied into the joint likelihood: # First order loops over factors starting at index = 0, second order goes in reverse # factor_orders = [range(n_factors), range((n_factors - 1), -1, -1)] @@ -132,17 +144,183 @@ def run_vanilla_fpi(A, obs, num_obs, num_states, prior=None, num_iter=10, dF=1.0 # qL = spm_dot(likelihood, qs, [factor]) # qs[factor] = softmax(qL + prior[factor]) - # calculate new free energy - vfe = calc_free_energy(qs, prior, n_factors, likelihood) + if compute_vfe: + # calculate new free energy + vfe = calc_free_energy(qs, prior, n_factors, likelihood) - # stopping condition - time derivative of free energy - dF = np.abs(prev_vfe - vfe) - prev_vfe = vfe + # print(f'VFE at iteration {curr_iter}: {vfe}\n') + # stopping condition - time derivative of free energy + dF = np.abs(prev_vfe - vfe) + prev_vfe = vfe curr_iter += 1 return qs +def run_vanilla_fpi_factorized(A, obs, num_obs, num_states, mb_dict, prior=None, num_iter=10, dF=1.0, dF_tol=0.001, compute_vfe=True): + """ + Update marginal posterior beliefs over hidden states using mean-field variational inference, via + fixed point iteration. + + Parameters + ---------- + A: ``numpy.ndarray`` of dtype object + Sensory likelihood mapping or 'observation model', mapping from hidden states to observations. Each element ``A[m]`` of + stores an ``np.ndarray`` multidimensional array for observation modality ``m``, whose entries ``A[m][i, j, k, ...]`` store + the probability of observation level ``i`` given hidden state levels ``j, k, ...`` + obs: numpy 1D array or numpy ndarray of dtype object + The observation (generated by the environment). If single modality, this should be a 1D ``np.ndarray`` + (one-hot vector representation). If multi-modality, this should be ``np.ndarray`` of dtype object whose entries are 1D one-hot vectors. + num_obs: ``list`` of ints + List of dimensionalities of each observation modality + num_states: ``list`` of ints + List of dimensionalities of each hidden state factor + mb_dict: ``Dict`` + Dictionary with two keys (``A_factor_list`` and ``A_modality_list``), that stores the factor indices that influence each modality (``A_factor_list``) + and the modality indices influenced by each factor (``A_modality_list``). + prior: numpy ndarray of dtype object, default None + Prior over hidden states. If absent, prior is set to be the log uniform distribution over hidden states (identical to the + initialisation of the posterior) + num_iter: int, default 10 + Number of variational fixed-point iterations to run until convergence. + dF: float, default 1.0 + Initial free energy gradient (dF/dt) before updating in the course of gradient descent. + dF_tol: float, default 0.001 + Threshold value of the time derivative of the variational free energy (dF/dt), to be checked at + each iteration. If dF <= dF_tol, the iterations are halted pre-emptively and the final + marginal posterior belief(s) is(are) returned + compute_vfe: bool, default True + Whether to compute the variational free energy at each iteration. If False, the function runs through + all variational iterations. + + Returns + ---------- + qs: numpy 1D array, numpy ndarray of dtype object, optional + Marginal posterior beliefs over hidden states at current timepoint + """ + + # get model dimensions + n_modalities = len(num_obs) + n_factors = len(num_states) + + """ + =========== Step 1 =========== + Generate modality-specific log-likelihood tensors (will be tensors of different-shapes, + where `likelihood[m].ndim` will be equal to `len(mb_dict['A_factor_list'][m])` + """ + + likelihood = obj_array(n_modalities) + obs = to_obj_array(obs) + for (m, A_m) in enumerate(A): + likelihood[m] = dot_likelihood(A_m, obs[m]) + + log_likelihood = spm_log_obj_array(likelihood) + + """ + =========== Step 2 =========== + Create a flat posterior (and prior if necessary) + """ + + qs = obj_array_uniform(num_states) + + """ + If prior is not provided, initialise prior to be identical to posterior + (namely, a flat categorical distribution). Take the logarithm of it (required for + FPI algorithm below). + """ + if prior is None: + prior = obj_array_uniform(num_states) + + prior = spm_log_obj_array(prior) # log the prior + + + """ + =========== Step 3 =========== + Initialize initial free energy + """ + prev_vfe = calc_free_energy(qs, prior, n_factors) + + """ + =========== Step 4 =========== + If we have a single factor, we can just add prior and likelihood because there is a unique FE minimum that can reached instantaneously, + otherwise we run fixed point iteration + """ + + if n_factors == 1: + + joint_loglikelihood = np.zeros(tuple(num_states)) + for m in range(n_modalities): + joint_loglikelihood += log_likelihood[m] # add up all the log-likelihoods, since we know they will all have the same dimension in the case of a single hidden state factor + qL = spm_dot(joint_loglikelihood, qs, [0]) + + qs = to_obj_array(softmax(qL + prior[0])) + + else: + """ + =========== Step 5 =========== + Run the factorized FPI scheme + """ + + A_factor_list, A_modality_list = mb_dict['A_factor_list'], mb_dict['A_modality_list'] + + if compute_vfe: + joint_loglikelihood = np.zeros(tuple(num_states)) + for m in range(n_modalities): + reshape_dims = n_factors*[1] + for _f_id in A_factor_list[m]: + reshape_dims[_f_id] = num_states[_f_id] + + joint_loglikelihood += log_likelihood[m].reshape(reshape_dims) # add up all the log-likelihoods after reshaping them to the global common dimensions of all hidden state factors + + curr_iter = 0 + + # change stop condition for fixed point iterations based on whether we are computing the variational free energy or not + condition_check_both = lambda curr_iter, dF: curr_iter < num_iter and dF >= dF_tol + condition_check_just_numiter = lambda curr_iter, dF: curr_iter < num_iter + check_stop_condition = condition_check_both if compute_vfe else condition_check_just_numiter + + while check_stop_condition(curr_iter, dF): + + # vfe = 0 + + qs_new = obj_array(n_factors) + for f in range(n_factors): + + ''' + Sum the expected log likelihoods E_q(s_i/f)[ln P(o=obs[m]|s)] for independent modalities together, + since they may have differing dimension. This obtains a marginal log-likelihood for the current factor index `factor`, + which includes the evidence for that particular factor afforded by the different modalities. + ''' + + qL = np.zeros(num_states[f]) + + for ii, m in enumerate(A_modality_list[f]): + + qL += spm_dot(log_likelihood[m], qs[A_factor_list[m]], [A_factor_list[m].index(f)]) + + qs_new[f] = softmax(qL + prior[f]) + + # vfe -= qL.sum() # accuracy part of vfe, sum of factor-level expected energies E_q(s_i/f)[ln P(o=obs|s)] + + qs = deepcopy(qs_new) + # print(f'Posteriors at iteration {curr_iter}:\n') + # print(qs[0]) + # print(qs[1]) + # calculate new free energy, leaving out the accuracy term + # vfe += calc_free_energy(qs, prior, n_factors) + + if compute_vfe: + vfe = calc_free_energy(qs, prior, n_factors, likelihood=joint_loglikelihood) + + # print(f'VFE at iteration {curr_iter}: {vfe}\n') + # stopping condition - time derivative of free energy + dF = np.abs(prev_vfe - vfe) + prev_vfe = vfe + + curr_iter += 1 + + return qs + def _run_vanilla_fpi_faster(A, obs, n_observations, n_states, prior=None, num_iter=10, dF=1.0, dF_tol=0.001): """ diff --git a/pymdp/algos/mmp.py b/pymdp/algos/mmp.py index e38b5b7f..019e81df 100644 --- a/pymdp/algos/mmp.py +++ b/pymdp/algos/mmp.py @@ -4,10 +4,9 @@ import numpy as np from pymdp.utils import to_obj_array, get_model_dimensions, obj_array, obj_array_zeros, obj_array_uniform -from pymdp.maths import spm_dot, spm_norm, softmax, calc_free_energy, spm_log_single +from pymdp.maths import spm_dot, spm_norm, softmax, calc_free_energy, spm_log_single, factor_dot_flex import copy - def run_mmp( lh_seq, B, policy, prev_actions=None, prior=None, num_iter=10, grad_descent=True, tau=0.25, last_timestep = False): """ @@ -90,6 +89,7 @@ def run_mmp( # likelihood if t < past_len: lnA = spm_log_single(spm_dot(lh_seq[t], qs_seq[t], [f])) + print(f'Enumerated version: lnA at time {t}: {lnA}') else: lnA = np.zeros(num_states[f]) @@ -113,7 +113,7 @@ def run_mmp( lnqs = spm_log_single(sx) coeff = 1 if (t >= future_cutoff) else 2 err = (coeff * lnA + lnB_past + lnB_future) - coeff * lnqs - lnqs = lnqs + tau * (err - err.mean()) + lnqs = lnqs + tau * (err - err.mean()) # for numerical stability, before passing into the softmax qs_seq[t][f] = softmax(lnqs) if (t == 0) or (t == (infer_len-1)): F += sx.dot(0.5*err) @@ -131,6 +131,170 @@ def run_mmp( return qs_seq, F +def run_mmp_factorized( + lh_seq, mb_dict, B, B_factor_list, policy, prev_actions=None, prior=None, num_iter=10, grad_descent=True, tau=0.25, last_timestep = False): + """ + Marginal message passing scheme for updating marginal posterior beliefs about hidden states over time, + conditioned on a particular policy. + + Parameters + ---------- + lh_seq: ``numpy.ndarray`` of dtype object + Log likelihoods of hidden states under a sequence of observations over time. This is assumed to already be log-transformed. Each ``lh_seq[t]`` contains + the log likelihood of hidden states for a particular observation at time ``t`` + mb_dict: ``Dict`` + Dictionary with two keys (``A_factor_list`` and ``A_modality_list``), that stores the factor indices that influence each modality (``A_factor_list``) + and the modality indices influenced by each factor (``A_modality_list``). + B: ``numpy.ndarray`` of dtype object + Dynamics likelihood mapping or 'transition model', mapping from hidden states at ``t`` to hidden states at ``t+1``, given some control state ``u``. + Each element ``B[f]`` of this object array stores a 3-D tensor for hidden state factor ``f``, whose entries ``B[f][s, v, u]`` store the probability + of hidden state level ``s`` at the current time, given hidden state level ``v`` and action ``u`` at the previous time. + B_factor_list: ``list`` of ``list`` of ``int`` + List of lists of hidden state factors each hidden state factor depends on. Each element ``B_factor_list[i]`` is a list of the factor indices that factor i's dynamics depend on. + policy: 2D ``numpy.ndarray`` + Matrix of shape ``(policy_len, num_control_factors)`` that indicates the indices of each action (control state index) upon timestep ``t`` and control_factor ``f` in the element ``policy[t,f]`` for a given policy. + prev_actions: ``numpy.ndarray``, default None + If provided, should be a matrix of previous actions of shape ``(infer_len, num_control_factors)`` that indicates the indices of each action (control state index) taken in the past (up until the current timestep). + prior: ``numpy.ndarray`` of dtype object, default None + If provided, the prior beliefs about initial states (at t = 0, relative to ``infer_len``). If ``None``, this defaults + to a flat (uninformative) prior over hidden states. + numiter: int, default 10 + Number of variational iterations. + grad_descent: Bool, default True + Flag for whether to use gradient descent (free energy gradient updates) instead of fixed point solution to the posterior beliefs + tau: float, default 0.25 + Decay constant for use in ``grad_descent`` version. Tunes the size of the gradient descent updates to the posterior. + last_timestep: Bool, default False + Flag for whether we are at the last timestep of belief updating + + Returns + --------- + qs_seq: ``numpy.ndarray`` of dtype object + Posterior beliefs over hidden states under the policy. Nesting structure is timepoints, factors, + where e.g. ``qs_seq[t][f]`` stores the marginal belief about factor ``f`` at timepoint ``t`` under the policy in question. + F: float + Variational free energy of the policy. + """ + + # window + past_len = len(lh_seq) + future_len = policy.shape[0] + + if last_timestep: + infer_len = past_len + future_len - 1 + else: + infer_len = past_len + future_len + + future_cutoff = past_len + future_len - 2 + + # dimensions + _, num_states, _, num_factors = get_model_dimensions(A=None, B=B) + + # beliefs + qs_seq = obj_array(infer_len) + for t in range(infer_len): + qs_seq[t] = obj_array_uniform(num_states) + + # last message + qs_T = obj_array_zeros(num_states) + + # prior + if prior is None: + prior = obj_array_uniform(num_states) + + # transposed transition + trans_B = obj_array(num_factors) + + for f in range(num_factors): + trans_B[f] = spm_norm(np.swapaxes(B[f],0,1)) + + if prev_actions is not None: + policy = np.vstack((prev_actions, policy)) + + A_factor_list, A_modality_list = mb_dict['A_factor_list'], mb_dict['A_modality_list'] + + joint_lh_seq = obj_array(len(lh_seq)) + num_modalities = len(A_factor_list) + for t in range(len(lh_seq)): + joint_loglikelihood = np.zeros(tuple(num_states)) + for m in range(num_modalities): + reshape_dims = num_factors*[1] + for _f_id in A_factor_list[m]: + reshape_dims[_f_id] = num_states[_f_id] + joint_loglikelihood += lh_seq[t][m].reshape(reshape_dims) # add up all the log-likelihoods after reshaping them to the global common dimensions of all hidden state factors + joint_lh_seq[t] = joint_loglikelihood + + # compute inverse B dependencies, which is a list that for each hidden state factor, lists the indices of the other hidden state factors that it 'drives' or is a parent of in the HMM graphical model + inv_B_deps = [[i for i, d in enumerate(B_factor_list) if f in d] for f in range(num_factors)] + for itr in range(num_iter): + F = 0.0 # reset variational free energy (accumulated over time and factors, but reset per iteration) + for t in range(infer_len): + for f in range(num_factors): + # likelihood + lnA = np.zeros(num_states[f]) + if t < past_len: + for m in A_modality_list[f]: + lnA += spm_log_single(spm_dot(lh_seq[t][m], qs_seq[t][A_factor_list[m]], [A_factor_list[m].index(f)])) + print(f'Factorized version: lnA at time {t}: {lnA}') + + # past message + if t == 0: + lnB_past = spm_log_single(prior[f]) + else: + past_msg = spm_dot(B[f][...,int(policy[t - 1, f])], qs_seq[t-1][B_factor_list[f]]) + lnB_past = spm_log_single(past_msg) + + # future message + if t >= future_cutoff: + lnB_future = qs_T[f] + else: + # list of future_msgs, one for each of the factors that factor f is driving + + B_marg_list = [] # list of the marginalized B matrices, that correspond to mapping between the factor of interest `f` and each of its children factors `i` + for i in inv_B_deps[f]: #loop over all the hidden state factors that are driven by f + b = B[i][...,int(policy[t,i])] + keep_dims = (0,1+B_factor_list[i].index(f)) + dims = [] + idxs = [] + for j, d in enumerate(B_factor_list[i]): # loop over the list of factors that drive each child `i` of factor-of-interest `f` (i.e. the co-parents of `f`, with respect to child `i`) + if f != d: + dims.append((1 + j,)) + idxs.append(d) + xs = [qs_seq[t+1][f_i] for f_i in idxs] + B_marg_list.append( factor_dot_flex(b, xs, tuple(dims), keep_dims=keep_dims) ) # marginalize out all parents of `i` besides `f` + + lnB_future = np.zeros(num_states[f]) + for i, b in enumerate(B_marg_list): + b_norm_T = spm_norm(b.T) + lnB_future += spm_log_single(b_norm_T.dot(qs_seq[t + 1][inv_B_deps[f][i]])) + + + lnB_future *= 0.5 + + # inference + if grad_descent: + sx = qs_seq[t][f] # save this as a separate variable so that it can be used in VFE computation + lnqs = spm_log_single(sx) + coeff = 1 if (t >= future_cutoff) else 2 + err = (coeff * lnA + lnB_past + lnB_future) - coeff * lnqs + lnqs = lnqs + tau * (err - err.mean()) + qs_seq[t][f] = softmax(lnqs) + if (t == 0) or (t == (infer_len-1)): + F += sx.dot(0.5*err) + else: + F += sx.dot(0.5*(err - (num_factors - 1)*lnA/num_factors)) # @NOTE: not sure why Karl does this in SPM_MDP_VB_X, we should look into this + else: + qs_seq[t][f] = softmax(lnA + lnB_past + lnB_future) + + if not grad_descent: + + if t < past_len: + F += calc_free_energy(qs_seq[t], prior, num_factors, likelihood = spm_log_single(joint_lh_seq[t]) ) + else: + F += calc_free_energy(qs_seq[t], prior, num_factors) + + return qs_seq, F + def _run_mmp_testing( lh_seq, B, policy, prev_actions=None, prior=None, num_iter=10, grad_descent=True, tau=0.25, last_timestep = False): """ diff --git a/pymdp/control.py b/pymdp/control.py index 497dd30a..ba7a218f 100644 --- a/pymdp/control.py +++ b/pymdp/control.py @@ -5,7 +5,8 @@ import itertools import numpy as np -from pymdp.maths import softmax, softmax_obj_arr, spm_dot, spm_wnorm, spm_MDP_G, spm_log_single, spm_log_obj_array +from pymdp.maths import softmax, softmax_obj_arr, spm_dot, spm_wnorm, spm_MDP_G, spm_log_single, kl_div, entropy +from pymdp.inference import update_posterior_states_factorized, average_states_over_policies from pymdp import utils import copy @@ -21,8 +22,9 @@ def update_posterior_policies_full( prior=None, pA=None, pB=None, - F = None, - E = None, + F=None, + E=None, + I=None, gamma=16.0 ): """ @@ -67,6 +69,9 @@ def update_posterior_policies_full( Vector of variational free energies for each policy E: 1D ``numpy.ndarray``, default ``None`` Vector of prior probabilities of each policy (what's referred to in the active inference literature as "habits"). If ``None``, this defaults to a flat (uninformative) prior over policies. + I: ``numpy.ndarray`` of dtype object + For each state factor, contains a 2D ``numpy.ndarray`` whose element i,j yields the probability + of reaching the goal state backwards from state j after i steps. gamma: ``float``, default 16.0 Prior precision over policies, scales the contribution of the expected free energy to the posterior over policies @@ -100,6 +105,9 @@ def update_posterior_policies_full( else: lnE = spm_log_single(E) + if I is not None: + init_qs_all_pi = [qs_seq_pi[p][0] for p in range(num_policies)] + qs_bma = average_states_over_policies(init_qs_all_pi, softmax(E)) for p_idx, policy in enumerate(policies): @@ -116,11 +124,144 @@ def update_posterior_policies_full( G[p_idx] += calc_pA_info_gain(pA, qo_seq_pi[p_idx], qs_seq_pi[p_idx]) if pB is not None: G[p_idx] += calc_pB_info_gain(pB, qs_seq_pi[p_idx], prior, policy) + + if I is not None: + G[p_idx] += calc_inductive_cost(qs_bma, qs_seq_pi[p_idx], I) q_pi = softmax(G * gamma - F + lnE) return q_pi, G +def update_posterior_policies_full_factorized( + qs_seq_pi, + A, + B, + C, + A_factor_list, + B_factor_list, + policies, + use_utility=True, + use_states_info_gain=True, + use_param_info_gain=False, + prior=None, + pA=None, + pB=None, + F=None, + E=None, + I=None, + gamma=16.0 +): + """ + Update posterior beliefs about policies by computing expected free energy of each policy and integrating that + with the variational free energy of policies ``F`` and prior over policies ``E``. This is intended to be used in conjunction + with the ``update_posterior_states_full`` method of ``inference.py``, since the full posterior over future timesteps, under all policies, is + assumed to be provided in the input array ``qs_seq_pi``. + + Parameters + ---------- + qs_seq_pi: ``numpy.ndarray`` of dtype object + Posterior beliefs over hidden states for each policy. Nesting structure is policies, timepoints, factors, + where e.g. ``qs_seq_pi[p][t][f]`` stores the marginal belief about factor ``f`` at timepoint ``t`` under policy ``p``. + A: ``numpy.ndarray`` of dtype object + Sensory likelihood mapping or 'observation model', mapping from hidden states to observations. Each element ``A[m]`` of + stores an ``numpy.ndarray`` multidimensional array for observation modality ``m``, whose entries ``A[m][i, j, k, ...]`` store + the probability of observation level ``i`` given hidden state levels ``j, k, ...`` + B: ``numpy.ndarray`` of dtype object + Dynamics likelihood mapping or 'transition model', mapping from hidden states at ``t`` to hidden states at ``t+1``, given some control state ``u``. + Each element ``B[f]`` of this object array stores a 3-D tensor for hidden state factor ``f``, whose entries ``B[f][s, v, u]`` store the probability + of hidden state level ``s`` at the current time, given hidden state level ``v`` and action ``u`` at the previous time. + C: ``numpy.ndarray`` of dtype object + Prior over observations or 'prior preferences', storing the "value" of each outcome in terms of relative log probabilities. + This is softmaxed to form a proper probability distribution before being used to compute the expected utility term of the expected free energy. + A_factor_list: ``list`` of ``list``s of ``int`` + ``list`` that stores the indices of the hidden state factor indices that each observation modality depends on. For example, if ``A_factor_list[m] = [0, 1]``, then + observation modality ``m`` depends on hidden state factors 0 and 1. + B_factor_list: ``list`` of ``list``s of ``int`` + ``list`` that stores the indices of the hidden state factor indices that each hidden state factor depends on. For example, if ``B_factor_list[f] = [0, 1]``, then + the transitions in hidden state factor ``f`` depend on hidden state factors 0 and 1. + policies: ``list`` of 2D ``numpy.ndarray`` + ``list`` that stores each policy in ``policies[p_idx]``. Shape of ``policies[p_idx]`` is ``(num_timesteps, num_factors)`` where `num_timesteps` is the temporal + depth of the policy and ``num_factors`` is the number of control factors. + use_utility: ``Bool``, default ``True`` + Boolean flag that determines whether expected utility should be incorporated into computation of EFE. + use_states_info_gain: ``Bool``, default ``True`` + Boolean flag that determines whether state epistemic value (info gain about hidden states) should be incorporated into computation of EFE. + use_param_info_gain: ``Bool``, default ``False`` + Boolean flag that determines whether parameter epistemic value (info gain about generative model parameters) should be incorporated into computation of EFE. + prior: ``numpy.ndarray`` of dtype object, default ``None`` + If provided, this is a ``numpy`` object array with one sub-array per hidden state factor, that stores the prior beliefs about initial states. + If ``None``, this defaults to a flat (uninformative) prior over hidden states. + pA: ``numpy.ndarray`` of dtype object, default ``None`` + Dirichlet parameters over observation model (same shape as ``A``) + pB: ``numpy.ndarray`` of dtype object, default ``None`` + Dirichlet parameters over transition model (same shape as ``B``) + F: 1D ``numpy.ndarray``, default ``None`` + Vector of variational free energies for each policy + E: 1D ``numpy.ndarray``, default ``None`` + Vector of prior probabilities of each policy (what's referred to in the active inference literature as "habits"). If ``None``, this defaults to a flat (uninformative) prior over policies. + I: ``numpy.ndarray`` of dtype object + For each state factor, contains a 2D ``numpy.ndarray`` whose element i,j yields the probability + of reaching the goal state backwards from state j after i steps. + gamma: ``float``, default 16.0 + Prior precision over policies, scales the contribution of the expected free energy to the posterior over policies + + Returns + ---------- + q_pi: 1D ``numpy.ndarray`` + Posterior beliefs over policies, i.e. a vector containing one posterior probability per policy. + G: 1D ``numpy.ndarray`` + Negative expected free energies of each policy, i.e. a vector containing one negative expected free energy per policy. + """ + + num_obs, num_states, num_modalities, num_factors = utils.get_model_dimensions(A, B) + horizon = len(qs_seq_pi[0]) + num_policies = len(qs_seq_pi) + + qo_seq = utils.obj_array(horizon) + for t in range(horizon): + qo_seq[t] = utils.obj_array_zeros(num_obs) + + # initialise expected observations + qo_seq_pi = utils.obj_array(num_policies) + + # initialize (negative) expected free energies for all policies + G = np.zeros(num_policies) + + if F is None: + F = spm_log_single(np.ones(num_policies) / num_policies) + + if E is None: + lnE = spm_log_single(np.ones(num_policies) / num_policies) + else: + lnE = spm_log_single(E) + + if I is not None: + init_qs_all_pi = [qs_seq_pi[p][0] for p in range(num_policies)] + qs_bma = average_states_over_policies(init_qs_all_pi, softmax(E)) + + for p_idx, policy in enumerate(policies): + + qo_seq_pi[p_idx] = get_expected_obs_factorized(qs_seq_pi[p_idx], A, A_factor_list) + + if use_utility: + G[p_idx] += calc_expected_utility(qo_seq_pi[p_idx], C) + + if use_states_info_gain: + G[p_idx] += calc_states_info_gain_factorized(A, qs_seq_pi[p_idx], A_factor_list) + + if use_param_info_gain: + if pA is not None: + G[p_idx] += calc_pA_info_gain_factorized(pA, qo_seq_pi[p_idx], qs_seq_pi[p_idx], A_factor_list) + if pB is not None: + G[p_idx] += calc_pB_info_gain_interactions(pB, qs_seq_pi[p_idx], qs_seq_pi[p_idx], B_factor_list, policy) + + if I is not None: + G[p_idx] += calc_inductive_cost(qs_bma, qs_seq_pi[p_idx], I) + + q_pi = softmax(G * gamma - F + lnE) + + return q_pi, G + def update_posterior_policies( qs, @@ -133,7 +274,8 @@ def update_posterior_policies( use_param_info_gain=False, pA=None, pB=None, - E = None, + E=None, + I=None, gamma=16.0 ): """ @@ -173,6 +315,9 @@ def update_posterior_policies( Dirichlet parameters over transition model (same shape as ``B``) E: 1D ``numpy.ndarray``, optional Vector of prior probabilities of each policy (what's referred to in the active inference literature as "habits") + I: ``numpy.ndarray`` of dtype object + For each state factor, contains a 2D ``numpy.ndarray`` whose element i,j yields the probability + of reaching the goal state backwards from state j after i steps. gamma: float, default 16.0 Prior precision over policies, scales the contribution of the expected free energy to the posterior over policies @@ -205,9 +350,118 @@ def update_posterior_policies( if use_param_info_gain: if pA is not None: - G[idx] += calc_pA_info_gain(pA, qo_pi, qs_pi) + G[idx] += calc_pA_info_gain(pA, qo_pi, qs_pi).item() if pB is not None: - G[idx] += calc_pB_info_gain(pB, qs_pi, qs, policy) + G[idx] += calc_pB_info_gain(pB, qs_pi, qs, policy).item() + + if I is not None: + G[idx] += calc_inductive_cost(qs, qs_pi, I) + + q_pi = softmax(G * gamma + lnE) + + return q_pi, G + +def update_posterior_policies_factorized( + qs, + A, + B, + C, + A_factor_list, + B_factor_list, + policies, + use_utility=True, + use_states_info_gain=True, + use_param_info_gain=False, + pA=None, + pB=None, + E=None, + I=None, + gamma=16.0 +): + """ + Update posterior beliefs about policies by computing expected free energy of each policy and integrating that + with the prior over policies ``E``. This is intended to be used in conjunction + with the ``update_posterior_states`` method of the ``inference`` module, since only the posterior about the hidden states at the current timestep + ``qs`` is assumed to be provided, unconditional on policies. The predictive posterior over hidden states under all policies Q(s, pi) is computed + using the starting posterior about states at the current timestep ``qs`` and the generative model (e.g. ``A``, ``B``, ``C``) + + Parameters + ---------- + qs: ``numpy.ndarray`` of dtype object + Marginal posterior beliefs over hidden states at current timepoint (unconditioned on policies) + A: ``numpy.ndarray`` of dtype object + Sensory likelihood mapping or 'observation model', mapping from hidden states to observations. Each element ``A[m]`` of + stores an ``numpy.ndarray`` multidimensional array for observation modality ``m``, whose entries ``A[m][i, j, k, ...]`` store + the probability of observation level ``i`` given hidden state levels ``j, k, ...`` + B: ``numpy.ndarray`` of dtype object + Dynamics likelihood mapping or 'transition model', mapping from hidden states at ``t`` to hidden states at ``t+1``, given some control state ``u``. + Each element ``B[f]`` of this object array stores a 3-D tensor for hidden state factor ``f``, whose entries ``B[f][s, v, u]`` store the probability + of hidden state level ``s`` at the current time, given hidden state level ``v`` and action ``u`` at the previous time. + C: ``numpy.ndarray`` of dtype object + Prior over observations or 'prior preferences', storing the "value" of each outcome in terms of relative log probabilities. + This is softmaxed to form a proper probability distribution before being used to compute the expected utility term of the expected free energy. + A_factor_list: ``list`` of ``list``s of ``int`` + ``list`` that stores the indices of the hidden state factor indices that each observation modality depends on. For example, if ``A_factor_list[m] = [0, 1]``, then + observation modality ``m`` depends on hidden state factors 0 and 1. + B_factor_list: ``list`` of ``list``s of ``int`` + ``list`` that stores the indices of the hidden state factor indices that each hidden state factor depends on. For example, if ``B_factor_list[f] = [0, 1]``, then + the transitions in hidden state factor ``f`` depend on hidden state factors 0 and 1. + policies: ``list`` of 2D ``numpy.ndarray`` + ``list`` that stores each policy in ``policies[p_idx]``. Shape of ``policies[p_idx]`` is ``(num_timesteps, num_factors)`` where `num_timesteps` is the temporal + depth of the policy and ``num_factors`` is the number of control factors. + use_utility: ``Bool``, default ``True`` + Boolean flag that determines whether expected utility should be incorporated into computation of EFE. + use_states_info_gain: ``Bool``, default ``True`` + Boolean flag that determines whether state epistemic value (info gain about hidden states) should be incorporated into computation of EFE. + use_param_info_gain: ``Bool``, default ``False`` + Boolean flag that determines whether parameter epistemic value (info gain about generative model parameters) should be incorporated into computation of EFE. + pA: ``numpy.ndarray`` of dtype object, optional + Dirichlet parameters over observation model (same shape as ``A``) + pB: ``numpy.ndarray`` of dtype object, optional + Dirichlet parameters over transition model (same shape as ``B``) + E: 1D ``numpy.ndarray``, optional + Vector of prior probabilities of each policy (what's referred to in the active inference literature as "habits") + I: ``numpy.ndarray`` of dtype object + For each state factor, contains a 2D ``numpy.ndarray`` whose element i,j yields the probability + of reaching the goal state backwards from state j after i steps. + gamma: float, default 16.0 + Prior precision over policies, scales the contribution of the expected free energy to the posterior over policies + + Returns + ---------- + q_pi: 1D ``numpy.ndarray`` + Posterior beliefs over policies, i.e. a vector containing one posterior probability per policy. + G: 1D ``numpy.ndarray`` + Negative expected free energies of each policy, i.e. a vector containing one negative expected free energy per policy. + """ + + n_policies = len(policies) + G = np.zeros(n_policies) + q_pi = np.zeros((n_policies, 1)) + + if E is None: + lnE = spm_log_single(np.ones(n_policies) / n_policies) + else: + lnE = spm_log_single(E) + + for idx, policy in enumerate(policies): + qs_pi = get_expected_states_interactions(qs, B, B_factor_list, policy) + qo_pi = get_expected_obs_factorized(qs_pi, A, A_factor_list) + + if use_utility: + G[idx] += calc_expected_utility(qo_pi, C) + + if use_states_info_gain: + G[idx] += calc_states_info_gain_factorized(A, qs_pi, A_factor_list) + + if use_param_info_gain: + if pA is not None: + G[idx] += calc_pA_info_gain_factorized(pA, qo_pi, qs_pi, A_factor_list).item() + if pB is not None: + G[idx] += calc_pB_info_gain_interactions(pB, qs_pi, qs, B_factor_list, policy).item() + + if I is not None: + G[idx] += calc_inductive_cost(qs, qs_pi, I) q_pi = softmax(G * gamma + lnE) @@ -247,8 +501,45 @@ def get_expected_states(qs, B, policy): qs_pi[t+1][control_factor] = B[control_factor][:,:,int(action)].dot(qs_pi[t][control_factor]) return qs_pi[1:] - + +def get_expected_states_interactions(qs, B, B_factor_list, policy): + """ + Compute the expected states under a policy, also known as the posterior predictive density over states + Parameters + ---------- + qs: ``numpy.ndarray`` of dtype object + Marginal posterior beliefs over hidden states at a given timepoint. + B: ``numpy.ndarray`` of dtype object + Dynamics likelihood mapping or 'transition model', mapping from hidden states at ``t`` to hidden states at ``t+1``, given some control state ``u``. + Each element ``B[f]`` of this object array stores a 3-D tensor for hidden state factor ``f``, whose entries ``B[f][s, v, u]`` store the probability + of hidden state level ``s`` at the current time, given hidden state level ``v`` and action ``u`` at the previous time. + B_factor_list: ``list`` of ``list`` of ``int`` + List of lists of hidden state factors each hidden state factor depends on. Each element ``B_factor_list[i]`` is a list of the factor indices that factor i's dynamics depend on. + policy: 2D ``numpy.ndarray`` + Array that stores actions entailed by a policy over time. Shape is ``(num_timesteps, num_factors)`` where ``num_timesteps`` is the temporal + depth of the policy and ``num_factors`` is the number of control factors. + + Returns + ------- + qs_pi: ``list`` of ``numpy.ndarray`` of dtype object + Predictive posterior beliefs over hidden states expected under the policy, where ``qs_pi[t]`` stores the beliefs about + hidden states expected under the policy at time ``t`` + """ + n_steps = policy.shape[0] + n_factors = policy.shape[1] + + # initialise posterior predictive density as a list of beliefs over time, including current posterior beliefs about hidden states as the first element + qs_pi = [qs] + [utils.obj_array(n_factors) for t in range(n_steps)] + + # get expected states over time + for t in range(n_steps): + for control_factor, action in enumerate(policy[t,:]): + factor_idx = B_factor_list[control_factor] # list of the hidden state factor indices that the dynamics of `qs[control_factor]` depend on + qs_pi[t+1][control_factor] = spm_dot(B[control_factor][...,int(action)], qs_pi[t][factor_idx]) + + return qs_pi[1:] + def get_expected_obs(qs_pi, A): """ Compute the expected observations under a policy, also known as the posterior predictive density over observations @@ -286,6 +577,45 @@ def get_expected_obs(qs_pi, A): return qo_pi +def get_expected_obs_factorized(qs_pi, A, A_factor_list): + """ + Compute the expected observations under a policy, also known as the posterior predictive density over observations + + Parameters + ---------- + qs_pi: ``list`` of ``numpy.ndarray`` of dtype object + Predictive posterior beliefs over hidden states expected under the policy, where ``qs_pi[t]`` stores the beliefs about + hidden states expected under the policy at time ``t`` + A: ``numpy.ndarray`` of dtype object + Sensory likelihood mapping or 'observation model', mapping from hidden states to observations. Each element ``A[m]`` of + stores an ``numpy.ndarray`` multidimensional array for observation modality ``m``, whose entries ``A[m][i, j, k, ...]`` store + the probability of observation level ``i`` given hidden state levels ``j, k, ...`` + A_factor_list: ``list`` of ``list`` of ``int`` + List of lists of hidden state factor indices that each observation modality depends on. Each element ``A_factor_list[i]`` is a list of the factor indices that modality i's observation model depends on. + Returns + ------- + qo_pi: ``list`` of ``numpy.ndarray`` of dtype object + Predictive posterior beliefs over observations expected under the policy, where ``qo_pi[t]`` stores the beliefs about + observations expected under the policy at time ``t`` + """ + + n_steps = len(qs_pi) # each element of the list is the PPD at a different timestep + + # initialise expected observations + qo_pi = [] + + for t in range(n_steps): + qo_pi_t = utils.obj_array(len(A)) + qo_pi.append(qo_pi_t) + + # compute expected observations over time + for t in range(n_steps): + for modality, A_m in enumerate(A): + factor_idx = A_factor_list[modality] # list of the hidden state factor indices that observation modality with the index `modality` depends on + qo_pi[t][modality] = spm_dot(A_m, qs_pi[t][factor_idx]) + + return qo_pi + def calc_expected_utility(qo_pi, C): """ Computes the expected utility of a policy, using the observation distribution expected under that policy and a prior preference vector. @@ -360,6 +690,39 @@ def calc_states_info_gain(A, qs_pi): return states_surprise +def calc_states_info_gain_factorized(A, qs_pi, A_factor_list): + """ + Computes the Bayesian surprise or information gain about states of a policy, + using the observation model and the hidden state distribution expected under that policy. + + Parameters + ---------- + A: ``numpy.ndarray`` of dtype object + Sensory likelihood mapping or 'observation model', mapping from hidden states to observations. Each element ``A[m]`` of + stores an ``numpy.ndarray`` multidimensional array for observation modality ``m``, whose entries ``A[m][i, j, k, ...]`` store + the probability of observation level ``i`` given hidden state levels ``j, k, ...`` + qs_pi: ``list`` of ``numpy.ndarray`` of dtype object + Predictive posterior beliefs over hidden states expected under the policy, where ``qs_pi[t]`` stores the beliefs about + hidden states expected under the policy at time ``t`` + A_factor_list: ``list`` of ``list`` of ``int`` + List of lists, where ``A_factor_list[m]`` is a list of the hidden state factor indices that observation modality with the index ``m`` depends on + + Returns + ------- + states_surprise: float + Bayesian surprise (about states) or salience expected under the policy in question + """ + + n_steps = len(qs_pi) + + states_surprise = 0 + for t in range(n_steps): + for m, A_m in enumerate(A): + factor_idx = A_factor_list[m] # list of the hidden state factor indices that observation modality with the index `m` depends on + states_surprise += spm_MDP_G(A_m, qs_pi[t][factor_idx]) + + return states_surprise + def calc_pA_info_gain(pA, qo_pi, qs_pi): """ @@ -398,6 +761,46 @@ def calc_pA_info_gain(pA, qo_pi, qs_pi): return pA_infogain +def calc_pA_info_gain_factorized(pA, qo_pi, qs_pi, A_factor_list): + """ + Compute expected Dirichlet information gain about parameters ``pA`` under a policy. + In this version of the function, we assume that the observation model is factorized, i.e. that each observation modality depends on a subset of the hidden state factors. + + Parameters + ---------- + pA: ``numpy.ndarray`` of dtype object + Dirichlet parameters over observation model (same shape as ``A``) + qo_pi: ``list`` of ``numpy.ndarray`` of dtype object + Predictive posterior beliefs over observations expected under the policy, where ``qo_pi[t]`` stores the beliefs about + observations expected under the policy at time ``t`` + qs_pi: ``list`` of ``numpy.ndarray`` of dtype object + Predictive posterior beliefs over hidden states expected under the policy, where ``qs_pi[t]`` stores the beliefs about + hidden states expected under the policy at time ``t`` + A_factor_list: ``list`` of ``list`` of ``int`` + List of lists, where ``A_factor_list[m]`` is a list of the hidden state factor indices that observation modality with the index ``m`` depends on + + Returns + ------- + infogain_pA: float + Surprise (about Dirichlet parameters) expected under the policy in question + """ + + n_steps = len(qo_pi) + + num_modalities = len(pA) + wA = utils.obj_array(num_modalities) + for modality, pA_m in enumerate(pA): + wA[modality] = spm_wnorm(pA[modality]) + + pA_infogain = 0 + + for modality in range(num_modalities): + wA_modality = wA[modality] * (pA[modality] > 0).astype("float") + factor_idx = A_factor_list[modality] + for t in range(n_steps): + pA_infogain -= qo_pi[t][modality].dot(spm_dot(wA_modality, qs_pi[t][factor_idx])[:, np.newaxis]) + + return pA_infogain def calc_pB_info_gain(pB, qs_pi, qs_prev, policy): """ @@ -450,6 +853,103 @@ def calc_pB_info_gain(pB, qs_pi, qs_prev, policy): return pB_infogain +def calc_pB_info_gain_interactions(pB, qs_pi, qs_prev, B_factor_list, policy): + """ + Compute expected Dirichlet information gain about parameters ``pB`` under a given policy + + Parameters + ---------- + pB: ``numpy.ndarray`` of dtype object + Dirichlet parameters over transition model (same shape as ``B``) + qs_pi: ``list`` of ``numpy.ndarray`` of dtype object + Predictive posterior beliefs over hidden states expected under the policy, where ``qs_pi[t]`` stores the beliefs about + hidden states expected under the policy at time ``t`` + qs_prev: ``numpy.ndarray`` of dtype object + Posterior over hidden states at beginning of trajectory (before receiving observations) + B_factor_list: ``list`` of ``list`` of ``int`` + List of lists, where ``B_factor_list[f]`` is a list of the hidden state factor indices that hidden state factor with the index ``f`` depends on + policy: 2D ``numpy.ndarray`` + Array that stores actions entailed by a policy over time. Shape is ``(num_timesteps, num_factors)`` where ``num_timesteps`` is the temporal + depth of the policy and ``num_factors`` is the number of control factors. + + Returns + ------- + infogain_pB: float + Surprise (about dirichlet parameters) expected under the policy in question + """ + + n_steps = len(qs_pi) + + num_factors = len(pB) + wB = utils.obj_array(num_factors) + for factor, pB_f in enumerate(pB): + wB[factor] = spm_wnorm(pB_f) + + pB_infogain = 0 + + for t in range(n_steps): + # the 'past posterior' used for the information gain about pB here is the posterior + # over expected states at the timestep previous to the one under consideration + # if we're on the first timestep, we just use the latest posterior in the + # entire action-perception cycle as the previous posterior + if t == 0: + previous_qs = qs_prev + # otherwise, we use the expected states for the timestep previous to the timestep under consideration + else: + previous_qs = qs_pi[t - 1] + + # get the list of action-indices for the current timestep + policy_t = policy[t, :] + for factor, a_i in enumerate(policy_t): + wB_factor_t = wB[factor][...,int(a_i)] * (pB[factor][...,int(a_i)] > 0).astype("float") + f_idx = B_factor_list[factor] + pB_infogain -= qs_pi[t][factor].dot(spm_dot(wB_factor_t, previous_qs[f_idx])) + + return pB_infogain + +def calc_inductive_cost(qs, qs_pi, I, epsilon=1e-3): + """ + Computes the inductive cost of a state. + + Parameters + ---------- + qs: ``numpy.ndarray`` of dtype object + Marginal posterior beliefs over hidden states at a given timepoint. + qs_pi: ``list`` of ``numpy.ndarray`` of dtype object + Predictive posterior beliefs over hidden states expected under the policy, where ``qs_pi[t]`` stores the beliefs about + states expected under the policy at time ``t`` + I: ``numpy.ndarray`` of dtype object + For each state factor, contains a 2D ``numpy.ndarray`` whose element i,j yields the probability + of reaching the goal state backwards from state j after i steps. + + Returns + ------- + inductive_cost: float + Cost of visited this state using backwards induction under the policy in question + """ + n_steps = len(qs_pi) + + # initialise inductive cost + inductive_cost = 0 + + # loop over time points and modalities + num_factors = len(I) + + for t in range(n_steps): + for factor in range(num_factors): + # we also assume precise beliefs here?! + idx = np.argmax(qs[factor]) + # m = arg max_n p_n < sup p + # i.e. find first I idx equals 1 and m is the index before + m = np.where(I[factor][:, idx] == 1)[0] + # we might find no path to goal (i.e. when no goal specified) + if len(m) > 0: + m = max(m[0]-1, 0) + I_m = (1-I[factor][m, :]) * np.log(epsilon) + inductive_cost += I_m.dot(qs_pi[t][factor]) + + return inductive_cost + def construct_policies(num_states, num_controls = None, policy_len=1, control_fac_idx=None): """ Generate a ``list`` of policies. The returned array ``policies`` is a ``list`` that stores one policy per entry. @@ -754,3 +1254,213 @@ def _select_highest_test(options_array, seed=None): return int(same_prob[rng.choice(len(same_prob))]) return int(same_prob[0]) + + +def backwards_induction(H, B, B_factor_list, threshold, depth): + """ + Runs backwards induction of reaching a goal state H given a transition model B. + + Parameters + ---------- + H: ``numpy.ndarray`` of dtype object + Prior over states + B: ``numpy.ndarray`` of dtype object + Dynamics likelihood mapping or 'transition model', mapping from hidden states at ``t`` to hidden states at ``t+1``, given some control state ``u``. + Each element ``B[f]`` of this object array stores a 3-D tensor for hidden state factor ``f``, whose entries ``B[f][s, v, u]`` store the probability + of hidden state level ``s`` at the current time, given hidden state level ``v`` and action ``u`` at the previous time. + B_factor_list: ``list`` of ``list`` of ``int`` + List of lists of hidden state factors each hidden state factor depends on. Each element ``B_factor_list[i]`` is a list of the factor indices that factor i's dynamics depend on. + threshold: ``float`` + The threshold for pruning transitions that are below a certain probability + depth: ``int`` + The temporal depth of the backward induction + + Returns + ---------- + I: ``numpy.ndarray`` of dtype object + For each state factor, contains a 2D ``numpy.ndarray`` whose element i,j yields the probability + of reaching the goal state backwards from state j after i steps. + """ + # TODO can this be done with arbitrary B_factor_list? + + num_factors = len(H) + I = utils.obj_array(num_factors) + for factor in range(num_factors): + I[factor] = np.zeros((depth, H[factor].shape[0])) + I[factor][0, :] = H[factor] + + bf = factor + if B_factor_list is not None: + if len(B_factor_list[factor]) > 1: + raise ValueError("Backwards induction with factorized transition model not yet implemented") + bf = B_factor_list[factor][0] + + num_states, _, _ = B[bf].shape + b = np.zeros((num_states, num_states)) + + for state in range(num_states): + for next_state in range(num_states): + # If there exists an action that allows transitioning + # from state to next_state, with probability larger than threshold + # set b[state, next_state] to 1 + if np.any(B[bf][next_state, state, :] > threshold): + b[next_state, state] = 1 + + for i in range(1, depth): + I[factor][i, :] = np.dot(b, I[factor][i-1, :]) + I[factor][i, :] = np.where(I[factor][i, :] > 0.1, 1.0, 0.0) + # TODO stop when all 1s? + + return I + +def calc_ambiguity_factorized(qs_pi, A, A_factor_list): + """ + Computes the Ambiguity term. + + Parameters + ---------- + qs_pi: ``list`` of ``numpy.ndarray`` of dtype object + Predictive posterior beliefs over hidden states expected under the policy, where ``qs_pi[t]`` stores the beliefs about + hidden states expected under the policy at time ``t`` + A: ``numpy.ndarray`` of dtype object + Sensory likelihood mapping or 'observation model', mapping from hidden states to observations. Each element ``A[m]`` of + stores an ``numpy.ndarray`` multidimensional array for observation modality ``m``, whose entries ``A[m][i, j, k, ...]`` store + the probability of observation level ``i`` given hidden state levels ``j, k, ...`` + A_factor_list: ``list`` of ``list`` of ``int`` + List of lists, where ``A_factor_list[m]`` is a list of the hidden state factor indices that observation modality with the index ``m`` depends on + + Returns + ------- + ambiguity: float + """ + + n_steps = len(qs_pi) + + ambiguity = 0 + # TODO check if we do this correctly! + H = entropy(A) + for t in range(n_steps): + for m, H_m in enumerate(H): + factor_idx = A_factor_list[m] + # TODO why does spm_dot return an array here? + # joint_x = maths.spm_cross(qs_pi[t][factor_idx]) + # ambiguity += (H_m * joint_x).sum() + ambiguity += np.sum(spm_dot(H_m, qs_pi[t][factor_idx])) + + return ambiguity + + +def sophisticated_inference_search(qs, policies, A, B, C, A_factor_list, B_factor_list, I=None, horizon=1, + policy_prune_threshold=1/16, state_prune_threshold=1/16, prune_penalty=512, gamma=16, + inference_params = {"num_iter": 10, "dF": 1.0, "dF_tol": 0.001, "compute_vfe": False}, n=0): + """ + Performs sophisticated inference to find the optimal policy for a given generative model and prior preferences. + + Parameters + ---------- + qs: ``numpy.ndarray`` of dtype object + Marginal posterior beliefs over hidden states at a given timepoint. + policies: ``list`` of 1D ``numpy.ndarray`` inference_params = {"num_iter": 10, "dF": 1.0, "dF_tol": 0.001, "compute_vfe": False} + + ``list`` that stores each policy as a 1D array in ``policies[p_idx]``. Shape of ``policies[p_idx]`` + is ``(num_factors)`` where ``num_factors`` is the number of control factors. + A: ``numpy.ndarray`` of dtype object + Sensory likelihood mapping or 'observation model', mapping from hidden states to observations. Each element ``A[m]`` of + stores an ``numpy.ndarray`` multidimensional array for observation modality ``m``, whose entries ``A[m][i, j, k, ...]`` store + the probability of observation level ``i`` given hidden state levels ``j, k, ...`` + B: ``numpy.ndarray`` of dtype object + Dynamics likelihood mapping or 'transition model', mapping from hidden states at ``t`` to hidden states at ``t+1``, given some control state ``u``. + Each element ``B[f]`` of this object array stores a 3-D tensor for hidden state factor ``f``, whose entries ``B[f][s, v, u]`` store the probability + of hidden state level ``s`` at the current time, given hidden state level ``v`` and action ``u`` at the previous time. + C: ``numpy.ndarray`` of dtype object + Prior over observations or 'prior preferences', storing the "value" of each outcome in terms of relative log probabilities. + This is softmaxed to form a proper probability distribution before being used to compute the expected utility term of the expected free energy. + A_factor_list: ``list`` of ``list`` of ``int`` + List of lists, where ``A_factor_list[m]`` is a list of the hidden state factor indices that observation modality with the index ``m`` depends on + B_factor_list: ``list`` of ``list`` of ``int`` + List of lists of hidden state factors each hidden state factor depends on. Each element ``B_factor_list[i]`` is a list of the factor indices that factor i's dynamics depend on. + I: ``numpy.ndarray`` of dtype object + For each state factor, contains a 2D ``numpy.ndarray`` whose element i,j yields the probability + of reaching the goal state backwards from state j after i steps. + horizon: ``int`` + The temporal depth of the policy + policy_prune_threshold: ``float`` + The threshold for pruning policies that are below a certain probability + state_prune_threshold: ``float`` + The threshold for pruning states in the expectation that are below a certain probability + prune_penalty: ``float`` + Penalty to add to the EFE when a policy is pruned + gamma: ``float``, default 16.0 + Prior precision over policies, scales the contribution of the expected free energy to the posterior over policies + n: ``int`` + timestep in the future we are calculating + + Returns + ---------- + q_pi: 1D ``numpy.ndarray`` + Posterior beliefs over policies, i.e. a vector containing one posterior probability per policy. + + G: 1D ``numpy.ndarray`` + Negative expected free energies of each policy, i.e. a vector containing one negative expected free energy per policy. + """ + + n_policies = len(policies) + G = np.zeros(n_policies) + q_pi = np.zeros((n_policies, 1)) + qs_pi = utils.obj_array(n_policies) + qo_pi = utils.obj_array(n_policies) + + for idx, policy in enumerate(policies): + qs_pi[idx] = get_expected_states_interactions(qs, B, B_factor_list, policy) + qo_pi[idx] = get_expected_obs_factorized(qs_pi[idx], A, A_factor_list) + + G[idx] += calc_expected_utility(qo_pi[idx], C) + G[idx] += calc_states_info_gain_factorized(A, qs_pi[idx], A_factor_list) + + if I is not None: + G[idx] += calc_inductive_cost(qs, qs_pi[idx], I) + + q_pi = softmax(G * gamma) + + if n < horizon - 1: + # ignore low probability actions in the search tree + # TODO shouldnt we have to add extra penalty for branches no longer considered? + # or assume these are already low EFE (high NEFE) anyway? + policies_to_consider = list(np.where(q_pi >= policy_prune_threshold)[0]) + for idx in range(n_policies): + if idx not in policies_to_consider: + G[idx] -= prune_penalty + else : + # average over outcomes + qo_next = qo_pi[idx][0] + for k in itertools.product(*[range(s.shape[0]) for s in qo_next]): + prob = 1.0 + for i in range(len(k)): + prob *= qo_pi[idx][0][i][k[i]] + + # ignore low probability states in the search tree + if prob < state_prune_threshold: + continue + + qo_one_hot = utils.obj_array(len(qo_next)) + for i in range(len(qo_one_hot)): + qo_one_hot[i] = utils.onehot(k[i], qo_next[i].shape[0]) + + num_obs = [A[m].shape[0] for m in range(len(A))] + num_states = [B[f].shape[0] for f in range(len(B))] + A_modality_list = [] + for f in range(len(B)): + A_modality_list.append( [m for m in range(len(A)) if f in A_factor_list[m]] ) + mb_dict = { + 'A_factor_list': A_factor_list, + 'A_modality_list': A_modality_list + } + qs_next = update_posterior_states_factorized(A, qo_one_hot, num_obs, num_states, mb_dict, qs_pi[idx][0], **inference_params) + q_pi_next, G_next = sophisticated_inference_search(qs_next, policies, A, B, C, A_factor_list, B_factor_list, I, + horizon, policy_prune_threshold, state_prune_threshold, + prune_penalty, gamma, inference_params, n+1) + G_weighted = np.dot(q_pi_next, G_next) * prob + G[idx] += G_weighted + + q_pi = softmax(G * gamma) + return q_pi, G \ No newline at end of file diff --git a/pymdp/inference.py b/pymdp/inference.py index 8a77e74c..1b5296b5 100644 --- a/pymdp/inference.py +++ b/pymdp/inference.py @@ -5,8 +5,8 @@ import numpy as np from pymdp import utils -from pymdp.maths import get_joint_likelihood_seq -from pymdp.algos import run_vanilla_fpi, run_mmp, _run_mmp_testing +from pymdp.maths import get_joint_likelihood_seq, get_joint_likelihood_seq_by_modality +from pymdp.algos import run_vanilla_fpi, run_vanilla_fpi_factorized, run_mmp, run_mmp_factorized, _run_mmp_testing VANILLA = "VANILLA" VMP = "VMP" @@ -86,6 +86,86 @@ def update_posterior_states_full( return qs_seq_pi, F +def update_posterior_states_full_factorized( + A, + mb_dict, + B, + B_factor_list, + prev_obs, + policies, + prev_actions=None, + prior=None, + policy_sep_prior = True, + **kwargs, +): + """ + Update posterior over hidden states using marginal message passing + + Parameters + ---------- + A: ``numpy.ndarray`` of dtype object + Sensory likelihood mapping or 'observation model', mapping from hidden states to observations. Each element ``A[m]`` of + stores an ``numpy.ndarray`` multidimensional array for observation modality ``m``, whose entries ``A[m][i, j, k, ...]`` store + the probability of observation level ``i`` given hidden state levels ``j, k, ...`` + mb_dict: ``Dict`` + Dictionary with two keys (``A_factor_list`` and ``A_modality_list``), that stores the factor indices that influence each modality (``A_factor_list``) + and the modality indices influenced by each factor (``A_modality_list``). + B: ``numpy.ndarray`` of dtype object + Dynamics likelihood mapping or 'transition model', mapping from hidden states at ``t`` to hidden states at ``t+1``, given some control state ``u``. + Each element ``B[f]`` of this object array stores a 3-D tensor for hidden state factor ``f``, whose entries ``B[f][s, v, u]`` store the probability + of hidden state level ``s`` at the current time, given hidden state level ``v`` and action ``u`` at the previous time. + B_factor_list: ``list`` of ``list`` of ``int`` + List of lists of hidden state factors each hidden state factor depends on. Each element ``B_factor_list[i]`` is a list of the factor indices that factor i's dynamics depend on. + prev_obs: ``list`` + List of observations over time. Each observation in the list can be an ``int``, a ``list`` of ints, a ``tuple`` of ints, a one-hot vector or an object array of one-hot vectors. + policies: ``list`` of 2D ``numpy.ndarray`` + List that stores each policy in ``policies[p_idx]``. Shape of ``policies[p_idx]`` is ``(num_timesteps, num_factors)`` where `num_timesteps` is the temporal + depth of the policy and ``num_factors`` is the number of control factors. + prior: ``numpy.ndarray`` of dtype object, default ``None`` + If provided, this a ``numpy.ndarray`` of dtype object, with one sub-array per hidden state factor, that stores the prior beliefs about initial states. + If ``None``, this defaults to a flat (uninformative) prior over hidden states. + policy_sep_prior: ``Bool``, default ``True`` + Flag determining whether the prior beliefs from the past are unconditioned on policy, or separated by /conditioned on the policy variable. + **kwargs: keyword arguments + Optional keyword arguments for the function ``algos.mmp.run_mmp`` + + Returns + --------- + qs_seq_pi: ``numpy.ndarray`` of dtype object + Posterior beliefs over hidden states for each policy. Nesting structure is policies, timepoints, factors, + where e.g. ``qs_seq_pi[p][t][f]`` stores the marginal belief about factor ``f`` at timepoint ``t`` under policy ``p``. + F: 1D ``numpy.ndarray`` + Vector of variational free energies for each policy + """ + + num_obs, num_states, num_modalities, num_factors = utils.get_model_dimensions(A, B) + + prev_obs = utils.process_observation_seq(prev_obs, num_modalities, num_obs) + + lh_seq = get_joint_likelihood_seq_by_modality(A, prev_obs, num_states) + + if prev_actions is not None: + prev_actions = np.stack(prev_actions,0) + + qs_seq_pi = utils.obj_array(len(policies)) + F = np.zeros(len(policies)) # variational free energy of policies + + for p_idx, policy in enumerate(policies): + + # get sequence and the free energy for policy + qs_seq_pi[p_idx], F[p_idx] = run_mmp_factorized( + lh_seq, + mb_dict, + B, + B_factor_list, + policy, + prev_actions=prev_actions, + prior= prior[p_idx] if policy_sep_prior else prior, + **kwargs + ) + + return qs_seq_pi, F + def _update_posterior_states_full_test( A, B, @@ -232,7 +312,7 @@ def update_posterior_states(A, obs, prior=None, **kwargs): Marginal posterior beliefs over hidden states at current timepoint """ - num_obs, num_states, num_modalities, num_factors = utils.get_model_dimensions(A = A) + num_obs, num_states, num_modalities, _ = utils.get_model_dimensions(A = A) obs = utils.process_observation(obs, num_modalities, num_obs) @@ -240,4 +320,52 @@ def update_posterior_states(A, obs, prior=None, **kwargs): prior = utils.to_obj_array(prior) return run_vanilla_fpi(A, obs, num_obs, num_states, prior, **kwargs) - + +def update_posterior_states_factorized(A, obs, num_obs, num_states, mb_dict, prior=None, **kwargs): + """ + Update marginal posterior over hidden states using mean-field fixed point iteration + FPI or Fixed point iteration. This version identifies the Markov blanket of each factor using `A_factor_list` + + See the following links for details: + http://www.cs.cmu.edu/~guestrin/Class/10708/recitations/r9/VI-view.pdf, slides 13- 18, and http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.137.221&rep=rep1&type=pdf, slides 24 - 38. + + Parameters + ---------- + A: ``numpy.ndarray`` of dtype object + Sensory likelihood mapping or 'observation model', mapping from hidden states to observations. Each element ``A[m]`` of + stores an ``np.ndarray`` multidimensional array for observation modality ``m``, whose entries ``A[m][i, j, k, ...]`` store + the probability of observation level ``i`` given hidden state levels ``j, k, ...`` + obs: 1D ``numpy.ndarray``, ``numpy.ndarray`` of dtype object, int or tuple + The observation (generated by the environment). If single modality, this can be a 1D ``np.ndarray`` + (one-hot vector representation) or an ``int`` (observation index) + If multi-modality, this can be ``np.ndarray`` of dtype object whose entries are 1D one-hot vectors, + or a tuple (of ``int``) + num_obs: ``list`` of ``int`` + List of dimensionalities of each observation modality + num_states: ``list`` of ``int`` + List of dimensionalities of each hidden state factor + mb_dict: ``Dict`` + Dictionary with two keys (``A_factor_list`` and ``A_modality_list``), that stores the factor indices that influence each modality (``A_factor_list``) + and the modality indices influenced by each factor (``A_modality_list``). + prior: 1D ``numpy.ndarray`` or ``numpy.ndarray`` of dtype object, default None + Prior beliefs about hidden states, to be integrated with the marginal likelihood to obtain + a posterior distribution. If not provided, prior is set to be equal to a flat categorical distribution (at the level of + the individual inference functions). + **kwargs: keyword arguments + List of keyword/parameter arguments corresponding to parameter values for the fixed-point iteration + algorithm ``algos.fpi.run_vanilla_fpi.py`` + + Returns + ---------- + qs: 1D ``numpy.ndarray`` or ``numpy.ndarray`` of dtype object + Marginal posterior beliefs over hidden states at current timepoint + """ + + num_modalities = len(num_obs) + + obs = utils.process_observation(obs, num_modalities, num_obs) + + if prior is not None: + prior = utils.to_obj_array(prior) + + return run_vanilla_fpi_factorized(A, obs, num_obs, num_states, mb_dict, prior, **kwargs) diff --git a/pymdp/jax/__init__.py b/pymdp/jax/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pymdp/jax/agent.py b/pymdp/jax/agent.py new file mode 100644 index 00000000..776a65dd --- /dev/null +++ b/pymdp/jax/agent.py @@ -0,0 +1,469 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" Agent Class implementation in Jax + +__author__: Conor Heins, Dimitrije Markovic, Alexander Tschantz, Daphne Demekas, Brennan Klein + +""" + +import math as pymath +import jax.numpy as jnp +import jax.tree_util as jtu +from jax import nn, vmap, random +from . import inference, control, learning, utils, maths +from equinox import Module, field, tree_at + +from typing import List, Optional +from jaxtyping import Array +from functools import partial + +class Agent(Module): + """ + The Agent class, the highest-level API that wraps together processes for action, perception, and learning under active inference. + + The basic usage is as follows: + + >>> my_agent = Agent(A = A, B = C, ) + >>> observation = env.step(initial_action) + >>> qs = my_agent.infer_states(observation) + >>> q_pi, G = my_agent.infer_policies() + >>> next_action = my_agent.sample_action() + >>> next_observation = env.step(next_action) + + This represents one timestep of an active inference process. Wrapping this step in a loop with an ``Env()`` class that returns + observations and takes actions as inputs, would entail a dynamic agent-environment interaction. + """ + + A: List[Array] + B: List[Array] + C: List[Array] + D: List[Array] + E: Array + # empirical_prior: List + gamma: Array + alpha: Array + qs: Optional[List[Array]] + q_pi: Optional[List[Array]] + + # parameters used for inductive inference + inductive_threshold: Array # threshold for inductive inference (the threshold for pruning transitions that are below a certain probability) + inductive_epsilon: Array # epsilon for inductive inference (trade-off/weight for how much inductive value contributes to EFE of policies) + + H: List[Array] # H vectors (one per hidden state factor) used for inductive inference -- these encode goal states or constraints + I: List[Array] # I matrices (one per hidden state factor) used for inductive inference -- these encode the 'reachability' matrices of goal states encoded in `self.H` + + pA: List[Array] + pB: List[Array] + + # static parameters not leaves of the PyTree + A_dependencies: Optional[List] = field(static=True) + B_dependencies: Optional[List] = field(static=True) + batch_size: int = field(static=True) + num_iter: int = field(static=True) + num_obs: List[int] = field(static=True) + num_modalities: int = field(static=True) + num_states: List[int] = field(static=True) + num_factors: int = field(static=True) + num_controls: List[int] = field(static=True) + control_fac_idx: Optional[List[int]] = field(static=True) + policy_len: int = field(static=True) # depth of planning during roll-outs (i.e. number of timesteps to look ahead when computing expected free energy of policies) + inductive_depth: int = field(static=True) # depth of inductive inference (i.e. number of future timesteps to use when computing inductive `I` matrix) + policies: Array = field(static=True) # matrix of all possible policies (each row is a policy of shape (num_controls[0], num_controls[1], ..., num_controls[num_control_factors-1]) + use_utility: bool = field(static=True) # flag for whether to use expected utility ("reward" or "preference satisfaction") when computing expected free energy + use_states_info_gain: bool = field(static=True) # flag for whether to use state information gain ("salience") when computing expected free energy + use_param_info_gain: bool = field(static=True) # flag for whether to use parameter information gain ("novelty") when computing expected free energy + use_inductive: bool = field(static=True) # flag for whether to use inductive inference ("intentional inference") when computing expected free energy + onehot_obs: bool = field(static=True) + action_selection: str = field(static=True) # determinstic or stochastic action selection + sampling_mode : str = field(static=True) # whether to sample from full posterior over policies ("full") or from marginal posterior over actions ("marginal") + inference_algo: str = field(static=True) # fpi, vmp, mmp, ovf + + learn_A: bool = field(static=True) + learn_B: bool = field(static=True) + learn_C: bool = field(static=True) + learn_D: bool = field(static=True) + learn_E: bool = field(static=True) + + def __init__( + self, + A, + B, + C, + D, + E, + pA, + pB, + A_dependencies=None, + B_dependencies=None, + qs=None, + q_pi=None, + H=None, + I=None, + policy_len=1, + control_fac_idx=None, + policies=None, + gamma=16.0, + alpha=16.0, + inductive_depth=1, + inductive_threshold=0.1, + inductive_epsilon=1e-3, + use_utility=True, + use_states_info_gain=True, + use_param_info_gain=False, + use_inductive=False, + onehot_obs=False, + action_selection="deterministic", + sampling_mode="marginal", + inference_algo="fpi", + num_iter=16, + learn_A=True, + learn_B=True, + learn_C=False, + learn_D=True, + learn_E=False + ): + ### PyTree leaves + self.A = A + self.B = B + self.C = C + self.D = D + # self.empirical_prior = D + self.H = H + self.pA = pA + self.pB = pB + self.qs = qs + self.q_pi = q_pi + + self.onehot_obs = onehot_obs + + element_size = lambda x: x.shape[1] + self.num_factors = len(self.B) + self.num_states = jtu.tree_map(element_size, self.B) + + self.num_modalities = len(self.A) + self.num_obs = jtu.tree_map(element_size, self.A) + + # Ensure consistency of A_dependencies with num_states and num_factors + if A_dependencies is not None: + self.A_dependencies = A_dependencies + else: + # assume full dependence of A matrices and state factors + self.A_dependencies = [list(range(self.num_factors)) for _ in range(self.num_modalities)] + + for m in range(self.num_modalities): + factor_dims = tuple([self.num_states[f] for f in self.A_dependencies[m]]) + assert self.A[m].shape[2:] == factor_dims, f"Please input an `A_dependencies` whose {m}-th indices correspond to the hidden state factors that line up with lagging dimensions of A[{m}]..." + if self.pA != None: + assert self.pA[m].shape[2:] == factor_dims, f"Please input an `A_dependencies` whose {m}-th indices correspond to the hidden state factors that line up with lagging dimensions of pA[{m}]..." + assert max(self.A_dependencies[m]) <= (self.num_factors - 1), f"Check modality {m} of `A_dependencies` - must be consistent with `num_states` and `num_factors`..." + + # Ensure consistency of B_dependencies with num_states and num_factors + if B_dependencies is not None: + self.B_dependencies = B_dependencies + else: + self.B_dependencies = [[f] for f in range(self.num_factors)] # defaults to having all factors depend only on themselves + + for f in range(self.num_factors): + factor_dims = tuple([self.num_states[f] for f in self.B_dependencies[f]]) + assert self.B[f].shape[2:-1] == factor_dims, f"Please input a `B_dependencies` whose {f}-th indices pick out the hidden state factors that line up with the all-but-final lagging dimensions of B[{f}]..." + if self.pB != None: + assert self.pB[f].shape[2:-1] == factor_dims, f"Please input a `B_dependencies` whose {f}-th indices pick out the hidden state factors that line up with the all-but-final lagging dimensions of pB[{f}]..." + assert max(self.B_dependencies[f]) <= (self.num_factors - 1), f"Check factor {f} of `B_dependencies` - must be consistent with `num_states` and `num_factors`..." + + self.batch_size = self.A[0].shape[0] + + self.gamma = jnp.broadcast_to(gamma, (self.batch_size,)) + self.alpha = jnp.broadcast_to(alpha, (self.batch_size,)) + self.inductive_threshold = jnp.broadcast_to(inductive_threshold, (self.batch_size,)) + self.inductive_epsilon = jnp.broadcast_to(inductive_epsilon, (self.batch_size,)) + + ### Static parameters ### + self.num_iter = num_iter + self.inference_algo = inference_algo + self.inductive_depth = inductive_depth + + # policy parameters + self.policy_len = policy_len + self.action_selection = action_selection + self.sampling_mode = sampling_mode + self.use_utility = use_utility + self.use_states_info_gain = use_states_info_gain + self.use_param_info_gain = use_param_info_gain + self.use_inductive = use_inductive + + if self.use_inductive and self.H is not None: + # print("Using inductive inference...") + self.I = self._construct_I() + elif self.use_inductive and I is not None: + self.I = I + else: + self.I = jtu.tree_map(lambda x: jnp.expand_dims(jnp.zeros_like(x), 1), self.D) + + # learning parameters + self.learn_A = learn_A + self.learn_B = learn_B + self.learn_C = learn_C + self.learn_D = learn_D + self.learn_E = learn_E + + """ Determine number of observation modalities and their respective dimensions """ + self.num_obs = [self.A[m].shape[1] for m in range(len(self.A))] + self.num_modalities = len(self.num_obs) + + # If no `num_controls` are given, then this is inferred from the shapes of the input B matrices + self.num_controls = [self.B[f].shape[-1] for f in range(self.num_factors)] + + # Users have the option to make only certain factors controllable. + # default behaviour is to make all hidden state factors controllable + # (i.e. self.num_states == self.num_controls) + # Users have the option to make only certain factors controllable. + # default behaviour is to make all hidden state factors controllable, i.e. `self.num_factors == len(self.num_controls)` + if control_fac_idx == None: + self.control_fac_idx = [f for f in range(self.num_factors) if self.num_controls[f] > 1] + else: + assert max(control_fac_idx) <= (self.num_factors - 1), "Check control_fac_idx - must be consistent with `num_states` and `num_factors`..." + self.control_fac_idx = control_fac_idx + + for factor_idx in self.control_fac_idx: + assert self.num_controls[factor_idx] > 1, "Control factor (and B matrix) dimensions are not consistent with user-given control_fac_idx" + + if policies is not None: + self.policies = policies + else: + self._construct_policies() + + # set E to uniform/uninformative prior over policies if not given + if E is None: + self.E = jnp.ones((self.batch_size, len(self.policies)))/ len(self.policies) + else: + self.E = E + + def _construct_policies(self): + + self.policies = control.construct_policies( + self.num_states, self.num_controls, self.policy_len, self.control_fac_idx + ) + + @vmap + def _construct_I(self): + return control.generate_I_matrix(self.H, self.B, self.inductive_threshold, self.inductive_depth) + + @property + def unique_multiactions(self): + size = pymath.prod(self.num_controls) + return jnp.unique(self.policies[:, 0], axis=0, size=size, fill_value=-1) + + @vmap + def learning(self, beliefs_A, outcomes, actions, beliefs_B=None, lr_pA=1., lr_pB=1., **kwargs): + agent = self + if self.learn_A: + o_vec_seq = jtu.tree_map(lambda o, dim: nn.one_hot(o, dim), outcomes, self.num_obs) + qA = learning.update_obs_likelihood_dirichlet(self.pA, o_vec_seq, beliefs_A, self.A_dependencies, lr=lr_pA) + E_qA = jtu.tree_map(lambda x: maths.dirichlet_expected_value(x), qA) + agent = tree_at(lambda x: (x.A, x.pA), agent, (E_qA, qA)) + + if self.learn_B: + beliefs_B = beliefs_A if beliefs_B is None else beliefs_B + actions_seq = [actions[..., i] for i in range(actions.shape[-1])] # as many elements as there are control factors, where each element is a jnp.ndarray of shape (n_timesteps, ) + assert beliefs_B[0].shape[0] == actions_seq[0].shape[0] + 1 + actions_onehot = jtu.tree_map(lambda a, dim: nn.one_hot(a, dim, axis=-1), actions_seq, self.num_controls) + qB = learning.update_state_likelihood_dirichlet(self.pB, beliefs_B, actions_onehot, self.B_dependencies, lr=lr_pB) + E_qB = jtu.tree_map(lambda x: maths.dirichlet_expected_value(x), qB) + + # if you have updated your beliefs about transitions, you need to re-compute the I matrix used for inductive inferenece + if self.use_inductive and self.H is not None: + I_updated = control.generate_I_matrix(self.H, E_qB, self.inductive_threshold, self.inductive_depth) + else: + I_updated = self.I + + agent = tree_at(lambda x: (x.B, x.pB, x.I), agent, (E_qB, qB, I_updated)) + + # if self.learn_C: + # self.qC = learning.update_C(self.C, *args, **kwargs) + # self.C = jtu.tree_map(lambda x: maths.dirichlet_expected_value(x), self.qC) + # if self.learn_D: + # self.qD = learning.update_D(self.D, *args, **kwargs) + # self.D = jtu.tree_map(lambda x: maths.dirichlet_expected_value(x), self.qD) + # if self.learn_E: + # self.qE = learning.update_E(self.E, *args, **kwargs) + # self.E = maths.dirichlet_expected_value(self.qE) + + # do stuff + # variables = ... + # parameters = ... + # varibles = {'A': jnp.ones(5)} + + # agent = tree_at(lambda x: (x.A, x.pA, x.B, x.pB, x.I), self, (E_qA, qA, E_qB, qB, I_updated)) + + return agent + + @vmap + def infer_states(self, observations, past_actions, empirical_prior, qs_hist, mask=None): + """ + Update approximate posterior over hidden states by solving variational inference problem, given an observation. + + Parameters + ---------- + observations: ``list`` or ``tuple`` of ints + The observation input. Each entry ``observation[m]`` stores one-hot vectors representing the observations for modality ``m``. + past_actions: ``list`` or ``tuple`` of ints + The action input. Each entry ``past_actions[f]`` stores indices (or one-hots?) representing the actions for control factor ``f``. + empirical_prior: ``list`` or ``tuple`` of ``jax.numpy.ndarray`` of dtype object + Empirical prior beliefs over hidden states. Depending on the inference algorithm chosen, the resulting ``empirical_prior`` variable may be a matrix (or list of matrices) + of additional dimensions to encode extra conditioning variables like timepoint and policy. + Returns + --------- + qs: ``numpy.ndarray`` of dtype object + Posterior beliefs over hidden states. Depending on the inference algorithm chosen, the resulting ``qs`` variable will have additional sub-structure to reflect whether + beliefs are additionally conditioned on timepoint and policy. + For example, in case the ``self.inference_algo == 'MMP' `` indexing structure is policy->timepoint-->factor, so that + ``qs[p_idx][t_idx][f_idx]`` refers to beliefs about marginal factor ``f_idx`` expected under policy ``p_idx`` + at timepoint ``t_idx``. + """ + if not self.onehot_obs: + o_vec = [nn.one_hot(o, self.num_obs[m]) for m, o in enumerate(observations)] + else: + o_vec = observations + + A = self.A + if mask is not None: + for i, m in enumerate(mask): + o_vec[i] = m * o_vec[i] + (1 - m) * jnp.ones_like(o_vec[i]) / self.num_obs[i] + A[i] = m * A[i] + (1 - m) * jnp.ones_like(A[i]) / self.num_obs[i] + + output = inference.update_posterior_states( + A, + self.B, + o_vec, + past_actions, + prior=empirical_prior, + qs_hist=qs_hist, + A_dependencies=self.A_dependencies, + B_dependencies=self.B_dependencies, + num_iter=self.num_iter, + method=self.inference_algo + ) + + return output + + @partial(vmap, in_axes=(0, 0, 0)) + def update_empirical_prior(self, action, qs): + # return empirical_prior, and the history of posterior beliefs (filtering distributions) held about hidden states at times 1, 2 ... t + + qs_last = jtu.tree_map( lambda x: x[-1], qs) + # this computation of the predictive prior is correct only for fully factorised Bs. + pred = control.compute_expected_state(qs_last, self.B, action, B_dependencies=self.B_dependencies) + + return (pred, qs) + + @vmap + def infer_policies(self, qs: List): + """ + Perform policy inference by optimizing a posterior (categorical) distribution over policies. + This distribution is computed as the softmax of ``G * gamma + lnE`` where ``G`` is the negative expected + free energy of policies, ``gamma`` is a policy precision and ``lnE`` is the (log) prior probability of policies. + This function returns the posterior over policies as well as the negative expected free energy of each policy. + + Returns + ---------- + q_pi: 1D ``numpy.ndarray`` + Posterior beliefs over policies, i.e. a vector containing one posterior probability per policy. + G: 1D ``numpy.ndarray`` + Negative expected free energies of each policy, i.e. a vector containing one negative expected free energy per policy. + """ + + latest_belief = jtu.tree_map(lambda x: x[-1], qs) # only get the posterior belief held at the current timepoint + q_pi, G = control.update_posterior_policies_inductive( + self.policies, + latest_belief, + self.A, + self.B, + self.C, + self.E, + self.pA, + self.pB, + A_dependencies=self.A_dependencies, + B_dependencies=self.B_dependencies, + I = self.I, + gamma=self.gamma, + inductive_epsilon=self.inductive_epsilon, + use_utility=self.use_utility, + use_states_info_gain=self.use_states_info_gain, + use_param_info_gain=self.use_param_info_gain, + use_inductive=self.use_inductive + ) + + return q_pi, G + + @vmap + def multiaction_probabilities(self, q_pi: Array): + """ + Compute probabilities of unique multi-actions from the posterior over policies. + + Parameters + ---------- + q_pi: 1D ``numpy.ndarray`` + Posterior beliefs over policies, i.e. a vector containing one posterior probability per policy. + + Returns + ---------- + multi-action: 1D ``jax.numpy.ndarray`` + Vector containing probabilities of possible multi-actions for different factors + """ + + if self.sampling_mode == "marginal": + marginals = control.get_marginals(q_pi, self.policies, self.num_controls) + outer = lambda a, b: jnp.outer(a, b).reshape(-1) + marginals = jtu.tree_reduce(outer, marginals) + + elif self.sampling_mode == "full": + locs = jnp.all( + self.policies[:, 0] == jnp.expand_dims(self.unique_multiactions, -2), + -1 + ) + marginals = jnp.where(locs, q_pi, 0.).sum(-1) + + # assert jnp.isclose(jnp.sum(marginals), 1.) # this fails inside scan + return marginals + + @vmap + def sample_action(self, q_pi: Array, rng_key=None): + """ + Sample or select a discrete action from the posterior over control states. + + Returns + ---------- + action: 1D ``jax.numpy.ndarray`` + Vector containing the indices of the actions for each control factor + action_probs: 2D ``jax.numpy.ndarray`` + Array of action probabilities + """ + + if (rng_key is None) and (self.action_selection == "stochastic"): + raise ValueError("Please provide a random number generator key to sample actions stochastically") + + if self.sampling_mode == "marginal": + action = control.sample_action(q_pi, self.policies, self.num_controls, self.action_selection, self.alpha, rng_key=rng_key) + elif self.sampling_mode == "full": + action = control.sample_policy(q_pi, self.policies, self.num_controls, self.action_selection, self.alpha, rng_key=rng_key) + + return action + + def _get_default_params(self): + method = self.inference_algo + default_params = None + if method == "VANILLA": + default_params = {"num_iter": 8, "dF": 1.0, "dF_tol": 0.001} + elif method == "MMP": + raise NotImplementedError("MMP is not implemented") + elif method == "VMP": + raise NotImplementedError("VMP is not implemented") + elif method == "BP": + raise NotImplementedError("BP is not implemented") + elif method == "EP": + raise NotImplementedError("EP is not implemented") + elif method == "CV": + raise NotImplementedError("CV is not implemented") + + return default_params \ No newline at end of file diff --git a/pymdp/jax/algos.py b/pymdp/jax/algos.py new file mode 100644 index 00000000..754d10ce --- /dev/null +++ b/pymdp/jax/algos.py @@ -0,0 +1,377 @@ +import jax.numpy as jnp +import jax.tree_util as jtu + +from jax import jit, vmap, grad, lax, nn +# from jax.config import config +# config.update("jax_enable_x64", True) + +from .maths import compute_log_likelihood, compute_log_likelihood_per_modality, log_stable, MINVAL, factor_dot, factor_dot_flex +from typing import Any, List + +def add(x, y): + return x + y + +def marginal_log_likelihood(qs, log_likelihood, i): + xs = [q for j, q in enumerate(qs) if j != i] + return factor_dot(log_likelihood, xs, keep_dims=(i,)) + +def all_marginal_log_likelihood(qs, log_likelihoods, all_factor_lists): + qL_marginals = jtu.tree_map(lambda ll_m, factor_list_m: mll_factors(qs, ll_m, factor_list_m), log_likelihoods, all_factor_lists) + + num_factors = len(qs) + + # insted of a double loop we could have a list defining m to f mapping + # which could be resolved with a single tree_map cast + qL_all = [jnp.zeros(1)] * num_factors + for m, factor_list_m in enumerate(all_factor_lists): + for l, f in enumerate(factor_list_m): + qL_all[f] += qL_marginals[m][l] + + return qL_all + +def mll_factors(qs, ll_m, factor_list_m) -> List: + relevant_factors = [qs[f] for f in factor_list_m] + marginal_ll_f = jtu.Partial(marginal_log_likelihood, relevant_factors, ll_m) + loc_nf = len(factor_list_m) + loc_factors = list(range(loc_nf)) + return jtu.tree_map(marginal_ll_f, loc_factors) + +def run_vanilla_fpi(A, obs, prior, num_iter=1, distr_obs=True): + """ Vanilla fixed point iteration (jaxified) """ + + nf = len(prior) + factors = list(range(nf)) + # Step 1: Compute log likelihoods for each factor + ll = compute_log_likelihood(obs, A, distr_obs=distr_obs) + # log_likelihoods = [ll] * nf + + # Step 2: Map prior to log space and create initial log-posterior + log_prior = jtu.tree_map(log_stable, prior) + log_q = jtu.tree_map(jnp.zeros_like, prior) + + # Step 3: Iterate until convergence + def scan_fn(carry, t): + log_q = carry + q = jtu.tree_map(nn.softmax, log_q) + mll = jtu.Partial(marginal_log_likelihood, q, ll) + marginal_ll = jtu.tree_map(mll, factors) + log_q = jtu.tree_map(add, marginal_ll, log_prior) + + return log_q, None + + res, _ = lax.scan(scan_fn, log_q, jnp.arange(num_iter)) + + # Step 4: Map result to factorised posterior + qs = jtu.tree_map(nn.softmax, res) + return qs + +def run_factorized_fpi(A, obs, prior, A_dependencies, num_iter=1): + """ + Run the fixed point iteration algorithm with sparse dependencies between factors and outcomes (stored in `A_dependencies`) + """ + + # Step 1: Compute log likelihoods for each factor + log_likelihoods = compute_log_likelihood_per_modality(obs, A) + + # Step 2: Map prior to log space and create initial log-posterior + log_prior = jtu.tree_map(log_stable, prior) + log_q = jtu.tree_map(jnp.zeros_like, prior) + + # Step 3: Iterate until convergence + def scan_fn(carry, t): + log_q = carry + q = jtu.tree_map(nn.softmax, log_q) + marginal_ll = all_marginal_log_likelihood(q, log_likelihoods, A_dependencies) + log_q = jtu.tree_map(add, marginal_ll, log_prior) + + return log_q, None + + res, _ = lax.scan(scan_fn, log_q, jnp.arange(num_iter)) + + # Step 4: Map result to factorised posterior + qs = jtu.tree_map(nn.softmax, res) + return qs + +def mirror_gradient_descent_step(tau, ln_A, lnB_past, lnB_future, ln_qs): + """ + u_{k+1} = u_{k} - \nabla_p F_k + p_k = softmax(u_k) + """ + err = ln_A - ln_qs + lnB_past + lnB_future + ln_qs = ln_qs + tau * err + qs = nn.softmax(ln_qs - ln_qs.mean(axis=-1, keepdims=True)) + + return qs + +def update_marginals(get_messages, obs, A, B, prior, A_dependencies, B_dependencies, num_iter=1, tau=1.,): + """" Version of marginal update that uses a sparse dependency matrix for A """ + + T = obs[0].shape[0] + ln_B = jtu.tree_map(log_stable, B) + # log likelihoods -> $\ln(A)$ for all time steps + # for $k > t$ we have $\ln(A) = 0$ + + def get_log_likelihood(obs_t, A): + # # mapping over batch dimension + # return vmap(compute_log_likelihood_per_modality)(obs_t, A) + return compute_log_likelihood_per_modality(obs_t, A) + + # mapping over time dimension of obs array + log_likelihoods = vmap(get_log_likelihood, (0, None))(obs, A) # this gives a sequence of log-likelihoods (one for each `t`) + + # log marginals -> $\ln(q(s_t))$ for all time steps and factors + ln_qs = jtu.tree_map( lambda p: jnp.broadcast_to(jnp.zeros_like(p), (T,) + p.shape), prior) + + # log prior -> $\ln(p(s_t))$ for all factors + ln_prior = jtu.tree_map(log_stable, prior) + + qs = jtu.tree_map(nn.softmax, ln_qs) + + def scan_fn(carry, iter): + qs = carry + + ln_qs = jtu.tree_map(log_stable, qs) + # messages from future $m_+(s_t)$ and past $m_-(s_t)$ for all time steps and factors. For t = T we have that $m_+(s_T) = 0$ + + lnB_past, lnB_future = get_messages(ln_B, B, qs, ln_prior, B_dependencies) + + mgds = jtu.Partial(mirror_gradient_descent_step, tau) + + ln_As = vmap(all_marginal_log_likelihood, in_axes=(0, 0, None))(qs, log_likelihoods, A_dependencies) + + qs = jtu.tree_map(mgds, ln_As, lnB_past, lnB_future, ln_qs) + + return qs, None + + qs, _ = lax.scan(scan_fn, qs, jnp.arange(num_iter)) + + return qs + +def variational_filtering_step(prior, Bs, ln_As, A_dependencies): + + ln_prior = jtu.tree_map(log_stable, prior) + + #TODO: put this inside scan + #### + marg_ln_As = all_marginal_log_likelihood(prior, ln_As, A_dependencies) + + # compute posterior q(z_t) -> n x 1 x d + post = jtu.tree_map( + lambda x, y: nn.softmax(x + y, -1), marg_ln_As, ln_prior + ) + #### + + # compute prediction p(z_{t+1}) = \int p(z_{t+1}|z_t) q(z_t) -> n x d x 1 + pred = jtu.tree_map( + lambda x, y: jnp.sum(x * jnp.expand_dims(y, -2), -1), Bs, post + ) + + # compute reverse conditional distribution q(z_t|z_{t+1}) + cond = jtu.tree_map( + lambda x, y, z: x * jnp.expand_dims(y, -2) / jnp.expand_dims(z, -1), + Bs, + post, + pred + ) + + return post, pred, cond + +def update_variational_filtering(obs, A, B, prior, A_dependencies, **kwargs): + """Online variational filtering belief update that uses a sparse dependency matrix for A""" + + T = obs[0].shape[0] + def pad(x): + npad = [(0, 0)] * jnp.ndim(x) + npad[0] = (0, 1) + return jnp.pad(x, npad, constant_values=1.) + + B = jtu.tree_map(pad, B) + + def get_log_likelihood(obs_t, A): + # mapping over batch dimension + return vmap(compute_log_likelihood_per_modality)(obs_t, A) + + # mapping over time dimension of obs array + log_likelihoods = vmap(get_log_likelihood, (0, None))(obs, A) # this gives a sequence of log-likelihoods (one for each `t`) + + def scan_fn(carry, iter): + _, prior = carry + Bs, ln_As = iter + + post, pred, cond = variational_filtering_step(prior, Bs, ln_As, A_dependencies) + + return (post, pred), cond + + init = (prior, prior) + iterator = (B, log_likelihoods) + # get q_T(s_t), p_T(s_{t+1}) and the history q_{T}(s_{t}|s_{t+1})q_{T-1}(s_{t-1}|s_{t}) ... + (qs, ps), qss = lax.scan(scan_fn, init, iterator) + + return qs, ps, qss + +def get_vmp_messages(ln_B, B, qs, ln_prior, B_dependencies): + + num_factors = len(qs) + factors = list(range(num_factors)) + get_deps = lambda x, f_idx: [x[f] for f in f_idx] # function that effectively "slices" a list with a set of indices `f_idx` + + # make a list of lists, where each list contains all dependencies of a factor except itself + all_deps_except_f = jtu.tree_map( + lambda f: [d for d in B_dependencies[f] if d != f], + factors + ) + + # make list of integers, where each integer is the position of the self-factor in its dependencies list + position = jtu.tree_map( + lambda f: B_dependencies[f].index(f), + factors + ) + + if ln_B is not None: + ln_B_marg = jtu.tree_map( # this is a list of matrices, where each matrix is the marginal transition tensor for factor f + lambda b, f: factor_dot(b, get_deps(qs, all_deps_except_f[f]), keep_dims=(0, 1, 2 + position[f])), + ln_B, + factors + ) # shape = (T, states_f_{t+1}, states_f_{t}) + else: + ln_B_marg = None + + def forward(ln_b, q, ln_prior): + msg = vmap(lambda x, y: y @ x)(q[:-1], ln_b) # ln_b has shape (num_states, num_states) qs[:-1] has shape (T-1, num_states) + return jnp.concatenate([jnp.expand_dims(ln_prior, 0), msg], axis=0) + + def backward(ln_b, q): + # q_i B_ij + msg = vmap(lambda x, y: x @ y)(q[1:], ln_b) + return jnp.pad(msg, ((0, 1), (0, 0))) + + if ln_B_marg is not None: + lnB_future = jtu.tree_map(forward, ln_B_marg, qs, ln_prior) + lnB_past = jtu.tree_map(backward, ln_B_marg, qs) + else: + lnB_future = jtu.tree_map(lambda x: 0., qs) + lnB_past = jtu.tree_map(lambda x: 0., qs) + + return lnB_future, lnB_past + +def run_vmp(A, B, obs, prior, A_dependencies, B_dependencies, num_iter=1, tau=1.): + ''' + Run variational message passing (VMP) on a sequence of observations + ''' + + qs = update_marginals( + get_vmp_messages, + obs, + A, + B, + prior, + A_dependencies, + B_dependencies, + num_iter=num_iter, + tau=tau + ) + return qs + +def get_mmp_messages(ln_B, B, qs, ln_prior, B_deps): + + num_factors = len(qs) + factors = list(range(num_factors)) + + get_deps_forw = lambda x, f_idx: [x[f][:-1] for f in f_idx] + get_deps_back = lambda x, f_idx: [x[f][1:] for f in f_idx] + + def forward(b, ln_prior, f): + xs = get_deps_forw(qs, B_deps[f]) + dims = tuple((0, 2 + i) for i in range(len(B_deps[f]))) + msg = log_stable(factor_dot_flex(b, xs, dims, keep_dims=(0, 1) )) + # append log_prior as a first message + msg = jnp.concatenate([jnp.expand_dims(ln_prior, 0), msg], axis=0) + # mutliply with 1/2 all but the last msg + T = len(msg) + if T > 1: + msg = msg * jnp.pad( 0.5 * jnp.ones(T - 1), (0, 1), constant_values=1.)[:, None] + + return msg + + def backward(Bs, xs): + msg = 0. + for i, b in enumerate(Bs): + b_norm = b / (b.sum(-1, keepdims=True) + 1e-16) + msg += log_stable(vmap(lambda x, y: y @ x)(b_norm, xs[i])) * .5 + + return jnp.pad(msg, ((0, 1), (0, 0))) + + def marg(inv_deps, f): + B_marg = [] + for i in inv_deps: + b = B[i] + keep_dims = (0, 1, 2 + B_deps[i].index(f)) + dims = [] + idxs = [] + for j, d in enumerate(B_deps[i]): + if f != d: + dims.append((0, 2 + j)) + idxs.append(d) + xs = get_deps_forw(qs, idxs) + B_marg.append( factor_dot_flex(b, xs, tuple(dims), keep_dims=keep_dims) ) + + return B_marg + + if B is not None: + inv_B_deps = [[i for i, d in enumerate(B_deps) if f in d] for f in factors] + B_marg = jtu.tree_map(lambda f: marg(inv_B_deps[f], f), factors) + lnB_future = jtu.tree_map(forward, B, ln_prior, factors) + lnB_past = jtu.tree_map(lambda f: backward(B_marg[f], get_deps_back(qs, inv_B_deps[f])), factors) + else: + lnB_future = jtu.tree_map(lambda x: jnp.expand_dims(x, 0), ln_prior) + lnB_past = jtu.tree_map(lambda x: 0., qs) + + return lnB_future, lnB_past + +def run_mmp(A, B, obs, prior, A_dependencies, B_dependencies, num_iter=1, tau=1.): + qs = update_marginals( + get_mmp_messages, + obs, + A, + B, + prior, + A_dependencies, + B_dependencies, + num_iter=num_iter, + tau=tau + ) + return qs + +def run_online_filtering(A, B, obs, prior, A_dependencies, num_iter=1, tau=1.): + """Runs online filtering (HAVE TO REPLACE WITH OVF CODE)""" + qs = update_marginals(get_mmp_messages, obs, A, B, prior, A_dependencies, num_iter=num_iter, tau=tau) + return qs + +if __name__ == "__main__": + prior = [jnp.ones(2)/2, jnp.ones(2)/2, nn.softmax(jnp.array([0, -80., -80., -80, -80.]))] + obs = [nn.one_hot(0, 5), nn.one_hot(5, 10)] + A = [jnp.ones((5, 2, 2, 5))/5, jnp.ones((10, 2, 2, 5))/10] + + qs = jit(run_vanilla_fpi)(A, obs, prior) + + # test if differentiable + from functools import partial + + def sum_prod(prior): + qs = jnp.concatenate(run_vanilla_fpi(A, obs, prior)) + return (qs * log_stable(qs)).sum() + + print(jit(grad(sum_prod))(prior)) + + # def sum_prod(precision): + # # prior = [jnp.ones(2)/2, jnp.ones(2)/2, nn.softmax(log_prior)] + # prior = [jnp.ones(2)/2, jnp.ones(2)/2, nn.softmax(precision*nn.one_hot(0, 5))] + # qs = jnp.concatenate(run_vanilla_fpi(A, obs, prior)) + # return (qs * log_stable(qs)).sum() + + # precis_to_test = 1. + # print(jit(grad(sum_prod))(precis_to_test)) + + # log_prior = jnp.array([0, -80., -80., -80, -80.]) + # print(jit(grad(sum_prod))(log_prior)) + diff --git a/pymdp/jax/control.py b/pymdp/jax/control.py new file mode 100644 index 00000000..b02cafe0 --- /dev/null +++ b/pymdp/jax/control.py @@ -0,0 +1,480 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# pylint: disable=no-member +# pylint: disable=not-an-iterable + +import itertools +import jax.numpy as jnp +import jax.tree_util as jtu +from typing import List, Tuple, Optional +from functools import partial +from jax.scipy.special import xlogy +from jax import lax, jit, vmap, nn +from jax import random as jr +from itertools import chain +from jaxtyping import Array + +from pymdp.jax.maths import * +# import pymdp.jax.utils as utils + +def get_marginals(q_pi, policies, num_controls): + """ + Computes the marginal posterior(s) over actions by integrating their posterior probability under the policies that they appear within. + + Parameters + ---------- + q_pi: 1D ``numpy.ndarray`` + Posterior beliefs over policies, i.e. a vector containing one posterior probability per policy. + policies: ``list`` of 2D ``numpy.ndarray`` + ``list`` that stores each policy as a 2D array in ``policies[p_idx]``. Shape of ``policies[p_idx]`` + is ``(num_timesteps, num_factors)`` where ``num_timesteps`` is the temporal + depth of the policy and ``num_factors`` is the number of control factors. + num_controls: ``list`` of ``int`` + ``list`` of the dimensionalities of each control state factor. + + Returns + ---------- + action_marginals: ``list`` of ``jax.numpy.ndarrays`` + List of arrays corresponding to marginal probability of each action possible action + """ + num_factors = len(num_controls) + + action_marginals = [] + for factor_i in range(num_factors): + actions = jnp.arange(num_controls[factor_i])[:, None] + action_marginals.append(jnp.where(actions==policies[:, 0, factor_i], q_pi, 0).sum(-1)) + + return action_marginals + +def sample_action(q_pi, policies, num_controls, action_selection="deterministic", alpha=16.0, rng_key=None): + """ + Samples an action from posterior marginals, one action per control factor. + + Parameters + ---------- + q_pi: 1D ``numpy.ndarray`` + Posterior beliefs over policies, i.e. a vector containing one posterior probability per policy. + policies: ``list`` of 2D ``numpy.ndarray`` + ``list`` that stores each policy as a 2D array in ``policies[p_idx]``. Shape of ``policies[p_idx]`` + is ``(num_timesteps, num_factors)`` where ``num_timesteps`` is the temporal + depth of the policy and ``num_factors`` is the number of control factors. + num_controls: ``list`` of ``int`` + ``list`` of the dimensionalities of each control state factor. + action_selection: string, default "deterministic" + String indicating whether whether the selected action is chosen as the maximum of the posterior over actions, + or whether it's sampled from the posterior marginal over actions + alpha: float, default 16.0 + Action selection precision -- the inverse temperature of the softmax that is used to scale the + action marginals before sampling. This is only used if ``action_selection`` argument is "stochastic" + + Returns + ---------- + selected_policy: 1D ``numpy.ndarray`` + Vector containing the indices of the actions for each control factor + """ + + marginal = get_marginals(q_pi, policies, num_controls) + + if action_selection == 'deterministic': + selected_policy = jtu.tree_map(lambda x: jnp.argmax(x, -1), marginal) + elif action_selection == 'stochastic': + logits = lambda x: alpha * log_stable(x) + selected_policy = jtu.tree_map(lambda x: jr.categorical(rng_key, logits(x)), marginal) + else: + raise NotImplementedError + + return jnp.array(selected_policy) + +def sample_policy(q_pi, policies, num_controls, action_selection="deterministic", alpha = 16.0, rng_key=None): + + if action_selection == "deterministic": + policy_idx = jnp.argmax(q_pi) + elif action_selection == "stochastic": + log_p_policies = log_stable(q_pi) * alpha + policy_idx = jr.categorical(rng_key, log_p_policies) + + selected_multiaction = policies[policy_idx, 0] + return selected_multiaction + +def construct_policies(num_states, num_controls = None, policy_len=1, control_fac_idx=None): + """ + Generate a ``list`` of policies. The returned array ``policies`` is a ``list`` that stores one policy per entry. + A particular policy (``policies[i]``) has shape ``(num_timesteps, num_factors)`` + where ``num_timesteps`` is the temporal depth of the policy and ``num_factors`` is the number of control factors. + + Parameters + ---------- + num_states: ``list`` of ``int`` + ``list`` of the dimensionalities of each hidden state factor + num_controls: ``list`` of ``int``, default ``None`` + ``list`` of the dimensionalities of each control state factor. If ``None``, then is automatically computed as the dimensionality of each hidden state factor that is controllable + policy_len: ``int``, default 1 + temporal depth ("planning horizon") of policies + control_fac_idx: ``list`` of ``int`` + ``list`` of indices of the hidden state factors that are controllable (i.e. those state factors ``i`` where ``num_controls[i] > 1``) + + Returns + ---------- + policies: ``list`` of 2D ``numpy.ndarray`` + ``list`` that stores each policy as a 2D array in ``policies[p_idx]``. Shape of ``policies[p_idx]`` + is ``(num_timesteps, num_factors)`` where ``num_timesteps`` is the temporal + depth of the policy and ``num_factors`` is the number of control factors. + """ + + num_factors = len(num_states) + if control_fac_idx is None: + if num_controls is not None: + control_fac_idx = [f for f, n_c in enumerate(num_controls) if n_c > 1] + else: + control_fac_idx = list(range(num_factors)) + + if num_controls is None: + num_controls = [num_states[c_idx] if c_idx in control_fac_idx else 1 for c_idx in range(num_factors)] + + x = num_controls * policy_len + policies = list(itertools.product(*[list(range(i)) for i in x])) + + for pol_i in range(len(policies)): + policies[pol_i] = jnp.array(policies[pol_i]).reshape(policy_len, num_factors) + + return jnp.stack(policies) + + +def update_posterior_policies(policy_matrix, qs_init, A, B, C, E, pA, pB, A_dependencies, B_dependencies, gamma=16.0, use_utility=True, use_states_info_gain=True, use_param_info_gain=False): + # policy --> n_levels_factor_f x 1 + # factor --> n_levels_factor_f x n_policies + ## vmap across policies + compute_G_fixed_states = partial(compute_G_policy, qs_init, A, B, C, pA, pB, A_dependencies, B_dependencies, + use_utility=use_utility, use_states_info_gain=use_states_info_gain, use_param_info_gain=use_param_info_gain) + + # only in the case of policy-dependent qs_inits + # in_axes_list = (1,) * n_factors + # all_efe_of_policies = vmap(compute_G_policy, in_axes=(in_axes_list, 0))(qs_init_pi, policy_matrix) + + # policies needs to be an NDarray of shape (n_policies, n_timepoints, n_control_factors) + neg_efe_all_policies = vmap(compute_G_fixed_states)(policy_matrix) + + return nn.softmax(gamma * neg_efe_all_policies + log_stable(E)), neg_efe_all_policies + +def compute_expected_state(qs_prior, B, u_t, B_dependencies=None): + """ + Compute posterior over next state, given belief about previous state, transition model and action... + """ + #Note: this algorithm is only correct if each factor depends only on itself. For any interactions, + # we will have empirical priors with codependent factors. + assert len(u_t) == len(B) + qs_next = [] + for B_f, u_f, deps in zip(B, u_t, B_dependencies): + relevant_factors = [qs_prior[idx] for idx in deps] + qs_next_f = factor_dot(B_f[...,u_f], relevant_factors, keep_dims=(0,)) + qs_next.append(qs_next_f) + + # P(s'|s, u) = \sum_{s, u} P(s'|s) P(s|u) P(u|pi)P(pi) because u pi + return qs_next + +def compute_expected_state_and_Bs(qs_prior, B, u_t): + """ + Compute posterior over next state, given belief about previous state, transition model and action... + """ + assert len(u_t) == len(B) + qs_next = [] + Bs = [] + for qs_f, B_f, u_f in zip(qs_prior, B, u_t): + qs_next.append( B_f[..., u_f].dot(qs_f) ) + Bs.append(B_f[..., u_f]) + + return qs_next, Bs + +def compute_expected_obs(qs, A, A_dependencies): + """ + New version of expected observation (computation of Q(o|pi)) that takes into account sparse dependencies between observation + modalities and hidden state factors + """ + + def compute_expected_obs_modality(A_m, m): + deps = A_dependencies[m] + relevant_factors = [qs[idx] for idx in deps] + return factor_dot(A_m, relevant_factors, keep_dims=(0,)) + + return jtu.tree_map(compute_expected_obs_modality, A, list(range(len(A)))) + +def compute_info_gain(qs, qo, A, A_dependencies): + """ + New version of expected information gain that takes into account sparse dependencies between observation modalities and hidden state factors. + """ + + def compute_info_gain_for_modality(qo_m, A_m, m): + H_qo = - xlogy(qo_m, qo_m).sum() + # H_qo = - (qo_m * log_stable(qo_m)).sum() + H_A_m = - xlogy(A_m, A_m).sum(0) + # H_A_m = - (A_m * log_stable(A_m)).sum(0) + deps = A_dependencies[m] + relevant_factors = [qs[idx] for idx in deps] + qs_H_A_m = factor_dot(H_A_m, relevant_factors) + return H_qo - qs_H_A_m + + info_gains_per_modality = jtu.tree_map(compute_info_gain_for_modality, qo, A, list(range(len(A)))) + + return jtu.tree_reduce(lambda x,y: x+y, info_gains_per_modality) + +# qs_H_A = 0 # expected entropy of the likelihood, under Q(s) +# H_qo = 0 # marginal entropy of Q(o) +# for a, o, deps in zip(A, qo, A_dependencies): +# relevant_factors = jtu.tree_map(lambda idx: qs[idx], deps) +# qs_joint_relevant = relevant_factors[0] +# for q in relevant_factors[1:]: +# qs_joint_relevant = jnp.expand_dims(qs_joint_relevant, -1) * q +# H_A_m = -(a * log_stable(a)).sum(0) +# qs_H_A += (H_A_m * qs_joint_relevant).sum() + +# H_qo -= (o * log_stable(o)).sum() + +def compute_expected_utility(qo, C): + + util = 0. + for o_m, C_m in zip(qo, C): + util += (o_m * C_m).sum() + + return util + +def calc_pA_info_gain(pA, qo, qs, A_dependencies): + """ + Compute expected Dirichlet information gain about parameters ``pA`` for a given posterior predictive distribution over observations ``qo`` and states ``qs``. + + Parameters + ---------- + pA: ``numpy.ndarray`` of dtype object + Dirichlet parameters over observation model (same shape as ``A``) + qo: ``list`` of ``numpy.ndarray`` of dtype object + Predictive posterior beliefs over observations; stores the beliefs about + observations expected under the policy at some arbitrary time ``t`` + qs: ``list`` of ``numpy.ndarray`` of dtype object + Predictive posterior beliefs over hidden states, stores the beliefs about + hidden states expected under the policy at some arbitrary time ``t`` + + Returns + ------- + infogain_pA: float + Surprise (about Dirichlet parameters) expected for the pair of posterior predictive distributions ``qo`` and ``qs`` + """ + + wA = lambda pa: spm_wnorm(pa) * (pa > 0.) + fd = lambda x, i: factor_dot(x, [s for f, s in enumerate(qs) if f in A_dependencies[i]], keep_dims=(0,))[..., None] + pA_infogain_per_modality = jtu.tree_map( + lambda pa, qo, m: qo.dot(fd( wA(pa), m)), pA, qo, list(range(len(qo))) + ) + infogain_pA = jtu.tree_reduce(lambda x, y: x + y, pA_infogain_per_modality)[0] + return infogain_pA + +def calc_pB_info_gain(pB, qs_t, qs_t_minus_1, B_dependencies, u_t_minus_1): + """ + Compute expected Dirichlet information gain about parameters ``pB`` under a given policy + + Parameters + ---------- + pB: ``Array`` of dtype object + Dirichlet parameters over transition model (same shape as ``B``) + qs_t: ``list`` of ``Array`` of dtype object + Predictive posterior beliefs over hidden states expected under the policy at time ``t`` + qs_t_minus_1: ``list`` of ``Array`` of dtype object + Posterior over hidden states at time ``t-1`` (before receiving observations) + u_t_minus_1: "Array" + Actions in time step t-1 for each factor + + Returns + ------- + infogain_pB: float + Surprise (about Dirichlet parameters) expected under the policy in question + """ + + wB = lambda pb: spm_wnorm(pb) * (pb > 0.) + fd = lambda x, i: factor_dot(x, [s for f, s in enumerate(qs_t_minus_1) if f in B_dependencies[i]], keep_dims=(0,))[..., None] + + pB_infogain_per_factor = jtu.tree_map(lambda pb, qs, f: qs.dot(fd(wB(pb[..., u_t_minus_1[f]]), f)), pB, qs_t, list(range(len(qs_t)))) + infogain_pB = jtu.tree_reduce(lambda x, y: x + y, pB_infogain_per_factor)[0] + return infogain_pB + +def compute_G_policy(qs_init, A, B, C, pA, pB, A_dependencies, B_dependencies, policy_i, use_utility=True, use_states_info_gain=True, use_param_info_gain=False): + """ Write a version of compute_G_policy that does the same computations as `compute_G_policy` but using `lax.scan` instead of a for loop. """ + + def scan_body(carry, t): + + qs, neg_G = carry + + qs_next = compute_expected_state(qs, B, policy_i[t], B_dependencies) + + qo = compute_expected_obs(qs_next, A, A_dependencies) + + info_gain = compute_info_gain(qs_next, qo, A, A_dependencies) if use_states_info_gain else 0. + + utility = compute_expected_utility(qo, C) if use_utility else 0. + + param_info_gain = calc_pA_info_gain(pA, qo, qs_next) if use_param_info_gain else 0. + param_info_gain += calc_pB_info_gain(pB, qs_next, qs, policy_i[t]) if use_param_info_gain else 0. + + neg_G += info_gain + utility + param_info_gain + + return (qs_next, neg_G), None + + qs = qs_init + neg_G = 0. + final_state, _ = lax.scan(scan_body, (qs, neg_G), jnp.arange(policy_i.shape[0])) + qs_final, neg_G = final_state + return neg_G + +def compute_G_policy_inductive(qs_init, A, B, C, pA, pB, A_dependencies, B_dependencies, I, policy_i, inductive_epsilon=1e-3, use_utility=True, use_states_info_gain=True, use_param_info_gain=False, use_inductive=False): + """ + Write a version of compute_G_policy that does the same computations as `compute_G_policy` but using `lax.scan` instead of a for loop. + This one further adds computations used for inductive planning. + """ + + def scan_body(carry, t): + + qs, neg_G = carry + + qs_next = compute_expected_state(qs, B, policy_i[t], B_dependencies) + + qo = compute_expected_obs(qs_next, A, A_dependencies) + + info_gain = compute_info_gain(qs_next, qo, A, A_dependencies) if use_states_info_gain else 0. + + utility = compute_expected_utility(qo, C) if use_utility else 0. + + inductive_value = calc_inductive_value_t(qs_init, qs_next, I, epsilon=inductive_epsilon) if use_inductive else 0. + + param_info_gain = calc_pA_info_gain(pA, qo, qs_next, A_dependencies) if use_param_info_gain else 0. + param_info_gain += calc_pB_info_gain(pB, qs_next, qs, B_dependencies, policy_i[t]) if use_param_info_gain else 0. + + neg_G += info_gain + utility - param_info_gain + inductive_value + + return (qs_next, neg_G), None + + qs = qs_init + neg_G = 0. + final_state, _ = lax.scan(scan_body, (qs, neg_G), jnp.arange(policy_i.shape[0])) + _, neg_G = final_state + return neg_G + +def update_posterior_policies_inductive(policy_matrix, qs_init, A, B, C, E, pA, pB, A_dependencies, B_dependencies, I, gamma=16.0, inductive_epsilon=1e-3, use_utility=True, use_states_info_gain=True, use_param_info_gain=False, use_inductive=True): + # policy --> n_levels_factor_f x 1 + # factor --> n_levels_factor_f x n_policies + ## vmap across policies + compute_G_fixed_states = partial(compute_G_policy_inductive, qs_init, A, B, C, pA, pB, A_dependencies, B_dependencies, I, inductive_epsilon=inductive_epsilon, + use_utility=use_utility, use_states_info_gain=use_states_info_gain, use_param_info_gain=use_param_info_gain, use_inductive=use_inductive) + + # only in the case of policy-dependent qs_inits + # in_axes_list = (1,) * n_factors + # all_efe_of_policies = vmap(compute_G_policy, in_axes=(in_axes_list, 0))(qs_init_pi, policy_matrix) + + # policies needs to be an NDarray of shape (n_policies, n_timepoints, n_control_factors) + neg_efe_all_policies = vmap(compute_G_fixed_states)(policy_matrix) + + return nn.softmax(gamma * neg_efe_all_policies + log_stable(E)), neg_efe_all_policies + +def generate_I_matrix(H: List[Array], B: List[Array], threshold: float, depth: int): + """ + Generates the `I` matrices used in inductive planning. These matrices stores the probability of reaching the goal state backwards from state j (columns) after i (rows) steps. + Parameters + ---------- + H: ``list`` of ``jax.numpy.ndarray`` + Constraints over desired states (1 if you want to reach that state, 0 otherwise) + B: ``list`` of ``jax.numpy.ndarray`` + Dynamics likelihood mapping or 'transition model', mapping from hidden states at ``t`` to hidden states at ``t+1``, given some control state ``u``. + Each element ``B[f]`` of this object array stores a 3-D tensor for hidden state factor ``f``, whose entries ``B[f][s, v, u]`` store the probability + of hidden state level ``s`` at the current time, given hidden state level ``v`` and action ``u`` at the previous time. + threshold: ``float`` + The threshold for pruning transitions that are below a certain probability + depth: ``int`` + The temporal depth of the backward induction + + Returns + ---------- + I: ``numpy.ndarray`` of dtype object + For each state factor, contains a 2D ``numpy.ndarray`` whose element i,j yields the probability + of reaching the goal state backwards from state j after i steps. + """ + + num_factors = len(H) + I = [] + for f in range(num_factors): + """ + For each factor, we need to compute the probability of reaching the goal state + """ + + # If there exists an action that allows transitioning + # from state to next_state, with probability larger than threshold + # set b_reachable[current_state, previous_state] to 1 + b_reachable = jnp.where(B[f] > threshold, 1.0, 0.0).sum(axis=-1) + b_reachable = jnp.where(b_reachable > 0., 1.0, 0.0) + + def step_fn(carry, i): + I_prev = carry + I_next = jnp.dot(b_reachable, I_prev) + I_next = jnp.where(I_next > 0.1, 1.0, 0.0) # clamp I_next to 1.0 if it's above 0.1, 0 otherwise + return I_next, I_next + + _, I_f = lax.scan(step_fn, H[f], jnp.arange(depth-1)) + I_f = jnp.concatenate([H[f][None,...], I_f], axis=0) + + I.append(I_f) + + return I + +def calc_inductive_value_t(qs, qs_next, I, epsilon=1e-3): + """ + Computes the inductive value of a state at a particular time (translation of @tverbele's `numpy` implementation of inductive planning, formerly + called `calc_inductive_cost`). + + Parameters + ---------- + qs: ``list`` of ``jax.numpy.ndarray`` + Marginal posterior beliefs over hidden states at a given timepoint. + qs_next: ```list`` of ``jax.numpy.ndarray`` + Predictive posterior beliefs over hidden states expected under the policy. + I: ``numpy.ndarray`` of dtype object + For each state factor, contains a 2D ``numpy.ndarray`` whose element i,j yields the probability + of reaching the goal state backwards from state j after i steps. + epsilon: ``float`` + Value that tunes the strength of the inductive value (how much it contributes to the expected free energy of policies) + + Returns + ------- + inductive_val: float + Value (negative inductive cost) of visiting this state using backwards induction under the policy in question + """ + + # initialise inductive value + inductive_val = 0. + + log_eps = log_stable(epsilon) + for f in range(len(qs)): + # we also assume precise beliefs here?! + idx = jnp.argmax(qs[f]) + # m = arg max_n p_n < sup p + + # i.e. find first entry at which I_idx equals 1, and then m is the index before that + m = jnp.maximum(jnp.argmax(I[f][:, idx])-1, 0) + I_m = (1. - I[f][m, :]) * log_eps + path_available = jnp.clip(I[f][:, idx].sum(0), min=0, max=1) # if there are any 1's at all in that column of I, then this == 1, otherwise 0 + inductive_val += path_available * I_m.dot(qs_next[f]) # scaling by path_available will nullify the addition of inductive value in the case we find no path to goal (i.e. when no goal specified) + + return inductive_val + +# if __name__ == '__main__': + +# from jax import random as jr +# key = jr.PRNGKey(1) +# num_obs = [3, 4] + +# A = [jr.uniform(key, shape = (no, 2, 2)) for no in num_obs] +# B = [jr.uniform(key, shape = (2, 2, 2)), jr.uniform(key, shape = (2, 2, 2))] +# C = [log_stable(jnp.array([0.8, 0.1, 0.1])), log_stable(jnp.ones(4)/4)] +# policy_1 = jnp.array([[0, 1], +# [1, 1]]) +# policy_2 = jnp.array([[1, 0], +# [0, 0]]) +# policy_matrix = jnp.stack([policy_1, policy_2]) # 2 x 2 x 2 tensor + +# qs_init = [jnp.ones(2)/2, jnp.ones(2)/2] +# neg_G_all_policies = jit(update_posterior_policies)(policy_matrix, qs_init, A, B, C) +# print(neg_G_all_policies) diff --git a/pymdp/jax/inference.py b/pymdp/jax/inference.py new file mode 100644 index 00000000..790ae354 --- /dev/null +++ b/pymdp/jax/inference.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# pylint: disable=no-member + +import jax.numpy as jnp +from .algos import run_factorized_fpi, run_mmp, run_vmp +from jax import tree_util as jtu + +def update_posterior_states( + A, + B, + obs, + past_actions, + prior=None, + qs_hist=None, + A_dependencies=None, + B_dependencies=None, + num_iter=16, + method='fpi' + ): + + if method == 'fpi' or method == "ovf": + # format obs to select only last observation + curr_obs = jtu.tree_map(lambda x: x[-1], obs) + qs = run_factorized_fpi(A, curr_obs, prior, A_dependencies, num_iter=num_iter) + else: + # format B matrices using action sequences here + # TODO: past_actions can be None + if past_actions is not None: + nf = len(B) + actions_tree = [past_actions[:, i] for i in range(nf)] + + # move time steps to the leading axis (leftmost) + # this assumes that a policy is always specified as the rightmost axis of Bs + B = jtu.tree_map(lambda b, a_idx: jnp.moveaxis(b[..., a_idx], -1, 0), B, actions_tree) + else: + B = None + + # outputs of both VMP and MMP should be a list of hidden state factors, where each qs[f].shape = (T, batch_dim, num_states_f) + if method == 'vmp': + qs = run_vmp(A, B, obs, prior, A_dependencies, B_dependencies, num_iter=num_iter) + if method == 'mmp': + qs = run_mmp(A, B, obs, prior, A_dependencies, B_dependencies, num_iter=num_iter) + + if qs_hist is not None: + if method == 'fpi' or method == "ovf": + qs_hist = jtu.tree_map(lambda x, y: jnp.concatenate([x, jnp.expand_dims(y, 0)], 0), qs_hist, qs) + else: + #TODO: return entire history of beliefs + qs_hist = qs + else: + if method == 'fpi' or method == "ovf": + qs_hist = jtu.tree_map(lambda x: jnp.expand_dims(x, 0), qs) + else: + qs_hist = qs + + return qs_hist + diff --git a/pymdp/jax/learning.py b/pymdp/jax/learning.py new file mode 100644 index 00000000..c075aab6 --- /dev/null +++ b/pymdp/jax/learning.py @@ -0,0 +1,314 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# pylint: disable=no-member + +import numpy as np +from .maths import multidimensional_outer +from jax.tree_util import tree_map +from jax import vmap +import jax.numpy as jnp + +def update_obs_likelihood_dirichlet_m(pA_m, obs_m, qs, dependencies_m, lr=1.0): + """ JAX version of ``pymdp.learning.update_obs_likelihood_dirichlet_m`` """ + # pA_m - parameters of the dirichlet from the prior + # pA_m.shape = (no_m x num_states[k] x num_states[j] x ... x num_states[n]) where (k, j, n) are indices of the hidden state factors that are parents of modality m + + # \alpha^{*} = \alpha_{0} + \kappa * \sum_{t=t_begin}^{t=T} o_{m,t} \otimes \mathbf{s}_{f \in parents(m), t} + + # \alpha^{*} is the VFE-minimizing solution for the parameters of q(A) + # \alpha_{0} are the Dirichlet parameters of p(A) + # o_{m,t} = observation (one-hot vector) of modality m at time t + # \mathbf{s}_{f \in parents(m), t} = categorical parameters of marginal posteriors over hidden state factors that are parents of modality m, at time t + # \otimes is a multidimensional outer product, not just a outer product of two vectors + # \kappa is an optional learning rate + + relevant_factors = tree_map(lambda f_idx: qs[f_idx], dependencies_m) + + dfda = vmap(multidimensional_outer)([obs_m] + relevant_factors).sum(axis=0) + + return pA_m + lr * dfda + +def update_obs_likelihood_dirichlet(pA, obs, qs, A_dependencies, lr=1.0): + """ JAX version of ``pymdp.learning.update_obs_likelihood_dirichlet`` """ + + update_A_fn = lambda pA_m, obs_m, dependencies_m: update_obs_likelihood_dirichlet_m(pA_m, obs_m, qs, dependencies_m, lr=lr) + qA = tree_map(update_A_fn, pA, obs, A_dependencies) + + return qA + +def update_state_likelihood_dirichlet_f(pB_f, actions_f, current_qs, qs_seq, dependencies_f, lr=1.0): + """ JAX version of ``pymdp.learning.update_state_likelihood_dirichlet_f`` """ + # pB_f - parameters of the dirichlet from the prior + # pB_f.shape = (num_states[f] x num_states[f] x num_actions[f]) where f is the index of the hidden state factor + + # \alpha^{*} = \alpha_{0} + \kappa * \sum_{t=t_begin}^{t=T} \mathbf{s}_{f, t} \otimes \mathbf{s}_{f, t-1} \otimes \mathbf{a}_{f, t-1} + + # \alpha^{*} is the VFE-minimizing solution for the parameters of q(B) + # \alpha_{0} are the Dirichlet parameters of p(B) + # \mathbf{s}_{f, t} = categorical parameters of marginal posteriors over hidden state factor f, at time t + # \mathbf{a}_{f, t-1} = categorical parameters of marginal posteriors over control factor f, at time t-1 + # \otimes is a multidimensional outer product, not just a outer product of two vectors + # \kappa is an optional learning rate + + past_qs = tree_map(lambda f_idx: qs_seq[f_idx][:-1], dependencies_f) + dfdb = vmap(multidimensional_outer)([current_qs[1:]] + past_qs + [actions_f]).sum(axis=0) + qB_f = pB_f + lr * dfdb + + return qB_f + +def update_state_likelihood_dirichlet(pB, beliefs, actions_onehot, B_dependencies, lr=1.0): + + update_B_f_fn = lambda pB_f, action_f, qs_f, dependencies_f: update_state_likelihood_dirichlet_f(pB_f, action_f, qs_f, beliefs, dependencies_f, lr=lr) + qB = tree_map(update_B_f_fn, pB, actions_onehot, beliefs, B_dependencies) + + return qB + + +def update_state_prior_dirichlet( + pD, qs, lr=1.0, factors="all" +): + """ + Update Dirichlet parameters of the initial hidden state distribution + (prior beliefs about hidden states at the beginning of the inference window). + + Parameters + ----------- + pD: ``numpy.ndarray`` of dtype object + Prior Dirichlet parameters over initial hidden state prior (same shape as ``qs``) + qs: 1D ``numpy.ndarray`` or ``numpy.ndarray`` of dtype object + Marginal posterior beliefs over hidden states at current timepoint + lr: float, default ``1.0`` + Learning rate, scale of the Dirichlet pseudo-count update. + factors: ``list``, default "all" + Indices (ranging from 0 to ``n_factors - 1``) of the hidden state factors to include + in learning. Defaults to "all", meaning that factor-specific sub-vectors of ``pD`` + are all updated using the corresponding hidden state distributions. + + Returns + ----------- + qD: ``numpy.ndarray`` of dtype object + Posterior Dirichlet parameters over initial hidden state prior (same shape as ``qs``), after having updated it with state beliefs. + """ + + num_factors = len(pD) + + qD = copy.deepcopy(pD) + + if factors == "all": + factors = list(range(num_factors)) + + for factor in factors: + idx = pD[factor] > 0 # only update those state level indices that have some prior probability + qD[factor][idx] += (lr * qs[factor][idx]) + + return qD + +def _prune_prior(prior, levels_to_remove, dirichlet = False): + """ + Function for pruning a prior Categorical distribution (e.g. C, D) + + Parameters + ----------- + prior: 1D ``numpy.ndarray`` or ``numpy.ndarray`` of dtype object + The vector(s) containing the priors over hidden states of a generative model, e.g. the prior over hidden states (``D`` vector). + levels_to_remove: ``list`` of ``int``, ``list`` of ``list`` + A ``list`` of the levels (indices of the support) to remove. If the prior in question has multiple hidden state factors / multiple observation modalities, + then this will be a ``list`` of ``list``, where each sub-list within ``levels_to_remove`` will contain the levels to prune for a particular hidden state factor or modality + dirichlet: ``Bool``, default ``False`` + A Boolean flag indicating whether the input vector(s) is/are a Dirichlet distribution, and therefore should not be normalized at the end. + @TODO: Instead, the dirichlet parameters from the pruned levels should somehow be re-distributed among the remaining levels + + Returns + ----------- + reduced_prior: 1D ``numpy.ndarray`` or ``numpy.ndarray`` of dtype object + The prior vector(s), after pruning, that lacks the hidden state or modality levels indexed by ``levels_to_remove`` + """ + + if utils.is_obj_array(prior): # in case of multiple hidden state factors + + assert all([type(levels) == list for levels in levels_to_remove]) + + num_factors = len(prior) + + reduced_prior = utils.obj_array(num_factors) + + factors_to_remove = [] + for f, s_i in enumerate(prior): # loop over factors (or modalities) + + ns = len(s_i) + levels_to_keep = list(set(range(ns)) - set(levels_to_remove[f])) + if len(levels_to_keep) == 0: + print(f'Warning... removing ALL levels of factor {f} - i.e. the whole hidden state factor is being removed\n') + factors_to_remove.append(f) + else: + if not dirichlet: + reduced_prior[f] = utils.norm_dist(s_i[levels_to_keep]) + else: + raise(NotImplementedError("Need to figure out how to re-distribute concentration parameters from pruned levels, across remaining levels")) + + + if len(factors_to_remove) > 0: + factors_to_keep = list(set(range(num_factors)) - set(factors_to_remove)) + reduced_prior = reduced_prior[factors_to_keep] + + else: # in case of one hidden state factor + + assert all([type(level_i) == int for level_i in levels_to_remove]) + + ns = len(prior) + levels_to_keep = list(set(range(ns)) - set(levels_to_remove)) + + if not dirichlet: + reduced_prior = utils.norm_dist(prior[levels_to_keep]) + else: + raise(NotImplementedError("Need to figure out how to re-distribute concentration parameters from pruned levels, across remaining levels")) + + return reduced_prior + +def _prune_A(A, obs_levels_to_prune, state_levels_to_prune, dirichlet = False): + """ + Function for pruning a observation likelihood model (with potentially multiple hidden state factors) + :meta private: + Parameters + ----------- + A: ``numpy.ndarray`` with ``ndim >= 2``, or ``numpy.ndarray`` of dtype object + Sensory likelihood mapping or 'observation model', mapping from hidden states to observations. Each element ``A[m]`` of + stores an ``numpy.ndarray`` multidimensional array for observation modality ``m``, whose entries ``A[m][i, j, k, ...]`` store + the probability of observation level ``i`` given hidden state levels ``j, k, ...`` + obs_levels_to_prune: ``list`` of int or ``list`` of ``list``: + A ``list`` of the observation levels to remove. If the likelihood in question has multiple observation modalities, + then this will be a ``list`` of ``list``, where each sub-list within ``obs_levels_to_prune`` will contain the observation levels + to remove for a particular observation modality + state_levels_to_prune: ``list`` of ``int`` + A ``list`` of the hidden state levels to remove (this will be the same across modalities) + dirichlet: ``Bool``, default ``False`` + A Boolean flag indicating whether the input array(s) is/are a Dirichlet distribution, and therefore should not be normalized at the end. + @TODO: Instead, the dirichlet parameters from the pruned columns should somehow be re-distributed among the remaining columns + + Returns + ----------- + reduced_A: ``numpy.ndarray`` with ndim >= 2, or ``numpy.ndarray ``of dtype object + The observation model, after pruning, which lacks the observation or hidden state levels given by the arguments ``obs_levels_to_prune`` and ``state_levels_to_prune`` + """ + + columns_to_keep_list = [] + if utils.is_obj_array(A): + num_states = A[0].shape[1:] + for f, ns in enumerate(num_states): + indices_f = np.array( list(set(range(ns)) - set(state_levels_to_prune[f])), dtype = np.intp) + columns_to_keep_list.append(indices_f) + else: + num_states = A.shape[1] + indices = np.array( list(set(range(num_states)) - set(state_levels_to_prune)), dtype = np.intp ) + columns_to_keep_list.append(indices) + + if utils.is_obj_array(A): # in case of multiple observation modality + + assert all([type(o_m_levels) == list for o_m_levels in obs_levels_to_prune]) + + num_modalities = len(A) + + reduced_A = utils.obj_array(num_modalities) + + for m, A_i in enumerate(A): # loop over modalities + + no = A_i.shape[0] + rows_to_keep = np.array(list(set(range(no)) - set(obs_levels_to_prune[m])), dtype = np.intp) + + reduced_A[m] = A_i[np.ix_(rows_to_keep, *columns_to_keep_list)] + if not dirichlet: + reduced_A = utils.norm_dist_obj_arr(reduced_A) + else: + raise(NotImplementedError("Need to figure out how to re-distribute concentration parameters from pruned rows/columns, across remaining rows/columns")) + else: # in case of one observation modality + + assert all([type(o_levels_i) == int for o_levels_i in obs_levels_to_prune]) + + no = A.shape[0] + rows_to_keep = np.array(list(set(range(no)) - set(obs_levels_to_prune)), dtype = np.intp) + + reduced_A = A[np.ix_(rows_to_keep, *columns_to_keep_list)] + + if not dirichlet: + reduced_A = utils.norm_dist(reduced_A) + else: + raise(NotImplementedError("Need to figure out how to re-distribute concentration parameters from pruned rows/columns, across remaining rows/columns")) + + return reduced_A + +def _prune_B(B, state_levels_to_prune, action_levels_to_prune, dirichlet = False): + """ + Function for pruning a transition likelihood model (with potentially multiple hidden state factors) + + Parameters + ----------- + B: ``numpy.ndarray`` of ``ndim == 3`` or ``numpy.ndarray`` of dtype object + Dynamics likelihood mapping or 'transition model', mapping from hidden states at `t` to hidden states at `t+1`, given some control state `u`. + Each element B[f] of this object array stores a 3-D tensor for hidden state factor `f`, whose entries `B[f][s, v, u] store the probability + of hidden state level `s` at the current time, given hidden state level `v` and action `u` at the previous time. + state_levels_to_prune: ``list`` of ``int`` or ``list`` of ``list`` + A ``list`` of the state levels to remove. If the likelihood in question has multiple hidden state factors, + then this will be a ``list`` of ``list``, where each sub-list within ``state_levels_to_prune`` will contain the state levels + to remove for a particular hidden state factor + action_levels_to_prune: ``list`` of ``int`` or ``list`` of ``list`` + A ``list`` of the control state or action levels to remove. If the likelihood in question has multiple control state factors, + then this will be a ``list`` of ``list``, where each sub-list within ``action_levels_to_prune`` will contain the control state levels + to remove for a particular control state factor + dirichlet: ``Bool``, default ``False`` + A Boolean flag indicating whether the input array(s) is/are a Dirichlet distribution, and therefore should not be normalized at the end. + @TODO: Instead, the dirichlet parameters from the pruned rows/columns should somehow be re-distributed among the remaining rows/columns + + Returns + ----------- + reduced_B: ``numpy.ndarray`` of `ndim == 3` or ``numpy.ndarray`` of dtype object + The transition model, after pruning, which lacks the hidden state levels/action levels given by the arguments ``state_levels_to_prune`` and ``action_levels_to_prune`` + """ + + slices_to_keep_list = [] + + if utils.is_obj_array(B): + + num_controls = [B_arr.shape[2] for _, B_arr in enumerate(B)] + + for c, nc in enumerate(num_controls): + indices_c = np.array( list(set(range(nc)) - set(action_levels_to_prune[c])), dtype = np.intp) + slices_to_keep_list.append(indices_c) + else: + num_controls = B.shape[2] + slices_to_keep = np.array( list(set(range(num_controls)) - set(action_levels_to_prune)), dtype = np.intp ) + + if utils.is_obj_array(B): # in case of multiple hidden state factors + + assert all([type(ns_f_levels) == list for ns_f_levels in state_levels_to_prune]) + + num_factors = len(B) + + reduced_B = utils.obj_array(num_factors) + + for f, B_f in enumerate(B): # loop over modalities + + ns = B_f.shape[0] + states_to_keep = np.array(list(set(range(ns)) - set(state_levels_to_prune[f])), dtype = np.intp) + + reduced_B[f] = B_f[np.ix_(states_to_keep, states_to_keep, slices_to_keep_list[f])] + + if not dirichlet: + reduced_B = utils.norm_dist_obj_arr(reduced_B) + else: + raise(NotImplementedError("Need to figure out how to re-distribute concentration parameters from pruned rows/columns, across remaining rows/columns")) + + else: # in case of one hidden state factor + + assert all([type(state_level_i) == int for state_level_i in state_levels_to_prune]) + + ns = B.shape[0] + states_to_keep = np.array(list(set(range(ns)) - set(state_levels_to_prune)), dtype = np.intp) + + reduced_B = B[np.ix_(states_to_keep, states_to_keep, slices_to_keep)] + + if not dirichlet: + reduced_B = utils.norm_dist(reduced_B) + else: + raise(NotImplementedError("Need to figure out how to re-distribute concentration parameters from pruned rows/columns, across remaining rows/columns")) + + return reduced_B diff --git a/pymdp/jax/likelihoods.py b/pymdp/jax/likelihoods.py new file mode 100644 index 00000000..3f44a152 --- /dev/null +++ b/pymdp/jax/likelihoods.py @@ -0,0 +1,45 @@ +import jax.numpy as jnp +import numpyro.distributions as dist +from jax import lax +from numpyro import plate, sample, deterministic +from numpyro.contrib.control_flow import scan + +def evolve_trials(agent, data): + + def step_fn(carry, xs): + empirical_prior = carry + outcomes = xs['outcomes'] + qs = agent.infer_states(outcomes, empirical_prior) + q_pi, _ = agent.infer_policies(qs) + + probs = agent.action_probabilities(q_pi) + + actions = xs['actions'] + empirical_prior = agent.update_empirical_prior(actions, qs) + #TODO: if outcomes and actions are None, generate samples + return empirical_prior, (probs, outcomes, actions) + + prior = agent.D + _, res = lax.scan(step_fn, prior, data) + + return res + +def aif_likelihood(Nb, Nt, Na, data, agent): + # Na -> batch dimension - number of different subjects/agents + # Nb -> number of experimental blocks + # Nt -> number of trials within each block + + def step_fn(carry, xs): + probs, outcomes, actions = evolve_trials(agent, xs) + + deterministic('outcomes', outcomes) + + with plate('num_agents', Na): + with plate('num_trials', Nt): + sample('actions', dist.Categorical(logits=probs).to_event(1), obs=actions) + + return None, None + + # TODO: See if some information has to be passed from one block to the next and change init and carry accordingly + init = None + scan(step_fn, init, data, length=Nb) \ No newline at end of file diff --git a/pymdp/jax/maths.py b/pymdp/jax/maths.py new file mode 100644 index 00000000..58b34aff --- /dev/null +++ b/pymdp/jax/maths.py @@ -0,0 +1,144 @@ +import jax.numpy as jnp + +from functools import partial +from typing import Optional, Tuple, List +from jax import tree_util, nn, jit +from opt_einsum import contract + +MINVAL = jnp.finfo(float).eps + +def log_stable(x): + return jnp.log(jnp.clip(x, min=MINVAL)) + +@partial(jit, static_argnames=['keep_dims']) +def factor_dot(M, xs, keep_dims: Optional[Tuple[int]] = None): + """ Dot product of a multidimensional array with `x`. + + Parameters + ---------- + - `qs` [list of 1D numpy.ndarray] - list of jnp.ndarrays + + Returns + ------- + - `Y` [1D numpy.ndarray] - the result of the dot product + """ + d = len(keep_dims) if keep_dims is not None else 0 + assert M.ndim == len(xs) + d + keep_dims = () if keep_dims is None else keep_dims + dims = tuple((i,) for i in range(M.ndim) if i not in keep_dims) + return factor_dot_flex(M, xs, dims, keep_dims=keep_dims) + +@partial(jit, static_argnames=['dims', 'keep_dims']) +def factor_dot_flex(M, xs, dims: List[Tuple[int]], keep_dims: Optional[Tuple[int]] = None): + """ Dot product of a multidimensional array with `x`. + + Parameters + ---------- + - `M` [numpy.ndarray] - tensor + - 'xs' [list of numpyr.ndarray] - list of tensors + - 'dims' [list of tuples] - list of dimensions of xs tensors in tensor M + - 'keep_dims' [tuple] - tuple of integers denoting dimesions to keep + Returns + ------- + - `Y` [1D numpy.ndarray] - the result of the dot product + """ + all_dims = tuple(range(M.ndim)) + matrix = [[xs[f], dims[f]] for f in range(len(xs))] + args = [M, all_dims] + for row in matrix: + args.extend(row) + + args += [keep_dims] + return contract(*args, backend='jax') + +def compute_log_likelihood_single_modality(o_m, A_m, distr_obs=True): + """ Compute observation likelihood for a single modality (observation and likelihood)""" + if distr_obs: + expanded_obs = jnp.expand_dims(o_m, tuple(range(1, A_m.ndim))) + likelihood = (expanded_obs * A_m).sum(axis=0) + else: + likelihood = A_m[o_m] + + return log_stable(likelihood) + +def compute_log_likelihood(obs, A, distr_obs=True): + """ Compute likelihood over hidden states across observations from different modalities """ + result = tree_util.tree_map(lambda o, a: compute_log_likelihood_single_modality(o, a, distr_obs=distr_obs), obs, A) + ll = jnp.sum(jnp.stack(result), 0) + + return ll + +def compute_log_likelihood_per_modality(obs, A, distr_obs=True): + """ Compute likelihood over hidden states across observations from different modalities, and return them per modality """ + ll_all = tree_util.tree_map(lambda o, a: compute_log_likelihood_single_modality(o, a, distr_obs=distr_obs), obs, A) + + return ll_all + +def compute_accuracy(qs, obs, A): + """ Compute the accuracy portion of the variational free energy (expected log likelihood under the variational posterior) """ + + ll = compute_log_likelihood(obs, A) + + x = qs[0] + for q in qs[1:]: + x = jnp.expand_dims(x, -1) * q + + joint = log_likelihood * x + return joint.sum() + +def compute_free_energy(qs, prior, obs, A): + """ + Calculate variational free energy by breaking its computation down into three steps: + 1. computation of the negative entropy of the posterior -H[Q(s)] + 2. computation of the cross entropy of the posterior with the prior H_{Q(s)}[P(s)] + 3. computation of the accuracy E_{Q(s)}[lnP(o|s)] + + Then add them all together -- except subtract the accuracy + """ + + vfe = 0.0 # initialize variational free energy + for q, p in zip(qs, prior): + negH_qs = q.dot(log_stable(q)) + xH_qp = -q.dot(log_stable(p)) + vfe += (negH_qs + xH_qp) + + vfe -= compute_accuracy(qs, obs, A) + + return vfe + +def multidimensional_outer(arrs): + """ Compute the outer product of a list of arrays by iteratively expanding the first array and multiplying it with the next array """ + + x = arrs[0] + for q in arrs[1:]: + x = jnp.expand_dims(x, -1) * q + + return x + +def spm_wnorm(A): + """ + Returns Expectation of logarithm of Dirichlet parameters over a set of + Categorical distributions, stored in the columns of A. + """ + A = jnp.clip(A, a_min=MINVAL) + norm = 1. / A.sum(axis=0) + avg = 1. / A + wA = norm - avg + return wA + +def dirichlet_expected_value(dir_arr): + """ + Returns Expectation of Dirichlet parameters over a set of + Categorical distributions, stored in the columns of A. + """ + dir_arr = jnp.clip(dir_arr, a_min=MINVAL) + expected_val = jnp.divide(dir_arr, dir_arr.sum(axis=0, keepdims=True)) + return expected_val + +if __name__ == '__main__': + obs = [0, 1, 2] + obs_vec = [ nn.one_hot(o, 3) for o in obs] + A = [jnp.ones((3, 2)) / 3] * 3 + res = jit(compute_log_likelihood)(obs_vec, A) + + print(res) \ No newline at end of file diff --git a/pymdp/jax/task.py b/pymdp/jax/task.py new file mode 100644 index 00000000..5de0315e --- /dev/null +++ b/pymdp/jax/task.py @@ -0,0 +1,79 @@ +# Task environmnet +from typing import Optional, List, Dict +from jaxtyping import Array, PRNGKeyArray +from functools import partial + +from equinox import Module, field, tree_at +from jax import vmap, random as jr, tree_util as jtu +import jax.numpy as jnp + +def select_probs(positions, matrix, dependency_list, actions=None): + args = tuple(p for i, p in enumerate(positions) if i in dependency_list) + args += () if actions is None else (actions,) + + return matrix[..., *args] + +def cat_sample(key, p): + a = jnp.arange(p.shape[-1]) + if p.ndim > 1: + choice = lambda key, p: jr.choice(key, a, p=p) + keys = jr.split(key, len(p)) + return vmap(choice)(keys, p) + + return jr.choice(key, a, p=p) + +class PyMDPEnv(Module): + params: Dict + states: List[List[Array]] + dependencies: Dict = field(static=True) + + def __init__( + self, params: Dict, dependencies: Dict, init_state: List[Array] = None + ): + self.params = params + self.dependencies = dependencies + + if init_state is None: + init_state = jtu.tree_map(lambda x: jnp.argmax(x, -1), self.params["D"]) + + self.states = [init_state] + + def reset(self, key: Optional[PRNGKeyArray] = None): + if key is None: + states = [self.states[0]] + else: + probs = self.params["D"] + keys = list(jr.split(key, len(probs))) + states = [jtu.tree_map(cat_sample, keys, probs)] + + return tree_at(lambda x: x.states, self, states) + + @vmap + def step(self, key: PRNGKeyArray, actions: Optional[Array] = None): + # return a list of random observations and states + key_state, key_obs = jr.split(key) + states = self.states + if actions is not None: + actions = list(actions) + _select_probs = partial(select_probs, states[-1]) + state_probs = jtu.tree_map( + _select_probs, self.params["B"], self.dependencies["B"], actions + ) + + keys = list(jr.split(key_state, len(state_probs))) + new_states = jtu.tree_map(cat_sample, keys, state_probs) + + states.append(new_states) + + else: + new_states = states[-1] + + _select_probs = partial(select_probs, new_states) + obs_probs = jtu.tree_map( + _select_probs, self.params["A"], self.dependencies["A"] + ) + + keys = list(jr.split(key_obs, len(obs_probs))) + new_obs = jtu.tree_map(cat_sample, keys, obs_probs) + + return new_obs, tree_at(lambda x: (x.states), self, states) \ No newline at end of file diff --git a/pymdp/jax/utils.py b/pymdp/jax/utils.py new file mode 100644 index 00000000..12bbc461 --- /dev/null +++ b/pymdp/jax/utils.py @@ -0,0 +1,596 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" Utility functions + +__author__: Conor Heins, Alexander Tschantz, Brennan Klein +""" + +import jax.numpy as jnp + +from typing import (Any, Callable, List, NamedTuple, Optional, Sequence, Union, Tuple) + +Tensor = Any # maybe jnp.ndarray, but typing seems not to be well defined for jax +Vector = List[Tensor] +Shape = Sequence[int] +ShapeList = list[Shape] + +def norm_dist(dist: Tensor) -> Tensor: + """ Normalizes a Categorical probability distribution""" + return dist/dist.sum(0) + +def list_array_uniform(shape_list: ShapeList) -> Vector: + """ + Creates a list of jax arrays representing uniform Categorical + distributions with shapes given by shape_list[i]. The shapes (elements of shape_list) + can either be tuples or lists. + """ + arr = [] + for shape in shape_list: + arr.append( norm_dist(jnp.ones(shape)) ) + return arr + +def list_array_zeros(shape_list: ShapeList) -> Vector: + """ + Creates a list of 1-D jax arrays filled with zeros, with shapes given by shape_list[i] + """ + arr = [] + for shape in shape_list: + arr.append( jnp.zeros(shape) ) + return arr + +def list_array_scaled(shape_list: ShapeList, scale: float=1.0) -> Vector: + """ + Creates a list of 1-D jax arrays filled with scale, with shapes given by shape_list[i] + """ + arr = [] + for shape in shape_list: + arr.append( scale * jnp.ones(shape) ) + + return arr + +# def onehot(value, num_values): +# arr = np.zeros(num_values) +# arr[value] = 1.0 +# return arr + +# def random_A_matrix(num_obs, num_states): +# if type(num_obs) is int: +# num_obs = [num_obs] +# if type(num_states) is int: +# num_states = [num_states] +# num_modalities = len(num_obs) + +# A = obj_array(num_modalities) +# for modality, modality_obs in enumerate(num_obs): +# modality_shape = [modality_obs] + num_states +# modality_dist = np.random.rand(*modality_shape) +# A[modality] = norm_dist(modality_dist) +# return A + +# def random_B_matrix(num_states, num_controls): +# if type(num_states) is int: +# num_states = [num_states] +# if type(num_controls) is int: +# num_controls = [num_controls] +# num_factors = len(num_states) +# assert len(num_controls) == len(num_states) + +# B = obj_array(num_factors) +# for factor in range(num_factors): +# factor_shape = (num_states[factor], num_states[factor], num_controls[factor]) +# factor_dist = np.random.rand(*factor_shape) +# B[factor] = norm_dist(factor_dist) +# return B + +# def random_single_categorical(shape_list): +# """ +# Creates a random 1-D categorical distribution (or set of 1-D categoricals, e.g. multiple marginals of different factors) and returns them in an object array +# """ + +# num_sub_arrays = len(shape_list) + +# out = obj_array(num_sub_arrays) + +# for arr_idx, shape_i in enumerate(shape_list): +# out[arr_idx] = norm_dist(np.random.rand(shape_i)) + +# return out + +# def construct_controllable_B(num_states, num_controls): +# """ +# Generates a fully controllable transition likelihood array, where each +# action (control state) corresponds to a move to the n-th state from any +# other state, for each control factor +# """ + +# num_factors = len(num_states) + +# B = obj_array(num_factors) +# for factor, c_dim in enumerate(num_controls): +# tmp = np.eye(c_dim)[:, :, np.newaxis] +# tmp = np.tile(tmp, (1, 1, c_dim)) +# B[factor] = tmp.transpose(1, 2, 0) + +# return B + +# def dirichlet_like(template_categorical, scale = 1.0): +# """ +# Helper function to construct a Dirichlet distribution based on an existing Categorical distribution +# """ + +# if not is_obj_array(template_categorical): +# warnings.warn( +# "Input array is not an object array...\ +# Casting the input to an object array" +# ) +# template_categorical = to_obj_array(template_categorical) + +# n_sub_arrays = len(template_categorical) + +# dirichlet_out = obj_array(n_sub_arrays) + +# for i, arr in enumerate(template_categorical): +# dirichlet_out[i] = scale * arr + +# return dirichlet_out + +# def get_model_dimensions(A=None, B=None): + +# if A is None and B is None: +# raise ValueError( +# "Must provide either `A` or `B`" +# ) + +# if A is not None: +# num_obs = [a.shape[0] for a in A] if is_obj_array(A) else [A.shape[0]] +# num_modalities = len(num_obs) +# else: +# num_obs, num_modalities = None, None + +# if B is not None: +# num_states = [b.shape[0] for b in B] if is_obj_array(B) else [B.shape[0]] +# num_factors = len(num_states) +# else: +# if A is not None: +# num_states = list(A[0].shape[1:]) if is_obj_array(A) else list(A.shape[1:]) +# num_factors = len(num_states) +# else: +# num_states, num_factors = None, None + +# return num_obs, num_states, num_modalities, num_factors + +# def get_model_dimensions_from_labels(model_labels): + +# modalities = model_labels['observations'] +# num_modalities = len(modalities.keys()) +# num_obs = [len(modalities[modality]) for modality in modalities.keys()] + +# factors = model_labels['states'] +# num_factors = len(factors.keys()) +# num_states = [len(factors[factor]) for factor in factors.keys()] + +# if 'actions' in model_labels.keys(): + +# controls = model_labels['actions'] +# num_control_fac = len(controls.keys()) +# num_controls = [len(controls[cfac]) for cfac in controls.keys()] + +# return num_obs, num_modalities, num_states, num_factors, num_controls, num_control_fac +# else: +# return num_obs, num_modalities, num_states, num_factors + + + + +# def norm_dist_obj_arr(obj_arr): + +# normed_obj_array = obj_array(len(obj_arr)) +# for i, arr in enumerate(obj_arr): +# normed_obj_array[i] = norm_dist(arr) + +# return normed_obj_array + +# def is_normalized(dist): +# """ +# Utility function for checking whether a single distribution or set of conditional categorical distributions is normalized. +# Returns True if all distributions integrate to 1.0 +# """ + +# if is_obj_array(dist): +# normed_arrays = [] +# for i, arr in enumerate(dist): +# column_sums = arr.sum(axis=0) +# normed_arrays.append(np.allclose(column_sums, np.ones_like(column_sums))) +# out = all(normed_arrays) +# else: +# column_sums = dist.sum(axis=0) +# out = np.allclose(column_sums, np.ones_like(column_sums)) + +# return out + +# def is_obj_array(arr): +# return arr.dtype == "object" + +# def to_obj_array(arr): +# if is_obj_array(arr): +# return arr +# obj_array_out = obj_array(1) +# obj_array_out[0] = arr.squeeze() +# return obj_array_out + +# def obj_array_from_list(list_input): +# """ +# Takes a list of `numpy.ndarray` and converts them to a `numpy.ndarray` of `dtype = object` +# """ +# return np.array(list_input, dtype = object) + +# def process_observation_seq(obs_seq, n_modalities, n_observations): +# """ +# Helper function for formatting observations + +# Observations can either be `int` (converted to one-hot) +# or `tuple` (obs for each modality), or `list` (obs for each modality) +# If list, the entries could be object arrays of one-hots, in which +# case this function returns `obs_seq` as is. +# """ +# proc_obs_seq = obj_array(len(obs_seq)) +# for t, obs_t in enumerate(obs_seq): +# proc_obs_seq[t] = process_observation(obs_t, n_modalities, n_observations) +# return proc_obs_seq + +# def process_observation(obs, num_modalities, num_observations): +# """ +# Helper function for formatting observations +# USAGE NOTES: +# - If `obs` is a 1D numpy array, it must be a one-hot vector, where one entry (the entry of the observation) is 1.0 +# and all other entries are 0. This therefore assumes it's a single modality observation. If these conditions are met, then +# this function will return `obs` unchanged. Otherwise, it'll throw an error. +# - If `obs` is an int, it assumes this is a single modality observation, whose observation index is given by the value of `obs`. This function will convert +# it to be a one hot vector. +# - If `obs` is a list, it assumes this is a multiple modality observation, whose len is equal to the number of observation modalities, +# and where each entry `obs[m]` is the index of the observation, for that modality. This function will convert it into an object array +# of one-hot vectors. +# - If `obs` is a tuple, same logic as applies for list (see above). +# - if `obs` is a numpy object array (array of arrays), this function will return `obs` unchanged. +# """ + +# if isinstance(obs, np.ndarray) and not is_obj_array(obs): +# assert num_modalities == 1, "If `obs` is a 1D numpy array, `num_modalities` must be equal to 1" +# assert len(np.where(obs)[0]) == 1, "If `obs` is a 1D numpy array, it must be a one hot vector (e.g. np.array([0.0, 1.0, 0.0, ....]))" + +# if isinstance(obs, (int, np.integer)): +# obs = onehot(obs, num_observations[0]) + +# if isinstance(obs, tuple) or isinstance(obs,list): +# obs_arr_arr = obj_array(num_modalities) +# for m in range(num_modalities): +# obs_arr_arr[m] = onehot(obs[m], num_observations[m]) +# obs = obs_arr_arr + +# return obs + +# def convert_observation_array(obs, num_obs): +# """ +# Converts from SPM-style observation array to infer-actively one-hot object arrays. + +# Parameters +# ---------- +# - 'obs' [numpy 2-D nd.array]: +# SPM-style observation arrays are of shape (num_modalities, T), where each row +# contains observation indices for a different modality, and columns indicate +# different timepoints. Entries store the indices of the discrete observations +# within each modality. + +# - 'num_obs' [list]: +# List of the dimensionalities of the observation modalities. `num_modalities` +# is calculated as `len(num_obs)` in the function to determine whether we're +# dealing with a single- or multi-modality +# case. + +# Returns +# ---------- +# - `obs_t`[list]: +# A list with length equal to T, where each entry of the list is either a) an object +# array (in the case of multiple modalities) where each sub-array is a one-hot vector +# with the observation for the correspond modality, or b) a 1D numpy array (in the case +# of one modality) that is a single one-hot vector encoding the observation for the +# single modality. +# """ + +# T = obs.shape[1] +# num_modalities = len(num_obs) + +# # Initialise the output +# obs_t = [] +# # Case of one modality +# if num_modalities == 1: +# for t in range(T): +# obs_t.append(onehot(obs[0, t] - 1, num_obs[0])) +# else: +# for t in range(T): +# obs_AoA = obj_array(num_modalities) +# for g in range(num_modalities): +# # Subtract obs[g,t] by 1 to account for MATLAB vs. Python indexing +# # (MATLAB is 1-indexed) +# obs_AoA[g] = onehot(obs[g, t] - 1, num_obs[g]) +# obs_t.append(obs_AoA) + +# return obs_t + +# def insert_multiple(s, indices, items): +# for idx in range(len(items)): +# s.insert(indices[idx], items[idx]) +# return s + +# def reduce_a_matrix(A): +# """ +# Utility function for throwing away dimensions (lagging dimensions, hidden state factors) +# of a particular A matrix that are independent of the observation. +# Parameters: +# ========== +# - `A` [np.ndarray]: +# The A matrix or likelihood array that encodes probabilistic relationship +# of the generative model between hidden state factors (lagging dimensions, columns, slices, etc...) +# and observations (leading dimension, rows). +# Returns: +# ========= +# - `A_reduced` [np.ndarray]: +# The reduced A matrix, missing the lagging dimensions that correspond to hidden state factors +# that are statistically independent of observations +# - `original_factor_idx` [list]: +# List of the indices (in terms of the original dimensionality) of the hidden state factors +# that are maintained in the A matrix (and thus have an informative / non-degenerate relationship to observations +# """ + +# o_dim, num_states = A.shape[0], A.shape[1:] +# idx_vec_s = [slice(0, o_dim)] + [slice(ns) for _, ns in enumerate(num_states)] + +# original_factor_idx = [] +# excluded_factor_idx = [] # the indices of the hidden state factors that are independent of the observation and thus marginalized away +# for factor_i, ns in enumerate(num_states): + +# level_counter = 0 +# break_flag = False +# while level_counter < ns and break_flag is False: +# idx_vec_i = idx_vec_s.copy() +# idx_vec_i[factor_i+1] = slice(level_counter,level_counter+1,None) +# if not np.isclose(A.mean(axis=factor_i+1), A[tuple(idx_vec_i)].squeeze()).all(): +# break_flag = True # this means they're not independent +# original_factor_idx.append(factor_i) +# else: +# level_counter += 1 + +# if break_flag is False: +# excluded_factor_idx.append(factor_i+1) + +# A_reduced = A.mean(axis=tuple(excluded_factor_idx)).squeeze() + +# return A_reduced, original_factor_idx + +# def construct_full_a(A_reduced, original_factor_idx, num_states): +# """ +# Utility function for reconstruction a full A matrix from a reduced A matrix, using known factor indices +# to tile out the reduced A matrix along the 'non-informative' dimensions +# Parameters: +# ========== +# - `A_reduced` [np.ndarray]: +# The reduced A matrix or likelihood array that encodes probabilistic relationship +# of the generative model between hidden state factors (lagging dimensions, columns, slices, etc...) +# and observations (leading dimension, rows). +# - `original_factor_idx` [list]: +# List of hidden state indices in terms of the full hidden state factor list, that comprise +# the lagging dimensions of `A_reduced` +# - `num_states` [list]: +# The list of all the dimensionalities of hidden state factors in the full generative model. +# `A_reduced.shape[1:]` should be equal to `num_states[original_factor_idx]` +# Returns: +# ========= +# - `A` [np.ndarray]: +# The full A matrix, containing all the lagging dimensions that correspond to hidden state factors, including +# those that are statistically independent of observations + +# @ NOTE: This is the "inverse" of the reduce_a_matrix function, +# i.e. `reduce_a_matrix(construct_full_a(A_reduced, original_factor_idx, num_states)) == A_reduced, original_factor_idx` +# """ + +# o_dim = A_reduced.shape[0] # dimensionality of the support of the likelihood distribution (i.e. the number of observation levels) +# full_dimensionality = [o_dim] + num_states # full dimensionality of the output (`A`) +# fill_indices = [0] + [f+1 for f in original_factor_idx] # these are the indices of the dimensions we need to fill for this modality +# fill_dimensions = np.delete(full_dimensionality, fill_indices) + +# original_factor_dims = [num_states[f] for f in original_factor_idx] # dimensionalities of the relevant factors +# prefilled_slices = [slice(0, o_dim)] + [slice(0, ns) for ns in original_factor_dims] # these are the slices that are filled out by the provided `A_reduced` + +# A = np.zeros(full_dimensionality) + +# for item in itertools.product(*[list(range(d)) for d in fill_dimensions]): +# slice_ = list(item) +# A_indices = insert_multiple(slice_, fill_indices, prefilled_slices) #here we insert the correct values for the fill indices for this slice +# A[tuple(A_indices)] = A_reduced + +# return A + +# def create_A_matrix_stub(model_labels): + +# num_obs, _, num_states, _= get_model_dimensions_from_labels(model_labels) + +# obs_labels, state_labels = model_labels['observations'], model_labels['states'] + +# state_combinations = pd.MultiIndex.from_product(list(state_labels.values()), names=list(state_labels.keys())) +# num_state_combos = np.prod(num_states) +# # num_rows = (np.array(num_obs) * num_state_combos).sum() +# num_rows = sum(num_obs) + +# cell_values = np.zeros((num_rows, len(state_combinations))) + +# obs_combinations = [] +# for modality in obs_labels.keys(): +# levels_to_combine = [[modality]] + [obs_labels[modality]] +# # obs_combinations += num_state_combos * list(itertools.product(*levels_to_combine)) +# obs_combinations += list(itertools.product(*levels_to_combine)) + + +# obs_combinations = pd.MultiIndex.from_tuples(obs_combinations, names = ["Modality", "Level"]) + +# A_matrix = pd.DataFrame(cell_values, index = obs_combinations, columns=state_combinations) + +# return A_matrix + +# def create_B_matrix_stubs(model_labels): + +# _, _, num_states, _, num_controls, _ = get_model_dimensions_from_labels(model_labels) + +# state_labels = model_labels['states'] +# action_labels = model_labels['actions'] + +# B_matrices = {} + +# for f_idx, factor in enumerate(state_labels.keys()): + +# control_fac_name = list(action_labels)[f_idx] +# factor_list = [state_labels[factor]] + [action_labels[control_fac_name]] + +# prev_state_action_combos = pd.MultiIndex.from_product(factor_list, names=[factor, list(action_labels.keys())[f_idx]]) + +# num_state_action_combos = num_states[f_idx] * num_controls[f_idx] + +# num_rows = num_states[f_idx] + +# cell_values = np.zeros((num_rows, num_state_action_combos)) + +# next_state_list = state_labels[factor] + +# B_matrix_f = pd.DataFrame(cell_values, index = next_state_list, columns=prev_state_action_combos) + +# B_matrices[factor] = B_matrix_f + +# return B_matrices + +# def read_A_matrix(path, num_hidden_state_factors): +# raw_table = pd.read_excel(path, header=None) +# level_counts = { +# "index": raw_table.iloc[0, :].dropna().index[0] + 1, +# "header": raw_table.iloc[0, :].dropna().index[0] + num_hidden_state_factors - 1, +# } +# return pd.read_excel( +# path, +# index_col=list(range(level_counts["index"])), +# header=list(range(level_counts["header"])) +# ).astype(np.float64) + +# def read_B_matrices(path): + +# all_sheets = pd.read_excel(path, sheet_name = None, header=None) + +# level_counts = {} +# for sheet_name, raw_table in all_sheets.items(): + +# level_counts[sheet_name] = { +# "index": raw_table.iloc[0, :].dropna().index[0]+1, +# "header": raw_table.iloc[0, :].dropna().index[0]+2, +# } + +# stub_dict = {} +# for sheet_name, level_counts_sheet in level_counts.items(): +# sheet_f = pd.read_excel( +# path, +# sheet_name = sheet_name, +# index_col=list(range(level_counts_sheet["index"])), +# header=list(range(level_counts_sheet["header"])) +# ).astype(np.float64) +# stub_dict[sheet_name] = sheet_f + +# return stub_dict + +# def convert_A_stub_to_ndarray(A_stub, model_labels): +# """ +# This function converts a multi-index pandas dataframe `A_stub` into an object array of different +# A matrices, one per observation modality. +# """ + +# num_obs, num_modalities, num_states, num_factors = get_model_dimensions_from_labels(model_labels) + +# A = obj_array(num_modalities) + +# for g, modality_name in enumerate(model_labels['observations'].keys()): +# A[g] = A_stub.loc[modality_name].to_numpy().reshape(num_obs[g], *num_states) +# assert (A[g].sum(axis=0) == 1.0).all(), 'A matrix not normalized! Check your initialization....\n' + +# return A + +# def convert_B_stubs_to_ndarray(B_stubs, model_labels): +# """ +# This function converts a list of multi-index pandas dataframes `B_stubs` into an object array +# of different B matrices, one per hidden state factor +# """ + +# _, _, num_states, num_factors, num_controls, num_control_fac = get_model_dimensions_from_labels(model_labels) + +# B = obj_array(num_factors) + +# for f, factor_name in enumerate(B_stubs.keys()): + +# B[f] = B_stubs[factor_name].to_numpy().reshape(num_states[f], num_states[f], num_controls[f]) +# assert (B[f].sum(axis=0) == 1.0).all(), 'B matrix not normalized! Check your initialization....\n' + +# return B + +# def build_belief_array(qx): + +# """ +# This function constructs array-ified (not nested) versions +# of the posterior belief arrays, that are separated +# by policy, timepoint, and hidden state factor +# """ + +# num_policies = len(qx) +# num_timesteps = len(qx[0]) +# num_factors = len(qx[0][0]) + +# if num_factors > 1: +# belief_array = utils.obj_array(num_factors) +# for factor in range(num_factors): +# belief_array[factor] = np.zeros( (num_policies, qx[0][0][factor].shape[0], num_timesteps) ) +# for policy_i in range(num_policies): +# for timestep in range(num_timesteps): +# for factor in range(num_factors): +# belief_array[factor][policy_i, :, timestep] = qx[policy_i][timestep][factor] +# else: +# num_states = qx[0][0][0].shape[0] +# belief_array = np.zeros( (num_policies, num_states, num_timesteps) ) +# for policy_i in range(num_policies): +# for timestep in range(num_timesteps): +# belief_array[policy_i, :, timestep] = qx[policy_i][timestep][0] + +# return belief_array + +# def build_xn_vn_array(xn): + +# """ +# This function constructs array-ified (not nested) versions +# of the posterior xn (beliefs) or vn (prediction error) arrays, that are separated +# by iteration, hidden state factor, timepoint, and policy +# """ + +# num_policies = len(xn) +# num_itr = len(xn[0]) +# num_factors = len(xn[0][0]) + +# if num_factors > 1: +# xn_array = utils.obj_array(num_factors) +# for factor in range(num_factors): +# num_states, infer_len = xn[0][0][f].shape +# xn_array[factor] = np.zeros( (num_itr, num_states, infer_len, num_policies) ) +# for policy_i in range(num_policies): +# for itr in range(num_itr): +# for factor in range(num_factors): +# xn_array[factor][itr,:,:,policy_i] = xn[policy_i][itr][factor] +# else: +# num_states, infer_len = xn[0][0][0].shape +# xn_array = np.zeros( (num_itr, num_states, infer_len, num_policies) ) +# for policy_i in range(num_policies): +# for itr in range(num_itr): +# xn_array[itr,:,:,policy_i] = xn[policy_i][itr][0] + +# return xn_array diff --git a/pymdp/learning.py b/pymdp/learning.py index ec334f68..1c21568a 100644 --- a/pymdp/learning.py +++ b/pymdp/learning.py @@ -57,6 +57,59 @@ def update_obs_likelihood_dirichlet(pA, A, obs, qs, lr=1.0, modalities="all"): return qA +def update_obs_likelihood_dirichlet_factorized(pA, A, obs, qs, A_factor_list, lr=1.0, modalities="all"): + """ + Update Dirichlet parameters of the observation likelihood distribution, in a case where the observation model is reduced (factorized) and only represents + the conditional dependencies between the observation modalities and particular hidden state factors (whose indices are specified in each modality-specific entry of ``A_factor_list``) + + Parameters + ----------- + pA: ``numpy.ndarray`` of dtype object + Prior Dirichlet parameters over observation model (same shape as ``A``) + A: ``numpy.ndarray`` of dtype object + Sensory likelihood mapping or 'observation model', mapping from hidden states to observations. Each element ``A[m]`` of + stores an ``numpy.ndarray`` multidimensional array for observation modality ``m``, whose entries ``A[m][i, j, k, ...]`` store + the probability of observation level ``i`` given hidden state levels ``j, k, ...`` + obs: 1D ``numpy.ndarray``, ``numpy.ndarray`` of dtype object, ``int`` or ``tuple`` + The observation (generated by the environment). If single modality, this can be a 1D ``numpy.ndarray`` + (one-hot vector representation) or an ``int`` (observation index) + If multi-modality, this can be ``numpy.ndarray`` of dtype object whose entries are 1D one-hot vectors, + or a ``tuple`` (of ``int``) + qs: 1D ``numpy.ndarray`` or ``numpy.ndarray`` of dtype object, default None + Marginal posterior beliefs over hidden states at current timepoint. + A_factor_list: ``list`` of ``list`` of ``int`` + List of lists, where each list with index `m` contains the indices of the hidden states that observation modality `m` depends on. + lr: float, default 1.0 + Learning rate, scale of the Dirichlet pseudo-count update. + modalities: ``list``, default "all" + Indices (ranging from 0 to ``n_modalities - 1``) of the observation modalities to include + in learning. Defaults to "all", meaning that modality-specific sub-arrays of ``pA`` + are all updated using the corresponding observations. + + Returns + ----------- + qA: ``numpy.ndarray`` of dtype object + Posterior Dirichlet parameters over observation model (same shape as ``A``), after having updated it with observations. + """ + + num_modalities = len(pA) + num_observations = [pA[modality].shape[0] for modality in range(num_modalities)] + + obs_processed = utils.process_observation(obs, num_modalities, num_observations) + obs = utils.to_obj_array(obs_processed) + + if modalities == "all": + modalities = list(range(num_modalities)) + + qA = copy.deepcopy(pA) + + for modality in modalities: + dfda = maths.spm_cross(obs[modality], qs[A_factor_list[modality]]) + dfda = dfda * (A[modality] > 0).astype("float") + qA[modality] = qA[modality] + (lr * dfda) + + return qA + def update_state_likelihood_dirichlet( pB, B, actions, qs, qs_prev, lr=1.0, factors="all" ): @@ -105,6 +158,57 @@ def update_state_likelihood_dirichlet( return qB +def update_state_likelihood_dirichlet_interactions( + pB, B, actions, qs, qs_prev, B_factor_list, lr=1.0, factors="all" +): + """ + Update Dirichlet parameters of the transition distribution, in the case when 'interacting' hidden state factors are present, i.e. + the dynamics of a given hidden state factor `f` are no longer independent of the dynamics of other hidden state factors. + + Parameters + ----------- + pB: ``numpy.ndarray`` of dtype object + Prior Dirichlet parameters over transition model (same shape as ``B``) + B: ``numpy.ndarray`` of dtype object + Dynamics likelihood mapping or 'transition model', mapping from hidden states at ``t`` to hidden states at ``t+1``, given some control state ``u``. + Each element ``B[f]`` of this object array stores a 3-D tensor for hidden state factor ``f``, whose entries ``B[f][s, v, u]`` store the probability + of hidden state level ``s`` at the current time, given hidden state level ``v`` and action ``u`` at the previous time. + actions: 1D ``numpy.ndarray`` + A vector with length equal to the number of control factors, where each element contains the index of the action (for that control factor) performed at + a given timestep. + qs: 1D ``numpy.ndarray`` or ``numpy.ndarray`` of dtype object + Marginal posterior beliefs over hidden states at current timepoint. + qs_prev: 1D ``numpy.ndarray`` or ``numpy.ndarray`` of dtype object + Marginal posterior beliefs over hidden states at previous timepoint. + B_factor_list: ``list`` of ``list`` of ``int`` + A list of lists, where each element ``B_factor_list[f]`` is a list of indices of hidden state factors that that are needed to predict the dynamics of hidden state factor ``f``. + lr: float, default ``1.0`` + Learning rate, scale of the Dirichlet pseudo-count update. + factors: ``list``, default "all" + Indices (ranging from 0 to ``n_factors - 1``) of the hidden state factors to include + in learning. Defaults to "all", meaning that factor-specific sub-arrays of ``pB`` + are all updated using the corresponding hidden state distributions and actions. + + Returns + ----------- + qB: ``numpy.ndarray`` of dtype object + Posterior Dirichlet parameters over transition model (same shape as ``B``), after having updated it with state beliefs and actions. + """ + + num_factors = len(pB) + + qB = copy.deepcopy(pB) + + if factors == "all": + factors = list(range(num_factors)) + + for factor in factors: + dfdb = maths.spm_cross(qs[factor], qs_prev[B_factor_list[factor]]) + dfdb *= (B[factor][...,int(actions[factor])] > 0).astype("float") + qB[factor][...,int(actions[factor])] += (lr*dfdb) + + return qB + def update_state_prior_dirichlet( pD, qs, lr=1.0, factors="all" ): diff --git a/pymdp/maths.py b/pymdp/maths.py index 27b163a8..1d5e9e4d 100644 --- a/pymdp/maths.py +++ b/pymdp/maths.py @@ -12,6 +12,7 @@ from scipy import special from pymdp import utils from itertools import chain +from opt_einsum import contract EPS_VAL = 1e-16 # global constant for use in spm_log() function @@ -105,6 +106,28 @@ def spm_dot_classic(X, x, dims_to_omit=None): return Y +def factor_dot_flex(M, xs, dims, keep_dims=None): + """ Dot product of a multidimensional array with `x`. + + Parameters + ---------- + - `M` [numpy.ndarray] - tensor + - 'xs' [list of numpyr.ndarray] - list of tensors + - 'dims' [list of tuples] - list of dimensions of xs tensors in tensor M + - 'keep_dims' [tuple] - tuple of integers denoting dimesions to keep + Returns + ------- + - `Y` [1D numpy.ndarray] - the result of the dot product + """ + all_dims = tuple(range(M.ndim)) + matrix = [[xs[f], dims[f]] for f in range(len(xs))] + args = [M, all_dims] + for row in matrix: + args.extend(row) + + args += [keep_dims] + return contract(*args, backend='numpy') + def spm_dot_old(X, x, dims_to_omit=None, obs_mode=False): """ Dot product of a multidimensional array with `x`. The dimensions in `dims_to_omit` will not be summed across during the dot product @@ -205,12 +228,9 @@ def spm_cross(x, y=None, *args): if y is not None and utils.is_obj_array(y): y = spm_cross(*list(y)) - reshape_dims = tuple(list(x.shape) + list(np.ones(y.ndim, dtype=int))) - A = x.reshape(reshape_dims) - - reshape_dims = tuple(list(np.ones(x.ndim, dtype=int)) + list(y.shape)) - B = y.reshape(reshape_dims) - z = np.squeeze(A * B) + A = np.expand_dims(x, tuple(range(-y.ndim, 0))) + B = np.expand_dims(y, tuple(range(x.ndim))) + z = A * B for x in args: z = spm_cross(z, x) @@ -250,6 +270,23 @@ def get_joint_likelihood_seq(A, obs, num_states): ll_seq[t] = get_joint_likelihood(A, obs_t, num_states) return ll_seq +def get_joint_likelihood_seq_by_modality(A, obs, num_states): + """ + Returns joint likelihoods for each modality separately + """ + + ll_seq = utils.obj_array(len(obs)) + n_modalities = len(A) + + for t, obs_t in enumerate(obs): + likelihood = utils.obj_array(n_modalities) + obs_t_obj = utils.to_obj_array(obs_t) + for (m, A_m) in enumerate(A): + likelihood[m] = dot_likelihood(A_m, obs_t_obj[m]) + ll_seq[t] = likelihood + + return ll_seq + def spm_norm(A): """ @@ -372,6 +409,110 @@ def calc_free_energy(qs, prior, n_factors, likelihood=None): free_energy -= compute_accuracy(likelihood, qs) return free_energy +def spm_calc_qo_entropy(A, x): + """ + Function that just calculates the entropy part of the state information gain, using the same method used in + spm_MDP_G.m in the original matlab code. + + Parameters + ---------- + A (numpy ndarray or array-object): + array assigning likelihoods of observations/outcomes under the various + hidden state configurations + + x (numpy ndarray or array-object): + Categorical distribution presenting probabilities of hidden states + (this can also be interpreted as the predictive density over hidden + states/causes if you're calculating the expected Bayesian surprise) + + Returns + ------- + H (float): + the entropy of the marginal distribution over observations/outcomes + """ + + num_modalities = len(A) + + # Probability distribution over the hidden causes: i.e., Q(x) + qx = spm_cross(x) + qo = 0 + idx = np.array(np.where(qx > np.exp(-16))).T + + if utils.is_obj_array(A): + # Accumulate expectation of entropy: i.e., E_{Q(o, x)}[lnP(o|x)] = E_{P(o|x)Q(x)}[lnP(o|x)] = E_{Q(x)}[P(o|x)lnP(o|x)] = E_{Q(x)}[H[P(o|x)]] + for i in idx: + # Probability over outcomes for this combination of causes + po = np.ones(1) + for modality_idx, A_m in enumerate(A): + index_vector = [slice(0, A_m.shape[0])] + list(i) + po = spm_cross(po, A_m[tuple(index_vector)]) + po = po.ravel() + qo += qx[tuple(i)] * po + else: + for i in idx: + po = np.ones(1) + index_vector = [slice(0, A.shape[0])] + list(i) + po = spm_cross(po, A[tuple(index_vector)]) + po = po.ravel() + qo += qx[tuple(i)] * po + + # Compute entropy of expectations: i.e., -E_{Q(o)}[lnQ(o)] + H = - qo.dot(spm_log_single(qo)) + + return H + +def spm_calc_neg_ambig(A, x): + """ + Function that just calculates the negativity ambiguity part of the state information gain, using the same method used in + spm_MDP_G.m in the original matlab code. + + Parameters + ---------- + A (numpy ndarray or array-object): + array assigning likelihoods of observations/outcomes under the various + hidden state configurations + + x (numpy ndarray or array-object): + Categorical distribution presenting probabilities of hidden states + (this can also be interpreted as the predictive density over hidden + states/causes if you're calculating the expected Bayesian surprise) + + Returns + ------- + G (float): + the negative ambiguity (negative entropy of the likelihood of observations given hidden states, expected under current posterior over hidden states) + """ + + num_modalities = len(A) + + # Probability distribution over the hidden causes: i.e., Q(x) + qx = spm_cross(x) + G = 0 + qo = 0 + idx = np.array(np.where(qx > np.exp(-16))).T + + if utils.is_obj_array(A): + # Accumulate expectation of entropy: i.e., E_{Q(o, x)}[lnP(o|x)] = E_{P(o|x)Q(x)}[lnP(o|x)] = E_{Q(x)}[P(o|x)lnP(o|x)] = E_{Q(x)}[H[P(o|x)]] + for i in idx: + # Probability over outcomes for this combination of causes + po = np.ones(1) + for modality_idx, A_m in enumerate(A): + index_vector = [slice(0, A_m.shape[0])] + list(i) + po = spm_cross(po, A_m[tuple(index_vector)]) + + po = po.ravel() + qo += qx[tuple(i)] * po + G += qx[tuple(i)] * po.dot(np.log(po + np.exp(-16))) + else: + for i in idx: + po = np.ones(1) + index_vector = [slice(0, A.shape[0])] + list(i) + po = spm_cross(po, A[tuple(index_vector)]) + po = po.ravel() + qo += qx[tuple(i)] * po + G += qx[tuple(i)] * po.dot(np.log(po + np.exp(-16))) + + return G def spm_MDP_G(A, x): """ @@ -406,14 +547,14 @@ def spm_MDP_G(A, x): idx = np.array(np.where(qx > np.exp(-16))).T if utils.is_obj_array(A): - # Accumulate expectation of entropy: i.e., E_{Q(o, s)}[lnP(o|x)] + # Accumulate expectation of entropy: i.e., E_{Q(o, x)}[lnP(o|x)] = E_{P(o|x)Q(x)}[lnP(o|x)] = E_{Q(x)}[P(o|x)lnP(o|x)] = E_{Q(x)}[H[P(o|x)]] for i in idx: # Probability over outcomes for this combination of causes po = np.ones(1) for modality_idx, A_m in enumerate(A): index_vector = [slice(0, A_m.shape[0])] + list(i) po = spm_cross(po, A_m[tuple(index_vector)]) - + po = po.ravel() qo += qx[tuple(i)] * po G += qx[tuple(i)] * po.dot(np.log(po + np.exp(-16))) @@ -431,3 +572,37 @@ def spm_MDP_G(A, x): return G +def kl_div(P,Q): + """ + Parameters + ---------- + P : Categorical probability distribution + Q : Categorical probability distribution + + Returns + ------- + The KL-divergence of P and Q + + """ + dkl = 0 + for i in range(len(P)): + dkl += np.dot(P[i], np.log(P[i] + EPS_VAL) - np.log(Q[i] + EPS_VAL)) + return(dkl) + +def entropy(A): + """ + Compute the entropy term H of the likelihood matrix, + i.e. one entropy value per column + """ + entropies = np.empty(len(A), dtype=object) + for i in range(len(A)): + if len(A[i].shape) > 2: + obs_dim = A[i].shape[0] + s_dim = A[i].size // obs_dim + A_merged = A[i].reshape(obs_dim, s_dim) + else: + A_merged = A[i] + + H = - np.diag(np.matmul(A_merged.T, np.log(A_merged + EPS_VAL))) + entropies[i] = H.reshape(*A[i].shape[1:]) + return entropies \ No newline at end of file diff --git a/pymdp/utils.py b/pymdp/utils.py index 7b19ee56..b371f553 100644 --- a/pymdp/utils.py +++ b/pymdp/utils.py @@ -108,21 +108,27 @@ def onehot(value, num_values): arr[value] = 1.0 return arr -def random_A_matrix(num_obs, num_states): +def random_A_matrix(num_obs, num_states, A_factor_list=None): if type(num_obs) is int: num_obs = [num_obs] if type(num_states) is int: num_states = [num_states] num_modalities = len(num_obs) + if A_factor_list is None: + num_factors = len(num_states) + A_factor_list = [list(range(num_factors))] * num_modalities + A = obj_array(num_modalities) for modality, modality_obs in enumerate(num_obs): - modality_shape = [modality_obs] + num_states + # lagging_dimensions = [ns for i, ns in enumerate(num_states) if i in A_factor_list[modality]] # enforces sortedness of A_factor_list + lagging_dimensions = [num_states[idx] for idx in A_factor_list[modality]] + modality_shape = [modality_obs] + lagging_dimensions modality_dist = np.random.rand(*modality_shape) A[modality] = norm_dist(modality_dist) return A -def random_B_matrix(num_states, num_controls): +def random_B_matrix(num_states, num_controls, B_factor_list=None): if type(num_states) is int: num_states = [num_states] if type(num_controls) is int: @@ -130,9 +136,14 @@ def random_B_matrix(num_states, num_controls): num_factors = len(num_states) assert len(num_controls) == len(num_states) + if B_factor_list is None: + B_factor_list = [[f] for f in range(num_factors)] + B = obj_array(num_factors) for factor in range(num_factors): - factor_shape = (num_states[factor], num_states[factor], num_controls[factor]) + lagging_shape = [ns for i, ns in enumerate(num_states) if i in B_factor_list[factor]] + factor_shape = [num_states[factor]] + lagging_shape + [num_controls[factor]] + # factor_shape = (num_states[factor], num_states[factor], num_controls[factor]) factor_dist = np.random.rand(*factor_shape) B[factor] = norm_dist(factor_dist) return B @@ -189,7 +200,7 @@ def dirichlet_like(template_categorical, scale = 1.0): return dirichlet_out -def get_model_dimensions(A=None, B=None): +def get_model_dimensions(A=None, B=None, factorized=False): if A is None and B is None: raise ValueError( @@ -207,8 +218,13 @@ def get_model_dimensions(A=None, B=None): num_factors = len(num_states) else: if A is not None: - num_states = list(A[0].shape[1:]) if is_obj_array(A) else list(A.shape[1:]) - num_factors = len(num_states) + if not factorized: + num_states = list(A[0].shape[1:]) if is_obj_array(A) else list(A.shape[1:]) + num_factors = len(num_states) + else: + raise ValueError( + "`A` array is factorized and cannot be used to infer `num_states`" + ) else: num_states, num_factors = None, None @@ -471,127 +487,6 @@ def construct_full_a(A_reduced, original_factor_idx, num_states): return A -def create_A_matrix_stub(model_labels): - - dimensions = get_model_dimensions_from_labels(model_labels) - - obs_labels, state_labels = model_labels['observations'], model_labels['states'] - - state_combinations = pd.MultiIndex.from_product(list(state_labels.values()), names=list(state_labels.keys())) - num_rows = sum(dimensions.num_observations) - - cell_values = np.zeros((num_rows, len(state_combinations))) - - obs_combinations = [] - for modality in obs_labels.keys(): - levels_to_combine = [[modality]] + [obs_labels[modality]] - obs_combinations += list(itertools.product(*levels_to_combine)) - - - obs_combinations = pd.MultiIndex.from_tuples(obs_combinations, names = ["Modality", "Level"]) - - A_matrix = pd.DataFrame(cell_values, index = obs_combinations, columns=state_combinations) - - return A_matrix - -def create_B_matrix_stubs(model_labels): - - dimensions = get_model_dimensions_from_labels(model_labels) - - state_labels = model_labels['states'] - action_labels = model_labels['actions'] - - B_matrices = {} - - for f_idx, factor in enumerate(state_labels.keys()): - - control_fac_name = list(action_labels)[f_idx] - factor_list = [state_labels[factor]] + [action_labels[control_fac_name]] - - prev_state_action_combos = pd.MultiIndex.from_product(factor_list, names=[factor, list(action_labels.keys())[f_idx]]) - - num_state_action_combos = dimensions.num_states[f_idx] * dimensions.num_controls[f_idx] - - num_rows = dimensions.num_states[f_idx] - - cell_values = np.zeros((num_rows, num_state_action_combos)) - - next_state_list = state_labels[factor] - - B_matrix_f = pd.DataFrame(cell_values, index = next_state_list, columns=prev_state_action_combos) - - B_matrices[factor] = B_matrix_f - - return B_matrices - -def read_A_matrix(path, num_hidden_state_factors): - raw_table = pd.read_excel(path, header=None) - level_counts = { - "index": raw_table.iloc[0, :].dropna().index[0] + 1, - "header": raw_table.iloc[0, :].dropna().index[0] + num_hidden_state_factors - 1, - } - return pd.read_excel( - path, - index_col=list(range(level_counts["index"])), - header=list(range(level_counts["header"])) - ).astype(np.float64) - -def read_B_matrices(path): - - all_sheets = pd.read_excel(path, sheet_name = None, header=None) - - level_counts = {} - for sheet_name, raw_table in all_sheets.items(): - - level_counts[sheet_name] = { - "index": raw_table.iloc[0, :].dropna().index[0]+1, - "header": raw_table.iloc[0, :].dropna().index[0]+2, - } - - stub_dict = {} - for sheet_name, level_counts_sheet in level_counts.items(): - sheet_f = pd.read_excel( - path, - sheet_name = sheet_name, - index_col=list(range(level_counts_sheet["index"])), - header=list(range(level_counts_sheet["header"])) - ).astype(np.float64) - stub_dict[sheet_name] = sheet_f - - return stub_dict - -def convert_A_stub_to_ndarray(A_stub, model_labels): - """ - This function converts a multi-index pandas dataframe `A_stub` into an object array of different - A matrices, one per observation modality. - """ - dimensions = get_model_dimensions_from_labels(model_labels) - - A = obj_array(dimensions.num_observation_modalities) - - for g, modality_name in enumerate(model_labels['observations'].keys()): - A[g] = A_stub.loc[modality_name].to_numpy().reshape(dimensions.num_observations[g], *dimensions.num_states) - assert (A[g].sum(axis=0) == 1.0).all(), 'A matrix not normalized! Check your initialization....\n' - - return A - -def convert_B_stubs_to_ndarray(B_stubs, model_labels): - """ - This function converts a list of multi-index pandas dataframes `B_stubs` into an object array - of different B matrices, one per hidden state factor - """ - - dimensions = get_model_dimensions_from_labels(model_labels) - - B = obj_array(dimensions.num_control_factors) - - for f, factor_name in enumerate(B_stubs.keys()): - - B[f] = B_stubs[factor_name].to_numpy().reshape(dimensions.num_states[f], dimensions.num_states[f], dimensions.num_controls[f]) - assert (B[f].sum(axis=0) == 1.0).all(), 'B matrix not normalized! Check your initialization....\n' - - return B - # def build_belief_array(qx): # """ diff --git a/requirements.txt b/requirements.txt index d09a154b..de815d0c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,6 @@ nose>=1.3.7 numpy>=1.19.5 openpyxl>=3.0.7 packaging>=20.8 -pandas>=1.2.4 Pillow>=8.2.0 pluggy>=0.13.1 py>=1.10.0 @@ -24,3 +23,9 @@ xlsxwriter>=1.4.3 sphinx-rtd-theme>=0.4 myst-nb>=0.13.1 autograd>=1.3 +jax>=0.3.4 +jaxlib>=0.3.4 +equinox>=0.9 +numpyro>=0.1 +arviz>=0.13 +optax>=0.1 \ No newline at end of file diff --git a/setup.py b/setup.py index f8378fba..03e2cbae 100644 --- a/setup.py +++ b/setup.py @@ -40,12 +40,19 @@ 'xlsxwriter>=1.4.3', 'sphinx-rtd-theme>=0.4', 'myst-nb>=0.13.1', - 'autograd>=1.3' + 'autograd>=1.3', + 'jax>=0.3.4', + 'jaxlib>=0.3.4', + 'equinox>=0.9', + 'numpyro>=0.1', + 'arviz>=0.13', + 'optax>=0.1' ], packages=[ "pymdp", "pymdp.envs", - "pymdp.algos" + "pymdp.algos", + "pymdp.jax" ], include_package_data=True, keywords=[ diff --git a/test/test_SPM_validation.py b/test/test_SPM_validation.py index 8c0bc136..ee386378 100644 --- a/test/test_SPM_validation.py +++ b/test/test_SPM_validation.py @@ -49,7 +49,7 @@ def test_active_inference_SPM_1a(self): q_pi, G= agent.infer_policies() action = agent.sample_action() - actions_python[t] = action + actions_python[t] = action.item() xn_python = build_xn_vn_array(xn_t) vn_python = build_xn_vn_array(vn_t) diff --git a/test/test_agent.py b/test/test_agent.py index ad3768ca..161bca56 100644 --- a/test/test_agent.py +++ b/test/test_agent.py @@ -164,7 +164,7 @@ def test_agent_infer_states(self): policies = control.construct_policies(num_states, num_controls, policy_len = planning_horizon) - qs_pi_validation, _ = inference.update_posterior_states_full(A, B, [o], policies, prior = agent.D, policy_sep_prior = False) + qs_pi_validation, _ = inference.update_posterior_states_full_factorized(A, agent.mb_dict, B, agent.B_factor_list, [o], policies, prior = agent.D, policy_sep_prior = False) for p_idx in range(len(policies)): for t in range(planning_horizon+backwards_horizon): @@ -201,6 +201,98 @@ def test_mmp_active_inference(self): self.assertEqual(len(agent.prev_obs), T) self.assertEqual(len(agent.prev_actions), T) + def test_agent_with_A_learning_vanilla(self): + """ Unit test for updating prior Dirichlet parameters over likelihood model (pA) with the ``Agent`` class, + in the case that you're using "vanilla" inference mode. + """ + + # 3 x 3, 2-dimensional grid world + num_obs = [9] + num_states = [9] + num_controls = [4] + + A = utils.obj_array_zeros([ [num_obs[0], num_states[0]] ]) + A[0] = np.eye(num_obs[0]) + + pA = utils.dirichlet_like(A, scale=1.) + + action_labels = ["LEFT", "DOWN", "RIGHT", "UP"] + + # get some true transition dynamics + true_transition_matrix = generate_grid_world_transitions(action_labels, num_rows = 3, num_cols = 3) + B = utils.to_obj_array(true_transition_matrix) + + # instantiate the agent + learning_rate_pA = np.random.rand() + agent = Agent(A=A, B=B, pA=pA, inference_algo="VANILLA", action_selection="stochastic", lr_pA=learning_rate_pA) + + # time horizon + T = 10 + next_state = 0 + + for t in range(T): + + prev_state = next_state + o = [prev_state] + qx = agent.infer_states(o) + agent.infer_policies() + agent.sample_action() + + # sample the next state given the true transition dynamics and the sampled action + next_state = utils.sample(true_transition_matrix[:,prev_state,int(agent.action[0])]) + + # compute the predicted update to the action-conditioned slice of qB + predicted_update = agent.pA[0] + learning_rate_pA*maths.spm_cross(utils.onehot(o[0], num_obs[0]), qx[0]) + qA = agent.update_A(o) # update qA using the agent function + + # check if the predicted update and the actual update are the same + self.assertTrue(np.allclose(predicted_update, qA[0])) + + def test_agent_with_A_learning_vanilla_factorized(self): + """ Unit test for updating prior Dirichlet parameters over likelihood model (pA) with the ``Agent`` class, + in the case that you're using "vanilla" inference mode. In this case, we encode sparse conditional dependencies by specifying + a non-all-to-all `A_factor_list`, that specifies the subset of hidden state factors that different modalities depend on. + """ + + num_obs = [5, 4, 3] + num_states = [9, 8, 2, 4] + num_controls = [2, 2, 1, 1] + + A_factor_list = [[0, 1], [0, 2], [3]] + + A = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_factor_list) + pA = utils.dirichlet_like(A, scale=1.) + + B = utils.random_B_matrix(num_states, num_controls) + + # instantiate the agent + learning_rate_pA = np.random.rand() + agent = Agent(A=A, B=B, pA=pA, A_factor_list=A_factor_list, inference_algo="VANILLA", action_selection="stochastic", lr_pA=learning_rate_pA) + + # time horizon + T = 10 + + obs_seq = [] + for t in range(T): + obs_seq.append([np.random.randint(obs_dim) for obs_dim in num_obs]) + + for t in range(T): + print(t) + + qx = agent.infer_states(obs_seq[t]) + agent.infer_policies() + agent.sample_action() + + # compute the predicted update to the action-conditioned slice of qB + qA_valid = utils.obj_array_zeros([A_m.shape for A_m in A]) + for m, pA_m in enumerate(agent.pA): + qA_valid[m] = pA_m + learning_rate_pA*maths.spm_cross(utils.onehot(obs_seq[t][m], num_obs[m]), qx[A_factor_list[m]]) + qA_test = agent.update_A(obs_seq[t]) # update qA using the agent function + + # check if the predicted update and the actual update are the same + for m, qA_valid_m in enumerate(qA_valid): + self.assertTrue(np.allclose(qA_valid_m, qA_test[m])) + def test_agent_with_B_learning_vanilla(self): """ Unit test for updating prior Dirichlet parameters over transition model (pB) with the ``Agent`` class, in the case that you're using "vanilla" inference mode. @@ -570,13 +662,150 @@ def test_agent_distributional_obs(self): policies = control.construct_policies(num_states, num_controls, policy_len = planning_horizon) - qs_pi_validation, _ = inference.update_posterior_states_full(A, B, [p_o], policies, prior = agent.D, policy_sep_prior = False) + qs_pi_validation, _ = inference.update_posterior_states_full_factorized(A, agent.mb_dict, B, agent.B_factor_list, [p_o], policies, prior = agent.D, policy_sep_prior = False) for p_idx in range(len(policies)): for t in range(planning_horizon+backwards_horizon): for f in range(len(num_states)): self.assertTrue(np.isclose(qs_pi_validation[p_idx][t][f], qs_pi_out[p_idx][t][f]).all()) + def test_agent_with_factorized_inference(self): + """ + Test that an instance of the `Agent` class can be initialized with a provided `A_factor_list` and run the factorized inference algorithm. Validate + against an equivalent `Agent` whose `A` matrix represents the full set of (redundant) conditional dependence relationships. + """ + + num_obs = [5, 4] + num_states = [2, 3] + num_controls = [2, 3] + + A_factor_list = [ [0], [1] ] + A_reduced = utils.random_A_matrix(num_obs, num_states, A_factor_list) + B = utils.random_B_matrix(num_states, num_controls) + + agent = Agent(A=A_reduced, B=B, A_factor_list=A_factor_list, inference_algo = "VANILLA") + + obs = [np.random.randint(obs_dim) for obs_dim in num_obs] + + qs_out = agent.infer_states(obs) + + A_full = utils.initialize_empty_A(num_obs, num_states) + for m, A_m in enumerate(A_full): + other_factors = list(set(range(len(num_states))) - set(A_factor_list[m])) # list of the factors that modality `m` does not depend on + + # broadcast or tile the reduced A matrix (`A_reduced`) along the dimensions of corresponding to `other_factors` + expanded_dims = [num_obs[m]] + [1 if f in other_factors else ns for (f, ns) in enumerate(num_states)] + tile_dims = [1] + [ns if f in other_factors else 1 for (f, ns) in enumerate(num_states)] + A_full[m] = np.tile(A_reduced[m].reshape(expanded_dims), tile_dims) + + agent = Agent(A=A_full, B=B, inference_algo = "VANILLA") + qs_validation = agent._infer_states_test(obs) + + for qs_out_f, qs_val_f in zip(qs_out, qs_validation): + self.assertTrue(np.isclose(qs_out_f, qs_val_f).all()) + + def test_agent_with_interactions_in_B(self): + """ + Test that an instance of the `Agent` class can be initialized with a provided `B_factor_list` and run a time loop of active inferece + """ + + num_obs = [5, 4] + num_states = [2, 3] + num_controls = [2, 3] + + A = utils.random_A_matrix(num_obs, num_states) + B = utils.random_B_matrix(num_states, num_controls) + + agent_test = Agent(A=A, B=B, B_factor_list=[[0], [1]]) + agent_val = Agent(A=A, B=B) + + obs_seq = [] + for t in range(5): + obs_seq.append([np.random.randint(obs_dim) for obs_dim in num_obs]) + + for t in range(5): + qs_out = agent_test.infer_states(obs_seq[t]) + qs_val = agent_val._infer_states_test(obs_seq[t]) + for qs_out_f, qs_val_f in zip(qs_out, qs_val): + self.assertTrue(np.isclose(qs_out_f, qs_val_f).all()) + + agent_test.infer_policies() + agent_val.infer_policies() + + agent_test.sample_action() + agent_val.sample_action() + + def test_actinfloop_factorized(self): + """ + Test that an instance of the `Agent` class can be initialized and run + with the fully-factorized generative model functions (including policy inference) + """ + + num_obs = [5, 4, 4] + num_states = [2, 3, 5] + num_controls = [2, 3, 2] + + A_factor_list = [[0], [0, 1], [0, 1, 2]] + B_factor_list = [[0], [0, 1], [1, 2]] + A = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_factor_list) + B = utils.random_B_matrix(num_states, num_controls, B_factor_list=B_factor_list) + + agent = Agent(A=A, B=B, A_factor_list=A_factor_list, B_factor_list=B_factor_list, inference_algo="VANILLA") + + obs_seq = [] + for t in range(5): + obs_seq.append([np.random.randint(obs_dim) for obs_dim in num_obs]) + + for t in range(5): + qs_out = agent.infer_states(obs_seq[t]) + agent.infer_policies() + agent.sample_action() + + """ Test to make sure it works even when generative model sparsity is not taken advantage of """ + A = utils.random_A_matrix(num_obs, num_states) + B = utils.random_B_matrix(num_states, num_controls) + + agent = Agent(A=A, B=B, inference_algo="VANILLA") + + obs_seq = [] + for t in range(5): + obs_seq.append([np.random.randint(obs_dim) for obs_dim in num_obs]) + + for t in range(5): + qs_out = agent.infer_states(obs_seq[t]) + agent.infer_policies() + agent.sample_action() + + """ Test with pA and pB learning & information gain """ + + num_obs = [5, 4, 4] + num_states = [2, 3, 5] + num_controls = [2, 3, 2] + + A_factor_list = [[0], [0, 1], [0, 1, 2]] + B_factor_list = [[0], [0, 1], [1, 2]] + A = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_factor_list) + B = utils.random_B_matrix(num_states, num_controls, B_factor_list=B_factor_list) + pA = utils.dirichlet_like(A) + pB = utils.dirichlet_like(B) + + agent = Agent(A=A, pA=pA, B=B, pB=pB, save_belief_hist=True, use_param_info_gain=True, A_factor_list=A_factor_list, B_factor_list=B_factor_list, inference_algo="VANILLA") + + obs_seq = [] + for t in range(5): + obs_seq.append([np.random.randint(obs_dim) for obs_dim in num_obs]) + + for t in range(5): + qs_out = agent.infer_states(obs_seq[t]) + agent.infer_policies() + agent.sample_action() + agent.update_A(obs_seq[t]) + if t > 0: + agent.update_B(qs_prev = agent.qs_hist[-2]) # need to have `save_belief_hist=True` for this to work + + + + diff --git a/test/test_agent_jax.py b/test/test_agent_jax.py new file mode 100644 index 00000000..ad3d85d8 --- /dev/null +++ b/test/test_agent_jax.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" Unit Tests +__author__: Dimitrije Markovic, Conor Heins +""" + +import os +import unittest + +import numpy as np +import jax.numpy as jnp +from jax import vmap, nn, random +import jax.tree_util as jtu + +from pymdp.jax.maths import compute_log_likelihood_single_modality +from pymdp.jax.utils import norm_dist +from equinox import Module +from typing import Any, List + +class TestAgentJax(unittest.TestCase): + + def test_vmappable_agent_methods(self): + + dim, N = 5, 10 + sampling_key = random.PRNGKey(1) + + class BasicAgent(Module): + A: jnp.ndarray + B: jnp.ndarray + qs: jnp.ndarray + + def __init__(self, A, B, qs=None): + self.A = A + self.B = B + self.qs = jnp.ones((N, dim))/dim if qs is None else qs + + @vmap + def infer_states(self, obs): + qs = nn.softmax(compute_log_likelihood_single_modality(obs, self.A)) + return qs, BasicAgent(self.A, self.B, qs=qs) + + A_key, B_key, obs_key, test_key = random.split(sampling_key, 4) + + all_A = vmap(norm_dist)(random.uniform(A_key, shape = (N, dim, dim))) + all_B = vmap(norm_dist)(random.uniform(B_key, shape = (N, dim, dim))) + all_obs = vmap(nn.one_hot, (0, None))(random.choice(obs_key, dim, shape = (N,)), dim) + + my_agent = BasicAgent(all_A, all_B) + + all_qs, my_agent = my_agent.infer_states(all_obs) + + assert all_qs.shape == my_agent.qs.shape + self.assertTrue(jnp.allclose(all_qs, my_agent.qs)) + + # validate that the method broadcasted properly + for id_to_check in range(N): + validation_qs = nn.softmax(compute_log_likelihood_single_modality(all_obs[id_to_check], all_A[id_to_check])) + self.assertTrue(jnp.allclose(validation_qs, all_qs[id_to_check])) + +if __name__ == "__main__": + unittest.main() + + + + + + + + + diff --git a/test/test_control.py b/test/test_control.py index abd5ea89..14b09938 100644 --- a/test/test_control.py +++ b/test/test_control.py @@ -99,6 +99,118 @@ def test_get_expected_states(self): else: self.assertTrue((qs_pi[p_idx][t_idx][factor_idx] == B[factor_idx][:,:,policies[p_idx][t_idx,factor_idx]].dot(qs_pi[p_idx][t_idx-1][factor_idx])).all()) + def test_get_expected_states_interactions_single_factor(self): + """ + Test the new version of `get_expected_states` that includes `B` array inter-factor dependencies, in case a of trivial single factor + """ + + num_states = [3] + num_controls = [3] + + B_factor_list = [[0]] + + qs = utils.random_single_categorical(num_states) + B = utils.random_B_matrix(num_states, num_controls, B_factor_list=B_factor_list) + + policies = control.construct_policies(num_states, num_controls, policy_len=1) + + qs_pi_0 = control.get_expected_states_interactions(qs, B, B_factor_list, policies[0]) + + self.assertTrue(np.allclose(qs_pi_0[0][0], B[0][:,:,policies[0][0,0]].dot(qs[0]))) + + def test_get_expected_states_interactions_multi_factor(self): + """ + Test the new version of `get_expected_states` that includes `B` array inter-factor dependencies, + in the case where there are two hidden state factors: one that depends on itself and another that depends on both itself and the other factor. + """ + + num_states = [3, 4] + num_controls = [3, 2] + + B_factor_list = [[0], [0, 1]] + + qs = utils.random_single_categorical(num_states) + B = utils.random_B_matrix(num_states, num_controls, B_factor_list=B_factor_list) + + policies = control.construct_policies(num_states, num_controls, policy_len=1) + + qs_pi_0 = control.get_expected_states_interactions(qs, B, B_factor_list, policies[0]) + + self.assertTrue(np.allclose(qs_pi_0[0][0], B[0][:,:,policies[0][0,0]].dot(qs[0]))) + + qs_next_validation = (B[1][..., policies[0][0,1]] * maths.spm_cross(qs)[None,...]).sum(axis=(1,2)) # how to compute equivalent of `spm_dot(B[...,past_action], qs)` + self.assertTrue(np.allclose(qs_pi_0[0][1], qs_next_validation)) + + def test_get_expected_states_interactions_multi_factor_independent(self): + """ + Test the new version of `get_expected_states` that includes `B` array inter-factor dependencies, + in the case where there are multiple hidden state factors, but they all only depend on themselves + """ + + num_states = [3, 4, 5, 6] + num_controls = [1, 2, 5, 3] + + B_factor_list = [[f] for f in range(len(num_states))] # each factor only depends on itself + + qs = utils.random_single_categorical(num_states) + B = utils.random_B_matrix(num_states, num_controls) + + policies = control.construct_policies(num_states, num_controls, policy_len=1) + + qs_pi_0 = control.get_expected_states_interactions(qs, B, B_factor_list, policies[0]) + + qs_pi_0_validation = control.get_expected_states(qs, B, policies[0]) + + for qs_f, qs_val_f in zip(qs_pi_0[0], qs_pi_0_validation[0]): + self.assertTrue(np.allclose(qs_f, qs_val_f)) + + def test_get_expected_obs_factorized(self): + """ + Test the new version of `get_expected_obs` that includes sparse dependencies of `A` array on hidden state factors (not all observation modalities depend on all hidden state factors) + """ + + """ Case 1, where all modalities depend on all hidden state factors """ + + num_states = [3, 4] + num_obs = [3, 4] + + A_factor_list = [[0, 1], [0, 1]] + + qs = utils.random_single_categorical(num_states) + A = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_factor_list) + + qo_test = control.get_expected_obs_factorized([qs], A, A_factor_list) # need to wrap `qs` in list because `get_expected_obs_factorized` expects a list of `qs` (representing multiple timesteps) + qo_val = control.get_expected_obs([qs], A) # need to wrap `qs` in list because `get_expected_obs` expects a list of `qs` (representing multiple timesteps) + + for qo_m, qo_val_m in zip(qo_test[0], qo_val[0]): # need to extract first index of `qo_test` and `qo_val` because `get_expected_obs_factorized` returns a list of `qo` (representing multiple timesteps) + self.assertTrue(np.allclose(qo_m, qo_val_m)) + + """ Case 2, where some modalities depend on some hidden state factors """ + + num_states = [3, 4] + num_obs = [3, 4] + + A_factor_list = [[0], [0, 1]] + + qs = utils.random_single_categorical(num_states) + A_reduced = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_factor_list) + + qo_test = control.get_expected_obs_factorized([qs], A_reduced, A_factor_list) # need to wrap `qs` in list because `get_expected_obs_factorized` expects a list of `qs` (representing multiple timesteps) + + A_full = utils.initialize_empty_A(num_obs, num_states) + for m, A_m in enumerate(A_full): + other_factors = list(set(range(len(num_states))) - set(A_factor_list[m])) # list of the factors that modality `m` does not depend on + + # broadcast or tile the reduced A matrix (`A_reduced`) along the dimensions of corresponding to `other_factors` + expanded_dims = [num_obs[m]] + [1 if f in other_factors else ns for (f, ns) in enumerate(num_states)] + tile_dims = [1] + [ns if f in other_factors else 1 for (f, ns) in enumerate(num_states)] + A_full[m] = np.tile(A_reduced[m].reshape(expanded_dims), tile_dims) + + qo_val = control.get_expected_obs([qs], A_full) # need to wrap `qs` in list because `get_expected_obs` expects a list of `qs` (representing multiple timesteps) + + for qo_m, qo_val_m in zip(qo_test[0], qo_val[0]): # need to extract first index of `qo_test` and `qo_val` because `get_expected_obs_factorized` returns a list of `qo` (representing multiple timesteps) + self.assertTrue(np.allclose(qo_m, qo_val_m)) + def test_get_expected_states_and_obs(self): """ Tests the refactored (Categorical-less) versions of `get_expected_states` and `get_expected_obs` together @@ -351,9 +463,109 @@ def test_state_info_gain(self): qs_pi = control.get_expected_states(qs, B, policy) state_info_gains[idx] += control.calc_states_info_gain(A, qs_pi) self.assertGreater(state_info_gains[1], state_info_gains[0]) + + def test_state_info_gain_factorized(self): + """ + Unit test the `calc_states_info_gain_factorized` function by qualitatively checking that in the T-Maze (contextual bandit) + example, the state info gain is higher for the policy that leads to visiting the cue, which is higher than state info gain + for visiting the bandit arm, which in turn is higher than the state info gain for the policy that leads to staying in the start state. + """ + + num_states = [2, 3] + num_obs = [3, 3, 3] + num_controls = [1, 3] + + A_factor_list = [[0, 1], [0, 1], [1]] + + A = utils.obj_array(len(num_obs)) + for m, obs in enumerate(num_obs): + lagging_dimensions = [ns for i, ns in enumerate(num_states) if i in A_factor_list[m]] + modality_shape = [obs] + lagging_dimensions + A[m] = np.zeros(modality_shape) + if m == 0: + A[m][:, :, 0] = np.ones( (num_obs[m], num_states[0]) ) / num_obs[m] + A[m][:, :, 1] = np.ones( (num_obs[m], num_states[0]) ) / num_obs[m] + A[m][:, :, 2] = np.array([[0.9, 0.1], [0.0, 0.0], [0.1, 0.9]]) # cue statistics + if m == 1: + A[m][2, :, 0] = np.ones(num_states[0]) + A[m][0:2, :, 1] = np.array([[0.6, 0.4], [0.6, 0.4]]) # bandit statistics (mapping between reward-state (first hidden state factor) and rewards (Good vs Bad)) + A[m][2, :, 2] = np.ones(num_states[0]) + if m == 2: + A[m] = np.eye(obs) + + qs_start = utils.obj_array_uniform(num_states) + qs_start[1] = np.array([1., 0., 0.]) # agent believes it's in the start state + + state_info_gain_visit_start = 0. + for m, A_m in enumerate(A): + if len(A_factor_list[m]) == 1: + qs_that_matter = utils.to_obj_array(qs_start[A_factor_list[m]]) + else: + qs_that_matter = qs_start[A_factor_list[m]] + state_info_gain_visit_start += control.calc_states_info_gain(A_m, [qs_that_matter]) + + qs_arm = utils.obj_array_uniform(num_states) + qs_arm[1] = np.array([0., 1., 0.]) # agent believes it's in the arm-visiting state + + state_info_gain_visit_arm = 0. + for m, A_m in enumerate(A): + if len(A_factor_list[m]) == 1: + qs_that_matter = utils.to_obj_array(qs_arm[A_factor_list[m]]) + else: + qs_that_matter = qs_arm[A_factor_list[m]] + state_info_gain_visit_arm += control.calc_states_info_gain(A_m, [qs_that_matter]) + + qs_cue = utils.obj_array_uniform(num_states) + qs_cue[1] = np.array([0., 0., 1.]) # agent believes it's in the cue-visiting state + + state_info_gain_visit_cue = 0. + for m, A_m in enumerate(A): + if len(A_factor_list[m]) == 1: + qs_that_matter = utils.to_obj_array(qs_cue[A_factor_list[m]]) + else: + qs_that_matter = qs_cue[A_factor_list[m]] + state_info_gain_visit_cue += control.calc_states_info_gain(A_m, [qs_that_matter]) + + self.assertGreater(state_info_gain_visit_arm, state_info_gain_visit_start) + self.assertGreater(state_info_gain_visit_cue, state_info_gain_visit_arm) + + # def test_neg_ambiguity_modality_sum(self): + # """ + # Test that the negativity ambiguity function is the same when computed using the full (unfactorized) joint distribution over observations and hidden state factors vs. when computed for each modality separately and summed together. + # """ + + # num_states = [10, 20, 10, 10] + # num_obs = [2, 25, 10, 8] + + # qs = utils.random_single_categorical(num_states) + # A = utils.random_A_matrix(num_obs, num_states) + + # neg_ambig_full = maths.spm_calc_neg_ambig(A, qs) # need to wrap `qs` in a list because the function expects a list of policy-conditioned posterior beliefs (corresponding to each timestep) + # neg_ambig_by_modality = 0. + # for m, A_m in enumerate(A): + # neg_ambig_by_modality += maths.spm_calc_neg_ambig(A_m, qs) + + # self.assertEqual(neg_ambig_full, neg_ambig_by_modality) - def test_pA_info_gain(self): + # def test_entropy_modality_sum(self): + # """ + # Test that the negativity ambiguity function is the same when computed using the full (unfactorized) joint distribution over observations and hidden state factors vs. when computed for each modality separately and summed together. + # """ + + # num_states = [10, 20, 10, 10] + # num_obs = [2, 25, 10, 8] + # qs = utils.random_single_categorical(num_states) + # A = utils.random_A_matrix(num_obs, num_states) + + # H_full = maths.spm_calc_qo_entropy(A, qs) # need to wrap `qs` in a list because the function expects a list of policy-conditioned posterior beliefs (corresponding to each timestep) + # H_by_modality = 0. + # for m, A_m in enumerate(A): + # H_by_modality += maths.spm_calc_qo_entropy(A_m, qs) + + # self.assertEqual(H_full, H_by_modality) + + def test_pA_info_gain(self): """ Test the pA_info_gain function. Demonstrates operation by manipulating shape of the Dirichlet priors over likelihood parameters @@ -392,9 +604,18 @@ def test_pA_info_gain(self): for idx, policy in enumerate(policies): qs_pi = control.get_expected_states(qs, B, policy) qo_pi = control.get_expected_obs(qs_pi, A) - pA_info_gains[idx] += control.calc_pA_info_gain(pA, qo_pi, qs_pi) + pA_info_gains[idx] += control.calc_pA_info_gain(pA, qo_pi, qs_pi).item() self.assertGreater(pA_info_gains[1], pA_info_gains[0]) + + """ Test the factorized version of the pA_info_gain function. """ + pA_info_gains_fac = np.zeros(len(policies)) + for idx, policy in enumerate(policies): + qs_pi = control.get_expected_states(qs, B, policy) + qo_pi = control.get_expected_obs_factorized(qs_pi, A, A_factor_list=[[0]]) + pA_info_gains_fac[idx] += control.calc_pA_info_gain_factorized(pA, qo_pi, qs_pi, A_factor_list=[[0]]).item() + + self.assertTrue(np.allclose(pA_info_gains_fac, pA_info_gains)) def test_pB_info_gain(self): """ @@ -432,6 +653,13 @@ def test_pB_info_gain(self): pB_info_gains[idx] += control.calc_pB_info_gain(pB, qs_pi, qs, policy) self.assertGreater(pB_info_gains[1], pB_info_gains[0]) + B_factor_list = [[0]] + pB_info_gains_interactions = np.zeros(len(policies)) + for idx, policy in enumerate(policies): + qs_pi = control.get_expected_states_interactions(qs, B, B_factor_list, policy) + pB_info_gains_interactions[idx] += control.calc_pB_info_gain_interactions(pB, qs_pi, qs, B_factor_list, policy) + self.assertTrue(np.allclose(pB_info_gains_interactions, pB_info_gains)) + def test_update_posterior_policies_utility(self): """ Tests the refactored (Categorical-less) version of `update_posterior_policies`, using only the expected utility component of the expected free energy @@ -479,7 +707,7 @@ def test_update_posterior_policies_utility(self): qo_pi = control.get_expected_obs(qs_pi, A) lnC = maths.spm_log_single(maths.softmax(C[modality_idx][:, np.newaxis])) - efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC) + efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC).item() q_pi_valid = maths.softmax(efe_valid * 16.0) @@ -527,7 +755,7 @@ def test_update_posterior_policies_utility(self): for modality_idx in range(len(A)): lnC = maths.spm_log_single(maths.softmax(C[modality_idx][:, np.newaxis])) - efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC) + efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC).item() q_pi_valid = maths.softmax(efe_valid * 16.0) @@ -574,7 +802,7 @@ def test_update_posterior_policies_utility(self): for t_idx in range(3): for modality_idx in range(len(A)): lnC = maths.spm_log_single(maths.softmax(C[modality_idx][:, np.newaxis])) - efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC) + efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC).item() q_pi_valid = maths.softmax(efe_valid * 16.0) @@ -627,7 +855,7 @@ def test_temporal_C_matrix(self): for t_idx in range(3): for modality_idx in range(len(A)): lnC = maths.spm_log_single(maths.softmax(C[modality_idx][:, np.newaxis])) - efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC) + efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC).item() q_pi_valid = maths.softmax(efe_valid * 16.0) @@ -677,7 +905,7 @@ def test_temporal_C_matrix(self): for t_idx in range(3): for modality_idx in range(len(A)): lnC = maths.spm_log_single(maths.softmax(C[modality_idx][:, t_idx])) - efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC) + efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC).item() q_pi_valid = maths.softmax(efe_valid * 16.0) @@ -730,7 +958,7 @@ def test_temporal_C_matrix(self): lnC = maths.spm_log_single(maths.softmax(C[modality_idx][:, t_idx])) elif modality_idx == 1: lnC = maths.spm_log_single(maths.softmax(C[modality_idx][:, np.newaxis])) - efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC) + efe_valid[idx] += qo_pi[t_idx][modality_idx].dot(lnC).item() q_pi_valid = maths.softmax(efe_valid * 16.0) @@ -915,7 +1143,7 @@ def test_update_posterior_policies_pA_infogain(self): qs_pi = control.get_expected_states(qs, B, policy) qo_pi = control.get_expected_obs(qs_pi, A) - efe_valid[idx] += control.calc_pA_info_gain(pA, qo_pi, qs_pi) + efe_valid[idx] += control.calc_pA_info_gain(pA, qo_pi, qs_pi).item() q_pi_valid = maths.softmax(efe_valid * 16.0) @@ -960,7 +1188,7 @@ def test_update_posterior_policies_pA_infogain(self): qs_pi = control.get_expected_states(qs, B, policy) qo_pi = control.get_expected_obs(qs_pi, A) - efe_valid[idx] += control.calc_pA_info_gain(pA, qo_pi, qs_pi) + efe_valid[idx] += control.calc_pA_info_gain(pA, qo_pi, qs_pi).item() q_pi_valid = maths.softmax(efe_valid * 16.0) @@ -1003,7 +1231,7 @@ def test_update_posterior_policies_pA_infogain(self): qs_pi = control.get_expected_states(qs, B, policy) qo_pi = control.get_expected_obs(qs_pi, A) - efe_valid[idx] += control.calc_pA_info_gain(pA, qo_pi, qs_pi) + efe_valid[idx] += control.calc_pA_info_gain(pA, qo_pi, qs_pi).item() q_pi_valid = maths.softmax(efe_valid * 16.0) @@ -1146,6 +1374,43 @@ def test_update_posterior_policies_pB_infogain(self): self.assertTrue(np.allclose(efe, efe_valid)) self.assertTrue(np.allclose(q_pi, q_pi_valid)) + + def test_update_posterior_policies_factorized(self): + """ + Test new update_posterior_policies_factorized function, just to make sure it runs through and outputs correct shapes + """ + + num_obs = [3, 3] + num_states = [3, 2] + num_controls = [3, 2] + + A_factor_list = [[0, 1], [1]] + B_factor_list = [[0], [0, 1]] + + qs = utils.random_single_categorical(num_states) + A = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_factor_list) + B = utils.random_B_matrix(num_states, num_controls, B_factor_list=B_factor_list) + C = utils.obj_array_zeros(num_obs) + + policies = control.construct_policies(num_states, num_controls, policy_len=1) + + q_pi, efe = control.update_posterior_policies_factorized( + qs, + A, + B, + C, + A_factor_list, + B_factor_list, + policies, + use_utility = True, + use_states_info_gain = True, + gamma=16.0 + ) + + self.assertEqual(len(q_pi), len(policies)) + self.assertEqual(len(efe), len(policies)) + + chosen_action = control.sample_action(q_pi, policies, num_controls, action_selection="deterministic") def test_sample_action(self): """ diff --git a/test/test_control_jax.py b/test/test_control_jax.py new file mode 100644 index 00000000..75de6912 --- /dev/null +++ b/test/test_control_jax.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" Unit Tests +__author__: Dimitrije Markovic, Conor Heins +""" + +import os +import unittest +import pytest + +import numpy as np +import jax.numpy as jnp +import jax.random as jr +import jax.tree_util as jtu + +import pymdp.jax.control as ctl_jax +import pymdp.control as ctl_np + +from pymdp.jax.maths import factor_dot +from pymdp import utils + +cfg = {"source_key": 0, "num_models": 4} + +def generate_model_params(): + """ + Generate random model dimensions + """ + rng_keys = jr.split(jr.PRNGKey(cfg["source_key"]), cfg["num_models"]) + num_factors_list = [ jr.randint(key, (1,), 1, 10)[0].item() for key in rng_keys ] + num_states_list = [ jr.randint(key, (nf,), 1, 5).tolist() for nf, key in zip(num_factors_list, rng_keys) ] + + rng_keys = jr.split(rng_keys[-1], cfg["num_models"]) + num_modalities_list = [ jr.randint(key, (1,), 1, 10)[0].item() for key in rng_keys ] + num_obs_list = [ jr.randint(key, (nm,), 1, 5).tolist() for nm, key in zip(num_modalities_list, rng_keys) ] + + rng_keys = jr.split(rng_keys[-1], cfg["num_models"]) + A_deps_list = [] + for nf, nm, model_key in zip(num_factors_list, num_modalities_list, rng_keys): + keys_model_i = jr.split(model_key, nm) + A_deps_model_i = [jr.randint(key, (nm,), 0, nf).tolist() for key in keys_model_i] + A_deps_list.append(A_deps_model_i) + + return {'nf_list': num_factors_list, + 'ns_list': num_states_list, + 'nm_list': num_modalities_list, + 'no_list': num_obs_list, + 'A_deps_list': A_deps_list} + +class TestControlJax(unittest.TestCase): + + def test_get_expected_obs_factorized(self): + """ + Tests the jax-ified version of computations of expected observations under some hidden states and policy + """ + gm_params = generate_model_params() + num_factors_list, num_states_list, num_modalities_list, num_obs_list, A_deps_list = gm_params['nf_list'], gm_params['ns_list'], gm_params['nm_list'], gm_params['no_list'], gm_params['A_deps_list'] + for (num_states, num_obs, A_deps) in zip(num_states_list, num_obs_list, A_deps_list): + + qs_numpy = utils.random_single_categorical(num_states) + qs_jax = list(qs_numpy) + + A_np = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_deps) + A_jax = jtu.tree_map(lambda x: jnp.array(x), list(A_np)) + + qo_test = ctl_jax.compute_expected_obs(qs_jax, A_jax, A_deps) + qo_validation = ctl_np.get_expected_obs_factorized([qs_numpy], A_np, A_deps) # need to wrap `qs` in list because `get_expected_obs_factorized` expects a list of `qs` (representing multiple timesteps) + + for qo_m, qo_val_m in zip(qo_test, qo_validation[0]): # need to extract first index of `qo_validation` because `get_expected_obs_factorized` returns a list of `qo` (representing multiple timesteps) + self.assertTrue(np.allclose(qo_m, qo_val_m)) + + def test_info_gain_factorized(self): + """ + Unit test the `calc_states_info_gain_factorized` function by qualitatively checking that in the T-Maze (contextual bandit) + example, the state info gain is higher for the policy that leads to visiting the cue, which is higher than state info gain + for visiting the bandit arm, which in turn is higher than the state info gain for the policy that leads to staying in the start state. + """ + + num_states = [2, 3] + num_obs = [3, 3, 3] + + A_dependencies = [[0, 1], [0, 1], [1]] + A = [] + for m, obs in enumerate(num_obs): + lagging_dimensions = [ns for i, ns in enumerate(num_states) if i in A_dependencies[m]] + modality_shape = [obs] + lagging_dimensions + A.append(np.zeros(modality_shape)) + if m == 0: + A[m][:, :, 0] = np.ones( (num_obs[m], num_states[0]) ) / num_obs[m] + A[m][:, :, 1] = np.ones( (num_obs[m], num_states[0]) ) / num_obs[m] + A[m][:, :, 2] = np.array([[0.9, 0.1], [0.0, 0.0], [0.1, 0.9]]) # cue statistics + if m == 1: + A[m][2, :, 0] = np.ones(num_states[0]) + A[m][0:2, :, 1] = np.array([[0.6, 0.4], [0.6, 0.4]]) # bandit statistics (mapping between reward-state (first hidden state factor) and rewards (Good vs Bad)) + A[m][2, :, 2] = np.ones(num_states[0]) + if m == 2: + A[m] = np.eye(obs) + + qs_start = list(utils.obj_array_uniform(num_states)) + qs_start[1] = np.array([1., 0., 0.]) # agent believes it's in the start state + + A = [jnp.array(A_m) for A_m in A] + qs_start = [jnp.array(qs) for qs in qs_start] + qo_start = ctl_jax.compute_expected_obs(qs_start, A, A_dependencies) + + start_info_gain = ctl_jax.compute_info_gain(qs_start, qo_start, A, A_dependencies) + + qs_arm = list(utils.obj_array_uniform(num_states)) + qs_arm[1] = np.array([0., 1., 0.]) # agent believes it's in the arm-visiting state + qs_arm = [jnp.array(qs) for qs in qs_arm] + qo_arm = ctl_jax.compute_expected_obs(qs_arm, A, A_dependencies) + + arm_info_gain = ctl_jax.compute_info_gain(qs_arm, qo_arm, A, A_dependencies) + + qs_cue = utils.obj_array_uniform(num_states) + qs_cue[1] = np.array([0., 0., 1.]) # agent believes it's in the cue-visiting state + qs_cue = [jnp.array(qs) for qs in qs_cue] + + qo_cue = ctl_jax.compute_expected_obs(qs_cue, A, A_dependencies) + cue_info_gain = ctl_jax.compute_info_gain(qs_cue, qo_cue, A, A_dependencies) + + self.assertGreater(arm_info_gain, start_info_gain) + self.assertGreater(cue_info_gain, arm_info_gain) + + gm_params = generate_model_params() + num_factors_list, num_states_list, num_modalities_list, num_obs_list, A_deps_list = gm_params['nf_list'], gm_params['ns_list'], gm_params['nm_list'], gm_params['no_list'], gm_params['A_deps_list'] + for (num_states, num_obs, A_deps) in zip(num_states_list, num_obs_list, A_deps_list): + + qs_numpy = utils.random_single_categorical(num_states) + qs_jax = list(qs_numpy) + + A_np = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_deps) + A_jax = jtu.tree_map(lambda x: jnp.array(x), list(A_np)) + + qo = ctl_jax.compute_expected_obs(qs_jax, A_jax, A_deps) + + info_gain = ctl_jax.compute_info_gain(qs_jax, qo, A_jax, A_deps) + info_gain_validation = ctl_np.calc_states_info_gain_factorized(A_np, [qs_numpy], A_deps) + + self.assertTrue(np.allclose(info_gain, info_gain_validation, atol=1e-5)) + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/test/test_demos.py b/test/test_demos.py index 35d98c79..d29d3eb4 100644 --- a/test/test_demos.py +++ b/test/test_demos.py @@ -69,18 +69,18 @@ def test_tmaze_demo(self): '''test plotting of the observation likelihood (just plot one slice)''' A_gp = env.get_likelihood_dist() - plot_likelihood(A_gp[1][:,:,0],'Reward Right') + # plot_likelihood(A_gp[1][:,:,0],'Reward Right') '''test plotting of the transition likelihood (just plot one slice)''' B_gp = env.get_transition_dist() - plot_likelihood(B_gp[1][:,:,0],'Reward Condition Transitions') + # plot_likelihood(B_gp[1][:,:,0],'Reward Condition Transitions') A_gm = copy.deepcopy(A_gp) # make a copy of the true observation likelihood to initialize the observation model B_gm = copy.deepcopy(B_gp)# make a copy of the true transition likelihood to initialize the transition model control_fac_idx = [0] agent = Agent(A=A_gm, B=B_gm, control_fac_idx=control_fac_idx) - plot_beliefs(agent.D[0],"Beliefs about initial location") + # plot_beliefs(agent.D[0],"Beliefs about initial location") agent.C[1][1] = 3.0 # they like reward agent.C[1][2] = -3.0 # they don't like loss @@ -115,7 +115,7 @@ def test_tmaze_demo(self): self.assertEqual(obs[2], 1) # this tests that the cue observation is 'Cue Left' in case of 'Reward on Left' condition - plot_beliefs(qx[1],"Final posterior beliefs about reward condition") + # plot_beliefs(qx[1],"Final posterior beliefs about reward condition") def test_tmaze_learning_demo(self): """ @@ -206,7 +206,7 @@ def test_gridworld_genmodel_construction(self): labels = [state_mapping[i] for i in range(A.shape[1])] - plot_likelihood(A) + # plot_likelihood(A) P = {} dim = 3 @@ -240,18 +240,18 @@ def test_gridworld_genmodel_construction(self): self.assertTrue(B.shape[0] == 9) - fig, axes = plt.subplots(2,3, figsize = (15,8)) - a = list(actions.keys()) - count = 0 - for i in range(dim-1): - for j in range(dim): - if count >= 5: - break - g = sns.heatmap(B[:,:,count], cmap = "OrRd", linewidth = 2.5, cbar = False, ax = axes[i,j], xticklabels=labels, yticklabels=labels) - g.set_title(a[count]) - count +=1 - fig.delaxes(axes.flatten()[5]) - plt.tight_layout() + # fig, axes = plt.subplots(2,3, figsize = (15,8)) + # a = list(actions.keys()) + # count = 0 + # for i in range(dim-1): + # for j in range(dim): + # if count >= 5: + # break + # g = sns.heatmap(B[:,:,count], cmap = "OrRd", linewidth = 2.5, cbar = False, ax = axes[i,j], xticklabels=labels, yticklabels=labels) + # g.set_title(a[count]) + # count +=1 + # fig.delaxes(axes.flatten()[5]) + # plt.tight_layout() def test_gridworld_activeinference(self): """ @@ -266,38 +266,38 @@ def test_gridworld_activeinference(self): labels = [state_mapping[i] for i in range(A.shape[1])] - def plot_empirical_prior(B): - fig, axes = plt.subplots(3,2, figsize=(8, 10)) - actions = ['UP', 'RIGHT', 'DOWN', 'LEFT', 'STAY'] - count = 0 - for i in range(3): - for j in range(2): - if count >= 5: - break + # def plot_empirical_prior(B): + # fig, axes = plt.subplots(3,2, figsize=(8, 10)) + # actions = ['UP', 'RIGHT', 'DOWN', 'LEFT', 'STAY'] + # count = 0 + # for i in range(3): + # for j in range(2): + # if count >= 5: + # break - g = sns.heatmap(B[:,:,count], cmap="OrRd", linewidth=2.5, cbar=False, ax=axes[i,j]) + # g = sns.heatmap(B[:,:,count], cmap="OrRd", linewidth=2.5, cbar=False, ax=axes[i,j]) - g.set_title(actions[count]) - count += 1 - fig.delaxes(axes.flatten()[5]) - plt.tight_layout() + # g.set_title(actions[count]) + # count += 1 + # fig.delaxes(axes.flatten()[5]) + # plt.tight_layout() - def plot_transition(B): - fig, axes = plt.subplots(2,3, figsize = (15,8)) - a = list(actions.keys()) - count = 0 - for i in range(dim-1): - for j in range(dim): - if count >= 5: - break - g = sns.heatmap(B[:,:,count], cmap = "OrRd", linewidth = 2.5, cbar = False, ax = axes[i,j], xticklabels=labels, yticklabels=labels) - g.set_title(a[count]) - count +=1 - fig.delaxes(axes.flatten()[5]) - plt.tight_layout() + # def plot_transition(B): + # fig, axes = plt.subplots(2,3, figsize = (15,8)) + # a = list(actions.keys()) + # count = 0 + # for i in range(dim-1): + # for j in range(dim): + # if count >= 5: + # break + # g = sns.heatmap(B[:,:,count], cmap = "OrRd", linewidth = 2.5, cbar = False, ax = axes[i,j], xticklabels=labels, yticklabels=labels) + # g.set_title(a[count]) + # count +=1 + # fig.delaxes(axes.flatten()[5]) + # plt.tight_layout() A = np.eye(9) - plot_likelihood(A) + # plot_likelihood(A) P = {} dim = 3 @@ -330,7 +330,7 @@ def plot_transition(B): ns = int(P[s][a]) B[ns, s, a] = 1 - plot_transition(B) + # plot_transition(B) class GridWorldEnv(): @@ -362,18 +362,18 @@ def compute_free_energy(q,A, B): def softmax(x): return np.exp(x) / np.sum(np.exp(x)) - def perform_inference(likelihood, prior): - return softmax(log_stable(likelihood) + log_stable(prior)) + # def perform_inference(likelihood, prior): + # return softmax(log_stable(likelihood) + log_stable(prior)) Qs = np.ones(9) * 1/9 - plot_beliefs(Qs) + # plot_beliefs(Qs) REWARD_LOCATION = 7 reward_state = state_mapping[REWARD_LOCATION] C = np.zeros(num_states) C[REWARD_LOCATION] = 1. - plot_beliefs(C) + # plot_beliefs(C) def evaluate_policy(policy, Qs, A, B, C): # initialize expected free energy at 0 @@ -383,7 +383,7 @@ def evaluate_policy(policy, Qs, A, B, C): for t in range(len(policy)): # get action entailed by the policy at timestep `t` - u = int(policy[t]) + u = int(policy[t].item()) # work out expected state, given the action Qs_pi = B[:,:,u].dot(Qs) @@ -424,7 +424,7 @@ def infer_action(Qs, A, B, C, n_actions, policies): # sum probabilites of control states or actions for i, policy in enumerate(policies): # control state specified by policy - u = int(policy[0]) + u = int(policy[0].item()) # add probability of policy Qu[u] += Q_pi[i] @@ -466,7 +466,7 @@ def infer_action(Qs, A, B, C, n_actions, policies): Qs = maths.softmax(log_stable(likelihood) + log_stable(prior)) - plot_beliefs(Qs, "Beliefs (Qs) at time {}".format(t)) + # plot_beliefs(Qs, "Beliefs (Qs) at time {}".format(t)) # self.assertEqual(np.argmax(Qs), REWARD_LOCATION) # @NOTE: This is not always true due to stochastic samplign!!! self.assertEqual(Qs.shape[0], B.shape[0]) diff --git a/test/test_fpi.py b/test/test_fpi.py new file mode 100644 index 00000000..d60f944e --- /dev/null +++ b/test/test_fpi.py @@ -0,0 +1,203 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" Unit Tests for factorized version of variational fixed point iteration (FPI or "Vanilla FPI") +__author__: Conor Heins +""" + +import os +import unittest + +import numpy as np + +from pymdp import utils, maths +from pymdp.algos import run_vanilla_fpi, run_vanilla_fpi_factorized + +class TestFPI(unittest.TestCase): + + def test_factorized_fpi_one_factor_one_modality(self): + """ + Test the sparsified version of `run_vanilla_fpi`, named `run_vanilla_fpi_factorized` + with single hidden state factor and single observation modality. + """ + + num_states = [3] + num_obs = [3] + + prior = utils.random_single_categorical(num_states) + + A = utils.to_obj_array(maths.softmax(np.eye(num_states[0]) * 0.1)) + + obs_idx = np.random.choice(num_obs[0]) + obs = utils.onehot(obs_idx, num_obs[0]) + + mb_dict = {'A_factor_list': [[0]], + 'A_modality_list': [[0]]} + + qs_out = run_vanilla_fpi_factorized(A, obs, num_obs, num_states, mb_dict, prior=prior)[0] + qs_validation_1 = run_vanilla_fpi(A, obs, num_obs, num_states, prior=prior)[0] + qs_validation_2 = maths.softmax(maths.spm_log_single(A[0][obs_idx,:]) + maths.spm_log_single(prior[0])) + + self.assertTrue(np.isclose(qs_validation_1, qs_out).all()) + self.assertTrue(np.isclose(qs_validation_2, qs_out).all()) + + def test_factorized_fpi_one_factor_multi_modality(self): + """ + Test the sparsified version of `run_vanilla_fpi`, named `run_vanilla_fpi_factorized` + with single hidden state factor and multiple observation modalities. + """ + + num_states = [3] + num_obs = [3, 2] + + prior = utils.random_single_categorical(num_states) + + A = utils.random_A_matrix(num_obs, num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + mb_dict = {'A_factor_list': [[0], [0]], + 'A_modality_list': [[0, 1]]} + + qs_out = run_vanilla_fpi_factorized(A, obs, num_obs, num_states, mb_dict, prior=prior)[0] + qs_validation = run_vanilla_fpi(A, obs, num_obs, num_states, prior=prior)[0] + + self.assertTrue(np.isclose(qs_validation, qs_out).all()) + + def test_factorized_fpi_multi_factor_one_modality(self): + """ + Test the sparsified version of `run_vanilla_fpi`, named `run_vanilla_fpi_factorized` + with multiple hidden state factors and one observation modality. + """ + + num_states = [4, 5] + num_obs = [3] + + prior = utils.random_single_categorical(num_states) + + A = utils.random_A_matrix(num_obs, num_states) + + obs_idx = np.random.choice(num_obs[0]) + obs = utils.onehot(obs_idx, num_obs[0]) + + mb_dict = {'A_factor_list': [[0, 1]], + 'A_modality_list': [[0], [0]]} + + qs_out = run_vanilla_fpi_factorized(A, obs, num_obs, num_states, mb_dict, prior=prior) + qs_validation = run_vanilla_fpi(A, obs, num_obs, num_states, prior=prior) + + for qs_f_val, qs_f_out in zip(qs_validation, qs_out): + self.assertTrue(np.isclose(qs_f_val, qs_f_out).all()) + + def test_factorized_fpi_multi_factor_multi_modality(self): + """ + Test the sparsified version of `run_vanilla_fpi`, named `run_vanilla_fpi_factorized` + with multiple hidden state factors and multiple observation modalities. + """ + + num_states = [3, 4] + num_obs = [3, 3, 5] + + prior = utils.random_single_categorical(num_states) + + A = utils.random_A_matrix(num_obs, num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + mb_dict = {'A_factor_list': [[0, 1], [0, 1], [0, 1]], + 'A_modality_list': [[0, 1, 2], [0, 1, 2]]} + + qs_out = run_vanilla_fpi_factorized(A, obs, num_obs, num_states, mb_dict, prior=prior) + qs_validation = run_vanilla_fpi(A, obs, num_obs, num_states, prior=prior) + + for qs_f_val, qs_f_out in zip(qs_validation, qs_out): + self.assertTrue(np.isclose(qs_f_val, qs_f_out).all()) + + # test it also without computing VFE (i.e. with `compute_vfe=False`) + qs_out = run_vanilla_fpi_factorized(A, obs, num_obs, num_states, mb_dict, prior=prior, compute_vfe=False) + qs_validation = run_vanilla_fpi(A, obs, num_obs, num_states, prior=prior, compute_vfe=False) + + for qs_f_val, qs_f_out in zip(qs_validation, qs_out): + self.assertTrue(np.isclose(qs_f_val, qs_f_out).all()) + + def test_factorized_fpi_multi_factor_multi_modality_with_condind(self): + """ + Test the sparsified version of `run_vanilla_fpi`, named `run_vanilla_fpi_factorized` + with multiple hidden state factors and multiple observation modalities, where some modalities only depend on some factors. + """ + + num_states = [3, 4] + num_obs = [3, 3, 5] + + prior = utils.random_single_categorical(num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + mb_dict = {'A_factor_list': [[0], [1], [0, 1]], + 'A_modality_list': [[0, 2], [1, 2]]} + + A_reduced = utils.random_A_matrix(num_obs, num_states, A_factor_list=mb_dict['A_factor_list']) + + qs_out = run_vanilla_fpi_factorized(A_reduced, obs, num_obs, num_states, mb_dict, prior=prior) + + A_full = utils.initialize_empty_A(num_obs, num_states) + for m, A_m in enumerate(A_full): + other_factors = list(set(range(len(num_states))) - set(mb_dict['A_factor_list'][m])) # list of the factors that modality `m` does not depend on + + # broadcast or tile the reduced A matrix (`A_reduced`) along the dimensions of corresponding to `other_factors` + expanded_dims = [num_obs[m]] + [1 if f in other_factors else ns for (f, ns) in enumerate(num_states)] + tile_dims = [1] + [ns if f in other_factors else 1 for (f, ns) in enumerate(num_states)] + A_full[m] = np.tile(A_reduced[m].reshape(expanded_dims), tile_dims) + + qs_validation = run_vanilla_fpi(A_full, obs, num_obs, num_states, prior=prior) + + for qs_f_val, qs_f_out in zip(qs_validation, qs_out): + self.assertTrue(np.isclose(qs_f_val, qs_f_out).all()) + + def test_factorized_fpi_multi_factor_single_modality_with_condind(self): + """ + Test the sparsified version of `run_vanilla_fpi`, named `run_vanilla_fpi_factorized` + with multiple hidden state factors and one observation modality, where the modality only depend on some factors. + """ + + num_states = [3, 4] + num_obs = [3] + + prior = utils.random_single_categorical(num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + mb_dict = {'A_factor_list': [[0]], + 'A_modality_list': [[0], []]} + + A_reduced = utils.random_A_matrix(num_obs, num_states, A_factor_list=mb_dict['A_factor_list']) + + qs_out = run_vanilla_fpi_factorized(A_reduced, obs, num_obs, num_states, mb_dict, prior=prior) + + A_full = utils.initialize_empty_A(num_obs, num_states) + for m, A_m in enumerate(A_full): + other_factors = list(set(range(len(num_states))) - set(mb_dict['A_factor_list'][m])) # list of the factors that modality `m` does not depend on + + # broadcast or tile the reduced A matrix (`A_reduced`) along the dimensions of corresponding to `other_factors` + expanded_dims = [num_obs[m]] + [1 if f in other_factors else ns for (f, ns) in enumerate(num_states)] + tile_dims = [1] + [ns if f in other_factors else 1 for (f, ns) in enumerate(num_states)] + A_full[m] = np.tile(A_reduced[m].reshape(expanded_dims), tile_dims) + + qs_validation = run_vanilla_fpi(A_full, obs, num_obs, num_states, prior=prior) + + for qs_f_val, qs_f_out in zip(qs_validation, qs_out): + self.assertTrue(np.isclose(qs_f_val, qs_f_out).all()) + + self.assertTrue(np.isclose(qs_out[1], prior[1]).all()) + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/test/test_inference.py b/test/test_inference.py index c84a958a..6528ab6d 100644 --- a/test/test_inference.py +++ b/test/test_inference.py @@ -108,6 +108,106 @@ def test_update_posterior_states(self): for factor in range(len(num_states)): self.assertTrue(np.isclose(qs_out1[factor], qs_out2[factor]).all()) + def test_update_posterior_states_factorized_single_factor(self): + """ + Tests the version of `update_posterior_states` where an `mb_dict` is provided as an argument to factorize + the fixed-point iteration (FPI) algorithm. Single factor version. + """ + num_states = [3] + num_obs = [3] + + prior = utils.random_single_categorical(num_states) + + A = utils.to_obj_array(maths.softmax(np.eye(num_states[0]) * 0.1)) + + obs_idx = 1 + obs = utils.onehot(obs_idx, num_obs[0]) + + mb_dict = {'A_factor_list': [[0]], + 'A_modality_list': [[0]]} + + qs_out = inference.update_posterior_states_factorized(A, obs, num_obs, num_states, mb_dict, prior=prior) + qs_validation = maths.softmax(maths.spm_log_single(A[0][obs_idx,:]) + maths.spm_log_single(prior[0])) + + self.assertTrue(np.isclose(qs_validation, qs_out[0]).all()) + + '''Try single modality inference where the observation is passed in as an int''' + qs_out_2 = inference.update_posterior_states_factorized(A, obs_idx, num_obs, num_states, mb_dict, prior=prior) + self.assertTrue(np.isclose(qs_out_2[0], qs_out[0]).all()) + + '''Try single modality inference where the observation is a one-hot stored in an object array''' + qs_out_3 = inference.update_posterior_states_factorized(A, utils.to_obj_array(obs),num_obs, num_states, mb_dict, prior=prior) + self.assertTrue(np.isclose(qs_out_3[0], qs_out[0]).all()) + + def test_update_posterior_states_factorized(self): + """ + Tests the version of `update_posterior_states` where an `mb_dict` is provided as an argument to factorize + the fixed-point iteration (FPI) algorithm. + """ + + num_states = [3, 4] + num_obs = [3, 3, 5] + + prior = utils.random_single_categorical(num_states) + + obs_index_tuple = tuple([np.random.randint(obs_dim) for obs_dim in num_obs]) + + mb_dict = {'A_factor_list': [[0], [1], [0, 1]], + 'A_modality_list': [[0, 2], [1, 2]]} + + A_reduced = utils.random_A_matrix(num_obs, num_states, A_factor_list=mb_dict['A_factor_list']) + + qs_out = inference.update_posterior_states_factorized(A_reduced, obs_index_tuple, num_obs, num_states, mb_dict, prior=prior) + + A_full = utils.initialize_empty_A(num_obs, num_states) + for m, A_m in enumerate(A_full): + other_factors = list(set(range(len(num_states))) - set(mb_dict['A_factor_list'][m])) # list of the factors that modality `m` does not depend on + + # broadcast or tile the reduced A matrix (`A_reduced`) along the dimensions of corresponding to `other_factors` + expanded_dims = [num_obs[m]] + [1 if f in other_factors else ns for (f, ns) in enumerate(num_states)] + tile_dims = [1] + [ns if f in other_factors else 1 for (f, ns) in enumerate(num_states)] + A_full[m] = np.tile(A_reduced[m].reshape(expanded_dims), tile_dims) + + qs_validation = inference.update_posterior_states(A_full, obs_index_tuple, prior=prior) + + for qs_f_val, qs_f_out in zip(qs_validation, qs_out): + self.assertTrue(np.isclose(qs_f_val, qs_f_out).all()) + + def test_update_posterior_states_factorized_noVFE_compute(self): + """ + Tests the version of `update_posterior_states` where an `mb_dict` is provided as an argument to factorize + the fixed-point iteration (FPI) algorithm. + + In this version, we always run the total number of iterations because we don't compute the variational free energy over the course of convergence/optimization. + """ + + num_states = [3, 4] + num_obs = [3, 3, 5] + + prior = utils.random_single_categorical(num_states) + + obs_index_tuple = tuple([np.random.randint(obs_dim) for obs_dim in num_obs]) + + mb_dict = {'A_factor_list': [[0], [1], [0, 1]], + 'A_modality_list': [[0, 2], [1, 2]]} + + A_reduced = utils.random_A_matrix(num_obs, num_states, A_factor_list=mb_dict['A_factor_list']) + + qs_out = inference.update_posterior_states_factorized(A_reduced, obs_index_tuple, num_obs, num_states, mb_dict, prior=prior, compute_vfe=False) + + A_full = utils.initialize_empty_A(num_obs, num_states) + for m, A_m in enumerate(A_full): + other_factors = list(set(range(len(num_states))) - set(mb_dict['A_factor_list'][m])) # list of the factors that modality `m` does not depend on + + # broadcast or tile the reduced A matrix (`A_reduced`) along the dimensions of corresponding to `other_factors` + expanded_dims = [num_obs[m]] + [1 if f in other_factors else ns for (f, ns) in enumerate(num_states)] + tile_dims = [1] + [ns if f in other_factors else 1 for (f, ns) in enumerate(num_states)] + A_full[m] = np.tile(A_reduced[m].reshape(expanded_dims), tile_dims) + + qs_validation = inference.update_posterior_states(A_full, obs_index_tuple, prior=prior, compute_vfe=False) + + for qs_f_val, qs_f_out in zip(qs_validation, qs_out): + self.assertTrue(np.isclose(qs_f_val, qs_f_out).all()) if __name__ == "__main__": diff --git a/test/test_inference_jax.py b/test/test_inference_jax.py new file mode 100644 index 00000000..e426c870 --- /dev/null +++ b/test/test_inference_jax.py @@ -0,0 +1,234 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" Unit Tests +__author__: Dimitrije Markovic, Conor Heins +""" + +import os +import unittest + +import numpy as np +import jax.numpy as jnp + +from pymdp.jax.algos import run_vanilla_fpi as fpi_jax +from pymdp.algos import run_vanilla_fpi as fpi_numpy +from pymdp import utils, maths + +class TestInferenceJax(unittest.TestCase): + + def test_fixed_point_iteration_singlestate_singleobs(self): + """ + Tests the jax-ified version of mean-field fixed-point iteration against the original numpy version. + In this version there is one hidden state factor and one observation modality + """ + + num_states_list = [ + [1], + [5], + [10] + ] + + num_obs_list = [ + [5], + [1], + [2] + ] + + for (num_states, num_obs) in zip(num_states_list, num_obs_list): + + # numpy version + prior = utils.random_single_categorical(num_states) + A = utils.random_A_matrix(num_obs, num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + qs_numpy = fpi_numpy(A, obs, num_obs, num_states, prior=prior, num_iter=16, dF=1.0, dF_tol=-1.0) # set dF_tol to negative number so numpy version of FPI never stops early due to convergence + + # jax version + prior = [jnp.array(prior_f) for prior_f in prior] + A = [jnp.array(a_m) for a_m in A] + obs = [jnp.array(o_m) for o_m in obs] + + qs_jax = fpi_jax(A, obs, prior, num_iter=16) + + for f, _ in enumerate(qs_jax): + self.assertTrue(np.allclose(qs_numpy[f], qs_jax[f])) + + def test_fixed_point_iteration_singlestate_multiobs(self): + """ + Tests the jax-ified version of mean-field fixed-point iteration against the original numpy version. + In this version there is one hidden state factor and multiple observation modalities + """ + + num_states_list = [ + [1], + [5], + [10] + ] + + num_obs_list = [ + [5, 2], + [1, 8, 9], + [2, 2, 2] + ] + + for (num_states, num_obs) in zip(num_states_list, num_obs_list): + + # numpy version + prior = utils.random_single_categorical(num_states) + A = utils.random_A_matrix(num_obs, num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + qs_numpy = fpi_numpy(A, obs, num_obs, num_states, prior=prior, num_iter=16, dF=1.0, dF_tol=-1.0) # set dF_tol to negative number so numpy version of FPI never stops early due to convergence + + # jax version + prior = [jnp.array(prior_f) for prior_f in prior] + A = [jnp.array(a_m) for a_m in A] + obs = [jnp.array(o_m) for o_m in obs] + + qs_jax = fpi_jax(A, obs, prior, num_iter=16) + + for f, _ in enumerate(qs_jax): + self.assertTrue(np.allclose(qs_numpy[f], qs_jax[f])) + + def test_fixed_point_iteration_multistate_singleobs(self): + """ + Tests the jax-ified version of mean-field fixed-point iteration against the original numpy version. + In this version there are multiple hidden state factors and a single observation modality + """ + + num_states_list = [ + [1, 10, 2], + [5, 5, 10, 2], + [10, 2] + ] + + num_obs_list = [ + [5], + [1], + [10] + ] + + for (num_states, num_obs) in zip(num_states_list, num_obs_list): + + # numpy version + prior = utils.random_single_categorical(num_states) + A = utils.random_A_matrix(num_obs, num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + qs_numpy = fpi_numpy(A, obs, num_obs, num_states, prior=prior, num_iter=16, dF=1.0, dF_tol=-1.0) # set dF_tol to negative number so numpy version of FPI never stops early due to convergence + + # jax version + prior = [jnp.array(prior_f) for prior_f in prior] + A = [jnp.array(a_m) for a_m in A] + obs = [jnp.array(o_m) for o_m in obs] + + qs_jax = fpi_jax(A, obs, prior, num_iter=16) + + for f, _ in enumerate(qs_jax): + self.assertTrue(np.allclose(qs_numpy[f], qs_jax[f])) + + + def test_fixed_point_iteration_multistate_multiobs(self): + """ + Tests the jax-ified version of mean-field fixed-point iteration against the original numpy version. + In this version there are multiple hidden state factors and multiple observation modalities + """ + + ''' Start by creating a collection of random generative models with different + cardinalities and dimensionalities of hidden state factors and observation modalities''' + + num_states_list = [ + [2, 2, 5], + [2, 2, 2], + [4, 4] + ] + + num_obs_list = [ + [5, 10], + [4, 3, 2], + [5, 10, 6] + ] + + for (num_states, num_obs) in zip(num_states_list, num_obs_list): + + # numpy version + prior = utils.random_single_categorical(num_states) + A = utils.random_A_matrix(num_obs, num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + qs_numpy = fpi_numpy(A, obs, num_obs, num_states, prior=prior, num_iter=16, dF=1.0, dF_tol=-1.0) # set dF_tol to negative number so numpy version of FPI never stops early due to convergence + + # jax version + prior = [jnp.array(prior_f) for prior_f in prior] + A = [jnp.array(a_m) for a_m in A] + obs = [jnp.array(o_m) for o_m in obs] + + qs_jax = fpi_jax(A, obs, prior, num_iter=16) + + for f, _ in enumerate(qs_jax): + self.assertTrue(np.allclose(qs_numpy[f], qs_jax[f])) + + def test_fixed_point_iteration_index_observations(self): + """ + Tests the jax-ified version of mean-field fixed-point iteration against the original NumPy version. + In this version there are multiple hidden state factors and multiple observation modalities. + + Test the jax version with index-based observations (not one-hots) + """ + + ''' Start by creating a collection of random generative models with different + cardinalities and dimensionalities of hidden state factors and observation modalities''' + + num_states_list = [ + [2, 2, 5], + [2, 2, 2], + [4, 4] + ] + + num_obs_list = [ + [5, 10], + [4, 3, 2], + [5, 10, 6] + ] + + for (num_states, num_obs) in zip(num_states_list, num_obs_list): + + # numpy version + prior = utils.random_single_categorical(num_states) + A = utils.random_A_matrix(num_obs, num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + qs_numpy = fpi_numpy(A, obs, num_obs, num_states, prior=prior, num_iter=16, dF=1.0, dF_tol=-1.0) # set dF_tol to negative number so numpy version of FPI never stops early due to convergence + + obs_idx = [] + for ob in obs: + obs_idx.append(np.where(ob)[0][0]) + + # jax version + prior = [jnp.array(prior_f) for prior_f in prior] + A = [jnp.array(a_m) for a_m in A] + # obs = [jnp.array(o_m) for o_m in obs] + + qs_jax = fpi_jax(A, obs_idx, prior, num_iter=16, distr_obs=False) + + for f, _ in enumerate(qs_jax): + self.assertTrue(np.allclose(qs_numpy[f], qs_jax[f])) + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/test/test_learning.py b/test/test_learning.py index a849c982..c839704c 100644 --- a/test/test_learning.py +++ b/test/test_learning.py @@ -249,7 +249,53 @@ def test_update_pA_diff_observation_formats(self): pA, A, observation_onehot, qs, lr=l_rate, modalities=modalities_to_update) self.assertTrue(np.allclose(pA_updated_1[0], pA_updated_2[0])) + + def test_update_pA_factorized(self): + """ + Test for `learning.update_obs_likelihood_dirichlet_factorized`, which is the learning function updating prior Dirichlet parameters over the sensory likelihood (pA) + in the case that the generative model is sparse and only some modalities depend on some hidden state factors + """ + + """ Test version with sparse conditional dependency graph (taking advantage of `A_factor_list` argument) """ + num_states = [2, 6, 5] + num_obs = [3, 4, 5] + A_factor_list = [[0], [1, 2], [0, 2]] + + qs = utils.random_single_categorical(num_states) + A = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_factor_list) + pA = utils.dirichlet_like(A, scale=1.0) + observation = [np.random.randint(obs_dim) for obs_dim in num_obs] + pA_updated_test = learning.update_obs_likelihood_dirichlet_factorized( + pA, A, observation, qs, A_factor_list + ) + for modality, obs_dim in enumerate(num_obs): + update = maths.spm_cross(utils.onehot(observation[modality], obs_dim), qs[A_factor_list[modality]]) + pA_updated_valid_m = pA[modality] + update + self.assertTrue(np.allclose(pA_updated_test[modality], pA_updated_valid_m)) + + """ Test version with full conditional dependency graph (not taking advantage of `A_factor_list` argument, but including it anyway) """ + num_states = [2, 6, 5] + num_obs = [3, 4, 5] + A_factor_list = len(num_obs) * [[0, 1, 2]] + qs = utils.random_single_categorical(num_states) + A = utils.random_A_matrix(num_obs, num_states) + + modalities_to_update = [0, 2] + learning_rate = np.random.rand() # sample some positive learning rate + + pA = utils.dirichlet_like(A, scale=1.0) + observation = [np.random.randint(obs_dim) for obs_dim in num_obs] + pA_updated_test = learning.update_obs_likelihood_dirichlet_factorized( + pA, A, observation, qs, A_factor_list, lr=learning_rate, modalities=modalities_to_update + ) + + pA_updated_valid = learning.update_obs_likelihood_dirichlet( + pA, A, observation, qs, lr=learning_rate, modalities=modalities_to_update + ) + + for modality, obs_dim in enumerate(num_obs): + self.assertTrue(np.allclose(pA_updated_test[modality], pA_updated_valid[modality])) def test_update_pB_single_factor_no_actions(self): """ @@ -552,6 +598,70 @@ def test_update_pB_multi_factor_some_controllable_some_factors(self): ) self.assertTrue(np.all(pB_updated[factor] == validation_pB[factor])) + def test_update_pB_interactions(self): + """ + Test for `learning.update_state_likelihood_dirichlet_factorized`, which is the learning function updating prior Dirichlet parameters over the transition likelihood (pB) + in the case that there are allowable interactions between hidden state factors, i.e. the dynamics of factor `f` may depend on more than just its control factor and its own state. + """ + + """ Test version with interactions """ + num_states = [3, 4, 5] + num_controls = [2, 1, 1] + B_factor_list= [[0, 1], [0,1,2], [1, 2]] + factors_to_update = [0, 1] + + qs_prev = utils.random_single_categorical(num_states) + qs = utils.random_single_categorical(num_states) + + B = utils.random_B_matrix(num_states, num_controls, B_factor_list=B_factor_list) + pB = utils.dirichlet_like(B, scale=1.) + l_rate = np.random.rand() # sample some positive learning rate + + action = np.array([np.random.randint(c_dim) for c_dim in num_controls]) + + pB_updated_test = learning.update_state_likelihood_dirichlet_interactions( + pB, B, action, qs, qs_prev, B_factor_list, lr=l_rate, factors=factors_to_update + ) + + pB_updated_valid = utils.dirichlet_like(B, scale=1.) + + for factor, action_i in enumerate(action): + + if factor in factors_to_update: + pB_updated_valid[factor][...,action_i] += ( + l_rate + * maths.spm_cross(qs[factor], qs_prev[B_factor_list[factor]]) + * (B[factor][...,action_i] > 0) + ) + self.assertTrue(np.all(pB_updated_test[factor] == pB_updated_valid[factor])) + + """ Test version without interactions, but still use the factorized version to test it against the non-interacting version `update_state_likelihood_dirichlet` """ + num_states = [3, 4, 5] + num_controls = [2, 1, 1] + B_factor_list= [[0], [1], [2]] + factors_to_update = [0, 1] + + qs_prev = utils.random_single_categorical(num_states) + qs = utils.random_single_categorical(num_states) + + B = utils.random_B_matrix(num_states, num_controls, B_factor_list=B_factor_list) + pB = utils.dirichlet_like(B, scale=1.) + l_rate = np.random.rand() # sample some positive learning rate + + action = np.array([np.random.randint(c_dim) for c_dim in num_controls]) + + pB_updated_test = learning.update_state_likelihood_dirichlet_interactions( + pB, B, action, qs, qs_prev, B_factor_list, lr=l_rate, factors=factors_to_update + ) + + pB_updated_valid = learning.update_state_likelihood_dirichlet( + pB, B, action, qs, qs_prev, lr=l_rate, factors=factors_to_update + ) + + for factor, action_i in enumerate(action): + self.assertTrue(np.allclose(pB_updated_test[factor], pB_updated_valid[factor])) + + def test_update_pD(self): """ Test updating prior Dirichlet parameters over initial hidden states (pD). diff --git a/test/test_learning_jax.py b/test/test_learning_jax.py new file mode 100644 index 00000000..cdb3b86c --- /dev/null +++ b/test/test_learning_jax.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" Unit Tests +__author__: Dimitrije Markovic, Conor Heins +""" + +import os +import unittest + +import numpy as np +import jax.numpy as jnp +import jax.tree_util as jtu + +from pymdp.learning import update_obs_likelihood_dirichlet as update_pA_numpy +from pymdp.learning import update_obs_likelihood_dirichlet_factorized as update_pA_numpy_factorized +from pymdp.jax.learning import update_obs_likelihood_dirichlet as update_pA_jax +from pymdp import utils, maths + +class TestLearningJax(unittest.TestCase): + + def test_update_observation_likelihood_fullyconnected(self): + """ + Testing JAX-ified version of updating Dirichlet posterior over observation likelihood parameters (qA is posterior, pA is prior, and A is expectation + of likelihood wrt to current posterior over A, i.e. $A = E_{Q(A)}[P(o|s,A)]$. + + This is the so-called 'fully-connected' version where all hidden state factors drive each modality (i.e. A_dependencies is a list of lists of hidden state factors) + """ + + num_obs_list = [ [5], + [10, 3, 2], + [2, 4, 4, 2], + [10] + ] + num_states_list = [ [2,3,4], + [2], + [4,5], + [3] + ] + + A_dependencies_list = [ [ [0,1,2] ], + [ [0], [0], [0] ], + [ [0,1], [0,1], [0,1], [0,1] ], + [ [0] ] + ] + + for (num_obs, num_states, A_dependencies) in zip(num_obs_list, num_states_list, A_dependencies_list): + # create numpy arrays to test numpy version of learning + + # create A matrix initialization (expected initial value of P(o|s, A)) and prior over A (pA) + A_np = utils.random_A_matrix(num_obs, num_states) + pA_np = utils.dirichlet_like(A_np, scale = 3.0) + + # create random observations + obs_np = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs_np[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + # create random state posterior + qs_np = utils.random_single_categorical(num_states) + + l_rate = 1.0 + + # run numpy version of learning + qA_np_test = update_pA_numpy(pA_np, A_np, obs_np, qs_np, lr=l_rate) + + pA_jax = jtu.tree_map(lambda x: jnp.array(x), list(pA_np)) + obs_jax = jtu.tree_map(lambda x: jnp.array(x)[None], list(obs_np)) + qs_jax = jtu.tree_map(lambda x: jnp.array(x)[None], list(qs_np)) + + qA_jax_test = update_pA_jax(pA_jax, obs_jax, qs_jax, A_dependencies, lr=l_rate) + + for modality, obs_dim in enumerate(num_obs): + self.assertTrue(np.allclose(qA_jax_test[modality], qA_np_test[modality])) + + def test_update_observation_likelihood_factorized(self): + """ + Testing JAX-ified version of updating Dirichlet posterior over observation likelihood parameters (qA is posterior, pA is prior, and A is expectation + of likelihood wrt to current posterior over A, i.e. $A = E_{Q(A)}[P(o|s,A)]$. + + This is the factorized version where only some hidden state factors drive each modality (i.e. A_dependencies is a list of lists of hidden state factors) + """ + + num_obs_list = [ [5], + [10, 3, 2], + [2, 4, 4, 2], + [10] + ] + num_states_list = [ [2,3,4], + [2, 5, 2], + [4,5], + [3] + ] + + A_dependencies_list = [ [ [0,1] ], + [ [0, 1], [1], [1, 2] ], + [ [0,1], [0], [0,1], [1] ], + [ [0] ] + ] + + for (num_obs, num_states, A_dependencies) in zip(num_obs_list, num_states_list, A_dependencies_list): + # create numpy arrays to test numpy version of learning + + # create A matrix initialization (expected initial value of P(o|s, A)) and prior over A (pA) + A_np = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_dependencies) + pA_np = utils.dirichlet_like(A_np, scale = 3.0) + + # create random observations + obs_np = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs_np[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + # create random state posterior + qs_np = utils.random_single_categorical(num_states) + + l_rate = 1.0 + + # run numpy version of learning + qA_np_test = update_pA_numpy_factorized(pA_np, A_np, obs_np, qs_np, A_dependencies, lr=l_rate) + + pA_jax = jtu.tree_map(lambda x: jnp.array(x), list(pA_np)) + obs_jax = jtu.tree_map(lambda x: jnp.array(x)[None], list(obs_np)) + qs_jax = jtu.tree_map(lambda x: jnp.array(x)[None], list(qs_np)) + + qA_jax_test = update_pA_jax(pA_jax, obs_jax, qs_jax, A_dependencies, lr=l_rate) + + for modality, obs_dim in enumerate(num_obs): + self.assertTrue(np.allclose(qA_jax_test[modality],qA_np_test[modality])) + +if __name__ == "__main__": + unittest.main() + + + + + + + + diff --git a/test/test_message_passing_jax.py b/test/test_message_passing_jax.py new file mode 100644 index 00000000..b27be336 --- /dev/null +++ b/test/test_message_passing_jax.py @@ -0,0 +1,698 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" Unit Tests +__author__: Dimitrije Markovic, Conor Heins +""" + +import os +import unittest +from functools import partial + +import numpy as np +import jax.numpy as jnp +import jax.tree_util as jtu +from jax import vmap, nn +from jax import random as jr + +from pymdp.jax.algos import run_vanilla_fpi as fpi_jax +from pymdp.jax.algos import run_factorized_fpi as fpi_jax_factorized +from pymdp.jax.algos import update_variational_filtering as ovf_jax +from pymdp.algos import run_vanilla_fpi as fpi_numpy +from pymdp.algos import run_mmp as mmp_numpy +from pymdp.jax.algos import run_mmp as mmp_jax +from pymdp.jax.algos import run_vmp as vmp_jax +from pymdp import utils, maths + +from typing import Any, List, Dict + + +def make_model_configs(source_seed=0, num_models=4) -> Dict: + rng_keys = jr.split(jr.PRNGKey(source_seed), num_models) + num_factors_list = [ jr.randint(key, (1,), 1, 7)[0].item() for key in rng_keys ] # list of total numbers of hidden state factors per model + num_states_list = [ jr.randint(key, (nf,), 2, 5).tolist() for nf, key in zip(num_factors_list, rng_keys) ] + num_controls_list = [ jr.randint(key, (nf,), 1, 3).tolist() for nf, key in zip(num_factors_list, rng_keys) ] + + rng_keys = jr.split(rng_keys[-1], num_models) + num_modalities_list = [ jr.randint(key, (1,), 1, 10)[0].item() for key in rng_keys ] + num_obs_list = [ jr.randint(key, (nm,), 1, 5).tolist() for nm, key in zip(num_modalities_list, rng_keys) ] + + rng_keys = jr.split(rng_keys[-1], num_models) + A_deps_list, B_deps_list = [], [] + for nf, nm, model_key in zip(num_factors_list, num_modalities_list, rng_keys): + modality_keys_model_i = jr.split(model_key, nm) + num_f_per_modality = [jr.randint(key, shape=(), minval=1, maxval=nf+1).item() for key in modality_keys_model_i] # this is the number of factors that each modality depends on + A_deps_model_i = [sorted(jr.choice(key, a=nf, shape=(num_f_m,), replace=False).tolist()) for key, num_f_m in zip(modality_keys_model_i, num_f_per_modality)] + A_deps_list.append(A_deps_model_i) + + factor_keys_model_i = jr.split(modality_keys_model_i[-1], nf) + num_f_per_factor = [jr.randint(key, shape=(), minval=1, maxval=nf+1).item() for key in factor_keys_model_i] # this is the number of factors that each factor depends on + B_deps_model_i = [sorted(jr.choice(key, a=nf, shape=(num_f_f,), replace=False).tolist()) for key, num_f_f in zip(factor_keys_model_i, num_f_per_factor)] + B_deps_list.append(B_deps_model_i) + + return {'nf_list': num_factors_list, + 'ns_list': num_states_list, + 'nc_list': num_controls_list, + 'nm_list': num_modalities_list, + 'no_list': num_obs_list, + 'A_deps_list': A_deps_list, + 'B_deps_list': B_deps_list + } + +def make_A_full(A_reduced: List[np.ndarray], A_dependencies: List[List[int]], num_obs: List[int], num_states: List[int]) -> np.ndarray: + """ + Given a reduced A matrix, `A_reduced`, and a list of dependencies between hidden state factors and observation modalities, `A_dependencies`, + return a full A matrix, `A_full`, where `A_full[m]` is the full A matrix for modality `m`. This means all redundant conditional independencies + between observation modalities `m` and all hidden state factors (i.e. `range(len(num_states))`) are represented as lagging dimensions in `A_full`. + """ + A_full = utils.initialize_empty_A(num_obs, num_states) # initialize the full likelihood tensor (ALL modalities might depend on ALL factors) + all_factors = range(len(num_states)) # indices of all hidden state factors + for m, A_m in enumerate(A_full): + + # Step 1. Extract the list of the factors that modality `m` does NOT depend on + non_dependent_factors = list(set(all_factors) - set(A_dependencies[m])) + + # Step 2. broadcast or tile the reduced A matrix (`A_reduced`) along the dimensions of corresponding to `non_dependent_factors`, to give it the full shape of `(num_obs[m], *num_states)` + expanded_dims = [num_obs[m]] + [1 if f in non_dependent_factors else ns for (f, ns) in enumerate(num_states)] + tile_dims = [1] + [ns if f in non_dependent_factors else 1 for (f, ns) in enumerate(num_states)] + A_full[m] = np.tile(A_reduced[m].reshape(expanded_dims), tile_dims) + + return A_full + +class TestMessagePassing(unittest.TestCase): + + def test_fixed_point_iteration(self): + cfg = {'source_seed': 0, + 'num_models': 4 + } + gm_params = make_model_configs(**cfg) + num_states_list, num_obs_list = gm_params['ns_list'], gm_params['no_list'] + + for (num_states, num_obs) in zip(num_states_list, num_obs_list): + + # numpy version + prior = utils.random_single_categorical(num_states) + A = utils.random_A_matrix(num_obs, num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + qs_numpy = fpi_numpy(A, obs, num_obs, num_states, prior=prior, num_iter=16, dF=1.0, dF_tol=-1.0) # set dF_tol to negative number so numpy version of FPI never stops early due to convergence + + # jax version + prior = [jnp.array(prior_f) for prior_f in prior] + A = [jnp.array(a_m) for a_m in A] + obs = [jnp.array(o_m) for o_m in obs] + + qs_jax = fpi_jax(A, obs, prior, num_iter=16) + + for f, _ in enumerate(qs_jax): + self.assertTrue(np.allclose(qs_numpy[f], qs_jax[f])) + + + def test_fixed_point_iteration_factorized_fullyconnected(self): + """ + Test the factorized version of `run_vanilla_fpi`, named `run_factorized_fpi` + with multiple hidden state factors and multiple observation modalities. + """ + cfg = {'source_seed': 1, + 'num_models': 4 + } + gm_params = make_model_configs(**cfg) + num_states_list, num_obs_list = gm_params['ns_list'], gm_params['no_list'] + + for (num_states, num_obs) in zip(num_states_list, num_obs_list): + + # initialize arrays in numpy version + prior = utils.random_single_categorical(num_states) + A = utils.random_A_matrix(num_obs, num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + # jax version + prior = [jnp.array(prior_f) for prior_f in prior] + A = [jnp.array(a_m) for a_m in A] + obs = [jnp.array(o_m) for o_m in obs] + + factor_lists = len(num_obs) * [list(range(len(num_states)))] + + qs_jax = fpi_jax(A, obs, prior, num_iter=16) + qs_jax_factorized = fpi_jax_factorized(A, obs, prior, factor_lists, num_iter=16) + + for f, _ in enumerate(qs_jax): + self.assertTrue(np.allclose(qs_jax[f], qs_jax_factorized[f], atol=1e-6)) + + def test_fixed_point_iteration_factorized_sparsegraph(self): + """ + Test the factorized version of `run_vanilla_fpi`, named `run_factorized_fpi` + with multiple hidden state factors and multiple observation modalities, and with sparse conditional dependence relationships between hidden states + and observation modalities + """ + cfg = {'source_seed': 3, + 'num_models': 4 + } + gm_params = make_model_configs(**cfg) + + num_states_list, num_obs_list, A_dependencies_list = gm_params['ns_list'], gm_params['no_list'], gm_params['A_deps_list'] + + for (num_states, num_obs, a_deps_i) in zip(num_states_list, num_obs_list, A_dependencies_list): + + prior = utils.random_single_categorical(num_states) + + obs = utils.obj_array(len(num_obs)) + for m, obs_dim in enumerate(num_obs): + obs[m] = utils.onehot(np.random.randint(obs_dim), obs_dim) + + A_reduced = utils.random_A_matrix(num_obs, num_states, A_factor_list=a_deps_i) + + # jax version + prior_jax = [jnp.array(prior_f) for prior_f in prior] + A_reduced_jax = [jnp.array(a_m) for a_m in A_reduced] + obs_jax = [jnp.array(o_m) for o_m in obs] + + qs_out = fpi_jax_factorized(A_reduced_jax, obs_jax, prior_jax, a_deps_i, num_iter=16) + + # create the full A matrix, where all hidden state factors are represented in the lagging dimensions of each sub-A array + A_full = make_A_full(A_reduced, a_deps_i, num_obs, num_states) + + # jax version + A_full_jax = [jnp.array(a_m) for a_m in A_full] + + qs_validation = fpi_jax(A_full_jax, obs_jax, prior_jax, num_iter=16) + + for qs_f_val, qs_f_out in zip(qs_validation, qs_out): + self.assertTrue(np.allclose(qs_f_val, qs_f_out)) + + def test_marginal_message_passing(self): + + cfg = {'source_seed': 5, + 'num_models': 4 + } + gm_params = make_model_configs(**cfg) + + num_states_list, num_obs_list, num_controls_list, A_dependencies_list, B_dependencies_list = gm_params['ns_list'], gm_params['no_list'], gm_params['nc_list'], \ + gm_params['A_deps_list'], gm_params['B_deps_list'] + + batch_size = 10 + n_timesteps = 4 + + for num_states, num_obs, num_controls, A_deps, B_deps in zip(num_states_list, num_obs_list, num_controls_list, A_dependencies_list, B_dependencies_list): + + # create a version of a_deps_i where each sub-list is sorted + prior = [jr.dirichlet(key, alpha=jnp.ones((ns,)), shape=(batch_size,)) for ns, key in zip(num_states, jr.split(jr.PRNGKey(0), len(num_states)))] + + obs = [jr.categorical(key, logits=jnp.zeros(no), shape=(n_timesteps,batch_size)) for no, key in zip(num_obs, jr.split(jr.PRNGKey(1), len(num_obs)))] + obs = jtu.tree_map(lambda x, no: nn.one_hot(x, num_classes=no), obs, num_obs) + + A_sub_shapes = [ [ns for f, ns in enumerate(num_states) if f in a_deps_i] for a_deps_i in A_deps ] + A_sampling_keys = jr.split(jr.PRNGKey(2), len(num_obs)) + A = [jr.dirichlet(key, alpha=jnp.ones(no) / no, shape=factor_shapes) for no, factor_shapes, key in zip(num_obs, A_sub_shapes, A_sampling_keys)] + A = jtu.tree_map(lambda a: jnp.moveaxis(a, -1, 0), A) # move observations into leading dimensions + A = jtu.tree_map(lambda a: jnp.broadcast_to(a, (batch_size,) + a.shape), A) + + B_sub_shapes = [ [ns for f, ns in enumerate(num_states) if f in b_deps_i] + [nc] for nc, b_deps_i in zip(num_controls, B_deps) ] + B_sampling_keys = jr.split(jr.PRNGKey(3), len(num_states)) + B = [jr.dirichlet(key, alpha=jnp.ones(ns) / ns, shape=factor_shapes) for ns, factor_shapes, key in zip(num_states, B_sub_shapes, B_sampling_keys)] + B = jtu.tree_map(lambda b: jnp.moveaxis(b, -2, -1), B) # move u_t to the rightmost axis of the array + B = jtu.tree_map(lambda b: jnp.moveaxis(b, -2, 0), B) # s_t+1 to the leading dimension of the array + B = jtu.tree_map(lambda b: jnp.broadcast_to(b, (batch_size,) + b.shape), B) + + # # create a policy-dependent sequence of B matrices, but now we store the sequence dimension (action indices) in the first dimension (0th dimension is still batch dimension) + policy = [] + key = jr.PRNGKey(11) + for nc in num_controls: + key, k = jr.split(key) + policy.append( jr.choice(k, jnp.arange(nc), shape=(n_timesteps - 1, 1)) ) + + policy = jnp.concatenate(policy, -1) + nf = len(B) + actions_tree = [policy[:, i] for i in range(nf)] + B_seq = jtu.tree_map(lambda b, a_idx: jnp.moveaxis(b[..., a_idx], -1, 0), B, actions_tree) + + mmp = vmap( + partial(mmp_jax, num_iter=16, tau=1.0), + in_axes=(0, 1, 1, 0, None, None) + ) + qs_out = mmp(A, B_seq, obs, prior, A_deps, B_deps) + + self.assertTrue(qs_out[0].shape[0] == obs[0].shape[1]) + + # def test_variational_message_passing(self): + + # num_states = [3] + # num_obs = [3] + + # A = [ jnp.broadcast_to(jnp.array([[0.5, 0.5, 0.], + # [0.0, 0.0, 1.], + # [0.5, 0.5, 0.]] + # ), (2, 3, 3) )] + + # # create two B matrices, one for each action + # B_1 = jnp.broadcast_to(jnp.array([[0.0, 0.75, 0.0], + # [0.0, 0.25, 1.0], + # [1.0, 0.0, 0.0]] + # ), (2, 3, 3)) + + # B_2 = jnp.broadcast_to(jnp.array([[0.0, 0.25, 0.0], + # [0.0, 0.75, 0.0], + # [1.0, 0.0, 1.0]] + # ), (2, 3, 3)) + + # B = [jnp.stack([B_1, B_2], axis=-1)] + + # # create a policy-dependent sequence of B matrices + + # policy = jnp.array([0, 1, 0]) + # B_policy = jtu.tree_map(lambda b: b[..., policy].transpose(0, 3, 1, 2), B) + + # # for the single modality, a sequence over time of observations (one hot vectors) + # obs = [ + # jnp.broadcast_to(jnp.array([[1., 0., 0.], + # [0., 1., 0.], + # [0., 0., 1.], + # [1., 0., 0.]])[:, None], (4, 2, 3) ) + # ] + + # prior = [jnp.ones((2, 3)) / 3.] + + # A_dependencies = [list(range(len(num_states))) for _ in range(len(num_obs))] + # qs_out = vmp_jax(A, B_policy, obs, prior, A_dependencies, num_iter=16, tau=1.) + + # self.assertTrue(qs_out[0].shape[0] == obs[0].shape[0]) + + # def test_vmap_variational_message_passing_across_policies(self): + + # num_states = [3, 2] + # num_obs = [3] + + # A_tensor = jnp.stack([jnp.array([[0.5, 0.5, 0.], + # [0.0, 0.0, 1.], + # [0.5, 0.5, 0.]] + # ), jnp.array([[1./3, 1./3, 1./3], + # [1./3, 1./3, 1./3], + # [1./3, 1./3, 1./3]] + # )], axis=-1) + + # A = [ jnp.broadcast_to(A_tensor, (2, 3, 3, 2)) ] + + # # create two B matrices, one for each action + # B_1 = jnp.broadcast_to(jnp.array([[0.0, 0.75, 0.0], + # [0.0, 0.25, 1.0], + # [1.0, 0.0, 0.0]] + # ), (2, 3, 3)) + + # B_2 = jnp.broadcast_to(jnp.array([[0.0, 0.25, 0.0], + # [0.0, 0.75, 0.0], + # [1.0, 0.0, 1.0]] + # ), (2, 3, 3)) + + # B_uncontrollable = jnp.expand_dims( + # jnp.broadcast_to( + # jnp.array([[1.0, 0.0], [0.0, 1.0]]), (2, 2, 2) + # ), + # -1 + # ) + + # B = [jnp.stack([B_1, B_2], axis=-1), B_uncontrollable] + + # # create a policy-dependent sequence of B matrices + + # policy_1 = jnp.array([ [0, 0], + # [1, 0], + # [1, 0] ] + # ) + + # policy_2 = jnp.array([ [1, 0], + # [1, 0], + # [1, 0] ] + # ) + + # policy_3 = jnp.array([ [1, 0], + # [0, 0], + # [1, 0] ] + # ) + + # all_policies = [policy_1, policy_2, policy_3] + # all_policies = list(jnp.stack(all_policies).transpose(2, 0, 1)) # `n_factors` lists, each with matrix of shape `(n_policies, n_time_steps)` + + # # for the single modality, a sequence over time of observations (one hot vectors) + # obs = [jnp.broadcast_to(jnp.array([[1., 0., 0.], + # [0., 1., 0.], + # [0., 0., 1.], + # [1., 0., 0.]])[:, None], (4, 2, 3) )] + + # prior = [jnp.ones((2, 3)) / 3., jnp.ones((2, 2)) / 2.] + + # A_dependencies = [list(range(len(num_states))) for _ in range(len(num_obs))] + + # ### First do VMP + # def test(action_sequence): + # B_policy = jtu.tree_map(lambda b, a_idx: b[..., a_idx].transpose(0, 3, 1, 2), B, action_sequence) + # return vmp_jax(A, B_policy, obs, prior, A_dependencies, num_iter=16, tau=1.) + # qs_out = vmap(test)(all_policies) + # self.assertTrue(qs_out[0].shape[1] == obs[0].shape[0]) + + # ### Then do MMP + # def test(action_sequence): + # B_policy = jtu.tree_map(lambda b, a_idx: b[..., a_idx].transpose(0, 3, 1, 2), B, action_sequence) + # return mmp_jax(A, B_policy, obs, prior, A_dependencies, num_iter=16, tau=1.) + # qs_out = vmap(test)(all_policies) + # self.assertTrue(qs_out[0].shape[1] == obs[0].shape[0]) + + # def test_variational_message_passing_multiple_modalities_factors(self): + + # num_states_list = [ + # [2, 2, 5], + # [2, 2, 2], + # [4, 4] + # ] + + # num_controls_list = [ + # [2, 1, 3], + # [2, 1, 2], + # [1, 3] + # ] + + # num_obs_list = [ + # [5, 10], + # [4, 3, 2], + # [5, 2, 6, 3] + # ] + + # batch_dim, T = 2, 4 # batch dimension (e.g. number of agents, parallel realizations, etc.) and time steps + # n_policies = 3 + + # for (num_states, num_controls, num_obs) in zip(num_states_list, num_controls_list, num_obs_list): + + # # initialize arrays in numpy + # A_numpy = utils.random_A_matrix(num_obs, num_states) + # B_numpy = utils.random_B_matrix(num_states, num_controls) + + # A = [] + # for mod_i in range(len(num_obs)): + # broadcast_shape = (batch_dim,) + tuple(A_numpy[mod_i].shape) + # A.append(jnp.broadcast_to(A_numpy[mod_i], broadcast_shape)) + + # B = [] + # for fac_i in range(len(num_states)): + # broadcast_shape = (batch_dim,) + tuple(B_numpy[fac_i].shape) + # B.append(jnp.broadcast_to(B_numpy[fac_i], broadcast_shape)) + + # prior_numpy = utils.random_single_categorical(num_states) + # prior = [] + # for fac_i in range(len(num_states)): + # broadcast_shape = (batch_dim,) + tuple(prior_numpy[fac_i].shape) + # prior.append(jnp.broadcast_to(prior_numpy[fac_i], broadcast_shape)) + + # # initialization observation sequences in jax + # obs_seq = [] + # for n_obs in num_obs: + # obs_ints = np.random.randint(0, high=n_obs, size=(T,1)) + # obs_array_mod_i = jnp.broadcast_to(nn.one_hot(obs_ints, num_classes=n_obs), (T, batch_dim, n_obs)) + # obs_seq.append(obs_array_mod_i) + + # # create random policies + # policies = [] + # for n_controls in num_controls: + # policies.append(jnp.array(np.random.randint(0, high=n_controls, size=(n_policies, T-1)))) + + # A_dependencies = [list(range(len(num_states))) for _ in range(len(num_obs))] + # ### First do VMP + # def test(action_sequence): + # B_policy = jtu.tree_map(lambda b, a_idx: b[..., a_idx].transpose(0, 3, 1, 2), B, action_sequence) + # return vmp_jax(A, B_policy, obs_seq, prior, A_dependencies, num_iter=16, tau=1.) + # qs_out = vmap(test)(policies) + # self.assertTrue(qs_out[0].shape[1] == obs_seq[0].shape[0]) + + # ### Then do MMP + # def test(action_sequence): + # B_policy = jtu.tree_map(lambda b, a_idx: b[..., a_idx].transpose(0, 3, 1, 2), B, action_sequence) + # return mmp_jax(A, B_policy, obs_seq, prior, A_dependencies, num_iter=16, tau=1.) + # qs_out = vmap(test)(policies) + # self.assertTrue(qs_out[0].shape[1] == obs_seq[0].shape[0]) + + # def test_A_dependencies_variational_message_passing(self): + # """ Test variational message passing with A dependencies """ + + # num_states_list = [ + # [2, 2, 5], + # [2, 2, 2], + # [4, 4] + # ] + + # num_controls_list = [ + # [2, 1, 3], + # [2, 1, 2], + # [1, 3] + # ] + + # num_obs_list = [ + # [5, 10], + # [4, 3, 2], + # [5, 2, 6, 3] + # ] + + # A_dependencies_list = [ + # [[0, 1], [1,2]], + # [[0], [1], [2]], + # [[0,1], [1], [0], [1]] + # ] + + # batch_dim, T = 13, 4 # batch dimension (e.g. number of agents, parallel realizations, etc.) and time steps + # n_policies = 3 + + # for (num_states, A_dependencies, num_controls, num_obs) in zip(num_states_list, A_dependencies_list, num_controls_list, num_obs_list): + + # A_reduced_numpy = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_dependencies) + # A_reduced = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(A_reduced_numpy)) + + # A_full_numpy = [] + # for m, no in enumerate(num_obs): + # other_factors = list(set(range(len(num_states))) - set(A_dependencies[m])) # list of the factors that modality `m` does not depend on + + # # broadcast or tile the reduced A matrix (`A_reduced`) along the dimensions of corresponding to `other_factors` + # expanded_dims = [no] + [1 if f in other_factors else ns for (f, ns) in enumerate(num_states)] + # tile_dims = [1] + [ns if f in other_factors else 1 for (f, ns) in enumerate(num_states)] + # A_full_numpy.append(np.tile(A_reduced_numpy[m].reshape(expanded_dims), tile_dims)) + + # A_full = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(A_full_numpy)) + + # B_numpy = utils.random_B_matrix(num_states, num_controls) + # B = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(B_numpy)) + + # prior_numpy = utils.random_single_categorical(num_states) + # prior = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(prior_numpy)) + + # # initialization observation sequences in jax + # obs_seq = [] + # for n_obs in num_obs: + # obs_ints = np.random.randint(0, high=n_obs, size=(T,1)) + # obs_array_mod_i = jnp.broadcast_to(nn.one_hot(obs_ints, num_classes=n_obs), (T, batch_dim, n_obs)) + # obs_seq.append(obs_array_mod_i) + + # # create random policies + # policies = [] + # for n_controls in num_controls: + # policies.append(jnp.array(np.random.randint(0, high=n_controls, size=(n_policies, T-1)))) + + # ### First do VMP + # def test_full(action_sequence): + # B_policy = jtu.tree_map(lambda b, a_idx: b[..., a_idx].transpose(0, 3, 1, 2), B, action_sequence) + # dependencies_fully_connected = [list(range(len(num_states))) for _ in range(len(num_obs))] + # return vmp_jax(A_full, B_policy, obs_seq, prior, dependencies_fully_connected, num_iter=16, tau=1.) + + # def test_sparse(action_sequence): + # B_policy = jtu.tree_map(lambda b, a_idx: b[..., a_idx].transpose(0, 3, 1, 2), B, action_sequence) + # return vmp_jax(A_reduced, B_policy, obs_seq, prior, A_dependencies, num_iter=16, tau=1) + + # qs_full = vmap(test_full)(policies) + # qs_reduced = vmap(test_sparse)(policies) + + # for f in range(len(qs_full)): + # self.assertTrue(jnp.allclose(qs_full[f], qs_reduced[f])) + + # def test_B_dependencies_variational_message_passing(self): + # """ Test variational message passing with B dependencies """ + + # num_states_list = [ + # [2, 2, 5], + # [2, 2, 2], + # [4, 4] + # ] + + # num_controls_list = [ + # [2, 1, 3], + # [2, 1, 2], + # [1, 3] + # ] + + # num_obs_list = [ + # [5, 10], + # [4, 3, 2], + # [5, 2, 6, 3] + # ] + + # A_dependencies_list = [ + # [[0, 1], [1,2]], + # [[0], [1], [2]], + # [[0,1], [1], [0], [1]] + # ] + + # batch_dim, T = 13, 4 # batch dimension (e.g. number of agents, parallel realizations, etc.) and time steps + # n_policies = 3 + + # for (num_states, A_dependencies, num_controls, num_obs) in zip(num_states_list, A_dependencies_list, num_controls_list, num_obs_list): + + # A_reduced_numpy = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_dependencies) + # A_reduced = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(A_reduced_numpy)) + + # A_full_numpy = [] + # for m, no in enumerate(num_obs): + # other_factors = list(set(range(len(num_states))) - set(A_dependencies[m])) # list of the factors that modality `m` does not depend on + + # # broadcast or tile the reduced A matrix (`A_reduced`) along the dimensions of corresponding to `other_factors` + # expanded_dims = [no] + [1 if f in other_factors else ns for (f, ns) in enumerate(num_states)] + # tile_dims = [1] + [ns if f in other_factors else 1 for (f, ns) in enumerate(num_states)] + # A_full_numpy.append(np.tile(A_reduced_numpy[m].reshape(expanded_dims), tile_dims)) + + # A_full = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(A_full_numpy)) + + # B_numpy = utils.random_B_matrix(num_states, num_controls) + # B = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(B_numpy)) + + # prior_numpy = utils.random_single_categorical(num_states) + # prior = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(prior_numpy)) + + # # initialization observation sequences in jax + # obs_seq = [] + # for n_obs in num_obs: + # obs_ints = np.random.randint(0, high=n_obs, size=(T,1)) + # obs_array_mod_i = jnp.broadcast_to(nn.one_hot(obs_ints, num_classes=n_obs), (T, batch_dim, n_obs)) + # obs_seq.append(obs_array_mod_i) + + # # create random policies + # policies = [] + # for n_controls in num_controls: + # policies.append(jnp.array(np.random.randint(0, high=n_controls, size=(n_policies, T-1)))) + + # ### First do VMP + # def test_full(action_sequence): + # B_policy = jtu.tree_map(lambda b, a_idx: b[..., a_idx].transpose(0, 3, 1, 2), B, action_sequence) + # dependencies_fully_connected = [list(range(len(num_states))) for _ in range(len(num_obs))] + # return vmp_jax(A_full, B_policy, obs_seq, prior, dependencies_fully_connected, num_iter=16, tau=1.) + + # def test_sparse(action_sequence): + # B_policy = jtu.tree_map(lambda b, a_idx: b[..., a_idx].transpose(0, 3, 1, 2), B, action_sequence) + # return vmp_jax(A_reduced, B_policy, obs_seq, prior, A_dependencies, num_iter=16, tau=1) + + # qs_full = vmap(test_full)(policies) + # qs_reduced = vmap(test_sparse)(policies) + + # for f in range(len(qs_full)): + # self.assertTrue(jnp.allclose(qs_full[f], qs_reduced[f])) + + # def test_online_variational_filtering(self): + # """ Unit test for @dimarkov's implementation of online variational filtering, also where it's conditional on actions (vmapped across policies) """ + + # num_states_list = [ + # [2, 2, 5], + # [2, 2, 2], + # [4, 4] + # ] + + # num_controls_list = [ + # [2, 1, 3], + # [2, 1, 2], + # [1, 3] + # ] + + # num_obs_list = [ + # [5, 10], + # [4, 3, 2], + # [5, 2, 6, 3] + # ] + + # A_dependencies_list = [ + # [[0, 1], [1, 2]], + # [[0], [1], [2]], + # [[0,1], [1], [0], [1]], + # ] + + # batch_dim, T = 13, 4 # batch dimension (e.g. number of agents, parallel realizations, etc.) and time steps + # n_policies = 3 + + # for (num_states, A_dependencies, num_controls, num_obs) in zip(num_states_list, A_dependencies_list, num_controls_list, num_obs_list): + + # A_reduced_numpy = utils.random_A_matrix(num_obs, num_states, A_factor_list=A_dependencies) + # A_reduced = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(A_reduced_numpy)) + + # A_full_numpy = [] + # for m, no in enumerate(num_obs): + # other_factors = list(set(range(len(num_states))) - set(A_dependencies[m])) # list of the factors that modality `m` does not depend on + + # # broadcast or tile the reduced A matrix (`A_reduced`) along the dimensions of corresponding to `other_factors` + # expanded_dims = [no] + [1 if f in other_factors else ns for (f, ns) in enumerate(num_states)] + # tile_dims = [1] + [ns if f in other_factors else 1 for (f, ns) in enumerate(num_states)] + # A_full_numpy.append(np.tile(A_reduced_numpy[m].reshape(expanded_dims), tile_dims)) + + # A_full = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(A_full_numpy)) + + # B_numpy = utils.random_B_matrix(num_states, num_controls) + # B = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(B_numpy)) + + # prior_numpy = utils.random_single_categorical(num_states) + # prior = jtu.tree_map(lambda x: jnp.broadcast_to(x, (batch_dim,) + x.shape), list(prior_numpy)) + + # # initialization observation sequences in jax + # obs_seq = [] + # for n_obs in num_obs: + # obs_ints = np.random.randint(0, high=n_obs, size=(T,1)) + # obs_array_mod_i = jnp.broadcast_to(nn.one_hot(obs_ints, num_classes=n_obs), (T, batch_dim, n_obs)) + # obs_seq.append(obs_array_mod_i) + + # # create random policies + # policies = [] + # for n_controls in num_controls: + # policies.append(jnp.array(np.random.randint(0, high=n_controls, size=(n_policies, T-1)))) + + # def test_sparse(action_sequence): + # B_policy = jtu.tree_map(lambda b, a_idx: b[..., a_idx].transpose(3, 0, 1, 2), B, action_sequence) + # qs, ps, qss = ovf_jax(obs_seq, A_reduced, B_policy, prior, A_dependencies) + # return qs, ps, qss + + # qs_pi_sparse, ps_pi_sparse, qss_pi_sparse = vmap(test_sparse)(policies) + + # for f, (qs, ps, qss) in enumerate(zip(qs_pi_sparse, ps_pi_sparse, qss_pi_sparse)): + # self.assertTrue(qs.shape == (n_policies, batch_dim, num_states[f])) + # self.assertTrue(ps.shape == (n_policies, batch_dim, num_states[f])) + # self.assertTrue(qss.shape == (n_policies, T, batch_dim, num_states[f], num_states[f])) + + # #Note: qs/ps are of dimension [n_policies x num_agents x dim_state_f] * num_factors + # #Note: qss is of dimension [n_policies x time_steps x num_agents x dim_state_f x dim_state_f] * num_factors + + # def test_full(action_sequence): + # B_policy = jtu.tree_map(lambda b, a_idx: b[..., a_idx].transpose(3, 0, 1, 2), B, action_sequence) + # dependencies_fully_connected = [list(range(len(num_states))) for _ in range(len(num_obs))] + # qs, ps, qss = ovf_jax(obs_seq, A_full, B_policy, prior, dependencies_fully_connected) + # return qs, ps, qss + + # qs_pi_full, ps_pi_full, qss_pi_full = vmap(test_full)(policies) + + # # test that the sparse and fully connected versions of OVF give the same results + # for (qs_sparse, ps_sparse, qss_sparse, qs_full, ps_full, qss_full) in zip(qs_pi_sparse, ps_pi_sparse, qss_pi_sparse, qs_pi_full, ps_pi_full, qss_pi_full): + # self.assertTrue(np.allclose(qs_sparse, qs_full)) + # self.assertTrue(np.allclose(ps_sparse, ps_full)) + # self.assertTrue(np.allclose(qss_sparse, qss_full)) + +if __name__ == "__main__": + unittest.main() + + + + + + + diff --git a/test/test_wrappers.py b/test/test_wrappers.py index 254d902b..cf405e56 100644 --- a/test/test_wrappers.py +++ b/test/test_wrappers.py @@ -1,16 +1,7 @@ import os import unittest from pathlib import Path - -import pandas as pd -from pandas.testing import assert_frame_equal - -from pymdp.utils import Dimensions, get_model_dimensions_from_labels, create_A_matrix_stub, read_A_matrix, create_B_matrix_stubs, read_B_matrices - -tmp_path = Path('tmp_dir') - -if not os.path.isdir(tmp_path): - os.mkdir(tmp_path) +from pymdp.utils import Dimensions, get_model_dimensions_from_labels class TestWrappers(unittest.TestCase): @@ -62,88 +53,6 @@ def test_get_model_dimensions_from_labels(self): self.assertEqual(want.num_state_factors, got.num_state_factors) self.assertEqual(want.num_controls, got.num_controls) self.assertEqual(want.num_control_factors, got.num_control_factors) - - def test_A_matrix_stub(self): - """ - This tests the construction of a 2-modality, 2-hidden state factor pandas MultiIndex dataframe using - the `model_labels` dictionary, which contains the modality- and factor-specific levels, labeled with string - identifiers. - - Note: actions are ignored when creating an A matrix stub - """ - - model_labels = { - "observations": { - "grass_observation": [ - "wet", - "dry" - ], - "weather_observation": [ - "clear", - "rainy", - "cloudy" - ] - }, - "states": { - "weather_state": ["raining", "clear"], - "sprinkler_state": ["on", "off"], - }, - "actions": { - "actions": ["something", "nothing"], - } - } - - num_hidden_state_factors = len(model_labels["states"]) - - expected_A_matrix_stub = create_A_matrix_stub(model_labels) - - temporary_file_path = (tmp_path / "A_matrix_stub.xlsx").resolve() - expected_A_matrix_stub.to_excel(temporary_file_path) - actual_A_matrix_stub = read_A_matrix(temporary_file_path, num_hidden_state_factors) - - os.remove(temporary_file_path) - - frames_are_equal = assert_frame_equal(expected_A_matrix_stub, actual_A_matrix_stub) is None - self.assertTrue(frames_are_equal) - - def test_B_matrix_stub(self): - """ - This tests the construction of a 1-modality, 2-hidden state factor, 2 control factor pandas MultiIndex dataframe using - the `model_labels` dictionary, which contains the hidden-state-factor- and control-factor-specific levels, labeled with string - identifiers - """ - - model_labels = { - "observations": { - "reward outcome": [ - "win", - "loss" - ] - }, - "states": { - "location": ["start", "arm1", "arm2"], - "bandit_state": ["high_rew", "low_rew"] - }, - "actions": { - "arm_play": ["play_arm1", "play_arm2"], - "bandit_state_control": ["null"] - } - } - - B_stubs = create_B_matrix_stubs(model_labels) - - xls_path = (tmp_path / "B_matrix_stubs.xlsx").resolve() - - with pd.ExcelWriter(xls_path) as writer: - for factor_name, B_stub_f in B_stubs.items(): - B_stub_f.to_excel(writer,'%s' % factor_name) - - read_in_B_stubs = read_B_matrices(xls_path) - - os.remove(xls_path) - - all_stub_compares = [assert_frame_equal(stub_og, stub_read_in) for stub_og, stub_read_in in zip(*[B_stubs.values(), read_in_B_stubs.values()])] - self.assertTrue(all(stub_compare is None for stub_compare in all_stub_compares)) if __name__ == "__main__": unittest.main()