5735 lines (5734 with data), 765.9 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"os.chdir('../')\n",
"\n",
"import DeepPurpose.CompoundPred as models\n",
"from DeepPurpose.utils import *\n",
"from DeepPurpose.dataset import *\n",
"\n",
"from sklearn.metrics import mean_squared_error, roc_auc_score, average_precision_score, f1_score"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
"def run_Morgan(fold_n, balanced):\n",
" \n",
" train = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/train.csv')\n",
" dev = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/dev.csv')\n",
" test = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/test.csv')\n",
" \n",
" if balanced:\n",
" # oversample balanced training\n",
" train = pd.concat([train[train.activity == 1].sample(n = len(train[train.activity == 0]), replace=True), train[train.activity == 0]]).sample(frac = 1).reset_index(drop = True)\n",
" \n",
" X_train = train.smiles.values\n",
" y_train = train.activity.values\n",
" X_dev = dev.smiles.values\n",
" y_dev = dev.activity.values\n",
" X_test = test.smiles.values\n",
" y_test = test.activity.values\n",
" \n",
" drug_encoding = 'Morgan'\n",
" train = data_process(X_drug = X_train, y = y_train, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" val = data_process(X_drug = X_dev, y = y_dev, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" test = data_process(X_drug = X_test, y = y_test, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
" \n",
" config = generate_config(drug_encoding = drug_encoding, \n",
" cls_hidden_dims = [512], \n",
" train_epoch = 10, \n",
" LR = 0.0001, \n",
" batch_size = 256\n",
" )\n",
" \n",
" model = models.model_initialize(**config)\n",
" model.train(train, val, test)\n",
" \n",
" scores = model.predict(test)\n",
" \n",
" return roc_auc_score(test.Label.values, scores), average_precision_score(test.Label.values, scores), scores, test.Label.values"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Drug Property Prediction Mode...\n",
"in total: 3330 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69260. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.89627 , AUPRC: 0.70668 , F1: 0.66666\n",
"Training at Epoch 2 iteration 0 with loss 0.67887. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.87272 , AUPRC: 0.63954 , F1: 0.60869\n",
"Training at Epoch 3 iteration 0 with loss 0.62554. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.84726 , AUPRC: 0.60287 , F1: 0.63636\n",
"Training at Epoch 4 iteration 0 with loss 0.48199. Total time 0.00055 hours\n",
"Validation at Epoch 4 , AUROC: 0.77735 , AUPRC: 0.56244 , F1: 0.66666\n",
"Training at Epoch 5 iteration 0 with loss 0.20938. Total time 0.00083 hours\n",
"Validation at Epoch 5 , AUROC: 0.74392 , AUPRC: 0.55275 , F1: 0.66666\n",
"Training at Epoch 6 iteration 0 with loss 0.04568. Total time 0.00111 hours\n",
"Validation at Epoch 6 , AUROC: 0.69832 , AUPRC: 0.54425 , F1: 0.66666\n",
"Training at Epoch 7 iteration 0 with loss 0.02193. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 0.70706 , AUPRC: 0.54568 , F1: 0.66666\n",
"Training at Epoch 8 iteration 0 with loss 0.00654. Total time 0.00166 hours\n",
"Validation at Epoch 8 , AUROC: 0.70060 , AUPRC: 0.54462 , F1: 0.66666\n",
"Training at Epoch 9 iteration 0 with loss 0.00616. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 0.70212 , AUPRC: 0.54486 , F1: 0.66666\n",
"Training at Epoch 10 iteration 0 with loss 0.01617. Total time 0.00222 hours\n",
"Validation at Epoch 10 , AUROC: 0.69908 , AUPRC: 0.54438 , F1: 0.66666\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.5418367346938776 , AUPRC: 0.19561100054031505 , F1: 0.28571428571428575\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3328 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69321. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.73350 , AUPRC: 0.51606 , F1: 0.23529\n",
"Training at Epoch 2 iteration 0 with loss 0.67945. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.76776 , AUPRC: 0.51977 , F1: 0.21052\n",
"Training at Epoch 3 iteration 0 with loss 0.63157. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.77284 , AUPRC: 0.52408 , F1: 0.30769\n",
"Training at Epoch 4 iteration 0 with loss 0.49199. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.78045 , AUPRC: 0.52952 , F1: 0.57142\n",
"Training at Epoch 5 iteration 0 with loss 0.21717. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.77791 , AUPRC: 0.52768 , F1: 0.57142\n",
"Training at Epoch 6 iteration 0 with loss 0.04330. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.77157 , AUPRC: 0.52555 , F1: 0.57142\n",
"Training at Epoch 7 iteration 0 with loss 0.01404. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.75507 , AUPRC: 0.31395 , F1: 0.57142\n",
"Training at Epoch 8 iteration 0 with loss 0.00461. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.76015 , AUPRC: 0.52362 , F1: 0.57142\n",
"Training at Epoch 9 iteration 0 with loss 0.00227. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.75253 , AUPRC: 0.31333 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00162. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.76015 , AUPRC: 0.52362 , F1: 0.57142\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.6504559270516717 , AUPRC: 0.5384800660845327 , F1: 0.6666666666666666\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69383. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.72979 , AUPRC: 0.06921 , F1: 0.09756\n",
"Training at Epoch 2 iteration 0 with loss 0.68187. Total time 0.00027 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 2 , AUROC: 0.72474 , AUPRC: 0.07426 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.63924. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.69191 , AUPRC: 0.05357 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.50505. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.65530 , AUPRC: 0.04334 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.25314. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.60353 , AUPRC: 0.03475 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.06097. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.55555 , AUPRC: 0.03306 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.01442. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.52651 , AUPRC: 0.03763 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00662. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.52904 , AUPRC: 0.03632 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00250. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.52651 , AUPRC: 0.03635 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00257. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.52272 , AUPRC: 0.03624 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.715736040609137 , AUPRC: 0.43386891793754534 , F1: 0.3333333333333333\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69306. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.97777 , AUPRC: 0.62870 , F1: 0.09090\n",
"Training at Epoch 2 iteration 0 with loss 0.68274. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.99145 , AUPRC: 0.89583 , F1: 0.54545\n",
"Training at Epoch 3 iteration 0 with loss 0.64541. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.99572 , AUPRC: 0.92424 , F1: 0.625\n",
"Training at Epoch 4 iteration 0 with loss 0.53855. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.99829 , AUPRC: 0.95833 , F1: 0.76923\n",
"Training at Epoch 5 iteration 0 with loss 0.29910. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.99829 , AUPRC: 0.95833 , F1: 0.76923\n",
"Training at Epoch 6 iteration 0 with loss 0.07825. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.99743 , AUPRC: 0.93055 , F1: 0.83333\n",
"Training at Epoch 7 iteration 0 with loss 0.01359. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.99572 , AUPRC: 0.92424 , F1: 0.83333\n",
"Training at Epoch 8 iteration 0 with loss 0.00621. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.99572 , AUPRC: 0.92424 , F1: 0.83333\n",
"Training at Epoch 9 iteration 0 with loss 0.00292. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.99572 , AUPRC: 0.92424 , F1: 0.83333\n",
"Training at Epoch 10 iteration 0 with loss 0.00266. Total time 0.00277 hours\n",
"Validation at Epoch 10 , AUROC: 0.99572 , AUPRC: 0.92424 , F1: 0.83333\n",
"--- Go for Testing ---\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing AUROC: 0.5984848484848485 , AUPRC: 0.05483324043106652 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1695\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69745. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.89562 , AUPRC: 0.44523 , F1: 0.03314\n",
"Training at Epoch 2 iteration 0 with loss 0.68396. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.85690 , AUPRC: 0.38425 , F1: 0.10526\n",
"Training at Epoch 3 iteration 0 with loss 0.64853. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.78619 , AUPRC: 0.36086 , F1: 0.28571\n",
"Training at Epoch 4 iteration 0 with loss 0.52294. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.71380 , AUPRC: 0.35218 , F1: 0.4\n",
"Training at Epoch 5 iteration 0 with loss 0.2649. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.65151 , AUPRC: 0.34890 , F1: 0.4\n",
"Training at Epoch 6 iteration 0 with loss 0.05572. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.62121 , AUPRC: 0.34775 , F1: 0.5\n",
"Training at Epoch 7 iteration 0 with loss 0.01403. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.61111 , AUPRC: 0.34744 , F1: 0.5\n",
"Training at Epoch 8 iteration 0 with loss 0.00409. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.61111 , AUPRC: 0.34744 , F1: 0.5\n",
"Training at Epoch 9 iteration 0 with loss 0.00382. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.61111 , AUPRC: 0.34746 , F1: 0.5\n",
"Training at Epoch 10 iteration 0 with loss 0.00180. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.60606 , AUPRC: 0.34727 , F1: 0.5\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.9196581196581196 , AUPRC: 0.8156565656565656 , F1: 0.8333333333333334\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3154 drugs\n",
"encoding drug...\n",
"unique drugs: 1618\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69306. Total time 0.0 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 1 , AUROC: 0.21989 , AUPRC: 0.01099 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.67935. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.28102 , AUPRC: 0.01187 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.63832. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.31751 , AUPRC: 0.01252 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.51902. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.35218 , AUPRC: 0.01326 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.24404. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.39233 , AUPRC: 0.01437 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.04885. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.43156 , AUPRC: 0.01566 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00890. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 0.44343 , AUPRC: 0.01604 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.01218. Total time 0.00166 hours\n",
"Validation at Epoch 8 , AUROC: 0.45620 , AUPRC: 0.01653 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00275. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 0.45711 , AUPRC: 0.01659 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00145. Total time 0.00222 hours\n",
"Validation at Epoch 10 , AUROC: 0.45802 , AUPRC: 0.01664 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.6902356902356902 , AUPRC: 0.3508634222919937 , F1: 0.4\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3136 drugs\n",
"encoding drug...\n",
"unique drugs: 1611\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69443. Total time 0.0 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 1 , AUROC: 0.37681 , AUPRC: 0.00769 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.68122. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.42028 , AUPRC: 0.00826 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.64051. Total time 0.00027 hours\n",
"Validation at Epoch 3 , AUROC: 0.44927 , AUPRC: 0.00869 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.50562. Total time 0.00055 hours\n",
"Validation at Epoch 4 , AUROC: 0.41545 , AUPRC: 0.00819 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.23183. Total time 0.00083 hours\n",
"Validation at Epoch 5 , AUROC: 0.41062 , AUPRC: 0.00813 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.03374. Total time 0.00111 hours\n",
"Validation at Epoch 6 , AUROC: 0.44927 , AUPRC: 0.00869 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.02935. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 0.45893 , AUPRC: 0.00884 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00489. Total time 0.00166 hours\n",
"Validation at Epoch 8 , AUROC: 0.45893 , AUPRC: 0.00884 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00197. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 0.45410 , AUPRC: 0.00877 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00271. Total time 0.00222 hours\n",
"Validation at Epoch 10 , AUROC: 0.44927 , AUPRC: 0.00869 , F1: 0.0\n",
"--- Go for Testing ---\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing AUROC: 0.4014598540145985 , AUPRC: 0.01436329226242399 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3290 drugs\n",
"encoding drug...\n",
"unique drugs: 1688\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69326. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.61538\n",
"Training at Epoch 2 iteration 0 with loss 0.68281. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.88888\n",
"Training at Epoch 3 iteration 0 with loss 0.64166. Total time 0.00027 hours\n",
"Validation at Epoch 3 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.8\n",
"Training at Epoch 4 iteration 0 with loss 0.52670. Total time 0.00055 hours\n",
"Validation at Epoch 4 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.8\n",
"Training at Epoch 5 iteration 0 with loss 0.28083. Total time 0.00083 hours\n",
"Validation at Epoch 5 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.8\n",
"Training at Epoch 6 iteration 0 with loss 0.08366. Total time 0.00111 hours\n",
"Validation at Epoch 6 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 7 iteration 0 with loss 0.01335. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 8 iteration 0 with loss 0.01507. Total time 0.00166 hours\n",
"Validation at Epoch 8 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00408. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.85714\n",
"Training at Epoch 10 iteration 0 with loss 0.00255. Total time 0.00222 hours\n",
"Validation at Epoch 10 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.85714\n",
"--- Go for Testing ---\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing AUROC: 0.5314009661835748 , AUPRC: 0.01020408163265306 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3306 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69290. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.93132 , AUPRC: 0.16458 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.68537. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.90619 , AUPRC: 0.12702 , F1: 0.22222\n",
"Training at Epoch 3 iteration 0 with loss 0.65425. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.89447 , AUPRC: 0.12077 , F1: 0.22222\n",
"Training at Epoch 4 iteration 0 with loss 0.55795. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.83417 , AUPRC: 0.14623 , F1: 0.33333\n",
"Training at Epoch 5 iteration 0 with loss 0.29520. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.75544 , AUPRC: 0.18942 , F1: 0.4\n",
"Training at Epoch 6 iteration 0 with loss 0.08643. Total time 0.00138 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 6 , AUROC: 0.66499 , AUPRC: 0.18299 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.01413. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.65661 , AUPRC: 0.18260 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00739. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.66834 , AUPRC: 0.18307 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00403. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.63149 , AUPRC: 0.08176 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00315. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.65159 , AUPRC: 0.18235 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 1.0 , AUPRC: 1.0 , F1: 0.8571428571428571\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69373. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.53469 , AUPRC: 0.31765 , F1: 0.44444\n",
"Training at Epoch 2 iteration 0 with loss 0.67889. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.51734 , AUPRC: 0.34877 , F1: 0.33333\n",
"Training at Epoch 3 iteration 0 with loss 0.63350. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.53367 , AUPRC: 0.34893 , F1: 0.44444\n",
"Training at Epoch 4 iteration 0 with loss 0.51062. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.51938 , AUPRC: 0.34813 , F1: 0.44444\n",
"Training at Epoch 5 iteration 0 with loss 0.24680. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.52857 , AUPRC: 0.34842 , F1: 0.5\n",
"Training at Epoch 6 iteration 0 with loss 0.07398. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.54285 , AUPRC: 0.34886 , F1: 0.5\n",
"Training at Epoch 7 iteration 0 with loss 0.02113. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.55204 , AUPRC: 0.34917 , F1: 0.28571\n",
"Training at Epoch 8 iteration 0 with loss 0.00918. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.55204 , AUPRC: 0.34917 , F1: 0.28571\n",
"Training at Epoch 9 iteration 0 with loss 0.00274. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.55 , AUPRC: 0.34910 , F1: 0.28571\n",
"Training at Epoch 10 iteration 0 with loss 0.00367. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.54795 , AUPRC: 0.34903 , F1: 0.28571\n",
"--- Go for Testing ---\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing AUROC: 0.7219430485762144 , AUPRC: 0.3526698350573106 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"ROC-Mean 0.6795\n",
"ROC-STD 0.2009\n",
"PRC-Mean 0.3927\n",
"PRC-STD 0.3323\n"
]
},
{
"data": {
"image/png": "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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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Ldx444106NCBG2+8kYMHDwKwcPH8ah27rbVm3bp1DB48GID4+HiWLl1a7rIHDhzI/Pnzq9xHkKwkIWqc/a2dcwV01IH95bapLrHb06ZNs+xGKbJt2zabrKDWrVuzadMmvLy8WLt2LS+8+AKzZswFqNax2ykpKdSuXdtysVrxNl9++SWbNm2iZcuWzJgxgyZNjJM9O3XqxIsvvljan84uUhiEEBXm6tjtffv2Webfc889AFx//fV89dVXl/Xt9OnTWF/XlJaWRnx8PAkJCSilyM+vGbHbZbW56667GDZsGL6+vsyaNYv4+HjLPRkkdluIq1hF1uydyVGx28UdO3aMadOmsXXrVkJDQxk5cqRNzLWvry8Anp6eJR4b8Pf3t2k/YcIE4uLi+Prrr2tU7Ha9evVITU2loKAALy8vmzbWRemRRx7h2Weftbx2ZOy2HGMQQthl9OjRTJw4keho2zvJFcVuA5bYbetbURbp3r07ixYtAoyDsbt3G/eXuHjxIoGBgYSEhHD27FlWrlxpV7+ioqJs7llgT+z2J598QkaGceOfpKQkzp07Z1fsdtHBYOtH8aIARlFduHAhubm5HDt2rMTYbaUUcXFxLFmyBIDPPvuMu+++GzC2ioosX77cJhivxsZuCyFqPuvYbWuTJ09m1KhRxMTEEBAQYBMJbW3s2LHEx8cTExNDhw4diImJISQkhMjISDp06EDbtm1p0aIFN910k139upJit6dOncrQoUN58cUX6dChAw899BAA77zzDsuXL8fLy4s6derYFLwaGbvtLBK77RoSu22nKyh229FMJhP5+fn4+flx5MgRid12kB49erBs2TJCQ0Mvm1edY7eFEIKsrCyJ3Xaw5ORkxo0bV2JRqAwpDEIIl5LYbcerX78+AwcOdNjy5OCzEEIIG1IYhBBC2JDCIIQQwoYUBiGEEDakMAghKkRitx2jIrHb33//PR07diQ2Npbu3btbLtybPn06bdq0ISYmhl69enHixAlAYreFEG4isdtVV9HY7TFjxjB//nx27NjB8OHDefXVVwHo0KED27ZtY9euXQwePJjx48cDErsthHAjid2umorEboOxdXbx4kXAiPYoykqKi4sjICAAgK5du5KYmGjTV4ndFuIq9d7j65yy3CdmlR4bUURit50fuw0wZ84c+vfvj7+/P8HBwSXmNH388cf069fP8lpit4UQbiGx286P3S5a5ooVK+jSpQtvvvkm48aNsymE8+bNY9u2bWzcuNEyTWK3hajGTmecZkHaLrY2bsjE3BQcnXBUkTV7Z5LYbVuOjt1OTk5m586ddOnSBTBu5Wl9YHnt2rW89tprbNy40fI7AYndFqLa0Vqz/ex2xm0YR7+v+vFpxiH2+PqyOfvy3QQ1ncRu23J07HZoaChpaWkcOnQIMA7yFwXg/f777zz22GMsX76cBg0a2LxPYreFqCbyTHmsPLaS+fvns/+8cQMdL+VFQ09/zpqy3dw755DY7cqraOz2Rx99xL333ouHhwehoaF88sknAPzjH/8gIyOD++67D4CmTZuyfPlyQGK3bUjstmtI7LatP7P/5IuDX7Do4CLO55wHoI5fHQa3HMyQVkNYsHIsczIO8tfQDjwy4D9V/jyJ3a4Yid2W2G0hXG7Pn3uYv38+q46voqDQ2M/dKrQVI6JG0L9Ff3w9fctZgpDYbceT2G0hXCy/MJ/vT3zPvP3z2Jm8EwAP5UHvpr0ZETWC6xteX+KZJaJkErvteI6O3ZbCIEQpLuRc4MuEL1lwYAHnss4BUMunFvdG3svQ1kO5Jsi+q36FqCkqXRiUUrUpdlaT1vp8lXskhJsdunCI+fvn8+3Rb8k15QLQIqQFI6JGcGeLOwnwDnBzD4VwLrsKg1LqWmAWEAd4W88CNODpuK4J4TqmQhMbEzcyf/98tpy5FFFw8zU380DUA3Rr3E12F4mrhr1bDJ8CtYHRwCmMYiBEjZWel85XCV+x4MACkjKMaw4CvAIYGDGQYa2H0SykmXs7KIQb2HuBW2fgQa3151rrDVrrjdYPZ3RQCGc4nnac1355jV6LezFt2zSSMpIIDwpn/A3jWXvfWp7v8rwUhWIkdtsxKhK7/dBDD9G+fXtiYmIYPHiw5eK7uXPnUr9+fWJjY4mNjbXEZDg6dtveLYZjQKXPx1NK9QXextjlNEdrPaWENvcDkzG2RnZqrYdX9vOEsFaoC/n51M/M2z+PzUmbLdO7NOrCiKgR9AjvgaeH7A0tjXXstr+/f6Vjt728nHfOy+uvv25XkJyz+1Ocdez2qVOn6N27N4cOHbJc5FZkxowZlqvGx40bx8yZMy1XUg8ZMoSZM2fatLeO3bb3wsCS2LvF8DTwhlIqwt4PUkp5Au8B/YA2wDClVJtibSKB54GbtNZtgb/Z+zlCFJeVn8XCAwsZuGwgj699nM1Jm/H19OXeyHv5csCXzLl9DnFN46QoVIDEbldNRWO3i4qC1prs7OwKHd9yZ+z2MowthoNKqVzAJslKa315MMolnYHDWuujAEqphcDdwD6rNo8A72mtL5iXd87O/glhkZSRxIL9C/gq4SvS89MBaBjQkKGthzI4cjC1/Wq7uYeV89YQ5+y6+b8v/lduG4nddk3sNsCoUaNYsWIFbdq04a233rJM//LLL9m0aRMtW7ZkxowZNGnSBHBv7PaTVfisa4CTVq8TgS7F2rQEUEr9iLG7abLWevyB9KEAACAASURBVFXxBSmlHgUeBSMrRIgiWmu2nd3G/P3zWX9yPYW6EIDY+rGMaDOCXk174e3hXc5SRGkkdts1sdsAn376KSaTiaeeeoovvviCUaNGcddddzFs2DB8fX2ZNWsW8fHxrFtn3J/DbbHbWuuSU7EqpqRvX/y35AVEAj2BcOAHpVQ7rXVqsX7MBmaDkZVUhT6JK0SuKZcVR1cwf/98Dl4wdhl4eXhxR/M7GBE1grb12rq5h45TkTV7Z5LYbVuOjt225unpyZAhQ3jzzTcZNWqUTVF65JFHePbZZy2vHRm7bfdRF6WULzAC4ziBBvYCC7TWueW8NRFoYvU6HOOU1+JtftFa5wPHlFIHMQrFVnv7Ka4O57LOsfDAQpYcWsKF3AuAEWY3pNUQ7m91P/X867m5h1ee0aNHExISQnR0NBs2bLBML4rdnjBhQoVit+Pi4sqN3bYezMsTFRVls8vFntjtCRMmMGLECIKCgkhKSsLb29uu2O2KGjBgAMOHD2fcuHGcOnWqxNhtrTVHjhwhIiICrTXffPMNrVu3BoytorCwMACWL19uE4znttht88HiVUAwsNs8+RHgJaVUX631/jLevhWIVEo1B5KAoUDxM46WAsOAuUqpehi7lo7a00dxddiZvJP5++fz3fHvKNDG2mNUnSgeaPMAfZv1xcfTMaFs4nISu115FYndbtSoEfHx8Vy8eBGtNe3bt+eDDz4A4J133mH58uV4eXlRp04dm4LntthtpdR3QBbwF631RfO0YGAe4Ku1LjMrWSnVH/g3xvGDT7TWrymlXga2aa2XK2O78y2gL2ACXtNaLyxrmRK77RrVIXY735TPmhNrmL9/Prv/NNZLPJUnvZr24oE2DxBbP7baXJ389peDJXa7FBK77RzujN2+CbihqCgAaK0vKqVeAErezrKitV4BrCg2baLVcw2MMz+EACAlO4Ulh5bwxcEvSM5OBiDEN8QIs2s1lLCgMDf3UNhDYrcdz92x2zkYkRjFhZjnCeEwB84fYN6+eaw8tpK8wjwAImpHMCJqBHe0uAN/L8ccaBOuJbHbjufu2O1vgI+UUo9waQuhG/AhsNxhvRJXtYLCAkauGsn2s9sBUCh6hvdkRJsRdGnUpdrsLhLiSmVvYXga+Az4AeMYABhXTy9HrlIWVZCWm8bWM1vA/wayC7LZfnY7gd6BDIoYxLDWw2gaLNerCOEq9l7HkArcbY6uaI1xbcI+rfVhZ3ROXPmOph5l/v75fHP0GzwzIyHyBjyUB+M7P8fd191NkE+Qu7soxFWnUulRWusEIMHBfRFXiUJdyOakzczfP5+fTv1kmd62VjOOAYHegYyIusd9HRTiKlduiJ5S6h2lVKDV81Ifzu+uqMky8zOZv38+A5YO4Invn+CnUz/h5+nHfS3vY+ndS7m/1f3u7qIog8RuO0ZFYrePHTtGly5diIyMZMiQIeTlGSdfbNq0iY4dO+Ll5cWSJUss7d0Rux3Npbu1RZfRTqIpRIlOpp/k8/2fs/TwUjLyjVz5sMAwhrUexj2R9xDiGwLATna6s5uiHBK7XXUVjd1+9tlneeaZZxg6dCiPP/44H3/8MWPGjKFp06bMnTuXadOm2bR3eey21jquKKvI/Ly0R+mXFoqrjtaaX0//ylPrnuKOr+5g3v55ZORn0LFBR6b3nM6Ke1Ywqt0oS1EQNYPEbldNRWK3tdasW7eOwYMHAxAfH8/SpUstv4eYmBg8PC4fut0Zu30Z870ZErXWch2DIKcgh/8d/R/z98/ncKpxToK3hzf9m/dnRNQIoupeGVfvulPicz84ZbnhU24ut43Ebjs/djslJYXatWtbtmTKiua25rbYbaXU68BBrfVn5viKNUAvIE0p1U9rXe7Vz+LKdCbzjBFml7CEtFwjarmefz2GtBrCfS3vo65/3XKWIGoCid12fuy2PdHc1twWu42RqjrE/LwfEAt0NU9/A4hzSK9EjaC1ZkfyDubvn8/aE2sxaePSlnZ12zGizQhuv/Z2vD3l3geOVpE1e2eS2G1bjo7drlevHqmpqZbjH+VFcxdxZ+x2Q4xobID+wCKt9Ral1HnAOde4i2onz5TH6uOrmbd/HvtSjBvweSkv+jXrx4g2I2hfv72beyicSWK3bTk6dlspRVxcHEuWLGHo0KF89tln3H333eUu222x20AKcC1GceiDcX/mouVITsFV4H9H/8fbv71NSo6xpljbtzb3tbyPIa2G0DCwoZt7J1xBYrcrryKx240bN2bq1KkMHTqUF198kQ4dOvDQQw8BsHXrVgYNGsSFCxf45ptvmDRpEnv37gXcG7v9DsZ9mg8BHYBrtdaZSqmhwD+01tc7pFd2kNjtipu66gA7T6by2ejOeHuWe0KajaLY7SItQ1vyQNQD9GveDz8vP4f0r7zY7ZpEYrdLJ7HbzuHO2O1xwAmgKTBea51pnh4GfGDnsoQLbTqUzAcbjgBw/M9MIhva9x+jTd02LD+ynJ7hPXmgzQN0athJwuxEpUjstuO5NXZba12AcSOd4tMrvpNNuFxOvokJy/ZUaRnDWg9jcMvBeHvIwWRRNRK77Xguj91WSnUEdmitC83PS6W1/s1hPRMO8/6GI5xIyarycqQoCHF1qMgWwzagEXDO/FxT8oFmjXHLTlGNHE3OYJZ5F5Kftwc5+YVu7pEQorqrSGFoDiRbPRc1hNaaCcv2kGcq5P5O4fz2RyqHz2W4u1tCiGquIllJJ8z3Yi56XurD+d0V9li+8xQ/Hk6hdoA3z/W7Ms5oEUI4n13nLCqlnlRKPVDC9AeUUmMd1y1RVWnZ+bzyP+Pis3/2i6JOoGPO+hBXL4nddoyaELtt38nsxu07T5Yw/TjwTJV7Ixxm2uqD/JmRxw3NQhl8fbi7uyOuANax20ClY7ed6fXXX+epp56qcHtn96c469jtVatWMXbsWEwm02XtimK3ExISCA0N5eOPPwawxG4PHz7cpr117LYj2FsYwjGuYygu0TxPVAM7TqYy79cTeHkoXh0YjYeHXG8gHENit6vmSo3dPoMRnHe82PSOwJ+O6JComgJTIS98vRut4aEezWnV6Mq7wvNqN3nyZLctV2K3JXa7JJ8D7yilMoEN5mlxwL8Bx5QqUSX//eUEe09d5Jra/jzdK9Ld3RFXGIndltjtkkzCOGV1NVC0Y8wDWAxMcEiPRKWdScvhrTWHAJg8oC0BPq67ZaFwHWdtMVSUxG7buhJjt+06xqC1ztdaDwNaAcMx7sPQSms9VGudX/a7hbO98r99ZOQWcFubhtzWRpJOhXOMHj2aiRMnEh1tewv4othtoEKx20C5sdv2iIqK4vDhw5bX9sRuf/LJJ2RkGNf4JCUlce7cObtit3fs2HHZo3hRAKOoLly4kNzcXI4dO1Zu7Dbglthtew8+A6C1TgA2AUu01ofLay+cb8PBc3y7+zT+3p5MHtDW3d0RV7CyYre3bdtGTEwMzz33XJmx28nJycTExDB16lRL7Hb79u0tsdujR4+uUuw2wPjx43n++ee56aabSjzzp0ifPn0YPnw43bp1Izo6msGDB5Oenk7fvn0pKCggJiaGCRMmODx2u2/fvpfFbhftCpo6dSrTp08nIiKClJQUm9jt8PBwFi9ezGOPPUbbtpf+r7szdtsbeA0YA/gDLbXWR5VSU4ETWuv3HdIrO0jsthGS12fGJv44n8Xz/Vrz2C3Xldiu9/SNHD6XwXfP9LA7XdUVJHa7dBK7XTESu+2Y2G17txgmAXcBDwC5VtO3ACPtXJZwkPfWH+aP81m0aliL0d0ltURUb1lZWXTv3p327dszaNAgh8duFx2LuJq4NXYbGAaM1lpvVEpZp7HtAVo6pEfCLofPZTBroxGS99qgdnbfgEcIV5PYbcdzdOy2vaNIY0q+wM2LikV491VKHVRKHVZKXX5k5lK7wUoprZQqcTNHGLTWTFi6h3yTZkinJnRqVsfdXRJCXAHsLQx7gR4lTL8f2F7WG5VSnsB7QD+gDTBMKdWmhHa1gL8Cv9rZt6vO0h1J/Hw0hdAAb57r19rd3amWcvJNZOW5NvZAiJrO3l1JLwHzlFJNMO69cJ9SqjXGqavlHQ7vDBzWWh8FUEotxLh/9L5i7V4B/gX83c6+XVXSsvJ57dv9APyzfxShEpJn43xmHh9vPsp/fjpBsL83m8bH4SnRIEJUiL239vxGKXU/8E+gEONg9G/AXVrrteW8/RpsA/gSgS7WDZRSHYAmWuv/KaVKLQxKqUeBR8EIlboa/Wv1Af7MyKNzszoSkmflXHoOc344xrxfTpCVZ5yimJ5bQF5BIf4+ch8pISqiwruSlFJeSqn+wDat9S1a6yCtdYDWurvWek1FFlHCNMu5skopD2AG8H/lLUhrPVtr3Ulr3cn6Evirxe9/XODzLX8YIXmD2lXocvkr3em0bCYv38vNU9cze9NRsvJMxLWqj5dsJTiMxG5XXUpKCnFxcQQFBfHkk0+W2u78+fPcdtttREZGctttt3HhwgXAOK7417/+lYiICGJiYvjtN+Nuym6L3dZaFwBfAZU9ATgRaGL1OhywDvaoBbQDNiiljgNdgeVyANqWEZK3B63hkR4taFkNr0dwpZPns3j+q930+Nd65v50nNyCQm5v25BvnuzOp6M64+UphcFRJHa76vz8/HjllVeYNm1ame2mTJlCr169SEhIoFevXkyZMgWAlStXkpCQQEJCArNnz2bMmDGA+2O3dwIRlfysrUCkUqq5UsoHGAosL5qptU7TWtfTWjfTWjcDfgEGaK2dc15bDfXZzyfYd9oIyfvrrVdvSN7R5Az+vngnPadtYMGWPygo1NwZE8aqv93Mh3/pRHR4iLu7eEWS2O2qCQwMpHv37vj5+ZXZbtmyZcTHxwO2sdvLli3jwQcfRClF165dSU1N5fTp05a+uit2ezLwllJqEsZZSJnWM7XW50t7o9a6QCn1JEYAnyfwidZ6r1LqZYzdU8tLe68wnE7LZvoa4x/3y3e3vSr3mR86m87MdYf5365TFGrw9FDc0/EanoiL4Lr6Qe7unkt8v67kK9urqtetR8ptI7HbVYvdrqizZ88SFhYGQFhYGOfOnQOMHKcmTS7teCmK5A4LC3Nr7Pa35p9fYXV8AOP4gcYY8EultV4BrCg2bWIpbXva2bcr3iv/20dmnonb2zakV9TVFZK3JymNmesOs2rvGQC8PRVDrg9nzC0RNK0b4ObeXT0kdrtqsdtVVVaCrTtjt+Mc8qnCbusPnGPF7jME+Hgy6a6rJyRvx8lU3v0+ge8PGGtMPl4eDL2hCY/dch3X1HZMxHBNU5E1e2eS2G1bzthiaNiwIadPnyYsLIzTp0/ToEEDoOzYbkfGbleoMCilAoA3gYGAN7AW+KvWWu7a5gLZeSYmLt8DwDO9W9L4KhgQtxw7z7vrEvghwfgn5u/tyYguTXm0RwsaBJe9f1Y41+jRowkJCSE6OpoNGzZYphfFbk+YMKFCsdtxcXHlxm5bD+bliYqK4q233rK8tid2e8KECYwYMYKgoCCSkpLw9va2K3bb0QYMGMBnn31mSaktit0eMGAAM2fOZOjQofz666+EhIRYdjk5Mna7olsML2GE5M0HsjEuaPsAuM8hvRBlem/9YU6ez6Z1o1qMvKmZu7vjNNq8dzIr18T9H/4MQKCPJw/e2IyHuzenbtDVF45WHZUVuz1q1ChiYmIICAgoM3Y7Pj6emJgYOnToYIndjoyMtMRut2jRokqx27Vq1WL8+PHEx8czffp0br311lLf16dPH/bv30+3bt0ACAoKYt68efTt25dZs2YRExNDq1atHBK7DcaB9IsXL5KXl8fSpUtZs2YNbdq04eGHH+bxxx+nU6dOPPfcc9x///18/PHHNG3alMWLFwNGNPeKFSuIiIggICCATz/91LJcl8duK6WOAC9orReaX3cGfgT8tNalB527wJUeu334XDr93v6BfJPmyzHduP7ayuchVdfYba01Gw4mM/27n9jarhkNTifBIS9G3dScUTc1o3ZA5a/qbj1hJTn5hex/ua9LD9ZL7HbpJHbbORwZu13RLYYmwA9FL7TWW5RSBRiheidLfZeoEq01L5pD8oZ1blKlolAdFRZq1uw7y8z1CexJukidQOP8eD9vD9Y+dyvBft5u7qFwhqysLOLi4sjPz0dr7fDY7aK166uJu2K3PYG8YtMK7Hi/qISvf0/il6PnqRPow7N9r5yQPFOh5tvdp3lv3WEOnjXutlUvyJdbWzfkPxgHmKUoXLkkdtvxHB27XdGBXWGE51nfnMcP+EgplVU0QWs9wGE9u8qlZuXZhORVZXdKdVFgKmTZjlO8t+EwR5ONS2DCQvx4/JbrGHJDE1bs3sN/0ip+R0EhhHNUtDCUdBRpniM7ImxNXXWQlMw8ujSvw70d7YsdqG7yCgr58rdE3t9gHEQHCA/1Z2zPCO69/hp8va6+C/WEqM4qVBi01qOc3RFxyfYTF1iw5Q+8PRWv1eCQvJx8E4u2nWTWhiOcSjPO/25RL5CxcRHcHdtY7jYnRDUlxwiqGSMkzziv+5GbWxDRoOadPZGVV8Dnv/7Bh5uOkpxu7H1s2TCIJ+IiuDOmsdwXQYhqTlbZqpm5Px3nwJl0wkP9eaqGheSl5+Tz3vrDdJ+6nle/3U9yei5tGwcz64GOrHq6B3fHXiNFoQaT2G3HeOONN4iIiKBVq1asXr26xDYPPfQQ7du3JyYmhsGDB5ORkQEYF+rVr1+f2NhYYmNjLXlRjo7dli2GauRUajbTvzsEwCt3t6sxIXlpWfl8+tMxPv3xOGnZRh5NbJPa/LVXBHGtGtTYXWHClnXstr+/f6Vjt728nDfsvP7663YFyTm7P8Xt27ePhQsXsnfvXk6dOkXv3r05dOgQnp62/9dnzJhhuWp83LhxzJw50xKvMWTIEGbOnGnT3jp2294LA0siWwzVyMvf7CMrz0Tfto2Ia93A3d0pV0pGLv9adYCbpq7j32sTSMvOp3OzOvz3oc58PfZGbm3dUIrCFUZit6tm2bJlDB06FF9fX5o3b05ERARbtmy5rF1RUdBak52dXaH/R+6M3RZOsu7AWVbtPUOgjyeTBrRxd3fKdO5iDh/9cJR5v/xBdr5x4Xv3iHo8dWsEXVrULefdoqoard/hlOWeiYstt43EblctdjspKckmWqMoNrsko0aNYsWKFbRp08YmA+rLL79k06ZNtGzZkhkzZlhiuN0Zuy2cIDvPxMRlewF45raWhIVUz5C8U6nZfLjxCAu2niSvoBCAW1s34Im4CK6/1jFXXIrqTWK3qxa7XVYCbXGffvopJpOJp556ii+++IJRo0Zx1113MWzYMHx9fZk1axbx8fGsW7cOcG/stnCCd9clkHghm6iwYEbe2Mzd3bnMHylZfLDxMEu2J5JvMv5h3962IU/dGkm7a+ROaa5WkTV7Z5LYbVv2bDGUFZtdEk9PT4YMGcKbb77JqFGjbIrSI488wrPPPmt57fLYbeE8CWfT+eiHoygFrw1qh1c1Orf/SHIG768/wtIdSZgKNUrBXe0b80TcdbRudHmcsrg6SOy2LXu2GAYMGMDw4cMZN24cp06dIiEhgc6dO9u00Vpz5MgRIiIi0FrzzTff0Lq1EYlTdI8GgOXLl9sE47kjdls4gdaaF8whecO7NKVj0+qxO+bgmXRmrjdun6mv0ttnitJJ7HbltW3blvvvv582bdrg5eXFe++9ZzkjqX///syZM4dGjRoRHx/PxYsX0VrTvn17PvjgAwDeeecdli9fjpeXF3Xq1LEpeC6P3a7OanLs9pLtifx98U7qBvqw7v96EhLg3OC48mK39ySl8e66BFbvPQsYt88c7MLbZ371207GpmkiUs+yedDtDlmmxG5XPxK77RzuiN0WDpaalcfrK4yQvBfuiHJ6USjLb39cYOa6w6yT22cKF5DYbcdzV+y2cLCpqw5wPjOPri3qMKiDe0Lyfj2awrvrDrP5sNw+U7iOxG47nrtit4UDbT9xngVbTuLtqXh1YLTLLwL76UgKL3y9hy3HzwMQ5OvFg92u5SG5fWa1prWWCwaF3SpzuEAKg4vlmwp54es9ADzW4zoiGrj+YO6k5cY1E8F+jrl9pnA+Pz8/UlJSqFu3rhQHUWFaa1JSUvDzs28PgBQGF5v7oxGS17ROAE/eGuHSzw4wH3ytE+jDQ92b82C3a6kld0qrEcLDw0lMTCQ5OdndXamxdKEm40IuKPgz4+rZVern50d4eLhd75HC4EKnUrOZsdYIyXvp7rb4ebs2JO/1QdHsO3WRO9uHEeAjf/qaxNvbm+bNm7u7GzVaTmY+H7/7A74BXjw8vYO7u1OtyejgQi99s5esPBP9oxsR18r1IXntrgmRK5WFEOWqPpfZXuHW7jvL6r1nCfTxZOKdbd3dHSGEKJUUBhfIyiuwHPAd16cVjUKunv2bQoiaRwqDC7y77jBJqdm0CQsmvtu17u6OEEKUSQqDkx06m85Hm6pnSJ4QQpTEpaOUUqqvUuqgUuqwUuq5EuaPU0rtU0rtUkp9r5Sq0avXWmte/HoPBYWa4Z2b0qGahOQJIURZXFYYlFKewHtAP6ANMEwpVfxWZb8DnbTWMcAS4F+u6p8zLNmeyJbj56kX5MP421u7uztCCFEhrtxi6Awc1lof1VrnAQuBu60baK3Xa62zzC9/Aey7KqMauZBZfULyhBDCHq4sDNcAJ61eJ5qnleYhYGVJM5RSjyqltimltlXXK0GnrDzAhax8urWoy8BY94TkCSFEZbiyMJQU8FJiupNS6gGgE/BmSfO11rO11p201p2s7/FaXWw7fp4vtp3Ex9ODVwe1k2wbIUSN4sornxOBJlavw4HL7lytlOoNvADcorXOdVHfHMYmJO+WFnLHMyFEjePKLYatQKRSqrlSygcYCiy3bqCU6gB8CAzQWp9zYd8c5pPNxzh41gjJeyLOtSF5QgjhCC4rDFrrAuBJYDWwH1iktd6rlHpZKTXA3OxNIAhYrJTaoZRaXsriqqWk1Gz+vTYBgJfdEJInhBCO4NIQPa31CmBFsWkTrZ73dmV/HG3y8r1k55u4IzqMnm4IyRNCCEeQy3Ad5Lt9Z/lu31mCfL2YcGfxyzOEEKLmkMLgAFl5BUw2h+T9X5+WEpInhKjRpDA4wNvfJ5CUmk3bxsH8pWuNTvEQQggpDFV18Ew6H/9wzBySFy0heUKIGk9GsSooLNS8uHQ3BYWaB7pcS2yT2u7ukhBCVJkUhipYsj2RrccvUC/Il7/f3srd3RFCCIeQwlBJ5zPzeH2lEZI34c4oQvwlJE8IcWWQwlBJU1buJzUrn5si6jKgfWN3d0cIIRzGpRe4XSm2HDvPom2J+Hh68MrdV3ZIni4sJPv330lfs4b8U6dp9PJLeIXKDYeEuJJJYbBTvqmQF5fuBuDxntfR4goMydMFBWRt3crFNWtIX7sWU/KflnlBcXHUvmeQG3snhHA2KQx2+njzMQ6dzeDaugGM7Xmdu7vjMDovj8yff+bimjVkfL8OU2qqZZ53eDgoRf7Jk6AL3dhLIYQrSGGww8nzWfx77SEAXrm7XY0PySvMySFz82ajGKxbT2FGhmWeT/Pm1Lq9D8F9+uAbFcXpF14k7eTJMpYmhLhSSGGww0vf7CUnv5A7Y8Lo0bL63SCoIgozM8nYuJGLa74jY9MmdFaWZZ5vq1bU6nMbwX364BMRcUUfOxFClE4KQwWt2XuGtfvPUasGhuSZLl4kY/16Lq5eQ+bmzei8PMs8v+joS8XgWonzEEJIYaiQzFzbkLyGwdU/JK/g/HnSv/+e9DXfkfnLL5Cfb8xQCv+OHY1icNtteF8j96MWQtiSwlABb3+fwKm0HKKvCeEv3Zq5uzulyj97jvS135G+5juytm6FQvOBYg8PArp2pVaf26jVuzfeDeReEUKI0klhKMeBMxf5eHNRSF47PD2q1373/KQkLn5nFIPs338HrY0Z3t4E3nSTUQx69cKrTh33dlQIdyoshJyLxnNtgj9+MV7nXoScNPPPi1C7KXQaVfIytIb8LMhNNz8uWj0vY1peJkQNgC6Puu77VpEUhjIUFmpe+HoPpkLNg92uJSa8eoTk5R0/zsU135G+Zg05e/ZYpisfHwJvvpngPrcRFBeHZ3CwG3spRBm0hoIcY1DOSTMG5Zw0yEm1mpZ2aeAu/sg4C92ehNBmlwb1sn7mpkNhIPBfY9onA0vv2/ZPIaCe1cCecWkZlT1dO/mAYwqD1mDKM4pNXgZ4+kCtRlVfbjFSGMqwaNtJtp+4QP1a7g3J01qTd/gwF1evIX3NGnIPHbLMUwEBBPXoQfDtfQjq0QOPwEC39VM4SGGhMUBmpZT8CGpoDIruPGusaO25pEG7tEfxQd6UV/7nlOXnmfa19wowfnp4QvgN4BsMfsGXfv70rjH/9M7Sl+EdAL61wCfI+Olby3i/5Xkt2+m6EJY+DpnJkPSbMaDnZxmDel4m5Fk/z4T8zEvPS3rkZ0JhwaX+RN8P935k3++hIr8qhy/xCpGSkcuUVQcAmHBnG4L9XBuSp7UmZ98+0s1bBnnHjlnmedSqRVBcT4L79CGwe3c8/Kr/wfCrWk6aeVA/X8pgX2x69oXy10xbxEGjdvb1Q2tjEMpJg2zrNfNU43VehrErpaKDvPUAVRmePuBXG/xCjIHZL+Tyh2+wVRvzI/00bPkIvP2KDe4hlw/2RT99akGOhv/7wZj28NrL+3PDI3BsI/gEljzY+9QCTzuHzMxLqQF8FFe131cRTx+jj96Bxnd2AikMpXhj5QFSs/LpHlGPu2LCXPKZurCQ7J07jWLw3XfkJyZa5nnWrk1Q715GMejaFeXj45I+iSo6sh6mNLX/fX4hEFC32KMO7F5iDIxndhu7YrJTzbtfrAZ6y6CfenkR0CbHfTcv/5IH81IH+WKv9YlH8gAAE1RJREFUvSu5QtOgNVxXmUE2v+zZoddC6IOV6lKpAupCu3vh9C7wCTC2NHwCLw3sPqU9goytk6LnPoHG+70D0Z7eFJo0BXkmUApfx/YYkMJQol+PprBkeyI+Xh68MtC5IXnaZCJr+3ZLMSg4e9Yyz7N+PWr17k1wnz4E3HADykv+XDVGUAPIOGg89wkyBvWSBvrLptUF/1DwLGUL9cRPRmFY+njl+uUdcGkN3N9qTfzw93BNx2Jr5yUN8LUvrZl7ycqJtUJTIQV5hRTkF1KQZzI/N1HQfjoFUVavrX/mmShIM//ML+Vn3nkK8v60eU/ROSYtOzfkttFtHf5dZKQpJq+gkBeXGgd0x/a8jub1HL/PXufnk/nrFtLXrCH9++8xpaRY5nmFhRHc5zZq9emDf2wsyrNmx25cteq3gjM/QNw/IXaM45bbdhCkngTfoJIH+MumhdoO7DKYk5tVwOnDqSUO1Pl5JkzWA7tlgC5t0L70s7BQu+w7eHgovHw88PByzp0TpDAUM2fzURLOZdCsbgCP3+K4kLzC3Fwyf/zJKAbr11OYlmaZ5920KcG396FWnz74tbuyY7yvOh4O/i9241PGQ1TJV9N+c/gylQJPH0+8fTzw8vbEy8cDLx9PvLw98PLxwNPbPM8yzRNPHw+8fTzx9DZ+etm819zGMs94n6ePB55Ovre8FAYrJ89n8c73CQC8MrDqIXmFWVlk/LCZ9DVryNiwgcLMTMs8n4jrCO5jFAPfVq2kGNQAOj8fU0YGhZmZFKanU5iRYbzOyKQwM8PmdbsTW3g8zYRP03R3d9vhtNbkF+aTXZBNrimXnIIcckw55BTkkGvKLXt6Qa5lWo4ph9yCXLJNxnQP5cHfO/2d6PrRTum3X6A3bbo35uzxi5cN0GUP1LYDdFEbm0Hc2xMPL3XF/D+WwmCmtWbSciMkb0D7xtwcWbmQPFNGBhnrNxjF4Icf0Dk5lnm+UVGWLQPfFi0c1XVRDm9TAabz58nLy7YavG0H8qLXhZkZmDKsBv7MS/N1bm6FP7Ox+XHsxwPgoJNRylLaYF18IC5xerEBvCIDvcY5u01WHFvhtMIAEPdAa6ct+0oihcFs9d6zrDtghOS9eGeUXe81paaSvm496atXk/nTT+j8S2c/+LWPsWwZ+DRp4uhuX7G01ujcXKsBPNMycBdmZGBK///2zj/Irqo+4J/vve/tbvYHaX6BaIgBCQjyKxj5ZREQzERaoTq0pFOtMCAdW+1UO3baqbSi05lWRmuZ0tJYGaudIqmtNSg0OxgoSvkpNkwAtWugkBYkhLAbNtl9757z7R/nvPfue7ubfcm+93Y3+/1kTu75de/5fve++/3ec+695+QNeb1xd6Ov42P55uERit7xwl0tECpNSfr7Sfv7Saqhj7SvId0/wI7vfp0V21/Al8uMlEaCkc3dHc8nYz0ZhaRAT9pDT6GH7rSbRYVFdKfd9BR6Div//l33c8eP7+ioDnMdVSVzngPljP2lEvvHy4yWyoyVSoyVMg6UM5b2LWLdCStb3rY5BsIkeTfdFSbJ+9SGkzl6YPrX6LJXXmHfvd9j3+Ago48+Cll8p1uE3nXrGFi/noH3XEbx2M686jpXUFV0bKxmvEcnuTNvNO7RmO9Zsgw+cC1+3+v8+IwzaxP/zYAikElC1+KjcgY9GvOBgWjIY35frnxgIKZr5dLT0/RQwb4d97Bi+ws8+tKj/NEd75yxHs3QaKx7Cr0U0166Cn0U016KhV4KSQ/FtJc07SFNQkjSbhLpIkm6QbqQpIhIFyoFVAogBVb1dPP+YxZXDXqhxc9Odg7vnLaO90rZezKnlJ2n7JQspp1XVi3tRQTGShmj0ZDuL5U5UArb8cwxVs4Yy8qMlx1jWcZ45hjPMkrOUfKeUuYoO09JPWXnybynrLEd1WpwCk593CoO8BC2EuJeBCeCz4ckCUESfCL4JK2mXZLU0pX4NC+fnPrYE2w74epWnII6zDEAX7r3p7w4PMYZKxfzG+dOPfV0+aWXqh+c7f/hD2vzEqUpfRecH5zBpZdSWDE/12pohpc/fzMHtj8Zjf2+hjv1EMcd3rvy7oyzQkQ1OIViMRjligGfcGcejflA/wTjnvb3kfT3s/aL/8k+l/DM597Loq72vOHlVBmPRqsU437ZGp49djd7lnRT6D0qGuVFFAu9pEkPhYphTnsQ6SJNupGkC6QI0gUU8FLAE4LTBEeK04SMBKdCVgkImcKowjDRcBGM1AR8DE37XA+UgBLPPvLfLBnbT5Y5yi6j7ByZc2ReydTjvA/bSvsKThSHhLRQNZBOBJ8IToIRdIlnhXyCLU91861n/rVqRFWSnKFsDDUj6qrxFE2afTCbhJAWYQ6//CfekXpPUtk6R+odiXcM7NvdljYXvGMYPpBx+4PPkQj82a+cPmGSvNKuXezbOsjI4FbGtj9ZzZdikb4LLmBg/Xr6330JhSVLOi16R0l6w3QCbniY1zZvPmhd6e6edJglHcjfldffjSf9/Szdsze0NdDPyU9uJ2n4iM+pUvIa7uyqxlgZVx/zY8ilR984QObhH1/cg0M54DwHMs+Y84x5z5hTxn1Il3yIV7aZxra8UlZPppChcRsMbyagk/Uiznl/CM2g8WCH5U81hsmKPAXnSJyj4DNS50hd3ObTvpZfcFkwQJW4czx+1i8CcPvRrZ+Tp10kLssZU0fifNWYBn193LqqvmksK7hKOvz9CrFuwTsKTkOe9+EYGuKJ9yFPNbSr8fiqpOopqJKoBhlUSVVJ8KQoiXoSJeyDkgCijlRiPDpITQSVBGIaSZCV7VlzfsE7hp++NIJbtJxrLljN6SvD5+XjO3eyb3CQkcFBxp9+plpXenrov/DC4Awuvoh0YGC2xO4Y6hWcsuRD15AuXY4Uk0mHWarGv69v2q+yK8dU78PWKeqVwo5noARDS97A2h/soKzhxrYsQolwt3nIvC047Bt3/t+h79uIxP8mEaPLKUUPXV7p8lDQEC+XRvDl0ZqRqRhd76PxDfFqcI6i86ReKXpfM0be0+WVggtGpug8Ra8Uvca00lXdB4pOKSqkCEkMgpCQTJqupEQEkTSkJUFIuds9y3dOPAbRoFfBa/12QpxaXKGgQjGXV1QJW18rL/iQL9kY+/fvivlKilDwSpo/HkKqUb94rAIS2lFISUkkifJHnSpaS17jrprelX8q1fLD/o0cQu+j8kyltq3P02nKelcsOzw5p6GjjkFENgB/RfjT/b2q/nlDeTfwNeDtwB7galV9rp0yOYWj+7v4+GrYfcstjAwOUhr6WbU86e2l/+KLgzN414XVO+dWE4ylRzNFM486hcyjlTznQzrGNavUD3U181Aty+9fKavFG8s0iwY6115FFuo+2jmVdGkPdPfhDnj05WjgXQl1r4DbnTP68RjR8OcdwVQ3uMf1CIUL+8gS4eeSTGuAi9G4BINYH+/yUNRc3NfHu+K+xWjIG+NdWjtm0ftqeeU4BdWqgQ/zGikOjxePR+llUfXihe7aRS2TX+BMYgQm5uViKWjh8IxJJccThnwUQKZu65y9B3jHY88dRJ5KPObLDPQCFlXiUi9rSWB8gpwHkyfXlkze1uTnIKeRNNSRie1Me4xJ22nNY/a3jp/IRta24Ej1dMwxiEgK3Aq8B9gFPCYiW1T16Vy164C9qnqiiGwE/gJo/ZOVHGtGX+aXHnmI5/99L5oWICkia95Bz2mn033K2yiuPh5PwmvO8+qDzwbD6Tw+GlHvFHUOzSpxj/pcHa+1fZwHr/hKOhpP7xXVJgzFQS7e+h9jiy7eBDRRSILjUoARRUdydWTqNidcvBKMWfUCE6rGX6Nuv/eQMJoWSNXF7rgn1dBll8ozHaFOj8a/T50OAnn9aSh3wH7NyZk/D1o7L3VUhrDn8Li0Mb8IPbXadxD59MHK+t4w/yfROwcYUtWdACLyDeBKIO8YrgQ+E+PfBP5aREQnvTpbw9BxKUPHnTRJySjsfDSEdpIyPwxMez+0rFnvLISDztupU8TbTDMX71T5rd7HZJg7MrRC7rlGJx3Dm4AXculdwLlT1VHVTESGgWXAK/lKInIDcAPAqlWHMXMlcHTfUoZLZVRyJ47ciQsN5fJzJ3GKEy1JKEtycUmERBJIavmSJNX6tZAs+ItjrstgGAuFTjqGya6sxvu9ZuqgqpuATQDr1q07rHvGD3z6+sPZzTAM44in3QMEeXYB+U9/VwKNr4pU64hIAVgMvNoR6QzDMAygs47hMWCNiBwvIl3ARmBLQ50twIdj/CpgWzufLxiGYRgT6dhQUnxm8DFgK+Fx6+2q+pSIfBZ4XFW3AF8Bvi4iQ4SewsZOyWcYhmEEOvodg6reDdzdkPcnufgY8KudlMkwDMOop5NDSYZhGMY8wByDYRiGUYc5BsMwDKMOcwyGYRhGHTLf3wYVkd3A/xzm7stp+Kp6AWA6LwxM54XBTHR+s6pOunjMvHcMM0FEHlfVdbMtRycxnRcGpvPCoF0621CSYRiGUYc5BsMwDKOOhe4YNs22ALOA6bwwMJ0XBm3ReUE/YzAMwzAmstB7DIZhGEYD5hgMwzCMOhaEYxCRDSLyExEZEpE/nKS8W0TujOWPiMjqzkvZWprQ+ZMi8rSIPCki3xORN8+GnK1kOp1z9a4SERWRef9qYzM6i8ivxXP9lIj8U6dlbDVN/LZXich9IvKj+Pu+fDbkbBUicruIvCwiO6YoFxG5Jf49nhSRs2fcaGXB8yM1EKb4/hlwAtAFbAdObajz28BtMb4RuHO25e6AzpcAvTH+0YWgc6w3ADwAPAysm225O3Ce1wA/ApbE9NGzLXcHdN4EfDTGTwWem225Z6jzu4CzgR1TlF8O3ENYAfM84JGZtrkQegznAEOqulNVS8A3gCsb6lwJ/EOMfxO4VOb3Ir/T6qyq96nq/ph8mLCi3nymmfMM8Dng88BYJ4VrE83o/BHgVlXdC6CqL3dYxlbTjM4KHBXji5m4UuS8QlUf4OArWV4JfE0DDwO/ICLHzqTNheAY3gS8kEvvinmT1lHVDBgGlnVEuvbQjM55riPcccxnptVZRNYCx6nqdzopWBtp5jyfBJwkIg+KyMMisqFj0rWHZnT+DPBBEdlFWP/l450RbdY41Ot9Wjq6UM8sMdmdf+M7us3UmU80rY+IfBBYB1zUVonaz0F1FpEE+Evgmk4J1AGaOc8FwnDSxYRe4fdF5DRVfa3NsrWLZnT+deCrqvoFETmfsCrkaarq2y/erNBy+7UQegy7gONy6ZVM7FpW64hIgdD9PFjXba7TjM6IyGXAHwNXqOp4h2RrF9PpPACcBtwvIs8RxmK3zPMH0M3+tr+tqmVVfRb4CcFRzFea0fk6YDOAqj4E9BAmmztSaep6PxQWgmN4DFgjIseLSBfh4fKWhjpbgA/H+FXANo1PdeYp0+och1X+juAU5vu4M0yjs6oOq+pyVV2tqqsJz1WuUNXHZ0fcltDMb/vfCC8aICLLCUNLOzsqZWtpRufngUsBROQUgmPY3VEpO8sW4Dfj20nnAcOq+uJMDnjEDyWpaiYiHwO2Et5ouF1VnxKRzwKPq+oW4CuE7uYQoaewcfYknjlN6nwz0A/8c3zO/ryqXjFrQs+QJnU+omhS563AehF5GnDAp1R1z+xJPTOa1Pn3gS+LyCcIQyrXzOcbPRG5gzAUuDw+N/lToAigqrcRnqNcDgwB+4FrZ9zmPP57GYZhGG1gIQwlGYZhGIeAOQbDMAyjDnMMhmEYRh3mGAzDMIw6zDEYhmEYdZhjMIw5SJz99aqp0obRTswxGEYOEflqNMIqIpmIPC8ifysiS2ZbNsPoFOYYDGMi9wLHAquB64H3AX8zmwIZRicxx2AYExlX1ZdUdZeqDgJ3AusrhSKyWEQ2xcVT9onIfzTOuSQi54nINhEZFZHhuBjSG2PZBhH5vojsFZFXRWRrnLrBMOYE5hgM4yCIyAnABqAc0wJ8lzCt8S8DawkL/2yrzIEvImcC9xGmKHgnYcK+zdSmoOkDvkRYW+BiwjTvd8W5fwxj1jni50oyjMNgg4i8TpiLpyfmfTJuLwHOAlao6oGYd6OIvA/4EGERoD8AtqvqDbljPlOJqOq/5BsTkWuBEYKj+EGLdTGMQ8Ycg2FM5AHgBmARYQW0twC3xLK3A73A7oZF/npiPQi9iG9NdXAReQthJblzgRWEnnsCrGqZBoYxA8wxGMZE9qvqUIz/rojcB9xIWBksAX4OXDjJfiNxO92ysHcB/wv8VtxmwNOENYwNY9Yxx2AY03MTcI+IbAKeAI4BvKpOta7BE8C7JysQkWXAKcDvqOp9Me9s7Fo05hD28NkwpkFV7weeAj5NeJX1QeDbIvLeuGDM+SJyk4hUehE3A2vjm0tnisjJInK9iKwC9gKvAB8RkRNF5CLgNkKvwTDmBOYYDKM5vkhYMnIVYVGUbcCXCUtlbgZOJi6nqKr/BVwGvJWwUtwjhMWfynHd4auBM4AdwK2EYar5vrSqcQRhC/UYhmEYdViPwTAMw6jDHINhGIZRhzkGwzAMow5zDIZhGEYd5hgMwzCMOswxGIZhGHWYYzAMwzDqMMdgGIZh1PH/9EymxwAsRfQAAAAASUVORK5CYII=\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": [
"roc_ = []\n",
"prc_ = []\n",
"scores_ = []\n",
"labels_ = []\n",
"for i in range(10):\n",
" roc, prc, scores, labels = run_Morgan(i, True)\n",
" roc_.append(roc)\n",
" prc_.append(prc)\n",
" scores_.append(scores)\n",
" labels_.append(labels)\n",
" \n",
"print('ROC-Mean {:.4f}'.format(np.mean(np.array(roc_))))\n",
"print('ROC-STD {:.4f}'.format(np.std(np.array(roc_))))\n",
"print('PRC-Mean {:.4f}'.format(np.mean(np.array(prc_))))\n",
"print('PRC-STD {:.4f}'.format(np.std(np.array(prc_))))\n",
"\n",
"with open('./scores_aicures/morgan_score.pkl', 'wb') as f:\n",
" pickle.dump(scores_, f, pickle.HIGHEST_PROTOCOL)\n"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [],
"source": [
"def run_Daylight(fold_n, balanced):\n",
" \n",
" train = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/train.csv')\n",
" dev = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/dev.csv')\n",
" test = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/test.csv')\n",
" \n",
" if balanced:\n",
" # oversample balanced training\n",
" train = pd.concat([train[train.activity == 1].sample(n = len(train[train.activity == 0]), replace=True), train[train.activity == 0]]).sample(frac = 1).reset_index(drop = True)\n",
" \n",
" X_train = train.smiles.values\n",
" y_train = train.activity.values\n",
" X_dev = dev.smiles.values\n",
" y_dev = dev.activity.values\n",
" X_test = test.smiles.values\n",
" y_test = test.activity.values\n",
" \n",
" drug_encoding = 'Daylight'\n",
" train = data_process(X_drug = X_train, y = y_train, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" val = data_process(X_drug = X_dev, y = y_dev, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" test = data_process(X_drug = X_test, y = y_test, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
" \n",
" config = generate_config(drug_encoding = drug_encoding, \n",
" cls_hidden_dims = [512], \n",
" train_epoch = 10, \n",
" LR = 0.0001, \n",
" batch_size = 256\n",
" )\n",
" \n",
" model = models.model_initialize(**config)\n",
" model.train(train, val, test)\n",
" \n",
" scores = model.predict(test)\n",
" \n",
" return roc_auc_score(test.Label.values, scores), average_precision_score(test.Label.values, scores), scores, test.Label.values"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Drug Property Prediction Mode...\n",
"in total: 3330 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69381. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.91983 , AUPRC: 0.77238 , F1: 0.13145\n",
"Training at Epoch 2 iteration 0 with loss 0.62907. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.92667 , AUPRC: 0.76797 , F1: 0.25742\n",
"Training at Epoch 3 iteration 0 with loss 0.53983. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.60334 , AUPRC: 0.52912 , F1: 0.63636\n",
"Training at Epoch 4 iteration 0 with loss 0.34489. Total time 0.00111 hours\n",
"Validation at Epoch 4 , AUROC: 0.58852 , AUPRC: 0.53910 , F1: 0.66666\n",
"Training at Epoch 5 iteration 0 with loss 0.14837. Total time 0.00138 hours\n",
"Validation at Epoch 5 , AUROC: 0.58548 , AUPRC: 0.53976 , F1: 0.66666\n",
"Training at Epoch 6 iteration 0 with loss 0.04432. Total time 0.00166 hours\n",
"Validation at Epoch 6 , AUROC: 0.58510 , AUPRC: 0.53865 , F1: 0.66666\n",
"Training at Epoch 7 iteration 0 with loss 0.02470. Total time 0.00194 hours\n",
"Validation at Epoch 7 , AUROC: 0.57294 , AUPRC: 0.53819 , F1: 0.6\n",
"Training at Epoch 8 iteration 0 with loss 0.02368. Total time 0.0025 hours\n",
"Validation at Epoch 8 , AUROC: 0.57446 , AUPRC: 0.53636 , F1: 0.66666\n",
"Training at Epoch 9 iteration 0 with loss 0.00446. Total time 0.00277 hours\n",
"Validation at Epoch 9 , AUROC: 0.57674 , AUPRC: 0.53570 , F1: 0.66666\n",
"Training at Epoch 10 iteration 0 with loss 0.00529. Total time 0.00305 hours\n",
"Validation at Epoch 10 , AUROC: 0.57446 , AUPRC: 0.53557 , F1: 0.66666\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.6265306122448979 , AUPRC: 0.21935036640918995 , F1: 0.4444444444444445\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3328 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69348. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.68274 , AUPRC: 0.51402 , F1: 0.04395\n",
"Training at Epoch 2 iteration 0 with loss 0.63762. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.63578 , AUPRC: 0.51235 , F1: 0.06779\n",
"Training at Epoch 3 iteration 0 with loss 0.48640. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.76649 , AUPRC: 0.52013 , F1: 0.57142\n",
"Training at Epoch 4 iteration 0 with loss 0.25598. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.77284 , AUPRC: 0.52090 , F1: 0.57142\n",
"Training at Epoch 5 iteration 0 with loss 0.05886. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.80076 , AUPRC: 0.52297 , F1: 0.4\n",
"Training at Epoch 6 iteration 0 with loss 0.02859. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.79822 , AUPRC: 0.43974 , F1: 0.4\n",
"Training at Epoch 7 iteration 0 with loss 0.01332. Total time 0.00194 hours\n",
"Validation at Epoch 7 , AUROC: 0.79314 , AUPRC: 0.43943 , F1: 0.4\n",
"Training at Epoch 8 iteration 0 with loss 0.00868. Total time 0.00222 hours\n",
"Validation at Epoch 8 , AUROC: 0.79314 , AUPRC: 0.34450 , F1: 0.4\n",
"Training at Epoch 9 iteration 0 with loss 0.00764. Total time 0.0025 hours\n",
"Validation at Epoch 9 , AUROC: 0.79314 , AUPRC: 0.43963 , F1: 0.4\n",
"Training at Epoch 10 iteration 0 with loss 0.00544. Total time 0.00277 hours\n",
"Validation at Epoch 10 , AUROC: 0.79441 , AUPRC: 0.43951 , F1: 0.4\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.583966565349544 , AUPRC: 0.5396738488792109 , F1: 0.6666666666666666\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69322. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.70454 , AUPRC: 0.26794 , F1: 0.04137\n",
"Training at Epoch 2 iteration 0 with loss 0.62802. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.66666 , AUPRC: 0.18144 , F1: 0.04878\n",
"Training at Epoch 3 iteration 0 with loss 0.49876. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.65151 , AUPRC: 0.11160 , F1: 0.25\n",
"Training at Epoch 4 iteration 0 with loss 0.34324. Total time 0.00083 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 4 , AUROC: 0.49242 , AUPRC: 0.02380 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.15461. Total time 0.00138 hours\n",
"Validation at Epoch 5 , AUROC: 0.57575 , AUPRC: 0.03256 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.04909. Total time 0.00166 hours\n",
"Validation at Epoch 6 , AUROC: 0.33712 , AUPRC: 0.01852 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.01886. Total time 0.00222 hours\n",
"Validation at Epoch 7 , AUROC: 0.35858 , AUPRC: 0.01904 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.01198. Total time 0.0025 hours\n",
"Validation at Epoch 8 , AUROC: 0.38383 , AUPRC: 0.02014 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.01182. Total time 0.00277 hours\n",
"Validation at Epoch 9 , AUROC: 0.41540 , AUPRC: 0.02163 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00688. Total time 0.00305 hours\n",
"Validation at Epoch 10 , AUROC: 0.34848 , AUPRC: 0.01846 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.7868020304568528 , AUPRC: 0.3706447963800905 , F1: 0.4\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69368. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.98461 , AUPRC: 0.875 , F1: 0.06185\n",
"Training at Epoch 2 iteration 0 with loss 0.64328. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.98974 , AUPRC: 0.86437 , F1: 0.30769\n",
"Training at Epoch 3 iteration 0 with loss 0.48075. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.98119 , AUPRC: 0.84259 , F1: 0.83333\n",
"Training at Epoch 4 iteration 0 with loss 0.30656. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.98717 , AUPRC: 0.85555 , F1: 0.76923\n",
"Training at Epoch 5 iteration 0 with loss 0.14369. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.98119 , AUPRC: 0.84259 , F1: 0.83333\n",
"Training at Epoch 6 iteration 0 with loss 0.04482. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.98888 , AUPRC: 0.88596 , F1: 0.83333\n",
"Training at Epoch 7 iteration 0 with loss 0.01746. Total time 0.00194 hours\n",
"Validation at Epoch 7 , AUROC: 0.99829 , AUPRC: 0.95833 , F1: 0.76923\n",
"Training at Epoch 8 iteration 0 with loss 0.00660. Total time 0.00222 hours\n",
"Validation at Epoch 8 , AUROC: 0.98888 , AUPRC: 0.88596 , F1: 0.83333\n",
"Training at Epoch 9 iteration 0 with loss 0.00702. Total time 0.0025 hours\n",
"Validation at Epoch 9 , AUROC: 0.98888 , AUPRC: 0.88596 , F1: 0.83333\n",
"Training at Epoch 10 iteration 0 with loss 0.00677. Total time 0.00277 hours\n",
"Validation at Epoch 10 , AUROC: 0.99230 , AUPRC: 0.9 , F1: 0.83333\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.44696969696969696 , AUPRC: 0.022651134286456175 , F1: 0.0\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1695\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69304. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.75589 , AUPRC: 0.45138 , F1: 0.03007\n",
"Training at Epoch 2 iteration 0 with loss 0.62729. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.69191 , AUPRC: 0.41299 , F1: 0.05970\n",
"Training at Epoch 3 iteration 0 with loss 0.50961. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.79124 , AUPRC: 0.36782 , F1: 0.25\n",
"Training at Epoch 4 iteration 0 with loss 0.31598. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.67171 , AUPRC: 0.34984 , F1: 0.33333\n",
"Training at Epoch 5 iteration 0 with loss 0.11506. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.73569 , AUPRC: 0.35380 , F1: 0.33333\n",
"Training at Epoch 6 iteration 0 with loss 0.08217. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.63973 , AUPRC: 0.34903 , F1: 0.4\n",
"Training at Epoch 7 iteration 0 with loss 0.04169. Total time 0.00194 hours\n",
"Validation at Epoch 7 , AUROC: 0.61111 , AUPRC: 0.34790 , F1: 0.4\n",
"Training at Epoch 8 iteration 0 with loss 0.01244. Total time 0.00222 hours\n",
"Validation at Epoch 8 , AUROC: 0.59090 , AUPRC: 0.34768 , F1: 0.4\n",
"Training at Epoch 9 iteration 0 with loss 0.00688. Total time 0.0025 hours\n",
"Validation at Epoch 9 , AUROC: 0.59595 , AUPRC: 0.34772 , F1: 0.5\n",
"Training at Epoch 10 iteration 0 with loss 0.02829. Total time 0.00277 hours\n",
"Validation at Epoch 10 , AUROC: 0.59764 , AUPRC: 0.34719 , F1: 0.4\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.935042735042735 , AUPRC: 0.8179012345679013 , F1: 0.8333333333333334\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3154 drugs\n",
"encoding drug...\n",
"unique drugs: 1618\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69370. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.46943 , AUPRC: 0.02372 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.65774. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.45483 , AUPRC: 0.02366 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.50914. Total time 0.00055 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 3 , AUROC: 0.50912 , AUPRC: 0.03072 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.27916. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.53056 , AUPRC: 0.03031 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.10095. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.55611 , AUPRC: 0.03274 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.04745. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.55520 , AUPRC: 0.03252 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.01283. Total time 0.00194 hours\n",
"Validation at Epoch 7 , AUROC: 0.52965 , AUPRC: 0.03138 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00468. Total time 0.00222 hours\n",
"Validation at Epoch 8 , AUROC: 0.52417 , AUPRC: 0.03166 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00505. Total time 0.0025 hours\n",
"Validation at Epoch 9 , AUROC: 0.51505 , AUPRC: 0.03195 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00263. Total time 0.00277 hours\n",
"Validation at Epoch 10 , AUROC: 0.50045 , AUPRC: 0.03182 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.8131313131313131 , AUPRC: 0.41675320179993075 , F1: 0.3333333333333333\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3136 drugs\n",
"encoding drug...\n",
"unique drugs: 1611\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69205. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.69082 , AUPRC: 0.01538 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.63589. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.59903 , AUPRC: 0.01190 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.50196. Total time 0.00055 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 3 , AUROC: 0.55555 , AUPRC: 0.01075 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.26518. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.58454 , AUPRC: 0.01149 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.08297. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.46376 , AUPRC: 0.00892 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.03748. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.42995 , AUPRC: 0.00840 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00888. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.42995 , AUPRC: 0.00840 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.03798. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.42512 , AUPRC: 0.00833 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.03120. Total time 0.0025 hours\n",
"Validation at Epoch 9 , AUROC: 0.39613 , AUPRC: 0.00793 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00565. Total time 0.00277 hours\n",
"Validation at Epoch 10 , AUROC: 0.40096 , AUPRC: 0.008 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.5218978102189781 , AUPRC: 0.02926672776476081 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3290 drugs\n",
"encoding drug...\n",
"unique drugs: 1688\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69342. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.97715 , AUPRC: 0.5375 , F1: 0.07547\n",
"Training at Epoch 2 iteration 0 with loss 0.65051. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.99619 , AUPRC: 0.89285 , F1: 0.09411\n",
"Training at Epoch 3 iteration 0 with loss 0.50371. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.99873 , AUPRC: 0.95 , F1: 0.44444\n",
"Training at Epoch 4 iteration 0 with loss 0.31626. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.99746 , AUPRC: 0.91666 , F1: 0.57142\n",
"Training at Epoch 5 iteration 0 with loss 0.11280. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.98857 , AUPRC: 0.82692 , F1: 0.54545\n",
"Training at Epoch 6 iteration 0 with loss 0.02525. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.96319 , AUPRC: 0.78030 , F1: 0.54545\n",
"Training at Epoch 7 iteration 0 with loss 0.01803. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.87309 , AUPRC: 0.75961 , F1: 0.85714\n",
"Training at Epoch 8 iteration 0 with loss 0.01318. Total time 0.00222 hours\n",
"Validation at Epoch 8 , AUROC: 0.93908 , AUPRC: 0.76923 , F1: 0.66666\n",
"Training at Epoch 9 iteration 0 with loss 0.00440. Total time 0.0025 hours\n",
"Validation at Epoch 9 , AUROC: 0.93654 , AUPRC: 0.76851 , F1: 0.75\n",
"Training at Epoch 10 iteration 0 with loss 0.00192. Total time 0.00277 hours\n",
"Validation at Epoch 10 , AUROC: 0.98984 , AUPRC: 0.83333 , F1: 0.42857\n",
"--- Go for Testing ---\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing AUROC: 0.35748792270531404 , AUPRC: 0.007462686567164179 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3306 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69362. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.91289 , AUPRC: 0.10004 , F1: 0.03726\n",
"Training at Epoch 2 iteration 0 with loss 0.65202. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.94472 , AUPRC: 0.44189 , F1: 0.05084\n",
"Training at Epoch 3 iteration 0 with loss 0.53459. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.69346 , AUPRC: 0.43409 , F1: 0.28571\n",
"Training at Epoch 4 iteration 0 with loss 0.36085. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.66499 , AUPRC: 0.38304 , F1: 0.25\n",
"Training at Epoch 5 iteration 0 with loss 0.13280. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.58123 , AUPRC: 0.34848 , F1: 0.4\n",
"Training at Epoch 6 iteration 0 with loss 0.02704. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.66331 , AUPRC: 0.12213 , F1: 0.28571\n",
"Training at Epoch 7 iteration 0 with loss 0.01284. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.79731 , AUPRC: 0.20299 , F1: 0.33333\n",
"Training at Epoch 8 iteration 0 with loss 0.08347. Total time 0.00222 hours\n",
"Validation at Epoch 8 , AUROC: 0.69514 , AUPRC: 0.20006 , F1: 0.44444\n",
"Training at Epoch 9 iteration 0 with loss 0.11315. Total time 0.0025 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 9 , AUROC: 0.53768 , AUPRC: 0.12375 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00907. Total time 0.00277 hours\n",
"Validation at Epoch 10 , AUROC: 0.54271 , AUPRC: 0.17947 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.8730964467005076 , AUPRC: 0.7596153846153846 , F1: 0.8571428571428571\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69273. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.62551 , AUPRC: 0.25265 , F1: 0.05555\n",
"Training at Epoch 2 iteration 0 with loss 0.62840. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.47244 , AUPRC: 0.41348 , F1: 0.05479\n",
"Training at Epoch 3 iteration 0 with loss 0.45003. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.59897 , AUPRC: 0.35145 , F1: 0.30769\n",
"Training at Epoch 4 iteration 0 with loss 0.33936. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.60102 , AUPRC: 0.35146 , F1: 0.40000\n",
"Training at Epoch 5 iteration 0 with loss 0.13585. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.64183 , AUPRC: 0.35360 , F1: 0.44444\n",
"Training at Epoch 6 iteration 0 with loss 0.04658. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.64387 , AUPRC: 0.35368 , F1: 0.5\n",
"Training at Epoch 7 iteration 0 with loss 0.01878. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.62755 , AUPRC: 0.35283 , F1: 0.5\n",
"Training at Epoch 8 iteration 0 with loss 0.00414. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.64183 , AUPRC: 0.25350 , F1: 0.28571\n",
"Training at Epoch 9 iteration 0 with loss 0.00623. Total time 0.0025 hours\n",
"Validation at Epoch 9 , AUROC: 0.56632 , AUPRC: 0.34991 , F1: 0.44444\n",
"Training at Epoch 10 iteration 0 with loss 0.00576. Total time 0.00277 hours\n",
"Validation at Epoch 10 , AUROC: 0.63367 , AUPRC: 0.25311 , F1: 0.28571\n",
"--- Go for Testing ---\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing AUROC: 0.6566164154103852 , AUPRC: 0.3634891722323416 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"ROC-Mean 0.6686\n",
"ROC-STD 0.1728\n",
"PRC-Mean 0.3845\n",
"PRC-STD 0.2901\n"
]
},
{
"data": {
"image/png": "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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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/cILL+i+ffvqL774QqelpekbbrhB9+jRQ/fr10/v3r1ba631kiVLdK9evXRCQoIePHiwPnr0aI1+pzabTTdt2lSbzWattdY//fSTvv766ytdpkmTJrqoqKjCvEceeUTPmTPH8fMtt9yiN23aVKGds78nYIu+wH61Ln1VXgJMUUrNB3oDudpN1xeEqE+in/mfW9ab8dpNLrWPiYnBZrNx/PhxIiIiWLlyJYGBgaSmpjJ+/Hi2bNnCn/70J9566y1GjhxJbm4uP/30E59++inr1693us5HH32URx99lNFjruP9994uN++3334jOTmZVq1a0bdvXzZs2MAjjzzCrFmzWLNmDc2aNauwvg0bNjB+/HjHz6+88gpNmjTBarUyePBgfv/9d6688krAuL+/tF+DBw/mgw8+IDY2lk2bNvHQQw+xevVq+vXrx8aNG1FK8eGHH/L666/z5ptvltvm3r17uf32251+vrVr1xIWFub4OTs7m7CwMHx9jV1vZGSk40jgQhYsWED37t0JCAgoNz0nJ4dvvvmGRx991DEtMTGRH3/8kV69el10nZXxWGFQSn0BDACaKaUygRmAH4DW+gNgKXAjxvNiC4BaOB4SQtQmbX8UsNlsZsqUKWzbtg2TyURKinGzwLXXXsvDDz/M8ePHSUpKYsyYMY6doDM///wzixYtwmrL4dZbb2T69FmOeb169SIyMhKAhIQEMjIy6Nev30X7l5WVRXj4ucDQL7/8kjlz5mCxWMjKymLXrl2OwlC6M8/Ly+Onn37i1ltvdSxXXFwMGONJbr/9drKysigpKXE6FqBjx45s27btov0qVfr7K+tidw0lJyfz9NNP891335WbbrFYGD9+PI888ki502YRERHs2bOnSn25GE/elTS+kvkaeNhD3RGi3nD1m7277N+/H5PJREREBC+88ALNmzdn+/bt2Gw2AgMDHe3uvPNOPv/8c+bPn89HH31U7e2V/YZsMpmwWCyVLhMUFOS4Zz89PZ033niDX375hcaNG3P33XeXu58/JCQEAJvNRlhYmNOd+9SpU3niiScYMWIEa9eu5fnnn6/QxpUjhmbNmpGTk4PFYsHX15fMzExatWrldNnMzExGjRrFv//9b9q3b19u3qRJk4iNjeWxxx4rN72oqIigoJrf1SVZSUKISp3MPsmUqQ8xZcoUlFLk5ubSsmVLfHx8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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": [
"roc_ = []\n",
"prc_ = []\n",
"scores_ = []\n",
"labels_ = []\n",
"\n",
"drug_encoding = 'Daylight'\n",
"\n",
"for i in range(10):\n",
" roc, prc, scores, labels = eval('run_' + drug_encoding + '(i, True)')\n",
" roc_.append(roc)\n",
" prc_.append(prc)\n",
" scores_.append(scores)\n",
" labels_.append(labels)\n",
" \n",
"print('ROC-Mean {:.4f}'.format(np.mean(np.array(roc_))))\n",
"print('ROC-STD {:.4f}'.format(np.std(np.array(roc_))))\n",
"print('PRC-Mean {:.4f}'.format(np.mean(np.array(prc_))))\n",
"print('PRC-STD {:.4f}'.format(np.std(np.array(prc_))))\n",
"\n",
"with open('./scores_aicures/' + drug_encoding + '_score.pkl', 'wb') as f:\n",
" pickle.dump(scores_, f, pickle.HIGHEST_PROTOCOL)\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"def run_MPNN(fold_n, balanced):\n",
" \n",
" train = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/train.csv')\n",
" dev = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/dev.csv')\n",
" test = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/test.csv')\n",
" \n",
" if balanced:\n",
" # oversample balanced training\n",
" train = pd.concat([train[train.activity == 1].sample(n = len(train[train.activity == 0]), replace=True), train[train.activity == 0]]).sample(frac = 1).reset_index(drop = True)\n",
" \n",
" X_train = train.smiles.values\n",
" y_train = train.activity.values\n",
" X_dev = dev.smiles.values\n",
" y_dev = dev.activity.values\n",
" X_test = test.smiles.values\n",
" y_test = test.activity.values\n",
" \n",
" drug_encoding = 'MPNN'\n",
" train = data_process(X_drug = X_train, y = y_train, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" val = data_process(X_drug = X_dev, y = y_dev, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" test = data_process(X_drug = X_test, y = y_test, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
" \n",
" config = generate_config(drug_encoding = drug_encoding, \n",
" cls_hidden_dims = [512], \n",
" train_epoch = 10, \n",
" LR = 0.001, \n",
" batch_size = 128,\n",
" hidden_dim_drug = 128,\n",
" mpnn_hidden_size = 128,\n",
" mpnn_depth = 3 \n",
" )\n",
" \n",
" model = models.model_initialize(**config)\n",
" model.train(train, val, test)\n",
" \n",
" scores = model.predict(test)\n",
" \n",
" return roc_auc_score(test.Label.values, scores), average_precision_score(test.Label.values, scores), scores, test.Label.values"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Drug Property Prediction Mode...\n",
"in total: 3330 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69434. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.91945 , AUPRC: 0.61072 , F1: 0.32911\n",
"Training at Epoch 2 iteration 0 with loss 0.54761. Total time 0.00111 hours\n",
"Validation at Epoch 2 , AUROC: 0.91223 , AUPRC: 0.59061 , F1: 0.37142\n",
"Training at Epoch 3 iteration 0 with loss 0.51494. Total time 0.0025 hours\n",
"Validation at Epoch 3 , AUROC: 0.91489 , AUPRC: 0.65289 , F1: 0.25742\n",
"Training at Epoch 4 iteration 0 with loss 0.43763. Total time 0.00416 hours\n",
"Validation at Epoch 4 , AUROC: 0.93503 , AUPRC: 0.69500 , F1: 0.24528\n",
"Training at Epoch 5 iteration 0 with loss 0.39570. Total time 0.00555 hours\n",
"Validation at Epoch 5 , AUROC: 0.95288 , AUPRC: 0.76434 , F1: 0.36619\n",
"Training at Epoch 6 iteration 0 with loss 0.34092. Total time 0.00694 hours\n",
"Validation at Epoch 6 , AUROC: 0.93579 , AUPRC: 0.62513 , F1: 0.42622\n",
"Training at Epoch 7 iteration 0 with loss 0.33410. Total time 0.00833 hours\n",
"Validation at Epoch 7 , AUROC: 0.94110 , AUPRC: 0.69196 , F1: 0.37142\n",
"Training at Epoch 8 iteration 0 with loss 0.33405. Total time 0.00972 hours\n",
"Validation at Epoch 8 , AUROC: 0.94566 , AUPRC: 0.70560 , F1: 0.45614\n",
"Training at Epoch 9 iteration 0 with loss 0.24336. Total time 0.01111 hours\n",
"Validation at Epoch 9 , AUROC: 0.93844 , AUPRC: 0.68046 , F1: 0.36111\n",
"Training at Epoch 10 iteration 0 with loss 0.26062. Total time 0.0125 hours\n",
"Validation at Epoch 10 , AUROC: 0.93161 , AUPRC: 0.61205 , F1: 0.50000\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.42142857142857154 , AUPRC: 0.09625414888572784 , F1: 0.06451612903225806\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3328 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69344. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.85532 , AUPRC: 0.11996 , F1: 0.07228\n",
"Training at Epoch 2 iteration 0 with loss 0.57514. Total time 0.00138 hours\n",
"Validation at Epoch 2 , AUROC: 0.85913 , AUPRC: 0.15983 , F1: 0.125\n",
"Training at Epoch 3 iteration 0 with loss 0.51352. Total time 0.00277 hours\n",
"Validation at Epoch 3 , AUROC: 0.84644 , AUPRC: 0.20231 , F1: 0.06521\n",
"Training at Epoch 4 iteration 0 with loss 0.61196. Total time 0.00416 hours\n",
"Validation at Epoch 4 , AUROC: 0.76015 , AUPRC: 0.37935 , F1: 0.16216\n",
"Training at Epoch 5 iteration 0 with loss 0.40596. Total time 0.00583 hours\n",
"Validation at Epoch 5 , AUROC: 0.74619 , AUPRC: 0.37902 , F1: 0.13636\n",
"Training at Epoch 6 iteration 0 with loss 0.35024. Total time 0.00722 hours\n",
"Validation at Epoch 6 , AUROC: 0.76903 , AUPRC: 0.39328 , F1: 0.24\n",
"Training at Epoch 7 iteration 0 with loss 0.14080. Total time 0.00861 hours\n",
"Validation at Epoch 7 , AUROC: 0.76776 , AUPRC: 0.43270 , F1: 0.23076\n",
"Training at Epoch 8 iteration 0 with loss 0.21674. Total time 0.01 hours\n",
"Validation at Epoch 8 , AUROC: 0.78426 , AUPRC: 0.69328 , F1: 0.33333\n",
"Training at Epoch 9 iteration 0 with loss 0.13868. Total time 0.01138 hours\n",
"Validation at Epoch 9 , AUROC: 0.76269 , AUPRC: 0.43257 , F1: 0.35294\n",
"Training at Epoch 10 iteration 0 with loss 0.14049. Total time 0.01277 hours\n",
"Validation at Epoch 10 , AUROC: 0.77664 , AUPRC: 0.69308 , F1: 0.19354\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.939969604863222 , AUPRC: 0.6950372579408404 , F1: 0.4727272727272727\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69390. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.59974 , AUPRC: 0.27627 , F1: 0.03252\n",
"Training at Epoch 2 iteration 0 with loss 0.72481. Total time 0.00138 hours\n",
"Validation at Epoch 2 , AUROC: 0.60984 , AUPRC: 0.30000 , F1: 0.23529\n",
"Training at Epoch 3 iteration 0 with loss 0.41505. Total time 0.00277 hours\n",
"Validation at Epoch 3 , AUROC: 0.59974 , AUPRC: 0.29477 , F1: 0.09090\n",
"Training at Epoch 4 iteration 0 with loss 0.36956. Total time 0.00416 hours\n",
"Validation at Epoch 4 , AUROC: 0.63636 , AUPRC: 0.29488 , F1: 0.11111\n",
"Training at Epoch 5 iteration 0 with loss 0.27943. Total time 0.00555 hours\n",
"Validation at Epoch 5 , AUROC: 0.62247 , AUPRC: 0.27756 , F1: 0.16666\n",
"Training at Epoch 6 iteration 0 with loss 0.25663. Total time 0.00722 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 6 , AUROC: 0.56818 , AUPRC: 0.14531 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.37440. Total time 0.00861 hours\n",
"Validation at Epoch 7 , AUROC: 0.55681 , AUPRC: 0.14608 , F1: 0.22222\n",
"Training at Epoch 8 iteration 0 with loss 0.22712. Total time 0.01 hours\n",
"Validation at Epoch 8 , AUROC: 0.57449 , AUPRC: 0.10264 , F1: 0.13333\n",
"Training at Epoch 9 iteration 0 with loss 0.16511. Total time 0.01138 hours\n",
"Validation at Epoch 9 , AUROC: 0.56565 , AUPRC: 0.03867 , F1: 0.1\n",
"Training at Epoch 10 iteration 0 with loss 0.07268. Total time 0.01277 hours\n",
"Validation at Epoch 10 , AUROC: 0.58333 , AUPRC: 0.04784 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.75 , AUPRC: 0.11914991942364205 , F1: 0.15384615384615385\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.68868. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.87264 , AUPRC: 0.15922 , F1: 0.12631\n",
"Training at Epoch 2 iteration 0 with loss 0.62363. Total time 0.00138 hours\n",
"Validation at Epoch 2 , AUROC: 0.92051 , AUPRC: 0.22712 , F1: 0.27586\n",
"Training at Epoch 3 iteration 0 with loss 0.54002. Total time 0.00277 hours\n",
"Validation at Epoch 3 , AUROC: 0.92222 , AUPRC: 0.23356 , F1: 0.27586\n",
"Training at Epoch 4 iteration 0 with loss 0.43047. Total time 0.00444 hours\n",
"Validation at Epoch 4 , AUROC: 0.91538 , AUPRC: 0.28541 , F1: 0.25\n",
"Training at Epoch 5 iteration 0 with loss 0.28322. Total time 0.00583 hours\n",
"Validation at Epoch 5 , AUROC: 0.84871 , AUPRC: 0.28705 , F1: 0.29629\n",
"Training at Epoch 6 iteration 0 with loss 0.34077. Total time 0.00722 hours\n",
"Validation at Epoch 6 , AUROC: 0.87692 , AUPRC: 0.37099 , F1: 0.18181\n",
"Training at Epoch 7 iteration 0 with loss 0.28128. Total time 0.00861 hours\n",
"Validation at Epoch 7 , AUROC: 0.85897 , AUPRC: 0.32261 , F1: 0.24242\n",
"Training at Epoch 8 iteration 0 with loss 0.17587. Total time 0.01 hours\n",
"Validation at Epoch 8 , AUROC: 0.89914 , AUPRC: 0.34882 , F1: 0.25806\n",
"Training at Epoch 9 iteration 0 with loss 0.14857. Total time 0.01166 hours\n",
"Validation at Epoch 9 , AUROC: 0.89743 , AUPRC: 0.40638 , F1: 0.53333\n",
"Training at Epoch 10 iteration 0 with loss 0.16170. Total time 0.01333 hours\n",
"Validation at Epoch 10 , AUROC: 0.91025 , AUPRC: 0.45328 , F1: 0.25\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.601010101010101 , AUPRC: 0.28554180009893515 , F1: 0.11764705882352941\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1695\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69313. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.89225 , AUPRC: 0.09166 , F1: 0.05825\n",
"Training at Epoch 2 iteration 0 with loss 0.57902. Total time 0.00138 hours\n",
"Validation at Epoch 2 , AUROC: 0.89562 , AUPRC: 0.14183 , F1: 0.21052\n",
"Training at Epoch 3 iteration 0 with loss 0.53319. Total time 0.00277 hours\n",
"Validation at Epoch 3 , AUROC: 0.64814 , AUPRC: 0.14391 , F1: 0.13333\n",
"Training at Epoch 4 iteration 0 with loss 0.37514. Total time 0.00416 hours\n",
"Validation at Epoch 4 , AUROC: 0.65151 , AUPRC: 0.16240 , F1: 0.08695\n",
"Training at Epoch 5 iteration 0 with loss 0.48214. Total time 0.00555 hours\n",
"Validation at Epoch 5 , AUROC: 0.65824 , AUPRC: 0.17174 , F1: 0.14285\n",
"Training at Epoch 6 iteration 0 with loss 0.31506. Total time 0.00722 hours\n",
"Validation at Epoch 6 , AUROC: 0.68350 , AUPRC: 0.19990 , F1: 0.23529\n",
"Training at Epoch 7 iteration 0 with loss 0.28437. Total time 0.00861 hours\n",
"Validation at Epoch 7 , AUROC: 0.72390 , AUPRC: 0.42287 , F1: 0.30769\n",
"Training at Epoch 8 iteration 0 with loss 0.20515. Total time 0.01 hours\n",
"Validation at Epoch 8 , AUROC: 0.68686 , AUPRC: 0.42213 , F1: 0.26666\n",
"Training at Epoch 9 iteration 0 with loss 0.14453. Total time 0.01138 hours\n",
"Validation at Epoch 9 , AUROC: 0.71548 , AUPRC: 0.45039 , F1: 0.26666\n",
"Training at Epoch 10 iteration 0 with loss 0.12410. Total time 0.01277 hours\n",
"Validation at Epoch 10 , AUROC: 0.68181 , AUPRC: 0.47195 , F1: 0.4\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.935042735042735 , AUPRC: 0.2729700854700855 , F1: 0.25806451612903225\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3154 drugs\n",
"encoding drug...\n",
"unique drugs: 1618\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69724. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.35857 , AUPRC: 0.01464 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.46340. Total time 0.00111 hours\n",
"Validation at Epoch 2 , AUROC: 0.37773 , AUPRC: 0.01554 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.41239. Total time 0.0025 hours\n",
"Validation at Epoch 3 , AUROC: 0.48266 , AUPRC: 0.01888 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.36941. Total time 0.00416 hours\n",
"Validation at Epoch 4 , AUROC: 0.57299 , AUPRC: 0.02779 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.35509. Total time 0.00555 hours\n",
"Validation at Epoch 5 , AUROC: 0.52189 , AUPRC: 0.03541 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.30111. Total time 0.00694 hours\n",
"Validation at Epoch 6 , AUROC: 0.48722 , AUPRC: 0.03108 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.45934. Total time 0.00833 hours\n",
"Validation at Epoch 7 , AUROC: 0.44890 , AUPRC: 0.03374 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.20034. Total time 0.00972 hours\n",
"Validation at Epoch 8 , AUROC: 0.43613 , AUPRC: 0.04639 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.24827. Total time 0.01138 hours\n",
"Validation at Epoch 9 , AUROC: 0.39781 , AUPRC: 0.03504 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.19687. Total time 0.01277 hours\n",
"Validation at Epoch 10 , AUROC: 0.40510 , AUPRC: 0.03294 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.6548821548821548 , AUPRC: 0.15507614213197968 , F1: 0.21052631578947367\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3136 drugs\n",
"encoding drug...\n",
"unique drugs: 1611\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69209. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.45410 , AUPRC: 0.00877 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.55380. Total time 0.00111 hours\n",
"Validation at Epoch 2 , AUROC: 0.30434 , AUPRC: 0.00689 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.40802. Total time 0.0025 hours\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 3 , AUROC: 0.22222 , AUPRC: 0.00617 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.54161. Total time 0.00388 hours\n",
"Validation at Epoch 4 , AUROC: 0.06280 , AUPRC: 0.00512 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.38637. Total time 0.00527 hours\n",
"Validation at Epoch 5 , AUROC: 0.07729 , AUPRC: 0.00520 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.34252. Total time 0.00694 hours\n",
"Validation at Epoch 6 , AUROC: 0.04347 , AUPRC: 0.00502 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.22412. Total time 0.00833 hours\n",
"Validation at Epoch 7 , AUROC: 0.04347 , AUPRC: 0.00502 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.32370. Total time 0.00972 hours\n",
"Validation at Epoch 8 , AUROC: 0.04347 , AUPRC: 0.00502 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.19907. Total time 0.01111 hours\n",
"Validation at Epoch 9 , AUROC: 0.03381 , AUPRC: 0.00497 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.18580. Total time 0.0125 hours\n",
"Validation at Epoch 10 , AUROC: 0.04347 , AUPRC: 0.00502 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.3531021897810219 , AUPRC: 0.015187033044175902 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3290 drugs\n",
"encoding drug...\n",
"unique drugs: 1688\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69258. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.83756 , AUPRC: 0.08218 , F1: 0.09523\n",
"Training at Epoch 2 iteration 0 with loss 0.52603. Total time 0.00138 hours\n",
"Validation at Epoch 2 , AUROC: 0.90989 , AUPRC: 0.20891 , F1: 0.16326\n",
"Training at Epoch 3 iteration 0 with loss 0.45450. Total time 0.00277 hours\n",
"Validation at Epoch 3 , AUROC: 0.97208 , AUPRC: 0.47294 , F1: 0.12121\n",
"Training at Epoch 4 iteration 0 with loss 0.48936. Total time 0.00416 hours\n",
"Validation at Epoch 4 , AUROC: 0.97081 , AUPRC: 0.4 , F1: 0.25\n",
"Training at Epoch 5 iteration 0 with loss 0.34387. Total time 0.00583 hours\n",
"Validation at Epoch 5 , AUROC: 0.97588 , AUPRC: 0.45555 , F1: 0.3\n",
"Training at Epoch 6 iteration 0 with loss 0.27567. Total time 0.00722 hours\n",
"Validation at Epoch 6 , AUROC: 0.97969 , AUPRC: 0.46666 , F1: 0.13559\n",
"Training at Epoch 7 iteration 0 with loss 0.36757. Total time 0.00861 hours\n",
"Validation at Epoch 7 , AUROC: 0.97588 , AUPRC: 0.45555 , F1: 0.15384\n",
"Training at Epoch 8 iteration 0 with loss 0.24119. Total time 0.01 hours\n",
"Validation at Epoch 8 , AUROC: 0.98096 , AUPRC: 0.50833 , F1: 0.32\n",
"Training at Epoch 9 iteration 0 with loss 0.17566. Total time 0.01138 hours\n",
"Validation at Epoch 9 , AUROC: 0.97842 , AUPRC: 0.4625 , F1: 0.33333\n",
"Training at Epoch 10 iteration 0 with loss 0.09582. Total time 0.01305 hours\n",
"Validation at Epoch 10 , AUROC: 0.98223 , AUPRC: 0.66666 , F1: 0.28571\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.0531400966183575 , AUPRC: 0.005076142131979695 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3306 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69292. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.88609 , AUPRC: 0.18361 , F1: 0.04958\n",
"Training at Epoch 2 iteration 0 with loss 0.62105. Total time 0.00111 hours\n",
"Validation at Epoch 2 , AUROC: 0.94304 , AUPRC: 0.33030 , F1: 0.26666\n",
"Training at Epoch 3 iteration 0 with loss 0.52915. Total time 0.00277 hours\n",
"Validation at Epoch 3 , AUROC: 0.96147 , AUPRC: 0.27222 , F1: 0.25\n",
"Training at Epoch 4 iteration 0 with loss 0.52039. Total time 0.00416 hours\n",
"Validation at Epoch 4 , AUROC: 0.96984 , AUPRC: 0.34027 , F1: 0.09375\n",
"Training at Epoch 5 iteration 0 with loss 0.43030. Total time 0.00555 hours\n",
"Validation at Epoch 5 , AUROC: 0.97822 , AUPRC: 0.32222 , F1: 0.17647\n",
"Training at Epoch 6 iteration 0 with loss 0.29713. Total time 0.00694 hours\n",
"Validation at Epoch 6 , AUROC: 0.97822 , AUPRC: 0.30357 , F1: 0.1875\n",
"Training at Epoch 7 iteration 0 with loss 0.22596. Total time 0.00833 hours\n",
"Validation at Epoch 7 , AUROC: 0.98324 , AUPRC: 0.35952 , F1: 0.4\n",
"Training at Epoch 8 iteration 0 with loss 0.13400. Total time 0.01 hours\n",
"Validation at Epoch 8 , AUROC: 0.97989 , AUPRC: 0.32777 , F1: 0.42857\n",
"Training at Epoch 9 iteration 0 with loss 0.12166. Total time 0.01138 hours\n",
"Validation at Epoch 9 , AUROC: 0.97654 , AUPRC: 0.29444 , F1: 0.28571\n",
"Training at Epoch 10 iteration 0 with loss 0.22445. Total time 0.01277 hours\n",
"Validation at Epoch 10 , AUROC: 0.97654 , AUPRC: 0.29444 , F1: 0.27272\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.9758883248730965 , AUPRC: 0.4338235294117647 , F1: 0.33333333333333337\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69299. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.42959 , AUPRC: 0.09962 , F1: 0.05194\n",
"Training at Epoch 2 iteration 0 with loss 0.54614. Total time 0.00111 hours\n",
"Validation at Epoch 2 , AUROC: 0.42040 , AUPRC: 0.07284 , F1: 0.14285\n",
"Training at Epoch 3 iteration 0 with loss 0.50029. Total time 0.0025 hours\n",
"Validation at Epoch 3 , AUROC: 0.43775 , AUPRC: 0.11045 , F1: 0.19047\n",
"Training at Epoch 4 iteration 0 with loss 0.39908. Total time 0.00416 hours\n",
"Validation at Epoch 4 , AUROC: 0.46530 , AUPRC: 0.14440 , F1: 0.19047\n",
"Training at Epoch 5 iteration 0 with loss 0.38328. Total time 0.00555 hours\n",
"Validation at Epoch 5 , AUROC: 0.49693 , AUPRC: 0.25437 , F1: 0.11428\n",
"Training at Epoch 6 iteration 0 with loss 0.32255. Total time 0.00694 hours\n",
"Validation at Epoch 6 , AUROC: 0.52040 , AUPRC: 0.27214 , F1: 0.09756\n",
"Training at Epoch 7 iteration 0 with loss 0.17924. Total time 0.00861 hours\n",
"Validation at Epoch 7 , AUROC: 0.57551 , AUPRC: 0.41699 , F1: 0.28571\n",
"Training at Epoch 8 iteration 0 with loss 0.25024. Total time 0.01 hours\n",
"Validation at Epoch 8 , AUROC: 0.55816 , AUPRC: 0.41621 , F1: 0.25000\n",
"Training at Epoch 9 iteration 0 with loss 0.17846. Total time 0.01138 hours\n",
"Validation at Epoch 9 , AUROC: 0.54591 , AUPRC: 0.41570 , F1: 0.23529\n",
"Training at Epoch 10 iteration 0 with loss 0.12942. Total time 0.01277 hours\n",
"Validation at Epoch 10 , AUROC: 0.53469 , AUPRC: 0.34864 , F1: 0.44444\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.9849246231155778 , AUPRC: 0.5777777777777777 , F1: 0.4\n",
"--- Training Finished ---\n",
"predicting...\n",
"ROC-Mean 0.6669\n",
"ROC-STD 0.2983\n",
"PRC-Mean 0.2656\n",
"PRC-STD 0.2244\n"
]
},
{
"data": {
"image/png": "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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"
},
{
"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": [
"roc_ = []\n",
"prc_ = []\n",
"scores_ = []\n",
"labels_ = []\n",
"\n",
"drug_encoding = 'MPNN'\n",
"\n",
"for i in range(10):\n",
" roc, prc, scores, labels = eval('run_' + drug_encoding + '(i, True)')\n",
" roc_.append(roc)\n",
" prc_.append(prc)\n",
" scores_.append(scores)\n",
" labels_.append(labels)\n",
" \n",
"print('ROC-Mean {:.4f}'.format(np.mean(np.array(roc_))))\n",
"print('ROC-STD {:.4f}'.format(np.std(np.array(roc_))))\n",
"print('PRC-Mean {:.4f}'.format(np.mean(np.array(prc_))))\n",
"print('PRC-STD {:.4f}'.format(np.std(np.array(prc_))))\n",
"\n",
"with open('./scores_aicures/' + drug_encoding + '_score.pkl', 'wb') as f:\n",
" pickle.dump(scores_, f, pickle.HIGHEST_PROTOCOL)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def run_CNN(fold_n, balanced):\n",
" \n",
" train = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/train.csv')\n",
" dev = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/dev.csv')\n",
" test = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/test.csv')\n",
" \n",
" if balanced:\n",
" # oversample balanced training\n",
" train = pd.concat([train[train.activity == 1].sample(n = len(train[train.activity == 0]), replace=True), train[train.activity == 0]]).sample(frac = 1).reset_index(drop = True)\n",
" \n",
" X_train = train.smiles.values\n",
" y_train = train.activity.values\n",
" X_dev = dev.smiles.values\n",
" y_dev = dev.activity.values\n",
" X_test = test.smiles.values\n",
" y_test = test.activity.values\n",
" \n",
" drug_encoding = 'CNN'\n",
" train = data_process(X_drug = X_train, y = y_train, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" val = data_process(X_drug = X_dev, y = y_dev, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" test = data_process(X_drug = X_test, y = y_test, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
" \n",
" config = generate_config(drug_encoding = drug_encoding, \n",
" cls_hidden_dims = [512], \n",
" train_epoch = 20, \n",
" LR = 0.001, \n",
" batch_size = 128,\n",
" cnn_drug_filters = [32,64,96],\n",
" cnn_drug_kernels = [4,6,8], \n",
" )\n",
" \n",
" model = models.model_initialize(**config)\n",
" model.train(train, val, test)\n",
" \n",
" scores = model.predict(test)\n",
" \n",
" return roc_auc_score(test.Label.values, scores), average_precision_score(test.Label.values, scores), scores, test.Label.values"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Drug Property Prediction Mode...\n",
"in total: 3330 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69348. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.90083 , AUPRC: 0.60123 , F1: 0.18543\n",
"Training at Epoch 2 iteration 0 with loss 0.52085. Total time 0.00277 hours\n",
"Validation at Epoch 2 , AUROC: 0.90463 , AUPRC: 0.62180 , F1: 0.48275\n",
"Training at Epoch 3 iteration 0 with loss 0.11119. Total time 0.00527 hours\n",
"Validation at Epoch 3 , AUROC: 0.93579 , AUPRC: 0.69023 , F1: 0.66666\n",
"Training at Epoch 4 iteration 0 with loss 0.01215. Total time 0.00805 hours\n",
"Validation at Epoch 4 , AUROC: 0.93882 , AUPRC: 0.71928 , F1: 0.66666\n",
"Training at Epoch 5 iteration 0 with loss 0.00060. Total time 0.01083 hours\n",
"Validation at Epoch 5 , AUROC: 0.93503 , AUPRC: 0.71527 , F1: 0.66666\n",
"Training at Epoch 6 iteration 0 with loss 0.00073. Total time 0.01388 hours\n",
"Validation at Epoch 6 , AUROC: 0.93693 , AUPRC: 0.73315 , F1: 0.66666\n",
"Training at Epoch 7 iteration 0 with loss 0.00037. Total time 0.01638 hours\n",
"Validation at Epoch 7 , AUROC: 0.93503 , AUPRC: 0.73182 , F1: 0.66666\n",
"Training at Epoch 8 iteration 0 with loss 0.00031. Total time 0.01916 hours\n",
"Validation at Epoch 8 , AUROC: 0.93693 , AUPRC: 0.74343 , F1: 0.66666\n",
"Training at Epoch 9 iteration 0 with loss 9.57279. Total time 0.02222 hours\n",
"Validation at Epoch 9 , AUROC: 0.93806 , AUPRC: 0.74661 , F1: 0.66666\n",
"Training at Epoch 10 iteration 0 with loss 9.95806. Total time 0.02472 hours\n",
"Validation at Epoch 10 , AUROC: 0.93351 , AUPRC: 0.74259 , F1: 0.66666\n",
"Training at Epoch 11 iteration 0 with loss 0.00047. Total time 0.0275 hours\n",
"Validation at Epoch 11 , AUROC: 0.93844 , AUPRC: 0.74799 , F1: 0.66666\n",
"Training at Epoch 12 iteration 0 with loss 0.00085. Total time 0.03 hours\n",
"Validation at Epoch 12 , AUROC: 0.93655 , AUPRC: 0.74463 , F1: 0.66666\n",
"Training at Epoch 13 iteration 0 with loss 6.15718. Total time 0.03277 hours\n",
"Validation at Epoch 13 , AUROC: 0.93731 , AUPRC: 0.74613 , F1: 0.66666\n",
"Training at Epoch 14 iteration 0 with loss 9.84406. Total time 0.03555 hours\n",
"Validation at Epoch 14 , AUROC: 0.93806 , AUPRC: 0.74791 , F1: 0.66666\n",
"Training at Epoch 15 iteration 0 with loss 5.08245. Total time 0.03805 hours\n",
"Validation at Epoch 15 , AUROC: 0.93731 , AUPRC: 0.74775 , F1: 0.66666\n",
"Training at Epoch 16 iteration 0 with loss 3.71784. Total time 0.04055 hours\n",
"Validation at Epoch 16 , AUROC: 0.93731 , AUPRC: 0.74775 , F1: 0.66666\n",
"Training at Epoch 17 iteration 0 with loss 3.96076. Total time 0.04305 hours\n",
"Validation at Epoch 17 , AUROC: 0.93731 , AUPRC: 0.74775 , F1: 0.66666\n",
"Training at Epoch 18 iteration 0 with loss 1.89920. Total time 0.04583 hours\n",
"Validation at Epoch 18 , AUROC: 0.93617 , AUPRC: 0.74752 , F1: 0.66666\n",
"Training at Epoch 19 iteration 0 with loss 2.47941. Total time 0.04833 hours\n",
"Validation at Epoch 19 , AUROC: 0.93731 , AUPRC: 0.74873 , F1: 0.66666\n",
"Training at Epoch 20 iteration 0 with loss 1.66260. Total time 0.05083 hours\n",
"Validation at Epoch 20 , AUROC: 0.93731 , AUPRC: 0.74873 , F1: 0.66666\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.8183673469387756 , AUPRC: 0.5343213572854292 , F1: 0.5714285714285715\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3328 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69352. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.88832 , AUPRC: 0.56988 , F1: 0.08955\n",
"Training at Epoch 2 iteration 0 with loss 0.50827. Total time 0.0025 hours\n",
"Validation at Epoch 2 , AUROC: 0.85152 , AUPRC: 0.56670 , F1: 0.57142\n",
"Training at Epoch 3 iteration 0 with loss 0.02585. Total time 0.00527 hours\n",
"Validation at Epoch 3 , AUROC: 0.84263 , AUPRC: 0.58326 , F1: 0.66666\n",
"Training at Epoch 4 iteration 0 with loss 0.00550. Total time 0.00777 hours\n",
"Validation at Epoch 4 , AUROC: 0.85659 , AUPRC: 0.59234 , F1: 0.42857\n",
"Training at Epoch 5 iteration 0 with loss 0.04692. Total time 0.01027 hours\n",
"Validation at Epoch 5 , AUROC: 0.83883 , AUPRC: 0.59133 , F1: 0.66666\n",
"Training at Epoch 6 iteration 0 with loss 0.02298. Total time 0.01277 hours\n",
"Validation at Epoch 6 , AUROC: 0.83248 , AUPRC: 0.60138 , F1: 0.66666\n",
"Training at Epoch 7 iteration 0 with loss 0.00024. Total time 0.01555 hours\n",
"Validation at Epoch 7 , AUROC: 0.82360 , AUPRC: 0.60099 , F1: 0.4\n",
"Training at Epoch 8 iteration 0 with loss 0.00381. Total time 0.01805 hours\n",
"Validation at Epoch 8 , AUROC: 0.83883 , AUPRC: 0.60168 , F1: 0.66666\n",
"Training at Epoch 9 iteration 0 with loss 0.00020. Total time 0.02055 hours\n",
"Validation at Epoch 9 , AUROC: 0.82360 , AUPRC: 0.63214 , F1: 0.66666\n",
"Training at Epoch 10 iteration 0 with loss 0.00405. Total time 0.02305 hours\n",
"Validation at Epoch 10 , AUROC: 0.81852 , AUPRC: 0.61413 , F1: 0.66666\n",
"Training at Epoch 11 iteration 0 with loss 0.00028. Total time 0.02583 hours\n",
"Validation at Epoch 11 , AUROC: 0.83121 , AUPRC: 0.61466 , F1: 0.66666\n",
"Training at Epoch 12 iteration 0 with loss 0.00026. Total time 0.02833 hours\n",
"Validation at Epoch 12 , AUROC: 0.80964 , AUPRC: 0.61380 , F1: 0.66666\n",
"Training at Epoch 13 iteration 0 with loss 0.00041. Total time 0.03083 hours\n",
"Validation at Epoch 13 , AUROC: 0.81979 , AUPRC: 0.61418 , F1: 0.66666\n",
"Training at Epoch 14 iteration 0 with loss 0.00011. Total time 0.03333 hours\n",
"Validation at Epoch 14 , AUROC: 0.81979 , AUPRC: 0.61418 , F1: 0.66666\n",
"Training at Epoch 15 iteration 0 with loss 9.83271. Total time 0.03611 hours\n",
"Validation at Epoch 15 , AUROC: 0.81979 , AUPRC: 0.61418 , F1: 0.66666\n",
"Training at Epoch 16 iteration 0 with loss 8.20248. Total time 0.03861 hours\n",
"Validation at Epoch 16 , AUROC: 0.82106 , AUPRC: 0.61423 , F1: 0.66666\n",
"Training at Epoch 17 iteration 0 with loss 6.47498. Total time 0.04111 hours\n",
"Validation at Epoch 17 , AUROC: 0.81979 , AUPRC: 0.61418 , F1: 0.66666\n",
"Training at Epoch 18 iteration 0 with loss 5.08708. Total time 0.04361 hours\n",
"Validation at Epoch 18 , AUROC: 0.81979 , AUPRC: 0.61418 , F1: 0.66666\n",
"Training at Epoch 19 iteration 0 with loss 3.30488. Total time 0.04611 hours\n",
"Validation at Epoch 19 , AUROC: 0.81979 , AUPRC: 0.61418 , F1: 0.66666\n",
"Training at Epoch 20 iteration 0 with loss 3.24277. Total time 0.04888 hours\n",
"Validation at Epoch 20 , AUROC: 0.81979 , AUPRC: 0.61418 , F1: 0.66666\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.9224924012158056 , AUPRC: 0.8070304867147555 , F1: 0.6666666666666666\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69337. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.37752 , AUPRC: 0.02386 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.41907. Total time 0.0025 hours\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 2 , AUROC: 0.59974 , AUPRC: 0.09083 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.04386. Total time 0.00527 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 3 , AUROC: 0.60101 , AUPRC: 0.07160 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.02601. Total time 0.00805 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 4 , AUROC: 0.56439 , AUPRC: 0.14863 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.00102. Total time 0.01055 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 5 , AUROC: 0.59595 , AUPRC: 0.09147 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.00090. Total time 0.01305 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 6 , AUROC: 0.58459 , AUPRC: 0.07040 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00069. Total time 0.01583 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 7 , AUROC: 0.63257 , AUPRC: 0.11972 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00110. Total time 0.01861 hours\n",
"Validation at Epoch 8 , AUROC: 0.58080 , AUPRC: 0.05544 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00048. Total time 0.02111 hours\n",
"Validation at Epoch 9 , AUROC: 0.51641 , AUPRC: 0.06461 , F1: 0.05405\n",
"Training at Epoch 10 iteration 0 with loss 0.39815. Total time 0.02361 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 10 , AUROC: 0.55303 , AUPRC: 0.07275 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 0.03350. Total time 0.02611 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 11 , AUROC: 0.53535 , AUPRC: 0.06578 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 0.00626. Total time 0.02861 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 12 , AUROC: 0.56691 , AUPRC: 0.06385 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 0.00338. Total time 0.03111 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 13 , AUROC: 0.55934 , AUPRC: 0.05436 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 0.00108. Total time 0.03388 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 14 , AUROC: 0.53787 , AUPRC: 0.06141 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 0.00282. Total time 0.03638 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 15 , AUROC: 0.56439 , AUPRC: 0.05962 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 0.00083. Total time 0.03888 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 16 , AUROC: 0.55934 , AUPRC: 0.05437 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 0.00044. Total time 0.04138 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 17 , AUROC: 0.55429 , AUPRC: 0.05646 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 0.00165. Total time 0.04416 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 18 , AUROC: 0.55429 , AUPRC: 0.05921 , F1: 0.0\n",
"Training at Epoch 19 iteration 0 with loss 0.00092. Total time 0.04666 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 19 , AUROC: 0.55050 , AUPRC: 0.05556 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 0.00041. Total time 0.04916 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 20 , AUROC: 0.54924 , AUPRC: 0.06171 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.8401015228426396 , AUPRC: 0.5503623188405797 , F1: 0.6666666666666666\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69397. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.95042 , AUPRC: 0.72874 , F1: 0.15584\n",
"Training at Epoch 2 iteration 0 with loss 0.51902. Total time 0.0025 hours\n",
"Validation at Epoch 2 , AUROC: 0.98376 , AUPRC: 0.77601 , F1: 0.41666\n",
"Training at Epoch 3 iteration 0 with loss 0.06895. Total time 0.00527 hours\n",
"Validation at Epoch 3 , AUROC: 0.97435 , AUPRC: 0.86111 , F1: 0.625\n",
"Training at Epoch 4 iteration 0 with loss 0.00321. Total time 0.00777 hours\n",
"Validation at Epoch 4 , AUROC: 0.96837 , AUPRC: 0.85658 , F1: 0.8\n",
"Training at Epoch 5 iteration 0 with loss 0.00223. Total time 0.01027 hours\n",
"Validation at Epoch 5 , AUROC: 0.96410 , AUPRC: 0.85416 , F1: 0.8\n",
"Training at Epoch 6 iteration 0 with loss 0.00166. Total time 0.01305 hours\n",
"Validation at Epoch 6 , AUROC: 0.95213 , AUPRC: 0.76933 , F1: 0.66666\n",
"Training at Epoch 7 iteration 0 with loss 0.00199. Total time 0.01583 hours\n",
"Validation at Epoch 7 , AUROC: 0.96324 , AUPRC: 0.85374 , F1: 0.90909\n",
"Training at Epoch 8 iteration 0 with loss 0.00039. Total time 0.01833 hours\n",
"Validation at Epoch 8 , AUROC: 0.95811 , AUPRC: 0.82407 , F1: 0.66666\n",
"Training at Epoch 9 iteration 0 with loss 0.00256. Total time 0.02111 hours\n",
"Validation at Epoch 9 , AUROC: 0.96495 , AUPRC: 0.82729 , F1: 0.8\n",
"Training at Epoch 10 iteration 0 with loss 0.00021. Total time 0.02388 hours\n",
"Validation at Epoch 10 , AUROC: 0.95897 , AUPRC: 0.82442 , F1: 0.66666\n",
"Training at Epoch 11 iteration 0 with loss 7.24975. Total time 0.02638 hours\n",
"Validation at Epoch 11 , AUROC: 0.95982 , AUPRC: 0.82478 , F1: 0.66666\n",
"Training at Epoch 12 iteration 0 with loss 0.00035. Total time 0.02888 hours\n",
"Validation at Epoch 12 , AUROC: 0.95982 , AUPRC: 0.82478 , F1: 0.66666\n",
"Training at Epoch 13 iteration 0 with loss 0.00011. Total time 0.03138 hours\n",
"Validation at Epoch 13 , AUROC: 0.95897 , AUPRC: 0.82442 , F1: 0.66666\n",
"Training at Epoch 14 iteration 0 with loss 0.00019. Total time 0.03416 hours\n",
"Validation at Epoch 14 , AUROC: 0.95982 , AUPRC: 0.82478 , F1: 0.66666\n",
"Training at Epoch 15 iteration 0 with loss 0.00014. Total time 0.03666 hours\n",
"Validation at Epoch 15 , AUROC: 0.95726 , AUPRC: 0.82373 , F1: 0.66666\n",
"Training at Epoch 16 iteration 0 with loss 5.47898. Total time 0.03944 hours\n",
"Validation at Epoch 16 , AUROC: 0.95897 , AUPRC: 0.82442 , F1: 0.66666\n",
"Training at Epoch 17 iteration 0 with loss 2.29775. Total time 0.04194 hours\n",
"Validation at Epoch 17 , AUROC: 0.95982 , AUPRC: 0.82478 , F1: 0.66666\n",
"Training at Epoch 18 iteration 0 with loss 1.24405. Total time 0.04444 hours\n",
"Validation at Epoch 18 , AUROC: 0.95811 , AUPRC: 0.82407 , F1: 0.66666\n",
"Training at Epoch 19 iteration 0 with loss 1.59886. Total time 0.04694 hours\n",
"Validation at Epoch 19 , AUROC: 0.95982 , AUPRC: 0.82478 , F1: 0.66666\n",
"Training at Epoch 20 iteration 0 with loss 1.31078. Total time 0.04944 hours\n",
"Validation at Epoch 20 , AUROC: 0.95726 , AUPRC: 0.82373 , F1: 0.66666\n",
"--- Go for Testing ---\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing AUROC: 0.6199494949494949 , AUPRC: 0.10371877608681693 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1695\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69815. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.81649 , AUPRC: 0.67559 , F1: 0.09090\n",
"Training at Epoch 2 iteration 0 with loss 0.59175. Total time 0.0025 hours\n",
"Validation at Epoch 2 , AUROC: 0.77272 , AUPRC: 0.67391 , F1: 0.28571\n",
"Training at Epoch 3 iteration 0 with loss 0.11895. Total time 0.00527 hours\n",
"Validation at Epoch 3 , AUROC: 0.80639 , AUPRC: 0.56410 , F1: 0.66666\n",
"Training at Epoch 4 iteration 0 with loss 0.01332. Total time 0.00777 hours\n",
"Validation at Epoch 4 , AUROC: 0.84848 , AUPRC: 0.56642 , F1: 0.66666\n",
"Training at Epoch 5 iteration 0 with loss 0.00294. Total time 0.01027 hours\n",
"Validation at Epoch 5 , AUROC: 0.85185 , AUPRC: 0.56666 , F1: 0.66666\n",
"Training at Epoch 6 iteration 0 with loss 0.00218. Total time 0.01277 hours\n",
"Validation at Epoch 6 , AUROC: 0.87037 , AUPRC: 0.56821 , F1: 0.5\n",
"Training at Epoch 7 iteration 0 with loss 0.00828. Total time 0.01527 hours\n",
"Validation at Epoch 7 , AUROC: 0.87542 , AUPRC: 0.56871 , F1: 0.66666\n",
"Training at Epoch 8 iteration 0 with loss 0.00036. Total time 0.01777 hours\n",
"Validation at Epoch 8 , AUROC: 0.87205 , AUPRC: 0.56837 , F1: 0.57142\n",
"Training at Epoch 9 iteration 0 with loss 0.00024. Total time 0.02055 hours\n",
"Validation at Epoch 9 , AUROC: 0.88383 , AUPRC: 0.56964 , F1: 0.4\n",
"Training at Epoch 10 iteration 0 with loss 0.00047. Total time 0.02305 hours\n",
"Validation at Epoch 10 , AUROC: 0.87205 , AUPRC: 0.56837 , F1: 0.57142\n",
"Training at Epoch 11 iteration 0 with loss 0.00086. Total time 0.02555 hours\n",
"Validation at Epoch 11 , AUROC: 0.87542 , AUPRC: 0.56871 , F1: 0.66666\n",
"Training at Epoch 12 iteration 0 with loss 0.00033. Total time 0.02805 hours\n",
"Validation at Epoch 12 , AUROC: 0.86868 , AUPRC: 0.56805 , F1: 0.66666\n",
"Training at Epoch 13 iteration 0 with loss 0.00017. Total time 0.03055 hours\n",
"Validation at Epoch 13 , AUROC: 0.86700 , AUPRC: 0.56790 , F1: 0.66666\n",
"Training at Epoch 14 iteration 0 with loss 0.00015. Total time 0.03333 hours\n",
"Validation at Epoch 14 , AUROC: 0.86195 , AUPRC: 0.56746 , F1: 0.66666\n",
"Training at Epoch 15 iteration 0 with loss 0.00026. Total time 0.03583 hours\n",
"Validation at Epoch 15 , AUROC: 0.89562 , AUPRC: 0.57118 , F1: 0.5\n",
"Training at Epoch 16 iteration 0 with loss 0.05728. Total time 0.03833 hours\n",
"Validation at Epoch 16 , AUROC: 0.88383 , AUPRC: 0.51428 , F1: 0.4\n",
"Training at Epoch 17 iteration 0 with loss 0.00069. Total time 0.04083 hours\n",
"Validation at Epoch 17 , AUROC: 0.89225 , AUPRC: 0.48229 , F1: 0.4\n",
"Training at Epoch 18 iteration 0 with loss 0.00133. Total time 0.04361 hours\n",
"Validation at Epoch 18 , AUROC: 0.88383 , AUPRC: 0.51428 , F1: 0.4\n",
"Training at Epoch 19 iteration 0 with loss 0.00023. Total time 0.04638 hours\n",
"Validation at Epoch 19 , AUROC: 0.86363 , AUPRC: 0.51219 , F1: 0.4\n",
"Training at Epoch 20 iteration 0 with loss 4.56699. Total time 0.04888 hours\n",
"Validation at Epoch 20 , AUROC: 0.87037 , AUPRC: 0.51282 , F1: 0.4\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.8863247863247864 , AUPRC: 0.8405275779376498 , F1: 0.8\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3154 drugs\n",
"encoding drug...\n",
"unique drugs: 1618\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69426. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.38229 , AUPRC: 0.01442 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.40991. Total time 0.0025 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 2 , AUROC: 0.51186 , AUPRC: 0.08225 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.07191. Total time 0.00527 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 3 , AUROC: 0.49361 , AUPRC: 0.14307 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.01101. Total time 0.0075 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 4 , AUROC: 0.46897 , AUPRC: 0.07675 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.00350. Total time 0.01 hours\n",
"Validation at Epoch 5 , AUROC: 0.49270 , AUPRC: 0.07831 , F1: 0.22222\n",
"Training at Epoch 6 iteration 0 with loss 0.00244. Total time 0.0125 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 6 , AUROC: 0.47992 , AUPRC: 0.07771 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00158. Total time 0.015 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 7 , AUROC: 0.48357 , AUPRC: 0.07803 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00018. Total time 0.0175 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 8 , AUROC: 0.49361 , AUPRC: 0.06583 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 8.14903. Total time 0.02 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 9 , AUROC: 0.50821 , AUPRC: 0.06705 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00013. Total time 0.0225 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 10 , AUROC: 0.49543 , AUPRC: 0.06601 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 3.72454. Total time 0.025 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 11 , AUROC: 0.49452 , AUPRC: 0.06599 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 7.04696. Total time 0.0275 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 12 , AUROC: 0.49087 , AUPRC: 0.06579 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 3.88490. Total time 0.03 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 13 , AUROC: 0.49087 , AUPRC: 0.06579 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 3.77839. Total time 0.0325 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 14 , AUROC: 0.48996 , AUPRC: 0.06578 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 2.96427. Total time 0.035 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 15 , AUROC: 0.48905 , AUPRC: 0.06576 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 3.13586. Total time 0.03722 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 16 , AUROC: 0.48905 , AUPRC: 0.06576 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 4.81590. Total time 0.03972 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 17 , AUROC: 0.48905 , AUPRC: 0.06576 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 4.33971. Total time 0.04222 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 18 , AUROC: 0.48905 , AUPRC: 0.06576 , F1: 0.0\n",
"Training at Epoch 19 iteration 0 with loss 1.74886. Total time 0.04472 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 19 , AUROC: 0.48996 , AUPRC: 0.06593 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 2.13361. Total time 0.04722 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 20 , AUROC: 0.48996 , AUPRC: 0.06593 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.8249158249158249 , AUPRC: 0.5095238095238095 , F1: 0.4\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3136 drugs\n",
"encoding drug...\n",
"unique drugs: 1611\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69466. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.58454 , AUPRC: 0.01149 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.47095. Total time 0.0025 hours\n",
"Validation at Epoch 2 , AUROC: 0.28019 , AUPRC: 0.00666 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.10912. Total time 0.005 hours\n",
"Validation at Epoch 3 , AUROC: 0.09661 , AUPRC: 0.00531 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.02623. Total time 0.00722 hours\n",
"Validation at Epoch 4 , AUROC: 0.09178 , AUPRC: 0.00529 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.01353. Total time 0.00972 hours\n",
"Validation at Epoch 5 , AUROC: 0.08212 , AUPRC: 0.00523 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.00251. Total time 0.01222 hours\n",
"Validation at Epoch 6 , AUROC: 0.09178 , AUPRC: 0.00529 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00282. Total time 0.01472 hours\n",
"Validation at Epoch 7 , AUROC: 0.07246 , AUPRC: 0.00518 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00048. Total time 0.01722 hours\n",
"Validation at Epoch 8 , AUROC: 0.05797 , AUPRC: 0.00510 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00031. Total time 0.01972 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 9 , AUROC: 0.04347 , AUPRC: 0.00502 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00170. Total time 0.02194 hours\n",
"Validation at Epoch 10 , AUROC: 0.07246 , AUPRC: 0.00518 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 8.97646. Total time 0.02444 hours\n",
"Validation at Epoch 11 , AUROC: 0.06280 , AUPRC: 0.00512 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 0.00023. Total time 0.02694 hours\n",
"Validation at Epoch 12 , AUROC: 0.05797 , AUPRC: 0.00510 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 0.00025. Total time 0.02944 hours\n",
"Validation at Epoch 13 , AUROC: 0.07246 , AUPRC: 0.00518 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 2.58716. Total time 0.03194 hours\n",
"Validation at Epoch 14 , AUROC: 0.06280 , AUPRC: 0.00512 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 9.31266. Total time 0.03444 hours\n",
"Validation at Epoch 15 , AUROC: 0.06280 , AUPRC: 0.00512 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 0.00010. Total time 0.03694 hours\n",
"Validation at Epoch 16 , AUROC: 0.07246 , AUPRC: 0.00518 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 5.61777. Total time 0.03944 hours\n",
"Validation at Epoch 17 , AUROC: 0.06280 , AUPRC: 0.00512 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 5.81290. Total time 0.04166 hours\n",
"Validation at Epoch 18 , AUROC: 0.06280 , AUPRC: 0.00512 , F1: 0.0\n",
"Training at Epoch 19 iteration 0 with loss 4.08852. Total time 0.04416 hours\n",
"Validation at Epoch 19 , AUROC: 0.06280 , AUPRC: 0.00512 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 2.96098. Total time 0.04666 hours\n",
"Validation at Epoch 20 , AUROC: 0.06763 , AUPRC: 0.00515 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.6177007299270072 , AUPRC: 0.1426315301426866 , F1: 0.3333333333333333\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3290 drugs\n",
"encoding drug...\n",
"unique drugs: 1688\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69351. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.92385 , AUPRC: 0.66612 , F1: 0.07619\n",
"Training at Epoch 2 iteration 0 with loss 0.55751. Total time 0.00277 hours\n",
"Validation at Epoch 2 , AUROC: 0.99365 , AUPRC: 0.73333 , F1: 0.38095\n",
"Training at Epoch 3 iteration 0 with loss 0.12778. Total time 0.00527 hours\n",
"Validation at Epoch 3 , AUROC: 0.99492 , AUPRC: 0.77083 , F1: 0.72727\n",
"Training at Epoch 4 iteration 0 with loss 0.00337. Total time 0.00777 hours\n",
"Validation at Epoch 4 , AUROC: 0.99619 , AUPRC: 0.85416 , F1: 0.8\n",
"Training at Epoch 5 iteration 0 with loss 0.01644. Total time 0.01027 hours\n",
"Validation at Epoch 5 , AUROC: 0.99619 , AUPRC: 0.85416 , F1: 0.72727\n",
"Training at Epoch 6 iteration 0 with loss 0.00063. Total time 0.01305 hours\n",
"Validation at Epoch 6 , AUROC: 0.99619 , AUPRC: 0.89285 , F1: 0.75\n",
"Training at Epoch 7 iteration 0 with loss 0.00202. Total time 0.01555 hours\n",
"Validation at Epoch 7 , AUROC: 0.99365 , AUPRC: 0.8125 , F1: 0.66666\n",
"Training at Epoch 8 iteration 0 with loss 0.00076. Total time 0.01805 hours\n",
"Validation at Epoch 8 , AUROC: 0.99619 , AUPRC: 0.89285 , F1: 0.66666\n",
"Training at Epoch 9 iteration 0 with loss 0.00028. Total time 0.02083 hours\n",
"Validation at Epoch 9 , AUROC: 0.99492 , AUPRC: 0.875 , F1: 0.66666\n",
"Training at Epoch 10 iteration 0 with loss 0.00028. Total time 0.02333 hours\n",
"Validation at Epoch 10 , AUROC: 0.99492 , AUPRC: 0.875 , F1: 0.6\n",
"Training at Epoch 11 iteration 0 with loss 0.00110. Total time 0.02583 hours\n",
"Validation at Epoch 11 , AUROC: 0.99492 , AUPRC: 0.875 , F1: 0.6\n",
"Training at Epoch 12 iteration 0 with loss 0.00014. Total time 0.02861 hours\n",
"Validation at Epoch 12 , AUROC: 0.99365 , AUPRC: 0.8125 , F1: 0.66666\n",
"Training at Epoch 13 iteration 0 with loss 0.00027. Total time 0.03111 hours\n",
"Validation at Epoch 13 , AUROC: 0.99365 , AUPRC: 0.8125 , F1: 0.66666\n",
"Training at Epoch 14 iteration 0 with loss 0.00021. Total time 0.03361 hours\n",
"Validation at Epoch 14 , AUROC: 0.99365 , AUPRC: 0.8125 , F1: 0.6\n",
"Training at Epoch 15 iteration 0 with loss 5.16490. Total time 0.03611 hours\n",
"Validation at Epoch 15 , AUROC: 0.99365 , AUPRC: 0.8125 , F1: 0.66666\n",
"Training at Epoch 16 iteration 0 with loss 0.00010. Total time 0.03888 hours\n",
"Validation at Epoch 16 , AUROC: 0.99365 , AUPRC: 0.8125 , F1: 0.66666\n",
"Training at Epoch 17 iteration 0 with loss 5.88521. Total time 0.04138 hours\n",
"Validation at Epoch 17 , AUROC: 0.99365 , AUPRC: 0.8125 , F1: 0.6\n",
"Training at Epoch 18 iteration 0 with loss 6.96019. Total time 0.04388 hours\n",
"Validation at Epoch 18 , AUROC: 0.99365 , AUPRC: 0.8125 , F1: 0.66666\n",
"Training at Epoch 19 iteration 0 with loss 4.94323. Total time 0.04666 hours\n",
"Validation at Epoch 19 , AUROC: 0.99365 , AUPRC: 0.8125 , F1: 0.66666\n",
"Training at Epoch 20 iteration 0 with loss 2.76905. Total time 0.04916 hours\n",
"Validation at Epoch 20 , AUROC: 0.99365 , AUPRC: 0.8125 , F1: 0.66666\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.3961352657004831 , AUPRC: 0.007936507936507936 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3306 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69317. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.95309 , AUPRC: 0.27878 , F1: 0.4\n",
"Training at Epoch 2 iteration 0 with loss 0.41656. Total time 0.00277 hours\n",
"Validation at Epoch 2 , AUROC: 0.94974 , AUPRC: 0.21428 , F1: 0.14285\n",
"Training at Epoch 3 iteration 0 with loss 0.08824. Total time 0.00527 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 3 , AUROC: 0.95812 , AUPRC: 0.20555 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.00439. Total time 0.00777 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 4 , AUROC: 0.92964 , AUPRC: 0.12857 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.00340. Total time 0.01027 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 5 , AUROC: 0.92294 , AUPRC: 0.12768 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.00117. Total time 0.01277 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 6 , AUROC: 0.91457 , AUPRC: 0.22679 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00416. Total time 0.01555 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 7 , AUROC: 0.93299 , AUPRC: 0.14957 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00050. Total time 0.01805 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 8 , AUROC: 0.92797 , AUPRC: 0.14216 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00097. Total time 0.02055 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 9 , AUROC: 0.91122 , AUPRC: 0.12821 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00021. Total time 0.02305 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 10 , AUROC: 0.90117 , AUPRC: 0.10588 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 0.00179. Total time 0.02555 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 11 , AUROC: 0.91289 , AUPRC: 0.39162 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 0.00038. Total time 0.02833 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 12 , AUROC: 0.89447 , AUPRC: 0.09234 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 0.00209. Total time 0.03083 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 13 , AUROC: 0.91122 , AUPRC: 0.14619 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 8.62512. Total time 0.03361 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 14 , AUROC: 0.91624 , AUPRC: 0.13690 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 5.68325. Total time 0.03611 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 15 , AUROC: 0.92127 , AUPRC: 0.23300 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 0.00065. Total time 0.03861 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 16 , AUROC: 0.92127 , AUPRC: 0.12752 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 0.00014. Total time 0.04111 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 17 , AUROC: 0.92797 , AUPRC: 0.14761 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 3.54257. Total time 0.04361 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 18 , AUROC: 0.92629 , AUPRC: 0.14444 , F1: 0.0\n",
"Training at Epoch 19 iteration 0 with loss 1.93584. Total time 0.04638 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 19 , AUROC: 0.92629 , AUPRC: 0.14444 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 1.38445. Total time 0.04888 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 20 , AUROC: 0.92797 , AUPRC: 0.14559 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.9961928934010151 , AUPRC: 0.8928571428571428 , F1: 0.6666666666666665\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69310. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.67959 , AUPRC: 0.42191 , F1: 0.16000\n",
"Training at Epoch 2 iteration 0 with loss 0.37307. Total time 0.00277 hours\n",
"Validation at Epoch 2 , AUROC: 0.92653 , AUPRC: 0.60020 , F1: 0.61538\n",
"Training at Epoch 3 iteration 0 with loss 0.08181. Total time 0.00527 hours\n",
"Validation at Epoch 3 , AUROC: 0.92653 , AUPRC: 0.52438 , F1: 0.40000\n",
"Training at Epoch 4 iteration 0 with loss 0.03216. Total time 0.00777 hours\n",
"Validation at Epoch 4 , AUROC: 0.93469 , AUPRC: 0.52714 , F1: 0.5\n",
"Training at Epoch 5 iteration 0 with loss 0.00116. Total time 0.01027 hours\n",
"Validation at Epoch 5 , AUROC: 0.95714 , AUPRC: 0.53705 , F1: 0.33333\n",
"Training at Epoch 6 iteration 0 with loss 0.01068. Total time 0.01305 hours\n",
"Validation at Epoch 6 , AUROC: 0.95816 , AUPRC: 0.56969 , F1: 0.44444\n",
"Training at Epoch 7 iteration 0 with loss 0.03537. Total time 0.01555 hours\n",
"Validation at Epoch 7 , AUROC: 0.96020 , AUPRC: 0.57897 , F1: 0.57142\n",
"Training at Epoch 8 iteration 0 with loss 0.00167. Total time 0.01833 hours\n",
"Validation at Epoch 8 , AUROC: 0.95306 , AUPRC: 0.55444 , F1: 0.5\n",
"Training at Epoch 9 iteration 0 with loss 0.00088. Total time 0.02083 hours\n",
"Validation at Epoch 9 , AUROC: 0.95408 , AUPRC: 0.54293 , F1: 0.44444\n",
"Training at Epoch 10 iteration 0 with loss 0.00067. Total time 0.02333 hours\n",
"Validation at Epoch 10 , AUROC: 0.95816 , AUPRC: 0.55714 , F1: 0.57142\n",
"Training at Epoch 11 iteration 0 with loss 0.00113. Total time 0.02611 hours\n",
"Validation at Epoch 11 , AUROC: 0.94897 , AUPRC: 0.54345 , F1: 0.57142\n",
"Training at Epoch 12 iteration 0 with loss 0.00113. Total time 0.02861 hours\n",
"Validation at Epoch 12 , AUROC: 0.94693 , AUPRC: 0.53631 , F1: 0.5\n",
"Training at Epoch 13 iteration 0 with loss 0.00018. Total time 0.03111 hours\n",
"Validation at Epoch 13 , AUROC: 0.94285 , AUPRC: 0.53658 , F1: 0.57142\n",
"Training at Epoch 14 iteration 0 with loss 0.00035. Total time 0.03361 hours\n",
"Validation at Epoch 14 , AUROC: 0.93775 , AUPRC: 0.53127 , F1: 0.5\n",
"Training at Epoch 15 iteration 0 with loss 0.00010. Total time 0.03638 hours\n",
"Validation at Epoch 15 , AUROC: 0.93775 , AUPRC: 0.53127 , F1: 0.5\n",
"Training at Epoch 16 iteration 0 with loss 0.00014. Total time 0.03888 hours\n",
"Validation at Epoch 16 , AUROC: 0.93673 , AUPRC: 0.52833 , F1: 0.5\n",
"Training at Epoch 17 iteration 0 with loss 7.53148. Total time 0.04138 hours\n",
"Validation at Epoch 17 , AUROC: 0.93673 , AUPRC: 0.52833 , F1: 0.5\n",
"Training at Epoch 18 iteration 0 with loss 0.00014. Total time 0.04388 hours\n",
"Validation at Epoch 18 , AUROC: 0.93673 , AUPRC: 0.52833 , F1: 0.5\n",
"Training at Epoch 19 iteration 0 with loss 0.00010. Total time 0.04666 hours\n",
"Validation at Epoch 19 , AUROC: 0.93775 , AUPRC: 0.52879 , F1: 0.5\n",
"Training at Epoch 20 iteration 0 with loss 8.79891. Total time 0.04916 hours\n",
"Validation at Epoch 20 , AUROC: 0.93775 , AUPRC: 0.52879 , F1: 0.5\n",
"--- Go for Testing ---\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing AUROC: 0.949748743718593 , AUPRC: 0.16378066378066378 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"ROC-Mean 0.7469\n",
"ROC-STD 0.1931\n",
"PRC-Mean 0.4490\n",
"PRC-STD 0.3008\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEaCAYAAAAG87ApAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOydd3wVVfr/3w8lkEAglATF0EMNvSjgohRdENwI/hRhNRRdC8KuuuCC+pUERUEQ2F3FhgVUFmR1UXQBRYq4WOgKhBJQmtRQAyEJCef3x9x7uTe5SSbl3pvyvF+veWXmlDnPzJ3MM6d9jhhjUBRFURS7lAu0AYqiKErJQh2HoiiKki/UcSiKoij5Qh2HoiiKki/UcSiKoij5Qh2HoiiKki/UcZQxROReEfkq0HYUJ0Tkgog0DkC5DUXEiEgFf5ftC0Rkh4j0LEA+fSZLGOo4AoiI7BeRS44X1zERmSsiVX1ZpjFmvjHm974swx0R6S4iq0QkWUTOicjnItLKX+V7sWeNiPzJPcwYU9UY84uPymsmIv8WkSTH9f8sIn8VkfK+KK+gOBxYVGHOYYyJNsasyaOcbM6yMM+kiFwvIktF5KyInBaR9SIysiDnUuyjjiPw/MEYUxVoD3QAngqwPQXC21eziHQDvgI+A+oCjYCfgHW++MIvbl/uItIE+BE4BLQxxlQH7gY6A6FFXFbArj1QZTuer1XAN0AUUAsYBdxWwPMVK2derDHG6BagDdgP3OJ2PA34r9txJeBl4CBwHHgDCHaLvwPYCpwH9gH9HOHVgXeAo8BvwGSgvCNuBPA/x/4bwMtZbPoM+Ktjvy7wCXAS+BX4i1u6eOBj4ENH+X/ycn3fAq95CV8GvO/Y7wkcBp4Gkhz35F4798At73jgGPABUAP4wmHzGcd+pCP9C0AmkApcAF51hBsgyrE/F5gN/BdIxnrxN3Gz5/fAbuAc8BrWSyvbtTvSfuj+e3qJb+goe7jj+pKAZ9zirwe+B846fstXgSC3eAOMBhKBXx1h/8ByVOeBTUAPt/TlHfd5n+PaNgH1gLWOc1103Jd7HOlvx3q+zgLfAW2zPLvjgZ+BNKACbs+zw/aNDjuOAzMd4QcdZV1wbN1weyYdaaKBFcBpR96nc7h//wNm53J/Pc6bw2/9OrDUce3/53iOyrulHwT87NgvB0xw3L9TwCKgZqDfI4HYAm5AWd6y/KNFAtuAf7jF/x1YAtTE+kL9HJjiiLve8fK61fFAXwe0cMR9CrwJVAEigPXAw4441z8TcJPjJSOO4xrAJSyHUc7xYpkIBAGNgV+Avo608cBlYKAjbXCWawvBekn38nLdI4Gjjv2eQAYwE8tJ3Oz4J25u4x44877kyBuM9dX5/xzlhwL/Bj51K3sNWV70Xl4mpx33twIwH1joiKuN9SK80xH3mOMe5OQ4jgEjc/n9GzrKnuOwvR3WS7ilI74T0NVRVkNgJ/B4FrtXOO6N05ne57gHFYCxDhsqO+KexHrGmgPiKK9W1nvgOO4InABuwHI4w7Ge10puz+5WLMcT7BbmfJ6/B2Id+1WBrlmuuYJbWSO4+kyGYjnJsUBlx/ENXu5djs+Xt/Pm8lufA27EeoYrYzmFW93S/xuY4Nh/HPgB63+1Etb/2IJAv0cCsQXcgLK8Of7RLmB9/RlgJRDmiBOsF6j71243rn5ZvgnM8nLOOo6Xj3vNZCiw2rHv/k8qWF+ANzmOHwRWOfZvAA5mOfdTwHuO/XhgbS7XFum4phZe4voBlx37PbFe/lXc4hcBz9q4Bz2BdBwvxhzsaA+ccTteQ96O4223uP7ALsf+MOB7tzjBcrw5OY7LOGqBOcQ3dJQd6Ra2HhiSQ/rHgcVZ7O6dxzN2Bmjn2N8N3JFDuqyO43Xg+SxpdgM3uz2793t5np2OYy0wCaidwzXn5DiGAlts/O9cl9Pz5e28ufzW72eJnwy869gPdTx/DRzHO4E+bmmvdfzGFfKyt7Rt2scReAYaY0KxXoItsL5qAcKxvqo2OTr+zgLLHeFgfent83K+BkBF4Khbvjexah4eGOvpX4j1zwrwR6wvbOd56jrP4TjP01iOycmhXK7rDHAF658rK9diNcu40hpjLrodH8Cq9eR1DwBOGmNSnQciEiIib4rIARE5j/UCC8tn+/Uxt/0UrC9mHDa5rtlx/w7ncp5TeL9+W+U5Ota/cAycOA+8yNXnw4nHbyAiY0Vkp6Mj/ixWs6UzT07PjDcaAGOz/P71sO6B17Kz8ADQDNglIhtE5Hab5dq1MbfnKz9kvYZ/AXeKSCWsmuVmY8wBR1wDYLHb/diJVeupQxlDHUcxwRjzDdYX0MuOoCSsZqNoY0yYY6turI50sB74Jl5OdQirxlHbLV81Y0x0DkUvAO4SkQZYtYxP3M7zq9s5wowxocaY/u5m53I9F7GaK+72Ej0Yq3blpIaIVHE7rg8csXEPvNkwFqsp5gZjTDWs5jiwage52myDo1g1KeuEIuJ+7IWvsZrNCsrrwC6gqeNanubqdThxXY+I9MDqdxgM1DDGhGE1xTjz5PTMeOMQ8EKW3z/EGLPAW9lZMcYkGmOGYn2wvAR87PiN87r/tmw0xqRgPV+53d+LWB8eAIjINd5OleW8CVgfLrdhfUj9K4ttt2W5J5WNMb/lZW9pQx1H8eLvwK0i0t4YcwWr7XuWiEQAiMh1ItLXkfYdYKSI9BGRco64FsaYo1gjmWaISDVHXBMRudlbgcaYLVgdyW8DXxpjzjqi1gPnRWS8iASLSHkRaS0iXfJxPROA4SLyFxEJFZEaIjIZq7lpUpa0k0QkyPHyux34t4174I1QLGdzVkRqAnFZ4o9j9dcUhP8CbURkoGMk0WjA28vISRzQXUSmO19aIhIlIh+KSJiN8kKx+lQuiEgLrBFDeaXPwPo9K4jIRKCaW/zbwPMi0lQs2opILUdc1vsyB3hERG5wpK0iIgNExNZoMBG5T0TCHb+h85nKdNh2hZx/gy+Aa0TkcRGp5Hhubsgh7d+AESLypPM6RKSdiCx0xP8ERItIexGpjNW8aod/AX/B+uj4t1v4G8ALjo8sRCRcRO6wec5ShTqOYoQx5iTwPlb7Plhfj3uBHxxNFV9jfU1jjFmP1ck8C+ur8husqjRYbfFBQAJWlf5jcq/SLwBuwe3ryhiTCfwBq4/gV6yv/7exmj7sXs//gL5YVf6jWF9yHYDfGWMS3ZIec9h5BKup7BFjzK687kEO/B2rozkJqyNzeZb4f2DVsM6IyD/tXovjepKwalDTsJqhWmGNHErLIf0+LCfZENghIuewanQbsfq18mIc1ldvMtaL/KM80n+JNWJtD9a9TsWzKWYmVv/RV1gO6R2sewXWS3WeoxlmsDFmI1af16tYv81erD4Du/TDuuYLWPd8iDEm1VFTeAFrSPZZEenqnskYk4w14OMPWM9FItDLWwHGmO+A3o7tFxE5DbyFNUoKY8we4DmsZyYRaxSWHRZgNR2vcvzmTv6BNVDjKxFJxnq+cnJqpRrnaBpFCQhizTT+0BiTW5NPsUREymH1cdxrjFkdaHsUxV9ojUNR8oGI9BWRMEfnqbPP4YcAm6UofkUdh6Lkj25Yo36SsJpTBhpjLgXWJEXxL9pUpSiKouQLrXEoiqIo+aJYicIVhNq1a5uGDRsG2gxFUZQSxaZNm5KMMeF5p8xOiXccDRs2ZOPGjYE2Q1EUpUQhIgfyTuUdbapSFEVR8oU6DkVRFCVfqONQFEVR8oU6DkVRFCVfqONQFEVR8oU6DkVRFCVf+M1xiMi7InJCRLbnEC8i8k8R2SsiP4tIR3/ZpiiKotjHnzWOuVhSyzlxG9DUsT2EtYiNoiiKUsR8993BQuX32wRAY8xaEWmYS5I7sNb/NVhrL4SJyLWOhYlss/WnBzh1ak3BDc3CdJ5mq3QqsvMpiqIEkuQ3dpCx92zeCXOhOPVxXIfnojOHHWHZEJGHRGSjiGw8efKkR1xROg1AnYaiKKWKCo1CSd92unDnKCJbioKsaylDDusTG2Pewlrpi86dO3tN06e3nfXubbB6KwDHerUvmvMpZZoZ99wOwNiPvihQ/jbz2gCwbfg223ni4+M9/vqK2Y+sAmD0G719Wo4vaTjhvwDsnzogX/kOT/gWgMipPVxhO1u0BKDlrp2FNyzesfBm/Ll8Z23Z8lV27z7FlSvWKsopNzSj/w+n+OabgptTnGoch4F6bseRWEuJKoqiKPlk4cJtiExi165TGAPXX/8WACEhIaxZM7JQ5y5ONY4lwBjHQvM3AOfy27+hKIqiQOXKz5OWdsUj7LbbmhTZ+f3mOETEuQB8bRE5DMQBFQGMMW9gLTDfH9gLpACFc4mKoihljEGDFvLpp7s9wmrWrMypU+OLtBx/jqoamke8AUb7yRxFUZRSR1ansXPnaFq0qF3k5RSnPg5FURQln+zaleTab9s2AoC+fRtjTJxPnAYUrz4ORVEUxSZTp67lqadWA3Dx4pOEhITw00+j/FK2Og5FUZQSREpKCtWqTScz82pYixavc/DgWL/ZoI5DURSlhNC16xx+/NFzlkLDhtX49dcn/GqHOg5FUZQSgEx6nKxT206efJLatUP8bot2jiuKopQw/vSndhgTFxCnAeo4FEVRiiWjRn1OjRpTXMffDv+Q0NAgjIljzpyBAbRMm6oURVGKFUlJKURETMc4VPgmTPiKqZXhdw2TOH/+qcAa56D0O475d0PiVwXPf7NDCcwpMqYohcIhglfQ56lR/QLkf6JwZdpmsZ/K8R37Kzt24vOb0yFa6XHtdb2E5U6b2X9ke1Idrmq+GvZ//g7cnV97fEvpdxyFcRqKoih+4KNtjRjyH2fzkwCGCpLJ+Sf/SXCwI7jp7wNkXXZKv+NwUgA5YsAlq17g/IrijkNWvcDPk0NWPV/5nXLqvn6GHbLqJfl/paCy6jhk1T2ufWHL7GE5MEQmeRw/91xPnn22J/B8/uzwE2XHcSiKohRTqlatyIULlwkPD+bEib8F2pw8UcehKIriR3btSqJly9kAGGMtrpSc/DRJSSkBG16bX3Q4rqIoip+oU2e6y2kAtGjximu/pDgNUMehKIric55/fg0ikzhxIsUVFhRUjl27/hxAqwqONlUpiqL4kPLlJ3HFczE+5s6NYfjwDoExqAhQx6EoiuJD3J1G48bV2bfv8cAZU0RoU5WiKEoRsmrVPm688R3X8ZgxXRCxBAlLg9MArXEoiqIUGVWrvsjFi5cB2NswmKhKl3jllf688kr/AFtWtGiNQ1EUpZAs232ChtNWuZwGwJyk1gG0yLdojUNRFKWAJCWlEB4+PVv4unUjqXF/3wBY5B/UcSiKohQQd6chwPU31OWHHx4EYGeAbPIH2lSlKIpSQMQhYhsdXoVfxt7kchqlHa1xKIqi2CQo6HkuX77ikgq5cOFJ3nvvZ+44dDmPnKULrXEoiqLkQb9+HyAyicuXrUkZzuG2ISEhjB7dNZCmBQStcSiKouTA5s2H6NTp3WzhCxbcEQBrig/qOBRFUbxQu/Y0Tp265BE2cGBzFi8eEiCLig8l3nGcOJDMbOcCMkCLwdbfq2GO5Szd0uSLe2pmOZ+iFJ6CPk+P8A8r//f5yH9N4cosq7g7jUqVypGa+mwArSleaB+HoihFRoPWtQJtQoFJSUnhzI9HXMdt20YAsGDBneo0slDiaxwAo9/o7dpfuSpLmHOh+AIuZ/m8Y+lY9zIUpaDMuGcmUPDnqY1j6dhtw7fZzhMfv7ZQZZYF2rV7nZ9/PgFApTZhAPz006hAmlSssV3jEJGKInK7iDwmItUcYfWc+4qiKCWNZcv2IDLJ5TQAzv5nf+AMKiHYqnGISENgBVAHCAE+B84DY4Fg4GHfmKcoiuIbQkJe4NKlDI+wKp3Dqd2nQYAsKjnYrXH8A1gH1ALchxksBvrYLUxE+onIbhHZKyITvMTXF5HVIrJFRH4WkdIlKakoSsBJSUlBZJKH06hWLQhj4tRp2MRuH8eNwI3GmMvinGNvcQCoa+cEIlIemA3cChwGNojIEmNMgluy/wMWGWNeF5FWwFKgoU0bFUVR8iQkxHNt73XrRtK9e/0AWVMyses4yju2rEQCyTbPcT2w1xjzC4CILATuANwdhwGcfSbVgSP4iZHvrWf17pPZI/peB0DDCf/1lylKKca5wnRBn6fQlvnPP6Jy4cosDRyavZUrKRk0eLIzAOGDG3N23THq3teKPy7ZBkvsDzZQ7DdVreDqMw9gRKQKEAcst3mO64BDbseHHWHuxAP3ichhrNqG15XcReQhEdkoIhttlp0nXp2GoiglmrMbjnLgpY1cuZABV+DUqoMAhDSqSd37WnnN06t5uD9NLJHYrXGMA9aIyM9AZeB9oBlWbSPW5jnES5jJcjwUmGuMmSEi3YAPRKS1McZjqXdjzFvAWwD1w5tnPUeh2D91gMfxNY7huFnDFaUgzLjndaDgz1ObeRPynT8+fkOhyiyJpKSkUL36y2RkeL4epg7vUCa1pYoaW47DGHNQRNpiOYlOWDWVj4B5xhi7TVWHgXpux5Fkb4p6AOjnKPN7EakM1AZOoCiKYoNbbpnHypX7PcLq1q3Kb7+NDYxBpRC7w3GvBzYZY17PEl5eRK43xqy3cZoNQFMRaQT8BgwB/pglzUGsUVpzRaQlVu1G25AURbFFSkpKNqdx4MBo6tevHRiDSil2+zi+xxqKm5UwR1yeGGMygDHAl1iLYy0yxuwQkedEJMaRbCzwoIj8BCwARhhjirQpSlGU0kdSUgpgjZiqWrUiAEOGtMSYOHUaPsBuH4eQvT8CoAaQYrcwY8xSrE5v97CJbvsJWEN/FUVR8mTcuOXMmPEjgGtxpeTkpwNpUpkgV8chIoscuwZ4W0TS3KLLA+2AH3xkm6IoildSUlKoWnU67u0RMTH/YsmSrK3fii/Iq8aR6fgrwBW3Y7BmkM8HXs+aSVEUxVdER88mISHJI6x163B1Gn4kV8dhjBkKICL7gcnGmIv+MEpRlKIlKCiIX3/9ldTU1ECbUmCuXLnCoUPnmTGjo0d4vXrVKFeuHDt37gyQZZARUxWAZDcbLs9+FSCgdgFUrlyZyMhIKlasWGTntDsc96kiK7GICa65n5Wrmvi8HKectVJ4Jh18lOsvtg60GQHhnkbjATg84dsC5V/Ga/nPXxk6duxIcHoF6la9jiyyQSWK1EvJGKwmkEY1QqhayZugRQAItf5knj1wNaxOHQCCW7YMgEEWxhhOnTrF4cOHadSoUZGd1/Z6HCIyFGuCXn0gKItx3qdgBohatXoG2gQlF8qq0wgk1atXp0ZI9RLnNM5cusyly1eoW60SAA1rBHPm0mXqhwUH2LLsmMuXsoWVCw0NgCVXERFq1arFyZNFO6vB7jyOx4FJwLvA74G3gabADcA/i9SiAtCn9z6/lJOfxXOUnHF+LUdO7RFgS/zPjHtuB2DsR18U6jw7W1hfsS132WgGiV8JQKV6JWfpnLS0y2zbdvVlV7t+KFWrVqIW3ucFFA9CgYhAG5ENX3ws2K1xjAIeMsZ8JCJ/AmYaY34RkecAFXZRFKXI+OmnY1y+7KEyxOnTqVStWilAFilZsTsBsB5Xh91ewtWixwfA4KI2SlGU0sexY8cYMmQITZo0oVWrVvTv3589e/awf/9+RIQXXniZjRuPcPnyFaZNe4bPP/8IEXjllafo1q0VaWnWbICkpCQaNmzotYxLly5x8803k5mZ6TW+OLB8+XKaN29OVFQUU6dO9Zrm4MGD9OrViw4dOtC2bVuWLrWmv61YsYJOnTrRpk0bOnXqxKpVq1x5brnlFs6cOeOXa7DrOI4DNR37B7Ek0gEa4F28UFEUxYUxhkGDBtGzZ0/27dtHQkICL774IsePHwcgIiKCN96YzeXL6a48tWoF06lTXUSE8uXL8+677+ZZzrvvvsudd95J+fL2Os2NMVy5ciXvhEVEZmYmo0ePZtmyZSQkJLBgwQISEhKypZs8eTKDBw9my5YtLFy4kEcffRSA2rVr8/nnn7Nt2zbmzZtHbOxVjdnY2Fhee+01v1yH3aaq1cDtwBZgHvB3EbkTq4/jMx/ZpiiKD/DVuhy5qe+uXr2aihUr8sgjj7jC2rdvb+Xbv5/w8HCaNWvPF1/8m3vuiSUiogrVqlV2pX388ceZNWsWDz74YK42zJ8/n3/9618AXLhwgTvuuIMzZ85w+fJlJk+ezB133MH+/fu57bbb6NWrF99//z2ffvopu3fvJi4ujrS0NJo0acJ7771H1apVee655/j888+5dOkS3bt358033yxUn8H69euJioqicePGAAwZMoTPPvuMVq08xxeJCOfPnwfg3Llz1K1rrZfXoUMHV5ro6GhSU1NJS0ujUqVKxMTE0KNHD5555pkC22cXuzWOR4AZAMaYV4BHsdbWeNERpyiKkiPbt2+nU6dOruMLF9LYuPEIGzdeFcieNi2ejz9+m+jo7N2m9evX53e/+x0ffPBBjmWkp6fzyy+/uJqxKleuzOLFi9m8eTOrV69m7NixOKXvdu/ezbBhw9iyZQtVqlRh8uTJfP3112zevJnOnTszc+ZMAMaMGcOGDRvYvn07ly5d4osvsg9qmD9/Pu3bt8+23XXXXdnS/vbbb9Srd1UkPDIykt9++y1buvj4eD788EMiIyPp378/r7zySrY0n3zyCR06dKBSJavvp0aNGqSlpXHq1Kkc71FRYXceRzqQ7nY8D6vmoShKCSPQ63Js2XKUzMyrWiGHDp0DICoqihtuuMFVY8jK008/TUxMDAMGeLc/KSmJsLAw17Exhqeffpq1a9dSrlw5fvvtN1fTWIMGDeja1VqX44cffiAhIYEbb7Rk8tLT0+nWrRtg1ZSmTZtGSkoKp0+fJjo6mj/84Q8e5d57773ce++9tq7dm2artxrMggULGDFiBGPHjuX7778nNjaW7du3U66c9a2/Y8cOxo8fz1dffeWRLyIigiNHjlCrlm/Hntmex+ENEbkdeM4Y0zHPxIqilFmio6OZP3+hRw0DoFw5oV696q7jp59+mrvuuoubbrop2zmioqJo3749ixYtyhYHEBwc7DEzfv78+Zw8eZJNmzZRsWJFGjZs6IqvUqWKK50xhltvvZUFCxZ4nC81NZVHH32UjRs3Uq9ePeLj473OvJ8/fz7Tp0/3au/HH3/sERYZGcmhQ1cXQj18+LCrGcqdd955h+XLrcVVu3XrRmpqKklJSURERHD48GEGDRrE+++/T5MmnpOfU1NTCQ72/RyXPJuqRCRWRD4QkXdFpKMjrKuI/AB8AujkBkVRciQzM5Nq1Vpw8WIqixfPd4UnJ/9CcvIej7QtWrSgVatWXpuEAJ555hlefvllr3E1atQgMzPT9XI/d+4cERERVKxYkdWrV3PgwAGv+bp27cq6devYu3cvYAko7tmzx3We2rVrc+HChWxOwMm9997L1q1bs23e0nfp0oXExER+/fVX0tPTWbhwITExMdnS1a9fn5Urrfk3O3fuJDU1lfDwcM6ePcuAAQOYMmWKq4bkxBjDsWPHchxxVpTk6jhE5DGsSX8dsGaNf+MIW4rVYd7IGDPc51YqilKiERGmT3+b9evXMmhQd4YPv5WXX57i9Wv7mWee4fDhw17PEx0dTceOOTdw/P73v+d///sfYL3QN27cSOfOnZk/fz4tWrTwmic8PJy5c+cydOhQ2rZtS9euXdm1axdhYWE8+OCDtGnThoEDB9KlS5cCXLknFSpU4NVXX6Vv3760bNmSwYMHEx0dDcDEiRNZsmQJADNmzGDOnDm0a9eOoUOHMnfuXESEV199lb179/L888+7+lJOnLAWSN20aRNdu3alQoVCNSTZQnJbJ0lEdgD/NMa8KSK3Yi3C9C3w/4wxSTlm9CPNm1cyu3en5Zwg3lENjj+X63mcI01yWnM8/GCszhwvInTmuH9njsfHx9O3b19Xu70/OH06hbNnU2nc2BrFv2PHCS5dyqBDhzq2h8oWhC1btjBz5sxcO9FLK4899hgxMTH06dMnW9zOnTtpmUUzS0Q2GWM6F6SsvFxTQ2A5gDFmhYhkABOKi9NQFKX4sWnTEdc6GQ0aZFK+fHmio/0jxdGhQwd69epFZmamTx1UcaR169ZenYYvyMtxBGPNFHeShjUZUFEUxYO9e09z9qxn5/Fvv12gfv3qOeTwDffff79fyysu5DXHpSix0xg2QkQuuKW/T0Q8ahzGGP9MV1QUpdiRVZDQSXR0OMHBRbcGhFJ8yMtxnACecDs+iyV46I4B1HEoShnk8uXMbE6jWrVKNGtWfDVslcKT1wqA1/jLEEVRSh4VK17tRxCBTp2yj5JSSh++H7flJ/4zNZ5ft2z0EuMYueMYzeLkk9ti+aVB86sBfa8Dro6iysqIpQ2YsfR2r3FK/nCugjfjHr2fJY3MzEy2bDnu4SSaNatJWlom4eFV8sitlBbsalUVe7w7jZzxcBp50PjA7vyaoyg50qhDgUZABpydO0+yZYs1NsYY+O03S4SvWrXKtpxGXrLq7npMY8aMYe7cuQCMGDGC6667rkzJqh84cIA+ffrQtm1bevbs6ZrXsnXrVrp160Z0dDRt27blo48+cuUZMmQIiYmJfrmGUlPjcJJtfHwO8zimO2oWx3pZCp05zeMAaDMvlrn9dQXAosI5j6OwcxkU/3D+fCp79pzOFh4RYb+G4ZRVHz58OAsXLgSsl+Dx48epV68eERER/OMf/+Dhhx8mKCgoW36nrPqoUVm7WD0piKy6McalAeVrnLLqK1asIDIyki5duhATE5NNHXfcuHEMGzaM4cOHs2rVKp566ik++OADQkJCeP/992natClHjhyhU6dO9O3bl7CwMEaNGsW0adOYM2eOz6+j1DkORVHyID5/w2OrAV7rSFn9fi6TbO3Iqt94443MmzfP67DSsiarnpCQwKxZswDo1asXAwcOBKBZs2auNHXr1iUiIoKTJ08SFhZGjx49GDFiBBkZGT6fPV5qmqoURSm+ZJVV98aECROYMWOG12amsiar3q5dOz755BMAFi9eTHJycja59PXr15Oenu4SOixXrhxRUVH89NNPOd6josK2WxKRii7Sr+YAACAASURBVEBfoAnwnjHmvIjUA84ZY877ykBFUYqYXGoGly9nkpycRs2aIQBs3nyUK1cMzZrV9FhYyRc0atSI66+/XmXVgZdfftnVz3PTTTdx3XXXedQijh49SmxsLPPmzfNoZnPKquflpAuLLcchIg2BFUAdIAT4HDgPjMWaXf6wb8xTFMVfbNt2nLQ062vf6Tg6dry2SM4dHR2do7qsOyqrblG3bl3+85//AFaT2yeffEL16lYT4/nz5xkwYACTJ092OT93m4uFrLqDfwDrgFp4SpAsBvwjjqIoik9ISkph48YjLqcBV0dMFRW9e/cmLS3No+N2w4YNfPPNNx7pVFbdIikpybUW+pQpU1wyKunp6QwaNIhhw4Zx9913Z8u3Z88el9quL7HrOG4EphhjLmcJPwDojB9FKaFs2nSE/fvPeoTVrRvKdddVK9JyRITFixezYsUKmjRpQnR0NPHx8SqrnoOs+po1a2jevDnNmjXj+PHjrnXEFy1axNq1a5k7d66rL2XrVmuE6PHjxwkODubaa4umlpgbucqquxKJnAFuNMYkiEgy0M4Y84uI/A74xBhTx9eG5oRTVj1HueochuNek6/huG0AHY5bVJRlWfWiorCy6pcuXWbHDk+pkAoVytG+fckWiyjLsuqzZs2iWrVqPPDAA9niilpW3W6NYwXwZ7djIyJVgDgcsuuKopQcsooPRkeHl3inAZ6y6mWNsLAwhg/3z7p6dh3HOKCviPwMVAbeB34BGgHj7RYmIv1EZLeI7BWRCTmkGSwiCSKyQ0S8D69QFCXfbN16jK1bj7mO69SpQvXqlejcuW6pUrG9//77y9xaHAAjR470y+p/YHNUlTHmoIi0BYYBHbEczkfA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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"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAELCAYAAAAlTtoUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3de7xcZX3v8c83N0LAIyGJFYFko1ArKI2yxQscBaE0YAsea49JNxUqnrQgRzzt6SkcFBFBaz31VgmalnghWxBQ2ogochEQFEuCgFxKiUggDZIQMEXCLcnv/PGsMZPZa/Zes/dc1sx836/Xeu1Zz1pr5rf27D2/eS7rWYoIzMzMipjU6QDMzKx7OGmYmVlhThpmZlaYk4aZmRXmpGFmZoVN6XQArTZ79uwYGBjodBhmZl1j1apVj0fEnLxtPZ80BgYGWLlyZafDMDPrGpLW1Nvm5ikzMyvMScPMzApz0jAzs8KcNMzMrLC2doRLWgb8AbA+Il6ds/2vgaGq2F4FzImIJyQ9BDwFbAW2RMRge6I2M7OKdtc0vgIsqLcxIj4VEfMjYj5wBnBjRDxRtcvh2XYnDGu54WEYGIBJk9LP4eFOR2TWeW2taUTETZIGCu6+CLi4ddGY1Tc8DIsXw+bNaX3NmrQOMDRU/zizXlfKPg1JM0g1km9WFQfwfUmrJC0e4/jFklZKWrlhw4ZWhmo96swztyeMis2bU7lZPytl0gD+ELilpmnqkIh4HXA08H5Jb6l3cEQsjYjBiBicMyf3okazUT38cGPlZv2irEljITVNUxGxLvu5HrgCOLgDcVmfmDu3sXKzflG6pCHpxcBbgX+pKttF0osqj4GjgLs7E6H1g/POgxkzdiybMSOVm/Wzdg+5vRg4DJgtaS3wEWAqQER8MdvtvwHfj4inqw79LeAKSZBi/npEfK9dcVv/qXR2H398+jlvXkoY7gS3fqdev0f44OBgeMJCG6/0PQV6/N/EbAeSVtW7tKF0zVNmZlZeThpmZlaYk4ZZAW6eMkucNMwKcNIwS5w0zApw0jBLnDTMzKwwJw2zAlzTMEucNMwKcNIwS5w0zApw0jBLnDTMzKwwJw2zAlzTMEucNMwKcNIwS5w0zApw0jBLnDTMzKwwJw2zAlzTMEucNMwKcNIwS5w0zMysMCcNswJc0zBLnDTMCnDSMEvamjQkLZO0XtLddbYfJmmTpDuy5ayqbQsk3S9ptaTT2xe1mZOGWUW7axpfARaMsc8PI2J+tpwDIGkycD5wNLA/sEjS/i2N1MzMRmhr0oiIm4AnxnHowcDqiHgwIp4HLgGOa2pwZqNwTcMsKWOfxpsk3Snpu5IOyMr2BB6p2mdtVpZL0mJJKyWt3LBhQytjtT7hpGGWlC1p3A7Mi4jfBf4B+OesXDn71v03joilETEYEYNz5sxpQZjWb5w0zJJSJY2I+M+I+HX2+CpgqqTZpJrF3lW77gWs60CIZmZ9rVRJQ9JLJSl7fDApvo3AbcB+kvaRNA1YCKzoXKTWb1zTMEumtPPFJF0MHAbMlrQW+AgwFSAivgi8CzhZ0hbgGWBhRASwRdKpwNXAZGBZRNzTztitvzlpmCVtTRoRsWiM7V8AvlBn21XAVa2Iy2wsThpmSamap8zMrNycNMwKcE3DLHHSMCvAScMscdIwK8BJwyxx0jAzs8KcNMwKcE3DLHHSMCvAScMscdIwM7PCnDTMCnBNwyxx0jArwEnDLHHSMCvAScMscdIwM7PCnDTMCnBNwyxx0jArwEnDLHHSMCvAScMscdIwM7PCnDTMCnBNwyxx0jArwEnDLHHSMCvAScMsaWvSkLRM0npJd9fZPiTprmz5kaTfrdr2kKSfSbpD0sr2RW1mZhXtrml8BVgwyvZfAG+NiAOBjwFLa7YfHhHzI2KwRfGZ5XJNwyyZ0s4Xi4ibJA2Msv1HVau3Anu1OiazIpw0zJIy92mcBHy3aj2A70taJWlxh2IyM+trba1pFCXpcFLSOLSq+JCIWCfpJcA1kv4tIm6qc/xiYDHA3LlzWx6v9T7XNMyS0tU0JB0I/BNwXERsrJRHxLrs53rgCuDges8REUsjYjAiBufMmdPqkK0POGmYJaVKGpLmAt8C/jQi/r2qfBdJL6o8Bo4CckdgmTXD8DAMDGxfX7GiY6GYlUpbm6ckXQwcBsyWtBb4CDAVICK+CJwFzAKWSALYko2U+i3giqxsCvD1iPheO2O3/jE8DIsXw+bN28s+/GHYYw8YGupcXGZloOjxevfg4GCsXOnLOqy4gQFYs2Zk+bx58NBD7Y7GrP0krap3aUOpmqfMyuDhhxsrN+snhZOGpNdK+pakxyVtkfS6rPzjkka7YM+sq9QbcOeBeGYFk4akQ4EfA78DfL3muG3AXzQ/NLPOOO88mDp1x7Lp01O5Wb8rWtP4W+Bq4ADgL2u23Q68rplBmXXS0BAsXLhj2dlnuxPcDIonjdcBF0TqNa/tOX8c8MUQ1lNe//od19/+9s7EYVY2RZPGs8CMOtv2ADY1JxyzcurxQYZmhRVNGjcDH5Q0uaqs8m90EnB9U6MyM7NSKnpx34eBW4A7gctJCeMESZ8GDgJeP8qxZl3PNQ2zpFBNIyLuBN4CPAacCQg4Ndv81oi4vzXhmZWDk4ZZUngakYi4HThC0nRgd+BXEbF5jMPMeoKThlnS8NxTEfEssK4FsZiZWckVShqSzhpjl4iIjzUhHrNSck3DLCla0zh7lG2VfycnDetZThpmSdGO8Em1C2kK8xNJ97XYt4UxmplZSYz7fhoR8STwNUmzgPOBY5oWlVnJuKZhljRjavTKcFyznuWkYZY0I2n8AbChCc9jVlpOGmZJ0dFTy3KKpwGvBl5Dum2rmZn1uKJ9Gm9j5Oy2zwJrgM8CX21mUGZl45qGWVIoaUTEQIvjMCs1Jw2zpO33CJe0TNJ6SXfX2S5Jn5e0WtJdldvKZttOkPRAtpzQvqit3zlpmCV1axqSGhoRFRE3Fdz1K8AXgK/V2X40sF+2vAG4AHiDpN1JfSeDpKayVZJWZEN/zZrKScIs32jNUzcwsh8jj7L9Jo+1I6TkImlglF2OA76W3SXwVkm7SdoDOAy4JiKeAJB0DbAAuLjI65pNhJOIWTJa0ji8bVHsaE/gkar1tVlZvfIRJC0GFgPMnTu3NVFaT5N2XHfSMEvqJo2IuLGdgVRRTlmMUj6yMGIpsBRgcHDQ/+42YU4aZknbO8ILWAvsXbW+F2kq9nrlZmbWJoXnnpL0atL9wF8JTK/ZHBFxRJNiWgGcKukSUkf4poh4VNLVwMclzcz2Owo4o0mvaTYq1zTMkqJXhL8BuBF4iDSq6S5gJjCXVANYXfQFJV1M6tSeLWktaUTUVICI+CJwFWnyw9XAZuDPsm1PSPoYcFv2VOdUOsXNmq02SThpmCVFaxofB74F/CnwAnBSRNwu6W3ARcC5RV8wIhaNsT2A99fZtgzIm9LEzMzaoGifxoHAcrZ3PE8GiIjrSQnjE80PzaxzPHrKLF/RpDEVeDoitgFPAHtUbbufNHGhWc9y0jBLiiaNn7P9moi7gPdKmiRpEqnP4ZetCM6sLJw0zJKifRrfJnVef53Uv/Ed4D+BrcCuwAdaEZyZmZVL0Vluz656fK2kNwJ/BMwAvhcR329NeGad4dFTZvnGdY/wiPgp8NMmx2JWWk4aZkmhPg1J35L0DklTWx2QWRk5aZglRTvCf4d0ncajks7PmqfMelbtkFszSwoljYjYH3g96VqNdwK3ZDdC+rCkl7cyQLMycE3DLCk8YWFErIqID5ImCvxD0nQefwM8IOmHLYrPrBScNMyShme5jYitEXFVRPwJqdaxDnhz0yMz6yCPnjLL1/DoKUmvAI4HhoBXAI8Cf9/kuMzMrISKznI7E3g3acLCN5Jmn72CNLHgtdkkg2Y9y3/hZknRmsYvSZMUXg+cCHwzIja3KiizTvOEhWb5iiaNDwHLI+LRVgZjZmblVnQakU+1OhCzMnNNwywp4z3CzUrHScMscdIwy+Eht2b5nDTMcjhJmOVre9KQtEDS/ZJWSzo9Z/tnJN2RLf8u6VdV27ZWbVvR3sitn7imYZZvXFOjj5ekycD5wO8Ba4HbJK2IiHsr+0TE/6ra/38Cr616imciYn674rX+5aRhlq/o1OjHSfqzqvV5kn4s6SlJl0vateDrHQysjogHI+J54BLguFH2XwRcXPC5zZrGScMsX9HmqQ8Bc6rWP02auHAp8Bbg7ILPsyfwSNX6Wrbfe3wHkuYB+5AuKKyYLmmlpFslvaPga5o1zEnCLF/R5qlXAHcBSNoZOAZ4T0RcJuk+4Azgfxd4nry7FNT791wIXB4RW6vK5kbEumw69usl/Swifj7iRaTFwGKAuXPnFgjLbEeuaZjlK1rTmA48kz1+MynZVO4Lfj/wsoLPsxbYu2p9L9IsuXkWUtM0FRHrsp8PAjewY39H9X5LI2IwIgbnzJmTt0thw8Mwe3aaVkJKj4eHJ/SU1gW2bdtx3UnDLCmaNB4CDs0eHwesiohN2fpLgE15B+W4DdhP0j6SppESw4hRUJJeCcwEflxVNlPSTtnj2cAhwL21xzbDKadsTxLHHw8bN27ftnFjKtt1VyePXuaahlm+oknjS8DZklYCpwAXVm17EwU/vCNiC3AqcDVwH3BpRNwj6RxJx1btugi4pGb23FcBKyXdCfwA+NvqUVfNcsopcMEFY+/39NMpeRxwQLMjsDJwkjDLV3Tuqc9Jepw0LfrnI+JrVZtfBHy56AtGxFXAVTVlZ9Wsn51z3I+A1xR9nfEqkjCq3XsvTJoEF10EQ0OticnazzUNs3yFr9OIiGFgRINMRPx5UyPqQhGp1nHLLbBkSaejsWZw0jDLV/Q6jd+WdHDV+s6SPiHp25JObV143eWCC+DIIzsdhTWDk4ZZvqJ9Gl8A3lW1fh7wV6RRU5+R9P5mB9atrrvOiaMX1I6eMrOkaNI4ELgFQNIk4D3A30TEQcC5ZNdEWHLddalD3bqXaxpm+Yomjd2AysDT15KGw16erd8AvLy5YXVOsz4cLrjAQ3K7mZOGWb6iSeMxYN/s8VHAzyOiMh3IrsCWZgfWSRGwfDnMmjWx5znzzObEY+3nJGGWr2jSWAF8QtL/I/VlXFa17TXAg80OrNOGhuDxx9OHRwQccUTjz/Hww82Py9rDNQ2zfEWH3J5Omkrk90kJ5ONV245l+5QiPevaa2H6dHjuueLH7L576+Kx1nLSMMtX9OK+p4H/UWfbm5saUYldeGG6HqOoZ59tXSzWWp57yixfQ3fuk7S7pLdL+lNJx0jqq+/SQ0Ow007F93/6aXeGdysnCbN8hZOGpHOB/wC+DXwVuBL4D0kfa1FspXThhWPvU82d4d3JzVNm+YpeEf5B4P8Cy4HDSZMHHp6t/19JH2hZhCXT6PxSa9a4ttGNapPEzTfDwECaZ2xgwO+p9a+iHeF/AXyu+v7dpPto3Cjp16SZbz/f7OB6xeLs0kdPaNg9apPGhRfC88+nx2vW+D21/lW0eWoA+E6dbd/JtveNyZMb23/zZjdTdZvapFFJGBV+T61fFU0aG4FX19l2ANuvFu8Li8cxaYqv2eguReae8ntq/aho0rgC+Fg2amoqgKQpkhYB5wDfbFWAZbRkCUyb1tgxvlV5dynS8e331PpR0aRxBnAHadTUZkmPke4ZPgzcSeok7yvLlhXfd+pUOO+81sVizVebNGq/JMyY4ffU+lPRi/uekvQW4O3AfwV2B54AbgS+W3Nb1r4wNFT8Qr9p09xh2m1q/6KnTNnerzFrFnzuc35PrT81cue+IF2bcWXrwulNlYv8/CHTPWqTxubN2x8/80x7YzErk4auCLcdNTKK6rTTWheHNd9odWePnLJ+VjdpSNomaWvBpfDU6JIWSLpf0mpJp+dsP1HSBkl3ZMv7qradIOmBbDmh8dNtrkZGUW3sq/Fl3W+s0VMeOWX9arTmqXOApvZVSJoMnA/8HrAWuE3Sioi4t2bXb0TEqTXH7g58BBjM4lqVHftkM2NsxJIl6WZLRbmJqnuM1UvnkVPWr+omjYg4uwWvdzCwOiIeBJB0CXAcUJs08vw+cE1EPJEdew2wALi4BXG2xGmnOWl0i9GSxs47e+SU9a9292nsCTxStb42K6v1R5LuknS5pL0bPBZJiyWtlLRyw4YNzYi7KdxE1T1GG3LrkVPWz9qdNJRTVvud7tvAQEQcCFxLujak6LGpMGJpRAxGxOCcOXPGHaz1r9qkse++2x8fe2x7YzErk3YnjbXA3lXrewHrqneIiI0RUbk/3j8CBxU9thMmNfgb9Oyo3WG0IbeN3L3RrNe0O2ncBuwnaR9J04CFpNvH/oakPapWjwXuyx5fDRwlaaakmcBRWVlH7bxzY/svXuzE0Q1qR089/fT2x04a1s/amjQiYgtwKunD/j7g0oi4R9I5kiqV/g9IukfSncAHgBOzY58APkZKPLcB51Q6xTup+hto0f3LOsZ/eNj3jKiorWk4aZglha8Ib5aIuAq4qqbsrKrHZ5Dmuso7dhnQwKxPrTd3brq/QiPKOMZ/eDjVgipJsN/vGTFa81TtNOlm/cRXhE/QeIZelnGM/5lnjqw1lblW1GqjDbl1TcP6mZPGBA0NpQnsGvHrX5evCahe7aeMtaJ2cNIwy+ek0QTz5ze2/8aN6UOp0gRUhsRRr/ZTxlpROzhpmOVz0miCG24Y/7FlaQI677x0j4hq/XzPiNGSxoIF5aolmrWTk0YTbN06sePL0AQ0NARLl8KLXpTWZ85M6/3YCQ5jT1i4Zk26n8rs2U4e1l+cNJqgkSnS85SlCWhoCN6XzSn8oQ/1b8KAYrd7hdTUWJYmRrN2cNJogkamSM9Txiag/rsX444aOf+yNDGatYOTRhMsWQLKmxmrgFmzyvWNfrzn0WsaTZplaGI0awcnjSYZzzfzGTPSjKlWPo2+n2VpYjRrNSeNJhlPv8YJJ5SrllHNzVPF9+3nUWbWf5w0mmQ8/Rpf+1rz45goN08leaOnFi1KP9/97u1l8+b19ygz6z9OGk2yZEnjx1RPgmflklfTmD49/XzNa7aXPfSQE4b1FyeNJmp0OhErr7ykUZkG/4UX2huLWZk4aTSRO7V7R17SmDo19V05aVg/c9JoovE0U5T1ojB3hI8smzw5JY5G76Fi1kucNDrsPe8pV+JwR3iSlzSmTHHSMHPSaLJG+zW2bYPTTmtNLBPR7zWNvNFTU6bAtGlOGtbfnDSabDz9Ghs3lqe2UalpTHQSxm7n5imzfE4aTTbe4ZfHHw+nnNLcWMaj8mH5yU+W70ZR7TRa85SHSls/a3vSkLRA0v2SVks6PWf7X0q6V9Jdkq6TNK9q21ZJd2TLivZG3noXXND5D+h7700/N20q342i2mF4OCXKFTl/Xe7TMGtz0pA0GTgfOBrYH1gkaf+a3X4KDEbEgcDlwN9VbXsmIuZny7FtCbrNOj1b6g9/OLKsX2ZxHR5OCXLNmvztThpm7a9pHAysjogHI+J54BLguOodIuIHEVH5t7wV2KvNMU7YpAn8Vjs9W+pTT+WXdzqudjjzzNETQqVPw81T1s/anTT2BB6pWl+bldVzEvDdqvXpklZKulXSO+odJGlxtt/KDRs2TCzicRjrrm+jiehsP8Kuu+aX98MsrmMlRtc0zNqfNPKuAsgd3CnpeGAQ+FRV8dyIGAT+BPispFfkHRsRSyNiMCIG58yZM9GYGzZv3tj7jKaT/Qivf/3Isn6ZxXWsxJg35LbfhyZb/2l30lgL7F21vhewrnYnSUcCZwLHRsRzlfKIWJf9fBC4AXhtK4Mdr2Z8wHaqH2GffXZc33vv/pnF9bzzUoKsJ695qt+HJlv/aXfSuA3YT9I+kqYBC4EdxqlIei3wJVLCWF9VPlPSTtnj2cAhwL1ti7wBQ0PpW+lEtbMfoTJqaNmyHctvu60/Egak81y6FHbZJX97pXnqmWe2lz3/fHtiMyuLtiaNiNgCnApcDdwHXBoR90g6R1JlNNSngF2By2qG1r4KWCnpTuAHwN9GRCmTBtT/4GlEu/oRRhs11G/t90ND2++bUauSNKp58kLrN034PtyYiLgKuKqm7Kyqx0fWOe5HwGvytpXRpk0TO76d/QijjRo65BD45S9TAjvvvP6oddSrJVaap6q5pmH9xleEt8ieo40JG0O77wY3WjPYo4/230V+9ZJGXk3DScP6jZNGixyZW18qZs2aNPttu6YVKdoM1i8X+TWSNNw81RyVPrV+nrqmWzhptMDwMFx66cSeY9u2NK1IOxLHWKOGqvXDRX61iaGiMuS22iGH+ANuoqr71PqtVtuNnDRa4MwzdxxhMxFf+lLrv4FVRg3ttNPY+/bDRX713HwzXHbZjmXr1vkDbqLy+tT6pVbbjZw0WqCZ38a3bWvPN7ChITj00NH36ZeL/Oo1OZ1/fn4fhj/gJqbe/0s/1Gq7kZNGC7Ty23grP6DGurbkhBP6Y/RUvaTx3HP55eAPuImo9//Sz7XaMnPSaIFG+gjGo9kfUJVOyKuvHn2/pUv7oxnm3nFc/eMPuPHL+3/pl1ptN3LSaIFKH0Gjt34tqpkfUGNNB15t69Ydm8d6ccTL8DDcdFPjxx1zTPNj6ReV/5eKuXP7Z+qarhQRPb0cdNBB0UknnxwhRaReiYkvM2ZELF/evPjmzWs8hnnzUgwzZrQ2tk4Yz+8DIqZOjZg1K73Xld+PNabyu3zqqU5HYsDKqPOZ6ppGiy1ZAhdd1Jxax6xZzf8GNp6mrocf7t0RL6P9PgYH62974YV0r3cPGZ240fqOrPOcNNpgaAiefXbiz7NxY7qXuNS85qDxNHXNndu7I15G+32sXZuSQRG9kEA7pRn/K9Y6Thpt0uy7vVWuGp9o4mi0077SQdmrI15G63x97LHGrvTv9gTaKU4a5eak0cW2bYP3vndkZ3QjHdS1nZCjqZ4TKy/ZSM3vEB5PZ/tEOuiHhupfEf7Sl9a/s2Gebk+gndILSaMXB4n8Rr3Ojl5ZOt0RXjFpUvM6w8daJk9uvIN6rOd88YtHHnPyyfkdwo12Ai9fnjqPazuR8zrbK4MK6nU2N6OD/oAD8t+vv/u7iBtvLP4+nHxy/nnZjirvf+X3du65nY5oYnphkAijdIR3/EO91UtZkkbeB2w7l0mTInbZZfv6LrtsH+0za9bYx0+ZMvLDvfr5qpdddtlx31mz6o8sGi0x1Ca/2iUvgdQb/TRv3tjvUfWH1+TJETvvvONzvOxl6QOt6O+8dtRct31wtEPe+7/TTt39e5rI32BZOGmURKcTRzuXqVPrb6v+sC+SsIoslQ/kesObpdHfm7wPr7zaxvTpE4uzkuCqk+94aiR5tbN6NbZ2PE8jqp9/tC8G3Vo7G+/fYJk4aZTI8uXN+ZD0MnKZPLl+Esr7sK5uBhurVtPMZazrdsaqkeQlOBiZ5KZNG/k8tTXAadPGjne8NaTly3d8P2bNSgkyL/Zmv3YnuabR5UvZkkZE+z6cvKRl6tSIXXfN3zZlSufjy1tG+4Bp5ALEWbO2H1cv2TQSU9EP8OXLR69tNrLMmtVdfUN55z5WX1zZOGmUTLOaZLwUW8qaGIoseR8yjc4wUDHeq92rl6Lf/JvxWvWWRj+Aiza3NbNZ7p3vHBlvo7/DTnLSKBk3UXlp51I7OqkZS2VwA2xv2qvuE2nn+c2aNXJwxWhNcHlTvow24qneoI7RBnicdlp6jnqDRUZrLi2DUiUNYAFwP7AaOD1n+07AN7LtPwEGqradkZXfD/x+kdcrY9KI6K9OcS9evHRmmTQpfdY0arSk0daL+yRNBs4Hjgb2BxZJ2r9mt5OAJyNiX+AzwCezY/cHFgIHkBLPkuz5utKSJbB8eWMXi5mZNaIVt41u9xXhBwOrI+LBiHgeuAQ4rmaf44CvZo8vB46QpKz8koh4LiJ+QapxHNymuFtiaAieeiolDzOzVik660MR7U4aewKPVK2vzcpy94mILcAmYFbBYwGQtFjSSkkrN2zY0KTQW2doCI44otNRmFmv2rq1ec/V7qShnLIouE+RY1NhxNKIGIyIwTlz5jQYYmdcey2cfHKnozCzXjS5iQ357U4aa4G9q9b3AtbV20fSFODFwBMFj+1qS5Zs78Jyf4eZNUvRKf2LaHfSuA3YT9I+kqaROrZX1OyzAjghe/wu4PqsN38FsFDSTpL2AfYD/rVNcbddpb+jOom06vaxZtabJk1KLRhLljTvOac076nGFhFbJJ0KXA1MBpZFxD2SziEN8VoBXAhcJGk1qYaxMDv2HkmXAvcCW4D3R0QTW+rKbWjI90w2s85T+hLfuwYHB2PlypWdDsPMrGtIWhURuTc49k2YzMysMCcNMzMrzEnDzMwKc9IwM7PCer4jXNIGYM04Dp0NPN7kcMqm18+x188Pev8ce/38oJznOC8icq+M7vmkMV6SVtYbPdArev0ce/38oPfPsdfPD7rvHN08ZWZmhTlpmJlZYU4a9TVxMuHS6vVz7PXzg94/x14/P+iyc3SfhpmZFeaahpmZFeakYWZmhTlp5JC0QNL9klZLOr3T8YyHpGWS1ku6u6psd0nXSHog+zkzK5ekz2fne5ek13Uu8mIk7S3pB5Luk3SPpNOy8l46x+mS/lXSndk5fjQr30fST7Jz/EZ2mwGy2wZ8IzvHn0ga6GT8RUmaLOmnkq7M1nvt/B6S9DNJd0hamZV17d+pk0YNSZOB84Gjgf2BRZL272xU4/IVYEFN2enAdRGxH3Bdtg7pXPfLlsXABW2KcSK2AH8VEa8C3gi8P3ufeukcnwPeFhG/C8wHFkh6I/BJ4DPZOT4JnJTtfxLwZETsC3wm268bnAbcV7Xea+cHcHhEzK+6HqN7/04jwkvVArwJuLpq/QzgjE7HNc5zGQDurlq/H9gje7wHcH/2+EvAorz9umUB/gX4vV49R2AGcDvwBtLVw1Oy8t/8vZLuU/Om7PGUbD91OvYxzmsv0ofm24ArSbd17pnzy2J9CJhdU9a1f6euaYy0J/BI1frarKwX/FZEPAqQ/XxJVt7V55w1U7wW+Ak9do5Z080dwHrgGuDnwK8iYku2S05qaUQAAAWVSURBVPV5/OYcs+2bgLLf7/GzwP8BtmXrs+it8wMI4PuSVkmq3Hi1a/9O23rnvi6hnLJeH5fctecsaVfgm8AHI+I/pbxTSbvmlJX+HCPdnXK+pN2AK4BX5e2W/eyqc5T0B8D6iFgl6bBKcc6uXXl+VQ6JiHWSXgJcI+nfRtm39OfomsZIa4G9q9b3AtZ1KJZme0zSHgDZz/VZeVees6SppIQxHBHfyop76hwrIuJXwA2k/pvdJFW+8FWfx2/OMdv+YtItk8vqEOBYSQ8Bl5CaqD5L75wfABGxLvu5npT4D6aL/06dNEa6DdgvG8ExjXSP8hUdjqlZVgAnZI9PIPUDVMrfk43ceCOwqVJ1LiulKsWFwH0R8emqTb10jnOyGgaSdgaOJHUY/wB4V7Zb7TlWzv1dwPWRNYyXUUScERF7RcQA6f/s+ogYokfOD0DSLpJeVHkMHAXcTTf/nXa6U6WMC3AM8O+k9uMzOx3POM/hYuBR4AXSt5eTSO2/1wEPZD93z/YVacTYz4GfAYOdjr/A+R1KqrbfBdyRLcf02DkeCPw0O8e7gbOy8pcD/wqsBi4DdsrKp2frq7PtL+/0OTRwrocBV/ba+WXncme23FP5POnmv1NPI2JmZoW5ecrMzApz0jAzs8KcNMzMrDAnDTMzK8xJw8zMCnPSsL4k6WxJkT3eLVvv2IyikuZnMeyesy0knd2BsMxGcNKwfvVPpMnwAHYDPgJ0chrq+VkMI5IGKc5/am84Zvk895T1pYhYS7rosSWyK9anRsTzE32uiLi1CSGZNYVrGtaXKs1T2Qy5v8iK/zErC0knVu37Tkm3Stos6VeSLpM0t+b5HpK0XNJ7swnpngfenm37qKTbJW2S9Lik67MpIirHngh8OVt9oCqGgWz7iOYppRuF/VjSM9nz/rOkV9bsc4OkmyUdmb3+Zkl3S3rHBH991secNKzfPQq8M3v8CVJT0JuA7wBI+gvSpIj3kuY7+nPg1cCNlTmFqhwO/CXwUdINsO7Kyvck3TToHcCJpMnpbpJ0YLb9O8C52eM/roohd84hSQuyY34NvBs4OYvpZkm102i/Avgc8OnsPB8FLpe076i/FbM63DxlfS0inpP002z1weqmoGza9U8CX46I91aV/4Q0N9lJpFlZK2YCB0XEL2te431Vx04Gvkeah+gk4LSI2CDp59kud0TE6jHCPhd4EDg6svtOSPpxFtNfkRJXxWzgLRHxQLbf7aTE8d+Bj4/xOmYjuKZhVt+bgP8CDEuaUllIfSH/BrylZv9baxMGQNY89ANJG0m3qX0B+G3glbX7jiWbKfV1wDdi+42KiIhfALcAb6055IFKwsj2W0+q6czFbBxc0zCrr3I3tWvrbH+yZn1Ec1I2jPcq0q1KT8r22UoaDTV9HDHNJM2Emtd09UtgXk1Z3v0mnhvna5s5aZiNYmP280RSc1Ktp2rW86aM/iNS7eKdEfFCpVDSTOBX44jpyex1Xpqz7aVsj9msJZw0zNI3b4Cda8p/REoM+0bEV8f53DNINYvfJBRJbyM1D/2iar96MewgIp6WtAr4Y0lnR7odLJLmAW8G/mGccZoV4qRhBo+RvqEvlHQX8DTwi4jYKOmvgfMlzQG+C2wijYZ6K3BDRHx9jOf+HvBB4CuSvkzqy/gw8B81+92b/Xy/pK+S+j3uqnOdx4dJo6eulLQE2JU0YmsT8PcNnLdZw9wRbn0vIrYB7yP1F1xLuuXvH2bbvgQcS+q0voiUOD5K+sJ1R4Hnvhr4AOl+2FcC7wXeQ7r7XPV+dwJnZ697cxbDy+o85/dI14DsBlwKfJF0G9hDI7sftVmr+M59ZmZWmGsaZmZWmJOGmZkV5qRhZmaFOWmYmVlhThpmZlaYk4aZmRXmpGFmZoU5aZiZWWH/H2yUXV8n/+tjAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"roc_ = []\n",
"prc_ = []\n",
"scores_ = []\n",
"labels_ = []\n",
"\n",
"drug_encoding = 'CNN'\n",
"\n",
"for i in range(10):\n",
" roc, prc, scores, labels = eval('run_' + drug_encoding + '(i, True)')\n",
" roc_.append(roc)\n",
" prc_.append(prc)\n",
" scores_.append(scores)\n",
" labels_.append(labels)\n",
" \n",
"print('ROC-Mean {:.4f}'.format(np.mean(np.array(roc_))))\n",
"print('ROC-STD {:.4f}'.format(np.std(np.array(roc_))))\n",
"print('PRC-Mean {:.4f}'.format(np.mean(np.array(prc_))))\n",
"print('PRC-STD {:.4f}'.format(np.std(np.array(prc_))))\n",
"\n",
"with open('./scores_aicures/' + drug_encoding + '_score.pkl', 'wb') as f:\n",
" pickle.dump(scores_, f, pickle.HIGHEST_PROTOCOL)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def run_Pubchem(fold_n, balanced):\n",
" \n",
" train = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/train.csv')\n",
" dev = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/dev.csv')\n",
" test = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/test.csv')\n",
" \n",
" if balanced:\n",
" # oversample balanced training\n",
" train = pd.concat([train[train.activity == 1].sample(n = len(train[train.activity == 0]), replace=True), train[train.activity == 0]]).sample(frac = 1).reset_index(drop = True)\n",
" \n",
" X_train = train.smiles.values\n",
" y_train = train.activity.values\n",
" X_dev = dev.smiles.values\n",
" y_dev = dev.activity.values\n",
" X_test = test.smiles.values\n",
" y_test = test.activity.values\n",
" \n",
" drug_encoding = 'Pubchem'\n",
" train = data_process(X_drug = X_train, y = y_train, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" val = data_process(X_drug = X_dev, y = y_dev, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" test = data_process(X_drug = X_test, y = y_test, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
" \n",
" config = generate_config(drug_encoding = drug_encoding, \n",
" cls_hidden_dims = [512], \n",
" train_epoch = 20, \n",
" LR = 0.001, \n",
" batch_size = 128,\n",
" )\n",
" \n",
" model = models.model_initialize(**config)\n",
" model.train(train, val, test)\n",
" \n",
" scores = model.predict(test)\n",
" \n",
" return roc_auc_score(test.Label.values, scores), average_precision_score(test.Label.values, scores), scores, test.Label.values"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Drug Property Prediction Mode...\n",
"in total: 3330 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69445. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.67705 , AUPRC: 0.54223 , F1: 0.66666\n",
"Training at Epoch 2 iteration 0 with loss 0.00375. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.77051 , AUPRC: 0.55929 , F1: 0.37837\n",
"Training at Epoch 3 iteration 0 with loss 0.11038. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.71200 , AUPRC: 0.54578 , F1: 0.66666\n",
"Training at Epoch 4 iteration 0 with loss 0.00301. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.72378 , AUPRC: 0.54749 , F1: 0.66666\n",
"Training at Epoch 5 iteration 0 with loss 0.00020. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.72150 , AUPRC: 0.54719 , F1: 0.66666\n",
"Training at Epoch 6 iteration 0 with loss 0.00012. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.71238 , AUPRC: 0.54589 , F1: 0.66666\n",
"Training at Epoch 7 iteration 0 with loss 0.00014. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.73442 , AUPRC: 0.54926 , F1: 0.66666\n",
"Training at Epoch 8 iteration 0 with loss 0.03359. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.70250 , AUPRC: 0.54478 , F1: 0.66666\n",
"Training at Epoch 9 iteration 0 with loss 1.26363. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.73708 , AUPRC: 0.54992 , F1: 0.66666\n",
"Training at Epoch 10 iteration 0 with loss 0.00057. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.74582 , AUPRC: 0.55138 , F1: 0.66666\n",
"Training at Epoch 11 iteration 0 with loss 0.00029. Total time 0.00277 hours\n",
"Validation at Epoch 11 , AUROC: 0.72872 , AUPRC: 0.54855 , F1: 0.60869\n",
"Training at Epoch 12 iteration 0 with loss 9.5415e. Total time 0.00305 hours\n",
"Validation at Epoch 12 , AUROC: 0.73632 , AUPRC: 0.54992 , F1: 0.66666\n",
"Training at Epoch 13 iteration 0 with loss 0.00200. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.70820 , AUPRC: 0.54533 , F1: 0.66666\n",
"Training at Epoch 14 iteration 0 with loss 0.01799. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.72872 , AUPRC: 0.54850 , F1: 0.66666\n",
"Training at Epoch 15 iteration 0 with loss 4.96348. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.72264 , AUPRC: 0.54748 , F1: 0.66666\n",
"Training at Epoch 16 iteration 0 with loss 0.00049. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.72226 , AUPRC: 0.54742 , F1: 0.66666\n",
"Training at Epoch 17 iteration 0 with loss 5.34333. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.72530 , AUPRC: 0.54793 , F1: 0.66666\n",
"Training at Epoch 18 iteration 0 with loss 7.22177. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.72682 , AUPRC: 0.54818 , F1: 0.66666\n",
"Training at Epoch 19 iteration 0 with loss 0.00029. Total time 0.005 hours\n",
"Validation at Epoch 19 , AUROC: 0.73100 , AUPRC: 0.54889 , F1: 0.66666\n",
"Training at Epoch 20 iteration 0 with loss 1.38050. Total time 0.00527 hours\n",
"Validation at Epoch 20 , AUROC: 0.72948 , AUPRC: 0.54862 , F1: 0.66666\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.6275510204081632 , AUPRC: 0.23000358688778547 , F1: 0.22222222222222224\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3328 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69281. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.76395 , AUPRC: 0.54152 , F1: 0.57142\n",
"Training at Epoch 2 iteration 0 with loss 0.16651. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.78045 , AUPRC: 0.52223 , F1: 0.66666\n",
"Training at Epoch 3 iteration 0 with loss 0.00369. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.79949 , AUPRC: 0.52417 , F1: 0.57142\n",
"Training at Epoch 4 iteration 0 with loss 0.00235. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.80710 , AUPRC: 0.52271 , F1: 0.66666\n",
"Training at Epoch 5 iteration 0 with loss 0.00170. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.85152 , AUPRC: 0.52808 , F1: 0.66666\n",
"Training at Epoch 6 iteration 0 with loss 0.00100. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.77664 , AUPRC: 0.51910 , F1: 0.57142\n",
"Training at Epoch 7 iteration 0 with loss 0.00306. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.78172 , AUPRC: 0.51947 , F1: 0.66666\n",
"Training at Epoch 8 iteration 0 with loss 0.00192. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.78807 , AUPRC: 0.52017 , F1: 0.66666\n",
"Training at Epoch 9 iteration 0 with loss 0.00029. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.78553 , AUPRC: 0.51993 , F1: 0.66666\n",
"Training at Epoch 10 iteration 0 with loss 0.00092. Total time 0.00277 hours\n",
"Validation at Epoch 10 , AUROC: 0.79314 , AUPRC: 0.52050 , F1: 0.66666\n",
"Training at Epoch 11 iteration 0 with loss 0.00099. Total time 0.00305 hours\n",
"Validation at Epoch 11 , AUROC: 0.74238 , AUPRC: 0.52179 , F1: 0.57142\n",
"Training at Epoch 12 iteration 0 with loss 0.00356. Total time 0.00333 hours\n",
"Validation at Epoch 12 , AUROC: 0.70685 , AUPRC: 0.51504 , F1: 0.66666\n",
"Training at Epoch 13 iteration 0 with loss 0.00220. Total time 0.00361 hours\n",
"Validation at Epoch 13 , AUROC: 0.78553 , AUPRC: 0.52496 , F1: 0.57142\n",
"Training at Epoch 14 iteration 0 with loss 0.00045. Total time 0.00388 hours\n",
"Validation at Epoch 14 , AUROC: 0.76649 , AUPRC: 0.51984 , F1: 0.66666\n",
"Training at Epoch 15 iteration 0 with loss 0.00104. Total time 0.00416 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 15 , AUROC: 0.76015 , AUPRC: 0.52001 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 0.00150. Total time 0.00444 hours\n",
"Validation at Epoch 16 , AUROC: 0.75888 , AUPRC: 0.51936 , F1: 0.4\n",
"Training at Epoch 17 iteration 0 with loss 0.00160. Total time 0.00472 hours\n",
"Validation at Epoch 17 , AUROC: 0.75 , AUPRC: 0.51838 , F1: 0.66666\n",
"Training at Epoch 18 iteration 0 with loss 0.02175. Total time 0.005 hours\n",
"Validation at Epoch 18 , AUROC: 0.74619 , AUPRC: 0.51757 , F1: 0.66666\n",
"Training at Epoch 19 iteration 0 with loss 8.15077. Total time 0.00527 hours\n",
"Validation at Epoch 19 , AUROC: 0.75126 , AUPRC: 0.51813 , F1: 0.66666\n",
"Training at Epoch 20 iteration 0 with loss 0.00040. Total time 0.00555 hours\n",
"Validation at Epoch 20 , AUROC: 0.75253 , AUPRC: 0.51838 , F1: 0.66666\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.6694528875379939 , AUPRC: 0.5404400263093706 , F1: 0.6363636363636364\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69174. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.69949 , AUPRC: 0.05266 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.01785. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.80934 , AUPRC: 0.08058 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.04158. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.69318 , AUPRC: 0.05504 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.00449. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.66287 , AUPRC: 0.04639 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.00061. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.63383 , AUPRC: 0.04120 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.00066. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.64267 , AUPRC: 0.03995 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00363. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.62752 , AUPRC: 0.03808 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00110. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.62247 , AUPRC: 0.03660 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 4.81866. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.60101 , AUPRC: 0.03485 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00011. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.61994 , AUPRC: 0.03624 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 0.00026. Total time 0.00277 hours\n",
"Validation at Epoch 11 , AUROC: 0.62247 , AUPRC: 0.03629 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 8.89656. Total time 0.00305 hours\n",
"Validation at Epoch 12 , AUROC: 0.61868 , AUPRC: 0.03514 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 0.00011. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.62247 , AUPRC: 0.03419 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 0.00015. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.59090 , AUPRC: 0.03172 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 6.93258. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.64015 , AUPRC: 0.04077 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 8.08018. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.51262 , AUPRC: 0.02524 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 0.02017. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.68813 , AUPRC: 0.05975 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 0.00025. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.68434 , AUPRC: 0.04927 , F1: 0.0\n",
"Training at Epoch 19 iteration 0 with loss 7.49411. Total time 0.005 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 19 , AUROC: 0.69191 , AUPRC: 0.04834 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 7.90500. Total time 0.00555 hours\n",
"Validation at Epoch 20 , AUROC: 0.69823 , AUPRC: 0.04901 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.9302030456852792 , AUPRC: 0.6122685185185185 , F1: 0.6666666666666666\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69416. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.96837 , AUPRC: 0.78490 , F1: 0.61538\n",
"Training at Epoch 2 iteration 0 with loss 0.27186. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.99914 , AUPRC: 0.97619 , F1: 0.74999\n",
"Training at Epoch 3 iteration 0 with loss 0.04388. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.98119 , AUPRC: 0.86904 , F1: 0.83333\n",
"Training at Epoch 4 iteration 0 with loss 0.00052. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.99914 , AUPRC: 0.97619 , F1: 0.83333\n",
"Training at Epoch 5 iteration 0 with loss 0.00172. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.99829 , AUPRC: 0.95833 , F1: 0.83333\n",
"Training at Epoch 6 iteration 0 with loss 0.03114. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.99743 , AUPRC: 0.94444 , F1: 0.83333\n",
"Training at Epoch 7 iteration 0 with loss 0.00045. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.99487 , AUPRC: 0.91666 , F1: 0.90909\n",
"Training at Epoch 8 iteration 0 with loss 0.00063. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.99743 , AUPRC: 0.94444 , F1: 0.90909\n",
"Training at Epoch 9 iteration 0 with loss 0.00056. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.99914 , AUPRC: 0.97619 , F1: 0.63157\n",
"Training at Epoch 10 iteration 0 with loss 0.03264. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.99658 , AUPRC: 0.91666 , F1: 0.8\n",
"Training at Epoch 11 iteration 0 with loss 0.00202. Total time 0.00277 hours\n",
"Validation at Epoch 11 , AUROC: 0.94017 , AUPRC: 0.84649 , F1: 0.90909\n",
"Training at Epoch 12 iteration 0 with loss 0.01929. Total time 0.00305 hours\n",
"Validation at Epoch 12 , AUROC: 0.97863 , AUPRC: 0.83888 , F1: 0.83333\n",
"Training at Epoch 13 iteration 0 with loss 0.02267. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.95726 , AUPRC: 0.85119 , F1: 0.90909\n",
"Training at Epoch 14 iteration 0 with loss 0.00365. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.99059 , AUPRC: 0.89215 , F1: 0.76923\n",
"Training at Epoch 15 iteration 0 with loss 0.00013. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.95897 , AUPRC: 0.85185 , F1: 0.90909\n",
"Training at Epoch 16 iteration 0 with loss 0.00166. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.99487 , AUPRC: 0.91666 , F1: 0.83333\n",
"Training at Epoch 17 iteration 0 with loss 0.00017. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.94615 , AUPRC: 0.84782 , F1: 0.90909\n",
"Training at Epoch 18 iteration 0 with loss 0.00096. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.98632 , AUPRC: 0.87878 , F1: 0.71428\n",
"Training at Epoch 19 iteration 0 with loss 4.43683. Total time 0.005 hours\n",
"Validation at Epoch 19 , AUROC: 0.99059 , AUPRC: 0.89215 , F1: 0.52631\n",
"Training at Epoch 20 iteration 0 with loss 0.02049. Total time 0.00527 hours\n",
"Validation at Epoch 20 , AUROC: 0.99743 , AUPRC: 0.94444 , F1: 0.76923\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.720959595959596 , AUPRC: 0.0423958693730058 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1695\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69664. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.58249 , AUPRC: 0.34759 , F1: 0.22222\n",
"Training at Epoch 2 iteration 0 with loss 0.24126. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.48316 , AUPRC: 0.34397 , F1: 0.5\n",
"Training at Epoch 3 iteration 0 with loss 0.11347. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.41245 , AUPRC: 0.34266 , F1: 0.28571\n",
"Training at Epoch 4 iteration 0 with loss 0.01774. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.42929 , AUPRC: 0.34294 , F1: 0.33333\n",
"Training at Epoch 5 iteration 0 with loss 0.00044. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.45959 , AUPRC: 0.34348 , F1: 0.28571\n",
"Training at Epoch 6 iteration 0 with loss 0.00742. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.42255 , AUPRC: 0.34290 , F1: 0.33333\n",
"Training at Epoch 7 iteration 0 with loss 0.00049. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.41919 , AUPRC: 0.34283 , F1: 0.33333\n",
"Training at Epoch 8 iteration 0 with loss 0.00019. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.40067 , AUPRC: 0.34253 , F1: 0.33333\n",
"Training at Epoch 9 iteration 0 with loss 0.00038. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 0.41582 , AUPRC: 0.34278 , F1: 0.33333\n",
"Training at Epoch 10 iteration 0 with loss 0.00081. Total time 0.00222 hours\n",
"Validation at Epoch 10 , AUROC: 0.42929 , AUPRC: 0.34297 , F1: 0.5\n",
"Training at Epoch 11 iteration 0 with loss 0.00375. Total time 0.0025 hours\n",
"Validation at Epoch 11 , AUROC: 0.41414 , AUPRC: 0.34271 , F1: 0.4\n",
"Training at Epoch 12 iteration 0 with loss 6.65630. Total time 0.00305 hours\n",
"Validation at Epoch 12 , AUROC: 0.41414 , AUPRC: 0.34272 , F1: 0.33333\n",
"Training at Epoch 13 iteration 0 with loss 0.00025. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.41750 , AUPRC: 0.34278 , F1: 0.5\n",
"Training at Epoch 14 iteration 0 with loss 0.00037. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.42760 , AUPRC: 0.34292 , F1: 0.33333\n",
"Training at Epoch 15 iteration 0 with loss 4.94418. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.43434 , AUPRC: 0.34302 , F1: 0.4\n",
"Training at Epoch 16 iteration 0 with loss 0.00015. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.43265 , AUPRC: 0.34299 , F1: 0.33333\n",
"Training at Epoch 17 iteration 0 with loss 4.86868. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.43434 , AUPRC: 0.34302 , F1: 0.33333\n",
"Training at Epoch 18 iteration 0 with loss 6.15364. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.43434 , AUPRC: 0.34302 , F1: 0.33333\n",
"Training at Epoch 19 iteration 0 with loss 4.10837. Total time 0.005 hours\n",
"Validation at Epoch 19 , AUROC: 0.42424 , AUPRC: 0.34285 , F1: 0.4\n",
"Training at Epoch 20 iteration 0 with loss 0.00030. Total time 0.00527 hours\n",
"Validation at Epoch 20 , AUROC: 0.42255 , AUPRC: 0.34283 , F1: 0.25\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.8341880341880342 , AUPRC: 0.8383333333333334 , F1: 0.9090909090909091\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3154 drugs\n",
"encoding drug...\n",
"unique drugs: 1618\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69348. Total time 0.0 hours\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 1 , AUROC: 0.64142 , AUPRC: 0.04892 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.02902. Total time 0.00027 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 2 , AUROC: 0.60310 , AUPRC: 0.07339 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.02625. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.55930 , AUPRC: 0.06253 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.00186. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.57755 , AUPRC: 0.10767 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.00307. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.56386 , AUPRC: 0.07861 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.00010. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.56843 , AUPRC: 0.09600 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 1.95294. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.57116 , AUPRC: 0.10301 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 3.04729. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.55930 , AUPRC: 0.10831 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 1.32342. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.56204 , AUPRC: 0.09907 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 2.16677. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.56295 , AUPRC: 0.10286 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 8.94654. Total time 0.00277 hours\n",
"Validation at Epoch 11 , AUROC: 0.56295 , AUPRC: 0.10739 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 5.36909. Total time 0.00305 hours\n",
"Validation at Epoch 12 , AUROC: 0.56295 , AUPRC: 0.10739 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 1.15486. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.56021 , AUPRC: 0.10733 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 2.03270. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.55748 , AUPRC: 0.10275 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 1.88593. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.55656 , AUPRC: 0.10274 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 2.44007. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.55383 , AUPRC: 0.09573 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 9.84458. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.55291 , AUPRC: 0.09571 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 6.19329. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.55291 , AUPRC: 0.09571 , F1: 0.0\n",
"Training at Epoch 19 iteration 0 with loss 1.86264. Total time 0.005 hours\n",
"Validation at Epoch 19 , AUROC: 0.55291 , AUPRC: 0.09571 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 6.05359. Total time 0.00527 hours\n",
"Validation at Epoch 20 , AUROC: 0.55291 , AUPRC: 0.09571 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.7609427609427609 , AUPRC: 0.4737089201877934 , F1: 0.5\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3136 drugs\n",
"encoding drug...\n",
"unique drugs: 1611\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69140. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.17391 , AUPRC: 0.00581 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.06542. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.02415 , AUPRC: 0.00492 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.00197. Total time 0.00055 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 3 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.00161. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.00483 , AUPRC: 0.00483 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.00208. Total time 0.00083 hours\n",
"Validation at Epoch 5 , AUROC: 0.00483 , AUPRC: 0.00483 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.00051. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.00483 , AUPRC: 0.00483 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00065. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 0.00483 , AUPRC: 0.00483 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00158. Total time 0.00166 hours\n",
"Validation at Epoch 8 , AUROC: 0.00483 , AUPRC: 0.00483 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00013. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00013. Total time 0.00222 hours\n",
"Validation at Epoch 10 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 3.32183. Total time 0.0025 hours\n",
"Validation at Epoch 11 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 1.76071. Total time 0.00305 hours\n",
"Validation at Epoch 12 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 1.59351. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 1.40118. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 5.20614. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 2.75672. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 2.79863. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 2.57046. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 19 iteration 0 with loss 1.30948. Total time 0.005 hours\n",
"Validation at Epoch 19 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 6.66365. Total time 0.00527 hours\n",
"Validation at Epoch 20 , AUROC: 0.00966 , AUPRC: 0.00485 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.5583941605839415 , AUPRC: 0.05207966613859062 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3290 drugs\n",
"encoding drug...\n",
"unique drugs: 1688\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69388. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.80076 , AUPRC: 0.75621 , F1: 0.66666\n",
"Training at Epoch 2 iteration 0 with loss 0.27985. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.95558 , AUPRC: 0.77564 , F1: 0.6\n",
"Training at Epoch 3 iteration 0 with loss 0.02885. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.99492 , AUPRC: 0.875 , F1: 0.6\n",
"Training at Epoch 4 iteration 0 with loss 0.02021. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.98350 , AUPRC: 0.80882 , F1: 0.66666\n",
"Training at Epoch 5 iteration 0 with loss 0.00084. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.91751 , AUPRC: 0.76449 , F1: 0.75\n",
"Training at Epoch 6 iteration 0 with loss 0.05846. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.94289 , AUPRC: 0.77040 , F1: 0.75\n",
"Training at Epoch 7 iteration 0 with loss 0.00080. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.90101 , AUPRC: 0.76219 , F1: 0.75\n",
"Training at Epoch 8 iteration 0 with loss 0.00198. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.92766 , AUPRC: 0.76639 , F1: 0.85714\n",
"Training at Epoch 9 iteration 0 with loss 0.01276. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.93654 , AUPRC: 0.76851 , F1: 0.85714\n",
"Training at Epoch 10 iteration 0 with loss 0.00074. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.97208 , AUPRC: 0.78846 , F1: 0.6\n",
"Training at Epoch 11 iteration 0 with loss 0.00026. Total time 0.00277 hours\n",
"Validation at Epoch 11 , AUROC: 0.99619 , AUPRC: 0.89285 , F1: 0.61538\n",
"Training at Epoch 12 iteration 0 with loss 0.00137. Total time 0.00305 hours\n",
"Validation at Epoch 12 , AUROC: 0.93654 , AUPRC: 0.76851 , F1: 0.85714\n",
"Training at Epoch 13 iteration 0 with loss 0.00992. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.96827 , AUPRC: 0.78448 , F1: 0.66666\n",
"Training at Epoch 14 iteration 0 with loss 0.00068. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.94543 , AUPRC: 0.77127 , F1: 0.66666\n",
"Training at Epoch 15 iteration 0 with loss 0.00034. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.95304 , AUPRC: 0.77439 , F1: 0.66666\n",
"Training at Epoch 16 iteration 0 with loss 0.00855. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.95812 , AUPRC: 0.77702 , F1: 0.66666\n",
"Training at Epoch 17 iteration 0 with loss 8.20712. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.96446 , AUPRC: 0.78125 , F1: 0.66666\n",
"Training at Epoch 18 iteration 0 with loss 0.00047. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.97081 , AUPRC: 0.78703 , F1: 0.6\n",
"Training at Epoch 19 iteration 0 with loss 3.04715. Total time 0.005 hours\n",
"Validation at Epoch 19 , AUROC: 0.95431 , AUPRC: 0.775 , F1: 0.66666\n",
"Training at Epoch 20 iteration 0 with loss 0.00010. Total time 0.00527 hours\n",
"Validation at Epoch 20 , AUROC: 0.95050 , AUPRC: 0.77325 , F1: 0.66666\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.4975845410628019 , AUPRC: 0.009523809523809525 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3306 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69058. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.76381 , AUPRC: 0.04113 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.07141. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.85092 , AUPRC: 0.09292 , F1: 0.06666\n",
"Training at Epoch 3 iteration 0 with loss 0.10993. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.64824 , AUPRC: 0.34870 , F1: 0.11764\n",
"Training at Epoch 4 iteration 0 with loss 0.05299. Total time 0.00083 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 4 , AUROC: 0.70016 , AUPRC: 0.03444 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.00034. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.72026 , AUPRC: 0.03743 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.00058. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.67671 , AUPRC: 0.03137 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00585. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.70519 , AUPRC: 0.03503 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00022. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.69179 , AUPRC: 0.03398 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00035. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.70016 , AUPRC: 0.03659 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00016. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.71189 , AUPRC: 0.03541 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 0.00030. Total time 0.00277 hours\n",
"Validation at Epoch 11 , AUROC: 0.71021 , AUPRC: 0.03555 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 0.00012. Total time 0.00305 hours\n",
"Validation at Epoch 12 , AUROC: 0.74036 , AUPRC: 0.10467 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 0.00020. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.67336 , AUPRC: 0.03242 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 0.01844. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.73366 , AUPRC: 0.35348 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 0.00030. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.75544 , AUPRC: 0.04317 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 0.02830. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.77554 , AUPRC: 0.05593 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 0.00022. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.75376 , AUPRC: 0.04492 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 0.00021. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.77219 , AUPRC: 0.35694 , F1: 0.0\n",
"Training at Epoch 19 iteration 0 with loss 0.00037. Total time 0.005 hours\n",
"Validation at Epoch 19 , AUROC: 0.63316 , AUPRC: 0.02878 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 0.00209. Total time 0.00527 hours\n",
"Validation at Epoch 20 , AUROC: 0.61976 , AUPRC: 0.02522 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.947969543147208 , AUPRC: 0.7722222222222221 , F1: 0.8571428571428571\n",
"--- Training Finished ---\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69323. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.65612 , AUPRC: 0.30066 , F1: 0.23529\n",
"Training at Epoch 2 iteration 0 with loss 0.13086. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.73061 , AUPRC: 0.24853 , F1: 0.18181\n",
"Training at Epoch 3 iteration 0 with loss 0.00544. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.67142 , AUPRC: 0.23764 , F1: 0.28571\n",
"Training at Epoch 4 iteration 0 with loss 0.01013. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.74591 , AUPRC: 0.25614 , F1: 0.28571\n",
"Training at Epoch 5 iteration 0 with loss 0.00268. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.71326 , AUPRC: 0.24550 , F1: 0.28571\n",
"Training at Epoch 6 iteration 0 with loss 0.00153. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.72346 , AUPRC: 0.24869 , F1: 0.28571\n",
"Training at Epoch 7 iteration 0 with loss 0.00473. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.64897 , AUPRC: 0.24218 , F1: 0.22222\n",
"Training at Epoch 8 iteration 0 with loss 0.04683. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.67857 , AUPRC: 0.23591 , F1: 0.20000\n",
"Training at Epoch 9 iteration 0 with loss 0.00206. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.65510 , AUPRC: 0.23413 , F1: 0.33333\n",
"Training at Epoch 10 iteration 0 with loss 0.00235. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.65816 , AUPRC: 0.23494 , F1: 0.33333\n",
"Training at Epoch 11 iteration 0 with loss 0.00165. Total time 0.00277 hours\n",
"Validation at Epoch 11 , AUROC: 0.68775 , AUPRC: 0.23730 , F1: 0.28571\n",
"Training at Epoch 12 iteration 0 with loss 0.00030. Total time 0.00305 hours\n",
"Validation at Epoch 12 , AUROC: 0.70408 , AUPRC: 0.23986 , F1: 0.28571\n",
"Training at Epoch 13 iteration 0 with loss 0.00022. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.70612 , AUPRC: 0.24111 , F1: 0.28571\n",
"Training at Epoch 14 iteration 0 with loss 0.00016. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.70510 , AUPRC: 0.24043 , F1: 0.28571\n",
"Training at Epoch 15 iteration 0 with loss 0.00013. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.69387 , AUPRC: 0.23803 , F1: 0.28571\n",
"Training at Epoch 16 iteration 0 with loss 0.00134. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.69693 , AUPRC: 0.23815 , F1: 0.28571\n",
"Training at Epoch 17 iteration 0 with loss 0.00074. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.69387 , AUPRC: 0.23770 , F1: 0.28571\n",
"Training at Epoch 18 iteration 0 with loss 0.00050. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.69591 , AUPRC: 0.23781 , F1: 0.28571\n",
"Training at Epoch 19 iteration 0 with loss 3.90044. Total time 0.005 hours\n",
"Validation at Epoch 19 , AUROC: 0.70714 , AUPRC: 0.23969 , F1: 0.28571\n",
"Training at Epoch 20 iteration 0 with loss 3.24664. Total time 0.00527 hours\n",
"Validation at Epoch 20 , AUROC: 0.70306 , AUPRC: 0.23882 , F1: 0.28571\n",
"--- Go for Testing ---\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing AUROC: 0.7654941373534339 , AUPRC: 0.052405369663397955 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"ROC-Mean 0.7283\n",
"ROC-STD 0.1585\n",
"PRC-Mean 0.3850\n",
"PRC-STD 0.3321\n"
]
},
{
"data": {
"image/png": "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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"
},
{
"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": [
"roc_ = []\n",
"prc_ = []\n",
"scores_ = []\n",
"labels_ = []\n",
"\n",
"drug_encoding = 'Pubchem'\n",
"\n",
"for i in range(10):\n",
" roc, prc, scores, labels = eval('run_' + drug_encoding + '(i, True)')\n",
" roc_.append(roc)\n",
" prc_.append(prc)\n",
" scores_.append(scores)\n",
" labels_.append(labels)\n",
" \n",
"print('ROC-Mean {:.4f}'.format(np.mean(np.array(roc_))))\n",
"print('ROC-STD {:.4f}'.format(np.std(np.array(roc_))))\n",
"print('PRC-Mean {:.4f}'.format(np.mean(np.array(prc_))))\n",
"print('PRC-STD {:.4f}'.format(np.std(np.array(prc_))))\n",
"\n",
"with open('./scores_aicures/' + drug_encoding + '_score.pkl', 'wb') as f:\n",
" pickle.dump(scores_, f, pickle.HIGHEST_PROTOCOL)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def run_rdkit_2d_normalized(fold_n, balanced):\n",
" \n",
" train = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/train.csv')\n",
" dev = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/dev.csv')\n",
" test = pd.read_csv('./aicures_data/train_cv/fold_'+str(fold_n)+'/test.csv')\n",
" \n",
" test_output = pd.read_csv('./aicures_data/test.csv')\n",
"\n",
" if balanced:\n",
" # oversample balanced training\n",
" train = pd.concat([train[train.activity == 1].sample(n = len(train[train.activity == 0]), replace=True), train[train.activity == 0]]).sample(frac = 1).reset_index(drop = True)\n",
" \n",
" X_train = train.smiles.values\n",
" y_train = train.activity.values\n",
" X_dev = dev.smiles.values\n",
" y_dev = dev.activity.values\n",
" X_test = test.smiles.values\n",
" y_test = test.activity.values\n",
" \n",
" X_test_output = test_output.smiles.values\n",
" y_test_output = test_output.activity.values\n",
" \n",
" drug_encoding = 'rdkit_2d_normalized'\n",
" train = data_process(X_drug = X_train, y = y_train, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" val = data_process(X_drug = X_dev, y = y_dev, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
"\n",
" test = data_process(X_drug = X_test, y = y_test, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
" \n",
" test_output_ = data_process(X_drug = X_test_output, y = y_test_output, \n",
" drug_encoding = drug_encoding,\n",
" split_method='no_split', \n",
" random_seed = 1)\n",
" \n",
" config = generate_config(drug_encoding = drug_encoding, \n",
" cls_hidden_dims = [512], \n",
" train_epoch = 20, \n",
" LR = 0.001, \n",
" batch_size = 128,\n",
" )\n",
" \n",
" model = models.model_initialize(**config)\n",
" model.train(train, val, test)\n",
" \n",
" scores = model.predict(test)\n",
" \n",
" test_outputs = model.predict(test_output_)\n",
" \n",
" return roc_auc_score(test.Label.values, scores), average_precision_score(test.Label.values, scores), scores, test.Label.values, test_outputs"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Drug Property Prediction Mode...\n",
"in total: 3330 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 238 drugs\n",
"encoding drug...\n",
"unique drugs: 238\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69274. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.92325 , AUPRC: 0.78820 , F1: 0.66666\n",
"Training at Epoch 2 iteration 0 with loss 0.23882. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.95174 , AUPRC: 0.88302 , F1: 0.66666\n",
"Training at Epoch 3 iteration 0 with loss 0.02514. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.93731 , AUPRC: 0.83336 , F1: 0.63636\n",
"Training at Epoch 4 iteration 0 with loss 0.02911. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.92515 , AUPRC: 0.81273 , F1: 0.66666\n",
"Training at Epoch 5 iteration 0 with loss 0.03060. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.93237 , AUPRC: 0.91291 , F1: 0.66666\n",
"Training at Epoch 6 iteration 0 with loss 0.05137. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.92857 , AUPRC: 0.85543 , F1: 0.66666\n",
"Training at Epoch 7 iteration 0 with loss 0.00225. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.92971 , AUPRC: 0.87462 , F1: 0.66666\n",
"Training at Epoch 8 iteration 0 with loss 0.00147. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.93085 , AUPRC: 0.89665 , F1: 0.66666\n",
"Training at Epoch 9 iteration 0 with loss 0.00010. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.92857 , AUPRC: 0.90295 , F1: 0.66666\n",
"Training at Epoch 10 iteration 0 with loss 0.01251. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.93237 , AUPRC: 0.91084 , F1: 0.66666\n",
"Training at Epoch 11 iteration 0 with loss 0.00091. Total time 0.00277 hours\n",
"Validation at Epoch 11 , AUROC: 0.93161 , AUPRC: 0.91725 , F1: 0.66666\n",
"Training at Epoch 12 iteration 0 with loss 0.00059. Total time 0.00305 hours\n",
"Validation at Epoch 12 , AUROC: 0.93161 , AUPRC: 0.91725 , F1: 0.66666\n",
"Training at Epoch 13 iteration 0 with loss 0.00492. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.93313 , AUPRC: 0.91737 , F1: 0.8\n",
"Training at Epoch 14 iteration 0 with loss 0.00013. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.93161 , AUPRC: 0.91725 , F1: 0.66666\n",
"Training at Epoch 15 iteration 0 with loss 0.04330. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.92895 , AUPRC: 0.89118 , F1: 0.8\n",
"Training at Epoch 16 iteration 0 with loss 0.03750. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.93389 , AUPRC: 0.90334 , F1: 0.66666\n",
"Training at Epoch 17 iteration 0 with loss 0.00028. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.93085 , AUPRC: 0.88569 , F1: 0.66666\n",
"Training at Epoch 18 iteration 0 with loss 0.00109. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.91717 , AUPRC: 0.79432 , F1: 0.66666\n",
"Training at Epoch 19 iteration 0 with loss 0.02217. Total time 0.005 hours\n",
"Validation at Epoch 19 , AUROC: 0.92097 , AUPRC: 0.82790 , F1: 0.66666\n",
"Training at Epoch 20 iteration 0 with loss 0.00038. Total time 0.00527 hours\n",
"Validation at Epoch 20 , AUROC: 0.92401 , AUPRC: 0.86920 , F1: 0.66666\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.786734693877551 , AUPRC: 0.30833333333333335 , F1: 0.28571428571428575\n",
"--- Training Finished ---\n",
"predicting...\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3328 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 238 drugs\n",
"encoding drug...\n",
"unique drugs: 238\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69474. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.85406 , AUPRC: 0.60252 , F1: 0.5\n",
"Training at Epoch 2 iteration 0 with loss 0.04356. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.90989 , AUPRC: 0.55642 , F1: 0.44444\n",
"Training at Epoch 3 iteration 0 with loss 0.03576. Total time 0.00055 hours\n",
"Validation at Epoch 3 , AUROC: 0.88197 , AUPRC: 0.54691 , F1: 0.28571\n",
"Training at Epoch 4 iteration 0 with loss 0.00807. Total time 0.00083 hours\n",
"Validation at Epoch 4 , AUROC: 0.91624 , AUPRC: 0.56724 , F1: 0.57142\n",
"Training at Epoch 5 iteration 0 with loss 0.00628. Total time 0.00111 hours\n",
"Validation at Epoch 5 , AUROC: 0.90355 , AUPRC: 0.55926 , F1: 0.57142\n",
"Training at Epoch 6 iteration 0 with loss 0.00150. Total time 0.00138 hours\n",
"Validation at Epoch 6 , AUROC: 0.90736 , AUPRC: 0.55586 , F1: 0.5\n",
"Training at Epoch 7 iteration 0 with loss 0.00048. Total time 0.00166 hours\n",
"Validation at Epoch 7 , AUROC: 0.89847 , AUPRC: 0.55615 , F1: 0.57142\n",
"Training at Epoch 8 iteration 0 with loss 0.00031. Total time 0.00194 hours\n",
"Validation at Epoch 8 , AUROC: 0.90101 , AUPRC: 0.55882 , F1: 0.57142\n",
"Training at Epoch 9 iteration 0 with loss 0.00031. Total time 0.00222 hours\n",
"Validation at Epoch 9 , AUROC: 0.89340 , AUPRC: 0.56315 , F1: 0.4\n",
"Training at Epoch 10 iteration 0 with loss 0.03239. Total time 0.0025 hours\n",
"Validation at Epoch 10 , AUROC: 0.83375 , AUPRC: 0.52796 , F1: 0.19047\n",
"Training at Epoch 11 iteration 0 with loss 0.06973. Total time 0.00277 hours\n",
"Validation at Epoch 11 , AUROC: 0.91116 , AUPRC: 0.56078 , F1: 0.44444\n",
"Training at Epoch 12 iteration 0 with loss 0.01153. Total time 0.00305 hours\n",
"Validation at Epoch 12 , AUROC: 0.90101 , AUPRC: 0.57619 , F1: 0.44444\n",
"Training at Epoch 13 iteration 0 with loss 0.00029. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.90862 , AUPRC: 0.56895 , F1: 0.4\n",
"Training at Epoch 14 iteration 0 with loss 0.00047. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.89340 , AUPRC: 0.56655 , F1: 0.57142\n",
"Training at Epoch 15 iteration 0 with loss 0.00038. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.86421 , AUPRC: 0.53624 , F1: 0.5\n",
"Training at Epoch 16 iteration 0 with loss 0.00155. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.85659 , AUPRC: 0.53948 , F1: 0.5\n",
"Training at Epoch 17 iteration 0 with loss 0.00069. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.86167 , AUPRC: 0.54098 , F1: 0.44444\n",
"Training at Epoch 18 iteration 0 with loss 0.03124. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.86675 , AUPRC: 0.54047 , F1: 0.5\n",
"Training at Epoch 19 iteration 0 with loss 9.74849. Total time 0.005 hours\n",
"Validation at Epoch 19 , AUROC: 0.83756 , AUPRC: 0.53142 , F1: 0.5\n",
"Training at Epoch 20 iteration 0 with loss 0.03619. Total time 0.00527 hours\n",
"Validation at Epoch 20 , AUROC: 0.84898 , AUPRC: 0.53471 , F1: 0.5\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.9300911854103343 , AUPRC: 0.8839490341591182 , F1: 0.6666666666666666\n",
"--- Training Finished ---\n",
"predicting...\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 238 drugs\n",
"encoding drug...\n",
"unique drugs: 238\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69331. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.67676 , AUPRC: 0.09521 , F1: 0.19047\n",
"Training at Epoch 2 iteration 0 with loss 0.17267. Total time 0.0 hours\n",
"Validation at Epoch 2 , AUROC: 0.80934 , AUPRC: 0.13829 , F1: 0.28571\n",
"Training at Epoch 3 iteration 0 with loss 0.00816. Total time 0.00027 hours\n",
"Validation at Epoch 3 , AUROC: 0.81313 , AUPRC: 0.09637 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.00168. Total time 0.00055 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 4 , AUROC: 0.79924 , AUPRC: 0.09149 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.00439. Total time 0.00083 hours\n",
"Validation at Epoch 5 , AUROC: 0.79671 , AUPRC: 0.12293 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.00029. Total time 0.00111 hours\n",
"Validation at Epoch 6 , AUROC: 0.81439 , AUPRC: 0.12665 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00062. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 0.81691 , AUPRC: 0.12738 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00085. Total time 0.00166 hours\n",
"Validation at Epoch 8 , AUROC: 0.80555 , AUPRC: 0.12527 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00112. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 0.82702 , AUPRC: 0.12991 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00191. Total time 0.00222 hours\n",
"Validation at Epoch 10 , AUROC: 0.75631 , AUPRC: 0.11793 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 0.00016. Total time 0.0025 hours\n",
"Validation at Epoch 11 , AUROC: 0.83333 , AUPRC: 0.17269 , F1: 0.25\n",
"Training at Epoch 12 iteration 0 with loss 0.00084. Total time 0.00277 hours\n",
"Validation at Epoch 12 , AUROC: 0.81944 , AUPRC: 0.16909 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 0.00071. Total time 0.00305 hours\n",
"Validation at Epoch 13 , AUROC: 0.83838 , AUPRC: 0.17430 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 9.26663. Total time 0.00333 hours\n",
"Validation at Epoch 14 , AUROC: 0.82070 , AUPRC: 0.29412 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 0.00055. Total time 0.00361 hours\n",
"Validation at Epoch 15 , AUROC: 0.82575 , AUPRC: 0.17036 , F1: 0.25\n",
"Training at Epoch 16 iteration 0 with loss 0.00019. Total time 0.00388 hours\n",
"Validation at Epoch 16 , AUROC: 0.76641 , AUPRC: 0.16015 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 0.00148. Total time 0.00416 hours\n",
"Validation at Epoch 17 , AUROC: 0.77525 , AUPRC: 0.12387 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 0.01140. Total time 0.00444 hours\n",
"Validation at Epoch 18 , AUROC: 0.71464 , AUPRC: 0.34934 , F1: 0.11428\n",
"Training at Epoch 19 iteration 0 with loss 0.15305. Total time 0.00472 hours\n",
"Validation at Epoch 19 , AUROC: 0.78914 , AUPRC: 0.37127 , F1: 0.30769\n",
"Training at Epoch 20 iteration 0 with loss 0.00319. Total time 0.005 hours\n",
"Validation at Epoch 20 , AUROC: 0.79166 , AUPRC: 0.17731 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.7817258883248731 , AUPRC: 0.5596320346320347 , F1: 0.6666666666666666\n",
"--- Training Finished ---\n",
"predicting...\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 238 drugs\n",
"encoding drug...\n",
"unique drugs: 238\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69032. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.97521 , AUPRC: 0.76465 , F1: 0.36363\n",
"Training at Epoch 2 iteration 0 with loss 0.19188. Total time 0.00027 hours\n",
"Validation at Epoch 2 , AUROC: 0.90769 , AUPRC: 0.81440 , F1: 0.76923\n",
"Training at Epoch 3 iteration 0 with loss 0.00026. Total time 0.00027 hours\n",
"Validation at Epoch 3 , AUROC: 0.97435 , AUPRC: 0.86111 , F1: 0.5\n",
"Training at Epoch 4 iteration 0 with loss 0.04637. Total time 0.00055 hours\n",
"Validation at Epoch 4 , AUROC: 0.95811 , AUPRC: 0.75694 , F1: 0.66666\n",
"Training at Epoch 5 iteration 0 with loss 0.04164. Total time 0.00083 hours\n",
"Validation at Epoch 5 , AUROC: 0.92393 , AUPRC: 0.78170 , F1: 0.61538\n",
"Training at Epoch 6 iteration 0 with loss 0.00054. Total time 0.00111 hours\n",
"Validation at Epoch 6 , AUROC: 0.94273 , AUPRC: 0.78511 , F1: 0.66666\n",
"Training at Epoch 7 iteration 0 with loss 0.00058. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 0.92051 , AUPRC: 0.78125 , F1: 0.66666\n",
"Training at Epoch 8 iteration 0 with loss 0.00110. Total time 0.00166 hours\n",
"Validation at Epoch 8 , AUROC: 0.94957 , AUPRC: 0.80158 , F1: 0.76923\n",
"Training at Epoch 9 iteration 0 with loss 0.00049. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 0.91452 , AUPRC: 0.84276 , F1: 0.90909\n",
"Training at Epoch 10 iteration 0 with loss 0.14076. Total time 0.00222 hours\n",
"Validation at Epoch 10 , AUROC: 0.99059 , AUPRC: 0.89215 , F1: 0.625\n",
"Training at Epoch 11 iteration 0 with loss 0.00475. Total time 0.0025 hours\n",
"Validation at Epoch 11 , AUROC: 0.97692 , AUPRC: 0.83680 , F1: 0.76923\n",
"Training at Epoch 12 iteration 0 with loss 0.00122. Total time 0.00277 hours\n",
"Validation at Epoch 12 , AUROC: 0.97521 , AUPRC: 0.86190 , F1: 0.66666\n",
"Training at Epoch 13 iteration 0 with loss 0.03427. Total time 0.00305 hours\n",
"Validation at Epoch 13 , AUROC: 0.97094 , AUPRC: 0.85833 , F1: 0.76923\n",
"Training at Epoch 14 iteration 0 with loss 0.00013. Total time 0.00333 hours\n",
"Validation at Epoch 14 , AUROC: 0.97094 , AUPRC: 0.85833 , F1: 0.8\n",
"Training at Epoch 15 iteration 0 with loss 0.00067. Total time 0.00361 hours\n",
"Validation at Epoch 15 , AUROC: 0.96239 , AUPRC: 0.85333 , F1: 0.8\n",
"Training at Epoch 16 iteration 0 with loss 0.00039. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.93589 , AUPRC: 0.84567 , F1: 0.90909\n",
"Training at Epoch 17 iteration 0 with loss 0.00060. Total time 0.00444 hours\n",
"Validation at Epoch 17 , AUROC: 0.95128 , AUPRC: 0.84920 , F1: 0.625\n",
"Training at Epoch 18 iteration 0 with loss 0.00015. Total time 0.00472 hours\n",
"Validation at Epoch 18 , AUROC: 0.92136 , AUPRC: 0.84353 , F1: 0.90909\n",
"Training at Epoch 19 iteration 0 with loss 0.00027. Total time 0.005 hours\n",
"Validation at Epoch 19 , AUROC: 0.92051 , AUPRC: 0.84343 , F1: 0.8\n",
"Training at Epoch 20 iteration 0 with loss 0.00037. Total time 0.00527 hours\n",
"Validation at Epoch 20 , AUROC: 0.92136 , AUPRC: 0.84353 , F1: 0.90909\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.8585858585858586 , AUPRC: 0.30511593669488407 , F1: 0.4\n",
"--- Training Finished ---\n",
"predicting...\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3312 drugs\n",
"encoding drug...\n",
"unique drugs: 1695\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 238 drugs\n",
"encoding drug...\n",
"unique drugs: 238\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69429. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.78451 , AUPRC: 0.67430 , F1: 0.25\n",
"Training at Epoch 2 iteration 0 with loss 0.06585. Total time 0.0 hours\n",
"Validation at Epoch 2 , AUROC: 0.77946 , AUPRC: 0.50757 , F1: 0.5\n",
"Training at Epoch 3 iteration 0 with loss 0.00289. Total time 0.00027 hours\n",
"Validation at Epoch 3 , AUROC: 0.72895 , AUPRC: 0.50617 , F1: 0.22222\n",
"Training at Epoch 4 iteration 0 with loss 0.04012. Total time 0.00055 hours\n",
"Validation at Epoch 4 , AUROC: 0.67003 , AUPRC: 0.35701 , F1: 0.5\n",
"Training at Epoch 5 iteration 0 with loss 0.00177. Total time 0.00083 hours\n",
"Validation at Epoch 5 , AUROC: 0.72727 , AUPRC: 0.39110 , F1: 0.5\n",
"Training at Epoch 6 iteration 0 with loss 0.00053. Total time 0.00111 hours\n",
"Validation at Epoch 6 , AUROC: 0.76936 , AUPRC: 0.42412 , F1: 0.4\n",
"Training at Epoch 7 iteration 0 with loss 0.01767. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 0.72558 , AUPRC: 0.37342 , F1: 0.4\n",
"Training at Epoch 8 iteration 0 with loss 6.00854. Total time 0.00166 hours\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 8 , AUROC: 0.74747 , AUPRC: 0.40689 , F1: 0.4\n",
"Training at Epoch 9 iteration 0 with loss 0.00117. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 0.74242 , AUPRC: 0.45102 , F1: 0.30769\n",
"Training at Epoch 10 iteration 0 with loss 0.00168. Total time 0.00222 hours\n",
"Validation at Epoch 10 , AUROC: 0.75589 , AUPRC: 0.39191 , F1: 0.4\n",
"Training at Epoch 11 iteration 0 with loss 0.00024. Total time 0.0025 hours\n",
"Validation at Epoch 11 , AUROC: 0.70370 , AUPRC: 0.56117 , F1: 0.5\n",
"Training at Epoch 12 iteration 0 with loss 0.03358. Total time 0.00277 hours\n",
"Validation at Epoch 12 , AUROC: 0.77777 , AUPRC: 0.50751 , F1: 0.33333\n",
"Training at Epoch 13 iteration 0 with loss 0.00314. Total time 0.00333 hours\n",
"Validation at Epoch 13 , AUROC: 0.81986 , AUPRC: 0.47601 , F1: 0.4\n",
"Training at Epoch 14 iteration 0 with loss 0.00023. Total time 0.00361 hours\n",
"Validation at Epoch 14 , AUROC: 0.82154 , AUPRC: 0.47610 , F1: 0.4\n",
"Training at Epoch 15 iteration 0 with loss 6.49103. Total time 0.00388 hours\n",
"Validation at Epoch 15 , AUROC: 0.84511 , AUPRC: 0.38504 , F1: 0.4\n",
"Training at Epoch 16 iteration 0 with loss 0.00034. Total time 0.00416 hours\n",
"Validation at Epoch 16 , AUROC: 0.81313 , AUPRC: 0.41675 , F1: 0.4\n",
"Training at Epoch 17 iteration 0 with loss 0.00066. Total time 0.00472 hours\n",
"Validation at Epoch 17 , AUROC: 0.80134 , AUPRC: 0.37637 , F1: 0.5\n",
"Training at Epoch 18 iteration 0 with loss 0.00022. Total time 0.005 hours\n",
"Validation at Epoch 18 , AUROC: 0.81986 , AUPRC: 0.43809 , F1: 0.5\n",
"Training at Epoch 19 iteration 0 with loss 9.14504. Total time 0.00527 hours\n",
"Validation at Epoch 19 , AUROC: 0.81649 , AUPRC: 0.42610 , F1: 0.5\n",
"Training at Epoch 20 iteration 0 with loss 8.06749. Total time 0.00555 hours\n",
"Validation at Epoch 20 , AUROC: 0.81313 , AUPRC: 0.41675 , F1: 0.5\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.8666666666666667 , AUPRC: 0.8395061728395061 , F1: 0.8333333333333334\n",
"--- Training Finished ---\n",
"predicting...\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3154 drugs\n",
"encoding drug...\n",
"unique drugs: 1618\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 238 drugs\n",
"encoding drug...\n",
"unique drugs: 238\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69170. Total time 0.0 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 1 , AUROC: 0.73448 , AUPRC: 0.10810 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.30199. Total time 0.0 hours\n",
"Validation at Epoch 2 , AUROC: 0.89142 , AUPRC: 0.08078 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.03124. Total time 0.00027 hours\n",
"Validation at Epoch 3 , AUROC: 0.91697 , AUPRC: 0.10004 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.02150. Total time 0.00055 hours\n",
"Validation at Epoch 4 , AUROC: 0.93795 , AUPRC: 0.14648 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.06831. Total time 0.00083 hours\n",
"Validation at Epoch 5 , AUROC: 0.94343 , AUPRC: 0.17374 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.04812. Total time 0.00111 hours\n",
"Validation at Epoch 6 , AUROC: 0.93978 , AUPRC: 0.16427 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00038. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 0.94069 , AUPRC: 0.17439 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00121. Total time 0.00166 hours\n",
"Validation at Epoch 8 , AUROC: 0.93886 , AUPRC: 0.16130 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 9.31133. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 0.93886 , AUPRC: 0.17325 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 5.00889. Total time 0.00222 hours\n",
"Validation at Epoch 10 , AUROC: 0.93886 , AUPRC: 0.17325 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 3.95634. Total time 0.0025 hours\n",
"Validation at Epoch 11 , AUROC: 0.93978 , AUPRC: 0.17522 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 1.43798. Total time 0.00277 hours\n",
"Validation at Epoch 12 , AUROC: 0.93978 , AUPRC: 0.17522 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 6.82195. Total time 0.00277 hours\n",
"Validation at Epoch 13 , AUROC: 0.93978 , AUPRC: 0.17522 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 2.18643. Total time 0.00305 hours\n",
"Validation at Epoch 14 , AUROC: 0.93978 , AUPRC: 0.17522 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 4.19096. Total time 0.00333 hours\n",
"Validation at Epoch 15 , AUROC: 0.93978 , AUPRC: 0.17522 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 2.42610. Total time 0.00361 hours\n",
"Validation at Epoch 16 , AUROC: 0.93978 , AUPRC: 0.17522 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 2.10945. Total time 0.00388 hours\n",
"Validation at Epoch 17 , AUROC: 0.93978 , AUPRC: 0.17522 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 1.55996. Total time 0.00416 hours\n",
"Validation at Epoch 18 , AUROC: 0.93978 , AUPRC: 0.17522 , F1: 0.0\n",
"Training at Epoch 19 iteration 0 with loss 3.95812. Total time 0.00444 hours\n",
"Validation at Epoch 19 , AUROC: 0.93978 , AUPRC: 0.17522 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 1.01048. Total time 0.00472 hours\n",
"Validation at Epoch 20 , AUROC: 0.93978 , AUPRC: 0.17522 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.7323232323232323 , AUPRC: 0.6728395061728395 , F1: 0.8\n",
"--- Training Finished ---\n",
"predicting...\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3136 drugs\n",
"encoding drug...\n",
"unique drugs: 1611\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 278 drugs\n",
"encoding drug...\n",
"unique drugs: 278\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 238 drugs\n",
"encoding drug...\n",
"unique drugs: 238\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69294. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.46376 , AUPRC: 0.00892 , F1: 0.0\n",
"Training at Epoch 2 iteration 0 with loss 0.11396. Total time 0.0 hours\n",
"Validation at Epoch 2 , AUROC: 0.72463 , AUPRC: 0.01724 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.01735. Total time 0.00027 hours\n",
"Validation at Epoch 3 , AUROC: 0.70048 , AUPRC: 0.01587 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.01885. Total time 0.00055 hours\n",
"Validation at Epoch 4 , AUROC: 0.78260 , AUPRC: 0.02173 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.00383. Total time 0.00083 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 5 , AUROC: 0.70531 , AUPRC: 0.01612 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.00257. Total time 0.00083 hours\n",
"Validation at Epoch 6 , AUROC: 0.79227 , AUPRC: 0.02272 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00023. Total time 0.00111 hours\n",
"Validation at Epoch 7 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00011. Total time 0.00138 hours\n",
"Validation at Epoch 8 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 6.79026. Total time 0.00166 hours\n",
"Validation at Epoch 9 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 7.42084. Total time 0.00194 hours\n",
"Validation at Epoch 10 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 2.29539. Total time 0.00194 hours\n",
"Validation at Epoch 11 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 3.62600. Total time 0.00222 hours\n",
"Validation at Epoch 12 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 1.21096. Total time 0.0025 hours\n",
"Validation at Epoch 13 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 5.60060. Total time 0.00277 hours\n",
"Validation at Epoch 14 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 7.95650. Total time 0.00305 hours\n",
"Validation at Epoch 15 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 8.82561. Total time 0.00333 hours\n",
"Validation at Epoch 16 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 1.84772. Total time 0.00361 hours\n",
"Validation at Epoch 17 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 5.05101. Total time 0.00388 hours\n",
"Validation at Epoch 18 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 19 iteration 0 with loss 1.18884. Total time 0.00416 hours\n",
"Validation at Epoch 19 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 5.97662. Total time 0.00444 hours\n",
"Validation at Epoch 20 , AUROC: 0.75845 , AUPRC: 0.01960 , F1: 0.0\n",
"--- Go for Testing ---\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing AUROC: 0.8467153284671532 , AUPRC: 0.33697752019669824 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3290 drugs\n",
"encoding drug...\n",
"unique drugs: 1688\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 208 drugs\n",
"encoding drug...\n",
"unique drugs: 208\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 238 drugs\n",
"encoding drug...\n",
"unique drugs: 238\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69304. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.88888\n",
"Training at Epoch 2 iteration 0 with loss 0.19951. Total time 0.0 hours\n",
"Validation at Epoch 2 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.85714\n",
"Training at Epoch 3 iteration 0 with loss 0.42473. Total time 0.00027 hours\n",
"Validation at Epoch 3 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 4 iteration 0 with loss 0.04503. Total time 0.00055 hours\n",
"Validation at Epoch 4 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 5 iteration 0 with loss 0.01625. Total time 0.00083 hours\n",
"Validation at Epoch 5 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.85714\n",
"Training at Epoch 6 iteration 0 with loss 0.00074. Total time 0.00111 hours\n",
"Validation at Epoch 6 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.85714\n",
"Training at Epoch 7 iteration 0 with loss 0.00061. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00067. Total time 0.00166 hours\n",
"Validation at Epoch 8 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00060. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00113. Total time 0.00222 hours\n",
"Validation at Epoch 10 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 11 iteration 0 with loss 0.03131. Total time 0.0025 hours\n",
"Validation at Epoch 11 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 12 iteration 0 with loss 0.00024. Total time 0.00277 hours\n",
"Validation at Epoch 12 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 13 iteration 0 with loss 0.00052. Total time 0.00305 hours\n",
"Validation at Epoch 13 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 14 iteration 0 with loss 0.00031. Total time 0.00333 hours\n",
"Validation at Epoch 14 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 15 iteration 0 with loss 6.27572. Total time 0.00361 hours\n",
"Validation at Epoch 15 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.88888\n",
"Training at Epoch 16 iteration 0 with loss 2.44963. Total time 0.00388 hours\n",
"Validation at Epoch 16 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 17 iteration 0 with loss 0.00011. Total time 0.00416 hours\n",
"Validation at Epoch 17 , AUROC: 1.0 , AUPRC: 1.0 , F1: 1.0\n",
"Training at Epoch 18 iteration 0 with loss 3.59837. Total time 0.00444 hours\n",
"Validation at Epoch 18 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.44444\n",
"Training at Epoch 19 iteration 0 with loss 0.04177. Total time 0.00472 hours\n",
"Validation at Epoch 19 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.8\n",
"Training at Epoch 20 iteration 0 with loss 0.00308. Total time 0.005 hours\n",
"Validation at Epoch 20 , AUROC: 1.0 , AUPRC: 1.0 , F1: 0.88888\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.7053140096618358 , AUPRC: 0.016129032258064516 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3306 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 238 drugs\n",
"encoding drug...\n",
"unique drugs: 238\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69015. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.96984 , AUPRC: 0.48333 , F1: 0.22222\n",
"Training at Epoch 2 iteration 0 with loss 0.23405. Total time 0.0 hours\n",
"Validation at Epoch 2 , AUROC: 0.90619 , AUPRC: 0.10573 , F1: 0.0\n",
"Training at Epoch 3 iteration 0 with loss 0.06671. Total time 0.00027 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 3 , AUROC: 0.70351 , AUPRC: 0.03229 , F1: 0.0\n",
"Training at Epoch 4 iteration 0 with loss 0.00256. Total time 0.00055 hours\n",
"Validation at Epoch 4 , AUROC: 0.85427 , AUPRC: 0.06420 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.00103. Total time 0.00083 hours\n",
"Validation at Epoch 5 , AUROC: 0.82412 , AUPRC: 0.05201 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.01604. Total time 0.00111 hours\n",
"Validation at Epoch 6 , AUROC: 0.77219 , AUPRC: 0.04697 , F1: 0.0\n",
"Training at Epoch 7 iteration 0 with loss 0.00423. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 0.80904 , AUPRC: 0.04784 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00088. Total time 0.00166 hours\n",
"Validation at Epoch 8 , AUROC: 0.86097 , AUPRC: 0.07747 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00138. Total time 0.00194 hours\n",
"Validation at Epoch 9 , AUROC: 0.69011 , AUPRC: 0.03933 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00028. Total time 0.00194 hours\n",
"Validation at Epoch 10 , AUROC: 0.69179 , AUPRC: 0.03716 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 0.00020. Total time 0.00222 hours\n",
"Validation at Epoch 11 , AUROC: 0.70854 , AUPRC: 0.03869 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 0.00016. Total time 0.0025 hours\n",
"Validation at Epoch 12 , AUROC: 0.78894 , AUPRC: 0.06394 , F1: 0.0\n",
"Training at Epoch 13 iteration 0 with loss 0.00024. Total time 0.00277 hours\n",
"Validation at Epoch 13 , AUROC: 0.70519 , AUPRC: 0.04738 , F1: 0.0\n",
"Training at Epoch 14 iteration 0 with loss 0.00082. Total time 0.00305 hours\n",
"Validation at Epoch 14 , AUROC: 0.77219 , AUPRC: 0.08226 , F1: 0.0\n",
"Training at Epoch 15 iteration 0 with loss 0.00063. Total time 0.00333 hours\n",
"Validation at Epoch 15 , AUROC: 0.77554 , AUPRC: 0.07528 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 0.00016. Total time 0.00361 hours\n",
"Validation at Epoch 16 , AUROC: 0.76884 , AUPRC: 0.07382 , F1: 0.0\n",
"Training at Epoch 17 iteration 0 with loss 0.00028. Total time 0.00388 hours\n",
"Validation at Epoch 17 , AUROC: 0.75544 , AUPRC: 0.06296 , F1: 0.0\n",
"Training at Epoch 18 iteration 0 with loss 3.27168. Total time 0.00416 hours\n",
"Validation at Epoch 18 , AUROC: 0.76046 , AUPRC: 0.06615 , F1: 0.0\n",
"Training at Epoch 19 iteration 0 with loss 0.00020. Total time 0.00444 hours\n",
"Validation at Epoch 19 , AUROC: 0.75041 , AUPRC: 0.07824 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 0.05552. Total time 0.00472 hours\n",
"Validation at Epoch 20 , AUROC: 0.83082 , AUPRC: 0.06681 , F1: 0.0\n",
"--- Go for Testing ---\n",
"Testing AUROC: 0.9961928934010151 , AUPRC: 0.8928571428571428 , F1: 0.4444444444444445\n",
"--- Training Finished ---\n",
"predicting...\n",
"predicting...\n",
"Drug Property Prediction Mode...\n",
"in total: 3308 drugs\n",
"encoding drug...\n",
"unique drugs: 1694\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 201 drugs\n",
"encoding drug...\n",
"unique drugs: 201\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 202 drugs\n",
"encoding drug...\n",
"unique drugs: 202\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Drug Property Prediction Mode...\n",
"in total: 238 drugs\n",
"encoding drug...\n",
"unique drugs: 238\n",
"drug encoding finished...\n",
"do not do train/test split on the data for already splitted data\n",
"Let's use CPU/s!\n",
"--- Data Preparation ---\n",
"--- Go for Training ---\n",
"Training at Epoch 1 iteration 0 with loss 0.69298. Total time 0.0 hours\n",
"Validation at Epoch 1 , AUROC: 0.80816 , AUPRC: 0.40849 , F1: 0.30769\n",
"Training at Epoch 2 iteration 0 with loss 0.06083. Total time 0.0 hours\n",
"Validation at Epoch 2 , AUROC: 0.83061 , AUPRC: 0.41346 , F1: 0.27272\n",
"Training at Epoch 3 iteration 0 with loss 0.07553. Total time 0.00027 hours\n",
"Validation at Epoch 3 , AUROC: 0.82755 , AUPRC: 0.40130 , F1: 0.28571\n",
"Training at Epoch 4 iteration 0 with loss 0.01525. Total time 0.00055 hours\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation at Epoch 4 , AUROC: 0.85918 , AUPRC: 0.40841 , F1: 0.0\n",
"Training at Epoch 5 iteration 0 with loss 0.00344. Total time 0.00083 hours\n",
"Validation at Epoch 5 , AUROC: 0.82857 , AUPRC: 0.38708 , F1: 0.0\n",
"Training at Epoch 6 iteration 0 with loss 0.00087. Total time 0.00111 hours\n",
"Validation at Epoch 6 , AUROC: 0.83163 , AUPRC: 0.52045 , F1: 0.28571\n",
"Training at Epoch 7 iteration 0 with loss 0.00049. Total time 0.00138 hours\n",
"Validation at Epoch 7 , AUROC: 0.83061 , AUPRC: 0.39287 , F1: 0.0\n",
"Training at Epoch 8 iteration 0 with loss 0.00530. Total time 0.00166 hours\n",
"Validation at Epoch 8 , AUROC: 0.83979 , AUPRC: 0.39324 , F1: 0.0\n",
"Training at Epoch 9 iteration 0 with loss 0.00014. Total time 0.00166 hours\n",
"Validation at Epoch 9 , AUROC: 0.83469 , AUPRC: 0.37311 , F1: 0.0\n",
"Training at Epoch 10 iteration 0 with loss 0.00019. Total time 0.00194 hours\n",
"Validation at Epoch 10 , AUROC: 0.83979 , AUPRC: 0.38753 , F1: 0.0\n",
"Training at Epoch 11 iteration 0 with loss 0.00010. Total time 0.00222 hours\n",
"Validation at Epoch 11 , AUROC: 0.82653 , AUPRC: 0.28325 , F1: 0.0\n",
"Training at Epoch 12 iteration 0 with loss 4.43213. Total time 0.0025 hours\n",
"Validation at Epoch 12 , AUROC: 0.89081 , AUPRC: 0.62592 , F1: 0.33333\n",
"Training at Epoch 13 iteration 0 with loss 0.00245. Total time 0.00277 hours\n",
"Validation at Epoch 13 , AUROC: 0.83367 , AUPRC: 0.43921 , F1: 0.27586\n",
"Training at Epoch 14 iteration 0 with loss 0.32932. Total time 0.00305 hours\n",
"Validation at Epoch 14 , AUROC: 0.82448 , AUPRC: 0.32897 , F1: 0.5\n",
"Training at Epoch 15 iteration 0 with loss 0.00070. Total time 0.00333 hours\n",
"Validation at Epoch 15 , AUROC: 0.81938 , AUPRC: 0.41934 , F1: 0.0\n",
"Training at Epoch 16 iteration 0 with loss 0.00099. Total time 0.00361 hours\n",
"Validation at Epoch 16 , AUROC: 0.75612 , AUPRC: 0.22008 , F1: 0.22222\n",
"Training at Epoch 17 iteration 0 with loss 0.00452. Total time 0.00388 hours\n",
"Validation at Epoch 17 , AUROC: 0.87142 , AUPRC: 0.62454 , F1: 0.6\n",
"Training at Epoch 18 iteration 0 with loss 0.00257. Total time 0.00416 hours\n",
"Validation at Epoch 18 , AUROC: 0.88061 , AUPRC: 0.50623 , F1: 0.28571\n",
"Training at Epoch 19 iteration 0 with loss 0.00063. Total time 0.00444 hours\n",
"Validation at Epoch 19 , AUROC: 0.85102 , AUPRC: 0.37918 , F1: 0.0\n",
"Training at Epoch 20 iteration 0 with loss 0.00176. Total time 0.00472 hours\n",
"Validation at Epoch 20 , AUROC: 0.84795 , AUPRC: 0.36310 , F1: 0.28571\n",
"--- Go for Testing ---\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kexinhuang/torch-env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.\n",
" 'precision', 'predicted', average, warn_for)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing AUROC: 0.8944723618090452 , AUPRC: 0.17526455026455023 , F1: 0.0\n",
"--- Training Finished ---\n",
"predicting...\n",
"predicting...\n",
"ROC-Mean 0.8399\n",
"ROC-STD 0.0852\n",
"PRC-Mean 0.4991\n",
"PRC-STD 0.2985\n"
]
},
{
"data": {
"image/png": "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uh7djfj4eDp27Ejr1q193qBfeuklWrRoQa9evdi9e7ffe/Wnx9GxY0fatGnDXXfdRVpaGuC0CMePH0/37t2ZPHkyZ86c4cEHH6Rjx460a9fOY/vevXu55ZZbiI6OJjo6mk2bNuVZ14HQqFEjWrdunedLx+HDhzl58iRdunRBRBg2bBjLli0DHD2P4cOHAzB8+HBPuojQrVs3Vq5cedE2BoT77Slct+bNK2rDySu14eSVqqpab912rbduu5Z0brxxrsLzPlvDhjOL26xCExsbq7GxsUV2/l27dhXZuQNhz549KiL6+eefq6rqTz/9pNdcc42mpKRoenq63njjjTp27FhVVR0+fLguXrxYJ06cqGPGjNHMzExVVe3atasmJyerqmq1atUKdO1rrrlGT5w4oaqqUVFR+sknn6iq6oQJE7RVq1a5HpuQkKCNGzfW48eP69mzZzUiIkL379+vhw4d8th//vx57d69uy5dulRVVQFdtGiR5xwNGzbUt956S1VVn3zySY2KitKTJ09qSkqK1q1bV1VVz58/77HvyJEj2qRJE899u+91z549OWzdu3evtmjRQvfu3aurV6/W0aNHa2Zmpl64cEFjYmL0X//6l27ZskUjIyP1zJkzeuLECW3SpInGx8fnuNdp06bprFmzPPupqamez88995wnb/jw4RoTE6MZGRmqqvrMM8/oBx98oKqqx44d02bNmunp06f1zJkzevbsWVVV/e6777R9+/Z+6/jmm2/WNm3a5NjWrFmT6//F/R3xR3Jysvbs2dOzv2HDBo2JiVFV1Zo1a/qUrVWrlufzggUL9PHHH/d7Tn+/H5xlEIV67lpXVYjZtGk/N92UkCP9yJGJ1KljAQlLMqbHYXoc/iiIHkcgaAE0O7wpSXocRpAZP361z/6IEa1JSLizmKwxCoLpcZgehz8KoscRCA0aNODgwYOe/YMHD3LVVVcBUK9ePQ4fPkz9+vU5fPgwV1xxhadcSdLjMIJAbGySp39182ZHyrJq1QqoxprTCFNMj8MX0+MITI8jEOrXr0/16tXZvHkzqsr777/vCXnvrecxf/58n1D4odTjMMdRhKSmplGu3HReeOEzLr003pOuGsuZM7nPqDFKPt56HL169fIMZHszePBgRo8ezYABAzh79qxPnluPI7fBcbcex7p16zyDyG6thoSEBMaOHUuXLl0K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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"
},
{
"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": [
"roc_ = []\n",
"prc_ = []\n",
"scores_ = []\n",
"labels_ = []\n",
"outputs = []\n",
"drug_encoding = 'rdkit_2d_normalized'\n",
"\n",
"for i in range(10):\n",
" roc, prc, scores, labels, test_ = eval('run_' + drug_encoding + '(i, True)')\n",
" roc_.append(roc)\n",
" prc_.append(prc)\n",
" scores_.append(scores)\n",
" labels_.append(labels)\n",
" outputs.append(test_)\n",
"print('ROC-Mean {:.4f}'.format(np.mean(np.array(roc_))))\n",
"print('ROC-STD {:.4f}'.format(np.std(np.array(roc_))))\n",
"print('PRC-Mean {:.4f}'.format(np.mean(np.array(prc_))))\n",
"print('PRC-STD {:.4f}'.format(np.std(np.array(prc_))))\n",
"\n",
"with open('./scores_aicures/' + drug_encoding + '_score.pkl', 'wb') as f:\n",
" pickle.dump(scores_, f, pickle.HIGHEST_PROTOCOL)\n"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"outputs = np.mean(np.array([np.array(i) for i in outputs]), axis = 0)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"test_output = pd.read_csv('./aicures_data/test.csv')\n",
"test_output.activity = outputs "
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"test_output.to_csv('./aicures_data/test_pred.csv')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# ensembling"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"models = ['MPNN','CNN','rdkit_2d_normalized','Morgan','Daylight','Pubchem']\n",
"\n",
"scores_total = []\n",
"\n",
"for drug_encoding in models:\n",
" with open('./scores_aicures/' + drug_encoding + '_score.pkl', 'rb') as f:\n",
" score = pickle.load(f)\n",
" scores_total.append(np.array([np.array(i) for i in score]))"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
"s = np.array(scores_total).T\n",
"max_ = []\n",
"for i in range(10):\n",
" max_.append(np.max(np.stack(s[i]), axis = 0))"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [],
"source": [
"ensemble_mean = np.mean(np.array(scores_total), axis = 0)"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [],
"source": [
"ensemble_max = np.array(max_)"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [],
"source": [
"ensemble = (ensemble_mean + ensemble_max)/2"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [],
"source": [
"roc_ = []\n",
"prc_ = []\n",
"\n",
"for i in range(ensemble.shape[0]):\n",
" \n",
" roc = roc_auc_score(labels_[i], ensemble[i])\n",
" prc = average_precision_score(labels_[i], ensemble[i])\n",
" \n",
" roc_.append(roc)\n",
" prc_.append(prc)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ROC-Mean 0.7132\n",
"ROC-STD 0.2574\n",
"PRC-Mean 0.4872\n",
"PRC-STD 0.3355\n"
]
}
],
"source": [
"# mean\n",
"print('ROC-Mean {:.4f}'.format(np.mean(np.array(roc_))))\n",
"print('ROC-STD {:.4f}'.format(np.std(np.array(roc_))))\n",
"print('PRC-Mean {:.4f}'.format(np.mean(np.array(prc_))))\n",
"print('PRC-STD {:.4f}'.format(np.std(np.array(prc_))))"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ROC-Mean 0.7011\n",
"ROC-STD 0.2641\n",
"PRC-Mean 0.5036\n",
"PRC-STD 0.3237\n"
]
}
],
"source": [
"# max\n",
"print('ROC-Mean {:.4f}'.format(np.mean(np.array(roc_))))\n",
"print('ROC-STD {:.4f}'.format(np.std(np.array(roc_))))\n",
"print('PRC-Mean {:.4f}'.format(np.mean(np.array(prc_))))\n",
"print('PRC-STD {:.4f}'.format(np.std(np.array(prc_))))"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ROC-Mean 0.6988\n",
"ROC-STD 0.2759\n",
"PRC-Mean 0.5176\n",
"PRC-STD 0.3354\n"
]
}
],
"source": [
"# mean + max\n",
"print('ROC-Mean {:.4f}'.format(np.mean(np.array(roc_))))\n",
"print('ROC-STD {:.4f}'.format(np.std(np.array(roc_))))\n",
"print('PRC-Mean {:.4f}'.format(np.mean(np.array(prc_))))\n",
"print('PRC-STD {:.4f}'.format(np.std(np.array(prc_))))"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [],
"source": [
"model.save_model('./model')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Repurposing"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from DeepPurpose import property_pred"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"model = property_pred.model_pretrained('./model')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"drug_smiles, drug_names, cid = load_antiviral_drugs()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"repurposing...\n",
"Drug Property Prediction Mode...\n",
"in total: 82 drugs\n",
"encoding drug...\n",
"unique drugs: 81\n",
"drug encoding finished...\n",
"Done.\n",
"predicting...\n",
"---------------\n",
"Drug Repurposing Result\n",
"+------+----------------------+-------------+-------------+\n",
"| Rank | Drug Name | Interaction | Probability |\n",
"+------+----------------------+-------------+-------------+\n",
"| 1 | Elvitegravir | YES | 0.92 |\n",
"| 2 | Letermovir | NO | 0.44 |\n",
"| 3 | Bictegravir | NO | 0.39 |\n",
"| 4 | Dolutegravir | NO | 0.26 |\n",
"| 5 | Ibacitabine | NO | 0.13 |\n",
"| 6 | Cidofovir | NO | 0.00 |\n",
"| 7 | Emtricitabine | NO | 0.00 |\n",
"| 8 | Zanamivir | NO | 0.00 |\n",
"| 9 | Docosanol | NO | 0.00 |\n",
"| 10 | Vidarabine | NO | 0.00 |\n",
"checkout ./result/repurposing.txt for the whole list\n"
]
}
],
"source": [
"pred = property_pred.repurpose(drug_smiles, model, drug_names)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}