[0a9449]: / DEMO / CNN_CNN-Binary-SARS-CoV-3CL.ipynb

Download this file

259 lines (258 with data), 64.5 kB

{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.chdir('../')\n",
    "\n",
    "import DeepPurpose.DTI as models\n",
    "from DeepPurpose.utils import *\n",
    "from DeepPurpose.dataset import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Beginning Processing...\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/kh278/.conda/envs/DeepPurpose/lib/python3.7/site-packages/IPython/core/interactiveshell.py:3254: DtypeWarning: Columns (0,7) have mixed types.Specify dtype option on import or set low_memory=False.\n",
      "  if (await self.run_code(code, result,  async_=asy)):\n",
      "/home/kh278/DeepPurpose/dataset.py:224: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  val['binary_label'][(val.PUBCHEM_ACTIVITY_SCORE >= threshold) & (val.PUBCHEM_ACTIVITY_SCORE <=100)] = 1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Default binary threshold for the binding affinity scores is 15, recommended by the investigator\n",
      "Done!\n",
      "in total: 26640 drug-target pairs\n",
      "encoding drug...\n",
      "unique drugs: 13764\n",
      "drug encoding finished...\n",
      "encoding protein...\n",
      "unique target sequence: 1\n",
      "protein encoding finished...\n",
      "splitting dataset...\n",
      "Done.\n"
     ]
    }
   ],
   "source": [
    "X_drug, X_target, y = load_AID1706_SARS_CoV_3CL('./kh278/DeepPurpose/data', oversample_num = 30)\n",
    "\n",
    "drug_encoding = 'CNN'\n",
    "target_encoding = 'CNN'\n",
    "train, val, test = data_process(X_drug, [X_target], y, \n",
    "                                drug_encoding, target_encoding, \n",
    "                                split_method='HTS',frac=[0.8,0.1,0.1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# use the parameters setting provided in the paper: https://arxiv.org/abs/1801.10193\n",
    "config = generate_config(drug_encoding = drug_encoding, \n",
    "                         target_encoding = target_encoding, \n",
    "                         cls_hidden_dims = [1024,1024,512], \n",
    "                         train_epoch = 20, \n",
    "                         LR = 0.0008, \n",
    "                         batch_size = 256,\n",
    "                         cnn_drug_filters = [32,64,96],\n",
    "                         cnn_target_filters = [32,64,96],\n",
    "                         cnn_drug_kernels = [4,6,8],\n",
    "                         cnn_target_kernels = [4,8,12],\n",
    "                        )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Let's use 1 GPU!\n",
      "--- Data Preparation ---\n",
      "--- Go for Training ---\n",
      "Training at Epoch 1 iteration 0 with loss 0.6925414. Total time 0.0005555555555555556 hours\n",
      "Validation at Epoch 1 , AUROC: 0.6827753449990405 , AUPRC: 0.2016960347341358 , F1: 0.07899807321772641\n",
      "Training at Epoch 2 iteration 0 with loss 0.70954084. Total time 0.01611111111111111 hours\n",
      "Validation at Epoch 2 , AUROC: 0.69455154486296 , AUPRC: 0.21085897698994666 , F1: 0.1889763779527559\n",
      "Training at Epoch 3 iteration 0 with loss 0.21538463. Total time 0.03166666666666667 hours\n",
      "Validation at Epoch 3 , AUROC: 0.6997854114691464 , AUPRC: 0.22767793392285934 , F1: 0.22448979591836737\n",
      "Training at Epoch 4 iteration 0 with loss 0.09092724. Total time 0.04694444444444444 hours\n",
      "Validation at Epoch 4 , AUROC: 0.6983897137074966 , AUPRC: 0.24296847154985038 , F1: 0.2807017543859649\n",
      "Training at Epoch 5 iteration 0 with loss 0.2676432. Total time 0.0625 hours\n",
      "Validation at Epoch 5 , AUROC: 0.7011636630087754 , AUPRC: 0.24933398719059435 , F1: 0.2170542635658915\n",
      "Training at Epoch 6 iteration 0 with loss 0.07033478. Total time 0.07805555555555556 hours\n",
      "Validation at Epoch 6 , AUROC: 0.6912542089010624 , AUPRC: 0.24915759095478673 , F1: 0.21739130434782608\n",
      "Training at Epoch 7 iteration 0 with loss 0.022200286. Total time 0.09361111111111112 hours\n",
      "Validation at Epoch 7 , AUROC: 0.6800711805858441 , AUPRC: 0.2450788627798762 , F1: 0.2597402597402597\n",
      "Training at Epoch 8 iteration 0 with loss 0.02329332. Total time 0.10888888888888888 hours\n",
      "Validation at Epoch 8 , AUROC: 0.6809260454648546 , AUPRC: 0.2248148605963866 , F1: 0.24390243902439024\n",
      "Training at Epoch 9 iteration 0 with loss 0.022181433. Total time 0.12444444444444444 hours\n",
      "Validation at Epoch 9 , AUROC: 0.6860028960728555 , AUPRC: 0.2537418267026195 , F1: 0.28571428571428575\n",
      "Training at Epoch 10 iteration 0 with loss 0.03016029. Total time 0.14 hours\n",
      "Validation at Epoch 10 , AUROC: 0.6819030338980093 , AUPRC: 0.2537816789053892 , F1: 0.25806451612903225\n",
      "Training at Epoch 11 iteration 0 with loss 0.0045623356. Total time 0.15527777777777776 hours\n",
      "Validation at Epoch 11 , AUROC: 0.6784137894938851 , AUPRC: 0.25010488419601534 , F1: 0.2222222222222222\n",
      "Training at Epoch 12 iteration 0 with loss 0.011327021. Total time 0.17083333333333334 hours\n",
      "Validation at Epoch 12 , AUROC: 0.699471379472775 , AUPRC: 0.24274321541408003 , F1: 0.28169014084507044\n",
      "Training at Epoch 13 iteration 0 with loss 0.007945421. Total time 0.18638888888888888 hours\n",
      "Validation at Epoch 13 , AUROC: 0.698790976813971 , AUPRC: 0.23123092069256015 , F1: 0.28205128205128205\n",
      "Training at Epoch 14 iteration 0 with loss 0.0010568296. Total time 0.20194444444444445 hours\n",
      "Validation at Epoch 14 , AUROC: 0.698930546590136 , AUPRC: 0.24674529711018248 , F1: 0.2597402597402597\n",
      "Training at Epoch 15 iteration 0 with loss 0.0055403057. Total time 0.21722222222222223 hours\n",
      "Validation at Epoch 15 , AUROC: 0.6934698790976814 , AUPRC: 0.24929918694025183 , F1: 0.26666666666666666\n",
      "Training at Epoch 16 iteration 0 with loss 0.027997598. Total time 0.23277777777777778 hours\n",
      "Validation at Epoch 16 , AUROC: 0.7038852736439923 , AUPRC: 0.2451216848369899 , F1: 0.2622950819672131\n",
      "Training at Epoch 17 iteration 0 with loss 0.00035116327. Total time 0.24833333333333332 hours\n",
      "Validation at Epoch 17 , AUROC: 0.6955983181841973 , AUPRC: 0.22733790258660447 , F1: 0.26666666666666666\n",
      "Training at Epoch 18 iteration 0 with loss 0.0033248416. Total time 0.2638888888888889 hours\n",
      "Validation at Epoch 18 , AUROC: 0.6941677279785062 , AUPRC: 0.2573240609089356 , F1: 0.2048192771084337\n",
      "Training at Epoch 19 iteration 0 with loss 0.042199068. Total time 0.27944444444444444 hours\n",
      "Validation at Epoch 19 , AUROC: 0.6891955547026292 , AUPRC: 0.259956349129584 , F1: 0.3283582089552239\n",
      "Training at Epoch 20 iteration 0 with loss 0.014908239. Total time 0.2947222222222222 hours\n",
      "Validation at Epoch 20 , AUROC: 0.6675011776199864 , AUPRC: 0.261249712059492 , F1: 0.29508196721311475\n",
      "--- Go for Testing ---\n",
      "Testing AUROC: 0.7707558679990704 , AUPRC: 0.3090203122418316 , F1: 0.3373493975903614\n",
      "--- Training Finished ---\n"
     ]
    },
    {
     "data": {
      "image/png": "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bbfdxnPPPcc999zDrFmzuO222zKXu3HjxszPJCQkkJiYSExMTOa4vXv3Urly5czh+Ph4/vrXv7J161ZEhJSUlMxpnTp1IjY2FoDPP/+czz//nObNmwPOVdPWrVtp27YtEydOZM6cOQDs3r2brVu3npU4JkyY4N3OgTPqjDLktn8/+OCDbOtsPvvsM9q0aZO5DeDUX0VERJy1X3zBEgewY8cR7rxzDt99txuAzp3rMHlyN+rWjc3jk8YEl+joaNatW0d8fDw9evRg8uTJPPzww1xyySUsX778jHm3b99OmTJliImJ4ZJLLmHt2rWZxUA5ySkBeY7L+kxB6dKlM9+3bt2abdu2ceDAAT755BOefPJJANLT01mxYgXR0Tk33xMdHX3GskeNGkWHDh2YM2cOO3fupH379tmuU1UZMWIE999//xnL++qrr1i6dCkrVqygVKlStG/fPtvnIfJzxVG9enV2796dORwXF8cFF1yQ7fYcOnSIVatWZSYuT7NmzTqjmCpDcnIyUVFR2S6vMNldVUDZspH8+ushzj+/DLNm3cyiRXdY0jAhrVy5ckycOJFx48aRkpLCHXfcwTfffMPSpc7DrCdPnuThhx/m8ccfB2Do0KG88MIL/Prrr4BzIh8/fvxZy+3cufMZxScZRVVVqlRh06ZNmUVRORERbrrpJh599FEaNmyY+es+63LXrVt31mcbNmzItm2nW6GOj4+nWrVqAMyYMSPHdXbp0oV33nknsw5mz549/Pnnn8THx1OhQgVKlSrF5s2bWblyZbafnzBhAuvWrTvrlTVpANx4443MmjWL5ORkduzYwdatW2nZsmW2y509ezY9evQ4KxHEx8fz9ddf07NnzzPGHzp0iMqVKxdq0yI5KbaJY/HibSQnO7euVaxYirlz+7B584Pcdltje0jLFAvNmzenadOmzJo1i+joaD799FNGjx5N/fr1ufTSS7niiisYNGgQAE2aNOG1116jb9++NGzYkMaNG7N3796zlvnkk09y5MgRGjduTNOmTTN/ib/00kv06NGDa6+9lqpVq+Ya12233cbMmTMzi6kAJk6cyJo1a2jSpAmNGjVi2rRpZ32uQYMGxMfHk5iYCMDjjz/OiBEjaNOmDWlpaTmur3Pnztx+++20bt2aSy+9lFtuuYXExES6du1KamoqTZo0YdSoUWfUTRTUJZdcwq23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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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1Rjc/ewa9jtwZZrCEWn8UvjLvj5t2bKFIUOGAOGv0IsuuiiufPHixRx88MEce+yx1d775ptvMmrUKLp16wZAly5davy8Qw45pPLmq6FDh7JixQqWLVtGUVERnTt3pnfv3tx77728+uqrDB06FICNGzeyYMECDj/88LhzrV69mvbt21e+vvfee3nuuecAWLp0KQsWLKBr165kZ2fz/e9/H4D58+cze/bsyuspKyujR48wIHL27Nn8+te/Zu3atWzcuJHjjz++WvxHHXUUM2fOrPE6gYT9CTsaTnr66adz+umn884773DjjTfy+uuv13j+XXbZhWXLlsUlx9poTE1JItIIVPQl7Kh83bp1nHzyydx3331cffXVcce4e8IvupycHMrLyyuP2bZtW+W+tm3bxh07atQoJkyYwNdff83o0aMr33P99dfz4x//eKexV3xOVlYWb731Fq+//joffPABbdq04cgjj6y80SsvL4/s7OzKc++///588EH1oevnn38+zz//PIMHD+ahhx5K2IQzefJkfvazn1Urb9OmDf/617/iynr27ElhYWHl68LCQnbfffedXtPhhx/O559/zsqVKysT7o4UFxeTn5+/02OS0Zg6n0WkCejYsSP33nsvd955JyUlJXH7jj76aMaPH1/ZZLN6dRgO3qdPH2bMmAGEETdV3xdr9OjRjBs3jgkTJlT2SRx//PGMHTuWjRs3AqFJZsWKFdXeu99++7Fo0SIA1q1bR+fOnWnTpg2ffvopU6ZMSfh5++23H0VFRZWJoaSkhDlz5gCwYcMGevToQUlJCY8//njC91fUGKo+qiYFgB49etC+fXumTJmCu/PII48wcuTIasctXLiwsnbx0UcfsW3bNrp27brDn1mFzz77jP3337/G42qixCAiKRs6dCiDBw9m3LhxceX7778/N9xwA0cccQSDBw/m2muvBeCSSy7h7bff5pBDDmHq1KnVaglVz7Fhwwb22GOPyiad4447jnPOOYfhw4dzwAEHMGrUKDZs2FDtvSeddFLlX/UjRoygtLSUAw88kBtvvJFhw4Yl/Lzc3FwmTJjAL3/5SwYPHsyQIUMqv9R/+9vfcuihh3LsscfSv3//lH9Oidx///1cfPHF9O3bl3322aey4/mBBx6oHAH2zDPPMGjQIIYMGcKVV17JU089VVkTO+ywwzjzzDN54403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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "model = models.model_initialize(**config)\n",
    "model.train(train, val, test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "repurposing...\n",
      "in total: 6111 drug-target pairs\n",
      "encoding drug...\n",
      "unique drugs: 6111\n",
      "drug encoding finished...\n",
      "encoding protein...\n",
      "unique target sequence: 1\n",
      "protein encoding finished...\n",
      "Done.\n",
      "predicting...\n",
      "---------------\n",
      "Drug Repurposing Result for SARS-CoV 3CL Protease\n",
      "+------+-------------+-----------------------+-------------+-------------+\n",
      "| Rank |  Drug Name  |      Target Name      | Interaction | Probability |\n",
      "+------+-------------+-----------------------+-------------+-------------+\n",
      "|  1   |   71386.0   | SARS-CoV 3CL Protease |     YES     |     1.00    |\n",
      "|  2   |  6517043.0  | SARS-CoV 3CL Protease |     YES     |     1.00    |\n",
      "|  3   |   369976.0  | SARS-CoV 3CL Protease |     YES     |     1.00    |\n",
      "|  4   |   441335.0  | SARS-CoV 3CL Protease |     YES     |     1.00    |\n",
      "|  5   |   34633.0   | SARS-CoV 3CL Protease |      NO     |     0.18    |\n",
      "|  6   |   32798.0   | SARS-CoV 3CL Protease |      NO     |     0.04    |\n",
      "|  7   |  90488948.0 | SARS-CoV 3CL Protease |      NO     |     0.04    |\n",
      "|  8   |  5702233.0  | SARS-CoV 3CL Protease |      NO     |     0.02    |\n",
      "|  9   |  10370504.0 | SARS-CoV 3CL Protease |      NO     |     0.00    |\n",
      "|  10  |    5770.0   | SARS-CoV 3CL Protease |      NO     |     0.00    |\n",
      "checkout ./result/repurposing.txt for the whole list\n"
     ]
    }
   ],
   "source": [
    "X_repurpose, drug_name, drug_cid = load_broad_repurposing_hub('./kh278/DeepPurpose/data')\n",
    "target, target_name = load_SARS_CoV_Protease_3CL()\n",
    "\n",
    "_ = models.repurpose(X_repurpose, target, \n",
    "                     model, drug_cid, target_name, \n",
    "                     convert_y = False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}