{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import json" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "with open('data/interactions.json') as f:\n", " ddi_json = json.load(f)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0namestatelevel4level3level2level1Molecular WeightlogPWater Solubility...Rotatable Bond CountPolar Surface Area (PSA)pKa (strongest basic)Ghose FilterMonoisotopic WeightMDDR-Like RulePolarizabilityH Bond Acceptor CountPhysiological ChargeRule of Five
05BivalirudinsolidB01AEB01AB01B2180.2853-14.000.04640...66.0901.5711.880.02178.9858131.0218.5437.0-4.00.0
16LeuprolidesolidL02AEL02AL02L1209.3983-2.400.03380...32.0429.0411.920.01208.6454621.0125.2416.01.00.0
213GoserelinsolidL02AEL02AL02L1269.4105-5.100.02830...33.0495.8910.910.01268.6414391.0130.7418.01.00.0
325Gramicidin DliquidR02ABR02AR02R1811.25305.960.00390...50.0519.89NaN0.01810.0334191.0194.7316.00.00.0
433DesmopressinsolidH01BAH01BH01H1069.2200-6.100.11000...19.0435.4111.770.01068.4269561.0104.7815.01.00.0
..................................................................
262514553BelumosudilsolidL04AAL04AL04L452.51804.650.00289...7.0104.824.110.0452.1960741.049.556.00.01.0
262614688Tebipenem pivoxilNaNJ01DHJ01DJ01J497.63001.590.16700...9.0108.746.270.0497.1654281.053.396.00.01.0
262714698TosufloxacinNaNJ01MAJ01MJ01J404.34900.470.07620...3.099.769.801.0404.1096250.037.187.00.01.0
262814931LinzagolixsolidH01CCH01CH01H508.42003.880.00198...6.0114.40-3.500.0508.0552061.045.397.0-1.00.0
262914995Methionine C-11NaNV09IXV09IV09V148.2100-2.2023.90000...4.063.329.500.0148.0624840.015.543.00.01.0
\n", "

2630 rows × 26 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 name state level4 level3 level2 level1 \\\n", "0 5 Bivalirudin solid B01AE B01A B01 B \n", "1 6 Leuprolide solid L02AE L02A L02 L \n", "2 13 Goserelin solid L02AE L02A L02 L \n", "3 25 Gramicidin D liquid R02AB R02A R02 R \n", "4 33 Desmopressin solid H01BA H01B H01 H \n", "... ... ... ... ... ... ... ... \n", "2625 14553 Belumosudil solid L04AA L04A L04 L \n", "2626 14688 Tebipenem pivoxil NaN J01DH J01D J01 J \n", "2627 14698 Tosufloxacin NaN J01MA J01M J01 J \n", "2628 14931 Linzagolix solid H01CC H01C H01 H \n", "2629 14995 Methionine C-11 NaN V09IX V09I V09 V \n", "\n", " Molecular Weight logP Water Solubility ... Rotatable Bond Count \\\n", "0 2180.2853 -14.00 0.04640 ... 66.0 \n", "1 1209.3983 -2.40 0.03380 ... 32.0 \n", "2 1269.4105 -5.10 0.02830 ... 33.0 \n", "3 1811.2530 5.96 0.00390 ... 50.0 \n", "4 1069.2200 -6.10 0.11000 ... 19.0 \n", "... ... ... ... ... ... \n", "2625 452.5180 4.65 0.00289 ... 7.0 \n", "2626 497.6300 1.59 0.16700 ... 9.0 \n", "2627 404.3490 0.47 0.07620 ... 3.0 \n", "2628 508.4200 3.88 0.00198 ... 6.0 \n", "2629 148.2100 -2.20 23.90000 ... 4.0 \n", "\n", " Polar Surface Area (PSA) pKa (strongest basic) Ghose Filter \\\n", "0 901.57 11.88 0.0 \n", "1 429.04 11.92 0.0 \n", "2 495.89 10.91 0.0 \n", "3 519.89 NaN 0.0 \n", "4 435.41 11.77 0.0 \n", "... ... ... ... \n", "2625 104.82 4.11 0.0 \n", "2626 108.74 6.27 0.0 \n", "2627 99.76 9.80 1.0 \n", "2628 114.40 -3.50 0.0 \n", "2629 63.32 9.50 0.0 \n", "\n", " Monoisotopic Weight MDDR-Like Rule Polarizability \\\n", "0 2178.985813 1.0 218.54 \n", "1 1208.645462 1.0 125.24 \n", "2 1268.641439 1.0 130.74 \n", "3 1810.033419 1.0 194.73 \n", "4 1068.426956 1.0 104.78 \n", "... ... ... ... \n", "2625 452.196074 1.0 49.55 \n", "2626 497.165428 1.0 53.39 \n", "2627 404.109625 0.0 37.18 \n", "2628 508.055206 1.0 45.39 \n", "2629 148.062484 0.0 15.54 \n", "\n", " H Bond Acceptor Count Physiological Charge Rule of Five \n", "0 37.0 -4.0 0.0 \n", "1 16.0 1.0 0.0 \n", "2 18.0 1.0 0.0 \n", "3 16.0 0.0 0.0 \n", "4 15.0 1.0 0.0 \n", "... ... ... ... \n", "2625 6.0 0.0 1.0 \n", "2626 6.0 0.0 1.0 \n", "2627 7.0 0.0 1.0 \n", "2628 7.0 -1.0 0.0 \n", "2629 3.0 0.0 1.0 \n", "\n", "[2630 rows x 26 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_drugs = pd.read_csv('data/filtered_dataset.csv')\n", "df_drugs" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def adjacency_matrix(df):\n", " # create a matrix of zeros with the same shape as the final adjacency matrix\n", " matrix = np.zeros((len(df), len(df)), dtype=int)\n", "\n", " # loop through each drug and set the corresponding values in the matrix to 1\n", " for i, drug in enumerate(df['name']):\n", " interacting_drugs = ddi_json[drug]\n", " indices = df.index[df['name'].isin(interacting_drugs)].tolist()\n", " matrix[i, indices] = 1\n", "\n", " # convert the matrix to a dataframe and set the column names and index\n", " df_matrix = pd.DataFrame(matrix, columns=df['name'], index=df['name'])\n", "\n", " return df_matrix\n", "\n", "df_matrix = adjacency_matrix(df_drugs)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nameBivalirudinLeuprolideGoserelinGramicidin DDesmopressinCetrorelixDaptomycinAbarelixPyridoxal phosphateCyanocobalamin...NaphthoquineOdevixibatMelphalan flufenamideDeucravacitinibTegoprazanBelumosudilTebipenem pivoxilTosufloxacinLinzagolixMethionine C-11
name
Bivalirudin0000000000...0000000000
Leuprolide0010101001...0000000000
Goserelin0100101001...0000000000
Gramicidin D0000000000...0000000000
Desmopressin0110001001...0000000000
..................................................................
Belumosudil0000001000...0001000000
Tebipenem pivoxil0000000000...0000000000
Tosufloxacin0000000000...0000000000
Linzagolix0000000000...0000000000
Methionine C-110000000000...0000000000
\n", "

2630 rows × 2630 columns

\n", "
" ], "text/plain": [ "name Bivalirudin Leuprolide Goserelin Gramicidin D \\\n", "name \n", "Bivalirudin 0 0 0 0 \n", "Leuprolide 0 0 1 0 \n", "Goserelin 0 1 0 0 \n", "Gramicidin D 0 0 0 0 \n", "Desmopressin 0 1 1 0 \n", "... ... ... ... ... \n", "Belumosudil 0 0 0 0 \n", "Tebipenem pivoxil 0 0 0 0 \n", "Tosufloxacin 0 0 0 0 \n", "Linzagolix 0 0 0 0 \n", "Methionine C-11 0 0 0 0 \n", "\n", "name Desmopressin Cetrorelix Daptomycin Abarelix \\\n", "name \n", "Bivalirudin 0 0 0 0 \n", "Leuprolide 1 0 1 0 \n", "Goserelin 1 0 1 0 \n", "Gramicidin D 0 0 0 0 \n", "Desmopressin 0 0 1 0 \n", "... ... ... ... ... \n", "Belumosudil 0 0 1 0 \n", "Tebipenem pivoxil 0 0 0 0 \n", "Tosufloxacin 0 0 0 0 \n", "Linzagolix 0 0 0 0 \n", "Methionine C-11 0 0 0 0 \n", "\n", "name Pyridoxal phosphate Cyanocobalamin ... Naphthoquine \\\n", "name ... \n", "Bivalirudin 0 0 ... 0 \n", "Leuprolide 0 1 ... 0 \n", "Goserelin 0 1 ... 0 \n", "Gramicidin D 0 0 ... 0 \n", "Desmopressin 0 1 ... 0 \n", "... ... ... ... ... \n", "Belumosudil 0 0 ... 0 \n", "Tebipenem pivoxil 0 0 ... 0 \n", "Tosufloxacin 0 0 ... 0 \n", "Linzagolix 0 0 ... 0 \n", "Methionine C-11 0 0 ... 0 \n", "\n", "name Odevixibat Melphalan flufenamide Deucravacitinib \\\n", "name \n", "Bivalirudin 0 0 0 \n", "Leuprolide 0 0 0 \n", "Goserelin 0 0 0 \n", "Gramicidin D 0 0 0 \n", "Desmopressin 0 0 0 \n", "... ... ... ... \n", "Belumosudil 0 0 1 \n", "Tebipenem pivoxil 0 0 0 \n", "Tosufloxacin 0 0 0 \n", "Linzagolix 0 0 0 \n", "Methionine C-11 0 0 0 \n", "\n", "name Tegoprazan Belumosudil Tebipenem pivoxil Tosufloxacin \\\n", "name \n", "Bivalirudin 0 0 0 0 \n", "Leuprolide 0 0 0 0 \n", "Goserelin 0 0 0 0 \n", "Gramicidin D 0 0 0 0 \n", "Desmopressin 0 0 0 0 \n", "... ... ... ... ... \n", "Belumosudil 0 0 0 0 \n", "Tebipenem pivoxil 0 0 0 0 \n", "Tosufloxacin 0 0 0 0 \n", "Linzagolix 0 0 0 0 \n", "Methionine C-11 0 0 0 0 \n", "\n", "name Linzagolix Methionine C-11 \n", "name \n", "Bivalirudin 0 0 \n", "Leuprolide 0 0 \n", "Goserelin 0 0 \n", "Gramicidin D 0 0 \n", "Desmopressin 0 0 \n", "... ... ... \n", "Belumosudil 0 0 \n", "Tebipenem pivoxil 0 0 \n", "Tosufloxacin 0 0 \n", "Linzagolix 0 0 \n", "Methionine C-11 0 0 \n", "\n", "[2630 rows x 2630 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_matrix" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "import itertools\n", "def random_drug_pairs(names, p, random_state=None):\n", " \"\"\"\n", " Selects p% of all possible pairs of names selected at random from a pandas series of names.\n", " \n", " Parameters:\n", " names (pandas.Series): A pandas series of names.\n", " p (float): The percentage of pairs to select (between 0 and 1).\n", " random_state (int, optional): Seed for the random number generator.\n", " \n", " Returns:\n", " pandas.Series: A pandas series of selected pairs of names.\n", " \"\"\"\n", " # Calculate the total number of possible pairs\n", " num_pairs = int(len(names) * (len(names) - 1) / 2)\n", "\n", " # Calculate the number of pairs to select\n", " num_selected_pairs = int(p * num_pairs)\n", "\n", " # Generate all possible pairs of names using itertools\n", " all_pairs = list(itertools.combinations(names, 2))\n", "\n", " # Select a random subset of pairs\n", " selected_pairs = pd.Series(all_pairs).sample(n=num_selected_pairs, random_state=random_state)\n", "\n", " # Return the selected pairs\n", " return selected_pairs\n", "\n", "def exclude_pairs_from_adjacency_matrix(df_matrix, excluded_pairs):\n", " col_inds1 = np.array([df_matrix.columns.get_loc(drug1) for drug1, _ in excluded_pairs])\n", " col_inds2 = np.array([df_matrix.columns.get_loc(drug2) for _, drug2 in excluded_pairs])\n", " values = df_matrix.values[col_inds1, col_inds2]\n", " df_matrix.values[col_inds1, col_inds2] = 0\n", " df_matrix.values[col_inds2, col_inds1] = 0\n", " return values\n", "\n", "def get_pairs_from_adjacency_matrix(df_matrix, excluded_pairs):\n", " col_inds1 = np.array([df_matrix.columns.get_loc(drug1) for drug1, _ in excluded_pairs])\n", " col_inds2 = np.array([df_matrix.columns.get_loc(drug2) for _, drug2 in excluded_pairs])\n", " values = df_matrix.values[col_inds1, col_inds2]\n", " return values" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# train, test split \n", "# train set : remove selected pairs from adj matrix\n", "# test set: the excluded pairs\n", "excluded_pairs = random_drug_pairs(df_drugs['name'], 0.20, 42)\n", "excluded_pair_values = exclude_pairs_from_adjacency_matrix(df_matrix, excluded_pairs)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\Georg\\anaconda3\\lib\\site-packages\\sknetwork\\utils\\check.py:216: Warning: The number of neighbors must be lower than the number of nodes with known labels. Changed accordingly.\n", " warnings.warn(Warning(\"The number of neighbors must be lower than the number of nodes with known labels. \"\n" ] } ], "source": [ "from sknetwork.linkpred import NNLinker\n", "from sknetwork.visualization import svg_graph, svg_bigraph\n", "linker = NNLinker(n_neighbors=2630, threshold=0)\n", "links = linker.fit_predict(df_matrix.to_numpy())" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nameBivalirudinLeuprolideGoserelinGramicidin DDesmopressinCetrorelixDaptomycinAbarelixPyridoxal phosphateCyanocobalamin...NaphthoquineOdevixibatMelphalan flufenamideDeucravacitinibTegoprazanBelumosudilTebipenem pivoxilTosufloxacinLinzagolixMethionine C-11
01.0000000.3061500.2887410.0830900.3102370.00.3384570.00.00.430352...0.00.00.00.3055320.00.2418660.00.00.1055190.0
10.3061501.0000000.7804710.0874870.5874820.00.6450920.00.00.601979...0.00.00.00.1670360.00.2421980.00.00.1568510.0
20.2887410.7804711.0000000.1106480.6036940.00.6146040.00.00.608478...0.00.00.00.1239660.00.2175100.00.00.1239840.0
30.0830900.0874870.1106481.0000000.0280470.00.1904430.00.00.032498...0.00.00.00.0000000.00.0000000.00.00.0398410.0
40.3102370.5874820.6036940.0280471.0000000.00.5638080.00.00.630617...0.00.00.00.0999090.00.1781260.00.00.0879960.0
..................................................................
26250.2418660.2421980.2175100.0000000.1781260.00.3434410.00.00.270278...0.00.00.00.5235970.01.0000000.00.00.1867610.0
26260.0000000.0000000.0000000.0000000.0000000.00.0000000.00.00.000000...0.00.00.00.0000000.00.0000000.00.00.0000000.0
26270.0000000.0000000.0000000.0000000.0000000.00.0000000.00.00.000000...0.00.00.00.0000000.00.0000000.00.00.0000000.0
26280.1055190.1568510.1239840.0398410.0879960.00.1643950.00.00.097106...0.00.00.00.0824060.00.1867610.00.01.0000000.0
26290.0000000.0000000.0000000.0000000.0000000.00.0000000.00.00.000000...0.00.00.00.0000000.00.0000000.00.00.0000000.0
\n", "

2630 rows × 2630 columns

\n", "
" ], "text/plain": [ "name Bivalirudin Leuprolide Goserelin Gramicidin D Desmopressin \\\n", "0 1.000000 0.306150 0.288741 0.083090 0.310237 \n", "1 0.306150 1.000000 0.780471 0.087487 0.587482 \n", "2 0.288741 0.780471 1.000000 0.110648 0.603694 \n", "3 0.083090 0.087487 0.110648 1.000000 0.028047 \n", "4 0.310237 0.587482 0.603694 0.028047 1.000000 \n", "... ... ... ... ... ... \n", "2625 0.241866 0.242198 0.217510 0.000000 0.178126 \n", "2626 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "2627 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "2628 0.105519 0.156851 0.123984 0.039841 0.087996 \n", "2629 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "\n", "name Cetrorelix Daptomycin Abarelix Pyridoxal phosphate Cyanocobalamin \\\n", "0 0.0 0.338457 0.0 0.0 0.430352 \n", "1 0.0 0.645092 0.0 0.0 0.601979 \n", "2 0.0 0.614604 0.0 0.0 0.608478 \n", "3 0.0 0.190443 0.0 0.0 0.032498 \n", "4 0.0 0.563808 0.0 0.0 0.630617 \n", "... ... ... ... ... ... \n", "2625 0.0 0.343441 0.0 0.0 0.270278 \n", "2626 0.0 0.000000 0.0 0.0 0.000000 \n", "2627 0.0 0.000000 0.0 0.0 0.000000 \n", "2628 0.0 0.164395 0.0 0.0 0.097106 \n", "2629 0.0 0.000000 0.0 0.0 0.000000 \n", "\n", "name ... Naphthoquine Odevixibat Melphalan flufenamide Deucravacitinib \\\n", "0 ... 0.0 0.0 0.0 0.305532 \n", "1 ... 0.0 0.0 0.0 0.167036 \n", "2 ... 0.0 0.0 0.0 0.123966 \n", "3 ... 0.0 0.0 0.0 0.000000 \n", "4 ... 0.0 0.0 0.0 0.099909 \n", "... ... ... ... ... ... \n", "2625 ... 0.0 0.0 0.0 0.523597 \n", "2626 ... 0.0 0.0 0.0 0.000000 \n", "2627 ... 0.0 0.0 0.0 0.000000 \n", "2628 ... 0.0 0.0 0.0 0.082406 \n", "2629 ... 0.0 0.0 0.0 0.000000 \n", "\n", "name Tegoprazan Belumosudil Tebipenem pivoxil Tosufloxacin Linzagolix \\\n", "0 0.0 0.241866 0.0 0.0 0.105519 \n", "1 0.0 0.242198 0.0 0.0 0.156851 \n", "2 0.0 0.217510 0.0 0.0 0.123984 \n", "3 0.0 0.000000 0.0 0.0 0.039841 \n", "4 0.0 0.178126 0.0 0.0 0.087996 \n", "... ... ... ... ... ... \n", "2625 0.0 1.000000 0.0 0.0 0.186761 \n", "2626 0.0 0.000000 0.0 0.0 0.000000 \n", "2627 0.0 0.000000 0.0 0.0 0.000000 \n", "2628 0.0 0.186761 0.0 0.0 1.000000 \n", "2629 0.0 0.000000 0.0 0.0 0.000000 \n", "\n", "name Methionine C-11 \n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "2625 0.0 \n", "2626 0.0 \n", "2627 0.0 \n", "2628 0.0 \n", "2629 0.0 \n", "\n", "[2630 rows x 2630 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_predicted = pd.DataFrame.sparse.from_spmatrix(links)\n", "df_predicted.columns = df_matrix.columns\n", "df_predicted" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "predictions = get_pairs_from_adjacency_matrix(df_predicted, excluded_pairs)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "130972.25693560754" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predictions.sum()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9689347313012144" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "from sklearn import metrics\n", "metrics.roc_auc_score(excluded_pair_values, predictions)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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WbNmYWZcdtll/PjHP+aSSy5h7NixbNmyhWeeeYZp06bx1ltv8etf/5qxY8eSn59PaWkpEydOZPr06RQWFnLddddx9dVXM336dH71q1/Rq1cv8vLymD9/foXreOqpp7jqqqvKl3fs2MH777/P22+/zVlnncUtt9yS8rPatWsXDz/8MEuXLqVVq1YA9OzZkwsuuCDlsbV56aWXGDduHK1atWLAgAHsv//+fPzxxxx55JEV9vviiy847rjjADjppJM45ZRTuO222yrsM3nyZC688MLy5bPOOotjjz2Wm266aY9ihDRMBKoaEgnk5+dz6KGHptyvR48evPnmm+Tm5rJo0SIuvPBCZs2axdNPP80pp5zCTTfdRGlpKbt27SIvL49Vq1aRn58PwJYtWyq81xVXXMF7773H2LFjOf/88ysknL/+9a907NiRmTNnUlhYyNFHH83JJ58MwMcff0x+fn61XSLff/99/vKXv5Qvv/jii5x66qkMGTKELl268MknnzByZO2j5CxevJh+/fpVKFXU5Mc//jFvv/12lfXjxo1j4sSJFdatWrWKI444ony5T58+rFq1qsqxw4cPZ+rUqZx99tk8++yzrFixoso+f/vb33jppZfKlzt37kxhYSEbN26ka9euKeOuTdokAlUNyd6stm/uTa24uJjrr7+evLw8MjMzWbhwIQCHHXYYl112GcXFxZxzzjmMGDGCgQMHsmTJEm644QbOOOOM8ht5FG+88QZz584tryraunUrixYtIicnh9GjR9fYL37Tpk20b//NAMmTJ0/mRz/6ERDcnCdPnszIkSNr7E1T1142d999d+R9yx5kTXW+SZMmMWHCBG699VbOOusscnIq9m786KOPaNOmTZV2mx49erB69eq9OxGY2anAnwgeTHvE3e+stN3C7acTzIl8STjpTYMrLlUiEEk2bNiwSPXzd999Nz179mTOnDkkEglyc3MBOO6445gxYwavvvoq48eP58Ybb+Tiiy9mzpw5TJs2jfvuu49nnnmGSZMmRYrH3fnzn//MKaecUmH99OnTadu2bY3HZWVlkUgkyMjIYOPGjfzzn/8kPz8fM6O0tBQz43e/+x1du3at0ri6adMmunXrxv77789XX33F9u3bKySV6tSlRNCnT58K3+5XrlzJvvvuW+XYAw88kDfeeAOAhQsX8uqrr1bYPmXKlArV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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import RocCurveDisplay\n", "RocCurveDisplay.from_predictions(excluded_pair_values, predictions)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "base", "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.8.8" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }