Skip to content

Instantly share code, notes, and snippets.

@ptosco
Created June 18, 2019 13:39
Show Gist options
  • Save ptosco/d948935d41c9f2ab6cae958da56b50a4 to your computer and use it in GitHub Desktop.
Save ptosco/d948935d41c9f2ab6cae958da56b50a4 to your computer and use it in GitHub Desktop.
O3A alignment with restraints
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from rdkit import Chem\n",
"from rdkit.Chem import AllChem\n",
"from rdkit.Chem.Draw import IPythonConsole\n",
"import py3Dmol"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def drawit(mols, p=None, width=400, height=300):\n",
" if p is None:\n",
" p = py3Dmol.view(width=width, height=height)\n",
" p.removeAllModels()\n",
" if (not isinstance(mols, list)):\n",
" mols = [mols]\n",
" for m, conf_id in mols:\n",
" if (conf_id == -1):\n",
" conf_ids = [c.GetId() for c in m.GetConformers()]\n",
" else:\n",
" conf_ids = [conf_id]\n",
" for cid in conf_ids:\n",
" mb = Chem.MolToMolBlock(m, confId=cid)\n",
" p.addModel(mb,'sdf')\n",
" p.setStyle({'stick':{}})\n",
" p.setBackgroundColor('0xeeeeee')\n",
" p.zoomTo()\n",
" return p.show()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"ref_smi = \"C1CCCCC1CCCC1CNCCC1\""
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"query_smi = \"N1CC(CC)CCC1\""
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"ref_mol = Chem.MolFromSmiles(ref_smi)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAYAAABNcIgQAAAR0UlEQVR4nO3daUzU1/4G8AcFUVwRFVGsVRQHEIq4VSlWrY0LS9NcaZMmA03Tqy+aztTaRtvcBF7809KYpkytGu5NbCBp0lqbJliVMoit1l0RUVkUtG5YN8AVhYHv/wUdLs7FKnZmzsyc55P4hjC/8yQy5zm/3U9EBERERJrqpToAERGRSixCIiLSGouQiIi0xiIkIiKtsQiJiEhrLEIiItIai5CIiLTGIiQiIq2xCImISGssQiIi0hqLkIiItMYiJCIirbEIiYhIayxCIiLSGouQiIi0xiIkIiKtsQiJiEhrLEIiItIai5CIiLTGIiQiIq2xCImISGssQiIi0hqLkIiItMYiJCIirbEIiYhIayxCIiLSGouQiIi0xiIkIiKtsQiJiEhrLEIiItIai5CIiLTGIiQiIq2xCImISGssQiIi0hqLkIiItOavOgC519atW7Fnzx6MGDEC77zzDgICAlRHUqKyshIbN26En58fVq9ejZCQENWRlLhx4wZycnIgInjrrbcQHR2tOpISra2tWLduHa5evYrExEQkJyerjkRuxD1CTVRXV2Px4sVYunQp6uvrsWbNGsTFxaGoqEh1NLdqaGiAyWRCfHw8qqqqUFpaisjISKxduxY2m011PLex2WxYu3YtIiMjUVpaiqqqKsTHx8NkMqGhoUF1PLcqKipCXFwc1qxZg/r6eixduhSLFy9GdXW16mjkLkI+rbGxUVatWiV9+vSRlJQUOXPmjIiI3L17V7KysqRv376yYMECOXHihOKkrtXW1ib5+fkyfPhwmTJlivz6668iItLe3i75+fkycuRImTRpkmzdulVxUtfbsWOHxMbGyrBhwyQ3N1dsNpuIiBw4cECef/55CQ4OltzcXGltbVWc1LVOnTol6enp0qdPHzGZTHLz5k0REblw4YIYjUYJCAiQZcuWybVr1xQnJVdjEfoo+8Q/YsQIiYqKkqKiom5/7/z5851fepPJJE1NTW5O6nqlpaUSFxcnISEhD038Xd25c+ehhcHJkycVJHWt06dPS3p6euf/tX3i78r+dzNy5EgxGAyybds2BUld6/bt25KVlSWBgYGSkpIidXV13f7eL7/8IvHx8TJ06NBH/t2Qb2AR+qCdO3fKc88916MvsP0zf1UW3uZp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\n",
"text/plain": [
"<rdkit.Chem.rdchem.Mol at 0x252e962a850>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ref_mol"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"query_mol = Chem.MolFromSmiles(query_smi)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<rdkit.Chem.rdchem.Mol at 0x252e962e4e0>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"query_mol"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ref_3d = Chem.AddHs(ref_mol)\n",
"AllChem.EmbedMolecule(ref_3d)\n",
"AllChem.MMFFOptimizeMolecule(ref_3d, nonBondedThresh=100.0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is the 3D structure of the reference:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"application/3dmoljs_load.v0": "<div id=\"3dmolviewer_15608646575839288\" style=\"position: relative; width: 400px; height: 300px\">\n <p id=\"3dmolwarning_15608646575839288\" style=\"background-color:#ffcccc;color:black\">You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension: <br>\n <tt>jupyter labextension install jupyterlab_3dmol</tt></p>\n </div>\n<script>\n\nvar loadScriptAsync = function(uri){\n return new Promise((resolve, reject) => {\n var tag = document.createElement('script');\n tag.src = uri;\n tag.async = true;\n tag.onload = () => {\n resolve();\n };\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n});\n};\n\nif(typeof $3Dmolpromise === 'undefined') {\n$3Dmolpromise = null;\n $3Dmolpromise = loadScriptAsync('https://3dmol.csb.pitt.edu/build/3Dmol.js');\n}\n\nvar viewer_15608646575839288 = null;\nvar warn = document.getElementById(\"3dmolwarning_15608646575839288\");\nif(warn) {\n warn.parentNode.removeChild(warn);\n}\n$3Dmolpromise.then(function() {\nviewer_15608646575839288 = $3Dmol.createViewer($(\"#3dmolviewer_15608646575839288\"),{backgroundColor:\"white\"});\n\tviewer_15608646575839288.removeAllModels();\n\tviewer_15608646575839288.addModel(\"\\n RDKit 3D\\n\\n 42 43 0 0 0 0 0 0 0 0999 V2000\\n -3.3691 -1.3739 0.8807 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.6934 -0.6196 0.7251 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.4936 0.8859 0.6378 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6024 1.2685 -0.5440 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.5513 0.2079 -0.8865 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.1396 -0.6033 0.3496 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.9820 -1.5817 0.0621 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4191 -1.0345 0.3760 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.8399 0.1613 -0.4816 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3185 0.5796 -0.3504 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7573 0.8196 1.1003 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.1079 1.3766 1.2143 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.0002 1.0240 0.1086 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.6911 -0.3453 -0.4853 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2712 -0.4058 -1.0515 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.4671 -2.3436 0.3760 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.2033 -1.5997 1.9419 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.1990 -0.9652 -0.1857 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.3582 -0.8672 1.5604 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.4603 1.3943 0.5500 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.0376 1.2433 1.5697 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.2199 1.4500 -1.4320 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.1075 2.2204 -0.3159 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.6972 0.6998 -1.3595 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.9643 -0.4725 -1.6434 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.8205 0.0947 1.1355 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.1060 -2.4786 0.6834 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0211 -1.9242 -0.9793 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1302 -1.8570 0.2427 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4579 -0.7599 1.4369 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2260 1.0253 -0.1998 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6278 -0.0498 -1.5371 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4053 1.5399 -0.8808 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7367 -0.1223 1.6614 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0554 1.4952 1.6028 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.0616 2.3921 1.2925 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9258 1.7859 -0.6773 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.0328 1.0451 0.4731 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.8059 -1.1127 0.2912 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.4130 -0.5903 -1.2726 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.9153 -1.4394 -0.9875 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2947 -0.1630 -2.1216 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 5 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 9 1 0\\n 9 10 1 0\\n 10 11 1 0\\n 11 12 1 0\\n 12 13 1 0\\n 13 14 1 0\\n 14 15 1 0\\n 6 1 1 0\\n 15 10 1 0\\n 1 16 1 0\\n 1 17 1 0\\n 2 18 1 0\\n 2 19 1 0\\n 3 20 1 0\\n 3 21 1 0\\n 4 22 1 0\\n 4 23 1 0\\n 5 24 1 0\\n 5 25 1 0\\n 6 26 1 0\\n 7 27 1 0\\n 7 28 1 0\\n 8 29 1 0\\n 8 30 1 0\\n 9 31 1 0\\n 9 32 1 0\\n 10 33 1 0\\n 11 34 1 0\\n 11 35 1 0\\n 12 36 1 0\\n 13 37 1 0\\n 13 38 1 0\\n 14 39 1 0\\n 14 40 1 0\\n 15 41 1 0\\n 15 42 1 0\\nM END\\n\",\"sdf\");\n\tviewer_15608646575839288.setStyle({\"stick\": {}});\n\tviewer_15608646575839288.setBackgroundColor(\"0xeeeeee\");\n\tviewer_15608646575839288.zoomTo();\nviewer_15608646575839288.render();\n});\n</script>",
"text/html": [
"<div id=\"3dmolviewer_15608646575839288\" style=\"position: relative; width: 400px; height: 300px\">\n",
" <p id=\"3dmolwarning_15608646575839288\" style=\"background-color:#ffcccc;color:black\">You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension: <br>\n",
" <tt>jupyter labextension install jupyterlab_3dmol</tt></p>\n",
" </div>\n",
"<script>\n",
"\n",
"var loadScriptAsync = function(uri){\n",
" return new Promise((resolve, reject) => {\n",
" var tag = document.createElement('script');\n",
" tag.src = uri;\n",
" tag.async = true;\n",
" tag.onload = () => {\n",
" resolve();\n",
" };\n",
" var firstScriptTag = document.getElementsByTagName('script')[0];\n",
" firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n",
"});\n",
"};\n",
"\n",
"if(typeof $3Dmolpromise === 'undefined') {\n",
"$3Dmolpromise = null;\n",
" $3Dmolpromise = loadScriptAsync('https://3dmol.csb.pitt.edu/build/3Dmol.js');\n",
"}\n",
"\n",
"var viewer_15608646575839288 = null;\n",
"var warn = document.getElementById(\"3dmolwarning_15608646575839288\");\n",
"if(warn) {\n",
" warn.parentNode.removeChild(warn);\n",
"}\n",
"$3Dmolpromise.then(function() {\n",
"viewer_15608646575839288 = $3Dmol.createViewer($(\"#3dmolviewer_15608646575839288\"),{backgroundColor:\"white\"});\n",
"\tviewer_15608646575839288.removeAllModels();\n",
"\tviewer_15608646575839288.addModel(\"\\n RDKit 3D\\n\\n 42 43 0 0 0 0 0 0 0 0999 V2000\\n -3.3691 -1.3739 0.8807 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.6934 -0.6196 0.7251 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.4936 0.8859 0.6378 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6024 1.2685 -0.5440 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.5513 0.2079 -0.8865 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.1396 -0.6033 0.3496 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.9820 -1.5817 0.0621 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4191 -1.0345 0.3760 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.8399 0.1613 -0.4816 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3185 0.5796 -0.3504 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7573 0.8196 1.1003 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.1079 1.3766 1.2143 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.0002 1.0240 0.1086 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.6911 -0.3453 -0.4853 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2712 -0.4058 -1.0515 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.4671 -2.3436 0.3760 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.2033 -1.5997 1.9419 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.1990 -0.9652 -0.1857 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.3582 -0.8672 1.5604 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.4603 1.3943 0.5500 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.0376 1.2433 1.5697 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.2199 1.4500 -1.4320 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.1075 2.2204 -0.3159 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.6972 0.6998 -1.3595 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.9643 -0.4725 -1.6434 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.8205 0.0947 1.1355 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.1060 -2.4786 0.6834 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0211 -1.9242 -0.9793 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1302 -1.8570 0.2427 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4579 -0.7599 1.4369 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2260 1.0253 -0.1998 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6278 -0.0498 -1.5371 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4053 1.5399 -0.8808 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7367 -0.1223 1.6614 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0554 1.4952 1.6028 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.0616 2.3921 1.2925 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9258 1.7859 -0.6773 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.0328 1.0451 0.4731 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.8059 -1.1127 0.2912 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.4130 -0.5903 -1.2726 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.9153 -1.4394 -0.9875 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2947 -0.1630 -2.1216 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 5 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 9 1 0\\n 9 10 1 0\\n 10 11 1 0\\n 11 12 1 0\\n 12 13 1 0\\n 13 14 1 0\\n 14 15 1 0\\n 6 1 1 0\\n 15 10 1 0\\n 1 16 1 0\\n 1 17 1 0\\n 2 18 1 0\\n 2 19 1 0\\n 3 20 1 0\\n 3 21 1 0\\n 4 22 1 0\\n 4 23 1 0\\n 5 24 1 0\\n 5 25 1 0\\n 6 26 1 0\\n 7 27 1 0\\n 7 28 1 0\\n 8 29 1 0\\n 8 30 1 0\\n 9 31 1 0\\n 9 32 1 0\\n 10 33 1 0\\n 11 34 1 0\\n 11 35 1 0\\n 12 36 1 0\\n 13 37 1 0\\n 13 38 1 0\\n 14 39 1 0\\n 14 40 1 0\\n 15 41 1 0\\n 15 42 1 0\\nM END\\n\",\"sdf\");\n",
"\tviewer_15608646575839288.setStyle({\"stick\": {}});\n",
"\tviewer_15608646575839288.setBackgroundColor(\"0xeeeeee\");\n",
"\tviewer_15608646575839288.zoomTo();\n",
"viewer_15608646575839288.render();\n",
"});\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"drawit((ref_3d, -1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now I generate 25 conformations for the query:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(0, 6.434917277700814),\n",
" (0, -1.052469370349446),\n",
" (0, -0.23505038677481543),\n",
" (0, 1.1997422952838075),\n",
" (0, -0.23505038677203857),\n",
" (0, 7.280227050051471),\n",
" (0, -0.23505038567558495),\n",
" (0, 9.676841241598177),\n",
" (0, 0.16608597479334555),\n",
" (0, 1.1282121470743727),\n",
" (0, 1.1282121449498401),\n",
" (0, 7.922127247651736),\n",
" (0, 7.106166583898964),\n",
" (0, 6.970282015419307),\n",
" (0, 7.156480120590095),\n",
" (0, 7.831207419132442),\n",
" (0, -1.1106049376542138),\n",
" (0, -1.0524693700742567),\n",
" (0, -0.17299876606123532),\n",
" (0, 5.965608402042746),\n",
" (0, 0.16608596761051636),\n",
" (0, 7.931544056142387),\n",
" (0, 5.573348938476216),\n",
" (0, -1.1106049382376288),\n",
" (0, -0.23505038608454107)]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"query_3d = Chem.AddHs(query_mol)\n",
"AllChem.EmbedMultipleConfs(query_3d, numConfs=25)\n",
"AllChem.MMFFOptimizeMoleculeConfs(query_3d, nonBondedThresh=100.0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And I generate an `O3A` object for each conformation. I push the `O3A` objects to a list, each as a tuple with the respective `ConfId`:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"o3a_list = [(cid, AllChem.GetO3A(query_3d, ref_3d, prbCid=cid\n",
" )) for cid in range(query_3d.GetNumConformers())]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I sort the list by decreasing `O3A` score such that the first element will be the `(ConfId, O3A)` tuple corresponding the conformation with the best O3A score:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"o3a_list.sort(key=lambda o: o[1].Score(), reverse=True)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(13, <rdkit.Chem.rdMolAlign.O3A at 0x252e975fb20>),\n",
" (14, <rdkit.Chem.rdMolAlign.O3A at 0x252e975f030>),\n",
" (1, <rdkit.Chem.rdMolAlign.O3A at 0x252f1365d00>),\n",
" (15, <rdkit.Chem.rdMolAlign.O3A at 0x252e975f990>),\n",
" (18, <rdkit.Chem.rdMolAlign.O3A at 0x252f13537b0>),\n",
" (17, <rdkit.Chem.rdMolAlign.O3A at 0x252f1353710>),\n",
" (11, <rdkit.Chem.rdMolAlign.O3A at 0x252e975fda0>),\n",
" (9, <rdkit.Chem.rdMolAlign.O3A at 0x252e975f850>),\n",
" (10, <rdkit.Chem.rdMolAlign.O3A at 0x252e975fa80>),\n",
" (22, <rdkit.Chem.rdMolAlign.O3A at 0x252f1353e90>),\n",
" (23, <rdkit.Chem.rdMolAlign.O3A at 0x252f1353620>),\n",
" (2, <rdkit.Chem.rdMolAlign.O3A at 0x252e8365a30>),\n",
" (4, <rdkit.Chem.rdMolAlign.O3A at 0x252e8365990>),\n",
" (6, <rdkit.Chem.rdMolAlign.O3A at 0x252e8365120>),\n",
" (21, <rdkit.Chem.rdMolAlign.O3A at 0x252f13535d0>),\n",
" (24, <rdkit.Chem.rdMolAlign.O3A at 0x252f1353800>),\n",
" (16, <rdkit.Chem.rdMolAlign.O3A at 0x252d17efc10>),\n",
" (7, <rdkit.Chem.rdMolAlign.O3A at 0x252e8365490>),\n",
" (12, <rdkit.Chem.rdMolAlign.O3A at 0x252e975fdf0>),\n",
" (19, <rdkit.Chem.rdMolAlign.O3A at 0x252f1353b70>),\n",
" (5, <rdkit.Chem.rdMolAlign.O3A at 0x252e8365300>),\n",
" (0, <rdkit.Chem.rdMolAlign.O3A at 0x252f1365b70>),\n",
" (8, <rdkit.Chem.rdMolAlign.O3A at 0x252e975fb70>),\n",
" (20, <rdkit.Chem.rdMolAlign.O3A at 0x252f1353d00>),\n",
" (3, <rdkit.Chem.rdMolAlign.O3A at 0x252e83655d0>)]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"o3a_list"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"best_o3a = o3a_list[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is the reciprocal arrangement of query and reference before I apply any alignment. As expected, they are not aligned yet:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"application/3dmoljs_load.v0": "<div id=\"3dmolviewer_1560864658366598\" style=\"position: relative; width: 400px; height: 300px\">\n <p id=\"3dmolwarning_1560864658366598\" style=\"background-color:#ffcccc;color:black\">You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension: <br>\n <tt>jupyter labextension install jupyterlab_3dmol</tt></p>\n </div>\n<script>\n\nvar loadScriptAsync = function(uri){\n return new Promise((resolve, reject) => {\n var tag = document.createElement('script');\n tag.src = uri;\n tag.async = true;\n tag.onload = () => {\n resolve();\n };\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n});\n};\n\nif(typeof $3Dmolpromise === 'undefined') {\n$3Dmolpromise = null;\n $3Dmolpromise = loadScriptAsync('https://3dmol.csb.pitt.edu/build/3Dmol.js');\n}\n\nvar viewer_1560864658366598 = null;\nvar warn = document.getElementById(\"3dmolwarning_1560864658366598\");\nif(warn) {\n warn.parentNode.removeChild(warn);\n}\n$3Dmolpromise.then(function() {\nviewer_1560864658366598 = $3Dmol.createViewer($(\"#3dmolviewer_1560864658366598\"),{backgroundColor:\"white\"});\n\tviewer_1560864658366598.removeAllModels();\n\tviewer_1560864658366598.addModel(\"\\n RDKit 3D\\n\\n 42 43 0 0 0 0 0 0 0 0999 V2000\\n -3.3691 -1.3739 0.8807 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.6934 -0.6196 0.7251 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.4936 0.8859 0.6378 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6024 1.2685 -0.5440 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.5513 0.2079 -0.8865 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.1396 -0.6033 0.3496 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.9820 -1.5817 0.0621 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4191 -1.0345 0.3760 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.8399 0.1613 -0.4816 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3185 0.5796 -0.3504 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7573 0.8196 1.1003 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.1079 1.3766 1.2143 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.0002 1.0240 0.1086 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.6911 -0.3453 -0.4853 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2712 -0.4058 -1.0515 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.4671 -2.3436 0.3760 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.2033 -1.5997 1.9419 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.1990 -0.9652 -0.1857 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.3582 -0.8672 1.5604 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.4603 1.3943 0.5500 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.0376 1.2433 1.5697 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.2199 1.4500 -1.4320 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.1075 2.2204 -0.3159 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.6972 0.6998 -1.3595 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.9643 -0.4725 -1.6434 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.8205 0.0947 1.1355 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.1060 -2.4786 0.6834 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0211 -1.9242 -0.9793 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1302 -1.8570 0.2427 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4579 -0.7599 1.4369 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2260 1.0253 -0.1998 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6278 -0.0498 -1.5371 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4053 1.5399 -0.8808 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7367 -0.1223 1.6614 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0554 1.4952 1.6028 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.0616 2.3921 1.2925 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9258 1.7859 -0.6773 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.0328 1.0451 0.4731 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.8059 -1.1127 0.2912 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.4130 -0.5903 -1.2726 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.9153 -1.4394 -0.9875 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2947 -0.1630 -2.1216 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 5 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 9 1 0\\n 9 10 1 0\\n 10 11 1 0\\n 11 12 1 0\\n 12 13 1 0\\n 13 14 1 0\\n 14 15 1 0\\n 6 1 1 0\\n 15 10 1 0\\n 1 16 1 0\\n 1 17 1 0\\n 2 18 1 0\\n 2 19 1 0\\n 3 20 1 0\\n 3 21 1 0\\n 4 22 1 0\\n 4 23 1 0\\n 5 24 1 0\\n 5 25 1 0\\n 6 26 1 0\\n 7 27 1 0\\n 7 28 1 0\\n 8 29 1 0\\n 8 30 1 0\\n 9 31 1 0\\n 9 32 1 0\\n 10 33 1 0\\n 11 34 1 0\\n 11 35 1 0\\n 12 36 1 0\\n 13 37 1 0\\n 13 38 1 0\\n 14 39 1 0\\n 14 40 1 0\\n 15 41 1 0\\n 15 42 1 0\\nM END\\n\",\"sdf\");\n\tviewer_1560864658366598.addModel(\"\\n RDKit 3D\\n\\n 23 23 0 0 0 0 0 0 0 0999 V2000\\n -1.3649 1.5818 0.2333 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.0302 1.2469 0.5406 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.3433 -0.2640 0.5214 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.8538 -0.5589 0.4899 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.5740 -0.1968 -0.8017 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.4351 -0.9481 -0.6057 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.9424 -0.7087 -0.4573 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2799 0.4715 0.4566 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.6511 2.3958 0.7753 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6550 1.7893 -0.1752 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2825 1.6397 1.5335 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.0217 -0.6851 1.4700 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3370 -0.0319 1.3219 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0047 -1.6300 0.6748 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4870 0.8679 -1.0332 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.6405 -0.4273 -0.7075 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.1899 -0.7704 -1.6501 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.1160 -0.5500 -1.5768 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.2317 -2.0250 -0.6252 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.3737 -0.5487 -1.4533 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.4192 -1.6108 -0.0554 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.3059 0.7975 0.2521 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2563 0.1652 1.5096 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 3 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 1 1 0\\n 1 9 1 0\\n 2 10 1 0\\n 2 11 1 0\\n 3 12 1 0\\n 4 13 1 0\\n 4 14 1 0\\n 5 15 1 0\\n 5 16 1 0\\n 5 17 1 0\\n 6 18 1 0\\n 6 19 1 0\\n 7 20 1 0\\n 7 21 1 0\\n 8 22 1 0\\n 8 23 1 0\\nM END\\n\",\"sdf\");\n\tviewer_1560864658366598.setStyle({\"stick\": {}});\n\tviewer_1560864658366598.setBackgroundColor(\"0xeeeeee\");\n\tviewer_1560864658366598.zoomTo();\nviewer_1560864658366598.render();\n});\n</script>",
"text/html": [
"<div id=\"3dmolviewer_1560864658366598\" style=\"position: relative; width: 400px; height: 300px\">\n",
" <p id=\"3dmolwarning_1560864658366598\" style=\"background-color:#ffcccc;color:black\">You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension: <br>\n",
" <tt>jupyter labextension install jupyterlab_3dmol</tt></p>\n",
" </div>\n",
"<script>\n",
"\n",
"var loadScriptAsync = function(uri){\n",
" return new Promise((resolve, reject) => {\n",
" var tag = document.createElement('script');\n",
" tag.src = uri;\n",
" tag.async = true;\n",
" tag.onload = () => {\n",
" resolve();\n",
" };\n",
" var firstScriptTag = document.getElementsByTagName('script')[0];\n",
" firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n",
"});\n",
"};\n",
"\n",
"if(typeof $3Dmolpromise === 'undefined') {\n",
"$3Dmolpromise = null;\n",
" $3Dmolpromise = loadScriptAsync('https://3dmol.csb.pitt.edu/build/3Dmol.js');\n",
"}\n",
"\n",
"var viewer_1560864658366598 = null;\n",
"var warn = document.getElementById(\"3dmolwarning_1560864658366598\");\n",
"if(warn) {\n",
" warn.parentNode.removeChild(warn);\n",
"}\n",
"$3Dmolpromise.then(function() {\n",
"viewer_1560864658366598 = $3Dmol.createViewer($(\"#3dmolviewer_1560864658366598\"),{backgroundColor:\"white\"});\n",
"\tviewer_1560864658366598.removeAllModels();\n",
"\tviewer_1560864658366598.addModel(\"\\n RDKit 3D\\n\\n 42 43 0 0 0 0 0 0 0 0999 V2000\\n -3.3691 -1.3739 0.8807 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.6934 -0.6196 0.7251 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.4936 0.8859 0.6378 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6024 1.2685 -0.5440 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.5513 0.2079 -0.8865 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.1396 -0.6033 0.3496 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.9820 -1.5817 0.0621 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4191 -1.0345 0.3760 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.8399 0.1613 -0.4816 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3185 0.5796 -0.3504 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7573 0.8196 1.1003 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.1079 1.3766 1.2143 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.0002 1.0240 0.1086 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.6911 -0.3453 -0.4853 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2712 -0.4058 -1.0515 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.4671 -2.3436 0.3760 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.2033 -1.5997 1.9419 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.1990 -0.9652 -0.1857 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.3582 -0.8672 1.5604 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.4603 1.3943 0.5500 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.0376 1.2433 1.5697 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.2199 1.4500 -1.4320 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.1075 2.2204 -0.3159 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.6972 0.6998 -1.3595 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.9643 -0.4725 -1.6434 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.8205 0.0947 1.1355 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.1060 -2.4786 0.6834 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0211 -1.9242 -0.9793 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1302 -1.8570 0.2427 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4579 -0.7599 1.4369 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2260 1.0253 -0.1998 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6278 -0.0498 -1.5371 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4053 1.5399 -0.8808 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7367 -0.1223 1.6614 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0554 1.4952 1.6028 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.0616 2.3921 1.2925 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9258 1.7859 -0.6773 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.0328 1.0451 0.4731 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.8059 -1.1127 0.2912 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.4130 -0.5903 -1.2726 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.9153 -1.4394 -0.9875 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2947 -0.1630 -2.1216 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 5 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 9 1 0\\n 9 10 1 0\\n 10 11 1 0\\n 11 12 1 0\\n 12 13 1 0\\n 13 14 1 0\\n 14 15 1 0\\n 6 1 1 0\\n 15 10 1 0\\n 1 16 1 0\\n 1 17 1 0\\n 2 18 1 0\\n 2 19 1 0\\n 3 20 1 0\\n 3 21 1 0\\n 4 22 1 0\\n 4 23 1 0\\n 5 24 1 0\\n 5 25 1 0\\n 6 26 1 0\\n 7 27 1 0\\n 7 28 1 0\\n 8 29 1 0\\n 8 30 1 0\\n 9 31 1 0\\n 9 32 1 0\\n 10 33 1 0\\n 11 34 1 0\\n 11 35 1 0\\n 12 36 1 0\\n 13 37 1 0\\n 13 38 1 0\\n 14 39 1 0\\n 14 40 1 0\\n 15 41 1 0\\n 15 42 1 0\\nM END\\n\",\"sdf\");\n",
"\tviewer_1560864658366598.addModel(\"\\n RDKit 3D\\n\\n 23 23 0 0 0 0 0 0 0 0999 V2000\\n -1.3649 1.5818 0.2333 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.0302 1.2469 0.5406 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.3433 -0.2640 0.5214 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.8538 -0.5589 0.4899 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.5740 -0.1968 -0.8017 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.4351 -0.9481 -0.6057 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.9424 -0.7087 -0.4573 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2799 0.4715 0.4566 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.6511 2.3958 0.7753 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6550 1.7893 -0.1752 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2825 1.6397 1.5335 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.0217 -0.6851 1.4700 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3370 -0.0319 1.3219 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0047 -1.6300 0.6748 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4870 0.8679 -1.0332 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.6405 -0.4273 -0.7075 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.1899 -0.7704 -1.6501 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.1160 -0.5500 -1.5768 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.2317 -2.0250 -0.6252 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.3737 -0.5487 -1.4533 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.4192 -1.6108 -0.0554 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.3059 0.7975 0.2521 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2563 0.1652 1.5096 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 3 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 1 1 0\\n 1 9 1 0\\n 2 10 1 0\\n 2 11 1 0\\n 3 12 1 0\\n 4 13 1 0\\n 4 14 1 0\\n 5 15 1 0\\n 5 16 1 0\\n 5 17 1 0\\n 6 18 1 0\\n 6 19 1 0\\n 7 20 1 0\\n 7 21 1 0\\n 8 22 1 0\\n 8 23 1 0\\nM END\\n\",\"sdf\");\n",
"\tviewer_1560864658366598.setStyle({\"stick\": {}});\n",
"\tviewer_1560864658366598.setBackgroundColor(\"0xeeeeee\");\n",
"\tviewer_1560864658366598.zoomTo();\n",
"viewer_1560864658366598.render();\n",
"});\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"drawit([(ref_3d, -1), (query_3d, best_o3a[0])])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now I make a copy of `query_3d` such that I have a clean copy not affected by any transformation:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"query_3d_copy = Chem.Mol(query_3d)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now I do the alignment:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.24382599379689626"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"best_o3a[1].Align()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I can now verify that that conformation of `query_3d` is now indeed aligned against `ref3d`. AS expected, the piperidine ring in `query_3d` matches the piperidine ring in `ref_3d`:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"application/3dmoljs_load.v0": "<div id=\"3dmolviewer_15608646584233444\" style=\"position: relative; width: 400px; height: 300px\">\n <p id=\"3dmolwarning_15608646584233444\" style=\"background-color:#ffcccc;color:black\">You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension: <br>\n <tt>jupyter labextension install jupyterlab_3dmol</tt></p>\n </div>\n<script>\n\nvar loadScriptAsync = function(uri){\n return new Promise((resolve, reject) => {\n var tag = document.createElement('script');\n tag.src = uri;\n tag.async = true;\n tag.onload = () => {\n resolve();\n };\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n});\n};\n\nif(typeof $3Dmolpromise === 'undefined') {\n$3Dmolpromise = null;\n $3Dmolpromise = loadScriptAsync('https://3dmol.csb.pitt.edu/build/3Dmol.js');\n}\n\nvar viewer_15608646584233444 = null;\nvar warn = document.getElementById(\"3dmolwarning_15608646584233444\");\nif(warn) {\n warn.parentNode.removeChild(warn);\n}\n$3Dmolpromise.then(function() {\nviewer_15608646584233444 = $3Dmol.createViewer($(\"#3dmolviewer_15608646584233444\"),{backgroundColor:\"white\"});\n\tviewer_15608646584233444.removeAllModels();\n\tviewer_15608646584233444.addModel(\"\\n RDKit 3D\\n\\n 42 43 0 0 0 0 0 0 0 0999 V2000\\n -3.3691 -1.3739 0.8807 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.6934 -0.6196 0.7251 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.4936 0.8859 0.6378 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6024 1.2685 -0.5440 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.5513 0.2079 -0.8865 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.1396 -0.6033 0.3496 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.9820 -1.5817 0.0621 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4191 -1.0345 0.3760 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.8399 0.1613 -0.4816 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3185 0.5796 -0.3504 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7573 0.8196 1.1003 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.1079 1.3766 1.2143 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.0002 1.0240 0.1086 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.6911 -0.3453 -0.4853 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2712 -0.4058 -1.0515 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.4671 -2.3436 0.3760 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.2033 -1.5997 1.9419 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.1990 -0.9652 -0.1857 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.3582 -0.8672 1.5604 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.4603 1.3943 0.5500 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.0376 1.2433 1.5697 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.2199 1.4500 -1.4320 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.1075 2.2204 -0.3159 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.6972 0.6998 -1.3595 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.9643 -0.4725 -1.6434 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.8205 0.0947 1.1355 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.1060 -2.4786 0.6834 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0211 -1.9242 -0.9793 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1302 -1.8570 0.2427 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4579 -0.7599 1.4369 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2260 1.0253 -0.1998 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6278 -0.0498 -1.5371 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4053 1.5399 -0.8808 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7367 -0.1223 1.6614 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0554 1.4952 1.6028 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.0616 2.3921 1.2925 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9258 1.7859 -0.6773 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.0328 1.0451 0.4731 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.8059 -1.1127 0.2912 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.4130 -0.5903 -1.2726 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.9153 -1.4394 -0.9875 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2947 -0.1630 -2.1216 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 5 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 9 1 0\\n 9 10 1 0\\n 10 11 1 0\\n 11 12 1 0\\n 12 13 1 0\\n 13 14 1 0\\n 14 15 1 0\\n 6 1 1 0\\n 15 10 1 0\\n 1 16 1 0\\n 1 17 1 0\\n 2 18 1 0\\n 2 19 1 0\\n 3 20 1 0\\n 3 21 1 0\\n 4 22 1 0\\n 4 23 1 0\\n 5 24 1 0\\n 5 25 1 0\\n 6 26 1 0\\n 7 27 1 0\\n 7 28 1 0\\n 8 29 1 0\\n 8 30 1 0\\n 9 31 1 0\\n 9 32 1 0\\n 10 33 1 0\\n 11 34 1 0\\n 11 35 1 0\\n 12 36 1 0\\n 13 37 1 0\\n 13 38 1 0\\n 14 39 1 0\\n 14 40 1 0\\n 15 41 1 0\\n 15 42 1 0\\nM END\\n\",\"sdf\");\n\tviewer_15608646584233444.addModel(\"\\n RDKit 3D\\n\\n 23 23 0 0 0 0 0 0 0 0999 V2000\\n 4.1308 1.2350 1.2569 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.6932 1.1367 0.9803 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3469 0.4838 -0.3743 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.8668 0.0732 -0.4766 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4368 -1.0864 0.4114 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.3191 -0.6615 -0.6700 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.7704 -0.1669 -0.6620 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9482 1.1741 0.0536 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.3237 2.0894 1.7776 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.2441 0.5849 1.8114 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.2548 2.1422 1.0016 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4978 1.2467 -1.1525 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2392 0.9434 -0.2476 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6502 -0.1971 -1.5178 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6002 -0.8721 1.4707 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.6327 -1.2792 0.2756 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.9694 -2.0069 0.1559 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2170 -1.4455 0.0905 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.0927 -1.1286 -1.6355 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.4008 -0.9313 -0.1907 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.1286 -0.0640 -1.6934 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.0033 1.2965 0.3226 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.7008 2.0066 -0.6166 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 3 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 1 1 0\\n 1 9 1 0\\n 2 10 1 0\\n 2 11 1 0\\n 3 12 1 0\\n 4 13 1 0\\n 4 14 1 0\\n 5 15 1 0\\n 5 16 1 0\\n 5 17 1 0\\n 6 18 1 0\\n 6 19 1 0\\n 7 20 1 0\\n 7 21 1 0\\n 8 22 1 0\\n 8 23 1 0\\nM END\\n\",\"sdf\");\n\tviewer_15608646584233444.setStyle({\"stick\": {}});\n\tviewer_15608646584233444.setBackgroundColor(\"0xeeeeee\");\n\tviewer_15608646584233444.zoomTo();\nviewer_15608646584233444.render();\n});\n</script>",
"text/html": [
"<div id=\"3dmolviewer_15608646584233444\" style=\"position: relative; width: 400px; height: 300px\">\n",
" <p id=\"3dmolwarning_15608646584233444\" style=\"background-color:#ffcccc;color:black\">You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension: <br>\n",
" <tt>jupyter labextension install jupyterlab_3dmol</tt></p>\n",
" </div>\n",
"<script>\n",
"\n",
"var loadScriptAsync = function(uri){\n",
" return new Promise((resolve, reject) => {\n",
" var tag = document.createElement('script');\n",
" tag.src = uri;\n",
" tag.async = true;\n",
" tag.onload = () => {\n",
" resolve();\n",
" };\n",
" var firstScriptTag = document.getElementsByTagName('script')[0];\n",
" firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n",
"});\n",
"};\n",
"\n",
"if(typeof $3Dmolpromise === 'undefined') {\n",
"$3Dmolpromise = null;\n",
" $3Dmolpromise = loadScriptAsync('https://3dmol.csb.pitt.edu/build/3Dmol.js');\n",
"}\n",
"\n",
"var viewer_15608646584233444 = null;\n",
"var warn = document.getElementById(\"3dmolwarning_15608646584233444\");\n",
"if(warn) {\n",
" warn.parentNode.removeChild(warn);\n",
"}\n",
"$3Dmolpromise.then(function() {\n",
"viewer_15608646584233444 = $3Dmol.createViewer($(\"#3dmolviewer_15608646584233444\"),{backgroundColor:\"white\"});\n",
"\tviewer_15608646584233444.removeAllModels();\n",
"\tviewer_15608646584233444.addModel(\"\\n RDKit 3D\\n\\n 42 43 0 0 0 0 0 0 0 0999 V2000\\n -3.3691 -1.3739 0.8807 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.6934 -0.6196 0.7251 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.4936 0.8859 0.6378 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6024 1.2685 -0.5440 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.5513 0.2079 -0.8865 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.1396 -0.6033 0.3496 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.9820 -1.5817 0.0621 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4191 -1.0345 0.3760 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.8399 0.1613 -0.4816 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3185 0.5796 -0.3504 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7573 0.8196 1.1003 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.1079 1.3766 1.2143 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.0002 1.0240 0.1086 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.6911 -0.3453 -0.4853 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2712 -0.4058 -1.0515 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.4671 -2.3436 0.3760 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.2033 -1.5997 1.9419 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.1990 -0.9652 -0.1857 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.3582 -0.8672 1.5604 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.4603 1.3943 0.5500 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.0376 1.2433 1.5697 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.2199 1.4500 -1.4320 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.1075 2.2204 -0.3159 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.6972 0.6998 -1.3595 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.9643 -0.4725 -1.6434 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.8205 0.0947 1.1355 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.1060 -2.4786 0.6834 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0211 -1.9242 -0.9793 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1302 -1.8570 0.2427 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4579 -0.7599 1.4369 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2260 1.0253 -0.1998 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6278 -0.0498 -1.5371 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4053 1.5399 -0.8808 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7367 -0.1223 1.6614 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0554 1.4952 1.6028 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.0616 2.3921 1.2925 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9258 1.7859 -0.6773 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.0328 1.0451 0.4731 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.8059 -1.1127 0.2912 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.4130 -0.5903 -1.2726 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.9153 -1.4394 -0.9875 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2947 -0.1630 -2.1216 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 5 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 9 1 0\\n 9 10 1 0\\n 10 11 1 0\\n 11 12 1 0\\n 12 13 1 0\\n 13 14 1 0\\n 14 15 1 0\\n 6 1 1 0\\n 15 10 1 0\\n 1 16 1 0\\n 1 17 1 0\\n 2 18 1 0\\n 2 19 1 0\\n 3 20 1 0\\n 3 21 1 0\\n 4 22 1 0\\n 4 23 1 0\\n 5 24 1 0\\n 5 25 1 0\\n 6 26 1 0\\n 7 27 1 0\\n 7 28 1 0\\n 8 29 1 0\\n 8 30 1 0\\n 9 31 1 0\\n 9 32 1 0\\n 10 33 1 0\\n 11 34 1 0\\n 11 35 1 0\\n 12 36 1 0\\n 13 37 1 0\\n 13 38 1 0\\n 14 39 1 0\\n 14 40 1 0\\n 15 41 1 0\\n 15 42 1 0\\nM END\\n\",\"sdf\");\n",
"\tviewer_15608646584233444.addModel(\"\\n RDKit 3D\\n\\n 23 23 0 0 0 0 0 0 0 0999 V2000\\n 4.1308 1.2350 1.2569 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.6932 1.1367 0.9803 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3469 0.4838 -0.3743 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.8668 0.0732 -0.4766 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4368 -1.0864 0.4114 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.3191 -0.6615 -0.6700 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.7704 -0.1669 -0.6620 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9482 1.1741 0.0536 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.3237 2.0894 1.7776 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.2441 0.5849 1.8114 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.2548 2.1422 1.0016 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4978 1.2467 -1.1525 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2392 0.9434 -0.2476 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6502 -0.1971 -1.5178 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6002 -0.8721 1.4707 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.6327 -1.2792 0.2756 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.9694 -2.0069 0.1559 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2170 -1.4455 0.0905 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.0927 -1.1286 -1.6355 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.4008 -0.9313 -0.1907 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.1286 -0.0640 -1.6934 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.0033 1.2965 0.3226 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.7008 2.0066 -0.6166 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 3 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 1 1 0\\n 1 9 1 0\\n 2 10 1 0\\n 2 11 1 0\\n 3 12 1 0\\n 4 13 1 0\\n 4 14 1 0\\n 5 15 1 0\\n 5 16 1 0\\n 5 17 1 0\\n 6 18 1 0\\n 6 19 1 0\\n 7 20 1 0\\n 7 21 1 0\\n 8 22 1 0\\n 8 23 1 0\\nM END\\n\",\"sdf\");\n",
"\tviewer_15608646584233444.setStyle({\"stick\": {}});\n",
"\tviewer_15608646584233444.setBackgroundColor(\"0xeeeeee\");\n",
"\tviewer_15608646584233444.zoomTo();\n",
"viewer_15608646584233444.render();\n",
"});\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"drawit([(ref_3d, -1), (query_3d, best_o3a[0])])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Instead, I will now attempt to align `query_3d_copy` forcing the match of its piperidine ring to the reference cyclohexane ring:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"piperidine_query = Chem.MolFromSmarts(\"CC1CNCCC1\")"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"cyclohexane_query = Chem.MolFromSmarts(\"CC1CCCCC1\")"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<rdkit.Chem.rdchem.Mol at 0x252e8365260>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"piperidine_query"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<rdkit.Chem.rdchem.Mol at 0x252e975ebc0>"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cyclohexane_query"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"query_3d_piperidine_indices = query_3d.GetSubstructMatch(piperidine_query)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(3, 2, 1, 0, 7, 6, 5)"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"query_3d_piperidine_indices"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"ref_3d_cyclohexane_indices = ref_3d.GetSubstructMatch(cyclohexane_query)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(6, 5, 0, 1, 2, 3, 4)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ref_3d_cyclohexane_indices"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I request a 1-1 match of piperdine atoms against cyclohexane atoms:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"constraint_map = list(zip(query_3d_piperidine_indices,\n",
" ref_3d_cyclohexane_indices))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is going to be my constraints map:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(3, 6), (2, 5), (1, 0), (0, 1), (7, 2), (6, 3), (5, 4)]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"constraint_map"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"o3a_list2 = [(cid, AllChem.GetO3A(query_3d_copy, ref_3d, prbCid=cid,\n",
" constraintMap=constraint_map)) for cid in range(\n",
" query_3d_copy.GetNumConformers())]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I sort the list by decreasing `O3A` score such that the first element will be the `(ConfId, O3A)` tuple corresponding the conformation with the best O3A score:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"o3a_list2.sort(key=lambda o: o[1].Score(), reverse=True)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(22, <rdkit.Chem.rdMolAlign.O3A at 0x252f254da80>),\n",
" (23, <rdkit.Chem.rdMolAlign.O3A at 0x252f254dd50>),\n",
" (4, <rdkit.Chem.rdMolAlign.O3A at 0x252f254dee0>),\n",
" (2, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d800>),\n",
" (6, <rdkit.Chem.rdMolAlign.O3A at 0x252f254ddf0>),\n",
" (24, <rdkit.Chem.rdMolAlign.O3A at 0x252f254dc10>),\n",
" (16, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d530>),\n",
" (15, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d1c0>),\n",
" (18, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d300>),\n",
" (17, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d990>),\n",
" (14, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d170>),\n",
" (19, <rdkit.Chem.rdMolAlign.O3A at 0x252f254df30>),\n",
" (13, <rdkit.Chem.rdMolAlign.O3A at 0x252f254dda0>),\n",
" (7, <rdkit.Chem.rdMolAlign.O3A at 0x252f254df80>),\n",
" (12, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d940>),\n",
" (0, <rdkit.Chem.rdMolAlign.O3A at 0x252e9626da0>),\n",
" (1, <rdkit.Chem.rdMolAlign.O3A at 0x252e9626490>),\n",
" (20, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d120>),\n",
" (3, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d670>),\n",
" (5, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d8a0>),\n",
" (21, <rdkit.Chem.rdMolAlign.O3A at 0x252f254dd00>),\n",
" (8, <rdkit.Chem.rdMolAlign.O3A at 0x252f254db20>),\n",
" (9, <rdkit.Chem.rdMolAlign.O3A at 0x252f254dad0>),\n",
" (10, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d620>),\n",
" (11, <rdkit.Chem.rdMolAlign.O3A at 0x252f254d4e0>)]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"o3a_list2"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"best_o3a2 = o3a_list2[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now I do the alignment:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.31097391168230054"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"best_o3a2[1].Align()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I can now verify that this tame the piperidine ring in `query_3d` indeed aligned against the cyclohexane ring in `ring_3d`:"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"application/3dmoljs_load.v0": "<div id=\"3dmolviewer_1560864659553314\" style=\"position: relative; width: 400px; height: 300px\">\n <p id=\"3dmolwarning_1560864659553314\" style=\"background-color:#ffcccc;color:black\">You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension: <br>\n <tt>jupyter labextension install jupyterlab_3dmol</tt></p>\n </div>\n<script>\n\nvar loadScriptAsync = function(uri){\n return new Promise((resolve, reject) => {\n var tag = document.createElement('script');\n tag.src = uri;\n tag.async = true;\n tag.onload = () => {\n resolve();\n };\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n});\n};\n\nif(typeof $3Dmolpromise === 'undefined') {\n$3Dmolpromise = null;\n $3Dmolpromise = loadScriptAsync('https://3dmol.csb.pitt.edu/build/3Dmol.js');\n}\n\nvar viewer_1560864659553314 = null;\nvar warn = document.getElementById(\"3dmolwarning_1560864659553314\");\nif(warn) {\n warn.parentNode.removeChild(warn);\n}\n$3Dmolpromise.then(function() {\nviewer_1560864659553314 = $3Dmol.createViewer($(\"#3dmolviewer_1560864659553314\"),{backgroundColor:\"white\"});\n\tviewer_1560864659553314.removeAllModels();\n\tviewer_1560864659553314.addModel(\"\\n RDKit 3D\\n\\n 42 43 0 0 0 0 0 0 0 0999 V2000\\n -3.3691 -1.3739 0.8807 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.6934 -0.6196 0.7251 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.4936 0.8859 0.6378 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6024 1.2685 -0.5440 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.5513 0.2079 -0.8865 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.1396 -0.6033 0.3496 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.9820 -1.5817 0.0621 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4191 -1.0345 0.3760 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.8399 0.1613 -0.4816 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3185 0.5796 -0.3504 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7573 0.8196 1.1003 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.1079 1.3766 1.2143 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.0002 1.0240 0.1086 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.6911 -0.3453 -0.4853 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2712 -0.4058 -1.0515 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.4671 -2.3436 0.3760 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.2033 -1.5997 1.9419 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.1990 -0.9652 -0.1857 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.3582 -0.8672 1.5604 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.4603 1.3943 0.5500 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.0376 1.2433 1.5697 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.2199 1.4500 -1.4320 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.1075 2.2204 -0.3159 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.6972 0.6998 -1.3595 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.9643 -0.4725 -1.6434 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.8205 0.0947 1.1355 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.1060 -2.4786 0.6834 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0211 -1.9242 -0.9793 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1302 -1.8570 0.2427 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4579 -0.7599 1.4369 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2260 1.0253 -0.1998 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6278 -0.0498 -1.5371 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4053 1.5399 -0.8808 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7367 -0.1223 1.6614 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0554 1.4952 1.6028 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.0616 2.3921 1.2925 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9258 1.7859 -0.6773 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.0328 1.0451 0.4731 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.8059 -1.1127 0.2912 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.4130 -0.5903 -1.2726 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.9153 -1.4394 -0.9875 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2947 -0.1630 -2.1216 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 5 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 9 1 0\\n 9 10 1 0\\n 10 11 1 0\\n 11 12 1 0\\n 12 13 1 0\\n 13 14 1 0\\n 14 15 1 0\\n 6 1 1 0\\n 15 10 1 0\\n 1 16 1 0\\n 1 17 1 0\\n 2 18 1 0\\n 2 19 1 0\\n 3 20 1 0\\n 3 21 1 0\\n 4 22 1 0\\n 4 23 1 0\\n 5 24 1 0\\n 5 25 1 0\\n 6 26 1 0\\n 7 27 1 0\\n 7 28 1 0\\n 8 29 1 0\\n 8 30 1 0\\n 9 31 1 0\\n 9 32 1 0\\n 10 33 1 0\\n 11 34 1 0\\n 11 35 1 0\\n 12 36 1 0\\n 13 37 1 0\\n 13 38 1 0\\n 14 39 1 0\\n 14 40 1 0\\n 15 41 1 0\\n 15 42 1 0\\nM END\\n\",\"sdf\");\n\tviewer_1560864659553314.addModel(\"\\n RDKit 3D\\n\\n 23 23 0 0 0 0 0 0 0 0999 V2000\\n -4.6809 -0.6101 0.7703 N 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.5304 -1.4385 0.3984 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.1999 -0.6720 0.4387 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0172 -1.6205 0.1766 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.3381 -0.9433 0.3251 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2339 0.5026 -0.5563 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6468 1.0425 -0.7823 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.5393 0.8046 0.4286 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.5196 -0.9936 0.3354 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.4956 -2.2958 1.0799 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6894 -1.8433 -0.6096 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.0789 -0.2608 1.4513 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0629 -2.4578 0.8838 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0961 -2.0524 -0.8286 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1405 -1.6768 0.1961 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4456 -0.4952 1.3180 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4803 -0.1597 -0.4250 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.5941 1.3075 -0.1732 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.8144 0.2121 -1.5273 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.0875 0.5519 -1.6599 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6000 2.1122 -1.0166 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.5330 1.2297 0.2478 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.1302 1.3368 1.2959 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 3 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 1 1 0\\n 1 9 1 0\\n 2 10 1 0\\n 2 11 1 0\\n 3 12 1 0\\n 4 13 1 0\\n 4 14 1 0\\n 5 15 1 0\\n 5 16 1 0\\n 5 17 1 0\\n 6 18 1 0\\n 6 19 1 0\\n 7 20 1 0\\n 7 21 1 0\\n 8 22 1 0\\n 8 23 1 0\\nM END\\n\",\"sdf\");\n\tviewer_1560864659553314.setStyle({\"stick\": {}});\n\tviewer_1560864659553314.setBackgroundColor(\"0xeeeeee\");\n\tviewer_1560864659553314.zoomTo();\nviewer_1560864659553314.render();\n});\n</script>",
"text/html": [
"<div id=\"3dmolviewer_1560864659553314\" style=\"position: relative; width: 400px; height: 300px\">\n",
" <p id=\"3dmolwarning_1560864659553314\" style=\"background-color:#ffcccc;color:black\">You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension: <br>\n",
" <tt>jupyter labextension install jupyterlab_3dmol</tt></p>\n",
" </div>\n",
"<script>\n",
"\n",
"var loadScriptAsync = function(uri){\n",
" return new Promise((resolve, reject) => {\n",
" var tag = document.createElement('script');\n",
" tag.src = uri;\n",
" tag.async = true;\n",
" tag.onload = () => {\n",
" resolve();\n",
" };\n",
" var firstScriptTag = document.getElementsByTagName('script')[0];\n",
" firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n",
"});\n",
"};\n",
"\n",
"if(typeof $3Dmolpromise === 'undefined') {\n",
"$3Dmolpromise = null;\n",
" $3Dmolpromise = loadScriptAsync('https://3dmol.csb.pitt.edu/build/3Dmol.js');\n",
"}\n",
"\n",
"var viewer_1560864659553314 = null;\n",
"var warn = document.getElementById(\"3dmolwarning_1560864659553314\");\n",
"if(warn) {\n",
" warn.parentNode.removeChild(warn);\n",
"}\n",
"$3Dmolpromise.then(function() {\n",
"viewer_1560864659553314 = $3Dmol.createViewer($(\"#3dmolviewer_1560864659553314\"),{backgroundColor:\"white\"});\n",
"\tviewer_1560864659553314.removeAllModels();\n",
"\tviewer_1560864659553314.addModel(\"\\n RDKit 3D\\n\\n 42 43 0 0 0 0 0 0 0 0999 V2000\\n -3.3691 -1.3739 0.8807 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.6934 -0.6196 0.7251 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.4936 0.8859 0.6378 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6024 1.2685 -0.5440 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.5513 0.2079 -0.8865 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.1396 -0.6033 0.3496 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.9820 -1.5817 0.0621 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4191 -1.0345 0.3760 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.8399 0.1613 -0.4816 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.3185 0.5796 -0.3504 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7573 0.8196 1.1003 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.1079 1.3766 1.2143 N 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.0002 1.0240 0.1086 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.6911 -0.3453 -0.4853 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2712 -0.4058 -1.0515 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.4671 -2.3436 0.3760 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.2033 -1.5997 1.9419 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.1990 -0.9652 -0.1857 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.3582 -0.8672 1.5604 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.4603 1.3943 0.5500 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.0376 1.2433 1.5697 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.2199 1.4500 -1.4320 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.1075 2.2204 -0.3159 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.6972 0.6998 -1.3595 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.9643 -0.4725 -1.6434 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.8205 0.0947 1.1355 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.1060 -2.4786 0.6834 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0211 -1.9242 -0.9793 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1302 -1.8570 0.2427 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4579 -0.7599 1.4369 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.2260 1.0253 -0.1998 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.6278 -0.0498 -1.5371 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4053 1.5399 -0.8808 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7367 -0.1223 1.6614 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0554 1.4952 1.6028 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.0616 2.3921 1.2925 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9258 1.7859 -0.6773 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.0328 1.0451 0.4731 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.8059 -1.1127 0.2912 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.4130 -0.5903 -1.2726 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.9153 -1.4394 -0.9875 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2947 -0.1630 -2.1216 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 5 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 9 1 0\\n 9 10 1 0\\n 10 11 1 0\\n 11 12 1 0\\n 12 13 1 0\\n 13 14 1 0\\n 14 15 1 0\\n 6 1 1 0\\n 15 10 1 0\\n 1 16 1 0\\n 1 17 1 0\\n 2 18 1 0\\n 2 19 1 0\\n 3 20 1 0\\n 3 21 1 0\\n 4 22 1 0\\n 4 23 1 0\\n 5 24 1 0\\n 5 25 1 0\\n 6 26 1 0\\n 7 27 1 0\\n 7 28 1 0\\n 8 29 1 0\\n 8 30 1 0\\n 9 31 1 0\\n 9 32 1 0\\n 10 33 1 0\\n 11 34 1 0\\n 11 35 1 0\\n 12 36 1 0\\n 13 37 1 0\\n 13 38 1 0\\n 14 39 1 0\\n 14 40 1 0\\n 15 41 1 0\\n 15 42 1 0\\nM END\\n\",\"sdf\");\n",
"\tviewer_1560864659553314.addModel(\"\\n RDKit 3D\\n\\n 23 23 0 0 0 0 0 0 0 0999 V2000\\n -4.6809 -0.6101 0.7703 N 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.5304 -1.4385 0.3984 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.1999 -0.6720 0.4387 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0172 -1.6205 0.1766 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.3381 -0.9433 0.3251 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2339 0.5026 -0.5563 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6468 1.0425 -0.7823 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.5393 0.8046 0.4286 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.5196 -0.9936 0.3354 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.4956 -2.2958 1.0799 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6894 -1.8433 -0.6096 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.0789 -0.2608 1.4513 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0629 -2.4578 0.8838 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.0961 -2.0524 -0.8286 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1405 -1.6768 0.1961 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4456 -0.4952 1.3180 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4803 -0.1597 -0.4250 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.5941 1.3075 -0.1732 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.8144 0.2121 -1.5273 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.0875 0.5519 -1.6599 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.6000 2.1122 -1.0166 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.5330 1.2297 0.2478 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.1302 1.3368 1.2959 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 3 6 1 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 1 1 0\\n 1 9 1 0\\n 2 10 1 0\\n 2 11 1 0\\n 3 12 1 0\\n 4 13 1 0\\n 4 14 1 0\\n 5 15 1 0\\n 5 16 1 0\\n 5 17 1 0\\n 6 18 1 0\\n 6 19 1 0\\n 7 20 1 0\\n 7 21 1 0\\n 8 22 1 0\\n 8 23 1 0\\nM END\\n\",\"sdf\");\n",
"\tviewer_1560864659553314.setStyle({\"stick\": {}});\n",
"\tviewer_1560864659553314.setBackgroundColor(\"0xeeeeee\");\n",
"\tviewer_1560864659553314.zoomTo();\n",
"viewer_1560864659553314.render();\n",
"});\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"drawit([(ref_3d, -1), (query_3d_copy, best_o3a2[0])])"
]
},
{
"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.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment