{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Missing Contacts\n", "You might find that some contacts that you were **expecting** to be found by ``mdciao`` don't actually show up in ``mdciao``'s results. Several input parameters control the contact reporting of ``mdciao``, and it might not be obvious which one of them (if any) is actually *hiding* your contact. The logic behind these parameters, and their default values, is fairly straightforward, and we illustrate it here.\n", "\n", "\n", "If you want to run this notebook on your own, please download and extract the data from [here](http://proteinformatics.org/mdciao/mdciao_example.zip) first. You can download it:\n", "\n", "* using the browser \n", "* using the terminal with \n", " ```wget http://proteinformatics.org/mdciao/mdciao_example.zip; unzip mdciao_example.zip```\n", "* using mdciao's own method [mdciao.examples.fetch_example_data](http://proteinformatics.uni-leipzig.de/mdciao/api/generated/generated/mdciao.examples.fetch_example_data.html?highlight=fetch)\n", "\n", "If you want to take a 3D-look at this data, you can do it [here](http://proteinformatics.charite.de/html/mdsrvdev.html?load=file://_Guille/gs-b2ar.ngl)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ctc_cutoff_Ang\n", "This is the most obvious parameter that controls the contact computation. It appears virtually in all methods (CLI or API) that compute contact frequencies. Whenever it has a default value, it is **3.5 Angstrom**.\n", "\n", "
\n", " \n", "Note \n", " \n", "Please see the *note of caution* on the use of hard cutoffs in the [main page of the docs](https://proteinformatics.uni-leipzig.de/mdciao/index.html).\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import mdciao, os\n", "if not os.path.exists(\"mdciao_example\"):\n", " mdciao.examples.fetch_example_data()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import mdtraj as md\n", "traj = md.load(\"mdciao_example/traj.xtc\",top=\"mdciao_example/prot.pdb\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we individually call [mdciao.cli.residue_neighborhoods](https://proteinformatics.uni-leipzig.de/mdciao/api/generated/generated/mdciao.cli.residue_neighborhoods.html) with two ``ctc_cutoff_Ang`` values, 3.0 and 3.5 Angstrom. This will generate two frequency reports which we will later compare with [mdciao.cli.compare](https://proteinformatics.uni-leipzig.de/mdciao/api/generated/generated/mdciao.cli.compare.html). Please refer to those methods if their function calls aren't entirely clear to you.\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "These interactions are not shared:\n", "L230, R385\n", "Their cumulative ctc freq is 0.33. \n", "Created files\n", "freq_comparison.pdf\n", "freq_comparison.xlsx\n" ] }, { "data": { "image/png": "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WeVs6U3xK7gsC+WrADSIkg9gcaHVUEREREQkpLAD5ElAOeB3kQQzSwBuAT51zu0JkqfiA+Y/Zit/O/C9c25lIddTRERERAQ4iD7IZnZz8M+WwetVZpYCpDjnks2sHrAceNo59zSAc26+mb0LjDCzcsBKoDtwMqFg2Dn3i5kNB/qY2XZgHj6IvgS4/rDeoYiIiIjIQTiYXurZFwh5JXhNBi7CD6grS85W6TuBPwPPADWA74D2zrl52fI9AewAHgKOA34Efu+cm3wQdRQREREROSyWc2a1kkmzWEiERqtLhEarS4SuCxKh64KEJSYmpjvnqmRP1xkiEidbt25l06ZN7N27N95VKbUOHDjURUClNPr555/jXYVSq3z58tSqVYvq1avHuyoiBUIBskgc7N69m40bN1KnTh0qVapEzhkOpSBkZGTosxXAL0qgVsPC4Zxj165drF27lgoVKlCxYsV4V0nksBX2LBYiEkVKSgq1a9emcuXKCuBEpEQzMypXrkytWrVISUmJd3VECoQCZJE42L17N1WrVo13NURECkxiYiK7d++OdzVECoQCZJE4yMjI0ONeESlVEhISyMjIiHc1RAqEAmSROFHXChEpTXRNk9JEAbKIiIiISIgCZBERERGREAXIIiIiIiIhCpBFREREREIUIIuIyBGtb9++JCYm0rhxY7799tt4V0dEigEFyCIicsSaPXs2b7/9Nh988AF33nknXbt2jXeVRKQYUIAsIiJHrNTUVGrVqsXpp5/O6aefrnl8RQQArVQgUsyc1HtKXI+/atA1hbLfjz76iBUrVvDwww8Xyv4Lyscff8yKFSvo2bPnIe/jjTfeYPDgwaxevZrKlSuzefPmPNNj1bVrV0aPHs1DDz3E888/f8j1Kw4++eQThg4dyg8//MCWLVuoXbs2bdq0oW/fvjRt2jTf8jNmzOCyyy7LkV69evWD+lwvvPBCMjIyOP7440lMTGTGjBkxl33ggQdYtWoVkydPBmDMmDHceeedueZ3zsW871itXbuWwYMHM2fOHL777jt27drFypUrOemkk/Isd9FFF5GcnBx125VXXsnUqVMBGD58OG+88Qbz58+nTBm1qcmRQwGyiBSJjz76iM8//7xEBMjTpk075AB5/fr13Hvvvdx22228/vrrVKxYMc/0WO3atYv3338fgHfeeYfBgweX6NUYt2zZwllnnUX37t2pVasWa9asYciQIZx//vnMnz+fevXqxbSfESNGcPbZZ2f+/2A/k/Lly7N3714ADhw4QIsWLWIqt3z5cl599VW++eabzLRWrVpRtWpVGjRowMiRI4tk4Yxly5bx3nvv0bJlSy644AI+/fTTmMq98sorbNu2LUvaf/7zHx5++GE6dOiQmXbvvfcyePBg3nzzzTyDf5HSpuReXUVEiqGlS5eyf/9+OnbsSNu2bfNNj9VHH33Etm3buOqqq/jXv/7F1KlTufbaawuy6kXq1ltv5dZbb82Sds4559CsWTMmTpwY8xepU089lXPPPfeQ6/Haa6+xcOFCrr76av75z3+yfPlyGjZsmG+5ESNGcOaZZ2YJzps2bcqECRO4/vrr+fDDDxkyZMgh1ytWF154IRs3bgTg9ddfjzlAjtZK/9prr1G+fPksv5dKlSpxxx138NxzzylAliOKnpeISIH57rvvuOGGGzj66KOpVKkSjRs3ZuDAgXTu3Jk333yTdevWYWaYWY5HwLmVPZxjDx48OHP7XXfdRYMGDXKUu+SSS7jkkksy84wdO5Z169aRkJBAQkJCjjJTp07l/PPPp2rVqhx11FHceOON/Pjjj5nlL730UgCuuOIKEhISuOuuu3JNPxhjx46lZs2ajB49mkqVKjF+/Pgcefr3709CQgJLly7luuuuo3r16tSvX58BAwZw4MCBLHknTJhAs2bNqFKlCs2bN2fy5MlZPot4OProowEoV65ckRwvLS2Np556it/+9rfcd999ACxYsCDfcnv27GH8+PHcdtttObZdc801DB8+nKFDh/Laa68VeJ2zK6huD7t27eLvf/871113HUcddVSWbbfeeiuLFy/O0louUtqpBVlECsSsWbO46KKLaNiwIcOHD6dOnTosXbqUBQsW8NRTT5GSksLs2bOZNGkSABUqVIip7OEce/78+Qf1Hp544glSUlKYM2cOH374YY56Tp06lQ4dOnDxxRfzzjvvsGPHDvr160e7du2YO3cuTzzxBGeddRY9evTgpZdeokWLFtSuXRsg1/RYrF+/nmnTptGlSxdq166d2UK5ZcsWatasmSP/zTffTKdOnXjooYeYMmUK/fv3p27dunTu3BmAzz77jI4dO3LdddcxZMgQNm/ezMMPP8zu3btp1KhRnnVxzrF///5862xmlC1bNt98+/fvZ//+/axevZrHH3+c4447jltuuSXfchF33HEHmzZtokaNGlxxxRU8++yz/OY3v4mp7NNPP83WrVsZMmQI5cuXB3yAfOONN+ZZbubMmaSlpXHBBRdE3f7AAw+wZMkS7rvvPurVq8cVV1yRZXtBf4YF4YMPPmD79u106tQpx7bmzZtTrVo1pk6dynnnnVck9RGJNwXIIlIgevXqxdFHH83MmTOpXLkyQJbWyNq1a1O+fPmoj8PzK3uoxz7YGQkaNGiQZz2TkpKoX78+U6ZMyezreu6559KkSROGDRvG888/z6mnngpAkyZNsuwjt/RYjB8/ngMHDnD77bcD0LFjRyZMmMB7771Ht27dcuTv2bNnZjB82WWXMX36dCZMmJCZ1r9/f5o2bcrEiRMz+8medtpptGrVKt8AOTk5OerguOwuvPBCvvjii3zznXfeecydOxeAhg0b8tlnn3HMMcfkW6569er07NmTCy+8kGrVqjF//nwGDRpE27ZtmTNnTr77WLJkCX/5y1+4//77adSoEc45EhMTY/pSNnPmTMyMM844I9c8I0aMYMaMGdxyyy2sXbuWKlWqZG5LTk7m4osvzvc47dq1O6hBg4dj7NixHHPMMVx11VU5tpUpU4YzzjiDmTNnFkldRIoDBcgictjS09P5+uuvefTRRzMD1KIoWxDlY7Vz507mzZtH7969swwEO/nkkznvvPP497//XWjHHj9+PI0aNaJNmzaAD3pPOOEExo0bFzVAvvrqq7P8v1mzZpmt6fv372fu3Lk89thjWQaRnXXWWZx88sn51qVly5YxBUqJiYn55gE/88O2bdtYuXIlw4YNo3379iQnJ+c7C0OLFi2yDKhr164dF1xwAW3atOGll15iwIABeZZ/+OGHSUxMpG/fvoBvrW3atCkLFy7Mt87r16+nWrVqma3O0UybNo1FixbRp0+fLMEx+M9w9uzZ+R4n1s/wcK1fv57PP/+chx56KNdBjrVr12bJkiVFUh+R4kABsogcti1btnDgwAHq1KlTpGULovzBHMc5x/HHH59j23HHHcesWbMK5bizZ89m8eLFPProo6SlpWWm33DDDbz88sssWbKEU045JUuZ7H1IK1SowO7duwHYtGkT+/bti9rCGkvLbdWqVWnevHm++WKdwaFJkyYAtG7dmvbt29OgQQOGDBnCK6+8ElP5sLPOOotT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BcgiIiIiIiEKkEVEREREQhQgi4iIiIiEKEAWEREREQlRgCwiIke0vn37kpiYSOPGjfn222/jXR0RKQYUIIuIyBFr9uzZvP3223zwwQfceeeddO3aNd5VEpFiQAGyiIgcsVJTU6lVqxann346p59+OhkZGfGukogUAwnxroCIZNOvepyPv7VQdvvRRx+xYsUKHn744ULZf0H5+OOPWbFiBT179jzkfbzxxhsMHjyY1atXU7lyZTZv3pxneqy6du3K6NGjeeihh3j++ecPuX7FwSeffMLQoUP54Ycf2LJlC7Vr16ZNmzb07duXpk2bxrSPNWvW8Mgjj/D555/jnOPSSy9l2LBh/OY3v4m5HhdeeCEZGRkcf/zxJCYmMmPGjJjLPvDAA6xatYrJkycDMGbMGO68885c8zvnYt73wVizZg09e/bks88+wznHZZddxogRI/L8HC666CKSk5OjbrvyyiuZOnUqAMOHD+eNN95g/vz5lCmjNjU5clhh/cEWtcqVK7tffvkl3tWQYiAjI4MaNWrEuxp5+uGHH2jSpEn0jaU0QO7cuTOff/45a9euLZT9R5ORkYGZHVSZu+66i2nTprF69epDOub69es5+eSTue2227j77rupWLEiZ599dq7psdq1axcnnngi27Zt45hjjuGnn34iIaHktnFMmDCBefPm0bp1a2rVqsWaNWsYMmQIa9asYf78+dSrVy/P8unp6Zx11llUqFCBp59+GjOjb9++pKen89///pcqVapkye+ci/p57d+/nxYtWrBw4UKqVKnC9u3bYzpnli9fTpMmTfjmm28yf4+LFy+mdevWNGjQgJEjR+bYz7nnnpvvfg9Weno6Z555JhUqVOCZZ57BzHjyySdJT09nwYIFOT6HiMWLF7Nt27Ysaf/5z394+OGHefnll7nvvvsAf96dfPLJDBw4MM/gPyLPa1sxkZaWVqL/dqRgJSYmpjvncvyh6AwRESlAS5cuZf/+/XTs2JG2bdvmmx6rjz76iG3btnHVVVfxr3/9i6lTp3LttdcWZNWL1K233sqtt96aJe2cc86hWbNmTJw4Md8nDa+//jorVqxg8eLFNGzYEIDTTz+dU089lVGjRsX8BOC1115j4cKFXH311fzzn/9k+fLlmfvLy4gRIzjzzDOzfMlp2rQpEyZM4Prrr+fDDz9kyJAhMdXhcLz22mus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RUktyCIiIiIiIQqQRURERERCFCCLiIiIiIQoQBYRERERCVGALCIiIiISogBZRERERCREAbKIiIiISIgCZBERERGREAXIIiIiIiIhCpBFREREREIUIIuIiIiIhChAFhEREREJUYAsIiIiIhKSEO8KiIgciU57JrnIjvX9k+2K7FgiIqWBWpBFREREREIUIIuIiIiIhChAFhEREREJUYAsIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZEQBcgiIiIiIiEKkEVEREREQhQgi4iIiIiEKEAWEREREQlRgCwiIiIiEqIAWUREREQkRAGyiIiIiEiIAmQRERERkRAFyCIiIiIiIQqQRURERERCFCCLiIiIiIQoQBYRERERCVGALCIiIiISogBZRERERCREAbKIiIiISIgCZBERERGREAXIIiIiIiIhCpBFREREREJiCpDNrK6ZvW9mW81sm5l9YGa/iaHc2WY2ysz+Z2bpZvaTmb1lZidHybvKzFyUn98ewvsSERERETkkCfllMLPKwBfAHqAT4IBngOlmdoZzbmcexW8FmgEvAouAE4GngDlm1tw5tyZb/k+AftnSfozhfYiIiIiIFIh8A2SgC1AfaOycWwZgZguApUA3YFgeZQc751LCCWb2NbAy2G/fbPk3Oedmxlh3EREREZECF0sXiw7AzEhwDOCcWwl8DVyfV8HswXGQthpIwbcmi4iIiIgUK7EEyM2A76OkLwKaHuwBzawJcAzwQ5TN1wV9lfeY2Uz1PxYRERGRohZLgHwUsCVKeipQ82AOZmYJwF/xLch/y7Z5MvAAcCXwR2A38KGZ3X4wxxARERERORyxTvPmoqTZIRzvL8B5wO3OuSxBt3PuAefcWOfcv51z7wOXAnOAgbntzMy6mtkcM5uzd+9evvrqK6ZMmcLEiROZM2cOI0eOZO3atSQlJZGRkUG3bt0A6NKlCwDdunUjIyODpKQk1q5dy8iRI5kzZw4TJ05kypQpfPXVV4wePZply5YxcOBAduzYQY8ePQC45557srz27t2blJQUhg8fzqJFi3jrrbeYNm0a06ZNO4SPqfh76623WLRoEcOHDyclJYXevXsDOT+XHj16sGPHDgYOHMiyZcsYPXp0kfyeunfvDsDtt9+e5bVnz56kpKQwZMgQFi5cyJtvvsmnn37Kp59+yptvvsnChQsZMmQIKSkp9OzZM+o+unfvzo4dO+jfvz9Lly5l1KhRfPnll0yaNIl3332XWbNm8eKLL7JmzRr69OlDRkYGnTt3LuxfSRZF+Z46duwIQOfOncnIyKBPnz6sWbOGF198kVmzZvHuu+8yadIkvvzyS0aNGsXSpUvp379/kf2eivrci/UaUdSK+rpX3K4RY8aMKfJzrzT+PZWG99S1a9ciPfdK499TaXpPuTHnosW+oQxmG4GPnHPdsqW/AvzOOVc7zx38mn8g8BjQyTk3LsYyfwIGAyc4537OK2/lypXdL7/8Estui9xpzyQXyXFWVbytSI4DsKPXuiI71sHKyMigRo0a8a5GVCf1nlIkx1k16JoiOU5xl5aWRkJCLGORi15RXRcAvn+yXZEdq7gqztcFKVrF+bogRS8xMTHdOVcle3osZ8gifD/k7JoCi2M5uJk9AfQGHow1OI4UDV7zjuJFRERERApILF0sJgHnmln9SIKZnQScH2zLk5k9iJ83+Qnn3EuxVizor/w74Cfn3IZYy4mIiIiIHI5YAuTXgFXAx2Z2vZl1AD4G1gCvRjKZWT0zyzCzvqG0W4ERwFTgCzM7N/TTNJTvD2Y2wczuMLOLg3LTgZb4bhkiIiIiIkUi3y4WzrmdZnYJMBwYh+/2MA3o4ZzbEcpqQFmyBt3tg/T2wU9YMnBR8O+V+KnfhuJnzUgHZgPtnXOfHNxbEhERERE5dDH1UnfO/QTclE+eVWSb2cI51xnoHMP+ZwKXxFIXEREREZHCpGGcIqVRv+pFeKytRXcskVJKM9yIFC+xzoMsIiIiInJEUIAsIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZEQBcgiIiIiIiEKkEVEREREQhQgi4iIiIiEKEAWEREREQlRgCwiIiIiEqIAWUREREQkRAGyiIiIiEiIAmQRERERkRAFyCIiIiIiIQqQRURERERCFCCLiIiIiIQoQBYRERERCVGALCIiIiISogBZRERERCREAbKIiIiISIgCZBERERGREAXIIiIiIiIhCpBFREREREIUIIuIiIiIhChAFhEREREJSYh3BURERETEO+2Z5CI5zvdPtiuS45RUakEWEREREQlRgCwiIiIiEqIAWUREREQkRAGyiIiIiEiIAmQRERERkRAFyCIiIiIiIQqQRURERERCFCCLiIiIiIQoQBYRERERCVGALCIiIiISogBZRERERCREAbKIiIiISIgCZBERERGREAXIIiIiIiIhCpBFREREREIUIIuIiIiIhChAFhEREREJUYAsIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZGQhFgymVldYDhwOWDA50AP59xPMZStCAwAbgdqAPOBx5xzX2bLVwZ4DOgGHAf8CDztnJsY43sREZEoqj53YpEcZ0evdUVyHBGRwpZvC7KZVQa+AE4FOgEdgUbAdDOrEsMx/gZ0AfoC1wI/A5+YWfNs+QYA/YC/AFcBM4G/m9nVsbwREREREZGCEEsLchegPtDYObcMwMwWAEvxrb3DcitoZmcCtwF3OefeCNKSgUXA00CHIO0YoBcwyDn3XFB8upk1BAYB/zz4tyYiIiIicvBi6YPcAZgZCY4BnHMrga+B62Mouw94N1Q2A5gAXGlmFYLkK4HywPhs5ccDp5vZyTHUU0RERETksMUSIDcDvo+SvghoGkPZlc659ChlywMNQ/n2AMui5COG44iIiIiIFIhYulgcBWyJkp4K1DyMspHtkdc055zLJ18WZtYV6Br81yUmJu7Kpz6lmvnfZ0aRHKx/YpEcRg5N0Z4LViSHkUNXZOeDrgvFng0uwmuDFGuJOhciKkVLjGkWCyB74Ap+Nov8WIxlY82XtVLOjQJGxVCPI4KZzXHOnR3vekj86VyQMJ0PEqFzQSJ0LuQtli4WW4jegluT6K3DYal5lI1sj7zWNLPsAXH2fCIiIiIihSqWAHkRvo9wdk2BxTGUPTmYKi572b382ud4EVABaBAlHzEcR0RERESkQMQSIE8CzjWz+pEEMzsJOD/Yll/ZcsDvQmUTgFuAT51ze4LkqfiA+Y/Zyt8OfB/MmiH5U3cTidC5IGE6HyRC54JE6FzIg+UcF5ctg18M5DtgF/Akvq/wACAROMM5tyPIVw9Yjl/97ulQ+Qn4adweBVYC3fELhpznnJsXyjcI6AE8DszDB9HdgOudc5ML4L2KiIiIiOQr30F6zrmdZnYJfqnpcfiBc9PwS03vCGU1oCw5W6XvBP4MPINfavo7oH04OA48AewAHuLXpaZ/r+BYRERERIpSvi3IIiIiIiJHklj6IIuIiIiIHDEUIIuIiIiIhChAFhEREREJUYAsIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZEQBcgiIiIiIiH/D/JIj+d5Wc8iAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from io import StringIO\n", "from contextlib import redirect_stdout\n", "b = StringIO()\n", "with redirect_stdout(b):\n", " for ctc_cutoff_Ang in [3, 3.5]:\n", " mdciao.cli.residue_neighborhoods(\"L394\",traj, \n", " short_AA_names=True,\n", " ctc_cutoff_Ang=ctc_cutoff_Ang,\n", " figures=False, \n", " fragment_names=None,\n", " no_disk=False)\n", "mdciao.cli.compare({\n", " \"ctc_cutoff_Ang = 3.5 AA\" : \"neighborhood.LEU394@3.5_Ang.dat\", \n", " \"ctc_cutoff_Ang = 3.0 AA\" : \"neighborhood.LEU394@3.0_Ang.dat\",\n", " },\n", " anchor=\"L394\",\n", " title=\"Cutoff comparison\");\n", "b.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " \n", "Note \n", " \n", "We are hiding most outputs with the use of [redirect_stdout](https://docs.python.org/3/library/contextlib.html).\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We observe that the smaller the cutoff, the fewer contacts get reported. In this case ``L230`` and ``R385`` never approach ``L394`` at distances smaller than 3.0 Angstrom during in the entire simulation, hence they don't get reported. As for ``K270``, the frequency doesn't change very much, because it's a salt-bridge that's really either formed at very close distance or broken at higher distances, as can be seen in this [time-trace figure](https://proteinformatics.uni-leipzig.de/mdciao/_images/banner.png). Also notice that, at 3.5 Angstrom, the sum over bars, $\\Sigma$, is higher, since the height of the bars has increased." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ctc_control\n", "Even when using the same ``ctc_cutoff_Ang``, there's other ways of controlling what gets reported. ``ctc_control`` is one of them. This parameter controls **how many** residues get reported per neighborhood, since usually one is not interested in **all** residues but only the most frequent ones. \n", "\n", "### Controlling with integers\n", "One way to control this is to select only the first *n* frequent ones (*n* is an integer and is **5** by default). Here we do the comparison again:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "These interactions are not shared:\n", "I233, L230, R385\n", "Their cumulative ctc freq is 0.92. \n", "Created files\n", "freq_comparison.pdf\n", "freq_comparison.xlsx\n" ] }, { "data": { "image/png": "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RAGyiIiIiEiIAmQRERERkRD1TBAREYnSbOSscl3/2gfOLdf1ixzpVIMsIiJyBHn77bdJS0sr72IcstLcjtTU1DId3eTdd9+lZ8+eNG7cmKSkJI455hguv/xyvvjii7iXMXToUC644IKcz5MnT8bM8n2Vho0bNzJ06FC6du2aM7b4+vXri7Ws3r17Y2bce++9uaanpaXRvn37Un/apAJkERGRI8jbb7/NxIkTy7sYh6yybAfA9u3b6dSpE3/729+YM2cO48aNY9WqVXTp0oUNGzYUmv/rr7/m6aefZvTo0TnTOnfuTEpKCh06dGDRokV89NFHuV6lYe3atbz++uvUq1ePM844o9jLefXVV1mxYkXMeYMHD2bbtm28+OKLxV5+PNTEQkRERCq1rKysYj1uuKxcddVVXHXVVbmmde7cmdatW/Pmm29yxx13FJh/4sSJdOjQgZNOOilnWtu2bZk2bRoXXnghM2bMYMKECaVS9rBu3bqxdetWAJ577jnmzJlT5GVkZGQwYsQI0tLSuPrqq/PMr1GjBv379+fhhx/m+uuvP+Qy50c1yCIiIpXMihUruOSSS2jUqBEpKSm0bduW8ePHc8MNNzBlyhQ2bdpEQkICCQkJtGzZMq68xV1n2OzZsznttNNISUmhfv369OvXj6+++ipXmkjzhjVr1nDBBRdQp04dWrRowdixY3Nuqxe0HZH8n3/+OX369KFOnTpceeWVRSrD4aBBgwaAf9hFQbKysnjppZdiBpPnn38+aWlpPPTQQzz77LOlUs6wKlUOPay8++67adeuXZ4LhrArr7ySL774gkWLFh3y+vKjGmQREZFKZMmSJfTq1YtWrVrxyCOP0KRJE9auXcvKlSu55557SE9PZ+nSpcyYMQMgV81qQXmLu86I2bNn07dvX3r06MGrr77Krl27GDNmDN27d2fZsmU0adIk1zIvvfRSBgwYwLBhw5g1axapqakce+yxDBw4sNDtAOjXrx/XX389d911V07gVtQyFMQ5l+spbc65mOnMjKpVq8a1zAMHDnDgwAE2bNjAyJEjady4ca7gPpbFixeTkZGRb5OGoUOHsnr1aoYMGULTpk0555xzCtyO/BRlO4pr4cKFTJkyJd/mFREdO3akdu3azJ49m1NPPbVUyqIAWUREpBK5++67adCgAR9++CHJyckA9OzZM2d+w4YNSUxMpEuXLkXOW9x1AowePZoWLVowa9asnA5wXbp0oU2bNjz66KM88sgjudKPGDGCgQMHAnDWWWcxb948pk2bxsCBA2nZsmWB2wFw6623cttttx1SGQqyYMECzjrrrELTde/enfnz58e1zFNOOYVly5YB0KpVK9577z0aNWpUYJ7FixdjZrRv3z7fNBMnTmT+/PlcccUVbNy4kZo1a+bajh49epTodhTH/v37GTRoEHfeeSfHHXdcgWmrVKlC+/btWbx4camVRwGyiIhIJZGZmcmiRYu44447cgLVksobq6YxISEhrnXu3r2bTz/9lJEjR+YaHaJ58+aceuqpfPDBB3nynHfeebk+t2vXjuXLl8e9PRdddNEhl6EgnTp1yhWgOedijnxRq1atuJc5depUfvrpJ/773//y8MMPc/bZZ7Nw4UKaNWuWb57NmzdTu3ZtEhMT800zd+5cVq1axahRo3IFx5Ht+OSTTwotW1G2ozgefPBB9uzZwz333BNX+oYNG7J69epSK48CZBERkUpix44dHDx4kGOOOabE88aqMc3Ozo5rnTt27MA5xy9/+cs88xo3bsySJUvyTK9fv36uz0lJSezduzeeTQHIs67ilKEgKSkpdOzYMedzfgFyUYZUa9OmDeBrkvv06UOzZs0YP348Tz31VL559u7dW2AHxG3bttG/f386d+5MampqoduRn9IaGg7gm2++4c9//jPPPfccWVlZZGVl5czLysoiIyODWrVq5WriUaNGDfbs2VNqZVInPRERkUqiXr16VKlShU2bNpV43kiNafgV7zrr1auHmbFly5Y887Zs2ZLTIa0kRQd0JV2GBQsWUL169ZxXjRo1qFatWp5Xr169ilX+unXr0qpVK9auXVtgugYNGrBjx46Y85xzDBgwgMzMTF555ZWYAfyCBQtilruktiMe//3vf9m7dy/XXnst9erVy3kBPPzww9SrVy9PO/jt27dz1FFHlVqZVIMsIiJSSSQnJ3PaaafxyiuvcN9991GjRo08aZKSkmLWvBWWt1atWrmGESvKOmvWrEmnTp2YPn06o0ePzqkJ3LBhAx999BG33HJLkbc1v+3IT0mXoTSaWIRt3bqV//znP1xzzTUFpmvdujX79+9n48aNeWrx09LSmD17NlOnTqVFixYx8x8OTSw6duzIvHnz8kzv0aMH1157LTfeeCOtWrXKNW/dunV07ty51MqkAFlERCTK+vHnl+v6s7Ozi513woQJ9OzZk9NPP50RI0bQpEkT1q1bx4oVK3jsscdo06YN27dv56mnnqJTp05Ur16d448/Pq68xV0nwJgxY+jbty99+/Zl8ODB7N69m9TUVOrUqcPtt99e5O0saDvyU5JliL5gyC9AjsfFF1/MiSeeSPv27alduzarV68mLS2NhISEQsdA7tatG+BHEgkHyCtXrmTUqFGccsoptGrVKk+HthNOOIGkpKR8L3yK68033wTI6Wz4r3/9i4YNG9KwYUO6d+8O+FrrXr16MWnSJPr370/dunU588wzYy6vadOmeeZlZGSwevVq7rzzzhIrdzQFyCIiIpXIySefzPvvv8+YMWMYNmwYWVlZNG3alAEDBgBw44038vHHH3PvvfeSkZFB06ZN+frrr+PKW9x1gn908MyZMxk7dixXXXUViYmJdO/enfHjx3P00UcXeTsL2o78lHQZSkqXLl14/fXXeeSRR9i3bx/HHnssZ555JqNGjSqwgx5As2bN6Ny5M++88w79+vXLmb5s2TL27dvHxx9/TNeuXfPkW7duXaHLLo7LLrss1+chQ4YAuUfBiHT4LO7jomfNmkViYiIXX3zxIZW1IJbfuH0VTXJystu2bVt5F0OKIDs7m7p165Z3MaQIMjIyil1DIuVHx1r+vvzyy5yOUYeT7OzsUu0UJSXvUGqQD9XkyZMZNmwY3333XZFHL6mI+vTpw1FHHcXUqVMLTVvYMW5mmc65mtHT1UlPREREpAK77rrraNKkCU888UR5F6XULV++nHnz5jF69OhSXY8CZBEREZEKrGrVqkyaNOmIqD3esmULL7zwQp5OeyVN90pFREREKrguXbrk+1TByqR3795lsh7VIIuIiIiIhChAFhEREREJUYAsIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZEQBcgiIiIiIiEKkEVEREREQhQgi4iIiIiE6El6IiIi0cbUKd/13/tD+a5f5AinGmQREZEjyNtvv01aWlp5F+OQleZ2pKamkpBQfnWIvXv3xsy49957484zdOhQLrjggpzPkydPxszyfZWGjRs3MnToULp27UpycjJmxvr164u0jH/+859069aNlJQUateuzUknncR7772XMz8tLY327dtz8ODBEi59bgqQRUREjiBvv/02EydOLO9iHLLKsh3RXn31VVasWFGkPF9//TVPP/00o0ePzpnWuXNnUlJS6NChA4sWLeKjjz7K9SoNa9eu5fXXX6devXqcccYZRc7/9NNPc+GFF9KpUydmzJjBG2+8wWWXXUZmZmZOmsGDB7Nt2zZefPHFkix6HmpiISIiIpVaVlYWSUlJ5V2MQmVkZDBixAjS0tK4+uqr4843ceJEOnTowEknnZQzrW3btkybNo0LL7yQGTNmMGHChNIoci7dunVj69atADz33HPMmTMn7rzr169n+PDhPPTQQwwfPjxn+rnnnpsrXY0aNejfvz8PP/ww119/fYmUOxbVIIuIiFQyK1as4JJLLqFRo0akpKTQtm1bxo8fzw033MCUKVPYtGkTCQkJJCQk0LJly7jyFnedYbNnz+a0004jJSWF+vXr069fP7766qtcaSLNG9asWcMFF1xAnTp1aNGiBWPHjs25rV7QdkTyf/755/Tp04c6depw5ZVXFqkM5eXuu++mXbt2XHXVVXHnycrK4qWXXooZUJ9//vmkpaXx0EMP8eyzz5ZkUWOqUqX4YeWkSZOoUqUKgwcPLjTtlVdeyRdffMGiRYuKvb7CqAZZRESkElmyZAm9evWiVatWPPLIIzRp0oS1a9eycuVK7rnnHtLT01m6dCkzZswAyFWzWlDe4q4zYvbs2fTt25cePXrw6quvsmvXLsaMGUP37t1ZtmwZTZo0ybXMSy+9lAEDBjBs2DBmzZpFamoqxx57LAMHDix0OwD69evH9ddfz1133ZUTuBW1DAVxznHgwIFcn2MxM6pWrVro8hYuXMiUKVOK3Lxi8eLFZGRk5NukYejQoaxevZohQ4bQtGlTzjnnnFzzo7cjP/FuR3EtXLiQ1q1bM23aNMaOHcuGDRto1qwZI0aM4JZbbsmVtmPHjtSuXZvZs2dz6qmnlkp5FCCLiIhUInfffTcNGjTgww8/JDk5GYCePXvmzG/YsCGJiYl06dKlyHmLu06A0aNH06JFC2bNmpXTAa5Lly60adOGRx99lEceeSRX+hEjRjBw4EAAzjrrLObNm8e0adMYOHAgLVu2LHA7AG699VZuu+22QypDQRYsWMBZZ51VaLru3bszf/78AtPs37+fQYMGceedd3LcccfFXQbwAbKZ0b59+3zTTJw4kfnz53PFFVewceNGatasmTNvwYIF9OjRo9D1xLMdh2Lz5s1s3ryZu+66i7/85S+0bNmSN954g1tvvZXs7GyGDRuWk7ZKlSq0b9+exYsXl1p5FCCLiIhUEpmZmSxatIg77rgjJ1AtqbyxahoTEhLiWufu3bv59NNPGTlyZK7RIZo3b86pp57KBx98kCfPeeedl+tzu3btWL58edzbc9FFFx1yGQrSqVOnXAGacy7myBe1atUqdFkPPvgge/bs4Z577ilSGcAHlrVr1yYxMTHfNHPnzmXVqlWMGjUqV3AMfjs++eSTQtcTz3YcioMHD7Jz504mT55Mv379AH+RtX79esaNG8dtt92Wa/SNhg0bsnr16lIrjwJkERGRSmLHjh0cPHiQY445psTzxqoxzc7OjmudO3bswDnHL3/5yzzzGjduzJIlS/JMr1+/fq7PSUlJ7N27N55NAcizruKUoSApKSl07Ngx53N+AXJhQ6p98803/PnPf+a5554jKyuLrKysnHlZWVlkZGRQq1atfJs37N27t8AOiNu2baN///507tyZ1NTUQrcjP6U1NFxEgwYNWLNmDWeffXau6eeccw6zZ8/mu+++4+ijj86ZXqNGDfbs2VNq5VEnPRERkUqiXr16VKlShU2bNpV43kiNafgV7zrr1auHmbFly5Y887Zs2UKDBg2KXN7CRAd0JV2GBQsWUL169ZxXjRo1qFatWp5Xr169ClzOf//7X/bu3cu1115LvXr1cl4ADz/8MPXq1SuwDXiDBg3YsWNHzHnOOQYMGEBmZiavvPJKzAB+wYIFMctd1O04VO3atct3GyBvB8Dt27dz1FFHlVp5VIMsIiJSSSQnJ3PaaafxyiuvcN9991GjRo08aZKSkmLWvBWWt1atWrmGESvKOmvWrEmnTp2YPn06o0ePzqkN3bBhAx999FGeTljxyG878lPSZSipJhYdO3Zk3rx5eab36NGDa6+9lhtvvJFWrVrlm79169bs37+fjRs35qnFT0tLY/bs2UydOpUWLVrkux2HQxOLiy++mOeff553332XSy+9NGf6u+++yzHHHEPjxo1zpV+3bh2dO3cutfIoQBYREYk25sfyXX92drGzTpgwgZ49e3L66aczYsQImjRpwrp161ixYgWPPfYYbdq0Yfv27Tz11FN06tSJ6tWrc/zxx8eVt7jrBBgzZgx9+/alb9++DB48mN27d5OamkqdOnW4/fbbi7ydBW1HfkqyDNEXDPkFyIWpW7cuZ555Zsx5TZs2zXdeRLdu3QA/kkg4QF65ciWjRo3ilFNOoVWrVnk6tJ1wwgkkJSXle+FTXG+++SYAy5YtA+Bf//oXDRs2pGHDhnTv3h3wtda9evVi0qRJ9O/fH/Btznv06MGgQYP4/vvvadGiBW+++SZz5szhhRdeyLWOjIwMVq9ezZ133lli5Y4W1540s2OBNOBswID/A4Y7574pJN8YYHQ+s7Occ9VDadcDTWOku9g59494yikiInKkO/nkk3n//fcZM2YMw4YNIysri6ZNmzJgwAAAbrzxRj7++GPuvfdeMjIyaNq0KV9//XVceYu7TvCPT545cyZjx47lqquuIjExke7duzN+/PhcbUvjVdB25Keky3A4aNasGZ07d+add97J6dwGPkDdt28fH3/8MV27ds2Tb926dTRr1qzEy3PZZZfl+jxkyBAg9ygYkQ6f4cdFmxn/+Mc/GDVqFKNHj2bHjh20bt2al19+Oc8Yz7NmzSIxMZGLL764xMufU578xu0LFTgZWAFkAfcCDngASAbaO+d2F5D3GCC61X5NYDYwwzl3eSjteuA/wJio9F8552I3rglJTk5227ZtKyyZHEays7OpW7dueRdDiiAjI6NYNSRSvnSs5e/LL7+kTZs25V2MPLKzs0u9U5SUrOLWIJeEyZMnM2zYML777rsij15SEfXp04ejjjqKqVOnFpq2sGPczDKdczWjp8ezJ28CWgDHOefWBgv7N7AGGAQ8ml9G59xGYGNUQa4L1hvrIdrfO+dKb1A7ERERkUrmuuuuY8KECTzxxBOl2uzgcLB8+XLmzZvH559/XqrriWcUi77A4khwDOCcWwd8CFxYjHUOALYC7xYjr4iIiIiEVK1alUmTJh0RtcdbtmzhhRdeKLDjYkmIpwa5HfB2jOmrgMtiTM9X0OSiBzDRORerB8IFZpYJVAU+A8ar/bGIiIhIwbp06ZLvUwUrk969e5fJeuKpQa4PxGoDvB2oV8T1XResM1bzineAocC5wDXAXmCGmV2b38LM7A9mttTMlu7bt4+FCxcya9Yspk+fztKlS3nyySfZuHEjo0ePJjs7m0GDBgFw0003ATBo0CCys7MZPXo0Gzdu5Mknn2Tp0qVMnz6dWbNmsXDhQiZNmsTatWsZN24cu3btYvjw4QD8/ve/z/U+cuRI0tPTSUtLY9WqVbz88svMnTuXuXPn8vLLL7Nq1SrS0tJIT09n5MiRMZcxfPhwdu3axbhx41i7di2TJk2q1Nv01ltvsWTJEh5//HG+/fZbRo0aRXZ2ds6jRa+77joABg4cSHZ2NqNGjeLbb7/l8ccfZ8mSJbz22mvMnDmT999/n2eeeYY1a9aQmprKrl27uPnmmwG49tprc72PGDGC9PR0JkyYwMqVK3nxxReZM2cOc+bM4cUXX2TlypVMmDCB9PR0RowYEXMZN998M7t27SI1NZU1a9bwzDPP8P777zNz5kxee+21Sr1NleW7VxmPp8K2qaJ/90rrePr+++8BPxYtwLfffsv+/fvZsmULmZmZfP/99/z444/8+OOPfP/992RmZrJlyxb279/Pt99+mytv5H3Dhg0cOHCAzZs3s3fvXtLT09m5cycZGRls376d3bt3s3XrVvbt28fGjRtxzrFu3bpcy/jmm29wzrF582b27dtHeno6mZmZ7Nixgx9//JFdu3bx/fffk5WVxZYtWzh48GBOedavX5/rfdOmTWRnZ7N161b27NnD9u3b2blzJzt37mT79u3s2bOHrVu3kp2dnTOWcfQyvv32Ww4ePMiWLVvIysri+++/Z9euXfz444/s2LGDzMxM0tPT2bdvH5s3b8Y5x4YNG3L+H5H3yrxN+/fvZ+vWrezevZvt27eTkZHBzp07SU9PZ+/evWzevJkDBw7k5I3+3hwu371169bhnGPjxo3s27evUmxTQb8R+Ymnk94+4BHn3Kio6X8G/sc5F3eLdDP7EtjjnDsxjrRVgcVAY+fcsYWlVye9ikcdhyoeddKrmHSs5U+d9KSklGcnPclfcTvpxVODvANfixytHrFrlvMrQGegNbFrj/Nwzh0A3gCOMbO8z4UUERERESkF8QTIq/DtkKO1Bb4owroGANnAK0XIE7l8LriaW0RERESkhMQTIM8EuphZzjMKzawZcFowr1BmlghcCfzTOZceZ54EfCfAb5xzeR+cLiIiIiJSCuIJkJ8F1gNvm9mFZtYXP6rFt8DTkURm1tTMss3sTzGW8Tt8M42YzSvM7Cozm2Zm/c2sh5ldCcwDOgH/U6QtEhERERE5BIW2JnfO7TaznvhHTU/FN3uYi3/U9K5QUsMPzxYr6B6AH/Xif/NZzTqgEfAQPpDOBD4BejvnNF6yiIiIiJSZuLpbOue+AS4pJM16fm4zHD2vwAeKBE/P6xlPWURERERESlM8TSxERERERI4YGrBPREQkyvEvHl+u6//sms/Kdf0iRzrVIIuIiBxB3n77bdLS0sq7GIesNLcjNTW1TB/6MX/+fMwsz6soD/gZOnQoF1xwQc7nyZMnx1xm5FUaNm7cyNChQ+natSvJycmYWc6TCwty5pln5lvO8KOl09LSaN++PQcPHiyV8oepBllEROQI8vbbbzN37tycx39XVJVlO8Ief/xxTj755JzP8QbpX3/9NU8//TSLFi3Kmda5c2dSUlJo2bIlTz75ZJk8mXHt2rW8/vrrdOrUiTPOOIM5c+bEle+JJ57gp59+yjXto48+4vbbb6dv37450wYPHsyDDz7Iiy++yPXXX1+iZY+mAFlEREQqtaysLJKSksq7GIVq06YNXbp0KXK+iRMn0qFDB0466aScaW3btmXatGlceOGFzJgxgwkTJpRkUWPq1q0bW7duBeC5556LO0Bu27ZtnmnPPvssiYmJXHnllTnTatSoQf/+/Xn44YdLPUBWEwsREZFKZsWKFVxyySU0atSIlJQU2rZty/jx47nhhhuYMmUKmzZtIiEhgYSEBFq2bBlX3uKuM2z27NmcdtpppKSkUL9+ffr168dXX32VK02kecOaNWu44IILqFOnDi1atGDs2LE5t9YL2o5I/s8//5w+ffpQp06dXEFWPGWoSLKysnjppZe4+uqr88w7//zzSUtL46GHHuLZZ58t9bJUqVIyYeWePXt44403uOCCC6hfv36ueVdeeSVffPFFrtry0qAaZBERkUpkyZIl9OrVi1atWvHII4/QpEkT1q5dy8qVK7nnnntIT09n6dKlzJgxAyBXzWpBeYu7zojZs2fTt29fevTowauvvsquXbsYM2YM3bt3Z9myZTRp0iTXMi+99FIGDBjAsGHDmDVrFqmpqRx77LEMHDiw0O0A6NevH9dffz133XVXTuBW1DIUxDnHgQMHcn2OxcyoWrVqXMu85ppr+P7776lbty7nnnsu48eP51e/+lWBeRYvXkxGRgZnnHFGzPlDhw5l9erVDBkyhKZNm3LOOecUuB35Kcp2HKq33nqLnTt3MmDAgDzzOnbsSO3atZk9ezannnpqqZVBAbKIiEglcvfdd9OgQQM+/PBDkpOTAejZ8+dHDTRs2JDExMSY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J34oORERERGRMlFogOyc221mPYE0YCq+ecRcYLhzblcoqQFVyV0r/RVwcfCqA/wEfIhvf7wkalX3ALvwbZEbB3kvd869U4ztEhEREREplrh6ADjnvgEuKSTNeqJGnQiC27gCXOfcAfzIFg8UllZEREREpLSoi6xUCM1GFjiISbFp9BFo858vS3yZIiIiFZkeGi4iIiIiEqIAWUREREQkRAGyiIiIiEiIAmQRERERkRAFyCIiIiIiIQqQRURERERCFCCLiIiIiIQoQBYRERERCVGALCIiIiISogBZRERERCREAbKIiIiISIgCZBERERGREAXIIiIiIiIhCpBFREREREIUIIuIiIiIhChAFhEREREJUYAsIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZGQhPIugIhUTr99YEGpLHd99atLZbnHN/9VqSz39XHZpbLcY5d+UirLFRER1SCLiIiIiOSiAFlEREREJEQBsoiIiIhIiAJkEREREZEQBcgiIiIiIiEKkEVEREREQhQgi4iIiIiEKEAWEREREQlRgCwiIiIiEqIAWUREREQkRAGyiIiIiEiIAmQRERERkRAFyCIiIiIiIQqQRURERERCFCCLiIiIiIQoQBYRERERCVGALCIiIiISogBZRERERCREAbKIiIiISIgCZBERERGREAXIIiIiIiIhCpBFREREREIUIIuIiIiIhChAFhEREREJUYAsIiIiIhISV4BsZsea2Ztm9qOZ/WRmb5nZr+LId5KZPWNm/zGzTDP7xsxeNrPmMdKuNzMX43VRMbZLRERERKRYEgpLYGbJwHtAFjAAcMADwDwza++c211A9iuBdsDjwCqgCXAfsNTMOjrnvo1K/y4wJmraV3Fsh4iIiIhIiSg0QAZuAloAxznn1gKY2b+BNcAg4NEC8j7onEsPTzCzD4F1wXL/FJX+e+fc4jjLLiIiIiJS4uJpYtEXWBwJjgGcc+uAD4ELC8oYHRwH0zYA6fjaZBERERGRw0o8AXI74PMY01cBbYu6QjNrAzQCvowx+4KgrXKWmS1W+2MRERERKWvxBMj1gR0xpm8H6hVlZWaWADyFr0F+Pmr2O8BQ4FzgGmAvMMPMri3KOkREREREDkW8w7y5GNOsGOv7G3AqcK1zLlfQ7Zwb6pyb4pz7wDn3JtALWAqMy29hZvYHM1tqZkv37dvH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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "b = StringIO()\n", "ctc_cutoff_Ang = 3.5\n", "ctc_controls = [3,4,5,6]\n", "with redirect_stdout(b):\n", " for ctc_control in ctc_controls:\n", " mdciao.cli.residue_neighborhoods(\"L394\",traj, \n", " short_AA_names=True,\n", " ctc_cutoff_Ang=ctc_cutoff_Ang,\n", " ctc_control=ctc_control,\n", " figures=False, \n", " fragment_names=None,\n", " no_disk=False,\n", " output_desc='neighborhood.ctc_control_%u'%ctc_control)\n", "mdciao.cli.compare({\"ctc-control = %u\"%key : \"neighborhood.ctc_control_%u.LEU394@%2.1f_Ang.dat\"%(key,ctc_cutoff_Ang)\n", " for key in ctc_controls},\n", " anchor=\"L394\",\n", " title=\"ctc-control comparison\");\n", "b.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*n* is simply the number of reported bars: three blue ones, four orange ones, five green ones, and six red ones. $\\Sigma$ is just the sum of the heights of all bars and is thus an estimate of the **average number of neighbors** that are being reported (at this cutoff). A couple of observations:\n", "\n", "\n", "* The relation of $\\Sigma$ with *n* is straightforward: as *n* grows, so does $\\Sigma$.\n", "\n", "\n", "* For a fixed cutoff, there's an upper bond to $\\Sigma$ ($\\Sigma\\leq\\Sigma_t$), because the **total average number of neighbors**, $\\Sigma_t$, of a given residue, over a given dataset, is determined by the used cutoff only. The ``ctc_control`` parameter simply determines how many neighbors get actually reported.\n", "\n", "\n", "* Because neighbors get reported by descending frequency, the neighbors that get left out when chosen *n* = 4 over *n* = of 5 or 6 are very likely not that significant. Please note that this won't hold for very small datasets (like one single pdb file), where the word *frequency* doesn't really have a defined meaning.\n", "\n", "\n", "* In cases where ``mdciao`` is used to look for the neighborhood of just one residue, there's a sensible number of residues to choose (somewhere between 5 and 10), because *usually* that's how many interactions a residue will have (please note, this doesn't necessary hold for elongated ligands, lipids, acid chains etc).\n", "\n", "Actually, although it's hidden above, ``mdciao`` reports to the terminal the percentage of $\\Sigma_t$ that the report captures, so that the user can decided whether to increase *n* or not, so for each of the iterations above, here are terminal-output excerpts:\n", "\n", "* ``ctc_control = 3``\n", " ```\n", " #idx freq contact fragments res_idxs ctc_idx Sum\n", " 1: 0.55 LEU394-ARG389 0-0 353-348 30 0.55\n", " 2: 0.47 LEU394-LYS270 0-3 353-972 65 1.02\n", " 3: 0.38 LEU394-LEU388 0-0 353-347 29 1.39\n", " These 3 contacts capture 1.39 (~79%) of the total frequency 1.76 (over 74 input contacts)\n", " As orientation value, the first 4 ctcs already capture 90.0% of 1.76.\n", " The 4-th contact has a frequency of 0.23\n", " ```\n", " The intention is to report how much of $\\Sigma_t$ has been captured using 3 contacts (~79%), and how many would be needed to capture most (90%) of it (4 contacts). So, as we increase *n*:\n", " \n", "* ``ctc_control = 4``\n", " ```\n", " #idx freq contact fragments res_idxs ctc_idx Sum\n", " 1: 0.55 LEU394-ARG389 0-0 353-348 30 0.55\n", " 2: 0.47 LEU394-LYS270 0-3 353-972 65 1.02\n", " 3: 0.38 LEU394-LEU388 0-0 353-347 29 1.39\n", " 4: 0.23 LEU394-LEU230 0-3 353-957 51 1.62\n", " These 4 contacts capture 1.62 (~92%) of the total frequency 1.76 (over 74 input contacts)\n", " ```\n", " \n", "* ``ctc_control = 5``\n", " ```\n", " #idx freq contact fragments res_idxs ctc_idx Sum\n", " 1: 0.55 LEU394-ARG389 0-0 353-348 30 0.55\n", " 2: 0.47 LEU394-LYS270 0-3 353-972 65 1.02\n", " 3: 0.38 LEU394-LEU388 0-0 353-347 29 1.39\n", " 4: 0.23 LEU394-LEU230 0-3 353-957 51 1.62\n", " 5: 0.10 LEU394-ARG385 0-0 353-344 26 1.73\n", " These 5 contacts capture 1.73 (~98%) of the total frequency 1.76 (over 74 input contacts)\n", " ```\n", " \n", "* ``ctc_control = 6``\n", " ```\n", " #idx freq contact fragments res_idxs ctc_idx Sum\n", " 1: 0.55 LEU394-ARG389 0-0 353-348 30 0.55\n", " 2: 0.47 LEU394-LYS270 0-3 353-972 65 1.02\n", " 3: 0.38 LEU394-LEU388 0-0 353-347 29 1.39\n", " 4: 0.23 LEU394-LEU230 0-3 353-957 51 1.62\n", " 5: 0.10 LEU394-ARG385 0-0 353-344 26 1.73\n", " 6: 0.04 LEU394-ILE233 0-3 353-960 54 1.76\n", " These 6 contacts capture 1.76 (~100%) of the total frequency 1.76 (over 74 input contacts)\n", " ```\n", "\n", "### Controlling with fractions\n", "Additionally, the **upper bond** itself, $\\Sigma_t$, can be used as a reference for controlling how many contacts get reported. So, instead of specifying an absolute number (*n* = 3,4,5...), one can specify a relative number, i.e. a fraction of $\\Sigma_t$ to be reported. \n", "\n", "This way, regardless of the actual number of involved contacts, one can choose to report **most of them**. In the example below, we choose to report 90% of the total number of average neighbors, which, as we know from above, is achieved with 4 contacts. To avoid introducing a new parameter, ``mdciao`` knows that if ``ctc_control`` is an integer (1, 2, 3...), the user means *this many contacts*, whereas if ``ctc_control`` is between 0 and 1 (.50 for 50%, .9 for 90% etc) the user wants that fraction of $\\Sigma_t$:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Will compute contact frequencies for (1 items):\n", "\n", " with a stride of 1 frames\n", "Using method 'lig_resSeq+' these fragments were found\n", "fragment 0 with 354 AAs LEU4 ( 0) - LEU394 (353 ) (0) resSeq jumps\n", "fragment 1 with 340 AAs GLN1 ( 354) - ASN340 (693 ) (1) \n", "fragment 2 with 66 AAs ALA2 ( 694) - PHE67 (759 ) (2) \n", "fragment 3 with 283 AAs GLU30 ( 760) - LEU340 (1042 ) (3) resSeq jumps\n", "fragment 4 with 1 AAs P0G395 ( 1043) - P0G395 (1043 ) (4) \n", "\n", "Will compute neighborhoods for the residues\n", "L394\n", "excluding 4 nearest neighbors\n", "\n", " residue residx fragment resSeq GPCR CGN\n", " LEU394 353 0 394 None None\n", "\n", "Pre-computing likely neighborhoods by reducing the neighbor-list\n", "to those within 15 Angstrom in the first frame of reference geom\n", "'':...done!\n", "From 1035 potential distances, the neighborhoods have been reduced to only 74 potential contacts.\n", "If this number is still too high (i.e. the computation is too slow), consider using a smaller nlist_cutoff_Ang \n", "Streaming over trajectory object nr. 0 ( 280 frames, 280 with stride 1) in chunks of 10000 frames. Now at chunk nr 0, frames so far 280\n", "#idx freq contact fragments res_idxs ctc_idx Sum\n", "1: 0.55 LEU394-ARG389 0-0 353-348 30 0.55\n", "2: 0.47 LEU394-LYS270 0-3 353-972 65 1.02\n", "3: 0.38 LEU394-LEU388 0-0 353-347 29 1.40\n", "4: 0.23 LEU394-LEU230 0-3 353-957 51 1.62\n", "These 4 contacts capture 1.62 (~92%) of the total frequency 1.76 (over 74 input contacts)\n", "./neighborhood.LEU394@3.5_Ang.dat\n" ] } ], "source": [ "mdciao.cli.residue_neighborhoods(\"L394\",traj, \n", " short_AA_names=True,\n", " ctc_cutoff_Ang=ctc_cutoff_Ang,\n", " ctc_control=.90,\n", " figures=False, \n", " fragment_names=None,\n", " no_disk=False,\n", " );" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which control-mode to choose (fraction or integers) is up to the user:\n", "\n", "* For **compactness**, limiting the output with integers can avoid huge outputs, but might leave out some interesting stuff.\n", "\n", "* For **completeness**, choosing ``ctc_control = .99`` will ensure that any-residue under the cutoff (regardless of its frequency) will be reported, but might fill the reports with \"long tails\" of many residues with very low frequencies." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## n_nearest" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another way in which ``mdciao`` is choosing which residues to show is through excluding **nearest neighbors**, i.e. residues that are predictably going to be under the cutoff simply because they are bonded neighbors of the residue in question.\n", "\n", "In our example, for ``L394`` these would be residues 395 and 393 (first bonded) 396 and 392 (second bonded) and so on (except, in this particular ``L394`` case, since it's a terminal residue, we only get 393, 392 etc). By the way, the meaning of *bonded* can be clarified \n", "\n", "The default value that ``mdciao`` has this parameter is ``n_nearest=4`` by default, which is approximately one $\\alpha$-helix turn away. The intention is to avoid reporting up to the first helix away from the residue.\n", "\n", "Let's see the effect of varying this parameter:\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "These interactions are not shared:\n", "E392, L393\n", "Their cumulative ctc freq is 3.00. \n", "Created files\n", "freq_comparison.pdf\n", "freq_comparison.xlsx\n" ] }, { "data": { "image/png": "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HFevXr1Mn/xFRCQ+M6N69erUr1+f9PT0Qq9HAbKIVAh79uyhWrVqyc6GiIiUgGrVqrFnz55CL68AWUQqBOecao5FRCoIM9uvviYKkEVEREREQhQgi4iIiIiEKEAWEREREQlRgCwiIsVq9erVXHnllRx44IH89sSj6X9jd376cXXCy/f760guuv727P+fnfY6Vr8VlStXjvkqDp06dYr7eRdeeGGB1nVLt66cctQBjHso53OxxowZQ/Pmzcv8OLRSMDNnzqRTp04cfvjhVK1alSOPPJIrr7ySJUuWJLyOfv36cdFFF2X//+yzz2JmcV/F4b333ot5fBx00EEFXteFF15I5cqVueeee3JMHzt2LC1btiyRY6TiDOwnIhJHoyFvJfXzV47oktTPL047duzg3HPPpWrVqkyaNInVm3Yx7uEHuOHKi3n57bnUqJH3GKXfrVzNU1Om8+G/n82e1rZlM2rVrEGjxscxbty4Eul8OW7cOLZs2ZJj2rx587jzzjtzBCb5+c9rr7D0669izrv55psZOXIkkydPplevXvuV36L0dZMTk/r5xy+O/X2VFxs3bqR169b06dOHQw45hFWrVjFixAjatWvHokWLOOaYY/Jc/rvvvuOpp57iww8/zJ7Wtm1batWqRaNGjXjyySdLtIPy2LFjOfXUU7P/L+hF69SpU/nyyy9jzuvduzcPP/wwzz33HD179tyfbOZLAbKIiBSbp59+mu+//54lS5bQuHFjFv+0leNOPImLz2zNK1OepcdNt+a5/Nin/8kpTY/n1FOaZk9revyxTH1iOJf8cQCvvfYaI0eOLO5i0LRp01zTnnnmGVJTU7nqqqsSWseWzZt5+L4h/PneBxnU78Zc86tXr06PHj0YNWpUqQqQpXhdc801XHPNNTmmtW3bliZNmvDKK68wcODAPJcfO3Ysp5xySo6gtGnTpkydOpVLLrmEV199lYceeqhY8h5LkyZNaNeuXaGWTU9PZ+DAgYwePZpu3brlml+9enW6devGI488UuwBsppYiIiUUUOHDsXMWLZsGV26dKFWrVocc8wx3HfffaXmNv0bb7zBaaedRuPGjbOnHXn0MbQ49TTem/VmnstmZGQy5V9vcu2l5+ea16VzB0aPHs3o0aN5+umnizzf+dm5cyevvPIKv//97znwwAMTWmbs39JodHwTLri0a9w0V199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oE7durRpf0bMtEfUP4o27c+gVq1a2dPS09NZunQpd955Z5HlWRITGSqtpI+Ryy67jFatWtG8eXPq1KnD0qVLGTNmDJUrV853DOQzzzwTgPnz5+fI66JFixg8eHD2EIsFOUbiBcj56d69Ow0aNKBVq1bUrVuXhQsXMnLkSOrXr0/fvn2z082ZM4ff/e53PP3003Tv3p169erRsWPHmOs8+uijc82LHCMDBgwocB4LQgGyiEgFUK1atey/U1JSyMrKKpHPrVmzJm+//TYDBw7k+uuvZ89ex2mnn8mfhw6nRs1aeS7b4KgjaNuyGW+8/T6XX7jvVvWnX35NZuZu5s+fzxln5A4+ly9fnmfHpsLavXs3U6dO5bzzzuOwww6LmcY5x549ewo9xu6MGTNITU3lsssu25+sSiEk6xhp164dL730EqNHjyYzM5OjjjqKjh07Mnjw4Hz34wYNGtC2bVveeOMNLr/88uzpn376KZmZmXz88ce0b98+13IrVqwo8mPkpJNOYtq0aYwfP54dO3Zw+OGHc9lll5GWlpajydD+HiNvvvkmqampXHrppUWU89gUIItIhffdg7kfRFEcnHMFfuxqXoYOHRqzc1p+7SdL2tFHH83LL78MwOKfthZo2Vu6d+X2tFGM/9sgalSvDkDPqy6m51UXs+ew+ENbFYcqVaqwbt26PNN07NgxoRE6vlgdu93olClTuOKKK4q9fWVBnPjN17mmFbaWsaSlpaWRlpa7Kc/EiROTkJvY7r77bu6+++5CL3/LLbdw++23M378eGrUqAFAz549i/1Jc9EGDRrEoEGD8k3XsWPHhC4+4qV54YUX6Nq1a7EfI+qkJyIipVb3rl2of/ghPDH55WRnpdgtXLiQd999N2ZAJxJP9+7dqV+/Pk888USys1LsFi5cyHvvvcc999xT7J+lGmQRkXIuukYzPT09ORkphJSUFCaOTuOzRd8kOyvFbt26dUyaNClXhyQpftG1lb/++muSclJwKSkpTJw4kc8++yzZWSl269at45lnnimRY0QBsoiIlGrtWjenXeuSbU6RDOefXzJNfaT8adeuHe3atUt2NopdSR4jamIhIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZEQBcgiIiIiIiEKkEVEREREQhQgi4iIiIiEKEAWEREREQlRgCwiIiIiEqIAWUREREQkRAGyiIiIiEhI5WRnQEQk2VLuPzC5GRi6ObmfX4zWrFnDww8/zIIFC/jyyy/ZuXMnb374BfWPOjrhdfT760hWrl7LG5MfBeDZaa/Ta8DQuOmzsrL2M9fxvfnmmzz00EN8/vnnVKpUieOPP57hw4dz9tlnJ7yOW7p15cM5s7mx30D63vXX7Oljxoxh0qRJLFy4kEqVSk/91fib30nq5988/qykfn5JO//885k5cyZDhgzhgQceSGiZfv36sXLlSt544w0Ann32WXr16hU3vXOuSPIa9t5779G5c+dc0+vWrcuvv/5aoHVdeOGFzJo1i8GDB3P//fdnTx87diyTJ0/m008/LfZjRAGyiIgUm+XLl/Pyyy/TqlUrzjjjDN5+++0CLf/dytU8NWU6H/772expbVs2o1bNGjRqfBzjxo3DzIo417FNmDCB2267jT59+jBkyBD27t3LF198wY4dOxJex39ee4WlX38Vc97NN9/MyJEjmTx5cp7BjZRfL774Il988UWBlvnuu+946qmn+PDDD7OntW3bllq1atGoUSOefPLJEjtGwAexp556avb/lSsXLNScOnUqX375Zcx5vXv35uGHH+a5556jZ8+e+5PNfClAFhGRYnPmmWeydu1aAJ555pkCB8hjn/4npzQ9nlNPaZo9renxxzL1ieFc8scBvPbaa4wcObJI8xzLypUrGTBgACNHjuT222/Pnn7eeecBidXIbdm8mYfvG8Kf732QQf1uzDW/evXq9OjRg1GjRilAroDS09Pp378/Y8aM4dprr014ubFjx3LKKafkCEqbNm3K1KlTueSSS3j11Vd56KGHiiPLMTVp0oR27doVatn09HQGDhzI6NGj6datW6751atXp1u3bjzyyCMKkEWk4mn2wJyE0q2slv+PyMkN/a38sU3HwqbYaU5KNGOlzNChQxk2bBhLly7ljjvuYM6cORx00EH86U9/4q9//WupuE2/P3nIyMhkyr/e5N47cgeTXTp3YPTo0dxxxx0cd9xx3HDDDfuTzXxNmjSJSpUq0bt370KvY+zf0mh0fBMuuLRrzAAZ4Oqrr+bhhx/mww8/5Le//W2hP0u8YcOGcf/99/P1118zYMAA3n//fQ466CB69erFkCFDSsUxEnHXXXdx0kkncc011yQcIGdkZDBlyhTuvffeXPO6dOnCmDFjuO222zjuuOO4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bF5hZteY2VQz62FmZ5vZ1cC7QGvg7gKVSERERERkP+Tb6tw5t93MOuEfNf08vtnDbPyjpreFkhqQQuyg+3r8qBfxHpm0AjgUeBgfSO8APgHOd85pvGQRERERKTEJdct0zq0C/pBPmpXsazMcPS/PB4oET8+L3c1dRERERKQEJdLEQkRERESkwlCALCIiIiISogBZRERERCREAbKIiBSb6dOnc8UVV3DsscdSq1YtLj6rDY+OGMb2bYk9UQ+g319HctH1t2f//+y017H6rahcuXLMV3F47733Yn7WQQcdVOB13dKtK6ccdQDjHnogx/QxY8bQvHlz9u7dW1TZFpFCqjjPThQRiePqGVcn9fMXXb8oqZ9fnEaPHs3RRx/NAw88QP369Xnr/Y/5+5gRfPLhXJ57bSaVKuVdT/PdytU8NWU6H/772expbVs2o1bNGjRqfBzjxo0r0cfijh07llNPPTX7/4IG5P957RWWfv1VzHk333wzI0eOZPLkyfTq1Wu/8iki+0cBsoiIFJt///vfHHLIIdn/H3x8K+rWO4C/9r+FTz6ay2mnn5nn8mOf/ienND2eU09pmj2t6fHHMvWJ4VzyxwG89tprjBw5stjyH61Jkya0a9euUMtu2byZh+8bwp/vfZBB/W7MNb969er06NGDUaNGKUAWSTI1sRARKaOGDh2KmbFs2TK6dOlCrVq1OOaYY7jvvvtKzW36cHAccdIpLQFYv25tnstmZGQy5V9vcu2l5+ea16VzB0aPHs3o0aN5+umniyazxWzs39JodHwTLri0a9w0V199NUuWLOHDDz8swZyJSDQFyCIiZdxll11Gp06deO2117j00ktJS0tj8uSYDy5NiHOOrKysfF979uwp1PoXzPsAgGMbn5BnunmfLSJ981Y6nNYq5vy+ffty66230rdvX2bNmlUiZenRowepqakceuihdOvWjVWrViW03GfzP+KN6VMZ8uCoPNO1aNGCOnXq8NZbbyW0XhEpHgqQRUTKuIEDBzJw4EA6d+7Mo48+SrNmzXjxxRcLvb45c+ZQpUqVfF/nnHNOgdf9809reWL0cNp16JhdkxzPvM8WYWY0P/G4uGkeeeQRmjRpwrXXXsv27dtjlqVatWr5vs4999w881K3bl369+/PU089xdtvv82QIUOYPXs2Z5xxBuvXr89z2d27d3P/4AFcf1NfGjSKXxaASpUq0bx5c+bNm5dnOhEpXmqDLCJSxnXp0iXH/82aNePzzz8v9Ppat27NJ598km+62rVrF2i927Zt444/XUfllMrcN3pcvunX/ryBOrVrkppaJW6a2bNns3jxYu6++25q1qyZa37r1q0TCjbzK0vLli1p2XJfQH/WWWfRoUMH2rdvz+OPP859990Xd9lJTzxKxq6d3NBvYL75AN8sZenSpQmlFZHioQBZRKSMO/DAA3P8X7VqVXbt2lXo9dWqVYsWLVrkm64go0fs2rWLSy+9lDWrVjLx5f/jsN/UT2CZDKqmpsadv379enr16kWbNm0YOnRozDTFUZaIVq1acfzxx7NgwYK4aX76cTVPPz6atIcfJTMzk8zMzOx5mZkZbNm8mT2/qU1KSkr29OrVq7Nz584C50dEio6aWIiIlHNmxogRIzjttNNo2LAhkyZNyjN9UTex2L17N1dccQWffPIJ4597ieNOPCmh5Q46oC6bNm+JOc85R69evdixYwdTpkyJO9xaUTWxiMc5l2dwvWbVD2Rk7OIvt/WmQ7MG2S+AyU+No0OzBixalHOYv40bN3LwwQcXKj8iUjRUgywiUgFUqVKFjz/+mCVLltC2bVu6d+8eN6gsyiYWe/fupXv37rzzzju8/vrrHN60TcJ5btK4Ibt3Z7Fm7c8cecRhOeaNmfACM2fOZPLkyRx77LFx11FUTSxiWbBgAUuXLqVr1/ijUpzQ9GSefumNXNNvuPIiulx+JZdd3Z3GjRvnmLdixQratm1b4PyISNFRgCwiUgFcd911ADRt2hQzY926dRx55JEx09auXTvHwzD2R79+/XjllVcYPHgwNWvW5MvP9gXeh/3miDybWpzZzo9eMX/hVzkC5EVfL2PwiMdp27YtjRo1yhUAt2zZkqpVqxZpWbp3706DBg1o1aoVdevWZeHChYwcOZL69evTt2/f7HRz5szhnHPOYeLEifTo0YM6devSpv0ZMdd5RP2jaNP+DGrVqpU9LT09naVLl3LnnXfud55FpPAUIIuIVADVqlXL/jslJYWsrKwS+dzIcGXDhw9n+PDhOebd3P9ubhkwKO6yDY46grYtm/HG2+9z+YX7mnN8+uXXZGbuZv78+ZxxRu7gc/ny5TRo0KBoChA46aSTmDZtGuPHj2fHjh0cfvjhXHbZZaSlpXHwwQfjnAN8k4s9e/YUehzqGTNmkJqaymWXXVaU2ReRAlKALCIV3tQuUzl2ncs33dbaRye0voOOzD2aAvjgqaCPJs7L0KFDY3ZOe/bZZ4vsM/bXd999l+P/xT9tLdDyt3Tvyu1poxj/t0HUqF4dgJ5XXUzPqy5mz2HNiyyf+Rk0aBCDBsUP5iM6duyYHSzn5YvVm2JOnzJlCldccQUHHXRQgfMoIkVHnfRERKTU6t61C/UPP4QnJr+c7KwUu4ULF/Luu++SlpaW7KyIVHiqQRYRKeeiazTT09OTk5FCSElJYeLoND5b9E2ys1Ls1q1bx6RJk3J12hORkqcAWURESrV2rZvTrnXJNadIlvPPPz/ZWRCRgJpYiIiIiIiEKEAWEREREQlRgCwiIiIiEqIAWUREREQkRAGyiFQIDpfQ+LQiIlL2Oecws0IvrwBZRCqEzVmbcbsVIIuIVAS7du0iJSWl0MsrQBaRCuGVta+w/qf17M3cq5pkEZFyyjnHzp07+fHHH6lXr16h16NxkEWkQvhq21c8vfJpumZ2pW7luhg5b73t2ZL/Onal707oszZsS407r1KlilEvsXfv3pjTf96ckdDyX9uG/D9jU+l6eEisbfvzpp35Lvf11urFkZ1iFW/7llcV5biFsr9tzYyUlBTq1atHzZo1C70eBcgiUmF8te0rvlr6Vcx5Lw3Pynf5/3Ucn9DnXD+qbczpWVlZ+1WjUZakp6dTuXLun5guD8xJaPmV1a7NN822O38scL6KS7xte8GgGfkuu3JEl2LIUfGKt33Lo4p03ELF2rZ5qTiXRCIiIiIiCVCALCIiIiISogBZRERERCREAbKIiIiISIgCZBERERGREAXIIiIiIiIhCpBFREREREIUIIuIiIiIhChAFhEREREJUYAsIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZEQBcgiIiIiIiEKkEVEREREQhQgi4iIiIiEKEAWEREREQlJKEA2s6PM7BUz22xmW8zsX2Z2dILLujivFlHpKpnZYDNbaWa7zOwLM/tDIcokIiIiIlJolfNLYGY1gHeADOB6wAEPAO+aWXPn3PYEPudZ4KmoaUuj/r8fuBMYAnwKXA28bGa/d869mcBniIiUSQ0Gzcg3zcpq1ya0rpMb5l938dLwrITW9U7H8fmmufXvnRJal4hIWZJvgAzcCBwLnOCcWw5gZl8Cy4DewCMJrONH59y8eDPN7FB8cDzCOTcqmPyumTUGRgAKkEVERESkRCTSxOJiYF4kOAZwzq0APgAuKaJ8nAekAlOipk8BTjazhkX0OSIiIiIieUokQD4J+CrG9MVA0wQ/5xYzyzCzHWb2jpl1iPEZGcDyqOmLg/dEP0dEREREZL8kEiAfCGyKMX0jcEACy08B+gCdgZuAg4B3zKxj1GekO+dcjM+IzM/FzG4yswVmtiAzM5O5c+cyY8YMpk+fzoIFC3jyyScTyF7pNXHixJhlWrNmDYMHDyYrK4uePXsC0L179+RmtgjEK1OfPn3IysoiLS2NNWvW8OSTT7JgwYIk5rRoxCrT9OnTefPNN3n//feZMGECy5YtY9iwYcnO6n57/fXXc5Vp27ZtDBgwAIAbbrghx3t5EF2mQYMG8csvv/DQQw+xaNEiJk+ezKxZs5g1a1Yys7nfNmzYELNML774IosXL2bMmDFs2LCBQYMGFfln33jjjQD07t077vE0Y8YM5s6dy8SJE1m+fDnDhw9n27Zt3HHHHUDs7bRhwwbGjBnD4sWLeeGFF5g9ezazZ8/mhRdeiFmmyLLdunUD4JZbbmHbtm0JH7uxzns9e/YkKyuLwYMHs3r1ah577DHmz5/PtGnT4h5Pt9xyS458RN779+8fdztNnjyZRYsW8dBDD7Fhwwb69+8fcx3hMi1btoxnn3027u9TWloaWVlZ9O7du1Rup8j7HXfcwbZt2xg+fDjLly8v1G9uad9OEyZM4P333+f1119n2rRpzJ8/n8cee4zVq1cX+De3LGyngu57ebHcMWlUArNMYLRzbnDU9AeBu51zibRjDi9XG18jvdo5d0Yw7R/A751zv4lKexy+M18P59zzea23Ro0abv369bmmN3tgTr55Kq2dX64f1Tbm9KysLOrVq5dreiIdfSCx8iZSVkisvImUFeJ39klPT6dy5dy7WVnetlCw7VuU2xZKT0eu/dm2UHr35eI4drVtc9t2548Jrask7Ne2HdGlGHJUvOJt3/Io3rYtryrStq1du/YO51zNWPMSqUHeROwa3AOIXbOcJ+fcVmAG0CY0eSNwgJlZjM+IzBcRERERKXaJBMiL8W2EozUFlhTycw0/XFz4M6oCjWJ8BvvxOSIiIiIiBZJIgPw60M7Mjo1MMLMGwOnBvAIxszpAF+Dj0OS3gEzguqjk3YCvglEzRERERESKXSKNTP4B9AX+bWZ/xdf83g+sJvTwDzM7BvgOuM85d18w7U7gBOBdYC1wDH6848MJBcPOufVmNgYYbGZbgc+Aq4BOFN1QciIiIiIi+co3QHbObTezTsAY4Hl884jZwB3OuW2hpAakkLNW+lvgsuBVF9iCHz/5T865+VEfNQTYBtyOD6C/Ba50zr1RiHKJiIiIiBRKQt0UnXOrgD/kk2YlPkgOT3sDSCjAdc7twT/C+oFE0ouIiIiIFIdE2iCLiIiIiFQYCpBFREREREIUIIuIiIiIhChAFhEREREJUYAsIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZEQBcgiIiIiIiEKkEVEREREQhQgi4iIiIiEKEAWEREREQlRgCwiIiIiEqIAWUREREQkRAGyiIiIiEiIAmQRERERkRAFyCIiIiIiIQqQRURERERCFCCLiIiIiIQoQBYRERERCVGALCIiIiISogBZRERERCREAbKIiIiISIgCZBERERGREAXIIiIiIiIhCpBFREREREIUIIuIiIiIhChAFhEREREJUYAsIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZEQBcgiIiIiIiEKkEVEREREQhQgi4iIiIiEKEAWEREREQlRgCwiIiIiEqIAWUREREQkRAGyiIiIiEiIAmQRERERkRAFyCIiIiIiIQqQRURERERCFCCLiIiIiIQoQBYRERERCVGALCIiIiISklCAbGZHmdkrZrbZzLaY2b/M7OgEljvVzCaY2TdmtsPMVpnZC2bWMEbalWbmYrwuLUS5REREREQKpXJ+CcysBvAOkAFcDzjgAeBdM2vunNuex+JXAycBjwGLgfrAPcACM2vhnFsdlX4mMDRq2rcJlENEREREpEjkGyADNwLHAic455YDmNmXwDKgN/BIHsuOdM5tCE8wsw+AFcF6741K/4tzbl6CeRcRERERKXKJNLG4GJgXCY4BnHMrgA+AS/JaMDo4Dqb9AGzA1yaLiIiIiJQqiQTIJwFfxZi+GGha0A80sxOBQ4GvY8y+KGirnGFm89T+WERERERKWiIB8oHAphjTNwIHFOTDzKwy8Hd8DfIzUbPfAPoB5wHXAbuAV82sW0E+Q0RERERkfyQ6zJuLMc0K8XnjgN8C3ZxzOYJu51w/59xzzrn/OedeAc4BFgDD463MzG4yswVmtiAzM5O5c+cyY8YMpk+fzoIFC3jyyScLkcXSY+LEiTHLtGbNGgYPHkxWVhY9e/YEoHv37snNbBGIV6Y+ffqQlZVFWloaa9as4cknn2TBggVJzGnRiFWm6dOn8+abb/L+++8zYcIEli1bxrBhw5Kd1f32+uuv5yrTtm3bGDBgAAA33HBDjvfyILpMgwYN4pdffuGhhx5i0aJFTJ48mVmzZjFr1qxkZnO/bdiwIWaZXnzxRRYvXsyYMWPYsGEDgwYNKvLPvvHGGwHo3bt33ONpxowZzJ07l4kTJ7J8+XKGDx/Otm3buOOOO4DY22nDhg2MGTOGxYsX88ILLzB79mxmz57NCy+8ELNMkWW7dfP1Obfccgvbtm1L+NiNdd7r2bMnWVlZDB48mNWrV/PYY48xf/58pk2bFvd4uuWWW3LkI/Lev3//uNtp8uTJLFq0iIceeogNGzbQv3//mOsIl2nZsmU8++yzcX+f0tLSyMrKonfv3qVyO0Xe77jjDrZt28bw4cNZvnx5oX5zS/t2mjBhAu+//z6vv/4606ZNY/78+Tz22GOsXr26wL+5ZWE7FXTfy4s5Fyv2DSUw+xl4zTnXO2r6E8AVzrlD8lzBvvTDgbuB651zzye4zF3ASOAI59xPeaWtUaOGW79+fa7pzR6Yk+/nrKx2bSLZ4eSG+Y5sx0vDsxJa1zsdx+eb5vpRbWNOz8rKol69ermmNxg0I6HPTqS8iZQVEitvImUFuPXvnWJOT09Pp3Ll3P1Jy/K2hYJt36LctlDy5S2ObQuld18ujmNX2za3bXf+mNC6SsJ+bdsRXYohR8Ur3vYtj+Jt2/KqIm3b2rVr73DO1Yw1L5FvYDG+HXK0psCSRDJgZkOAQcBtiQbHkUWD97yjeBERERGRIpJIE4vXgXZmdmxkgpk1AE4P5uXJzG7Dj5s8xDn3eKIZC9orXwGscs6tS3Q5EREREZH9kUiA/A9gJfBvM7vEzC4G/g2sBp6KJDKzY8wsy8zuDU27GhgLvAW8Y2btQq+moXTXmNlUM+thZmcHy70LtMY3yxARERERKRH5NrFwzm03s07AGOB5fLOH2cAdzrltoaQGpJAz6D4/mH5+8AqbA3QM/l6BH/rtYfyoGTuAT4DznXMzC1YkEREREZHCS6gVtnNuFfCHfNKsJGpkC+dcT6BnAuufB8Tu6SEiIiIiUoISHeZNRERERKRCUIAsIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZEQBcgiIiIiIiEKkEVEREREQhQgi4iIiIiEKEAWEREREQlRgCwiIiIiEqIAWUREREQkRAGyiIiIiEiIAmQRERERkRAFyCIiIiIiIQqQRURERERCFCCLiIiIiIQoQBYRERERCVGALCIiIiISogBZRERERCREAbKIiIiISIgCZBERERGRkMrJzoCIiIiUfc0emJNQupXVrk0o3ckNj843zUvDsxJa1zsdx+eb5vpRbRNal1QMqkEWEREREQlRgCwiIiIiEqIAWUREREQkRAGyiIiIiEiIAmQRERERkRAFyCIiIiIiIQqQRURERERCFCCLiIiIiIQoQBYRERERCVGALCIiIiISogBZRERERCREAbKIiIiISIgCZBERERGREAXIIiIiIiIhCpBFREREREIUIIuIiIiIhChAFhEREREJUYAsIiIiIhKiAFlEREREJEQBsoiIiIhIiAJkEREREZEQBcgiIiIiIiEKkEVEREREQhQgi4iIiIiEVE4kkZkdBYwBzgUM+C9wh3NuVQLLVgPuB7oB9YCFwN3Oufej0lUC7gZ6A4cD3wL3OeemJ1gWERERkRLRYNCMhNKtrHZtvmlObnh0Qut6aXhWvmne6Tg+oXXd+vdOCaWrqPKtQTazGsA7QBPgeqA7cBzwrpnVTOAzngFuBO4Ffg/8BMw0sxZR6e4HhgLjgAuAecDLZnZhIgURERERESkKidQg3wgcC5zgnFsOYGZfAsvwtb2PxFvQzE4BrgX+6JybFEybAywG7gMuDqYdCtwJjHDOjQoWf9fMGgMjgDcLXjQRERERKQrNHpiTb5pEasshsRrzRGrLIbEa8+tHtU1oXWGJtEG+GJgXCY4BnHMrgA+ASxJYdjcwLbRsFjAVOM/MqgaTzwNSgSlRy08BTjazhgnkU0RERERkvyUSIJ8EfBVj+mKgaQLLrnDO7YixbCrQOJQuA1geIx0JfI6IiIiISJEw51zeCcwygUecc4Oipj8ADHLOxW2mYWazgDrOuXZR0zsDbwNnOuf+Z2YTgIudc4dHpWuMb8rRwzn3fIz13wTcFPzbCtiZZ2GKR2UgsfsAZV9FKitUrPJWpLKCylueVaSyQsUqb0UqK6i8JaG6cy5mZXFCo1gAsaJoS2A5S3DZRNPlzJRzE4AJCeSj2JjZAufcqcnMQ0mpSGWFilXeilRWUHnLs4pUVqhY5a1IZQWVN9kSaWKxCTgwxvQDgnl52ZjHspH5kfcDzCw6II5OJyIiIiJSrBIJkBfj2whHawosSWDZhsFQcdHLZrKvzfFioCrQKEY6EvgcEREREZEikUiA/DrQzsyOjUwwswbA6cG8/JatAlwRWrYycBUwyzmXEUx+Cx8wXxe1fDfgq2DUjNIqqU08SlhFKitUrPJWpLKCylueVaSyQsUqb0UqK6i8SZVIJ72awBf4DnB/xbcVvh+oDTR3zm0L0h0DfId/+t19oeWn4odx+zOwArgF/8CQ3zrnPgulGwHcAfwF+AwfRPcGLnHOvVEEZRURERERyVe+nfScc9vNrBP+UdPP4zvOzcY/anpbKKkBKeSule4FPAg8gH/U9BfA+eHgODAE2Abczr5HTV+p4FhERERESlK+NcgiIiIiIhVJIm2QRUREREQqDAXIIiIiIiIhCpBFREREREIUIIuIiIiIhChAFhEREREJUYAsIiIiIhKiAFlEREREJEQBsoiIiIhIyP8DdgD9OXYD8uIAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "b = StringIO()\n", "ctc_cutoff_Ang = 4.5\n", "n_nearests = [0, 1, 2, 3, 4]\n", "with redirect_stdout(b):\n", " for n_nearest in n_nearests:\n", " n = mdciao.cli.residue_neighborhoods(\"L394\",traj, \n", " short_AA_names=True,\n", " ctc_cutoff_Ang=ctc_cutoff_Ang,\n", " ctc_control=20,\n", " n_nearest=n_nearest,\n", " figures=False, \n", " fragment_names=None,\n", " no_disk=False,\n", " output_desc='neighborhood.n_nearest_%u'%n_nearest)\n", "mdciao.cli.compare({\"n_n = %u\"%key : \"neighborhood.n_nearest_%u.LEU394@%2.1f_Ang.dat\"%(key,ctc_cutoff_Ang)\n", " for key in n_nearests},\n", " anchor=\"L394\",\n", " title=\"n_neighbors comparison\");\n", "b.close()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see also here that, the lower ``n_neighbors``, i.e. the less neighbors we exclude, the higher the $\\Sigma$ value. With ``n_neighbors=0``, in the report we see ``E392`` and ``L393``, both with full bars. Since ``L393`` is covalently bonded to ``L394``, thi sis expected (and hence not particularly informative). While ``L392`` is not bonded to ``L394``, there's a strong expectation for it to be near ``L394``, so this is also not very informative. So, as ``n_neighbors`` goes up, these two bars get hidden, and the graph doesn't change anymore. If you're wondering what's with position 391, there's a TYR that points away from ``L394`` throughout the simulation, so it wouldn't appear on the report regardless." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## nlist_cutoff_Ang" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to speed up computations, ``mdciao`` creates an initial neighborlist from the topology file, or the first frame of the trajectory when no topology is passed. Only residues that are within ``nlist_cutoff_Ang`` in that frame are considered potential neighbors, s.t. non-necessary distances between distant domains aren't unnecessarily computed, like the N-term of a receptor and Gamma sub-unit of a G-protein. This is admittedly risky in some cases, and will likely change in future versions of ``mdciao`` (perhaps using kdtrees), but in general it works well if no large conformational changes take place during the simulation. \n", "\n", "Conveniently, ``mdciao`` informs about this in the output by saying (e.g. in the terminal output from above):\n", "```\n", "Pre-computing likely neighborhoods by reducing the neighbor-list\n", "to those within 15 Angstrom in the first frame of reference geom\n", "'':...done!\n", "From 1035 potential distances, the neighborhoods have been reduced to only 74 potential contacts.\n", "If this number is still too high (i.e. the computation is too slow), consider using a smaller nlist_cutoff_Ang \n", "```\n", "\n", "Some known cases where the assumption that initial neighborhood (up to ``nlist_cutoff_Ang`` Angstrom) already contains all potential neighbors doesn't hold: \n", "\n", "* **binding simulations**: \n", " If in your first frame the binding partners are far apart, but get closer during your simulation, the actual neighbors will be missing in the initial neighborlist. Binding partners can be anything: ligand and substrate, protein A and protein B, sub-unit $\\alpha$ and $\\beta$, whatever you want. In these cases, you can either use the final frame of the simulation as a reference frame, or simply increase the ``nlist_cutoff_Ang`` to a value that captures all possible contacts, although this might slow down the computation.\n", "\n", "* **docking data**:\n", " Docking data might contain many different poses where the ligand is sampling not only the orthosteric binding pocket, but anything else found by the algorithm. Since there's no single one representative frame for all this poses, you have to increase ``nlist_cutoff_Ang`` for this.\n", "\n", "* **randomized-data**: \n", " In general, any type of data where there's a **strong expectation** of large conformational variability, beyond local rearrangements contained in the ``nlist_cutoff_Ang``, should be handled carefully.\n", "\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## interface_cutoff_Ang\n", "When computing whole interfaces, rather than just residue neighborhoods, ``nlist_cutoff_Ang`` is called ``interface_cutoff_Ang``, but it's the same concept. Since the user is no longer looking at individual residue neighborhoods, but rather entire interfaces between molecular fragments, i.e. (sub) domains consisting of many residues, we assume that larger conformational changes are expected and thus set the default value at 35 Angstrom." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Finally\n", "Some of these parameters/criteria appear in other places in ``mdciao``, not only at the moment of computing the distances, but also at the moment of showing them. E.g., the method [mdciao.cli.flare.freqs2flare](https://proteinformatics.uni-leipzig.de/mdciao/api/generated/generated/mdciao.flare.freqs2flare.html) automatically hides neighboring contacts via the ``exclude_neighbors = 1`` parameter.\n", "\n", "So, if at any moment you miss some contact in the reports (graphical or otherwise), check if some of the parameters above are at play." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.12" } }, "nbformat": 4, "nbformat_minor": 4 }