{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Ligand-based Target Prediction Tutorial" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### myChEMBL team, ChEMBL Group, EMBL-EBI." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is a short tutorial on getting target predictions based on the current multi-category Naive Bayesian [ChEMBL_20 models](http://chembl.blogspot.co.uk/2014/04/ligand-based-target-predictions-in.html) for a single molecule input. The predictions are ranked by the output classifier probability or score." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Outline of the tutorial:\n", "* Input a molecule to get target predictions for it\n", "* Assess the predictions\n", "* Retrieve individual feature contributions for a prediction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The two models are under ~/models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, import IPython helpers:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "from IPython.display import Image" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, import the necessary modules:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from rdkit.Chem import AllChem as Chem\n", "from rdkit.Chem.Draw import IPythonConsole\n", "from rdkit.Chem import PandasTools\n", "from rdkit.Chem import Draw\n", "\n", "import pandas as pd\n", "from pandas import concat\n", "\n", "from collections import OrderedDict\n", "\n", "# By default, the API connects to the main ChEMBL database; set it to use the local version (i.e. myChEMBL) instead...\n", "from chembl_webresource_client.settings import Settings\n", "\n", "Settings.Instance().NEW_CLIENT_URL = 'http://localhost/chemblws'\n", "\n", "from chembl_webresource_client.new_client import new_client" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from sklearn.externals import joblib" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "rcParams['figure.figsize'] = 10,10" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A couple of utility functions:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def calc_scores(classes):\n", " p = []\n", " for c in classes:\n", " p.append(pred_score(c))\n", " return p" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def pred_score(trgt):\n", " diff = morgan_nb.estimators_[classes.index(trgt)].feature_log_prob_[1] - morgan_nb.estimators_[classes.index(trgt)].feature_log_prob_[0]\n", " return sum(diff*fp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Load one of the two models:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "morgan_nb = joblib.load('/home/chembl/models_21/10uM/mNB_10uM_all.pkl')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "classes = list(morgan_nb.targets)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check the number of classses/targets:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1429" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(classes)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have to suppress some warnings because of: https://github.com/python-pillow/Pillow/issues/63" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings('ignore') \n", "warnings.filterwarnings(\"ignore\", category=DeprecationWarning)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get predictions for a compound" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's use a molecule (GS-5759) found in [this](http://www.ncbi.nlm.nih.gov/pubmed/24513870) publication. It is a novel compound (not in ChEMBL) reported to have dual activity against PDE4 and beta-2 adrenergic receptor. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "smiles = 'O[C@@H](CNCCCC#CC1=CC=C(C=C1)NC(=O)C=1C=C(C=CC1)S(=O)(=O)C=1C=C2C(=C(C=NC2=C(C1)C)C(=O)N)NC1=CC(=CC=C1)OC)C1=C2C=CC(NC2=C(C=C1)O)=O'" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [], "source": [ "mol = Chem.MolFromSmiles(smiles)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ " mol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Convert to the Morgan fingerprint and save the bit dictionary for later..." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "info={}\n", "fp = Chem.GetMorganFingerprintAsBitVect(mol,2,nBits=2048, bitInfo=info)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get the predictions in a Pandas frame" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "predictions = pd.DataFrame(zip(classes, calc_scores(classes),list(morgan_nb.predict_proba(fp)[0])),columns=['id','score','proba'])" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idscoreproba
0CHEMBL1075051-65.8914807.053404e-33
1CHEMBL1075104-30.7158334.911063e-17
2CHEMBL1075108-76.6397144.848016e-38
3CHEMBL1075111-82.0244322.056597e-40
4CHEMBL1075115-12.5150537.705190e-10
\n", "
" ], "text/plain": [ " id score proba\n", "0 CHEMBL1075051 -65.891480 7.053404e-33\n", "1 CHEMBL1075104 -30.715833 4.911063e-17\n", "2 CHEMBL1075108 -76.639714 4.848016e-38\n", "3 CHEMBL1075111 -82.024432 2.056597e-40\n", "4 CHEMBL1075115 -12.515053 7.705190e-10" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predictions.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's check the distributions of prediction probability and score for the 1244 targets." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nrzf59SW7bVLCAABWYBO2KJswANg1NmEAAI0oYczKrqE3+fUmv75kt01KGADACmzCFmUTBgC7xiYM\nAKCRxUuiUTPeAAAEtUlEQVRYVb2kqn6lqj5ZVa9Z+vG5uOwaepNfb/LrS3bbtGgJq6onJPmHSV6c\n5A8k+dNV9S1LXgMX10c/+tG1L4FDkF9v8utLdtu09DNhNyR5cIzxqTHGo0nuSnLzwtfARfSFL3xh\n7UvgEOTXm/z6kt02LV3Crkry0IHjh6dzAACbctnaF3AmT3nK9659CRfByG//9tesfREX1bFjx9a+\nBA5Bfn1deeXVOXHiU3nd61639qVcFE94wtfny1/+/9a+jIvoiTubXbKF/C7Mom9RUVXfkeRvjzFe\nMh3flmSMMe445X7ewwEAaONC3qJi6RL2xCSfSPJdSf5bko8k+dNjjI8vdhEAAJeARV+OHGN8qar+\nUpJ7sr9He4sCBgBs0SX5jvkAALtutXfMP5c3ba2qN1TVg1X10aq6fulr5MzOll9VfV9V/fL08eGq\net4a18npneubJlfVC6rq0ar6U0teH2d2jv/t3KuqX6qq/1RVH1r6Gjmzc/hv51Oq6r3T/+99rKpu\nXeEyOY2qektVnaiq+x/nPufXW8YYi39kv/z9apLnJPmaJB9N8i2n3OelSX52uv3CJPeuca0+Lji/\n70jy1On2S+R36XycS34H7vdvkvyrJH9q7ev2cc6/956a5D8nuWo6/r1rX7eP88rv9iSvP5ldks8l\nuWzta/cxkuSPJLk+yf1n+Px595a1ngk7lzdtvTnJ25NkjPHvkzy1qq5Y9jI5g7PmN8a4d4zxxenw\n3ng/uEvJub5p8l9O8lNJPrvkxfG4ziW770vy02OM40kyxviNha+RMzuX/EaSJ0+3n5zkc2OMxxa8\nRs5gjPHhJJ9/nLucd29Zq4Sdy5u2nnqf46e5D+s43zfd/fNJ/vVFvSLOx1nzq6pvSPKyMcabkpz3\nX7vmojmX33vXJHl6VX2oqu6rqu9f7Oo4m3PJ7x8mua6q/muSX07y6oWujcM7795yyb5ZK7uhqv5o\nkldk/2lc+vjxJAf3KopYH5cleX6S70zye5L8QlX9whjjV9e9LM7Ri5P80hjjO6vq9yX5QFV96xjj\nt9a+MOa3Vgk7nuTZB46PTOdOvc+zznIf1nEu+aWqvjXJm5O8ZIzxeE/hsqxzye8PJrmrqir7u5SX\nVtWjY4z3LnSNnN65ZPdwkt8YY/z3JP+9qv5tkm/L/haJdZ1Lfq9I8vokGWP8WlX9lyTfkuQXF7lC\nDuO8e8taL0fel+Sbq+o5VfWkJC9Pcup/3N+b5AeSr7zT/hfGGCeWvUzO4Kz5VdWzk/x0ku8fY/za\nCtfImZ01vzHGN00f35j9XdirFLBLwrn8t/M9Sf5IVT2xqr4++wNh78d4aTiX/D6V5LuTZNoTXZPk\n1xe9Sh5P5cyvDJx3b1nlmbBxhjdtraq/uP/p8eYxxt1V9ceq6leT/Hb2/3TAJeBc8kvyt5I8Pckb\np2dTHh1j3LDeVXPSOeb3VV+y+EVyWuf4385fqar3J7k/yZeSvHmM8cCKl83kHH/v/d9J3nbgbRD+\n5hjjkZUumQOq6p1J9pI8o6o+neS1SZ6UQ/QWb9YKALCC1d6sFQBgy5QwAIAVKGEAACtQwgAAVqCE\nAQCsQAkDAFiBEgYAsAIlDABgBf8/SsGTxmgf7xwAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "predictions['proba'].hist()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\naARD1siy7mWTO5esubN2k7Lmzvp9njX3KhiyAAAAKqCTBaAKOlkt6SGDRCcLkap0sszsgJl9zMy+\nZGZ3m9kvD+evMrOvmNldw9vFcx9zpZkdMbN7zeyi5aMAAABM2262Cx+V9FZ3f7Gkfyrpl8zs+4b3\nvcvdXza8fUSSzOwcSZdLOkfSqyVdZ7P/pYXy7mWTO5esubN2k7Lmzvp9njX3KhYOWe5+1N0PD7cf\nknSvpDOHd59oeLpU0o3u/qi7b0o6Iun8U7NcAACAaViqk2Vma5r9L8v3S3qbpIOSHpT0GUlvc/cH\nzex3JH3C3d8/fMx7JN3i7r9/3OeikwV0jE5WS3rIINHJQqSqr5NlZs+S9EFJbx6uaF0n6Wx3X5d0\nVNI7l/mDAQAAerZnN3cysz2aDVjvc/ebJcnd/2buLu+W9OHh9gOSnjf3vgPDuSc4ePCg1tbWJEl7\n9+7V+vq6NjY2JB3b8+3tePtcK+sZ6/jQoUMpvr58vWfHhw4d0uOV4b8bnR9vn2tlPdvH2+dqff5D\nktYrfv7t4+Goke/37XOtrIef56f2ePv25uamVrWr7UIze6+kv3X3t86d2+/uR4fbb5F0nru/zszO\nlXSDpAs0627dJumFx+8NZt0uLKX84xcyE3LnUkrRhRdeqF62qHafo+jxg00ram8XFo2Tu63twsyP\n74y5V9kuXDhkmdnLJX1c0t2aPUpd0q9Jep1m/+vymKRNSb/g7lvDx1wp6eckPaLZ9uKtJ/i8KYcs\nIAs6WS3pIYPU2pCFXKoMWbUwZAF9Y8hqSQ8ZJIYsROIfiJ6A+b3eTMidS9bcx3eH8ijRCwiR9fs8\na+5VMGQBAABUwHYhgCrYLmxJDxkktgsRie1CAACARjBkjSzrXja5c8maO2s3KWvurN/nWXOvgiEL\nAACgAjpZAKqgk9WSHjJIdLIQiU4WAABAIxiyRpZ1L5vcuWTNnbWblDV31u/zrLlXwZAFAABQAZ0s\nAFXQyWpJDxkkOlmIRCcLAACgEQxZI8u6l03uXLLmztpNypo76/d51tyrYMgCAACogE4WgCroZLWk\nhwwSnSxEopMFAADQCIaskWXdyyZ3LllzZ+0mZc2d9fs8a+5VMGQBAABUQCcLQBV0slrSQwaJThYi\n0ckCAABoBEPWyLLuZZM7l6y5s3aTsubO+n2eNfcqGLIAAAAqoJMFoAo6WS3pIYNEJwuR6GQBAAA0\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "predictions['score'].hist()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sort by probability and take top 10." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "top_preds = predictions.sort(columns=['proba'],ascending=False).head(10)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idscoreproba
1283CHEMBL541416.5500490.999912
243CHEMBL21011.0058890.994003
652CHEMBL325210.1038000.836839
249CHEMBL2137.0948300.747240
477CHEMBL2756.9130940.660680
1123CHEMBL4697-1.2914680.000231
851CHEMBL3864-1.6246110.000114
707CHEMBL3397-4.8844530.000102
401CHEMBL2535-2.7156590.000058
710CHEMBL340-6.3361100.000031
\n", "
" ], "text/plain": [ " id score proba\n", "1283 CHEMBL5414 16.550049 0.999912\n", "243 CHEMBL210 11.005889 0.994003\n", "652 CHEMBL3252 10.103800 0.836839\n", "249 CHEMBL213 7.094830 0.747240\n", "477 CHEMBL275 6.913094 0.660680\n", "1123 CHEMBL4697 -1.291468 0.000231\n", "851 CHEMBL3864 -1.624611 0.000114\n", "707 CHEMBL3397 -4.884453 0.000102\n", "401 CHEMBL2535 -2.715659 0.000058\n", "710 CHEMBL340 -6.336110 0.000031" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "top_preds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use ChEMBL WS to merge with target information" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def fetch_WS(trgt):\n", " targets = new_client.target\n", " return targets.get(trgt)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plist = []\n", "for i,e in enumerate(top_preds['id']):\n", " p = pd.DataFrame(fetch_WS(e), index=(i,))\n", " plist.append(p)\n", "target_info = concat(plist)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(10, 6)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "target_info.shape" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
organismpref_namespecies_group_flagtarget_chembl_idtarget_componentstarget_type
0Cavia porcellusBeta-2 adrenergic receptorFalseCHEMBL5414{u'component_id': 3708, u'accession': u'Q8K4Z4', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'Adrb2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-2 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoceptor', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
1Homo sapiensBeta-2 adrenergic receptorFalseCHEMBL210{u'component_id': 213, u'accession': u'P07550', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ADRB2R ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'B2AR', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'ADRB2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-2 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoceptor', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
2Rattus norvegicusBeta-1 adrenergic receptorFalseCHEMBL3252{u'component_id': 1573, u'accession': u'P18090', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'Adrb1r', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Adrb1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-1 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoceptor', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
3Homo sapiensBeta-1 adrenergic receptorFalseCHEMBL213{u'component_id': 185, u'accession': u'P08588', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ADRB1R ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'B1AR', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'ADRB1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-1 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoceptor', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
4Homo sapiensPhosphodiesterase 4BFalseCHEMBL275{u'component_id': 2177, u'accession': u'Q07343', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'DPDE4', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'PDE4B', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'cAMP-specific 3',5'-cyclic phosphodiesterase 4B', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'DPDE4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PDE32', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'3.1.4.53', u'syn_type': u'EC_NUMBER'}]}SINGLE PROTEIN
5Plasmodium falciparumHexose transporter 1FalseCHEMBL4697{u'component_id': 3015, u'accession': u'O97467', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ht1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Hexose transporter 1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Putative sugar transporter', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
6Homo sapiensProtein-tyrosine phosphatase 2CFalseCHEMBL3864{u'component_id': 2182, u'accession': u'Q06124', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'PTP2C ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'SHPTP2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'PTPN11', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Tyrosine-protein phosphatase non-receptor type 11', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Protein-tyrosine phosphatase 1D', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Protein-tyrosine phosphatase 2C', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SH-PTP2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SH-PTP3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PTP-1D', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PTP-2C', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SHP-2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Shp2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'3.1.3.48', u'syn_type': u'EC_NUMBER'}]}SINGLE PROTEIN
7Homo sapiensCytochrome P450 2C9FalseCHEMBL3397{u'component_id': 1718, u'accession': u'P11712', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'CYP2C10', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'CYP2C9', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Cytochrome P450 2C9', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(R)-limonene 6-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(S)-limonene 6-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(S)-limonene 7-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIC9', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cholesterol 25-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P-450MP', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 MP-4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 MP-8', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 PB-1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'S-mephenytoin 4-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1.14.13.-', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.80', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.48', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.49', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.14.1', u'syn_type': u'EC_NUMBER'}]}SINGLE PROTEIN
8Homo sapiensGlucose transporterFalseCHEMBL2535{u'component_id': 874, u'accession': u'P11166', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'GLUT1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'SLC2A1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Solute carrier family 2, facilitated glucose transporter member 1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Glucose transporter type 1, erythrocyte/brain', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'HepG2 glucose transporter', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'GLUT-1', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
9Homo sapiensCytochrome P450 3A4FalseCHEMBL340{u'component_id': 151, u'accession': u'P08684', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'CYP3A3', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'CYP3A4', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Cytochrome P450 3A4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1,8-cineole 2-exo-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Albendazole monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Albendazole sulfoxidase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIIA3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIIA4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cholesterol 25-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 3A3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 HLp', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 NF-25', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450-PCN1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Nifedipine oxidase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Quinine 3-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Taurochenodeoxycholate 6-alpha-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1.14.13.-', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.157', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.32', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.14.1', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.67', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.97', u'syn_type': u'EC_NUMBER'}]}SINGLE PROTEIN
\n", "
" ], "text/plain": [ " organism pref_name species_group_flag target_chembl_id target_components target_type\n", "0 Cavia porcellus Beta-2 adrenergic receptor False CHEMBL5414 {u'component_id': 3708, u'accession': u'Q8K4Z4', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'Adrb2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-2 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoceptor', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "1 Homo sapiens Beta-2 adrenergic receptor False CHEMBL210 {u'component_id': 213, u'accession': u'P07550', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ADRB2R ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'B2AR', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'ADRB2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-2 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoceptor', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "2 Rattus norvegicus Beta-1 adrenergic receptor False CHEMBL3252 {u'component_id': 1573, u'accession': u'P18090', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'Adrb1r', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Adrb1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-1 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoceptor', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "3 Homo sapiens Beta-1 adrenergic receptor False CHEMBL213 {u'component_id': 185, u'accession': u'P08588', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ADRB1R ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'B1AR', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'ADRB1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-1 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoceptor', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "4 Homo sapiens Phosphodiesterase 4B False CHEMBL275 {u'component_id': 2177, u'accession': u'Q07343', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'DPDE4', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'PDE4B', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'cAMP-specific 3',5'-cyclic phosphodiesterase 4B', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'DPDE4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PDE32', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'3.1.4.53', u'syn_type': u'EC_NUMBER'}]} SINGLE PROTEIN\n", "5 Plasmodium falciparum Hexose transporter 1 False CHEMBL4697 {u'component_id': 3015, u'accession': u'O97467', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ht1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Hexose transporter 1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Putative sugar transporter', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "6 Homo sapiens Protein-tyrosine phosphatase 2C False CHEMBL3864 {u'component_id': 2182, u'accession': u'Q06124', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'PTP2C ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'SHPTP2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'PTPN11', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Tyrosine-protein phosphatase non-receptor type 11', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Protein-tyrosine phosphatase 1D', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Protein-tyrosine phosphatase 2C', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SH-PTP2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SH-PTP3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PTP-1D', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PTP-2C', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SHP-2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Shp2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'3.1.3.48', u'syn_type': u'EC_NUMBER'}]} SINGLE PROTEIN\n", "7 Homo sapiens Cytochrome P450 2C9 False CHEMBL3397 {u'component_id': 1718, u'accession': u'P11712', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'CYP2C10', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'CYP2C9', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Cytochrome P450 2C9', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(R)-limonene 6-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(S)-limonene 6-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(S)-limonene 7-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIC9', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cholesterol 25-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P-450MP', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 MP-4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 MP-8', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 PB-1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'S-mephenytoin 4-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1.14.13.-', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.80', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.48', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.49', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.14.1', u'syn_type': u'EC_NUMBER'}]} SINGLE PROTEIN\n", "8 Homo sapiens Glucose transporter False CHEMBL2535 {u'component_id': 874, u'accession': u'P11166', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'GLUT1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'SLC2A1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Solute carrier family 2, facilitated glucose transporter member 1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Glucose transporter type 1, erythrocyte/brain', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'HepG2 glucose transporter', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'GLUT-1', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "9 Homo sapiens Cytochrome P450 3A4 False CHEMBL340 {u'component_id': 151, u'accession': u'P08684', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'CYP3A3', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'CYP3A4', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Cytochrome P450 3A4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1,8-cineole 2-exo-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Albendazole monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Albendazole sulfoxidase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIIA3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIIA4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cholesterol 25-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 3A3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 HLp', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 NF-25', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450-PCN1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Nifedipine oxidase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Quinine 3-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Taurochenodeoxycholate 6-alpha-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1.14.13.-', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.157', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.32', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.14.1', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.67', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.97', u'syn_type': u'EC_NUMBER'}]} SINGLE PROTEIN" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "target_info" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, let's get the complete top 10 target predictions in descreasing order of probability." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [], "source": [ "result = pd.merge(top_preds, target_info, left_on='id', right_on='target_chembl_id')" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idscoreprobaorganismpref_namespecies_group_flagtarget_chembl_idtarget_componentstarget_type
0CHEMBL541416.5500490.999912Cavia porcellusBeta-2 adrenergic receptorFalseCHEMBL5414{u'component_id': 3708, u'accession': u'Q8K4Z4', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'Adrb2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-2 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoceptor', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
1CHEMBL21011.0058890.994003Homo sapiensBeta-2 adrenergic receptorFalseCHEMBL210{u'component_id': 213, u'accession': u'P07550', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ADRB2R ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'B2AR', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'ADRB2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-2 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoceptor', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
2CHEMBL325210.1038000.836839Rattus norvegicusBeta-1 adrenergic receptorFalseCHEMBL3252{u'component_id': 1573, u'accession': u'P18090', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'Adrb1r', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Adrb1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-1 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoceptor', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
3CHEMBL2137.0948300.747240Homo sapiensBeta-1 adrenergic receptorFalseCHEMBL213{u'component_id': 185, u'accession': u'P08588', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ADRB1R ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'B1AR', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'ADRB1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-1 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoceptor', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
4CHEMBL2756.9130940.660680Homo sapiensPhosphodiesterase 4BFalseCHEMBL275{u'component_id': 2177, u'accession': u'Q07343', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'DPDE4', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'PDE4B', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'cAMP-specific 3',5'-cyclic phosphodiesterase 4B', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'DPDE4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PDE32', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'3.1.4.53', u'syn_type': u'EC_NUMBER'}]}SINGLE PROTEIN
5CHEMBL4697-1.2914680.000231Plasmodium falciparumHexose transporter 1FalseCHEMBL4697{u'component_id': 3015, u'accession': u'O97467', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ht1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Hexose transporter 1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Putative sugar transporter', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
6CHEMBL3864-1.6246110.000114Homo sapiensProtein-tyrosine phosphatase 2CFalseCHEMBL3864{u'component_id': 2182, u'accession': u'Q06124', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'PTP2C ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'SHPTP2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'PTPN11', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Tyrosine-protein phosphatase non-receptor type 11', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Protein-tyrosine phosphatase 1D', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Protein-tyrosine phosphatase 2C', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SH-PTP2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SH-PTP3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PTP-1D', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PTP-2C', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SHP-2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Shp2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'3.1.3.48', u'syn_type': u'EC_NUMBER'}]}SINGLE PROTEIN
7CHEMBL3397-4.8844530.000102Homo sapiensCytochrome P450 2C9FalseCHEMBL3397{u'component_id': 1718, u'accession': u'P11712', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'CYP2C10', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'CYP2C9', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Cytochrome P450 2C9', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(R)-limonene 6-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(S)-limonene 6-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(S)-limonene 7-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIC9', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cholesterol 25-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P-450MP', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 MP-4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 MP-8', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 PB-1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'S-mephenytoin 4-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1.14.13.-', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.80', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.48', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.49', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.14.1', u'syn_type': u'EC_NUMBER'}]}SINGLE PROTEIN
8CHEMBL2535-2.7156590.000058Homo sapiensGlucose transporterFalseCHEMBL2535{u'component_id': 874, u'accession': u'P11166', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'GLUT1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'SLC2A1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Solute carrier family 2, facilitated glucose transporter member 1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Glucose transporter type 1, erythrocyte/brain', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'HepG2 glucose transporter', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'GLUT-1', u'syn_type': u'UNIPROT'}]}SINGLE PROTEIN
9CHEMBL340-6.3361100.000031Homo sapiensCytochrome P450 3A4FalseCHEMBL340{u'component_id': 151, u'accession': u'P08684', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'CYP3A3', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'CYP3A4', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Cytochrome P450 3A4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1,8-cineole 2-exo-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Albendazole monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Albendazole sulfoxidase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIIA3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIIA4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cholesterol 25-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 3A3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 HLp', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 NF-25', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450-PCN1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Nifedipine oxidase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Quinine 3-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Taurochenodeoxycholate 6-alpha-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1.14.13.-', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.157', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.32', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.14.1', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.67', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.97', u'syn_type': u'EC_NUMBER'}]}SINGLE PROTEIN
\n", "
" ], "text/plain": [ " id score proba organism pref_name species_group_flag target_chembl_id target_components target_type\n", "0 CHEMBL5414 16.550049 0.999912 Cavia porcellus Beta-2 adrenergic receptor False CHEMBL5414 {u'component_id': 3708, u'accession': u'Q8K4Z4', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'Adrb2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-2 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoceptor', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "1 CHEMBL210 11.005889 0.994003 Homo sapiens Beta-2 adrenergic receptor False CHEMBL210 {u'component_id': 213, u'accession': u'P07550', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ADRB2R ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'B2AR', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'ADRB2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-2 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-2 adrenoceptor', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "2 CHEMBL3252 10.103800 0.836839 Rattus norvegicus Beta-1 adrenergic receptor False CHEMBL3252 {u'component_id': 1573, u'accession': u'P18090', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'Adrb1r', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Adrb1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-1 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoceptor', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "3 CHEMBL213 7.094830 0.747240 Homo sapiens Beta-1 adrenergic receptor False CHEMBL213 {u'component_id': 185, u'accession': u'P08588', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ADRB1R ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'B1AR', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'ADRB1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Beta-1 adrenergic receptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoreceptor', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Beta-1 adrenoceptor', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "4 CHEMBL275 6.913094 0.660680 Homo sapiens Phosphodiesterase 4B False CHEMBL275 {u'component_id': 2177, u'accession': u'Q07343', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'DPDE4', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'PDE4B', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'cAMP-specific 3',5'-cyclic phosphodiesterase 4B', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'DPDE4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PDE32', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'3.1.4.53', u'syn_type': u'EC_NUMBER'}]} SINGLE PROTEIN\n", "5 CHEMBL4697 -1.291468 0.000231 Plasmodium falciparum Hexose transporter 1 False CHEMBL4697 {u'component_id': 3015, u'accession': u'O97467', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'ht1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Hexose transporter 1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Putative sugar transporter', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "6 CHEMBL3864 -1.624611 0.000114 Homo sapiens Protein-tyrosine phosphatase 2C False CHEMBL3864 {u'component_id': 2182, u'accession': u'Q06124', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'PTP2C ', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'SHPTP2', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'PTPN11', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Tyrosine-protein phosphatase non-receptor type 11', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Protein-tyrosine phosphatase 1D', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Protein-tyrosine phosphatase 2C', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SH-PTP2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SH-PTP3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PTP-1D', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'PTP-2C', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'SHP-2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Shp2', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'3.1.3.48', u'syn_type': u'EC_NUMBER'}]} SINGLE PROTEIN\n", "7 CHEMBL3397 -4.884453 0.000102 Homo sapiens Cytochrome P450 2C9 False CHEMBL3397 {u'component_id': 1718, u'accession': u'P11712', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'CYP2C10', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'CYP2C9', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Cytochrome P450 2C9', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(R)-limonene 6-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(S)-limonene 6-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'(S)-limonene 7-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIC9', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cholesterol 25-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P-450MP', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 MP-4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 MP-8', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 PB-1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'S-mephenytoin 4-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1.14.13.-', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.80', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.48', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.49', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.14.1', u'syn_type': u'EC_NUMBER'}]} SINGLE PROTEIN\n", "8 CHEMBL2535 -2.715659 0.000058 Homo sapiens Glucose transporter False CHEMBL2535 {u'component_id': 874, u'accession': u'P11166', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'GLUT1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'SLC2A1', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Solute carrier family 2, facilitated glucose transporter member 1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Glucose transporter type 1, erythrocyte/brain', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'HepG2 glucose transporter', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'GLUT-1', u'syn_type': u'UNIPROT'}]} SINGLE PROTEIN\n", "9 CHEMBL340 -6.336110 0.000031 Homo sapiens Cytochrome P450 3A4 False CHEMBL340 {u'component_id': 151, u'accession': u'P08684', u'component_type': u'PROTEIN', u'target_component_synonyms': [{u'component_synonym': u'CYP3A3', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'CYP3A4', u'syn_type': u'GENE_SYMBOL'}, {u'component_synonym': u'Cytochrome P450 3A4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1,8-cineole 2-exo-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Albendazole monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Albendazole sulfoxidase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIIA3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'CYPIIIA4', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cholesterol 25-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 3A3', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 HLp', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450 NF-25', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Cytochrome P450-PCN1', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Nifedipine oxidase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Quinine 3-monooxygenase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'Taurochenodeoxycholate 6-alpha-hydroxylase', u'syn_type': u'UNIPROT'}, {u'component_synonym': u'1.14.13.-', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.157', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.32', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.14.1', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.67', u'syn_type': u'EC_NUMBER'}, {u'component_synonym': u'1.14.13.97', u'syn_type': u'EC_NUMBER'}]} SINGLE PROTEIN" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Not bad! The model retrieved the correct targets in the top 5 predictions out of a pool of 1342 targets." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Feature contribution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's look at contributions of specific substructural features to the human β2 AR predictions. Which features of the active molecules in the training set were the most important?" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [], "source": [ "bit_scores = (morgan_nb.estimators_[classes.index(result['id'][1])].feature_log_prob_[1] - morgan_nb.estimators_[classes.index(result['id'][1])].feature_log_prob_[0])*fp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The snippet below maps the specific bits back to atomic environments" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [], "source": [ "frags = OrderedDict()\n", "for k in info.keys():\n", " if bit_scores[k] > 0.1:\n", " atomId,radius = info[k][0]\n", " env=Chem.FindAtomEnvironmentOfRadiusN(mol,radius,atomId)\n", " ats = set([atomId])\n", " for bidx in env:\n", " bond = mol.GetBondWithIdx(bidx)\n", " ats.add(bond.GetBeginAtomIdx())\n", " ats.add(bond.GetEndAtomIdx())\n", " frag = Chem.MolFragmentToSmiles(mol,atomsToUse=list(ats),bondsToUse=env,rootedAtAtom=atomId)\n", " legend = str(round(bit_scores[k],2))\n", " frags[k] = (legend,frag)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [], "source": [ "legends = [l[1][0] for l in sorted(frags.items(), key=lambda t: t[1][0], reverse=True)][:10]\n", "ffrags = [l[1][1] for l in sorted(frags.items(), key=lambda t: t[1][0], reverse=True)][:10]" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [], "source": [ "fmols=[Chem.MolFromSmarts(s) for s in ffrags]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This was the original molecule" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And these are its most important features, based on their enrichent in human β2 AR actives in ChEMBL. The legend is the Bayesian score for each feature. " ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n+vjjjxUcHGx1NNiAn580dKg0cKDj63PnHId0xMRIHvTyccnrx759+7R8+XLFx8erYsWKVkcDAMAj\nFIqCfvEbir1792rZsmU3fENRr149LVq0SF999ZUSEhJ07733atq0aS5M7RzTpk3Tvffeq4SEBH31\n1VdatGiR6l7nYOCAgADFx8crKSlJe/fu9cgPLDzNXXfdpWHDhmnXrl365JNPtGtXkEJCpEcflRIT\nXXO26e+/l+rXl4KDpaQkqVo15z+nK1WrVk1VqlTRnj17rI4CG+nQQdq61fG/ixSR/vlP6T//kerV\nk+bNszZbfhljlJCQoODgYE2aNElff/21Fi9erHr16lkdDQAAj+LxBT0hIUHVqlXTxIkTNXHiRC1e\nvFj3339/rr8/PDxcGzZsULdu3fTiiy+qRYsWSklJcWJi50hJSVGLFi304osvqlu3bnm+tEhYWJgW\nL1584fdYrVo1JSQkODEx8svb21vPPPOMPvmkqXbvllq2lPr3l267zXHW6bVrC/45c3Icz/H0045j\nzqdOlUqVKvjnsYOgoCBtPd/GUChdfpy5l5djbxFjHAX9pZekHTukTp2kZ5+VmjeX3PDlQ+vWrbvk\n0lQbN27k0lQAADiJxxb05ORkNW/eXJGRkeratatSU1PVtm1beXl55fmx/Pz8FB0drU2bNikoKEhh\nYWGKjIzUoUOHnJC8YB06dEiRkZEKCwtTUFCQNm3apOjoaPn5+eX5sby8vNS2bVulpqaqa9euioyM\nVPPmzZWcnOyE5ChId9whRUc7VvemT3eczKpBA8cuuOPGSSdP5v85jh6VWreWJk+WfvhBiopyFBZP\nFRwcrC1btlgdAzZXooRj9lJTpcqVpfvvd3xAdvCg1clu7M8//1RERITq1aunu+66S6mpqYqOjlaJ\nEiWsjgYAhdesWdK990q+vo7/zp5tdSIUMI8r6OffUNStW1eVK1dWWlqaYmJiCuQNxfndvefNm6cV\nK1aodu3amjx5snJycgogecHKycnRpEmTVLt2ba1YsULz589XfHy8AgIC8v3YJUqUUExMjNLS0lS5\ncmXVrVtXEREROugO7zgLuSJFHCvpiYnSrl1S27bSiBFSpUqO0rB69c09bmam1KSJtGePtGSJ1Lhx\nwea2I1bQkReVK0sJCdKvv0rJyVL16o5Ls507Z3WyK2VkZGjkyJGqXr260tLStHTpUiUkJKhy5cpW\nRwOAwm3dOqlrV8ebt4MHpdhYqUsXxwsLPIbHFPTMzEyNHDlSISEhSk5O1o8//qiEhATdeeedBf5c\nTZs21apVqxQTE6OJE2fowQe9lJRU4E9z05YulR58sIgmTnRcNm3VqlVq0qRJgT/PnXfeqYSEBP34\n449KTk5W9erVNXLkSGW64iBn5FvFio6VvW3b/lpVb9jwr1X1Eycu3d7Ly3H/5by8pGLFHK8VS5dK\n99zjmvxWCwoKYgUdedaggWNOxo51vK+qVctxzga7mDVrlmrXrq0PPvhAcXFxWrp0qRpebfABAK73\n7ruOs4+Gh0u33CI99ZTjDKXvvmt1MhQgj7gO+pw5c9S3b18dPXpUo0aNUseOHV123e7Tp6X33nNc\n57llS8ebrsBAlzz1FbZtk3r3lhYscBSvfv0cu1e6Qk5Ojr744gu98cYb8vf315gxY9SqVSvXPDkK\nzNat0qefSpMmSVlZjr9D/fs77vPykh5/3PFB7XPP/fU9hemazxfbvHmzQkJCdOTIEfn7+1sdB27o\n1CnHddPPv37ExVn3AdeGDRvUu3dvLV68WP3799frr7+uUp56AgkUOlwHHR6jalXpl1+kixcgd+92\n7Ma4fbs0bJj0xx83/fArKlTQ+D//zFfEESNGXHJlKOSdW6+gb9y4UY8++qj+/ve/65lnntHmzZsV\nERHhsnIuOQpwTIyUlib5+0s1ajiOvT1+3GURdPy44zlr1HBkSEtzZHLlYYJFihRRRESENm/erGee\neUZ///vf9eijj2rjxo2uC4F8CwpylIXdux1nn65a9dL7339fGjzYNWeCt7uqVavK29tb26y4hh08\nQsmSjn+r1693XKYtNNTxb/nle68407FjxxQVFaW6devK399fKSkpiomJoZwDgB3t2ydVqHDpbRUq\nOG6Hx3DLFfRjx45pyJAh+s9//qPHHntMY8aMUTWbXMfpp58cq9h790qDBkk9e0pFizrnubKzpY8+\nkt55RwoIcKy+NG3qnOfKq7S0NPXt21fz58/Xyy+/rGHDhunWW2+1Ohby4fxKeWSkFBIi9elz6e2F\nUWBgoN555x21b9/e6ijwALNnSwMHGpUu3Vl9+rTWP/7xD6c9V3Z2tj766CO9/fbbqlixoj744AO1\nbNnSac8HWIkVdHiMG62gwyO41Qp6dna24uLiFBgYqB9//FFz5szRrFmzbFPOJalZM2nNGmn0aGn4\ncMfxhosXF/zzLF7seOzhwx3PtWaNfcq55LhO9KxZszRnzhz9+OOPCgwMVFxcnLKzs62OhnwaNszx\nYVB6utVJrMeJ4lCQ/vY3adWqc/r732vrxRdfVLNmzbTWCddD/OWXX1S/fn298847evfdd7V69WrK\nOQC4g/r1pZkzL71txgzH7fAYblPQFy9erAYNGmjo0KEaPHiw1qxZY9s3FEWKSBER0ubN0sMPO659\nGx4u7dyZ/8fescPxWM2bOx5782bHc7lwr/48admypdasWaPBgwdr6NChatCggRY74xMLuMztt0vd\nuzs+HCrsuNQaCpqPj49ee+017dixQw0bNtQDDzygdu3aadeuXfl+7B07dig8PFzNmzfXI488os2b\nN6t79+7y8fEpgOQAAKcbONBxbNSsWY5jXGfPlt56SxowwOpkKEA2rXV/2blzp8LDw9WsWTM9/PDD\n2rZtm6KiotziDYW/v2OlMSXFsTt6jRqOE27dzPGFJ044vrdmTcdjrV/veGx3ODeVj4+PoqKitG3b\nNj388MNq1qyZwsPDtbMgPrGAJfr0kf73P8el2gozVtDhLP7+/oqNjdW6det08uRJ1ahRQzExMTpz\n5kyeH+vEiRPq37+/atasqaysLKWkpCguLk5ly5Z1QnIAgNPUqSONH+84G3T58o6z+U6Y4LgdHsO2\nBf3kyZPq37+/atSooePHj2vlypWKi4tzy7MChoQ4PuAaP16aMsUxQ99+e+k217uE1bffOr5nyhTH\nY8ye7biGrrspV66c4uLitHLlSh0/flw1a9ZU//79dfLkSaujIY/8/BxX9Rg40Ook1mIFHc5WvXp1\nzZkzR19//bW++OILVatWTQkJCcrN6WOMMUpISFBISIimTZumqVOn6vvvv1doaKgLkgMAnKJ1a2nD\nBscZezdscOxaC49iu4J+8RuKxMRETZ06VYsWLVLdunWtjpYvXl5Shw6OS6H16uU4XORy/v7S1KlX\n3j5jhuN7tm1zPIaXl/PzOlPdunW1aNEiff3115o6dapCQkJy/YYT9tGhg+OybIVZUFCQDh06pKNH\nj1odBR4uPDxcqampev311/Xqq6/qwQcf1LJly665fVJSkho2bKiePXuqX79+Sk1NVThv4lBI9bn9\ndvW5/XarYwBArtjqLO7Lli1TVFSUUlNT9eabb6pXr17y8/OzOpZLeHk5doVv08ax+3qxYn/dbp//\n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\nT58+eu2116yOkytuU9AvduTIESUlJelvf/vbhdvsvHtvenq6XnjhBa1cuVJTp05VkyZNCvw5rDgW\nd9myZXr22WdVo0YNffnllypfvrzTngu5x3xcifkAAPfTpUsXpaWl6ddff+VkmtdxcZk8c0a67z7p\nhx+ku++moN8sd/id5mY+unXrpvvvv1///Oc/XZzOPgYPHqxp06YpJSXFbRauPGbnl7i4OBMUFGSG\nDh1qfv/9d6vjXJCSkmKCg4NNw4YNze7du2+4/dGjR82sWbPMuXPnbur5srOzzQ8//GDatm1rfHx8\nTEhIiImNjTWHDh26qce7lrFjxxpfX18THR1901nhOsyHA/MBAO5j//795pZbbjFff/211VFs7fJ3\n8198YUyHDuzinh/u8DvNzXxMmDDB+Pv7m4MHD7owmX1s377dFC9e3MyaNcvqKHlim79mK1euNKmp\nqTf9/Xv37jXDhw8399xzjylevLj59ttvCzDdzUlMTDSlSpUyL730kjl79myuvmfRokWmbNmypnLl\nymbo0KFm165dN/38zjgW9/Tp0+aFF14wt956q/nf//6Xr8dC7jEfDswHABQuI0aMMJUrVzYnT560\nOoptXV4ac3KMadDAXmXS3bjL7/RG85GdnW0aNGhgXnnlFRcns4dnn33WPPnkk1bHyDPb/DUbOHCg\n8fb2No0bNzZffPGFOXPmzE09zvkVsv37919y+6lTpwoiZq5kZmaaXr16GV9fXxMfH5/n78/IyDCJ\niYmmZcuWJjY2Nt95CmrVcPv27aZu3bqmRo0aZtOmTfnOhdxjPv7CfABA4ZGRkWGCg4NNTEyM1VEA\n28nNfPz888+mSZMmhW6Pvp9++skUK1YsXwtcVrFNQTfGsftqfHy8qVmzpildurTp3r27+e233/L9\nuOnp6cbf39906NDBLF68uACSXtv+/ftN48aNTZUqVcyqVavy/XiXD9M333xjduzYcdOPd7OrhufP\nrv2Pf/zjps+ujfxhPq7EfMAuCtsbn6vhdwBn+e9//2v8/PzMzp07rY5iG+fOGfPll47/onBjPq6U\nlZVlatasafr06WN1lJtiq4J+sVWrVpnu3bub4sWLm/vvv9/Ex8ebEydO3NRj5eTkmIULF5pnn33W\n+Pj4OG1Xh6SkJFO5cmXTsmVLpxzrkZOTY1q0aGGKFClinnrqKTNnzhyTnZ19U4+V21XD7OxsM3To\n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\n7dsVHh4uf39/+fv7Kzw8XNu3b7/qtk2aNGFG4FHyOi8Xv1ac/3Prrbe6MDHgPHmdB0lat26dHn/8\ncZUqVUqVKlXSZ599duG+9PR0derUSeXKldNtt92mmJgYJ/8EgOsUxOsHXIeC7gLvv/++evfurf37\n92vz5s2655571KFDh2tuP27cOC1YsECrV6/Wb7/9pvnz52vChAkX7jfGXFLYAXc1ZswYvf766zp4\n8KDWrl0rb29vderU6Zrbd+zYUffdd5927NihHTt2qFatWurYseMV202ePFnnzp1zZnTA5fI6L+df\nK87/+eabb9S9e3cXJgacJ6/zkJaWpvDwcEVERGj37t1KSkrSggULLtzfp08fZWZmauPGjVq/fr1S\nU1M1ceJEV/wogNPldV6kK19D4Dpeht+4y508eVK33367Tp06ddX7H3roIQ0ePFhPPvmkJGnu3Lka\nPny4fv3110u28/LyYmDgUU6cOKHKlSvr2LFjV72/ZMmS2r9/v0qXLi1JOn78uCpWrHjJLB09elR1\n6tTR/PnzFRISwozAY91oXi7XsGFDffvtt6pUqZKTkwGud6N56NChgxo1aqRXXnnlqveXL19eGzdu\nVIUKFSRJBw4c0LPPPqvFixc7LTNglRvNCx3DWqygu9ipU6f00UcfqVmzZtfcZsOGDapfv/6Fr8PC\nwrRhwwZXxAMstXDhQt13333XvL9Vq1Z6//33dezYMaWnp2vUqFFq1arVJdsMGDBAr776qqpXr+7s\nuIClbjQvF5sxY4Zq1qxJOYfHutE8LFy4UAcOHFBAQIDKlSunTp06KT09/ZJtLt6N18vLS+vXr3dW\nXMBSuXn9uO2221SyZEnVqlVLH374obKzs12UDqygu9D5f/grVKigJUuWKCgo6KrbFS1aVGfPnpWP\nj48kKSsrS35+flfsssunW/Aka9asUevWrTVz5kzVqVPnqtvs2bNHjRo10q5duyRJVapU0dKlSxUQ\nECBJWr58ufr27avFixerSJEizAg8Vm7m5WINGzbUpEmTFBoa6vxwgIvlZh68vb3Vvn17jR49WpIU\nFRWl4sWLX9iNPSIiQjk5ORozZowkxy7viYmJysrKcsnPALhKXl4/MjIylJKSot69e6t+/fr64IMP\nXBOykGMF3YWMMTp27Jhefvllde3a9ZrblSpV6pJdTtLT0y/s0gt4op9//lmtW7fWlClTrvti0blz\nZ3Xo0EFHjx7V0aNH1aFDh0uOoerTp48mTJigIkX4pw2eK7fzct7cuXN1++23U87hkXI7DyVLltSY\nMWNUoUIFVahQQXFxcZo1a9aF+8eOHStjjEJCQlS7dm3VrFlT5cuXd8FPALhOXl8/fH19FRYWpi+/\n/FKTJk1yej448C7WxW655Rb17dtXq1evvuY2NWvW1MqVKy98vWrVKtWsWdMV8QCXmzp1qp5//nlN\nnz5djRs3vu62S5Ys0YABA1SmTBmVKVNG/fv319KlSy/cn5SUpNDQ0EvOOMqZR+FJ8jIv57399tuK\njo52cjLA9fIyD7Vr175kj6rL964qW7aspkyZoiNHjmj//v0qU6aMmjdv7pTcgBVu5vXjvCJFisjX\n19dJyXA5CroLREREKDU1VVlZWdq9e7fefPNNNW3a9ML9lxeIiIgIDRo06MKZqgcNGqTOnTu7NjTg\nAmPGjFG/fv20YMECNWjQ4Ir7L5+NOnXq6L333lN6errS09M1cuRI1a1b98L9VzvjKLu4w1PkdV4k\nacGCBfLy8lKjRo1cERFwmbzOQ5cuXdS3b1/9+eef+vPPP9W7d2+Fh4dfuL9jx476448/lJ6erq+/\n/lqxsbEaMmSI038OwBXyOi/t27fX+vXrlZmZqdTUVHXp0kXt2rVzVVwYOF1iYqKpXbu2KVasmLnz\nzjtNZGSkOXz48IX7L/+/IScnx7zxxhumTJkypkyZMiY6Otrk5ORcsv3lfwB3dLW/y5LMiRMnLtx/\nsbS0NPPEE0+YW2+91dx6663mySefNFu3br3u4wOeIq/zYowxjRs3Nt99952rowJOdzPzMGTIEFO+\nfHnj7+9vXnjhBXP06NEL902YMMEEBASYEiVKmEcffdSsXr3aVT8K4HR5nZfz3cXX19cEBgaaN998\n05w5c8aK6IUSJ4kDAAAAAMAG2MUdAAAAAAAboKADAAAAAGADFHQAAAAAAGyAgg4AAAAAgA1Q0AEA\nAAAAsAEKOgAAAAAANvD/ALTHSH9WJpStAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Draw.MolsToGridImage(fmols, molsPerRow=5, legends=legends, useSVG=False)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 0 }