Skip to content

Instantly share code, notes, and snippets.

@dominicrufa
Created November 20, 2020 20:19
Show Gist options
  • Save dominicrufa/2a0b21bdd940925f9e2d96bc349b257d to your computer and use it in GitHub Desktop.
Save dominicrufa/2a0b21bdd940925f9e2d96bc349b257d to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook attempts to yield a converged solvent-phase free energy calculation for all ligands of the jnk1 system"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import numpy as np\n",
"\n",
"%matplotlib inline\n",
"\n",
"import os\n",
"colour_cycle = plt.rcParams['axes.prop_cycle'].by_key()['color']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"let's extract the forward and backward works"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"raw_dict = np.load('solvent.out.npz', allow_pickle=True)['arr_0'].item()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"let's look at the ligand pairs we have..."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys([(0, 13), (10, 1), (10, 17), (11, 1), (11, 14), (12, 17), (13, 15), (13, 20), (14, 16), (14, 20), (15, 20), (16, 1), (17, 3), (17, 4), (18, 20), (18, 4), (1, 20), (1, 9), (20, 2), (20, 3), (20, 4), (20, 8), (20, 9), (2, 4), (5, 4), (6, 4), (6, 8)])"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"raw_dict.keys()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"each entry is a dict of 'old' and 'new'..."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['old', 'new'])"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"raw_dict[(0,13)].keys()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"each entry here is a dict of tuples corresponding to a simulation index and a forward/backward work tuple"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(-1081588.7570864186, 1081589.9689491775)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"raw_dict[(0,13)]['old'][0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"let's plot the histograms of forward and (negative) backward works (A->B and B->A, respectively) of lig0to13 (old)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7ffc158e25f8>"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEGCAYAAABrQF4qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeXxc1Xn4/88zu/bFWizJsi3vO0YYDAGzhCU4BBwKLQQCSdrUEKBp0ubbJHzbhC9p1pJSaAIu4QchNAQCgbDvwdjYYCzviyyvsixZtvZ9RtJozu+PO5JlaSRdWbv0vF8vM5p7zrlzNIweHZ177nPEGINSSqnxyzHSHVBKKTW0NNArpdQ4p4FeKaXGOQ30Sik1zmmgV0qpcc410h2IJCUlxUyfPn2ku6GUUmPGli1bKowxqZHKRmWgnz59Onl5eSPdDaWUGjNE5GhPZTp1o5RS45wGeqWUGuc00Cul1Dg3KufolVLjS2trK8XFxQQCgZHuypjn8/mYMmUKbrfbdhtbgV5ErgYeApzA48aYn/VQ71zgE+AmY8wL/WmrlBq/iouLiYuLY/r06YjISHdnzDLGUFlZSXFxMTk5Obbb9Tl1IyJO4NfASmAB8CURWdBDvZ8Db/e3rVJqfAsEAkyaNEmD/ACJCJMmTer3X0Z25ujPAw4aYw4bY1qAZ4FVEer9A/AnoOwM2iqlxjkN8oPjTN5HO4E+CzjW6Xlx+FjnF84CrgfW9Ldtp3OsFpE8EckrLy+30S2llFJ22Jmjj/Tro2sS+/8CvmuMaevy28ZOW+ugMY8BjwEsW7ZMk+QrNY49s6loUM93y/KpfdZ5+OGHefTRR8nNzeX3v//9oL5+f/z2t78lLy+PX/3qV8P2mnYCfTGQ3en5FOB4lzrLgGfDQT4F+LyIBG22VUoNtbwney9f9rXh6ccIeuSRR3jzzTdtXcQMBoO4XANflGiMwRiDwzGyK9ntvPpmYLaI5IiIB7gZeKVzBWNMjjFmujFmOvACcJcx5s922iql1FC78847OXz4MNdddx2//OUv+eIXv8iSJUs4//zz2blzJwD33Xcfq1ev5qqrruL222/n85//fEfZ2Wefzf333w/Av/3bv/H444/T0NDA5ZdfTm5uLosXL+bll18GoLCwkPnz53PXXXeRm5vLsWPHePLJJ5kzZw6XXHIJGzZsGPbvv89Ab4wJAvdgrabJB/5ojNkjIneKyJ1n0nbg3VZKKfvWrFlDZmYmH3zwAYWFhZx99tns3LmTn/zkJ9x+++0d9bZs2cLLL7/MM888w8UXX8z69eupq6vD5XJ1BOiPPvqIFStW4PP5eOmll9i6dSsffPAB//zP/0z71qwFBQXcfvvtbNu2DY/Hww9/+EM2bNjAu+++y969e4f9+7f1t4kx5g3gjS7Hul54bT/+1b7aKqXUSPnoo4/405/+BMBnP/tZKisrqa2tBeC6664jKioKgBUrVvDwww+Tk5PDNddcw7vvvktTUxOFhYXMnTuX1tZW7r33XtatW4fD4aCkpISTJ08CMG3aNM4//3wANm3axKWXXkpqqpVY8qabbmL//v3D+j3rnbFKqQmlfdTdWfsikpiYmI5j5557Lnl5ecyYMYMrr7ySiooKfvOb33DOOecA8Pvf/57y8nK2bNmC2+1m+vTpHevbO5+n8/lHiua6UUpNKBdffHHHqpu1a9eSkpJCfHx8t3oej4fs7Gz++Mc/cv7557NixQoeeOABVqxYAUBtbS1paWm43W4++OADjh6NnCV4+fLlrF27lsrKSlpbW3n++eeH7pvrgY7olVLDzs5yyKFy33338bWvfY0lS5YQHR3NU0891WPdFStW8P777xMdHc2KFSsoLi7uCPS33nor1157LcuWLWPp0qXMmzcv4jkyMjK47777uOCCC8jIyCA3N5e2trYh+d56IpH+jBlpy5YtM7rxiFKDaISXV+bn5zN//vwhfY2JJNL7KSJbjDHLItXXqRullBrndOpGKTUgfd3lOpLTNMqiI3qllBrnNNArpdQ4p4FeKaXGOQ30Sik1zunFWKXU8OtruWd/2VgeWlhYyBe+8AV27959xi+zdu1aHnjgAV577bUzPkd/3HfffcTGxvKd73xnQOfREb1SSo0CQ3kTlQZ6pdSEEQwG+cpXvsKSJUu48cYbaWpq4v777+fcc89l0aJFrF69uiMXzsGDB7niiis466yzyM3N5dChQ6eda/PmzZx99tkcPnyYxYsXU1NTgzGGSZMm8bvf/Q6A2267jffee4/CwkJWrFhBbm4uubm5bNy4EbD+Qrjsssu45ZZbWLx4MQA//vGPmTt3LldccQUFBQWD8n1roFdKTRgFBQWsXr2anTt3Eh8fzyOPPMI999zD5s2b2b17N36/v2Na5tZbb+Xuu+9mx44dbNy4kYyMjI7zbNy4kTvvvJOXX36ZGTNmcOGFF7Jhwwb27NnDjBkzWL9+PQCffPIJ559/Pmlpabz77rts3bqV5557jm9+85sd5/r000/58Y9/zN69e9myZQvPPvss27Zt48UXX2Tz5s2D8n3rHL1SasLIzs7mwgsvBODLX/5yRxriX/ziFzQ1NVFVVcXChQu59NJLKSkp4frrrwfA5/N1nCM/P5/Vq1fzzjvvkJmZCVg5cdatW8e0adP4xje+wWOPPUZJSQnJycnExsZSW1vLPffcw/bt23E6naelKT7vvPM6dr1av349119/PdHR0YCVNnkw6IheKTVhdE0XLCLcddddvPDCC+zatYu///u/JxAIRExl3C4jIwOfz8e2bds6jrVvUrJ+/fqO3PMvvPBCRwK0Bx98kPT0dHbs2EFeXh4tLS0dbYcjpbEGeqXUhFFUVMTHH38MwB/+8AcuuugiAFJSUmhoaOCFF14AID4+nilTpvDnP/8ZgObmZpqamgBITEzk9ddf595772Xt2rWA9ZdCRUUFBw4cYMaMGVx00UXdUhpnZGTgcDh4+umne7zwevHFF/PSSy/h9/upr6/n1VdfHZTv29bUjYhcDTwEOIHHjTE/61K+CvgREAKCwLeMMR+FywqBeqANCPaUXU0pNYGM0Gbk8+fP56mnnuKOO+5g9uzZfOMb36C6uprFixczffp0zj333I66Tz/9NHfccQc/+MEPcLvdp+WRT09P59VXX2XlypU88cQTLF++nOXLl3cE8BUrVvD973+/4xfJXXfdxQ033MDzzz/PZZdd1m0U3y43N5ebbrqJpUuXMm3atI5fFAPVZ5piEXEC+4ErgWKsDb+/ZIzZ26lOLNBojDEisgRrb9h54bJCYJkxpsJupzRNsVKDbAjTFNtJaqZpigfXUKQpPg84aIw5bIxpAZ4FVnWuYIxpMKd+Y8QAoy/JvVJqyGwrqmbjoQqamoMj3RUVgZ2pmyzgWKfnxcDyrpVE5Hrgp0AacE2nIgO8IyIG+B9jzGORXkREVgOrAaZO1bSmSo06PfxV4N8T4IX92RiEt3afYHlOMtcsyRzmzqne2BnRR7oE3G3Ebox5KTxd80Ws+fp2FxpjcoGVwN0icnGkFzHGPGaMWWaMWda+W7pSanSrbhZ+fSSDDG8L37hkJgsy49lwqJKjlY3d6o7G3ezGojN5H+0E+mIgu9PzKcDxXjqxDpgpIinh58fDj2XAS1hTQUqpMc4YuHdrHLVBF/8w4zjZydH81dlTiHI7WXfg9EtyPp+PyspKDfYDZIyhsrLytHX9dtiZutkMzBaRHKAEuBm4pXMFEZkFHApfjM0FPECliMQADmNMffjrq4D7+9VDpdSolF/r4s0SHzdlljMjuplDgMfl4IKZk/jLvjLK6gOkxVkBacqUKRQXF1NeXj6ynR4HfD4fU6ZM6VebPgO9MSYoIvcAb2Mtr3zCGLNHRO4Ml68BbgBuF5FWwA/cFA766cBL4RsAXMAzxpi3+tVDpdSo9NoxL04xXJFac9rx82dMYt3+cj46UMFf5VoBye12d9z9qYafrXX0xpg3gDe6HFvT6eufAz+P0O4wcNYA+6iUGmWMgdeKfXwmrYV41+k3/8R6XZwzLYm8wmquXJA+Qj1UnemdsUqpfttV7aKo0cm1U5ojlp+Xk0ybMRScqB/mnqlINNArpfrt9WIvbjF8LityoJ8c7yPO5+JAWcMw90xFooFeKdUv7dM2F6W3kOCJvIpGRJidFsvBsgbaQrrSZqRpoFdK9cv2KhclTU6+kB15NN9udnoc/tY2dhbX9FpPDT0N9EqpfvmozINguDyjj0CfGosA6/bbTnOlhohuPKKU6lV70rKZRVUAvFsUQ3ZUMwUllb22i/a6yEqK4sP9ZfzjFbOHvJ+qZzqiV0rZFjRQ0BjF/Fi/rfqz02LZfqyG2qbWIe6Z6o0GeqWUbYVNPppDDubHNdmqPzstjpCBDYd0+mYk6dSNUgr8NbDjWTi6AUq2gicaEqZA1jI87uto8SQAkF9v7WU6P9ZeoM9OjibK7eTTI1V8fnFG3w3UkNBAr9RE56+GJz4H5fsgcSpMXQ6hINQUwbr/4DrXI+TnfJWAO5H8higyvM0kuiNvhdeV0yEsmZLAtqLqIf4mVG800Cs1kdWXwqb/AROC21+BGZecXn5yDydf/FfOOvArTiaezb6Gb3NeYv9ugsqdlsRv1h0m0NqGz+0cxM4ru3SOXqmJKtQGmx+3gvzX3uge5AHSF7I+9yF2z1xNes02/pZXbM/Ptzs7O5FgyLC7pHaQOq76SwO9UhNV6XZoqoTFfwOTF/dadefse9jhXcY/u1/gcrOpXy+TOy0JgK06fTNiNNArNREZA4c+gNg0SF/Qd30RfilfYaeZyeKKN3C0tdh+qZRYL1OTo9l6VO+QHSka6JWaiCoPQF0xzLgMxF4YOOCP4znvDXjaGplc9Um/Xi53aiJbi6p1h6kRooFeqYno0F/AGwdZy2xVD7S2UdrsIRibRVXcXDIrNuIK2p+rP3tqEmX1zRyvDZxpj9UAaKBXaqJpOGktpZx+MTjdtpqU1Fh3ws6IDnAs/bM4Qq1kVqy3/ZK5U615el1mOTJsBXoRuVpECkTkoIh8L0L5KhHZKSLbRSRPRC6y21YpNczK91uPWbm2m5RUhwN9TICAN5XyxLNIr8qzPaqflxGHz+3QefoR0megFxEn8GtgJbAA+JKIdL168z5wljFmKfC3wOP9aKuUGk5VByEqCaIn2W5SUuMn1XNq28ATk5bjMG2k1Oy01d7tdLAkK5Htx3REPxLsjOjPAw4aYw4bY1qAZ4FVnSsYYxrMqassMYCx21YpNYyMgcpDkDyzX81KavzMiD41v+73pdMQlUVazVbrnDYsykogv7ReNyIZAXYCfRZwrNPz4vCx04jI9SKyD3gda1Rvu224/erwtE9eeXm5nb4rpfqrsQxaGmCS/UDf1BKkqrGFmTGnX0gtS8olqrmCWH+xrfMsyorH39rG4XLdXnC42Qn0EuFYt1/JxpiXjDHzgC8CP+pP23D7x4wxy4wxy1JTU210SynVb5UHrcfkWbabdL4Qe9qp4hfS5vCQVr3V1nkWZ1mJ0XbpHbLDzk6gLwayOz2fAhzvqbIxZh0wU0RS+ttWKTXEKg+BNx5iUmw3ab8Qm9Ml0IecHioTFpFcuwdnW9/LJmekxhLldmqgHwF2Av1mYLaI5IiIB7gZeKVzBRGZJSIS/joX8ACVdtoqpYaJMVB1yJq2kUh/bEdWUuNnUoyHWFeoW1lZ0tk4TZDk2r19nsfpEBZkxrOnpK5f3VYD12f2SmNMUETuAd4GnMATxpg9InJnuHwNcANwu4i0An7gpvDF2Yhth+h7UUr1pqkSArX9vhB7vMbPlKToiGWNvkwC7iSS6/NtnWtRZjwvbCkmFDI4HPZ/2aiBsZWm2BjzBvBGl2NrOn39c+DndtsqpUZA+/z8JPvz87X+VqqbWjlvui9yBRGq4ucxuWoT7tY6Wt3xvZ5vUVYCT318lCOVjcxMjbXdDzUwmo9eqYmiuhDcMRCbbrvJvlJrmmVyQhT0kMesOn4+mZUfk1X2IYVZ13Yrb99cHOBEOAXC/3x4mKXZiQDcsnyq7f6oM6MpEJSaKBpOQHxGv+bn88OBPiOhhxE90BCVRYsrjuyT7/V5vtQ4Ly6HcLzG3ubianBooFdqIjAG6k9A7OR+NdtbWke0x0mcr5c//sPTNxnlG3D2kRLB6RAyEnwdSzbV8NBAr9RE0FwHwUC/pm0A8kvryUjwIX38FVAVPx9XqJnM8o/6PGdmYhTHa/yENGXxsNFAr9RE0HDSeoyzH+iDbSEKTtaTkRDVZ9366KkE3Em2pm+yEqNoDoaobrS/eYkaGA30Sk0E9Sesx36M6I9UNNISDPU6P99BHJSkXUxGxQbEtPVaNTPR+sWh0zfDRwO9UhNBw0lwR1l3xdq0t2PFjY1AD5xI+Qze1ro+b55Ki/fidIgG+mGkgV6piaD+hDWa79eKm3rcTiE1zmur/omUCzAIGRUbeq3ncjiYHO/TlTfDSNfRKzURNJyE9IU9l+c92e3Q3n0JzIp1MLf4T7ZeotmTRFX8fCZXfMzuWXf2WjczMYrdJbW6h+ww0RG9UuNdU5WVmrifSyvza13MTwz2q01p6oWk1OzA3Vrfa72sxCj8rW1UN7X26/zqzGigV2q8Ky+wHvtxIbYiIJQHnCxI6GegT/kMDtNGetWnvdbLTLTm/XWefnhooFdqvCvfZz32Y2llQa01qzu/n4G+MvEsWp3RZJRv7LXe5HgfDkHn6YeJBnqlxruK/eD0WPvE2pQfDvTz+jl1E3K4OTnpPOuCbC/z7y6ng3S9IDts9GKsUuNd+T6ITQOxP67bV+si1dfGJK/hoM02M4ueByDoiCLWX8KCQ4/R7Ek+rc6hqX/d8XVWYhR7S+swxvR5560aGB3RKzXele/vd+qDfbUu5vVz2qZdXcw0AOKajvVaLzMxiqaWNp2nHwYa6JUaz1r9UFcMMWm2mwRDsL/O1e/5+XZ+bypBp4+4xqJe67XfIbv3uO44NdQ00Cs1ntWEg230JNtNChuctISEuQm9pzLokQj1Udl9jugnx/sQTt2Bq4aOrUAvIleLSIGIHBSR70Uov1VEdob/bRSRszqVFYrILhHZLiJ5g9l5pVQfOgJ9cu/1Oum4EHuGI3qwkpxFtVTgCjb2WMfjcjAp1tOR814NnT4vxoqIE/g1cCVQDGwWkVeMMZ0TWhwBLjHGVIvISuAxYHmn8suMMRWD2G+llB3VhdZjP0b0+2pdOMUwK24AgT4mG7Dm6avj5/VYLyMhSkf0w8DOiP484KAx5rAxpgV4FljVuYIxZqMxpjr89BNgyuB2Uyl1RmqOgtML3jjbTQpqXcyMa8PrPPOXbfRlEhIncU29z9NnJPg4VuWnPqB3yA4lO4E+C+g82VYcPtaTvwPe7PTcAO+IyBYRWd1TIxFZLSJ5IpJXXl5uo1tKqT7VFEFidr+WVuYPYMVNO+Nw0RCV1fc8fTgz5r4TvadMUANj5/9+pAWuEe+EEJHLsAL9dzsdvtAYkwusBO4WkYsjtTXGPGaMWWaMWZaammqjW0qpPlUfhUT7m2/XtQolTc4BB3qA+uhsov2lOEI9j9bbNzXRlTdDy06gLwayOz2fAhzvWklElgCPA6uMMZXtx40xx8OPZcBLWFNBSqnhUFMEidNsVz/T1AeR1EdPxUGIGH9Jj3XifS6Sot16QXaI2Qn0m4HZIpIjIh7gZuCVzhVEZCrwInCbMWZ/p+MxIhLX/jVwFbB7sDqvlOpFcz34qyDJfqDfNwgrbto1RGdjoNd5ehFhQWa8XpAdYn0GemNMELgHeBvIB/5ojNkjIneKSHvS6R8Ak4BHuiyjTAc+EpEdwKfA68aYtwb9u1BKdde+tLIfUzf5tS7i3SEmR4UG/PJtTh8BTwqx/m4TAKeZPzmeghP1BNsG/poqMlu5bowxbwBvdDm2ptPXXwe+HqHdYeCsrseVUsOg+qj1mDgdTuy01WRfjXUhdrBSzzRGZRDfWNhrnQWZ8TQHQxypaGR2uv3VQco+vTNWqfGqJhzobU7dhAwU1DkHZX6+XUNUJp5gfa8bkczPsPax1emboaOBXqnxqqYI3NG2b5YqaXLQGHQMyvx8u0ZfBgAxgdIe68xKi8XtFPJLdYnlUNFAr9R4VX3UWnFjcx5mMFIfdNXkm4xBiOllnt7tdDAjJZYDJzXQDxUN9EqNVzVF/VtxU+NCMMw502RmEYScHvzeFGL8PY/oAeZMjqNAA/2Q0UCv1HhkjDVH348VN/tqXUyLbSPG1fPOUGei0ZdhTd30suPU3PRYiqv9NDYP3l8T6hTdYUqp8ShQA811tm6W2nSkCoBtFQlkR/k7ng+WxqhMUmt34g72PGKfE15tc6CsgaXZiYP6+kpH9EqNTx1LK+2N6JtDwolmD1OjAoPelcYo64JsbC/TN3MnW4F+v+a8GRIa6JUaj9pvlrI5R3/M78UgTI1qHvSutF+QjQ70fEE2Oykan9uh8/RDRAO9UuNRbThrZEJ27/XCivxeAKYNQaAPOdz4vam9jugdDmF2Whz7NdAPCQ30So1HtcXgjoGoJFvVi/xevI4Qad6hyQvfGJXR98qb9DgKdOpmSOjFWKXGo9pjkDDF9hr6Ir+X7KhmHIOU+qCrJl86qTU78DVXEPCmnFb2zCZrmqmpJUhZfTOPrztMtPdUaLpluf2VQyoyHdErNR7VlliB3gZjoKjJOyTTNu2avOkAJNQf6LFOery1CcnJ+qHrx0SlgV6p8ai22Hagr251Ud/mGpIVN+2afGkAJNXv77FOR6CvG7p+TFQa6JUab1oD0FhmO9C3X4gdihU37YKuGFpcsb2O6ON9Lnxuhwb6IaCBXqnxpi68o5PNQH90GAI9gN+bRmIvgV5ESIvzcbJOp24GmwZ6pcab2mLrsR8j+knuVmJdQ7vxR5MvjYSGQ4jpOZdOWpyX8gYN9INNA71S400/R/RFfu+Qj+bBWnnjCjUT29jz1oKpcV4am4M0tWjOm8FkK9CLyNUiUiAiB0XkexHKbxWRneF/G0XkLLttlVKDrH1EH5/VZ9WWEJQEvEyNHoZA77UuyCb2ckE2NdaaRqrQlTeDqs9ALyJO4NfASmAB8CURWdCl2hHgEmPMEuBHwGP9aKuUGky1xyAmDVzePqsernfSZoRpQ7jipp3fm0oIR6/z9KlxVp91+mZw2RnRnwccNMYcNsa0AM8CqzpXMMZsNMZUh59+Akyx21YpNcj6sbRyX3izkeGYujEOF/Ux03od0SfFeHA6hHId0Q8qO4E+CzjW6Xlx+FhP/g54s79tRWS1iOSJSF55ebmNbimlIurHzVL5NS5cEiLD1zLEnbLUxM3udUTvECEl1kOZBvpBZSfQR7opOuIOAiJyGVag/25/2xpjHjPGLDPGLEtNTbXRLaVUN8aER/T2kpntq3UxxdeCa4hSH3RVEzeHOH8xrmBTj3VSY706oh9kdgJ9MdD5UzMF6JZvVESWAI8Dq4wxlf1pq5QaJP5qaG2EhL4vxIIV6Idj2qZdTdxsoPdUCKlxXqqbWgi2De1yz4nETqDfDMwWkRwR8QA3A690riAiU4EXgduMMfv701YpNYj6sYa+ulk4GXAOy4qbdu2BPrGht0DvI2SgsnF4ppMmgj6zVxpjgiJyD/A24ASeMMbsEZE7w+VrgB8Ak4BHxMqWFwxPw0RsO0Tfi1KqH4H+1IXY4Us50BiVRaszuvcllu0rb+qbO/LfqIGxlabYGPMG8EaXY2s6ff114Ot22yqlhkjHzVJ9z9G3B/qhzFrZjTiojZvV6wXZlFgPoEssB5Pmo1dqPKk9Bk4PRJ/K+f7MpiJmFnXf8Htd8WTiXUESXD2nJBgK1XFzmHriXevCcYR8+V6Xk4Qot16QHUSaAkGp8aS22Loj1tH3j3Z76gObe5MMmtq42Xhba4lqLuuxTmqcrrwZTBrolRpPbN4sFTLWhuDDOm0TVhMbviDbx8qb8oZmjIm4Glv1kwZ6pcaT2hJb8/Mnmt20GMewLq1sVxM3B+g7501LMERdQJObDQYN9EqNF21BqD9ua0Rf5LdWs0yNHv5NPlo8CTT1kZs+pT25mV6QHRQa6JUaL+pLwYRs3SxV5PciGKYMU+qDrmri59heYqkGTgO9UuNFP9bQF/m9ZPha8DhGZg68JnY28Q2HkVBrxPJ4nwuP06Ej+kGigV6p8aIj0Pc9R1/UNDIXYtvVxM3GaYLENx6NWC7h5GYa6AeHBnqlxos6exuO+NscnGzxjMiF2HZ2Lsim6BLLQaOBXqnxorYYfIngje212jG/defpSI7o62JnEBJXnxdka5paCbQO7w1d45EGeqXGC5vpiY+2r7gZxhw3XYUcbupipve5xNIARyt7Tmms7NFAr9R4YfNmqSK/lyhHGymekV2j3tcmJO1LLA+XNwxXl8YtDfRKjRf9CPTTooc/9UFXNXFziAmU4m6tj1jentzscEXjcHZrXNJAr9R40FwPgZo+A70xp3LcjLRTF2Qjj+q9bifxPheHdEQ/YBrolRoPatvTE/ce6CtbXTS1OUdJoO97t6mUWC+Hy3VEP1CaplipsS7vSSjLt74u3WGN7jvpnKL4aJM17z1SgX5m0fOnnhhD0OFlWumbGLHGnIem/vVp9VPivOwrrcMYg4z0XNMYpiN6pcYDf431GJXUa7X2HDfZo2BEjwhNvjSie0tXHOulLhDUbQUHyFagF5GrRaRARA6KyPcilM8TkY9FpFlEvtOlrFBEdonIdhHJG6yOK6U6CVSDOMAb32u1o34vaZ4Wop2jY+NtvzedqECZdfEgglMrb3T6ZiD6DPQi4gR+DawEFgBfEpEFXapVAd8EHujhNJcZY5YaY5YNpLNKqR74q60g73D2Wm20XIht1+RLwxVqxtNaG7G8PbmZLrEcGDsj+vOAg8aYw8aYFuBZYFXnCsaYMmPMZiByhiKl1NDyV/c5bdMSEo4HPEyLHl2BHuhx+iYx2o3H5dAllgNkJ9BnAcc6PS8OH7PLAO+IyBYRWd1TJRFZLSJ5IpJXXl7ej9MrpewE+uKAB4OMqhG93xsO9IGTEcsdIkyfFK0j+gGyE+gjXeruT27TC40xuVhTP3eLyMWRKvaNdJoAACAASURBVBljHjPGLDPGLEtNTe3H6ZWa4EzIWkPf14XYppFPfdBVm9NHszvBmqfvwYyUWJ2jHyA7gb4Y6JxAYwpw3O4LGGOOhx/LgJewpoKUUoOluQFCbRCV2Gu1Ir8Xj4SY7B1dM6xN3t5X3sxIjaGoqonWttFxAXksshPoNwOzRSRHRDzAzcArdk4uIjEiEtf+NXAVsPtMO6uUisAfXicfldxrtSK/l+yoZhyjbDl6ky+dqOYKJBQ5986M1FiCIcOxKk1udqb6vGHKGBMUkXuAtwEn8IQxZo+I3BkuXyMik4E8IB4Iici3sFbopAAvhW90cAHPGGPeGppvRakJqqnSeoye1Gu1Ir+X3ITRN9fd5JuMYHoc1c9IjQGsJZYzUntPwawis3VnrDHmDeCNLsfWdPr6BNaUTld1wFkD6aBSqg8dgb7nEX1Nq5PaoGtUXYht1xiVAUCMP/KM8MwUK7gfrmgA0oerW+OK3hmr1FjXVGmtoXd6eqxS5A+nPhhFSyvbNbsTaXVGEeMvjVieEO1mUoxHL8gOgAZ6pca6pqo+p21ObTYy+gI9IjT6MogJRA70YE3faKA/cxrolRrrmip6nbYBazPwJHcr8a7RuS1fY1QmUYEynG2Rl37OSIkNT92oM6GBXqmxrK3VSmhm40LsSO4R25fGqAwchHrcWnBGagwVDS3U+kfX0tCxQgO9UmNZ7THA9Bro24x1V+yonLYJa/RlApBcuzdieftqG71D9sxooFdqLKs+aj32EuhLAx6CxjGqA32LO55WZzTJtXsilndeYqn6TwO9UmNZdaH12EugP+of2c1GbBGhMSqT5LrIgX5qcjQuh3CgTEf0Z0IDvVJjWc1RECf4EnqsUuT34sSQ5RvFgR5oiMogof4QzjZ/tzK308GstFgKTtSNQM/GPg30So1l1YVWMjPp+Ue5yO8jK6oZ1yj/aW/yZeIgRFJdQcTy+Rnx5JfWRyxTvRvl/+uVUr2qPgoxfayhbxpdm430pCF8h+yk2sjpsOZNjuNEXYBq3Vaw3zTQKzWWVRdCVM+BvrZFqGx1j4lA3+qOp9GXQWr11ojl8zOsbRL3ndBRfX9poFdqrArUWZkre7kQW1BrpbMazWvoOytLPofUqq0R95CdlxEHQH6pztP3lwZ6pcaqmr6XVu4LB/qxMKIHKEvKJaqlkrimo93KUmO9TIrxsE8vyPabBnqlxioba+jza13EOYMkuSPneh9typPPAbBG9V2IiF6QPUMa6JUaqzrW0Pec52ZfrYup0c3IKNtspCd1MTkEPMmkVW+JWD5vchz7T9YT1N2m+kUDvVJjVdVha/28OzpicchAQa1zzEzbACBCWVIuaVWRA/38jHiagyEKK/UO2f7QQK/UWFWxH1Lm0NNw/Vijk6a20Z36IJLypFxi/SVE+U90Kzt1QVanb/rDVqAXkatFpEBEDorI9yKUzxORj0WkWUS+05+2SqkzVHHACvQ9yK91AmPnQmy7svA8fVqEZZaz0mJxOURX3vRTn4FeRJzAr4GVWPvAfklEFnSpVgV8E3jgDNoqpforUAsNJyBldo9V9tW6EAzZYyzQ18TPpdUZE3H6xutyMjM1VgN9P9kZ0Z8HHDTGHDbGtADPAqs6VzDGlBljNgNdk0X32VYpdQYqDlqPvYzoC2pd5MS24XV0X5M+mhlxUp60lLSqvIjlS7MT2VpUQyg0tr6vkWQn0GcBxzo9Lw4fs2MgbZVSPak8YD32OnXjYm7C2FhW2VVpymdIaDxMdIQNw8/LSabW30rBSZ2nt8tOoI90pcfur1LbbUVktYjkiUheeXm5zdMrNUFV7AeHC5KmRyxuaBWONjhZkDhGA33qRQBkln/Urey8HGs56adHqoa1T2OZnUBfDGR3ej4F6P5rdoBtjTGPGWOWGWOWpaam2jy9UhNUxX5IygGnO2JxQa0Tg7BgjI7o62JyaIjKIrN8fbey7ORoshKj2HSkcgR6NjbZCfSbgdkikiMiHuBm4BWb5x9IW6VUT/pYcbO31voFMFZH9IhwPPUi0is3QbD7xeTzcpL59EgVJkJOHNVdn4HeGBME7gHeBvKBPxpj9ojInSJyJ4CITBaRYuCfgH8VkWIRie+p7VB9M0pNCG1BqDzU64qbvTUukjwhJkeN3TtIj6dejLvND0c3dis7LyeZioYWDlfojVN2uOxUMsa8AbzR5diaTl+fwJqWsdVWKTUANUch1Nr7iL7GxYLE4JhJfRDJyUnn0ubw4DzwLsy87LSy5eF5+k2Hq5gZ3jhc9UzvjFVqrKnYbz32MKIPhqw19GN1fr5dmzOKsuRlcPDdbmU5KTGkxHr5VOfpbdFAr9RY0x7oJ82KWHy43klzSFiY1PW2lrHneOoK6/utOnLacRFheU4ym3Se3hYN9EqNNRUHICa1x6yVe8M56Mf6iB6gOO0S64t9r3Uru3hOCqW1AXYW1w5zr8YeDfRKjTV9rbipceFxGGbEtQ1jp4ZGY3Q2ZJwFe1/uVrZycQZel4MXthSPQM/GFg30So0lxkD5vj5W3LiZlxDENV5+uhesguLNUHt6QI/3ufncwsm8suM4zcGx/0ttKNladaOUGiVqj0GgBiYvjlhsjDWivyprbCUy682rredxLbDlzacoyLnttLJJMR5q/a3c98peFmclRGx/y/Kpw9DL0W28/M5XamIo3WE9Tj4rYvEJv4OqFgfzx8H8fLv6mGlUx81l6ol3upXNTIsl3udi69HqEejZ2KEjeqXGktKdIA5IXxixeEe19SO9eIyuuJlZ9HzE4w1RGWSXrSUqcBK/L73juEOEs6cmsf5AOXX+VuKjIqeEmOh0RK/UWHJip3Uh1hN5+8AdVW7cYsZu6oMeVMVb21hkn3ivW9myaUkAvJt/clj7NJZooFdqLCndYa1C6cH2KjfzE4P4nMPYp2EQ8KbQ5E1jWumb3comxXq5cFYKW45Wc1T3ko1IA71SY0VDGdSXwuQlEYvbDOyqdrE0eWxO2/SlImExqTU7iGk61q3ss/PSSIhy88qO47TphiTdaKBXaqwo3Wk99jCiP1TnpCHo4Kzk8TVt064yYREA0493T53ldTm5ZnEGpbUBPjqg+1l0pYFeqbHiRPuKm8hLK7dXWxcix+uIvsWTwMmkc5h+/HVrHWkXCzPjWZSVwDt7T1JwQveU7UwDvVJjRekOa0epqMSIxdur3MS5Q+TEjt+bhwozryGh8QhJdfndykSEG3OnMDnBx7Obj1FWFxiBHo5OGuiVGitKd/Y4Pw+wo8rFWUlBHGM4NXFfijKuok3c5BzvnvsGwONycNv503A7Hfzuk6M0NY/Paaz+0kCv1FgQqIXqIz3Oz/uDVmri8Tpt067VncDxtBVMK30TCUUO4onRHr68fCq1/lae2VxEa9vY3XxlsGigV2os6ONC7J4aN21GOGucB3qAI5nXEtVcweTKT3qsM3VSDNcvzeJweSP3v7p3GHs3OumdsUqNdnlPwoF3AIHygm7JvQC2VI7vC7GdHU+7hIA7kRklL1OaelGP9XKnJXGyLsDTnxxl+YxkvrAkcxh7ObrYGtGLyNUiUiAiB0XkexHKRUQeDpfvFJHcTmWFIrJLRLaLSN5gdl6pCaPyIMRlgCcmYvHGMjez4oKk+sb/GvKQw83RzGuYcvIvuFt7z0V/1cLJLM1O5N4Xd1FS4x+mHo4+fQZ6EXECvwZWAguAL4nIgi7VVgKzw/9WA492Kb/MGLPUGLNs4F1WaoIJtUF1IUyaGbG4JQSfVnj4TFrL8PZrBB3OWoUz1MK042/1Ws/pEB66eSltIcM/Pbd9wt5MZWdEfx5w0Bhz2BjTAjwLrOpSZxXwO2P5BEgUkYxB7qtSE1NtEbS19Lh14I4qN/42mVCBvjp+HtVxc5hR0n1Dkq6mTYrhvusWsulIFY+vPzwMvRt97AT6LKDzPcfF4WN26xjgHRHZIiKre3oREVktInkiklderne2KdWh8qD1mBx5RP9cQRDB4G4qY9ORqm7/xiURDmetIqV2F/H1h/qsfuM5U7hqQTq/fHc/B07WD0MHRxc7gT7Sqtyuf//0VudCY0wu1vTO3SJycaQXMcY8ZoxZZoxZlpqaaqNbSk0QlYcgdjJ4YyMW76mPISc6QKxr/C8jnFn0fMc/TIiQODhn709PPx6BiPDj6xcT43Hyned3EJxgSy7tBPpiILvT8ynAcbt1jDHtj2XAS1hTQUopO9qCUHWkx/l5fxD2N0axMK5pmDs28oKuGKrj5pNaswNHqO/VRqlxXn70xUXsKK5lzYd9/xUwntgJ9JuB2SKSIyIe4GbglS51XgFuD6++OR+oNcaUikiMiMQBiEgMcBWwexD7r9T4VroD2pp7DPSbKzy0GWHRBAz0ACeTz8EVCpBcu8dW/S8syeSaJRk89P4B8ksnTj6cPgO9MSYI3AO8DeQDfzTG7BGRO0XkznC1N4DDwEHgN8Bd4ePpwEcisgP4FHjdGNP7ZXKl1CmF663H5MgXYjeWu3GKYV7sxAz09dHTaPKmkl5tf+X2j1YtIiHKzT//cQctwYkxhWPrhiljzBtYwbzzsTWdvjbA3RHaHQZ63iVBKdW7w2shJg188d2KjIF3j3uZF9uEzzkxlw0iQlnSOUw/8RbR/lKaorov9ntmU1G3Y1cvnMz/birijqe38OTXzh2Ono4oTYGg1GjVVGWN6CcvilicX+viUL2LC5Im3iqSzioSl9AmbtKr7I/qF2QmcHZ2ImsLyli3f/yv8tNAr9RoVfAmhIKQsTRi8avHvDjFsHyCB/o2p4+KxCWk1O7E3Wr/vVi1NIu0eC/ffHYbx6rG99SXBnqlRqv8VyAh2/rXhTHwWrGPC9NaiHeN3/zzdpWmfAYxITIqP7bdxuNycOvyabSFDHf+7xYax3FKYw30So1GgVo49BeYfx1I99tUdlS7ONbo5AvZzSPQudGn2ZNEZcIi0qq24G2ptt0uJdbLQzcvJb+0jjue3kJzcHz+0tRAr9RotP9tK+3Bgq7ZRiyvHfPhFsPnMjXQtzuechFO08rcwv/tV7vPzkvn5zcs4aODFfzjH7aPy5upNE1xX/Ke7LvOsq8NfT/UxLL3ZStb5ZRzoez0fOotIWt+/pLJLSR4Juhqmwj8vlSq4uYx5+gfyM+5nVZ3gu22f70sm7pAkB+9tpdvPruNB29aitflHMLeDi8d0Ss12gRq4eB7MP9acHT/Ef1zkY+TASe3zpi4aXd7Upx2Ca5gI2ft/+9+t/27i3L412vm88auE3z9qTyaWsbPnL0GeqVGmy2/hWAAlt7arajNwJp90SxMbOXSyRMnW6Vdfl86+6ffwuyiPzKpZme/2399xQx+ccMSNhys4Kb/+YTS2vHxy1QDvVKjSbAFPlkDORdDZvdllW+VeDnc4OLueU2RrtEqYOfse/B7Uzl394963Fe2N39zbjaP3baMIxWNXPvfG9hydOxnANU5+r5s/G+44G7Y8xKkLQCXF7zxEJUIjvDb98FP4bLvn2rT5fmD7+7n21fO6f9rh8/T+c6+9/JPcsX89I5HgFuWTz2tzYPBG2y/3oPv7ufbrj+d3v9hdsbvz3i0+wWoPw7XdZ96MPve5L4DX2aGq5zPHf1vmHIPFLxJVnjnpP8K3sgPmh/gfu93+Gn1t/nAdyXLmjfhioojqqkEJ22Igd87ruXW0KtUO5IIhBzE0YRPWihyTmdqWyFlJhEBJlHLdjOLpXKQchKYTBUhceAybQTFyZrgddzhfJVH267jG85XaMaNX6J4LngJX3W+RZS0sCU0mylSTiaVbGMui+Ug+5jJuraF3O54i8+G1vBV/oxHDDc6P+Sq4H/xuvPbXBh4mH/xvABAixEKUy7jW64XWFuRwHVROwD4JLSAhJmnciQ+fzwFgEX7H+TJxDu5u/x+Fhz+/3io9Ysdddp/Zt7LP8m3XX/iweAN3d7nx9YdYvXFM/m7i3J4+pOj3LjmY65fmsWy6ckddRYfeIRds61MLyfrAqP+86uBvjfFW6DqELz1PWsFRHveEQCnF1LnwuTFsP33EDf5VNmHPzvt+UPvp53ZB+HDn3ULwH/ZV8YV89M7HiO1eSiwxPbrPfT+Ab7t6/46w+mh9w+M+h+UYWGMNbBIWwCzLu9W/Py+AOVBJ//i+hPO6nCO+gNvMyVc/kLgTh7wFfFCVQoP+Nq4KhBOK9XUabmhwJfNqyCQbKpPSzA+s83K6JgllR3Hlss+AKbQfqwNBDy08U3XSwB8y/UiAF6CxOPvOA5wvmNfx9fnUADAEvazxLkfgIpWN/f4wvWN9TzdWUUQB6sdf+5oO730r3nAt44vA4TvbbqKIjZ1Sob7QqkV6B/wPcf0Y79nivszrDrwK6JbhNdCFwCnAv1f9pXxhO9R/hJY0e3nqLDSeoH0eB93XTqTf389nxe3lVBaF2Dlosm4HA4WH3y0I9CPhc+vBvpIKg/Bq/94KrBnLYOijXDBP0CoFQJ1UFMIJ/bAifA8YMEbMH0FeONGrNtqjDvwjrXC5ouPdls7f6zRwf8L3g7ADc71kVqr0wj/0rqaC1IC/LJqDSdaksgz8/p9lmiPFSIvnDmJDYcqOVrZyE3LpvbRavTRQN9ZKASbH4f3fggON3zup/D292HJ31iBvnOq2OzzYJGxdv/55Ndw4F0rAdX0nnelH3D3jLWUrj03x9OfHCUUMhwoq2d2WhzLZyQzQ1fbjU2BOnj9O5A8AxbdeFpRm4F/3hyPA2u+2SH6P9mOZjysy32Is9/9G570/Affbf17YPEZneuaJZnkpMTw4rYSfvXBAeLkajzG4BgjF0r0Ymy76qPw9Cp48//A1Avgro/hgrt6byMCKbOtry/9njWNc+gD6/m+16ClcVC61tzaxoaDFfzyHetP37f2nLC63NhCXaCVZz89xr0v7eLyX37IZS3/CcCGgxUTJgXruPD2vVBXDNf/D7g8HYeNMfxkZyyfVnj4ofupEezg2NTiSeTWlns5YLJ4xPMw5+z9Kc7gmeW1WZCZwDc/O5uclBjuD97Omg8PUVIzNlbl6IjeGNj6O+sHDeDahyD3KxFvO+9VbDqcfRvMutKaWz/4vjX1k3MJ8dzYd/sIGo2X335wkF/95SD+1jamTYqmuqmV762cx8/e3Mc3L7d+ydx8bjZFVU2sP1DO+69up9BM5tbHNxHndXHxnFQunZvK0uxEclJicDn1d/uos/9t2PY0XPRt6y/FMGMM97+2lycPRPOVmU3cULye7/CNEezo2HSCSdzU8gO+6/oDXz/6DNOOv0mh83NndK74KDdfuWA6ca/fwfebvs0jH1jXSkpr/WQkRA1mtwfVxA70dcfhlW/CwXet+fVVv4akaQM7Z/tF2Ev+xfoBPvAOH3nXk//UBo5OvpqqhIXdfoncsnzqaXfgVjUL/3soit82P0TV2wXkJjSwfOlZZCdHc+9Lu4j3uU9r/+zmY2BCzDn2PLd5fsHcwG/5p5xj7KiLZmd+JRt27cdJCJcYkn3C5Kg2pka3Mj06AIS/37wnR/QO30g5w9udtqpovCn8CP7095C2EC49dUG8LtDKfS/v4cVtJaxMq2JlQhlScnrTTUeqWD7M3R1rrD1k59GKi38P3sYFsyeTVb6O77Y+C8Bv3A8wc0cW9dFTCHhSwj+b87rsPdv1OSx3fkzFFY9aaY4PVHDJf6zl5nOzufOSmWQmjr6APzEDfXMDfPIobHwY2lph5X/AuV+PeBfimSg38exumEZ+zF1EZ5aQeuxNPnfk98w/8hQ17jTKYuZSGzuLUFQyDpeXlrZ4GvZ/RHlDC2UNLdQ0tbDA+HnGU87UWHC0NsBWwWGCXOsNEvUO/JU3iPstg2BwmNMTMRX4vgql4ScuTv+/bIAmaGr00oSXiz0xbA7NofndF3EdOEHmggvInn8u4okZlPcikoqGZg6cbOBIRSM1fuumnw8Kyoj3uUiM9pCVGIXPPX5uP+/R7hfhpTsgKQdueQ5cXowx/GVfGf/6592crAvwj5fP5oLqV3XN/CBpiM6mYNqt/PtWD696/5UFjqNkHd8KQJvDQ8CTzOPuDGaUhDAIIPzEtZ7px09tO2jE+myeVfIHZqZmUXKwmfPPXsYfPi3imU1FrFycwVcumMY505KQUfI/zlagF5GrgYcAJ/C4MeZnXcolXP55rMVPXzXGbLXTdliVF8DOP8LWp6CxHOZ9Aa68v8f9OO0oCzjY3baUXXuj2VXtZneNixPNa2CDVe6UObSZucS3NvA5Zx6XtO1kbvNhzq7egEvCc+j5kAzEGDep4sO4o4iJ8uBrKIa4RVQEkqhKWIARF+sPVXHhjDQ+PFDFiplpGHFgcGDESVLtXrLL1/Kz1pu5ZUqF9UEVweDAWkdncJhWHKFWWoNBmlraKKwzLJAiEptLSSpYBwUQfMnBSc90WtIWkzjrfJJmLbc2v3B5+/3+NAfbyC+tZ3tRNduO1bDlaDXF1d3nNd/de7Lja8HayHlqcjRTk6NZNj2JWamxOByj44dmwEp3wIe/sK7jTL0Abn6GahPLO5uLeHJDIftO1DMrLZYX77qQpdmJbHq+71Oq/tllZgBwYfPDvLJwPTH+48QESvG21JApVcQ31gAGMYbLnU6S605tPi7hgdU5+T8H4H0vsNfDD6fMZ1coh1cL0vjhzmk0J81h5dJpXDE/nYWZ8SM6bdpnoBcRJ/Br4EqgGNgsIq8YYzpnWloJzA7/Ww48Ciy32XbwBFugtdG6COqvtqZmaorg+DYo3gwV+0EcMPNyuOS7kB15CzFjDC1tIQKtIZpNIoEGB3WhaZSXejjhd3Ckwcmhehe7q12cDDiBf0H2GnLi2lie0sri0j+w6MJrWJgYJM5tmP5CGv9n1fk0tiyjoDnIlkCQpkCAVn8DLS0Bcqclk1CTz9wkYUFikI549tq34Nyvc+hIFYem/jUA/16wi5/MW8zP8ncRP/f0FQQzi54nu3wta9qu47KUfdhx95Z5FPpugWse5HjaxRza+RGNhVuIq9rF3GMfkFT8MqyFIC4qYmbRlDQfknNwJE/HHTsJiUok6Ikn4Iyjus1LdVOQ4ppmCqv87D5ez97jdbSEswGmx3s5Z1oSX/3MdOZOjmNGaiyTYjzM+7e3+H/XLaQ+EKSysZljVU0cq/Kz53gdeUereXFbCXFeFwuz4pmTHseMlBhS4rwkx3iYFGM9RnucOB2CyyE4HTLsIykTXhFljPUfE2qFliZMoBbqSzG1xQSL8pCijfjKd9LqjiN/5h28HHsTeU/ms7O4BmNg3uQ4/uPGJVy3NHNcJdUavQS/Lw2/L40KrDuRb9oyj+cWn/r5uWnLPJ5bdPrP0/I99/Ony9cR21TMWx+u58FL3XhKt3PO8Q84h1rwQmuTm30fTWHvummsdU7Gk5JDwqR0UlPTiIlLJiYxmbj4ZJJio4jyeXG7XDiHaDBjZ0R/HnAwvP8rIvIssAroHKxXAb8L7x37iYgkikgGMN1G28Hz0ynQFiFta/Qkay38OV+DRTdAXIQbjcIOlzdw+X9+iOlYwfYIvAXw045RusdhyIlt4zNprSxKamJx/n+yYOVdxLrDjV57A1KvOu28TocQ73Nb8+sJAHFAKtA+R7/7zL/vwSBC5rRZZE6bBXwVYwyHyupZu3sPNYc2EVuxk6n1+5jV8AFpxS/1eTqAEA6MxwHiRBwOHEagEOsf0P4m53vbcL/XPtrptHTQbf0TDCED5rjBdMxTd19iKBhCQOi0YxG+1R7adj/WXU9LG6XLYyQh42abmcXatpv5feAK6vdEE+MpZ15GPP94+WwumWNdNB8tf+6r3jV7kmj2JPFSCB686hrroDFQfQSOb8ddup25x7Yy++RufM1roRLr3/7I5/tF6008H/03bP6/Vwx6X8WY3tfkisiNwNXGmK+Hn98GLDfG3NOpzmvAz4wxH4Wfvw98FyvQ99q20zlWA6vDT+dC+Da6kZMCVIxwH3qj/RsY7d/AjOb+jea+wdD1b5oxJjVSgZ0RfaThRdffDj3VsdPWOmjMY8BjNvozLEQkzxizbKT70RPt38Bo/wZmNPdvNPcNRqZ/dgJ9MdB508opwHGbdTw22iqllBpCdi4DbwZmi0iOiHiAm4FXutR5BbhdLOcDtcaYUpttlVJKDaE+R/TGmKCI3AO8jbVE8gljzB4RuTNcvgZ4A2tp5UGs5ZVf663tkHwng2/UTCP1QPs3MNq/gRnN/RvNfYMR6F+fF2OVUkqNbZr4RCmlxjkN9EopNc5NyEAvIv8gIgUiskdEftHp+PdF5GC47HPhY9Ei8rqI7AvXj5jCQUSmi4hfRLaH/60Zjv6Fj58jIrvCZQ9LD3fc9NS+n327T0RKOn2fnw8f94jIk+F+7BCRS8PH4zrV3S4iFSLyXxHOO+D3r799C5etDb8f7W3Sejj3SLx3w/rZO8P3bzR89twi8lS4H/ki8v3w8WH77J1J/8Jlw/P5M8ZMqH/AZcB7gDf8PC38uADYAXiBHOAQ1gXkaOCycB0PsB5YGeG804Hdw92/cNmnwAVY9y282UP/emzfz/7dB3wnwvG7gSfb+wxsARwR6m0BLh6K9+9M+gasBZb1cd4Ree9G4LN3Ju/faPjs3QI8G/46Guve6+nD+dk70/4N1+dvIo7ov4F1F28zgDGmLHx8Fdb/jGZjzBGsFUTnGWOajDEfhOu2AFuhY5vOEe+fWKkm4o0xHxvrU/E74IsRzhux/SD2ewHwfqc+1wCn3RQiIrOxAsVw74XXZ9/6MCLv3Qh89vrVv1H02TNAjIi4gCigBajrXGEEP3tgo399GPD7NxED/RxghYhsEpEPRaQ9s1kWcKxTveLwsQ4ikghcS/hDH0GOiGwLn3fFMPUvK/x1j/3uo/2ZuEdEdorIEyKSFD62A1glIi4RyQHO4fSb5QC+BDwXDgqRDMb7dyZ9ezL8Z/O/9TD1MOLvabOKBAAABx1JREFU3TB99vrbv9Hy2XsBaMRKzl0EPGCMqerSbjg+e2favyH//I3LfPQi8h4wOULR/8X6npOA84FzgT+KyAz6SNcQ/m38B+BhE07S1kUpMNUYUyki5wB/FpGFxphuv7kHuX9200zYTkfRR/8eBX4Ubvsj4JfA3wJPAPOBPOAosBHCm5yecjNwW6TXxOb7NwR9u9UYUyIiccCfwv37Xde3JMLrDdt7N4yfvf72b7R89s4D2oBMrJ+d9SLyXpf3asCfvSHq36B+/noyLgO9MabH9G8i8g3gxfBv9k9FJISVZKivVA+PAQeMMd0u5oRfsxlon27ZIiKHsEbneUPcv2JO/3O+pzQTdlJZ9Nm/Ln39DfBauE0Q+Hanso3AgU7PzwJcxpgtPbymrfdvsPtmjJUP0xhTLyLPYP1Qdv1BG9H3jmH67J1B/6oZBZ89rDnwt4wxrUCZiGzAmpprz5o7KJ+9oejfYH/+ejIRp27+DHwWQETmYF3kqsBKzXCziHjDf57OxrrQhIj8O1Zy4W/1dFIRSRUr/z7hEfhswh+0oeyfsVJN1IvI+eE/+24HXo5w3h6/v/4Qa1623fXA7vDxaBGJCX99Jfz/7Z1biJVVFMd//4eycLAwe0hKTctMCqRGC5QE7WZ0oSRiDFJBoyDsQolRCko3rYzAItAoTEvyIcwyxTCbFBRNvA+KxlBSoPhQjWShrh7WPjPH47nq3PxcPzjwnX371uzZs+bba+/9/zhhp793oAF/Ki3V7jn3X622pVBEn5R+EXB/rk4BXdZ3nTn2arWvu4w9PBwyRk5PfDacLyDf4WPvbOzr1PFX68ry+f7BHeeS1KHbgDF5ea/gK9r7SLsH8P+eBjQB29NnSsp7EJiTrscDe/B45jbggc6wL6XXp/IHgQW0nXhuta9c/Rrt+wzYBexMA/CqlD4gtduE7xrqX1DvF2BIQVq79l+ttgE98Z0YO9O936dtJ1OX910XjL2af7fdZOzVActTH+wFXurssXc29nXm+AsJhCAIgoxzIYZugiAILijC0QdBEGSccPRBEAQZJxx9EARBxglHHwRBUAFJj8qF5U5JKimfIeleufDYAUkz8tKHSdokPwG7VdKIlH6FpB8ktUhaUKUtkvS6pP1ykbRpleqEow+CMkhqzu11LlNGktZJ6iVXQtxdkH+P2tQJW9SmVrhY0s2SPu3QHyJoD3YDjwCNpQqkvfgfAONwfaAGSUNT9jxgtpkNA2al7wDHgZnAizXYMgk/QDXEzG4EllWqkMmTsUHQHuQO0VTBfcAOM/tLUu/CTDNbg79OE0nrcYXD1lOXkq6W1M/Mfm0Hs4MOwMyaAFRchTnHCOCAJekFSctwQbK9+HmIXqncZaSTrWZ2DNgg6brCxiTdDczGVSsPApPNrAUXPpxgZqdSG4cL6xYST/RB5pA0PTedlfSepHXpeqykJem6Qa4PvlvS3Ly6LZLmSNqMy+/m0i+VtFrS1CK3fJwiJ0IlDZQLZQ0vUieflbgWS3B+U0587DngbUm/Ae8AL1OGNIt8FbjTzG7B5RheSNmDgMdSCOg7uTJnWcLRB1mkEcgpENYDdemI+ShcUKovMBeXmhgGDJeUk9ftiWuT32ZmG1JaHe6MPzezhUXuNxI/4diKpBtwkarJZralgr1b8+wNughJ36d//IWfh6ptokha7kTq08DzZnYNrhv0cYW2bsfDPxslbQcmAv1TXg/guJnVAwtx0bmyROgmyCI/A7fKFQH/xY+11+POdBquCrrezI4ASFoK3IHrDJ3EHXQ+K4B5Zra0xP16m9nfed+vTHXGm9meKuw9jCsbBl2IVSlYVoZy4mMTgWfT9XJgUYW2BKw1s4YS98mN0a+ATyoZFk/0QeYwVwlsBibjkro/4W/uGoTrtZQLtB43s5MFaRuBcSodoD0hKf9v6U98Cj+ySpMvAf6psmzQfdkCXC/pWkkX4+G4r1Pe78DodD2G09VJi7EJGJmL3SdhucEpr1X4MLW5v5Jh4eiDrNKI72RoxB39U8B2c3GnzcBoSX3SgmsD8GOZtmYBR4EPS+TvAwbmff8Pf9PSE5ImVGHrYIqrFgbdBEkPSzqEr9t8Kym3uN5X0ipolXN+Bl94bwK+zJvRTQXelbQDeAN4Mq/tZmA+MEnSIUlD02xzEvCFpJ244x+SqrwFjJe0C3gTmFLR/hA1C7KIpLHAauByMzsmaT/wkZnNT/kT8AUxAavMbHpKbzGzurx2mvGwz1E8FnokVzavzEzgDzNbJGkA8I2Z3SR/K9Ra4DUzW5HKrufMXTcLgDVmtrL9eyIIwtEHwTkj1yFfbGZ3nUXdHvhsYlR6IgyCdidCN0Fwjpi/gGOhpF4VC59JP2BGOPmgI4kn+iAIgowTT/RBEAQZJxx9EARBxglHHwRBkHHC0QdBEGSccPRBEAQZ53/VaNQk1WUvWAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"lig0_olds = np.array(list(raw_dict[(0,13)]['old'].values()))\n",
"forwards = lig0_olds[:,0]\n",
"backwards = -lig0_olds[:,1]\n",
"sns.distplot(forwards, rug=True, label = 'forward')\n",
"sns.distplot(backwards, rug=True, label='backward')\n",
"plt.xlabel(f\"work (kT)\")\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"let's look at the spread of the A->B->A works"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, '$w_{fwd} + w_{rev}$')"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"final_agg_works = lig0_olds.sum(axis=1)\n",
"sns.distplot(final_agg_works, rug=True)\n",
"plt.xlabel('$\\Delta w$')\n",
"plt.title('$w_{fwd} + w_{rev}$')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"it's fortunate that most of the works are clustered around 0, meaning that the work dissipated in the forward direction is dissipated (negative) in the second half of the annealing process."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see if we can generate a decently-converged free energy calculation from [this paper](https://static1.squarespace.com/static/530562f9e4b06fd3c041e221/t/57056c20f850827c4e7265fd/1459973152979/optimal+estimators+and+asymptotic+variances+for+nonequilibrium+path-ensemble+averages.pdf). Specifically, we take Eq 21.\n",
"$$\n",
"e^{-\\Delta \\hat{f}_t} = \\sum_{n=1}^{N_f} \\frac{e^{-w_t[X_{f_n}]}}{N_f + N_r e^{-\\hat{\\Omega}[X_{f_n}]}} + \\sum_{n=1}^{N_r} \\frac{e^{-w_t[X_{r_n}]}}{N_f + N_r e^{-\\hat{\\Omega}[X_{r_n}]}}\n",
"$$\n",
"where $\\Omega[X] \\equiv w_{2T}[X] - \\Delta f_{2T}$ and solve for $t=T$. In particular, I will split the trajectories $N$ in half so that $N_f = N_r = N/2$. Since the protocol is symmetric, then $\\Delta f_{2T} = 0$ and so $\\Omega[X] \\equiv w_{2T}[X]$. In this case, the equation should simplify to\n",
"$$\n",
"\\Delta \\hat{f}_T = -\\log \\left[\n",
" \\sum_{i=1}^{N/2} \\frac{e^{-w_{T}[X_{f_n}]}} {1 + e^{-w_{2T}[X_{f_n}]}}\n",
" +\n",
" \\sum_{i=1}^{N/2} \\frac{e^{-w_{T}[X_{r_n}]}} {1 + e^{-w_{2T}[X_{r_n}]}}\n",
" \\right]\n",
" - \\log (2/N)\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"def free_energy(full_work_array):\n",
" \"\"\"\n",
" compute \\Delta \\hat{f}_T from eq 21.\n",
" all unitless\n",
" \n",
" arguments\n",
" full_work_array : np.array(N,2)\n",
" full work array (in kT).\n",
" full_work_array[:,0] are the cumulative works up to time T;\n",
" full_work_array[:,1] are thw cumulative works at time 2T\n",
" \n",
" returns\n",
" dG : float\n",
" reduced free energy difference\n",
" \n",
" NOTE : this equation is _not_ solved recursively\n",
" \"\"\"\n",
" N, sdim = full_work_array.shape\n",
" assert sdim==2\n",
" assert N % 2 == 0, f\"N is not even. cannot split works evenly\"\n",
" \n",
" #split the data in half randomly\n",
" forward_indices = np.random.choice(range(N), size=int(N/2), replace=False)\n",
" backward_indices = [i for i in range(N) if i not in forward_indices]\n",
" assert len(forward_indices) == N/2\n",
" assert len(backward_indices) == N/2\n",
" \n",
" forward_works = full_work_array[forward_indices,:]\n",
" backward_works = full_work_array[backward_indices, :]\n",
" \n",
" max_work = np.max(-full_work_array)\n",
" \n",
" #compute free energy\n",
" forward_max = np.max(-forward_works)\n",
" backward_max = np.max(-backward_works) \n",
" dG = -max_work -np.log(\n",
" ( np.exp(-forward_works[:,0] - max_work) / ((N/2) + (N/2) * np.exp(-forward_works[:,1])) ).sum()\n",
" + ( np.exp(-backward_works[:,0] - max_work) / ((N/2) + (N/2) * np.exp(-backward_works[:,1])) ).sum()\n",
" )\n",
" return dG"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"let's make the input to the `free_energy` function..."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"input_work_array = lig0_olds.cumsum(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 10000/10000 [00:06<00:00, 1505.87it/s]\n"
]
}
],
"source": [
"import tqdm\n",
"N_bootstraps=10000\n",
"free_energies = []\n",
"num_base_samples = len(input_work_array)\n",
"for i in tqdm.trange(N_bootstraps):\n",
" subsample_indices = np.random.choice(range(num_base_samples), num_base_samples)\n",
" free_energies.append(free_energy(input_work_array[subsample_indices]))"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7ffc14fdebe0>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.distplot(free_energies)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7ffc173cb278>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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4cKFzJo1i1mzZvHJJ58A/h7/4sWLueWWW5g2bRoAv/nNb5g0aRIXX3wxeXl5/fjT6RlJ6KLf5JzIIdWWytTkqQDsKe/922wxdOTl5bF8+XJ27dpFbGwsjz/+OPfccw85OTns2bOHxsbGtuGUW2+9le985zvs3LmTTz75hFGjRrWd55NPPmHFihW88cYbjBs3jvPPP5/Nmzezd+9exo0bx8aNGwH47LPPmD9/PqmpqXzwwQds27aNl19+me9973tt5/r888/5zW9+w759+9i6dSsvvfQS27dv59///jc5OTn9+wPqAUnoot/sKd/DjNQZjIoehUKxu3x3pEMSA0BmZibnn38+AF/72tfYtGkT69evZ968eUybNo2PPvqIvXv3UldXR0lJCddeey0AVqsVu90O+JfIL1++nLfeeovRo/31aFrL7H788cfcdddd7N69m5KSEhITE3E4HLjdbr797W8zbdo0brjhhtPqoc+dO7dtB6WNGzdy7bXXYrfbiY2NZenSpf354+kRSeiiX7h9bo43HGdM7BjMRjOp9lSZ7SKAziVslVLcfffdvPrqq+zevZtvf/vbNDU1BSyv22rUqFFYrVa2b9/e9lzrRhgbN25sq3v+6quvthXxeuihhxgxYgQ7d+4kNzcXl8vV9trBWmZXErroFycaTuDVXjJj/EsaRkaPJK9q4I5Fiv5z9OhRPv30UwD+9a9/sWDBAgCSk5Opr6/n1VdfBSA2NpaMjAxWr14NQHNzM06nE4D4+Hjeeecdfv7zn7NhwwbA3/MvLy/n4MGDjBs3jgULFnQqsztq1CgMBgPPP/98l5UWFy1axOuvv05jYyN1dXW89dZbYftZ9JWUzxX9oriuGICMmAyKaotIsiWxs2wn9a56HBZHhKMTbbqZZhgOkydP5rnnnuPOO+9kwoQJ3HXXXVRVVTFt2jSysrKYM2dOW9vnn3+eO++8k1/84heYzebTapiPGDGCt956i8svv5xnnnmGefPmMW/evLZEvXDhQu677762Pxh33303119/PatWrWLx4sWdeuWtZs2axY033siMGTMYM2ZM2x+EgSio8rnhIOVzh5dV+av41ae/Yu31a9lUuokDFQd4Jf8VXrrqJc5JOifS4Q1bUj53YAt5+VwhQqG4rhizwT92DpBoSwSgqKYoglEJMbRIQhf94ljdMdId6RgN/kUa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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.distplot(forwards, rug=True, label = 'forward')\n",
"sns.distplot(backwards, rug=True, label='backward')\n",
"sns.distplot(free_energies, rug=True, label='free_energies')\n",
"plt.xlabel(f\"work (kT)\")\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"comment in passing: shouldnt the distribution of free energies be around the left tail for the forward work distribution?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"what is causing the variance in the free energies? what if we remove works that are greater than or less than 2.5kT?\n"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"mod_input_work_array = np.array([i for i in input_work_array if abs(i[-1]) < 2.5])"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"182"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(mod_input_work_array)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 10000/10000 [00:06<00:00, 1534.31it/s]\n"
]
}
],
"source": [
"N_bootstraps=10000\n",
"mod_free_energies = []\n",
"num_base_samples = len(mod_input_work_array)\n",
"for i in tqdm.trange(N_bootstraps):\n",
" subsample_indices = np.random.choice(range(num_base_samples), num_base_samples)\n",
" mod_free_energies.append(free_energy(mod_input_work_array[subsample_indices]))"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 0, 'dG [kT]')"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.distplot(free_energies, label='free energies')\n",
"sns.distplot(mod_free_energies, label = 'modified_free_energies')\n",
"plt.legend()\n",
"plt.xlabel('dG [kT]')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"alright, that didnt reduce the variance...we also know that the work up to time T is also an input to the free energy estimator, not just the full 2T work; can we remove outliers at time T?"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"med_forward_works = np.median(input_work_array[:,0])\n",
"mod2_input_work_array = np.array([i for i in input_work_array if (abs(i[1]) < 2.5) and (abs(i[0] - med_forward_works) < 5)])"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"178"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(mod2_input_work_array)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 10000/10000 [00:06<00:00, 1554.52it/s]\n"
]
}
],
"source": [
"N_bootstraps=10000\n",
"mod2_free_energies = []\n",
"num_base_samples = len(mod2_input_work_array)\n",
"for i in tqdm.trange(N_bootstraps):\n",
" subsample_indices = np.random.choice(range(num_base_samples), num_base_samples)\n",
" mod2_free_energies.append(free_energy(mod2_input_work_array[subsample_indices]))"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 0, 'dG [kT]')"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.distplot(free_energies, label='free energies')\n",
"sns.distplot(mod_free_energies, label = 'modified_free_energies')\n",
"sns.distplot(mod2_free_energies, label = 'modified2_free_energies')\n",
"plt.legend()\n",
"plt.xlabel('dG [kT]')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"although the 'modified' free energies are biased, it is clear that the variance of the estimate is removed when the most negative forward works are removed."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment