{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Multi Atom Solutes\n", "\n", "The first tutorial focused on solvation of Lithium, a single atom solute. While this is an illustrative example of solvation-analysis' capabilities, it does not capture the flexibility of `Solute`. Here, we analyze a system of water with dissolved isobutyric acid (IBA), a mulit-atom solute that hydrogen bonds with itself.\n" ] }, { "cell_type": "markdown", "source": [ "### System Setup\n", "\n", "As usual, we must import our data and instantiate our `AtomGroups`." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "import MDAnalysis as mda\n", "from solvation_analysis import Solute\n", "\n", "from solvation_analysis.tests.datafiles import iba_data, iba_dcd\n", "\n", "u = mda.Universe(iba_data, iba_dcd)\n", "\n", "iba = u.select_atoms(\"byres element C\")\n", "H2O = u.atoms - iba" ] }, { "cell_type": "markdown", "source": [ "The setup is much like before with two subtle differences, i) IBA has multiple atoms unlike one for Lithium ii) IBA can coordinate with itself, acting as both the solute *AND* solvent. To account for this, we create a Solute for each atom individually and then merge them into our full Solute. To do this, we use the `from_atoms` constructor which creates a solute for each unique atom in the IBA molecule." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "solute = Solute.from_atoms(iba, {'IBA': iba, 'H2O': H2O}, solute_name='IBA_solute')" ] }, { "cell_type": "markdown", "source": [ "Let's visualize what we have with the `draw_molecule` method." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": "", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO3deTyU2/8A8DMzjESiLEVKXZI111apLEXZopKUVl0ktN7KkpuUSsstWhQp0T5UQiqitCkpsmRLKLssYxljhnl+f5zbfP3MVDKG6Lxf3z/mOc95znxG9/t5Pc9zNhyGYQBBEATpLfxAB4AgCDK4oTSKIAjCEZRGEQRBOILSKIIgCEdQGkUQBOEISqMIAoqKimg02kBHgQxWKI0iP6euru7NmzdtbW0/e+GOHTsqKys5DwDDsLdv35aVlXUrf/HixerVq01NTSMjI3+2zXXr1n3+/Jm1vLGxsbS0tIeNRERELF261MLC4tWrVz8bADKo8Qx0AMhggmHY0qVL8/Ly4uPjlZSUfura1NRUCoXCWp6enp6RkWFnZ9fDdi5evOjt7W1jY3PkyBFmYWZmpoODw/Xr18XFxTs6On4qsO948uRJXl7ezp07f1jz2rVrISEhoaGhDAZDWFi4rwJABgWURpGfcO7cORUVle9UePjwYWlp6bRp05SVlalUamxsLI1Gmz9//ujRo2GFFy9eyMvLjx49urS0tLGxUUxM7MqVKxUVFYKCgtbW1i0tLXfv3gUAWFpaDhs2jLX9L1+++Pv779ix49OnT13Lz549+/fff8vKyhKJRAKBwHphZWWlnZ0dhUIxNjb29PSMiYk5ceIEDoczNzfftGkTrLNt2zY7OzsVFZW7d+9++PBh2rRpe/fupdPp6enp165dCw8Pv3LlCoPB8PDwmDNnTrf2T506deLEiVGjRgkKCvb4z4kMEeihHumpyspKf39/Hx+fb1W4evXq/v37eXl58/PzGQyGkZHRhw8fWlpa9PT0GhsbYZ0jR47k5+cDAJ4+fRoeHg4AqKurg6fodLqBgUFtbW1hYeGyZcvYfoWzs/OePXtGjhzZrbyoqOjKlSuLFy+eOnXqxYsXWS+8efOmoqLikydPtm7dWl9fv3XrVhKJdPfu3YiICOYzeFFRUWtrKwypvLx8+vTpy5YtW7FixbVr14qKiv7999/o6OjQ0FAnJyfW9ouKivbt22dtba2kpPTs2bPv/R2RIQfdjSI95eLi4uvry5rCmHh5eWk0mqysrI6OTnp6OpFIdHd3BwBkZWXFxsayvURSUlJNTa21tdXa2jo5OZlKpRKJRHFx8cTERDqdzsvL27Xy3bt3W1tbFy1aBPNvVzgcbuvWrebm5mVlZXp6emvXru1WwdzcfMmSJRYWFnv27Glra1NWVhYREQEAGBoavn79+oe/PSMjo6WlZdWqVQAAERER1thwONzJkyelpaXj4uKOHTs2a9asH7aJDBkojSI98vz589jY2Obm5jNnzmRkZDg6Oj5//rxbHWtr6xEjRvj6+srIyKxcuZL5eCskJMT2rWg3bW1tYmJikyZNAgDcvn2btcK2bdv4+fmNjIwqKytbWlrmzZtnZGQETykqKpaUlAAAaDRae3s767UyMjJpaWnx8fH29vYkEonZofT582fmS14eHh54N8psAY/Hwx58CQkJBQUFEon0reAVFRVLS0ulpaXb29vZBoAMYSiNIj2ira1dXV0NP1taWh46dKixsfHt27dd3xIWFBQoKSl5eHj8/fffhw8ffv/+fWZm5qhRo+7cuXPr1q0rV64AACQkJNLS0qZMmRITEzNu3DgAwMiRI9PS0mpqarS0tMrKyqSlpaWkpAoLC7vd7gEAXr16BVfSuXHjRk5Ojp6eHvPUxo0bzc3Ns7Ozk5OTfXx8SktL3d3dr127xqwQFBSUnZ395csXNTU1WVlZVVXVFStWiImJ5efnBwYGnjx5EgBgYGBw4MCBhISE1NRUTU1NAICWlpaDgwOZTD5w4AAOh3N0dJSQkMDhcHv37u0W2+7dux0dHfX09B48eBAWFtZ3f3hkEMChFZ6Qn7V37147O7vOzs6///775s2bzPJ79+6dP3+eh4dn586d6urqmZmZ/v7+bW1t69atMzIy8vX1dXR0pFKpXl5eeDze0tKyubl59erVFArF09Ozra0tMDDw7du3p06damtrs7CwWLly5bcCePLkSWlpKXzEZqJQKNnZ2VJSUlJSUlQqdd++ffv372eepdPpGRkZeDxeXV0dh8MBAPLy8igUiqqqKg8PT1FRkbS0NJFIzMrKIhAIEyZMaGhogFm+tLSUTqfLyspiGJadnd3e3j516lQymfzo0SNm45KSkjNnzmxsbMzNzZ0yZQp8XYD8PlAaRXrv5s2bVlZWXGo8JydnzZo1zENtbe3AwMCeX15SUiIjI9P3YQEAAPj8+fPVq1eZh7Kystz7OyC/PpRGEQRBOIIGPCEIgnAEpVEEQRCOoDSKIAjCETTgCekXVCq4cgU8eADKywGGAUlJYGQEVq0Cw4cPdGQIwinUxYRwX3Y2WLAAlJQAQUGgrAxwOJCTA5qawLhx4M4doK4+0PEhCEfQQz3CZbW1wMgIlJaCfftAbS1ISQEvXoDaWnDwIKioAPPmgfLygQ4RQTiC0ijCZb6+oKoKuLsDLy/AXLSJSATu7sDTE9TVgT17BjI8BOEYeqhHuAnDgJgYaG4GFRXg61p5/0Mmg7FjAR4PGhoAy9RPDmVkZLx7905XV3fixIndTj1//vzDhw8mJibi4uK9br+pqSkuLk5KSmr27NndTlVVVT1+/FhOTk5DQ6PX7SODCLobRbipsBDU1QFlZTY5FAAwciTQ0ACtrSA7u8+/+ebNm2vXrk1JSWE9FRISsnbtWrheX699/vx5+fLlXZeOZsrIyFi+fPmFCxc4aR8ZRFAaRbipqgoAAKSlv1kBnoLVEGRwQmkU4Sa4nwfPt8fVwWd5tJ0cMpihNIpwE9yV6Ov69mx8+QIAAKNG9VM8CMIFKI0i3DRlCuDhAdnZgMFgcxbDwLt3AI8Hysr9HhmC9Bk0iwnhpuHDgb4+ePgQ3LsHzMy6n01MBOXlYNYswLUFOm/cuJGVldWt8M2bN33Vfn5+vre3d7fCoqKivmofGRRQGkW4zM0NJCaCTZuAmhqQkvpfeXU1cHEBAAAPD+59eXR0dHR0NPfaLygoYF0JH/ndoId6hMsMDYGnJ/j4Eaiqgn/+ATExICYG+PgAFRVQUAC2bwemptz78vDw8HYWq1ev7qv2TU1Nm1jcunWrr9pHBgV0N4pwn68vUFQEPj7A1/d/hbKy4OhR0HcZjS0CgUAkErsV4vF9dvdAIBBGjBjRrZCfn7+v2kcGBZRGkX5hawtsbcHHjwBuyTluHPjjj4GOCUH6BnqoR/pFQgJYuhQkJgI9PaCnB54/B0uXgm9sXj9UUSiUzs7OgY4C6XvobhTpFx8+gIgIICr632FGBoiIADNmDGhMP62kpOTs2bPw8xc44vVnrFixwsPDQ1tbu1s5jUZraWkZ1YPBs76+vi0tLfCzmprasmXLfjYGhBtQGkWQnhIVFbW2toafmR84l5aWdvfu3a7bQX+LhYUFnU4HAJw/f764uLivAkA4hNIoMjRZWVnJycnNYHfD6+DgYGBgMHny5J9tU1BQEC7a9Pr168mTJ3t4eEyYMKFrBSqV6ubm9vbtWysrqxUrVmRnZ+/fv59CoVhZWTGHBwQGBuro6Kipqb19+zY1NXXWrFlubm51dXWFhYXh4eFpaWkBAQEYhu3YsWPatGndAlBVVQUAdHR0PH78+OnTpz8bP8IlKI0OeteuXbOysmLtj/6lweUZcTjufYOampqamhrbU5MnTw4PD3/8+HGvF2E6fPiwkJBQamqqpaVl1/I7d+5UVlYmJCR8+fJFQkJCWVk5MjJy0qRJxsbGMjIysM7r168nTpyopqZWUVGRlpbm5OS0du3ajx8/7t+/v76+ft26dY8fP25vb583b15BQQGO3Z8oIiJi7ty5o9kumoUMBNTFNDCSkpIWLFhgZmYGAGAwGNHR0fr6+o6Ojr1oytfXl0KhsJYXFBRkZmb2pIXExEQzMzMLCwsYTFRUlK6urrOzcy+C+Sbu582ea25uDgsLu3jx4qtXr3pxeXFx8fv376OiokJDQysrK7uemj59enZ29saNG1tbW4uLi0ePHq2ioiIgIGBtbf348eMftpyRkUGhULZs2eLm5kahUBoaGthWO3ny5ObNm3sROcIlKI0OjKKioo0bN9bX1wMAGAxGRUWFg4NDY2Pjt+q3tbVVVFQwD5ubm5uamrpWaG5uZjAYAAAqlUqlUtvb2+/du5ecnEwmk2GFxsZGttkWBuPq6gr/T9vR0VFVVWVvb/+dYAa7iRMnbt26FcOwLVu29GLZ8uPHj/Pw8NDpdEdHx6lTp3Y9NWHChMzMTBMTEwsLCyEhIWYerKurGzlyJPyMx+NpNBoAgPnVOBwO/tsJCQkpKCiQSCQSiVReXs620yk5OXnMmDGysrI/GzbCPeihfmA4ODgwuwh4eHicnJyePHnyrcpJSUkuLi5KSko6Ojrbtm3buHFjfn4+Ho8fP358cHAwrGNiYhIaGionJ3fmzBkqlaqlpRUUFCQgIJCZmRkcHGxra0ulUquqqpycnNasWdOtfUdHx8LCQviZSCQ6OTklJSVx4Uf/Qjw9PcPCwl6+fHnlypWVK1f2/MKGhoZbt26Vl5eLiIi4u7s7Ojoy/wkAALGxsVlZWTQaTUxMbMyYMWpqaps2bZKXl4+MjExKSoI3pOrq6sHBwTU1NTdu3IBP+goKCv/+++/YsWOdnJw6Ojp2794tIyNTUVHh5eXFGsC///7r5ubG4c9H+hZKo4PAixcvjI2Njx49SiAQ4N4YMOcaGhq+fPmS7SWGhoaLFi2aNGnSX3/9FR8f/+XLl6CgoC9fvqxYsYI1jQ6AgX7GFxQUPHDgwNq1a93d3RcuXCgoKNjDC8lkMoFAAAB4e3uPHTu229lZs2Z1dHTQaLRt27YBAK5cufLo0SMymfz06dNRo0Z5enrKyclpaWnJysrSaLTr16+XlJQAAGbMmBEaGkomk/F4fHx8fGJiYktLi5mZGYVCye6yL4CQkJC8vLy9vf3MmTP75I+A9BWURgeBDRs2uLu7Kysr+/n5YRgmLy8PyxUUFHoy6qWkpKSlpQXeNA3YSMOBzpusVq9eHRgYmJqaeujQoX379vXwqoiIiE+fPikoKDg7O/Py8m7cuLHrWWFh4YULFzIP8Xj83LlzmYdaWlrww/z58+EH0a8DabsOJjU2NoYfysrKLl68yCyXk5ObMmUKfIWN/FJQGh0EhIWFz507l5qa6u7ufubMGV9f387OThwOl5aWZm9vD+sMHz68pqZGTk7u06dPcKc2Xl5eOFRbUVFRUFDw4MGDzHdwCAAAh8MFBATo6OgcPXr0r7/+Yvakf0dNTQ0c3Xns2DFeXl4AgIqKCvciHDduXGBgIPfaR/oK6mIaGN7e3osWLSopKdHU1KyoqHBycnJ2dk5JSdHU1Hz+/Lnp/1/06NChQzNnzrS3t1+3bp28vLy1tbWurq6enp6pqenUqVNHjBiBw+EcHBxcXFwsLS0bGxvh0hiWlpbBwcFr166dNWuWhoaGnp6esbHx4cOHWYPx8vJasmRJUVGRpqZmVVWVg4PDxo0bnz17pqmpObQ3jp0+fTp8a7xz586e1Pf09CSTyQsWLGDeMCIIQBss/5pOnjzZ7WmxD2VlZXXtFdHW1l61ahWXvut/Tp8Grq7AxQWcOgUAAFu2gIAA4O8PBnrgTnl5uby8fGtr6+PHj/X09L5TMz09XVNTk4eHJysrqxdD95EhDD3U/4rWr1/PvcbHjRtna2vLPBQTE+PedzHdIBLPSEub8PPDPuaj/Pyx0tKORKLtD67jOikpqZ07d3p7e2/ZsiUtLQ12H7G1ZcsWBoOxefNmlEORblAa/RVxdUqSiIgI2ymSXFXb3p78+bMKlQoPP1MoyZ8/L6bT+zkMtnbs2BEaGpqRkXHhwgUHBwe2da5du/bkyRNxcfFdu3b1c3jIrw+9G0V+d/z8/H5+fgAALy8v5myFrtra2jw8PAAABw4cYI6iRxAmlEaRgZSVldXW1jbQUQAbGxtdXd2amhrfruvzf3Xo0KHS0tI///zTzs6u/2NDfn0ojQ5W2dnZ/v7+aWlprKdevnzp7++fn5/fD2FQqdQdO3bo6OhYW1szp0L9EOzYxOFwW7Zs+fTpE2uFurq6vLy8njRVUFBgbW09a9asbdu2wUmWvePv708gEE6cOFFQUNC1vKys7OjRo7BCH+4+ggwl6D+LwSolJWXr1q0PHz5kPRUXF7d161a2GbbP3b9/f8KECU+ePLGysnJ1df1WNWbe7GGzL168iIqK6knNs2fPenh4JCcnV1dX/9SKTcXFxV0XFvnzzz/Xrl1Lo9G2b9/etdr27dtbW1uXL1+uq6vb88aR3wpKowhHFi5c6OrqysPDg8PhBAQEWCuUlZXp6ur6+/vDQxKJpKen123vzA0bNsC94+/cubN///7U1NQ9e/ZcvXrVxsYGAHD69GkDAwNdXd1uWyXT6fSdO3e+evXqxIkTjY2NGIb1fE4nACA0NDQuLq5rCXz1GRMTc+zYMVjy4sULEonEz89/8OBBto0EBQXp6+svWLCg66xN5HeD0ijCqdraWkNDQ2dnZ7Y7tsfFxamoqGzZsgUAQKVSPT09Y2NjFy1aBABgPj5XV1dTqVQAQEtLS11dnba29sqVK21tbW/cuFFYWHj+/PmEhISbN292Wx3u6NGj9fX1ycnJw4YNmzRpUklJCYdTXZkd8d7e3nQ6HQ5vwjDMzc2t2/LM0OPHj0NCQmJiYnbt2rVo0SK0z9JvC6VRhFNiYmIPHz4kkUhse2AsLCzy8vLg3SiZTJ4yZQpzR+Ly8vIfNp6dnU0mk21tbV1cXCZPntz17eft27c3bdrEw8Nz4sQJPB6voaHRbY5We3u7lZXVjBkz4Dz3N2/ezJkzx9jYePny5c3NzbDOhQsX4PZKlZWVCxcu/OuvvwQEBFpaWrS1tX19fdPS0vj4+B49esR2nNPt27ft7e1HjBgxffp0CQmJjIyMHv7FkCEGpVGEI+Xl5XDlU1VVVbheUTdjxoxJTEy0srICAAgKCnatIyIiAj/w8vLCvNba2gpLCAQCzJhSUlKTJk2CS3A+ePCg64jayspKSUnJ3NxcIpEoJCQ0ceLEbgHk5+eXlpY+f/4cvkOwt7c/efLk/fv3FRQUAgICYB0ymQxXVu3o6IBLfMJlSkpKSk6fPg0A8Pf3f/ToUXx8fLeuJ2YA8PO4ceO6LgiL/FbQ8PvB7fbt26yLPPVP5xKUm5u7c+dODQ2NtLQ0Ly+vsrKydevWxcfHMysEBQU9e/YM3qkJCAhISEgoKirCHidm5jU1NfXx8blz505JSYmCggIAQEdHx9bWtry8PDAwcMyYMUuXLpWQkIALrDBbHjlyZEtLS3h4+MuXL6urq8+cOUMikbrGpqSkpK6urqKisnnzZgcHh7KyMiUlJQDA7NmzAwMD4Rex0tPTExUVhRt/EgiEpKSkpKQkcXFx1nWsYQDwc3Nzs7CwMId/TGSQQml0cMvIyMjJyelWyMm4n59laGj46tWrgoKC8ePHjxgxoqOjY9asWV0rODo6zpkz59KlS9nZ2REREXV1dXQ6Hd5UEgiEa9eujRo1Sl5e3sDAgEAgiIqKwsSkqamZkpLCYDAIBMKlS5c+f/5MpVJlZWWrqqpiYmJgyyIiIsePHw8ICEhKStq8eXN6ejoPz//775lAIAQHB9fX10+dOtXGxkZISKi2tlZMTOzDhw/jx4+HdYhEIsyYzMf8wsLC9vZ2PB6Pw+FwOJyTk9OcOXPY/vYZM2bEx8fDVwSZmZlwvznkN4TS6ODm4+Pj7u7erXD37t09X0CTc7y8vPAuDwDAw8PTbT4lDocjEokPHjwAAFRVVY0ePbqxsREm+itXrlhaWsLcx8xrfHx88EPXLdukpaWZn5lr/ZmYmJw7d666ujojIyMkJISHh0dTU/PJkyfDhw+HFVJSUnx9fUVERGCKP3jwoJmZmYaGRmpq6u3bt0NCQgAABgYGixYtIpPJZDK5o6PD0dHx/PnzDAaDSCTy8/OTyeS5c+cqKirKyMhERUXBxfGYli9ffv36dQsLi9LS0l27dqEJTr8vDBmc4CpNBw8eZD31zz//AAAuX77c/1F109ra6ufnB8chDR8+3M3Nrbm5uaGhgVnIz88PC3vXfmdn58ePH2k0GjzcvXs3g8HoWqGqqio3N7ezsxMeNjc3FxUV0el0DMOamppaW1sxDGtsbMzPz/f394d9X7y8vC4uLnl5eS0tLd7e3sOGDQMACAgIeHt7nzp1KvCr4OBg2GZZWVmv40eGBpRGB6uepNE3b95cvHixW2bpHwwGg0QiMccJmZubFxcXd61QVla2atUqOCBfSkoqLCyM8zgrKip6cVVCQoKioiKM09DQMDs7u+vZwsJCa2treFZcXNzJySkkJCQkJOTixYscRosMGSiNDlY/TKOXLl2aPXs2AEBDQ+PZs2f9GVtaWhpzvyB1dfWnT59+q+arV6+mT58Oa2pra6ekpPRnnHl5eXCPawDA5MmTY2Njv1UzMTGRudD9nDlzMjMz+zNO5BeH0uhg1ZM0yrwfxOFw1tbWJSUlXA+rvPz45s3wHnPs2LGhoaHMB+pv6ezsDAsLk5CQAADg8fhVq1ZVVVVxO8z6+no3NzfY0yUsLOzn59fe3v79S+h0elBQEFyelYeHx9HRsaamhttxIoMCSqODVQ/fjba2tjJf8A0fPtzb27utrY0rAbW3Y/7+mJBQnbo6kUjctGkTmUzu+dXwRSTsXxIUFPT29qZSqdwIE2ZtmA1h1q6uru755fX19XDMPwBg1KhR/v7+8E0r8jtDaXSwKi0tjY6OLiwsZD2Vl5cXHR1dVlbGLPn48SMcAA8A0NHUxCIj+ziamzexSZMwADAAsEWLKj9+7F0zcLkmGKecnByJROrbMBMTE5nDkgwMDN69e9e7dnJzc5nbMU2ZMuXevXt9GycyuKA0+ht59OjR1KlTL86ahQGA6etjGRl90Oj795ix8X8JdMoUrC8SysOHD5WVlZl9PllZWZy32bWnSFpaOiwsjPM2o6OjJ02axOxDKyoq4rxNZDBCafT30tHR0XnmDCYqigGAEQjYhg3Yly9s6nV2YpmZWFwcdu8elpODse1Dr6vDNm3CCAQMAGzUKMzfH+u7x1sajRYUFAS3cefl5XV0dKytre1dU6zjlvrwtUZ7e7u/v7+QkBAAgPVVBplMzs3NZRt5XV1dbm4uXJgKGexQGv0tNTRgbm4YkYgBgAkLY35+GLODpbMTO34cGzPmvxtM+D9paezs2f9dTqNhQUH/5WIeHszREettjvu+urq6TZs2wW3m4IvIjo6Onl/OYDDCwsLGjBkDO9lWrVpVWVnJjTgrKiocHR3hos5jx44NCgqCHWvh4eEAAG9vb9ZLDhw4AAAICQnhRjxIP0Np9DeWk4PNm/dfolRXx2CGWrPmv7x56BB2/z527x7m64tJSGAAYC4uGIZh7e2YsvJ/V82fj71/z+0w379/P3/+fPjsrKamlpyc3JOrug6l0tLSevHiBbfjfP36NXOYl6am5vPnz1Ea/U2gNPrbS0jAFBWxXbswDMPCwv5LqQ0N/69OVRUmJ4cBgEVFYRiGubpicnJYX/f/fF90dPTEiROZLyI/frsXixsD+3sI3v/CZZ+UlJTCwsJQGv0doDSKYFh7O0ahYBj2323m69ds6jx4gAGAzZyJYRjW3Iz9aJQlN1AoFD8/PzhlE84ibWpq6lqh69xTDqeZcqK5udnDwyM+Ph7djf4mUBpFviovxwDAZGXZn2UwMAkJDI/HfmY0KDeUl5ezvdmMjo6WkZH51tzTAYHS6G8CrfCEfAV34vw60qg7HA4oK4PERFBQADQ1+zOubiQlJcPDw9evX7958+Y3b96sWbMmICAAw7D09HQAgIaGhr+/f7fF+gZWXl7e7du3uxW+f/9+QIJBuAGlUeSrpiYAAPjO2sPwFMvqxQNi5syZr1+/vnTpkpubGxxYKioq6uXl5erqCnv2fx03bty4cePGQEeBcBFKo8hXw4YBAACV+s0K8BQ/f/+Ek5SUVF9fv2TJkm9VwOFwq1evtrCwEBERweFwRUVFcPympqZmUlIS/NwVnLXZdRuSb8EwLCEhoa2tzdLSksNfAQCws7Nj3aXq8uXLcDovMgSgNIp8NW4cAACw20/pP3C3ki4rKHMJhmHW1tYdHR0tLS3fSaMQTJc4HI6ZN+Hoetaaly5dIhKJK1eu/H6DHR0dixcvxjAMj8f3SRodP348XGqrq2fPnnHeMvKLQGkU+UpBAQgLg/R00NAAvm429z+fP4O8PCAtDb4uU889OBwuMjIyOzsbbsvMqqWl5eDBg58+fVqyZMmCBQsAABiGOTk5OTg4jB8/vqam5tSpUwQCwd7eXlRUFG4MxcvLe+7cOX5+/pycnIMHDz5+/PjKlSsjR450c3ODy5Qw8fDwREdHv3z58lt70yNIN2hnUOQrAgGsXg3a28H/36b4P/v3AwYDrFvX72GxERgYWF9f7+PjIy8v39DQAADA4XAuLi62trZ5eXlfvny5dOlSVFQU3F7p3bt3796909DQUFJSWrBgwYYNG/Ly8jZv3uzu7q6qqrphw4aB/jXIoIfSKNLFP/+AsWPBoUNgzx5AofxX2NICduwAQUHgjz/A9u0DGt9/tLW1k5KSbt26NXbs2NevX8NCFRUVQ0PDb+2KKiQkJCwsLCYmNn78+MTERCqV6uHhcfv27ZSUlH4MHBmaUBpFuhAVBYmJQFYW+PgAMTGgrg7U1ICYGDh6FKiqgocPgaDgQIcIAAD6+vrJyckNDQ12dnawywgOI21ra2P2IOFwuI6ODraX8/HxLVq0iEQi3b59u7y8vN/CRoYqlEaR/09BAWRng0uXgLU1EBICIiLA1haQSODtW/B1cHs/SEhIiIyMLC8vDw4OLi4uPn36dNez0T1bXh8AABTmSURBVNHRycnJcAdQOHEew7Dw8PCu8+gVFBRCQ0MjIyOvXr0KS2RkZG7dunX//n0LC4s7d+5cu3YtKioqIiKC9dvj4uLu3LlTWloaHBz8rVzcE/Ly8s7Oztra2qynNDQ0nJ2dmXtAIYMa6mJCWBCJYOVK8KMebW6TlJTcunUrAIBIJGZnZ3c9JSsrm5CQMHr06NDQUOaGzFQqNTk5uba2FgCAw+GOHz9++fLltra2GzdutLW1AQDWr18vJCREoVDExcUfPnwYHR1NJpPNzMwoFEp9fT2zcTiXdOLEic7Ozhz+BG1tbbY5FAAwb968efPmcdg+8ovAsR0agiC/lNevX2tpabE91dnZycPDQyAQ4G3j+/fvlZSUFBUVc3Jyetj448ePAwICmIempqYODg6cx4z8PtDdKDIIfCuHAgDgfQB8N9o7+vr6+vr6vb4cQdC7UQThyJ07d3bv3h0WFkan03/2WgcHh+TkZNZyBoNBYY6U+C4Mw2AA4eHhvQgA6RMojSJI74WFhZ09e9bMzOzly5eenp4/ezmVSu3s7GQtLygo2LlzZ09aCA8PDwoKMjMzS0lJ2bVr188GgPQJ9FA/ZJ07dw4+8KqpqX2ro+NbDA0Nb9++DVf27J38/HzmfdayZctYZ7gPDcXFxRoaGtOmTfvy5QvbOfIMBuPYsWPv3r3T0dHZsGFDVVXV8ePHv3z5smjRInNzc1jn+vXrcnJyGhoaBQUFjx8/nj9/vpubW1FR0fr16w8dOtTQ0BAQENDW1ubs7Dx16tRvBVBbW3vu3Dmu/2CEHZRGh6aGhoYDBw54eHgAAHh5eX/28oqKCgaDwVoeERHR0dGxfPnyH7YQExPz7t07OJcc7uo+JK1bt05HRyc/P7+iouLixYusFe7fv//gwYOgoCC4wrSZmZm3t/fUqVNtbGyEvy6m9eLFCzwer6GhUVlZmZiYuGbNmnnz5r18+dLNzY1IJJqbmwcHBwsICCxZsiQ3N7fbHxMGkJeX960AkH4wZP/7/s1VVFQoKys7Ojp+qwKVSj19+nRZWZmlpaW+vn5JScmFCxcwDFuzZo2srCysExgYaGNjM3r06KdPnzIYDD4+vuDgYCKRWFxc7OnpmZWVdfXq1REjRri6urLebFZUVFhZWS1cuJCLPxIAwNLFxHmP00+Jjo42NjZevXr1sWPHjh49GhQU1K2CgoJCaWnp+fPnnZ2dq6ur6XS6hYUFAGDdunX37t1j2yYfH5+4uPjIkSMnTZqUmZlZXV0NBxLU1tZ++vSJuaUzdOfOHRMTk5UrVx4/fvzff/89e/Ysd34o8j3o3ejQVF1dnZeXt2DBguXLl+fm5rJWCAgIyMnJWbZs2YgRI5qamubPnz979mwDAwNTU1PmIMrLly83NjYCAFJTU1++fPnHH39ISUlpaWmZm5uXlZUtXbrU0tJy5MiR9vb2bAMIDAycP3/+P//8M4S7PsLCwlxcXHR1da9fvw7Xuu9m4sSJaWlp48ePnzt3Lh8fHxzBCgBoa2tjjnjF4diMO4QlfHx8U6ZMIZFIJBKpsbGxWw6FATg7O+vp6V2/fh1u/YT0P5RGhyYDA4OnT5/GxMTY2tquWLGCtYKCgsLr16/z8/OVlZVTUlK0tLSMjIzmzJmjp6f35MkTtm2KiYmNGTNGRkZGVVU1ISEBj8eHhoa+ffuWbV/zmTNnbt26FRsbm5eXx3qPNmTMnz9///79CQkJ3t7eRkZGdDrdx8ena4WXL1/evHlz2LBhBAJBREREUVHRx8cnKioqODjYxsYG1lFQUIiKioqNjT1+/DgskZGRefLkSWRk5Pjx4+FUgvv37586dYptAAcOHIABoPH8AwU91A9NOBwO7s8+d+7cVatWsVawsLCQk5M7duxYUlKSra0t800og8FgPhHjcDi2b0jhqRkzZri5uQEAvLy8WCswH/Nnz5798eNHjn/QL2rfvn337t1LT0/X0tLat28fDofLz8/vWkFaWjo9PZ1Go92/fx8AEBkZGRER8fnz56ioKDk5OTs7uylTpujq6goICJSVlQUEBBQWFgIAtLS0Dh8+DN9QP3jwICIiIj8/f/bs2Z2dnZWVlczGeXl5fX19YQDa2tr79u3r55+PQGgW09AUHh6enp5ubGxMIpF4eXl3796dnJzctWsoMTERh8Pl5OQ8fPjwypUrWlpafn5+PDw827ZtS01NnTFjRkpKiqurq6Kioo6Ozo4dO6ysrNzc3AICAlJTUzdt2jRhwgR9ff0TJ04ICAg0NTWZmJh0/XYMw5YvXz5v3rzRo0d7eHiEhITo6Ohw6ZfS6XQikcjLy0uj0QAAOTk5ysrKSkpK3eaP9pvvTLjiXG1tbdcZVhMmTOg6/woZKCiNDk0MBiMyMhLmlMWLF1dXV/v4+HR9uH758uXdu3f5+fnt7e3FxcXLy8svXbqEYdiKFSvGjx8fHBy8Zs0aMpl89uzZESNG6Onp0en0adOmUanUM2fOCAgIODo6FhYWkkgkDMMsLCyUlZVhFoN4eHhqampIJFJbW5uZmZmqqir3fimNRuPj4yMSie3t7QCA7OxsFRUVZWXlrKws7n0pgnSF0ujv4unTp6xbWfSVR48e7d69m3lobm4On/f7AUqjyIBD70Z/F9zLoeBrjxb32keQXxnqqUcQBOEISqPI4NbP4+0RhBVKo0j/qampSUxMLPnOHs7ftn379pqamh9W+35Wzc3NTU5OhnMKEKSvoDSK9JO4uLi5c+fGx8cvXrz48uXLP3t5SkoKcwpQV69evephC3///ffGjRvj4uI0NDSKi4t/NgAE+RbUxYT0k4kTJz548EBSUtLS0tLDw2Mlu01KkpKSiouLp02bpqysTKVS7969297ebmxsPGrUKFjh2bNnSkpKIiIixcXFLS0twsLCN27cAADAaQJkMhmOcmc7/mTBggWHDx8mEAgEAiEyMnLHjh1c/LXI7wTdjSL9REFBQVJSEgBAJpNFRUVZK5BIJB8fHwKB8P79ewaDYWRkVFBQ0NzcrKurSyaTYZ2DBw/COVGPHj26du0aAIC5AkBbW5uenl5TUxMAoKysjLV9fX19AoEAAGhqamIbAIL0DrobRfpVc3PzP//8w3buDR6Pp9PpkydP1tHRycjI4OXlhQv9ZWdnx8bGsm1NWloabq5JIBCSkpIIBAIejwcAwGTK1ps3b5KSkg4dOtQ3vwdBUBpF+lNDQ8PSpUs3bNgwc+ZM1rNLliwRFBT09fWdMGHCqlWrmLPy4XaeP2ycQqGMHTtWW1s7MDCQSCQyGAyYUrt6+/btunXrIiIiBAQEOP85CAKhh3qkn2RkZOjo6CxcuNDAwKCkpKS5uTkhIaFrhcLCQhUVFS8vr9TUVFVV1ZycnJycnIqKiujoaOaWcxISEm/fvq2vr4+Li4MlMNtiGKajo/PhwwdFRcWVK1dqa2uz5tALFy4sW7bM39+fn5+/J53+CNJD6G4U6Sfx8fEqKirJycnJyckCAgK+vr4nTpwwMjJiVigsLDx//jyBQAgKChIUFIyMjDxy5AiVSj127JicnNy8efMEBAS8vLy8vLyePXu2bNkyOIsfvuWk0Wj5+fkhISFeXl50Ot3a2lpFRaVbAA8ePFBTUztz5gwAQFdX19XVtR9/PTKUoTn1yIC5devW4sWLe315bm7utm3bYNc8ZGVldeTIkYkTJwIAXr161TVRzpkzB70PRbgEpVFk8GlsbPTz8zt+/DiNRhMWFt6xYwcfH9/evXubmpqIRKKTk9O+ffuG6iZ6yK8IQ5DBo7OzMywsTFxcHACAx+NXrVpVXV0NT1VUVDg6OsJXopKSkkFBQZ2dnQMbLfKbQGkUGTSSkpKYS5fq6+tnZGSw1nn9+jVziWhNTc3nz5/3f5zI7walUWQQ+PTpE3MrFGlp6bCwsO9UZjAYJBJp/PjxAAAcDmdtbV1aWtpvoSK/IfRuFPmltba2Hjly5NChQ1QqVUBAYPv27e7u7sOGDfvhhRQK5fDhw724EEF+2kDncQRhj8FghIWFwY35en1T+VO3sQjSOyiNIr8iuK0eTH9aWlocvuLs+lLVwMDg3bt3fRUngmAojSK/mrKyslWrVsEFQyUlJcPCwhgMBufNwi5+MTEx8LWLv6amhvNmEQRDaRThtujoaFNT0zt37rCeunDhgqmp6YsXL+AhhULx8/MTFBQEAPDz87u5uTU1NfVtMPX19W5ubkQiEQAgIiLi5+fX3t4OT8XHxy9dujQmJob1qmvXri1dupQZJ4J0g+bUI9xVXFwcFxfHdpnk3NzcuLi4yspKAEBMTIyioqK7u3tLS4u5uXlOTo6fn9+IESP6NhiYOjMzM01NTRsaGtzd3VVVVeH0/A8fPpBIpLy8PNarMjMzSSTSp0+f+jYYZMhAaRQZYJ2dnfr6+hYWFiUlJerq6k+ePImJiYETOrlEXl7+7t27UVFRf/zxR35+vpmZ2fLly7n3dciQh9IoMsAIBIKysvLo0aP9/f1TU1O5uhF0V5aWlrm5uf7+/kJCQpMnT+6fL0WGJJRGkYG3f//+jx8/bt68Ga5O3294eXk3b96cl5e3c+fO/vxeZIhBC+UhA2/kyJED+O1jx44dwG9HhgCURpH+sG/fPtaNQ5jbKP06jh07Fh4e3q2wqqpqQIJBBguURpH+ICkpOWnSpG6FOTk5zL3qfhGCgoISEhLdCpubm2trawckHmRQQGkU6Q9//fXX5s2buxXu3LnzyJEjAxLPtzg6Om7fvr1boaen58GDBwckHmRQQF1MCIIgHEFpFEEQhCMojSIIgnAEpVEEQRCOoDSKIAjCEbT6PcJdnZ2ddDqdl5eXdYZSR0dHR0cHkUiE+9ANLCqV2tLSIiAgwM/P3+0UhUKhUChCQkJwaSgE6QalUQRBEI4M/F0AgiDIoIbSKNIHMAxrbm7u3bXXr18vLy/nMAAGg9HS0tLDmr37iqioqIqKit5d+x29jgf5daA0inAqKytLRUXFxMRES0vr48ePP3s5iURim0bLy8tv3brVkxZSU1OVlJRMTEx0dHSYTWEYdufOHT09PRMTE1iSnp6uqak5c+ZMuGbzz8Z56dIltis319fXR0dH96SFt2/frlixQlhYGB7W1dXNnz9/5syZWlpaWVlZPxsP8utAaRThlLu7u4eHx7Nnz7Zt2+bt7c22TmNjY0ZGRmtrKzysqKjIy8vr7OxkVqitraVQKAAACoVSW1vb1taWnJwcHx//8eNHeL9WUlJSVFTEtvFt27YdOXLk6dOnq1evPnDgACzE4XDNzc27d++mUqmwxMnJ6ejRoykpKVpaWkePHmXbVGtra1FREZ1Oh4cNDQ1lZWVdK1AoFHiWTqe3trZ2dHS8ffs2Nja2oaEBxllfXw/X82dVVVXl4eHBx8cHDw8ePDh79uyUlJSDBw86OzuzvQQZHAZ2DxNkCNDT00tNTcUw7PPnz5MnT2atkJmZOXnyZGdnZw8PDwzDvLy8jI2NN2zYoKOj09LSsmjRolevXtnZ2cXGxmIYFhsba2dnV1RUZGpqOm3aNDc3t7a2Nnt7exsbm6VLl7q6urK2r6amlp+fj2FYTk6OpqZm11Pv37/X19fHMKy5uVlMTIwZz/Tp01nbeffunby8/Jo1a2Cc+/bt09fXX7NmjYGBQVtb2+LFi1NSUtavX3/79m0Mw+Lj41euXFlcXDx37lwlJSVHR8fGxkYvL6/58+dbWVmtX7/+W38ucXFx+EFdXT03NxfDMAaDISIiQqVSf/y3Rn5JaGkShFOurq729vaGhoY5OTnwjrKboqKiCRMm+Pj4iIqK1tfXX716tbCwEI/Hb9++/erVq2zbnDRp0pIlS/Lz8/38/PLz858+fXrlyhUMw4yNjQ8fPtxtTNKmTZtsbW319PTS09PZBgAAqK+vFxERgZ9HjRpVV1fHWicnJ0dBQeHUqVOCgoJ1dXWhoaEFBQUEAmHjxo3Xr19n26yMjIyDg8Pz589PnDhRVVV16dKlhw8f4vF4PT29+vr6UaNGfefvVldXByvgcDhhYeH6+nq08ukghdIowqklS5bMnDnz06dPDAZjx44drBXMzc0/fvxoYGCwZMkSGxubsWPHwoGiMjIyPem0qays5OXlffjwIQBgx44dHR0d3SrY2dkZGRmVl5fPnz/f39+fbSOioqJ1dXUYhuFwuJqaGnFxcdY6ixcvzsvL09LSWr9+vZGRkbS0NBzrKisr25P97CoqKnA4XEhICABgxYoVrHF2Iy4uXltbKy4uzmAwGhoaREVFf/gVyK8JvRtFOEWn0yUkJNTV1QMCAlatWtXZ2dkt6dBotK1bt7548eLcuXMTJkyoqKiora3FMCwpKUldXR3WERQUhCn1/fv3sGTYsGGwI0hBQYFGo7m4uLi5uW3cuJF1u1AajSYlJaWmpnby5MnVq1ezDXL48OHKyspwE9DLly+bmJgwGIympqZu1Xx8fJ4+fXrixAkZGZnS0lK4HOqzZ8+mTp3KbAcWfvjwAZbw8fHBkkmTJuHx+F27dvn5+e3bt49tpu7K2Nj40qVLAICYmBhtbW1eXt7v10d+WSiNIpxKTEz8888/9fX1VVVVHRwcmpubjY2Nu1a4f//+jBkzDAwMPD09+fn5AwMDbWxsDA0N5eXlzc3NJSUlhw0b5uDgcOHChQULFpDJZDExMQDAvHnzCgsLFyxYICgouHfvXnNzc2Nj4z179rAGEB0draamNnfu3Llz59rY2DDLPTw8li1blp+fr6mpWVtbe+7cuSNHjkybNq26unrr1q2lpaV6enpd24mMjJw+fbqhoeHmzZsFBASOHj1qZmY2Z84cKSkpCwsLERERIpG4Zs2akydPLliwoLCwUEBAAACgp6f34cMHMzMzDMMOHDhgYmJiZmbGtsvoxo0bmpqaDAZDU1MzISFh586dJSUl06ZNCwgIOHPmTF/8UyADA81iQvre6dOnXVxcuNR4WVlZ15WVJ0+evHfv3t41derUKVdX1z6Kqzsymbxt2zbm4ZgxY/bv38+l70IGFkqjyCBDo9E+f/7MPBw2bJiUlFSvm+LeNPmOjo6cnBzm4bBhw+Tl5bn0XcjAQmkUQRCEI+jdKIIgCEdQGkUQBOEISqMIgiAcQWkUQRCEIyiNIgiCcOT/AJXaP/5j2rGFAAABMXpUWHRyZGtpdFBLTCByZGtpdCAyMDIyLjA5LjEAAHice79v7T0GIOBlgABGIOYBYm4gbmBkU1IA0iy6LEBSwdlQASRrwAwkQv18zEEcQxDhaAzR+8Hekk1JA8hghukwIlmHMck6TAjr4IDoYILo8CfCH2g6iPAHI1gHIyNEhwcRdqDpIN0OIsIKTQcRYYWmw5RkHWaEdXCDkhkbAwM7AwMHAyOTBhMjswITJwMTFzBWNZiYWRVYuRlEGMRnQdMjGPDo+yyzv/2zzg7E+Tb9rl2+ScM+EFta/66dNO+C/SD21+l39+WZNIDVyOjf3QcUtwexgXr33/1ZB1a/cb+Pfe7RPrD4jfhn9uarIWzRHi6HbRchZq7LvLfvyaf7YDMPii+zP6LwYD9UzYF3ryHmiwEAOh9vY0j9wJQAAAEtelRYdE1PTCByZGtpdCAyMDIyLjA5LjEAAHicfZPBboMwDIbvPIVfAGSbBPCxQNVOU0Ha2N6h972/ZqclSaWUhENsffmDfycV2PiaP+9/EAfPVQWAB5+IwG+LiNUNbAHj+fKxwLSdxj0zrT/L9g3EQKR7dL6yp2297RmCCahhEUblGnaCYYFhpJ2sHDau5UGztYIeXRFsd9CyNb0HnYJ1lDxQ9LA+QUsfKHYGxmLqg2p6uGq2FxmCIpEvKw7KUc65rsiJctxQ56I7VAYJlQzFOPfwp3fyBqVwOEvfPUlP5Wq00Soazw/HD0XyvMwv3X/ch3Fd5nQfbHJqu4V9aq6FQ2qhhZIaxTrb1A4VApc8J9ufeRtiSh4qDD5zijTuMjvIJDmvJf9zi/dXoOvqH2t0oHJkl6dxAAAA9npUWHRTTUlMRVMgcmRraXQgMjAyMi4wOS4xAAB4nE2PvW7DMAyEXyWjDVCCKFN/DDJlydR0D4KiQ7YWLlp3y8NHih1SgwTed9RRvJyu5+NwOI/1Og6X03VsZ61ecncfjLcYKYOzPmCGvUHrS/FgKqBStbM0+dV39NKAm9xc43oNBvtuogYSlQj7lp7iUwdcZR22zXI2lZJrNmKgZoqk+nT76HMURhjhc5m/33/nH3a2lW/zcqutsPubv/6X2wcioxpBeGCveBI88aSYBBNTl67hHBR7wZ6j4iK4cOpCnKY4zmood1wUR8GRsVs1CU+M3aZZeL4/ACtLkNz5cIAvAAAAAElFTkSuQmCC" }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solute.draw_molecule('IBA_solute')" ] }, { "cell_type": "markdown", "source": [ "Because we didn't name any of the atom solutes, they default to 'solute_X' where X is their relative position in the IBA `Residue`. These names aren't very informative, so let's change them with the `rename_solutes` kwarg. In particular, let's rename the ketone O, alcohol O, and alcohol H." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": "", "image/png": "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" }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rename_solutes = {'solute_4': 'ketone_O', 'solute_5': 'alcohol_O', 'solute_11': 'alcohol_H'}\n", "\n", "solute = Solute.from_atoms(\n", " iba,\n", " {'IBA': iba, 'H2O': H2O},\n", " solute_name='IBA_solute',\n", " rename_solutes=rename_solutes,\n", ")\n", "\n", "solute.draw_molecule('IBA_solute')" ] }, { "cell_type": "markdown", "source": [ "Much better! Now we can see that the functional groups of interest have been renamed. These names will propagate through all downstream analysis and make our future self much happier." ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "### The atom_solutes Dictionary\n", "\n", "Note that we still have not called `run`, so no analysis has been performed. Before we do that, let's have a look at the `atom_solutes` property which contains the solutes for each atom." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 24, "outputs": [ { "data": { "text/plain": "{'solute_0': ,\n 'solute_1': ,\n 'solute_2': ,\n 'solute_3': ,\n 'ketone_O': ,\n 'alcohol_O': ,\n 'solute_6': ,\n 'solute_7': ,\n 'solute_8': ,\n 'solute_9': ,\n 'solute_10': ,\n 'alcohol_H': }" }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solute.atom_solutes" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "We can see that it is a list of solutes for each atom, now with the nice names we've given. Let's take a closer look at the ketone." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 25, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ketone solvents are: {'IBA': , 'H2O': }\n", "ketone solute name is: ketone_O\n", "ketone solute: atom_solutes {'ketone_O': }\n" ] } ], "source": [ "ketone = solute.atom_solutes['ketone_O']\n", "print('ketone solvents are:', ketone.solvents)\n", "print('ketone solute name is:', ketone.solute_name)\n", "print('ketone solute: atom_solutes', ketone.atom_solutes)\n", "assert ketone is ketone.atom_solutes['ketone_O']" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "We can see that the ketone_O solute has inherited it's name and solvents from the parent. In it's `atom_solutes` dictionary it contains only itself. The only difference between a single-atom solute and a multi-atom solute is whether they contain themself or other solutes in the `atom_solutes` dictionary.\n", "\n", "A `Solute` with 12 atoms is a bit unwieldy, so let's make a smaller `Solute` from just the ketone and alcohol. We will use the `from_solute_list` constructor to create a new `Solute`." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "solute_list = [solute.atom_solutes[name] for name in ['ketone_O', 'alcohol_O', 'alcohol_H']]\n", "\n", "solute = solute.from_solute_list(\n", " solute_list,\n", " {'IBA': iba, 'H2O': H2O},\n", ")" ] }, { "cell_type": "markdown", "source": [ "### Analysis of Multi Atom Solutes\n", "\n", "Now we are ready to `run`! This works exactly as before." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "solute.run()" ] }, { "cell_type": "markdown", "source": [ "Just like in the single atom case, we have coordination, pairing, and speciation information available." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 28, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Coordination Dictionary: {'H2O': 1.145, 'IBA': 0.7324999999999999}\n", "Pairing Dictionary: {'H2O': 0.6725000000000001, 'IBA': 0.525}\n" ] }, { "data": { "text/plain": " H2O IBA count\n0 1 0 0.1425\n1 2 0 0.1425\n2 1 1 0.1175\n3 0 1 0.1050\n4 0 2 0.1050\n5 2 1 0.0900\n6 3 0 0.0675\n7 1 2 0.0625\n8 3 1 0.0175\n9 4 0 0.0175", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
H2OIBAcount
0100.1425
1200.1425
2110.1175
3010.1050
4020.1050
5210.0900
6300.0675
7120.0625
8310.0175
9400.0175
\n
" }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print('Coordination Dictionary:', solute.coordination.coordination_numbers)\n", "print('Pairing Dictionary: ', solute.pairing.solvent_pairing)\n", "solute.speciation.speciation_fraction.head(10)" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Not only that, but we also have this information available for each solute in `atom_solutes`." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Coordination Dictionary: {'H2O': 0.615, 'IBA': 0.3375}\n", "Pairing Dictionary: {'H2O': 0.49, 'IBA': 0.32}\n" ] }, { "data": { "text/plain": " H2O IBA count\n0 1 0 0.3075\n1 0 1 0.2425\n2 2 0 0.1175\n3 1 1 0.0575\n4 0 2 0.0150\n5 1 2 0.0025\n6 2 1 0.0025\n7 3 0 0.0025", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
H2OIBAcount
0100.3075
1010.2425
2200.1175
3110.0575
4020.0150
5120.0025
6210.0025
7300.0025
\n
" }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ketone = solute.atom_solutes['ketone_O']\n", "print('Coordination Dictionary:', ketone.coordination.coordination_numbers)\n", "print('Pairing Dictionary: ', ketone.pairing.solvent_pairing)\n", "ketone.speciation.speciation_fraction.head(10)" ] }, { "cell_type": "markdown", "source": [ "To sum up, `solvation_analysis` can effectively handle both single atom and multi atom solutes. It does this by breaking down multi atom solutes into single atom solutes then reassembling the results. All the analysis in other tutorials apply equally well to multi atom solutes." ], "metadata": { "collapsed": false } } ], "metadata": { "kernelspec": { "display_name": "solvation_analysis", "language": "python", "name": "solvation_analysis" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.12" } }, "nbformat": 4, "nbformat_minor": 1 }