├── .gitignore
├── DUD-E.ipynb
├── Drawing_Molecules.ipynb
├── LICENSE
├── PDBbind.ipynb
├── PLEC_fingerprints.ipynb
├── README.md
├── Shape_comparison.ipynb
├── Surface_plots.ipynb
├── environment.yml
└── xiap
├── actives_docked.sdf
├── crystal_ligand.sdf
└── receptor_rdkit.pdb
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | env/
12 | build/
13 | develop-eggs/
14 | dist/
15 | downloads/
16 | eggs/
17 | .eggs/
18 | lib/
19 | lib64/
20 | parts/
21 | sdist/
22 | var/
23 | wheels/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 |
28 | # PyInstaller
29 | # Usually these files are written by a python script from a template
30 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
31 | *.manifest
32 | *.spec
33 |
34 | # Installer logs
35 | pip-log.txt
36 | pip-delete-this-directory.txt
37 |
38 | # Unit test / coverage reports
39 | htmlcov/
40 | .tox/
41 | .coverage
42 | .coverage.*
43 | .cache
44 | nosetests.xml
45 | coverage.xml
46 | *.cover
47 | .hypothesis/
48 |
49 | # Translations
50 | *.mo
51 | *.pot
52 |
53 | # Django stuff:
54 | *.log
55 | local_settings.py
56 |
57 | # Flask stuff:
58 | instance/
59 | .webassets-cache
60 |
61 | # Scrapy stuff:
62 | .scrapy
63 |
64 | # Sphinx documentation
65 | docs/_build/
66 |
67 | # PyBuilder
68 | target/
69 |
70 | # Jupyter Notebook
71 | .ipynb_checkpoints
72 |
73 | # pyenv
74 | .python-version
75 |
76 | # celery beat schedule file
77 | celerybeat-schedule
78 |
79 | # SageMath parsed files
80 | *.sage.py
81 |
82 | # dotenv
83 | .env
84 |
85 | # virtualenv
86 | .venv
87 | venv/
88 | ENV/
89 |
90 | # Spyder project settings
91 | .spyderproject
92 | .spyproject
93 |
94 | # Rope project settings
95 | .ropeproject
96 |
97 | # mkdocs documentation
98 | /site
99 |
100 | # mypy
101 | .mypy_cache/
102 |
--------------------------------------------------------------------------------
/DUD-E.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "
DUD-E: A Database of Useful Decoys: Enhanced
"
8 | ]
9 | },
10 | {
11 | "cell_type": "code",
12 | "execution_count": 1,
13 | "metadata": {},
14 | "outputs": [
15 | {
16 | "name": "stdout",
17 | "output_type": "stream",
18 | "text": [
19 | "0.4.1-12-ga7d79bd\n"
20 | ]
21 | }
22 | ],
23 | "source": [
24 | "from __future__ import print_function, division, unicode_literals\n",
25 | "\n",
26 | "import oddt\n",
27 | "from oddt.datasets import dude\n",
28 | "print(oddt.__version__)"
29 | ]
30 | },
31 | {
32 | "cell_type": "markdown",
33 | "metadata": {},
34 | "source": [
35 | "We'd like to read files from [DUD-E](http://dude.docking.org/).
\n",
36 | "You can download different targets and different numbers of targets, but I used only these five:\n",
37 | "[ampc](http://dude.docking.org/targets/ampc), \n",
38 | "[cxcr4](http://dude.docking.org/targets/cxcr4), \n",
39 | "[pur2](http://dude.docking.org/targets/pur2), \n",
40 | "[pygm](http://dude.docking.org/targets/pygm), \n",
41 | "[sahh](http://dude.docking.org/targets/sahh).
"
42 | ]
43 | },
44 | {
45 | "cell_type": "code",
46 | "execution_count": 2,
47 | "metadata": {},
48 | "outputs": [],
49 | "source": [
50 | "%%bash\n",
51 | "mkdir -p ./DUD-E_targets/\n",
52 | "wget -qO- http://dude.docking.org/targets/ampc/ampc.tar.gz | tar xz -C ./DUD-E_targets/\n",
53 | "wget -qO- http://dude.docking.org/targets/cxcr4/cxcr4.tar.gz | tar xz -C ./DUD-E_targets/\n",
54 | "wget -qO- http://dude.docking.org/targets/pur2/pur2.tar.gz | tar xz -C ./DUD-E_targets/\n",
55 | "wget -qO- http://dude.docking.org/targets/pygm/pygm.tar.gz | tar xz -C ./DUD-E_targets/\n",
56 | "wget -qO- http://dude.docking.org/targets/sahh/sahh.tar.gz | tar xz -C ./DUD-E_targets/"
57 | ]
58 | },
59 | {
60 | "cell_type": "code",
61 | "execution_count": 3,
62 | "metadata": {
63 | "collapsed": true
64 | },
65 | "outputs": [],
66 | "source": [
67 | "directory = './DUD-E_targets'"
68 | ]
69 | },
70 | {
71 | "cell_type": "markdown",
72 | "metadata": {},
73 | "source": [
74 | "We will use the dude class."
75 | ]
76 | },
77 | {
78 | "cell_type": "code",
79 | "execution_count": 4,
80 | "metadata": {},
81 | "outputs": [],
82 | "source": [
83 | "dude_database = dude(home=directory)"
84 | ]
85 | },
86 | {
87 | "cell_type": "markdown",
88 | "metadata": {},
89 | "source": [
90 | "Now we can get one target or iterate over all targets in our directory."
91 | ]
92 | },
93 | {
94 | "cell_type": "markdown",
95 | "metadata": {},
96 | "source": [
97 | "Let's choose one target."
98 | ]
99 | },
100 | {
101 | "cell_type": "code",
102 | "execution_count": 5,
103 | "metadata": {},
104 | "outputs": [],
105 | "source": [
106 | "target = dude_database['cxcr4']"
107 | ]
108 | },
109 | {
110 | "cell_type": "markdown",
111 | "metadata": {},
112 | "source": [
113 | "`target` has four properties: protein, ligand, actives and decoys:
\n",
114 | "protein - protein molecule
\n",
115 | "ligand - ligand molecule
\n",
116 | "actives - generator containing actives
\n",
117 | "decoys - generator containing decoys"
118 | ]
119 | },
120 | {
121 | "cell_type": "code",
122 | "execution_count": 6,
123 | "metadata": {},
124 | "outputs": [
125 | {
126 | "data": {
127 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAABmJLR0QA/wD/AP+gvaeTAAAgAElE\nQVR4nO2deVgT1/rH30lIwpKEsIOoBFRE0QeUCm51rS2iWAUtKhdtH4VqrVavbbH1V0GpVq2ttNVH\n0faCS11QXIhWqXVBtAqC7CDgAlQWIbIkYcs2vz9Om5vLErMNJDKfv2Ayc+ZM+PKeM+e8C4bjOJCQ\n6BtKX3eA5PWEFBYJIZDCIiEEUlgkhEAKi4QQSGGREAIpLBJCIIVFQgiksEgIgRQWCSGQwiIhBFJY\nJIRACouEEEhhkRACKSwSQiCFRUIIpLBICIEUFgkhkMIiIQRSWCSE8PoLi8/n19bWAkBHR0dZWVlf\nd6e/YEzCIiViRJj0dQd6g9raWoFAIJPJTEz6xfMaAkb2RWsnEUdHR0dHx46OjsrKSuL6RqKMkQmL\nlIixYExzLC0oLS2lUCiOjo4AwGAwhg0b1tc96i8Yk7BsbW2VJbJz504ej6fi/L/++svb23v16tW9\n1UGS/2JkQ6ECHMd3794tkUjy8/O5XG6352zfvr2trW3mzJm92zUSAADAjZZDhw4BwIwZM+RyeddP\ny8vL6XS6i4tLR0eHRs3W19fX1NTgON7e3l5aWqqfvvY/jGko7MTKlStnzZp148aNI0eOdP1069at\nYrE4OjqaTqf3ft9IMNyY0xiVl5ePHj2aSqUWFhY6Ozsrjj9+/HjEiBFcLre4uFjTtSs+n//8+XNz\nc3O0qEHO97Wjjy2WjovpXC5369atzc3NnWboW7dulUql0dHR2q2IOjo6uru7u7m5aXEtCcKIh0LE\n+vXrJ06cyOPxkpKS0JHS0tJTp065u7svXry4b/vWr+nbKV59fX12dnZJSUlRUZHWM+Xi4mJTU1NH\nR8eXL1/iOB4SEgIAp0+f1qKp8vJyiUSiXTdIlOl7YenlFSw6OhoA3n///YKCAgqF4unpKZPJNG0k\nMzOTSqVu27ZN626QKHhNhCWRSMaMGQMAkyZNAoBz585p0UhAQAAA/Pbbb1p3g0SBYa1jzZ49OzQ0\nVLtr09PTKRQKAAwfPrzblS3VZGRkYBg2YcIE7e5O0gnDmrxLJJJff/31+PHjml7Y0dFx6dIlHMcB\noKys7MMPP6yoqNCohc2bN+M4vm3bNk1vTdI9fa3s/6G0tNTMzMzGxqa2tlb9q+7duzdy5EgAGDBg\n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\nRU5ErkJggg==\n",
128 | "text/html": [
129 | "
"
130 | ],
131 | "text/plain": [
132 | "
"
133 | ]
134 | },
135 | "execution_count": 6,
136 | "metadata": {},
137 | "output_type": "execute_result"
138 | }
139 | ],
140 | "source": [
141 | "target.ligand"
142 | ]
143 | },
144 | {
145 | "cell_type": "markdown",
146 | "metadata": {},
147 | "source": [
148 | "Let's see which target has the most actives and decoys."
149 | ]
150 | },
151 | {
152 | "cell_type": "code",
153 | "execution_count": 7,
154 | "metadata": {},
155 | "outputs": [
156 | {
157 | "name": "stdout",
158 | "output_type": "stream",
159 | "text": [
160 | "Target: pygm\t\tNumber of actives: 114\t\tNumber of decoys: 4045\n",
161 | "Target: sahh\t\tNumber of actives: 190\t\tNumber of decoys: 3483\n",
162 | "Target: cxcr4\t\tNumber of actives: 122\t\tNumber of decoys: 3414\n",
163 | "Target: ampc\t\tNumber of actives: 62\t\tNumber of decoys: 2902\n",
164 | "Target: pur2\t\tNumber of actives: 201\t\tNumber of decoys: 2725\n"
165 | ]
166 | }
167 | ],
168 | "source": [
169 | "for target in dude_database:\n",
170 | " actives = list(target.actives)\n",
171 | " decoys = list(target.decoys)\n",
172 | " print('Target: ' + target.dude_id, \n",
173 | " 'Number of actives: ' + str(len(actives)), \n",
174 | " 'Number of decoys: ' + str(len(decoys)), \n",
175 | " sep='\\t\\t')"
176 | ]
177 | }
178 | ],
179 | "metadata": {
180 | "kernelspec": {
181 | "display_name": "Python 3",
182 | "language": "python",
183 | "name": "python3"
184 | },
185 | "language_info": {
186 | "codemirror_mode": {
187 | "name": "ipython",
188 | "version": 3
189 | },
190 | "file_extension": ".py",
191 | "mimetype": "text/x-python",
192 | "name": "python",
193 | "nbconvert_exporter": "python",
194 | "pygments_lexer": "ipython3",
195 | "version": "3.6.1"
196 | }
197 | },
198 | "nbformat": 4,
199 | "nbformat_minor": 2
200 | }
201 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 3-Clause License
2 |
3 | Copyright (c) 2017, oddt
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | * Redistributions of source code must retain the above copyright notice, this
10 | list of conditions and the following disclaimer.
11 |
12 | * Redistributions in binary form must reproduce the above copyright notice,
13 | this list of conditions and the following disclaimer in the documentation
14 | and/or other materials provided with the distribution.
15 |
16 | * Neither the name of the copyright holder nor the names of its
17 | contributors may be used to endorse or promote products derived from
18 | this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 |
--------------------------------------------------------------------------------
/PDBbind.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "PDBbind Database
"
8 | ]
9 | },
10 | {
11 | "cell_type": "code",
12 | "execution_count": 1,
13 | "metadata": {},
14 | "outputs": [
15 | {
16 | "name": "stdout",
17 | "output_type": "stream",
18 | "text": [
19 | "0.4.1-16-gb8cc8d0\n"
20 | ]
21 | }
22 | ],
23 | "source": [
24 | "from __future__ import print_function, division, unicode_literals\n",
25 | "\n",
26 | "import oddt\n",
27 | "from oddt.datasets import pdbbind\n",
28 | "\n",
29 | "oddt.toolkit.image_size = (400, 400)\n",
30 | "\n",
31 | "print(oddt.__version__)"
32 | ]
33 | },
34 | {
35 | "cell_type": "markdown",
36 | "metadata": {},
37 | "source": [
38 | "Download a dataset from [PDBbind](http://www.pdbbind.org.cn/) and unpack (I used [core-set 2016](http://www.pdbbind.org.cn/download/pdbbind_v2016_core.tar.gz))."
39 | ]
40 | },
41 | {
42 | "cell_type": "code",
43 | "execution_count": 2,
44 | "metadata": {
45 | "collapsed": true
46 | },
47 | "outputs": [],
48 | "source": [
49 | "%%bash\n",
50 | "wget -qO- http://www.pdbbind.org.cn/download/pdbbind_v2016_core.tar.gz | tar xz"
51 | ]
52 | },
53 | {
54 | "cell_type": "code",
55 | "execution_count": 3,
56 | "metadata": {
57 | "collapsed": true
58 | },
59 | "outputs": [],
60 | "source": [
61 | "directory = './core-set/'"
62 | ]
63 | },
64 | {
65 | "cell_type": "markdown",
66 | "metadata": {},
67 | "source": [
68 | "We will use the pdbbind class. "
69 | ]
70 | },
71 | {
72 | "cell_type": "code",
73 | "execution_count": 4,
74 | "metadata": {
75 | "collapsed": true
76 | },
77 | "outputs": [],
78 | "source": [
79 | "pdbbind_database = pdbbind(home=directory, \n",
80 | " version='2016', \n",
81 | " default_set='core') # Available sets in wrapper: core, refined, general_PL (general for 2007)"
82 | ]
83 | },
84 | {
85 | "cell_type": "markdown",
86 | "metadata": {},
87 | "source": [
88 | "You can get one target or iterate over all of them. To do it you can use PDB ID of a target or an index from list in INDEX file (INDEX_refined_data.2016)."
89 | ]
90 | },
91 | {
92 | "cell_type": "markdown",
93 | "metadata": {},
94 | "source": [
95 | "The class has two properties: ids and activities."
96 | ]
97 | },
98 | {
99 | "cell_type": "code",
100 | "execution_count": 5,
101 | "metadata": {},
102 | "outputs": [
103 | {
104 | "name": "stdout",
105 | "output_type": "stream",
106 | "text": [
107 | "Number of targets: 290\n",
108 | "First ten targets: ['3ao4', '3gv9', '1uto', '1ps3', '4ddk', '4jsz', '3g2z', '3dxg', '3l7b', '3gr2']\n"
109 | ]
110 | }
111 | ],
112 | "source": [
113 | "all_ids = pdbbind_database.ids\n",
114 | "print('Number of targets:', len(all_ids))\n",
115 | "print('First ten targets:', all_ids[:10])"
116 | ]
117 | },
118 | {
119 | "cell_type": "code",
120 | "execution_count": 6,
121 | "metadata": {},
122 | "outputs": [
123 | {
124 | "name": "stdout",
125 | "output_type": "stream",
126 | "text": [
127 | "First ten activities: [2.07, 2.12, 2.27, 2.28, 2.29, 2.3, 2.36, 2.4, 2.4, 2.52]\n"
128 | ]
129 | }
130 | ],
131 | "source": [
132 | "all_activities = pdbbind_database.activities\n",
133 | "print('First ten activities:', all_activities[:10])"
134 | ]
135 | },
136 | {
137 | "cell_type": "markdown",
138 | "metadata": {},
139 | "source": [
140 | "Let's choose one target."
141 | ]
142 | },
143 | {
144 | "cell_type": "code",
145 | "execution_count": 7,
146 | "metadata": {
147 | "collapsed": true
148 | },
149 | "outputs": [],
150 | "source": [
151 | "target = pdbbind_database[0]"
152 | ]
153 | },
154 | {
155 | "cell_type": "markdown",
156 | "metadata": {},
157 | "source": [
158 | "You can always check PDB ID."
159 | ]
160 | },
161 | {
162 | "cell_type": "code",
163 | "execution_count": 8,
164 | "metadata": {},
165 | "outputs": [
166 | {
167 | "data": {
168 | "text/plain": [
169 | "'3ao4'"
170 | ]
171 | },
172 | "execution_count": 8,
173 | "metadata": {},
174 | "output_type": "execute_result"
175 | }
176 | ],
177 | "source": [
178 | "target.id"
179 | ]
180 | },
181 | {
182 | "cell_type": "markdown",
183 | "metadata": {},
184 | "source": [
185 | "`Target` has three properties: protein, pocket and ligand. All of them are of `oddt.tolkit.Molecule` class."
186 | ]
187 | },
188 | {
189 | "cell_type": "markdown",
190 | "metadata": {},
191 | "source": [
192 | "Let's find the largest ligand."
193 | ]
194 | },
195 | {
196 | "cell_type": "code",
197 | "execution_count": 9,
198 | "metadata": {},
199 | "outputs": [
200 | {
201 | "name": "stdout",
202 | "output_type": "stream",
203 | "text": [
204 | "Target ID: 3ag9 \n",
205 | "Number of atoms: 140\n"
206 | ]
207 | }
208 | ],
209 | "source": [
210 | "max_atoms = 0\n",
211 | "\n",
212 | "for target in pdbbind_database:\n",
213 | " if max_atoms < len(target.ligand.atoms):\n",
214 | " max_atoms = len(target.ligand.atoms)\n",
215 | " largest = target\n",
216 | "\n",
217 | "print('Target ID:', largest.id, '\\nNumber of atoms:', max_atoms)"
218 | ]
219 | },
220 | {
221 | "cell_type": "code",
222 | "execution_count": 10,
223 | "metadata": {},
224 | "outputs": [
225 | {
226 | "data": {
227 | "image/png": "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\nmUVERNy7d+9xr6yurmZTddeuXb///jvDMFeuXHnkkKe4uNjPz4+IrKys4uPj2/NZUlJSpk+fbmRk\nRETm5ubtKQXwSJ0isNjZ6snJyUI38qCqqqpp06YR0eDBg3Nzc1vyFo1GExsba29vz2ZcbGwsO256\nQH5+/vbt2xmGqa+vP3v2bPM1dTqdQqGQyWREFBQUVFlZ2apPodFo9u7d2/iFRv/+/WNiYioqKlpV\nBKAlOkVgubu7GxsbV1VVcVXw4EHGw4NRq5ncXGbFij8eb2bI87CysrLnnnuOiEaNGlVSUtKqBu7c\nuSOXy9lprl5eXidPnmx8at++fewPTxyvPSA9PX3IkCFENGDAgAsXLrTkLffu3VMoFD179mSjysfH\nZ9++fQ0NDa06LkDLGX5g3bt3z8jIaPjw4RzWPHiQCQlhYmMfDKw1a9YwDNOS3/acnBx2r+OXX365\npqambW1cvnx54sSJRCSVSj08PNgL5+25FFVZWfnWW28RkUwma3qp62E5OTkRERHW1tZEZGJiMmPG\njFOnTrX5uAAtZPjTGs6dO6fVats5A+thvr6UmkpVVX88wjCMVCrV6XTHjh3TarXffPMNwzBqtfrh\n92ZkZIwZM+batWtvvfXWt99+a2Zm1rYennnmmaNHj3733XempqaXLl1ityl9+umn21aNiCwsLHbs\n2LF7924LC4v8/PzHvWzOnDlPP/30mjVrJBJJRERETk7Ovn37Ro8e3ebjArRQRwRWYiIlJBARKZW0\nZMmDTw0fThoN3b5NK1fycvSkpCRq95TRR3pgsZpr167169cvMzNz0KBBGRkZlpaWFy9eTE5OVqlU\nd+/ebXzZiRMnxowZo1QqIyIiduzY0czdiy3k7+9vZmbWvXv3YcOGtbMUKyAgoLS0dOHChY98tqGh\n4fDhw717946JicnLy4uKisJ8K+gwwo+w2IVA+aDVards2bJ27Voi2r17N7uyaHtcunTp8uXLjX98\nYLEalUo1evTo69eve3l5XbhwwdPT8+zZsyNHjvz+++8lEskPP/zAMMyqVateeOGFqqqqLVu2REVF\ntbMfVlZWVllZGU8DnIf/RTE2Ns7Jybl27dqiRYvMzc35OCjAY3XAaefBg8xf/sLI5czcuUx4+INP\n7dnDvPMOc+XKny4Gtd/x48eHDh1KRMbGxhYWFkRkZmb24YcfVldXt61gQkJCly5dBg4c2JIXs9/c\n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\nymgAAAAASUVORK5CYII=\n",
228 | "text/html": [
229 | "
"
230 | ],
231 | "text/plain": [
232 | "
"
233 | ]
234 | },
235 | "execution_count": 10,
236 | "metadata": {},
237 | "output_type": "execute_result"
238 | }
239 | ],
240 | "source": [
241 | "largest_ligand = largest.ligand\n",
242 | "largest_ligand.removeh()\n",
243 | "largest_ligand"
244 | ]
245 | },
246 | {
247 | "cell_type": "markdown",
248 | "metadata": {},
249 | "source": [
250 | "If you want to check activity, you can use the `sets` dict."
251 | ]
252 | },
253 | {
254 | "cell_type": "code",
255 | "execution_count": 11,
256 | "metadata": {},
257 | "outputs": [
258 | {
259 | "data": {
260 | "text/plain": [
261 | "8.05"
262 | ]
263 | },
264 | "execution_count": 11,
265 | "metadata": {},
266 | "output_type": "execute_result"
267 | }
268 | ],
269 | "source": [
270 | "pdbbind_database.sets['core'][largest.id]"
271 | ]
272 | }
273 | ],
274 | "metadata": {
275 | "kernelspec": {
276 | "display_name": "Python 3",
277 | "language": "python",
278 | "name": "python3"
279 | },
280 | "language_info": {
281 | "codemirror_mode": {
282 | "name": "ipython",
283 | "version": 3
284 | },
285 | "file_extension": ".py",
286 | "mimetype": "text/x-python",
287 | "name": "python",
288 | "nbconvert_exporter": "python",
289 | "pygments_lexer": "ipython3",
290 | "version": "3.6.1"
291 | }
292 | },
293 | "nbformat": 4,
294 | "nbformat_minor": 2
295 | }
296 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # notebooks
2 |
3 |
4 | [](https://mybinder.org/v2/gh/oddt/notebooks/master)
5 |
--------------------------------------------------------------------------------
/Shape_comparison.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "Compare shapes of molecules"
8 | ]
9 | },
10 | {
11 | "cell_type": "code",
12 | "execution_count": 1,
13 | "metadata": {},
14 | "outputs": [
15 | {
16 | "name": "stdout",
17 | "output_type": "stream",
18 | "text": [
19 | "0.4.1-12-ga7d79bd\n"
20 | ]
21 | }
22 | ],
23 | "source": [
24 | "from __future__ import print_function, division, unicode_literals\n",
25 | "\n",
26 | "import oddt\n",
27 | "from oddt.shape import usr, usr_similarity\n",
28 | "print(oddt.__version__)"
29 | ]
30 | },
31 | {
32 | "cell_type": "markdown",
33 | "metadata": {},
34 | "source": [
35 | "We'd like to compare the shape of heroin with other molecules."
36 | ]
37 | },
38 | {
39 | "cell_type": "markdown",
40 | "metadata": {},
41 | "source": [
42 | "ODDT supports three methods of molecular shape comparison: USR, USRCAT and Electroshape.
\n",
43 | "[USR](http://dx.doi.org/10.1002/jcc.20681) looks only at the shape of molecule.
\n",
44 | "[USR-CAT](http://dx.doi.org/10.1186/1758-2946-4-27) considers the shape and type of atoms.
\n",
45 | "[Electroshape](http://dx.doi.org/doi:10.1007/s10822-010-9374-0) accounts for the shape and charge of atoms.
\n",
46 | "All those methods have the same API.
\n",
47 | "We will use USR, because it's the simplest and the fastest."
48 | ]
49 | },
50 | {
51 | "cell_type": "code",
52 | "execution_count": 2,
53 | "metadata": {
54 | "collapsed": true
55 | },
56 | "outputs": [],
57 | "source": [
58 | "heroin = oddt.toolkit.readstring('smi', \n",
59 | " 'CC(=O)Oc1ccc2c3c1O[C@@H]4[C@]35CC[NH+]([C@H](C2)[C@@H]5C=C[C@@H]4OC(=O)C)C')\n",
60 | "\n",
61 | "smiles = ['CC(=O)Oc1ccc2c3c1O[C@@H]4[C@]35CC[NH+]([C@H](C2)[C@@H]5C=C[C@@H]4OC(=O)Cc6cccnc6)C',\n",
62 | " 'CC(=O)O[C@@H]1C=C[C@@H]2[C@H]3Cc4ccc(c5c4[C@]2([C@H]1O5)CC[NH+]3C)OC', \n",
63 | " 'C[N+]1(CC[C@@]23c4c5ccc(c4O[C@H]2[C@@H](C=C[C@@H]3[C@@H]1C5)O)OC)C', \n",
64 | " 'C[NH2+][C@@H]1Cc2ccc(c3c2[C@]4([C@@H]1CC=C([C@H]4O3)OC)C=C)OC',\n",
65 | " 'CCOC(=O)CNC(=O)O[C@H]1C=C[C@H]2[C@H]3Cc4ccc(c5c4[C@]2([C@H]1O5)CC[NH+]3C)OCOC',\n",
66 | " 'CC(=O)OC1=CC[C@H]2[C@@H]3Cc4ccc(c5c4[C@@]2([C@@H]1O5)CC[NH+]3C)OC',\n",
67 | " 'C[NH+]1CC[C@]23c4c5cc(c(c4O[C@H]2[C@H](C=C[C@H]3[C@H]1C5)O)O)c6cc7c8c(c6O)O[C@@H]9[C@]81CC[NH+]([C@H](C7)[C@@H]1C=C[C@@H]9O)C']\n",
68 | "\n",
69 | "molecules = [oddt.toolkit.readstring('smi', smi) for smi in smiles]"
70 | ]
71 | },
72 | {
73 | "cell_type": "markdown",
74 | "metadata": {},
75 | "source": [
76 | "To compute the shape using USR we need the molecule's 3D coordinates."
77 | ]
78 | },
79 | {
80 | "cell_type": "code",
81 | "execution_count": 3,
82 | "metadata": {
83 | "collapsed": true
84 | },
85 | "outputs": [],
86 | "source": [
87 | "heroin.make3D()\n",
88 | "heroin.removeh()\n",
89 | "for mol in molecules:\n",
90 | " mol.make3D()\n",
91 | " mol.removeh()"
92 | ]
93 | },
94 | {
95 | "cell_type": "markdown",
96 | "metadata": {},
97 | "source": [
98 | "Now we can use the `usr` function."
99 | ]
100 | },
101 | {
102 | "cell_type": "code",
103 | "execution_count": 4,
104 | "metadata": {},
105 | "outputs": [
106 | {
107 | "data": {
108 | "text/plain": [
109 | "array([ 3.12823939, 1.59761882, 0.55976415, 3.20355535,\n",
110 | " 2.18059039, 1.01127279, 6.30361271, 6.8250246 ,\n",
111 | " -10.16452217, 5.39781094, 5.79236984, 0.93677378])"
112 | ]
113 | },
114 | "execution_count": 4,
115 | "metadata": {},
116 | "output_type": "execute_result"
117 | }
118 | ],
119 | "source": [
120 | "usr_heroin = usr(heroin)\n",
121 | "usr_heroin"
122 | ]
123 | },
124 | {
125 | "cell_type": "markdown",
126 | "metadata": {},
127 | "source": [
128 | "USR represents shape with 12 descriptors, which summarize the distribution of atomic distances in the molecule. For more details see [Ballester & Richards (2007)](http://dx.doi.org/10.1002/jcc.20681).
\n",
129 | "USR-CAT and Electroshape use more descriptors, 60 and 15 respectively."
130 | ]
131 | },
132 | {
133 | "cell_type": "markdown",
134 | "metadata": {},
135 | "source": [
136 | "Let's see how similar it is to a different molecule."
137 | ]
138 | },
139 | {
140 | "cell_type": "code",
141 | "execution_count": 5,
142 | "metadata": {},
143 | "outputs": [
144 | {
145 | "data": {
146 | "text/plain": [
147 | "0.20657099769142923"
148 | ]
149 | },
150 | "execution_count": 5,
151 | "metadata": {},
152 | "output_type": "execute_result"
153 | }
154 | ],
155 | "source": [
156 | "usr_similarity(usr_heroin, usr(molecules[0]))"
157 | ]
158 | },
159 | {
160 | "cell_type": "markdown",
161 | "metadata": {},
162 | "source": [
163 | "The similarity function returns a number in range (0, 1], where a higher number means that the molecules are more similar and 1 means that the molecules have identical shapes.
\n",
164 | "All methods (USR, USR-CAT and Electroshape) use the same similarity function."
165 | ]
166 | },
167 | {
168 | "cell_type": "markdown",
169 | "metadata": {},
170 | "source": [
171 | "We will find a molecule similar to oxamide. "
172 | ]
173 | },
174 | {
175 | "cell_type": "code",
176 | "execution_count": 6,
177 | "metadata": {},
178 | "outputs": [],
179 | "source": [
180 | "similar_mols = []\n",
181 | "for i, mol in enumerate(molecules):\n",
182 | " sim = usr_similarity(usr_heroin, usr(mol))\n",
183 | " similar_mols.append((i, sim))"
184 | ]
185 | },
186 | {
187 | "cell_type": "code",
188 | "execution_count": 7,
189 | "metadata": {},
190 | "outputs": [
191 | {
192 | "data": {
193 | "text/plain": [
194 | "[(2, 0.48911179609705718),\n",
195 | " (3, 0.45645597603277854),\n",
196 | " (1, 0.39947994224342542),\n",
197 | " (5, 0.39212419145828936),\n",
198 | " (0, 0.20657099769142923),\n",
199 | " (6, 0.16292525187745338),\n",
200 | " (4, 0.15072869043524584)]"
201 | ]
202 | },
203 | "execution_count": 7,
204 | "metadata": {},
205 | "output_type": "execute_result"
206 | }
207 | ],
208 | "source": [
209 | "similar_mols.sort(key=lambda similarity: similarity[1], reverse=True)\n",
210 | "similar_mols"
211 | ]
212 | },
213 | {
214 | "cell_type": "code",
215 | "execution_count": 8,
216 | "metadata": {},
217 | "outputs": [
218 | {
219 | "data": {
220 | "image/png": "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\nhEVghP8HHO3qr/GCarUAAAAASUVORK5CYII=\n",
221 | "text/html": [
222 | "
"
223 | ],
224 | "text/plain": [
225 | "
"
226 | ]
227 | },
228 | "execution_count": 8,
229 | "metadata": {},
230 | "output_type": "execute_result"
231 | }
232 | ],
233 | "source": [
234 | "heroin"
235 | ]
236 | },
237 | {
238 | "cell_type": "markdown",
239 | "metadata": {},
240 | "source": [
241 | "Heroin"
242 | ]
243 | },
244 | {
245 | "cell_type": "code",
246 | "execution_count": 9,
247 | "metadata": {},
248 | "outputs": [
249 | {
250 | "data": {
251 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAABmJLR0QA/wD/AP+gvaeTAAAalElE\nQVR4nO2deVQURx7HfzMcDlcEwXCLigpqBKPRuMYLNW4wiEdUNBs07vLwbSIgzwOMqwR3hYl4gCuu\nZAWdJfoUjLjgeqPxDoJKUEFAooBC5BSZAWWO2j/KVDojjDDTPQfU5/l4TXdN1W/or1XV1VXf4iGE\ngEJhG76uA6B0T6iwKJxAhUXhBCosCidQYVE4gQqLwglUWBROoMKicAIVFoUTqLAonECFReEEKiwK\nJ1BhUTiBCovCCVRYFE6gwqJwAhUWhROosCicQIVF4QQqLAonUGFROIEKi8IJbAhLJgM7u99+TUiA\njRtfHdfVwdKl4OkJnp4QGgotLSwURzEEOK6xli2D4cOhqAju3gWEYO1abouj6A1cCuv2bSgvh9Wr\ngccDY2MQCuHYMait5bDEjikrKwsPD3/48KFOSu+BsCSsly9h+PBX/7ZufXWyqAi8vYH/axEWFuDu\nDiUl7JTYaaRSaXx8/NChQ+Pj4z09PXfu3CmTybQcQw+EJWH16gX37r36t3p1h8naW87P6Rr/U6dO\neXl5hYeHS6VSAGhrawsLC/P29j5z5gx3hVKA26bQ0xPy80GhePWrWAxlZTBkCDPJrl27srOzuSi8\nuLjYz8/P19f3/v37AGBjYzNnzhxra2sAKCws/OMf/+jv719aWspF0RQAAKQ5Uimytf3t1/h4tGHD\nq+OZM9HmzUguR21t6Isv0F//yvxcfX29v7+/QqFACD169IiFSBBCCDU3N0dFRfXq1Qt/QT6fHxgY\n+PTpU1xiaGiokZERvmRiYhIaGvrs2TO2iqYQOBbW06fos8/QoEFo0CD05ZdIImF+bsWKFXl5eQih\ntLS0xMREzQORy+Uikcje3p78t5kyZUp+fr5SMlxjkTS2trbx8fEymUzzACgENoSlFvfu3fviiy8Q\nQi0tLb6+vm1tbQihkydPqp3hjz/++P777xO5uLq6ikQiZoLW1taTJ0+S+ikzM3PAgAEk/bvvvnvx\n4kUNvhDld+hMWH/6059w8xQdHX3q1CmE0KVLl9avX69GVpWVlYGBgTweD0vE3Nw8KiqqtbVVKdmy\nZcsAoG/fvnv27MH108uXL+Pj462srIi8/Pz8Hj58qOl3o+hQWM+fP0cIPX36dPHixQghuVw+e/bs\n5uZmhNC2bdukUmlnMpFIJEKh0NLSEsuCx+MtWLCgvLy83cTBwcFEQN7e3hcuXMDnnzx5EhwczP91\nWMTMzCwiIgKHR1EbnQkL09bWhtumlJSU//znPwihwsLCv/6+j98uCoUiLS3Nzc2NaOW99967cuWK\n6rJiYmKICgFg/vz5pH7Kzc0dP348ueTs7CwSifCDBUUNdCwsQnV1Nb6LAQEBv/zyC0Joy5Ytd+7c\naTdxXl7ehAkTiAicnJySkpLkcnlnCqqqqmLWT6ampqGhobh+wmLt168fyXnMmDHXrl1j71v2IPRF\nWISff/4ZIVRVVbVo0SKEkFwur6+vJ1exLMh4AZZFU1NTV0vJy8v74IMP2pWmWCyOiooSCASkeQ0M\nDKyurmbvK/YI9E5YmMbGRnwvU1JSDhw4gBBqa2uLj49/6623mB3tsrIytYtotzG9evUqvlpRUREY\nGEguWVhYtPtAQOkIPRUWoaCgQKFQlJSUkCoEALy8vM6fP89K/hKJJCoqyszMrN3u/7lz50aMGEHK\nFQgEuELVW8RicUpKypo1azZu3JiQkFBVVSWXy/GwDub06dPff/+9FiLRd2FhoqOj8a196623/vWv\nf7E+mKk0YMGsn6RSaWJiIhmS2Lx5M7tFs0tCQsLRo0dxm15RUXH37l0qLFWkpaXh+3rw4EHuSrlw\n4YK3tzepnwYNGlRcXIwvpaam4pNHjx7lLgANKS8vX79+vdKTrK6EZQyGAHmIYw4WsM6UKVNu3ry5\nd+/eDRs21NbWPnjw4PDhwxs2bGCWS2o1PaSqqsrV1fX1CGUy2VdffYWPW1tbJ06cCABisTgxMdHI\nyEgqlc6dO9fT05PdYAxDWFrDyMho+fLlAQEBMTExxcXFS5Ys0XVELGBsbBwTE4OPz5w5IxaLAcDc\n3HzNmjV8Pr+6unrfvn1EeawVym523QNra+stW7boOoou4+jomJWVhRDqTLVKGoHW1lYXFxfWg6Gr\ndLoPbm5uffv2zcjIwFNky8rKCgoKVKSvq6vbsWPH7t27R44cyXowtMbqVgQFBaWlpUVGRpqYmDg5\nOS1cuFBFYjs7u/Dw8Pr6+ri4OC8vL3YjocLqVlhaWv75z39WOpmYmEiOZ8yYgQ9kMpmxsTEACAQC\n5hghW1BhGTxyuXznzp22trZdetQoLy8/duyYkZGRTCZbtGgR61FRYRk8CQkJq1atAoD33ntv2LBh\nKlJKJJK0tLSioiIzMzNbW9tPP/3U3t4+JCSEjDXgZ8Z58+ZpHhUVlmFTU1OzadMmAOjTp88bH+6S\nk5NdXV2FQiGfz6+srGxoaGBO42YXKizDZv369U1NTQAQHR3NfEP/OhUVFTU1NSEhIXgwwtXVFQAU\nZA0V21BhGTC3b9/et28fAAwbNmz58uWqE2t5XJ4Ky4BZuXKlXC4HgO3bt5uYmKiXCUfj8nSA1FA5\ndOjQpUuXAGDOnDnM1Wwd4ejoWFFRgTq37pzP5+OhebXH5amwDJLW1tbIyEgAMDU1ff3tU0lJib+/\nv52dXVZWFjmp5XF5KiyDZMuWLeXl5QAQHh4+ePBgcr6pqWn16tUjRozIysqqr68/ceIE81NBQUHP\nnj2LjIxct27diRMnVD8S4nH5devWHTx4UJ0QtTA1R3OOHDmCo83MzNRJABkZGTiAjIwMnQTARC6X\n44mHDg4OZL6/XC7/9ttv3377bXJnfXx8cNunBmT5HV4BoEYOtPNuePD5/NGjR1+5cmXnzp2nTr01\ndSqUleWEhYXl5OTgBC4uLps3b2bOie0qmo/LU2EZJNnZ2RKJxMrKKihIkpr61fHjO/F5CwuLdevW\nrVq1SsPXf+7u7ng0X22osAwSPp+PW8PTp09XVZ0AAB6P99lnn8XGxjo7O+s6OgAqLAOltRXwC72W\nlim9eh2wsjIODLTdutXtTZ/THlRYBoBMBjY2EBICeCAzIQEkEjh5EgBgxYres2bZzJgxSN8m49Ph\nBsPAzAyOHYP6euXzRkZGgwcP1jdVgaEI6+bNm/ggNTX15cuXWi79xYsXZPlXamrqixcvtBwAAJiY\nwNKlsGuX8vmEBBg4UPvhdAL1xjm0yZMnT7B3KMbd3V2bg0nff//9wN/fuoEDB2pnaR5BKkVOTujZ\nM+TpiZqaUHw80u9lswjp/4JViUQyevRofEeZ71mnT5/ekRcNWxQUFEyZMoWUaGZmRlbiA8DUqVML\nCgo4DYCAhYUQiopCQiEVlsYoFAoyOvfhhx/W1tZGRESYmpriMzwe79NPP62pqWG9XOyBi6eEY0EH\nBwfX1tY2NjZGRES0a5vLKURYdXVo6FAUE0OFpRlktoaHh0dDQwM+WVxc/PHHH5OaQyAQbNiw4eXL\nl6yUKJVKIyIibG1tSf6TJk26e/cuM01JScmCBQtIAmtra6FQyGIA//znP729vbdt28Y4+UpYCKHI\nSOTpSYWlAYcPH8YPO3369CkpKVG6evbsWWbXB5uFaFjiuXPn3nnnHZLn4MGD8frPdjl79uzw4cNJ\n4iFDhhw/flzDAJh5uri4kPNMYVVXI1tbKix1uXr1Km5xTExMsrOz203T1tb2zTffMDteffr0SUxM\nVMPf8caNG0yVCASC2NjYFy9eqP5UW1tbUlKSHWPns+nTp9+7d6+rpSOESktLZ8+eTfLp3bv3d999\np0Y++oM+Cuvhw4dkRseePXtUJ66rq/P19QUGdnZ28fHxnTFJe/z4MX57r9Rtwl6VnUTDTQmUDATV\nCEA/0TthPX/+nHidrVmzppOfOn78uNJSAisrq40bN9bW1nb0EblcPnnyZGZ94+DgcPv2bfXCVmNT\nAoVCIRKJHBwcyKfGjh17/fr1jhJv3749Li7OUPx29UtYcrl81qxZ+K/s6+vbJYM1qVS6ePFi+D0m\nJiaBgYHM5un8+fOPHj3KyckZN24cSebi4iISiTS34M7MzGT2/FRsSnDjxo0//OEPJOUbTZrxLGQA\nOHfunIZBagf9ElZYWBj+8w0fPlwNy1qE0PHjx5kbAmB4PN706dMzMzMVCsWNGzcGDhxI3oGYmJgs\nWbKkpaWFra/Q7qYETIPJx48fK213EBERgQ3uVZCZmYnTHzlyhK1QOUWPhJWcnEyapI42AegM1dXV\nkydPhvaYMGGC0m4DRUVFly5dYvFbYNrdlODp06dCoVC9jTCosNTk4sWLeORTIBB01M/oPAqFIj4+\nXsWKKGtr68uXL7MSuQquXbs2duxYZsVJjt+43YESVFjqcP/+fRsbG/ynZ/ExOzc3l7nQAGNqahod\nHZ2env7jjz+yVZAKFArF/v37HR0dSQAODg7Jycmd3O6AQIXVZerr64f8ujvm119/zW7mz58/x3bt\nzNqCz+cHBQVp85G+ubm5d+/eAGBlZaXeIwIVVtdoa2ubNm0a/pPNnz+fo2dpkUiErQqYjaOZmVlU\nVNQbR0HZYtSoUQDg5eWl3scNTlg6no8VGhqKt+4dPXq0SCTiaMLakiVLcFM7dOhQsidAa2trdHR0\n//79Dx8+zEWhPRxdCmvbtm179uwBACcnp//+97/m5uZcl2hsbDxt2rRbt24lJSXhOV6//PLLokWL\nPDw8cnNzuS69R6EzYZ0+fToiIgIALC0tT5w4oc21JcbGxsHBwT///PPKlSvxiEBJScnYsWNHjBih\netW5JiCEyM+egM6ElZKSIpfL+Xz+gQMHmPtBaA0bG5sdO3YUFhaS0u/evevt7f3uu+9ev36d9eKk\nUin52RPQmbDCwsJ8fHz27t3r7++vqxgAwMPDIz8/f+/eveQ9dH5+/vjx44cPH56eno5NgliBCktL\njB8//vz583ifZp3zl7/8pba2dtKkSeRMYWHhwoUL3d3dExISWlpaNC+ira0NqLB6IFZWVhcvXty/\nfz9zcXp5efnKlSsdHR3DwsIeP36sSf60xuKAujpYuhQ8PcHTE0JDgY0KgCOWLl1aXFys1Od7/vz5\nzp07Bw0atGzZstraWvVyxpLC3lQ9Aa2shF62DCZOhP37QS6H8HBYu7adBXJ6Q79+/W7evLlp06Z/\n/OMfTO/Xly9fZmVlffjhh+qZMkokEvwzPT1djY+TlZUGA+dDsLduoREjEHk1JhYjZ2fEwdIa1eAt\nPUaNGtX5j1y/fr1///66vj/K7Nixg7u/Eotw3xQWFYG3N/w6gQQsLMDdHUpKOC9XY8aNG5efnx8Q\nEKDrQH5Hv379dB1Cp9CFKYjhDBL27t370KFDM2fODAkJiY6OVigU+J2jGgQEBCCEeDzeoUOH1Htz\nVVlZ2b9/f1a2jdAGnNeJN2+id975rSlsbkZOTgbRFDJRMXe+M9Qz3Dw0zMpQ4L4pHDUK+vUDoRAU\nCpBKISICZs+Gvn05L5dVmGsu1ODJkyftHndjtDLcsG8fFBWBhwcMGwY8Hmzdqo1C9QkqLG54+21I\nTYXSUigthV27wNwcAG7cuPHRRx9999132ghA1zDFpOFAq6GgM0e/7du3nz59+ty5czY2Nkwvhm4J\nrbG0x9KlS/l8vlwuX7x48Z07d3QVhnagwtIevr6+sbGxANDc3Dxr1qynT5/qKhItQIWlVdauXRsc\nHAwA5eXlfn5+rEwi0E+osLTNrl27fHx8ACAvL+/zzz9HhjN22iWYHfYeIiy9WP5FVv9t2rSJiyKa\nm5uxZYi1tbVYLOaiCBW8ePFCaaidxRX9eovuhYUQKioqIgtWDx48yGLO2NHFycmJ3FRnZ+fU1FSt\nebYoFIrk5GRizisQCJKSkrQvbu2jF8JCCJ05cwZ7fgoEArbWKF+/fr2jFe7jxo3LyclhpRQVKHna\nmJmZGcrcBM3RF2EhhPbu3YtvgIODg9r7oWE68uSIiooizsfYFEQT9xEVVFVVMQMwNTUNDQ3V3CbJ\ngNAjYSGEVqxYge/EyJEj3+js0y5vdBGqrKxUchGKiorqjP1flwJgusApBdBD0C9hyWQyPz8/fD9m\nzpzZJeM1hFBmZuaAAQPIHVXhe/bDDz8wd6R1dXUViUSax69kvDZ06NBTp05pnq0hol/CQr+3ioyI\niOjkpzrj1Hj8+PH333//73//O34ok8vlIpGIuX3tlClT8vPz1Qu7qKjoo48+Iln16dPnjVaR3Ru9\nExZC6OHDh2QL2qSkJNWJO+8tS5Tn5uaWlpaGTzY3N79ubtulPQFe320gNDS0sbGx8zl0S/RRWAih\nK1euEDvu8+fPt5umq27Y2dnZzPpp8uTJxMpWvT0BpFLp6wEo7TbQY9FTYSGERCIRaddKS0uVrqrn\n36/afPvs2bPMDQSGDBmiYgMBpd0GVCfugeivsBBCkZGR+LZ5enqSxqWkpIR08DtfuzApLS1l1k+W\nlpbEKKvdWrAzW55ozWfLUNBrYSkUCrJIZsaMGXiTJrb2SMrOziZPCQAwePBg0vHqqN+meYes56DX\nwkIIicVi7IUHAGTfLwCYOnXqTz/9pGHmuJPUlzEBf9q0aWS3uvz8fBXbymnyCNkT0HdhIYQeP36M\nDTwxrO9D2dDQwHysw+5ZZC1Neno6c2wMAAYMGJCens5iAN0SAxAWYnS25s+fz+IoOZOCggLihgoA\ndnZ2SUlJ+F11a2vr3Llz8fk5c+ZwFEA3wzCEdeTIEXxfMzMzOS3o6NGj7u7uRF5ki6iMjAx8Rpu7\nBhs0Bmlj1NTUFBsbe/XqVdZznjt37r1792JjY/HbRrKNBaWr6GyVjiYIhUKhUGhtbd3Q0MC60XKv\nXr0iIyODgoKePHmiEw/L7oFBCguvWH/27JlMJlPPVOiN2NnZabj6uYdjkE0hRf+hwqJwAhUWhROo\nsCicQIVF4QQqLAonUGFROIEKi8IJVFgUTqDConACFRaFE6iwKJxAhUXhBCosCidQYVE4wSCFhSf3\n8Xg81mf5UdjCIIXl7+8vEAjmzZtHltawS1NT07p16z755JPKykou8u8JGOQM0o8//lgikRBbMxZR\nKBQpKSnr16+vqakBgJEjR27YsIH1UnoChiGs5uZmfID3KQUALlR1+fLlsLCw27dv418HDhxIltKT\nclE39XVmH10vE3oDMpls9+7d5ubmOFpLS8tvv/1WTjapY4l2bf6wjZZMJtuzZw9ZMbt582Z2i+6u\n6LWwsrOz8T6DSqiw6usqEolEKBSSZV7YmPTRo0f46oULF5gLdXr16vXgwQNWyu326KmwKioqAgMD\nyR21sLD429/+FhcXx663Z2ZmppubG8lw9OjRV65cwZeU6jALCwt2rUq7PXonLGxhJRAISBUSGBhY\nXV2Nryq5EWM7ZDXciG/evDlhwgQiKUdHx6SkJNzCSiQSpQC4M1fuxuiRsBQKRVpaGnMz7TFjxly7\ndu31lLm5uR988AFJ5uTkRGTxRmpra5kWRdgou6mpiQTArMPGjBlz9epVlr9nz0BfhJWbmzt+/Hhy\nR52dnUUikYr9I9pVoWoRtLW1CYVCplP3vHnzysrK8NW8vDy1xUp5Hd0Lq12z/062bu02Wx1tPrB8\n+XKiGy8vr+zsbHyemv1zgS6FJZPJYmJiLCwsiCwCAgLU6M283tNvt6P9+eefA4Cdnd3u3buxUTY1\n++cOXQrrwIED5I6OGjXq0qVLmuSmNDTw+p4ALS0t//vf/4iXKTX75xRdCisnJ0cgENjb2//73/9m\npTeD9wQgHvEA4OPj87qjJDX71wLcC6u2Fi1Zgjw8kIcHCglBEgnzYmNjY5cMjztDY2NjREQEMSzF\nFrQ1NTWImv1rEe6F5eeHvvkGKRRIKkUrVqAvv+S8RIQQQoWFhUrV0ieffIJ3RcTMnDnz/v372gmm\nB8KxsG7dQiNGINLMicXI2RnV1HBbKIOsrKwhQ4bA7/H09Dxx4oTWYuiZcDwfq6gIvL2BzESwsAB3\ndygp4bZQBn5+fnfu3Nm6dSv2ZzMxMdm+fXtBQYGvr6/WYuiZaH2in9annZiamq5ateru3btffvll\nYWFheHg4RyaAFCY8xOmdvnULli6Fn356VWmJxeDhAfn5wPDsp3RLOK6xRo2Cfv1AKASFAqRSiIiA\n2bOpqnoC3DeF+/ZBURF4eMCwYcDjwdatnJdI0QM4bgopPRUdrNLJysq6cOGC9sulaBNt11g//PCD\nj48Pj8fLyckZM2aMNoumaBNt11jW1tYAgBDaSjtb3Rod9LEmTZp0+fJlIyOjkpIS5vwCSndCB32s\n8PBwAJDL5YmJidovnaIddFBjKRQKDw+PBw8eWFlZVVZWMje5pHQbdFBj8fn80NBQAGhubk5OTtZ+\nABQtoJtxrJaWFldX14aGBjc3twcPHnDk7UHRIbpxmzE3Nw8KCgKA8vLykydP6iQGCqfozMYoNDTU\n0tKSx+ORxRSU7oQuX+lUVFQ8e/asXXcGiqFD3xVSOMEgHf0o+o9ePI5JJJK0tLSioiIzMzNbW9sF\nCxbY29uHhISQEdQzZ86IxeJ58+bpNk5K59ELYSUnJ7u6ugqFQj6fX1lZ2dDQYG9vr+ugKBqhe2FV\nVFTU1NSEhIRgMypXV1cAUCgUuo6LohG6F1ZVVZWrq+vrxtoymeyrr77Cx62trRMnTgQAsVicmJho\nZGQklUrnzp3r6emp7XApnUP3wuoIY2PjmJgYfIz7WABgbm6+Zs0aPp9fXV29b98+ojyKvqH7p0JH\nR0dsPNSZxHw+H/sNtba2uri4cBwaRX10Lyw3N7e+fftmZGTIZDIAKCsrKygoUJG+rq5ux44du3fv\nHjlypLZipHQZvWgKg4KC0tLSIiMjTUxMnJycFi5cqCKxnZ1deHh4fX19XFwcHbXXWwxs5F0mk+Gp\nEBKJJC4u7uuvv9Z1RJT20Ysaq/OUl5cfO3bMyMhIJpMtWrRI1+FQOsTAaiyKoaD7zjulW0KFReEE\nKiwKJ1BhUTiBCovCCVRYFE6gwqJwAhUWhROosCicQIVF4QQqLAonUGFROIEKi8IJVFgUTqDConAC\nFRaFE6iwKJxAhUXhBCosCif8H6VBKL/S3HmIAAAAAElFTkSuQmCC\n",
252 | "text/html": [
253 | "
"
254 | ],
255 | "text/plain": [
256 | "
"
257 | ]
258 | },
259 | "execution_count": 9,
260 | "metadata": {},
261 | "output_type": "execute_result"
262 | }
263 | ],
264 | "source": [
265 | "idx_most = similar_mols[0][0] \n",
266 | "molecules[idx_most]"
267 | ]
268 | },
269 | {
270 | "cell_type": "markdown",
271 | "metadata": {},
272 | "source": [
273 | "The most similar molecule"
274 | ]
275 | },
276 | {
277 | "cell_type": "code",
278 | "execution_count": 10,
279 | "metadata": {},
280 | "outputs": [
281 | {
282 | "data": {
283 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAABmJLR0QA/wD/AP+gvaeTAAAaAUlE\nQVR4nO2deVRUR/bHb9MsAQRRlMiiIIZFQVFQZDEBjDlkCAgqLkhaJ4ud6AzkBEFiEgU98QSjJhoT\nJzgmigYSBdQBdHBwQ0NQRJCtBWUVml22hhbofv1+f5T2j4MGofu9Xh71+cPTdr93677j16p6VffW\nZZEkCRgM1Wgo2wEMM8HCwtACFhaGFrCwMLSAhYWhBSwsDC1gYWFoAQsLQwtYWBhawMLC0AIWFoYW\nsLAwtICFhaEFLCwMLWBhYWhBU9kOjEtEIvjsM2CzoasLOBx4/XVlO0Q9LBzopwDa29vv3bvX2NgY\nEhKipaUFx4/DK69ASAgQBAQFQXq6sh2kHtxjUQ9BEJWVlUVFRffu3SsqKioqKuLz+einGTNmeHt7\nA48HmzYBALDZYGICXV1gZKRMj2kAC4saent7IyIiJBJJaWlpSUmJUCiU/mRlZRUYGOjk5LRw4UIv\nLy8AAHt7KCwEW1uQSKC1lXmqAjwUUsXHH38cHx8PADo6Oo6Ojk5DMHpeNyIRREcDmw3d3RAaCl5e\n7e3txsbGLBZLCa7TBImhAldXVzabnZ2dLRKJxnovn8/X0tLicDgSiYQO35QCFhYFVFZWslgsPz8/\n2W4XiUSenp4AsGvXLmodUyJ4HYsCEhMTSZIMDQ2V7XZNTc3//Oc/r732Wmxs7K+//kqtb8oCz7Eo\nwMHBoba2tqWlZcKECTIbKS8v9/Dw6Ovru3Tpkre3N3XeKQfcY8lLfn4+j8cLCgqSR1UAYG9vn5KS\nQpLk2rVrnzx5QpV7ygILS16SkpIAQOZxcChLly49efKkr6+vtra2/NaUCx4K5UIikcyYMWNwcBC9\n2SnbHRUC91hycfXqVT6fv2bNGqyqYeCVd7lITEwEgPXr11NumSCI5ORktLLl6OhIkqRQKPTw8Ojs\n7MzMzAwJCaG8RWrBwpIdkUh07ty5mTNnuru7U248JyfHysrKzc0NAMRicWlpKeVN0AoWluxoaGh4\neXmtWLGCjq2YxsZG6aKDpqYmAOTm5tbU1AwMDOjq6lLeHOXgybuKcuPGDR0dncWLF8OzHmvoUOjl\n5cXj8ZqbmwMDAw0MDJTt7AvAPZaK4unpeebMmaqqKhaLNWfOnGG/mpmZ1dfXV1RUsNlspbj3UnCP\npcaUlJTo6+tbW1sr25EXwPAeSyAQbNiwYfHixZ999hllRlUgsLisrKyhoaG1tdXf31/xrY8K5e1/\n0wtBEMePHzc1NUWP6ePjU1RURI3pX34hk5JIkiTFYtLfnxqbjIOZC6S5ublubm7vvfeeQCDYunVr\nQEDAtWvXnJ2dN2/e3N7eLq91Hg9cXACGBBZjnkfZyqYYPp/P4XBYLBaLxVq9enVdXR36/urVq/Pm\nzQMAIyOjuLi4/v7+MZltaWkJCwv7+uuvSZIkjx0jf/+dJEmSIHCP9VcwR1hCoTAuLg69ey9cuDAn\nJwd939nZuWvXroqKCoIgEhISTExMAMDW1jY9PX00ZgcHBw8cODBx4kQAWLFiBfqK/PRTMjKS3LSJ\nvH6dvidSaxgirLS0tJkzZwKAmZlZfHw8QRDSny5fvgwA2traW7du7erq6ujoiI6ORuEDy5YtKy0t\nHcFsVlaWg4MDAEyePPngwYNisZj+R2EIai+sgoKCN954A0knPDy8p6fn+WvS0tJsbGwAwMTE5OjR\nowRBlJeXv/POOwCgpaUVHh7e2dk57JaKigr0wqWlpcXlctva2hTyNMxBjYXV3t4eHh6OVgj9/f2r\nqqpGuHhwcPDgwYNoRFuwYEF2djZJkllZWWjtcWiH1NnZGR0draOjg7q0kpISBT0Ps1BLYQmFwi+/\n/BKpxMnJ6dq1a6O8cZgWq6urBwYGvvnmG0NDQ2Rq06ZNU6ZMAQA7O7uMjAw6H4LhqKWwUNqnsbHx\nTz/9JMO85+7du6+//joA6OrqRkdH9/T0NDc3f/DBB2gvWV9f/8CBA4ODg3R4Pn5QS2GhaKS8vDyZ\nLUgkkt9++2369OkAYGFhwePxSJJct24dAJw7d446T8cvarlAOmnSJAAwMDBoaGjYtWtXX1/fWC2w\nWKx169aVl5fHxMQAQEdHBwCgCf7UqVOp9nc8opbCkpKcnBwbG/vHH3/Idruenl5sbGx9fT3KF8VQ\niHoLiyAI6Z8YlUK9hYVRWbCwMLSAhYWhBSwsDC1gYWFoAQsLQwtYWBhawMLC0AIWFoYW1FtYKB6B\nUYcNMwX1Ftbbb7+9Zs2aRYsWyXY7SZJJSUk+Pj5qd+SG6qOWCattbW0AQBCEg4PD6dOnZTOSn5//\nySef/Pnnn3p6eig+4vHjx4B3HqlC2XE7Y6O3t3fHjh0aGhoAMGvWrMuXL8tgpK2tbWgcaU1NTX9/\nf1xcHDrUZeXKlZS7PQ5RG2FJJJLExEQLCwsAMDU1XbhwIVJGUFBQZWXlKI2gyHcUiOzs7Hzjxg2S\nJM+fPz9r1iwAmDp16uTJkwEgISGBzkcZF6iHsO7evbtkyRJ4FkwsEAhIkuTxeL6+vvAs06a7u3tk\nI2lpaUhAxsbGKHWivLz8b3/7m9RCV1dXdXX11KlTtbS0Rh9Hj3khqi6sxsZGLpc7dNgadkFaWho6\nbsXU1DQ+Pv6FIfDPC6ijoyM8PByNfcuWLSsrK5NejA6mMjY2fvjwIa2PxmxUV1gvHLZeyMDAwMGD\nB1EOtIuLy82bN4f+mpubiwQUEBDw4MEDkUgUHx+P4o/t7OwuXLjwvMHjx48DwOzZs5/PN8SMEhUV\n1vPD1ktv4fP5XC5XQ0MDndpQW1uLvq+vr+dwOJcuXSJJ8sqVK3PnzgWASZMmxcXFDQwM/JW1yMhI\nAPD19ZWh6BKGVEFh3b9/f9iwNabb79y54+HhAQB6enoxMTFCoRB9//Dhw9WrVwOAhoYGh8NpaWkZ\n2Q5BEIGBgQAQHh4u45OMb1RIWCPMe8aERCI5c+bMjBkzAMDCwuLo0aM7d+585ZVXYIynZAkEAicn\nJwD48ccfZfNkPKMqwmpqakKrU3PmzEHDlpwIBILt27cjPQGAtbX12bNnx2qEz+ebm5uz2ewXTsUw\nI6Aqwnr48CEAuLu7UzunKS4uRv3WWA/EkpKfn6+np2doaDjyuTSYYajKXiEaAWfPno0+UIWVlRUA\nuLi4oEM+ZMDFxSUhIUEgEAQEBKCtJMxoUBVhqTLBwcE7d+6sqalZuXLlwMCAst1RD7CwRkVMTMy6\ndev++OOPXbt2KdsX9UAtoxsUD4vF+uWXX7S1tWfPnq1sX9QDLKzRoqurm5CQoGwv1AZ1HQoFAgF6\nkcSoJvT2WIcPHz558qSzs/NLrxQIBACQk5Pz0UcfvfTi9vb2u3fvXrhwgQIXx4oKlKVQD2hdzLC3\nt6fPc319/S+++OK3334bwYGenh4ACAwMpOyRcFmK0UFvjzVv3rzy8vI7d+6gALoRaGho8PLyWr16\ndVxc3EvNnjhxYtasWTt37tyzZ4+5ufng4KC3tzfaw6EdHg82bQIYUpbCyEgR7aob9AoL5c9YWlq+\n9Jg8tJ9jYGAwmlpWu3fvBoC5c+fu3bs3LS1t48aNdnZ2p0+fRlt79GJvD4WFYGsLEgm0tmJV/RXq\nOnkHACcnp9OnTz948GDBggUVFRXOzs7e3t6tra30tVhWVvb4nXfg9m2IioKPP4bISPraUnfUeLkB\nhZVOnz49Ozs7Pz9/y5Yt2dnZdnZ2kZGRW7dulW4/U8Xly5f9/PzWr19/4sQJai0zEjXusaQYGBj4\n+PhcvXr1xIkT2traX3755bx58zIyMihsoqKiYs2aNWw2e/PmzRSaZTBMEBbC1NR048aN5eXlXC63\nrq4uICBgyZIl9+/fl99yR0dHQEBAV1fXsWPHUJFmzEtRLWENDg7KaWHSpEnx8fGFhYXu7u45OTnu\n7u4AwOPxLl68KJtBkUi0evXqhw8f7tixIzQ0VE73xhG0LmasXbsWAFpbW0e+rL6+XloyKTExUSKR\nyN90TU3Na6+9Jn1MFosVFhYmQ1QWWrANDg6mxKvxg5KF1dPTExsbi4KlJk+ejD54eHjIU3WCJMmf\nf/75hQFYM2fOLC4uHr2d/fv3A4CLi0tfX588/oxDlCmsw4cPo6Ij06ZNO3z4MEEQDQ0NQ+ujPnr0\naKwtdnd3L126VKokDQ2NBQsWWFpaSr9hs9lxcXGjMXXx4kU2m21mZtbQ0DBWNzD0Cuujjz7S0dFB\nicskSfJ4ZE1NP0mScXFx0iKDoaGhw4oM5uXlobmRvr5+TEzMkydPRtlcSkqKvr4+EpCWltaGDRvu\n37+Pfrp58+brQ/b1Zs2aJa3q+0LKysomTpyoq6srZ985bqFXWL29vdXV1eizSCT65ptHR48W+vv7\noyWot956Kysr64U3SiSShISEadOmAcD06dNfephCR0fHm2++iUSjra29efPmx48fP39ZUVGRr68v\n2g9gs9mRkZFDa7FKaWtrs7a21tDQwAWbZEZByRQVFWR4ODljRrGBQbqOzk+Ojm989dVXL72rt7c3\nJiZm5MwtgiC+//57VIpXR0eHy+W+tIerra1dtmwZkpeZmdmwzOknT56g/nLv3r1jekbMUBSapePh\n8b2h4Zv79u1LS0sb/V0j5Jpeu3YN7S2y2eyQkJDRD5okSVZXV0trM/n5+aGRUSKRoDWFjRs3jt4U\n5nkUKqykJElExG8jJLaPwLDs+KqqqvXr16N1hOXLlzc3N8vm0q1bt1D1Xh0dnZiYmB07dgDAkiVL\nZE4XwyCoFFZ6OvnrryRJkg0NZEQEmZ5Ozp9PDg6SdXXk559TYF8kEn3//fdDI3Dc3d0LCgrkNEsQ\nxM8//2xsbIxsTp8+HZcWlx96V95dXeH4ccqsaWpqhoWFPXjwAC1SfP3113/++eeCBQvkNKuhofH+\n++9XV1ejRInt27ejstAYeaBYWImJ8MknEBv79K8+PpCXB729VDZhbGwcEBAAAEFBQRSaNTQ0DA4O\nBoB58+ZRaHbcQrGwQkPh0KH/FxYA/POfcPgwtY1g1ADaN6HnzwexmO5GMCoHlYF+/v5PP+Tmppw/\nH/3pp9noLNp//5vCRtSf8ZHnQ30EqUAgCA8PFwgEaNESM5xff4WFCyEkBAgCgoKYKizqh8I9e/Y0\nNTVt377dxMSEcuNMgMcDFxeAIXk+TIRiYVVXVx86dGjmzJkRERHUWmYOKM8HgNl5PhQPhVu3bu3v\n79+/fz/luQzMYcMGiI6G/Hzo7mZwng+Vwrp69er58+d9fHxWrlxJoVmG0d7dPeXbb5XtBe1QORSm\npqZqamp+9913FNpkGBkZGVOnTs3Kynrw4MGDBw+U7Q6NUCmsPXv2FBQUKCIdWW1JTEwEgFdfffXN\nN98MCQlRtjs0QuVQaGRkZMTQqSgl9Pf3X7hwwdbWtqenp6GhAeWPMBXVSv9iNpcuXRIIBMHBwamp\nqQCwatUqZXtEI6Pqse7duycUCj08PDo7OzMzM4f24QRBJCcno9QoR0dHxY+DhYWFlZWVq1atQseK\nqDJITytXrly1apWRkZGXl5eyPaIReYfCnJwcKysrNzc3ABArY1Nw9+7d58+fX7Ro0aFDh1BIsWoi\nEokyMjKsrKzEYnFdXd17773H7J2J0f4vz83NTUxMPHfu3LDvGxsb0Vnq8OysdgWAygL89NNPT548\nOXLkCIfDyc/P9/T0fPfdd/l8vmw2Kysrz5w5AwAtLS1U+vqMK1eudHZ2BgcHnz17Fpg+DgKMLhO6\nsLAwJyeHJMmOjo6kpCQ+n5+VlXXq1Kmenp7s7Oxbt26hyxRWKOvHH39EaV6WlpZnzpwhSfLOnTso\ngH1YbabR0N3dvW3bNpTgampqGhUVFR8fT3mG6ocffggAubm5tra2BgYGYwrPV0dkERZJkrdu3frh\nhx/6+vrEYnFSUlJiYmJSUtK9e/fodXYIfX190gSexYsX37p1a1htpoSEhJcmxb8wyUwsFkdHRxsZ\nGXG53Lt371LirVgsnjp1qrm5eWFhIQCsX7+eErOqjOwx78XFxVVVVRS6IgOPHj3icDjwLIGnubn5\necH91b0jp8X+/vvvqFOcM2dOXFxce3u7PH5euXIFAMLCwlCyRmpqqjzW1AJZhFVaWpqZmXny5MmO\njg7KHZKBa9euobfRCRMmxMTE9Pf3V1dXo0kMm82OiIgYdv2wRP6/SokuLCyUTh91dXXffffd69ev\ny+bhP/7xDwA4ceLE7Nmz9fT0ent7ZbOjRqhK9S85IQgiISEBBerY2NigidfVq1fnz59va2srvUwo\nFMbFxaEiv4sWLULj+wi0t7cvW7ZMOh/lcDijd0kikVRUVJw6dSosLGzouvGqVatke0b1giHCQnR2\ndkZHR6PX+GXLlpWUlEgkEmkaY1paGuqBzMzM4uPjX5hc/zxoyoVeC0Y+7oEkyZaWlvT09B07dvj6\n+k6aNEkqJh0dHQcHBy0tLRaLdeDAAXmfUx1glLAQFRUV0tO2uFxuW1tbQUGB9AyS8PDwYWeQjIaT\nJ0/u27dvhAvy8vKGnvfMYrHs7e03bNjwww8/5OXlDQ4OkiR55coVHR2diRMnjr7Kq/rCQGEh0tLS\nbGxs0PQIHdOwevXqmpoaCkwPDpIREWRUFLlpE3njBvru5s2bdnZ2y5cv/+qrr/73v//9VSnrpKQk\nDQ0Nc3Pzl3Z+6g5jhUWS5MDAwN69e1kslomJiczz7hcgX3GKffv2AYCDg4OKvPrQBJOFheju7h7l\ndGq0REaSFRVPP7//PtnZOVYDKG7bzc2NwQcFqvrGrfwYGhpSvD8td9D6/v37N27ceOvWrZCQEKVs\nsCoAFkmSyvZB3RCJIDoa2Gzo7obQUJApSEEkEgUEBFy6dInL5cbHx1Puo9LBwlIaAoHA29u7oKDg\nyJEjstUlqK2t1dPTU800OzUueaLuGBgYXLx4cc2aNRMmTBjlLUKh8O7du3l5eXl5ebdv366rq9PV\n1a2pqXn11VdpdVUGcI+l0hAEwePxpEoqKyuTzslMTU2NjIzu37/v7Ox8/fp1tJ2gQij55QHz18TG\nxg7tzCZMmPDGG29ERUUlJydLDyoPDw8HAB8fH1U7ghALSyV44emHX3zxxfz58zdt2nTs2LHi4mKx\nWPz8jQRBoGO91q1bR/GqinxgYakE6ekkl0vGx8tyrObAwAA6inzLli30eCcLzF/HUhdkPv1QW1v7\n7NmzTk5OR44cQTVaVAEsLBVC5tMPDQ0NL168aGlpuW3bNhWp04mFpULIc/qhmZlZVlbWlClTuFxu\nZmYmpX7JAl5uYBR5eXlLly4lSfLy5csvTYYTCoVFRUX29vZPQ8eoPWpQ2ZM8DMVkZGRoampOmTKl\nvLx82E9isbi4uPjYsWNcLtfJyQml63344YdPf5YvamMYWFgqwbDaC3Jy8uRJFotlbW3d1NT06NGj\nlJSUqKgoLy+vYatiXl5eUVFRFdJIDbmjNoaCt3QYCIfDqa2t3blzp42NTe+z90xNTU0HBwdXV9fF\nixe7urpqa2uj3aGYmJijR48aGBg8jdqwtaXkqEE8x1IJMjLgyBGwsQGhEAwN4cABCmxu2bLlX//6\nl76+/q5du1xdXS0tLUtLS/Oe8fjxY3SZoaFhWVmZhYUFJVEbUrCwVIKMjKf/mnw+fPstNcIiCGLy\n5MnofJuCgoKqqir0PYvFsrGxcX3G/PnzX1jmWE7wUMhYqqqqenp6ACA5OdnExMTf318qpqEZRHQh\nzwQNo8rs2bMHALZt20ZNCskYwUMhY3FxcSkrK2tpaZk4caLiW8cr78yktra2sLDwrbfeUoqqAAuL\nqaSkpJAkqcRTuPBQyEzc3d3z8/ObmpqUVdQT91gMhM/n375928fHR4mlYrGwGMjZs2eVOw4CFhYj\nSU1N1dDQWL58uRJ9wHMspiEQCCZNmuTp6Zmdna1EN/DKO9PQ19f//PPP3377beW6gXssDC3gORaG\nFrCwMLSA51hMgdqIdbnBcyymcPw4vPIKhIQAQUBQEKSnK9cdPBQyBR4PXFwAANhsMDGBri7luoOF\nxRTkPmeQWvBQyBSei1hPSEiYO3eus7OzUtzBwmImg4ODEydO1NXVvXHjhqOjo+IdwEMhM9HW1j5x\n4kR3d7evr29dXZ3iHcDCYixr1649fPhwY2Ojn59fR0eHglvHwmIyW7Zs2bZtG4/H8/Pz6+vrU2TT\neI7FcEiS/OCDD44fP+7v73/u3DmFlVfGwmI+IpEoMDDwv//9L4fDSUhIQJWF6AYPhcxHS0srJSXF\n3d391KlTsbGximkU91jjhba2Nk9Pz4cPH+7evRtVEKYVLKxxRE1NjYODw5MnTxoaGszNzWltCwtr\nHCESiaZMmaKjo9PS0kL3TAvPscYRWVlZPT09f//73xUwf8fCGkekpqYCgGLSwvBQOF4gCMLU1FRb\nW7u+vh73WBjKuH79eltb26pVq/A6FoZKFDkOAh4KxwkSicTCwkIikfD5fDabrYAWcY81LsjJyWlq\nalqxYoViVAVYWOMEBY+DgIfCcYKlpWVvb29zc7OWlpZiWsQ9FvMRiUQDAwMcDkdhqgLcY40TBgYG\n6DjMfQSwsDC0gIdCDC3gsxvUnnv37gmFQg8Pj87OzszMzJCQEOlPBEEkJydLJBKSJB0dHZ2cnBTm\nFRYWk8nJybGysnJzcwMAsczFW2UCC4sJ5Obm1tTUDAwM6OrqDv2+sbHR29sbfVZYGsXT5hTZGIYm\n3N3dpUNhY2Mjj8drbm4ODAw0MzOrq6ubNm0aAIjFYkVqCwuLaZiZmdXX11dUVLDZbE9PzzNnzlRV\nVbFYrDlz5ihyjoWXG5hJSUmJvr6+tbW1shzAPRbTKCsra2hoaG1t9ff3V6IbuMfC0AJeIMXQAhYW\nhhawsDC0gIWFoQUsLAwtYGFhaAELC0MLWFgYWsDCwtACFhaGFrCwMLTwf/F7G1EUDUeWAAAAAElF\nTkSuQmCC\n",
284 | "text/html": [
285 | "
"
286 | ],
287 | "text/plain": [
288 | "
"
289 | ]
290 | },
291 | "execution_count": 10,
292 | "metadata": {},
293 | "output_type": "execute_result"
294 | }
295 | ],
296 | "source": [
297 | "idx_least = similar_mols[-1][0] \n",
298 | "molecules[idx_least]"
299 | ]
300 | },
301 | {
302 | "cell_type": "markdown",
303 | "metadata": {},
304 | "source": [
305 | "The least similar molecule"
306 | ]
307 | },
308 | {
309 | "cell_type": "markdown",
310 | "metadata": {},
311 | "source": [
312 | "Similarity between these molecules:"
313 | ]
314 | },
315 | {
316 | "cell_type": "code",
317 | "execution_count": 11,
318 | "metadata": {},
319 | "outputs": [
320 | {
321 | "data": {
322 | "text/plain": [
323 | "0.13678393398437561"
324 | ]
325 | },
326 | "execution_count": 11,
327 | "metadata": {},
328 | "output_type": "execute_result"
329 | }
330 | ],
331 | "source": [
332 | "usr_most = usr(molecules[idx_most])\n",
333 | "usr_least = usr(molecules[idx_least])\n",
334 | "usr_similarity(usr_most, usr_least)"
335 | ]
336 | }
337 | ],
338 | "metadata": {
339 | "kernelspec": {
340 | "display_name": "Python 3",
341 | "language": "python",
342 | "name": "python3"
343 | },
344 | "language_info": {
345 | "codemirror_mode": {
346 | "name": "ipython",
347 | "version": 3
348 | },
349 | "file_extension": ".py",
350 | "mimetype": "text/x-python",
351 | "name": "python",
352 | "nbconvert_exporter": "python",
353 | "pygments_lexer": "ipython3",
354 | "version": "3.6.1"
355 | }
356 | },
357 | "nbformat": 4,
358 | "nbformat_minor": 2
359 | }
360 |
--------------------------------------------------------------------------------
/environment.yml:
--------------------------------------------------------------------------------
1 | channels:
2 | - oddt
3 | - rdkit
4 | - openbabel
5 | - defaults
6 | dependencies:
7 | - oddt
8 | - rdkit
9 | - openbabel
10 | # additional dependencies
11 | - matplotlib
12 | - scikit-image
13 |
--------------------------------------------------------------------------------
/xiap/crystal_ligand.sdf:
--------------------------------------------------------------------------------
1 | 9JZ_1_3HL5
2 | RDKit 3D
3 |
4 | 37 40 0 0 0 0 0 0 0 0999 V2000
5 | 7.2650 7.7770 -19.4560 C 0 0 0 0 0 0 0 0 0 0 0 0
6 | 8.4050 16.8550 -18.1220 C 0 0 0 0 0 0 0 0 0 0 0 0
7 | 7.9220 18.8070 -21.3610 C 0 0 0 0 0 0 0 0 0 0 0 0
8 | 13.9600 8.2810 -22.9420 C 0 0 0 0 0 0 0 0 0 0 0 0
9 | 13.8620 8.7140 -21.6220 C 0 0 0 0 0 0 0 0 0 0 0 0
10 | 8.3790 8.9380 -25.9920 C 0 0 0 0 0 0 0 0 0 0 0 0
11 | 12.8420 8.3280 -23.7700 C 0 0 0 0 0 0 0 0 0 0 0 0
12 | 12.6520 9.2010 -21.1370 C 0 0 0 0 0 0 0 0 0 0 0 0
13 | 8.4630 9.8620 -24.9520 C 0 0 0 0 0 0 0 0 0 0 0 0
14 | 9.3760 7.9750 -26.1190 C 0 0 0 0 0 0 0 0 0 0 0 0
15 | 9.9800 14.4840 -25.0840 C 0 0 0 0 0 0 0 0 0 0 0 0
16 | 8.4630 14.3590 -24.9150 C 0 0 0 0 0 0 0 0 0 0 0 0
17 | 10.7280 13.5190 -24.1600 C 0 0 0 0 0 0 0 0 0 0 0 0
18 | 8.0540 14.5740 -23.4590 C 0 0 0 0 0 0 0 0 0 0 0 0
19 | 10.2850 13.6620 -22.6990 C 0 0 0 0 0 0 0 0 0 0 0 0
20 | 6.2930 9.7010 -20.8050 C 0 0 0 0 0 0 0 0 0 0 0 0
21 | 6.8450 11.0300 -21.2960 C 0 0 0 0 0 0 0 0 0 0 0 0
22 | 11.6220 8.8150 -23.2890 C 0 0 0 0 0 0 0 0 0 0 0 0
23 | 11.5270 9.2650 -21.9680 C 0 0 0 0 0 0 0 0 0 0 0 0
24 | 10.4640 8.8560 -24.2310 C 0 0 0 0 0 0 0 0 0 0 0 0
25 | 7.5310 8.9340 -20.4120 C 0 0 1 0 0 0 0 0 0 0 0 0
26 | 8.7570 13.5560 -22.5550 C 0 0 0 0 0 0 0 0 0 0 0 0
27 | 8.4990 9.9800 -19.8640 C 0 0 1 0 0 0 0 0 0 0 0 0
28 | 8.4430 17.0640 -19.6330 C 0 0 1 0 0 0 0 0 0 0 0 0
29 | 8.2410 13.5790 -21.1010 C 0 0 1 0 0 0 0 0 0 0 0 0
30 | 9.8670 9.4940 -20.2350 C 0 0 0 0 0 0 0 0 0 0 0 0
31 | 7.8500 15.8680 -20.3170 C 0 0 0 0 0 0 0 0 0 0 0 0
32 | 8.7630 12.3680 -20.3720 C 0 0 0 0 0 0 0 0 0 0 0 0
33 | 9.5010 9.8070 -24.1000 N 0 0 0 0 0 0 0 0 0 0 0 0
34 | 10.3960 7.9550 -25.2470 N 0 0 0 0 0 0 0 0 0 0 0 0
35 | 7.7540 18.2890 -20.0140 N 0 0 0 0 0 0 0 0 0 0 0 0
36 | 10.2880 9.7190 -21.4890 N 0 0 0 0 0 0 0 0 0 0 0 0
37 | 8.6620 14.8220 -20.4610 N 0 0 0 0 0 0 0 0 0 0 0 0
38 | 8.0770 11.2240 -20.5180 N 0 0 0 0 0 0 0 0 0 0 0 0
39 | 10.5250 8.9130 -19.3870 O 0 0 0 0 0 0 0 0 0 0 0 0
40 | 6.6960 15.9000 -20.7290 O 0 0 0 0 0 0 0 0 0 0 0 0
41 | 9.7840 12.4600 -19.7000 O 0 0 0 0 0 0 0 0 0 0 0 0
42 | 21 1 1 1
43 | 24 2 1 1
44 | 3 31 1 0
45 | 4 5 2 0
46 | 4 7 1 0
47 | 5 8 1 0
48 | 6 9 2 0
49 | 6 10 1 0
50 | 7 18 2 0
51 | 8 19 2 0
52 | 9 29 1 0
53 | 10 30 2 0
54 | 11 12 1 0
55 | 11 13 1 0
56 | 12 14 1 0
57 | 13 15 1 0
58 | 14 22 1 0
59 | 15 22 1 0
60 | 16 17 1 0
61 | 16 21 1 0
62 | 17 34 1 0
63 | 18 19 1 0
64 | 18 20 1 0
65 | 19 32 1 0
66 | 20 29 2 0
67 | 20 30 1 0
68 | 21 23 1 0
69 | 22 25 1 0
70 | 23 26 1 6
71 | 23 34 1 0
72 | 24 27 1 0
73 | 24 31 1 0
74 | 25 28 1 0
75 | 25 33 1 1
76 | 26 32 1 0
77 | 26 35 2 0
78 | 27 33 1 0
79 | 27 36 2 0
80 | 28 34 1 0
81 | 28 37 2 0
82 | M CHG 1 31 1
83 | M END
84 | > <_TriposChargeType> (1)
85 | USER_CHARGES
86 |
87 | $$$$
88 |
--------------------------------------------------------------------------------