From 3a603c0228517214c0898d3389a18a78b069f93f Mon Sep 17 00:00:00 2001 From: jkobject Date: Wed, 7 Aug 2024 16:19:31 +0200 Subject: [PATCH] tiny debugs --- bengrn/base.py | 2 +- notebooks/compare_groundtruths.ipynb | 1747 ++++++++++++++++++++++++++ notebooks/test.ipynb | 1198 ------------------ 3 files changed, 1748 insertions(+), 1199 deletions(-) create mode 100644 notebooks/compare_groundtruths.ipynb delete mode 100644 notebooks/test.ipynb diff --git a/bengrn/base.py b/bengrn/base.py index d5fac44..61863df 100644 --- a/bengrn/base.py +++ b/bengrn/base.py @@ -417,7 +417,7 @@ def get_scenicplus( def get_sroy_gt( get: str = "main", join: str = "outer", species: str = "human", gt: str = "full" -) -> GrnAnnData: +) -> GRNAnnData: """ This function retrieves the ground truth data from the McCall et al.'s paper. diff --git a/notebooks/compare_groundtruths.ipynb b/notebooks/compare_groundtruths.ipynb new file mode 100644 index 0000000..915f186 --- /dev/null +++ b/notebooks/compare_groundtruths.ipynb @@ -0,0 +1,1747 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "💡 connected lamindb: jkobject/scprint\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "from bengrn import get_GT_db, get_perturb_gt, get_sroy_gt, BenGRN, FILEDIR\n", + "\n", + "import numpy as np\n", + "import tqdm\n", + "\n", + "%load_ext autoreload\n", + "%autoreload 2\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "omni = get_GT_db('omnipath')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "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", + "
sourcetargetis_directedis_stimulationis_inhibitionconsensus_directionconsensus_stimulationconsensus_inhibitioncuration_effortreferencessourcestypen_sourcesn_primary_sourcesn_referencesreferences_stripped
0CALM1TRPC1TrueFalseTrueTrueFalseTrue3TRIP:11290752;TRIP:11983166;TRIP:12601176TRIPpost_translational113.011290752;11983166;12601176
1CALM3TRPC1TrueFalseTrueTrueFalseTrue3TRIP:11290752;TRIP:11983166;TRIP:12601176TRIPpost_translational113.011290752;11983166;12601176
2CALM2TRPC1TrueFalseTrueTrueFalseTrue3TRIP:11290752;TRIP:11983166;TRIP:12601176TRIPpost_translational113.011290752;11983166;12601176
3CAV1TRPC1TrueTrueFalseTrueTrueFalse13DIP:19897728;HPRD:12732636;IntAct:19897728;Lit...DIP;HPRD;IntAct;Lit-BM-17;TRIPpost_translational558.010980191;12732636;14551243;16822931;18430726;1...
4DRD2TRPC1TrueTrueFalseTrueTrueFalse1TRIP:18261457TRIPpost_translational111.018261457
...................................................
278574TAF7MIMAT0000075TrueFalseFalseFalseFalseFalse0NoneENCODE_tf-mirnamirna_transcriptional10NaNNone
278575RAD21MIMAT0005867TrueFalseFalseFalseFalseFalse0NoneENCODE_tf-mirnamirna_transcriptional10NaNNone
278576P23511MIMAT0003308TrueFalseFalseFalseFalseFalse0NoneENCODE_tf-mirnamirna_transcriptional10NaNNone
278577FOSL2MIMAT0005867TrueFalseFalseFalseFalseFalse0NoneENCODE_tf-mirnamirna_transcriptional10NaNNone
278578SMARCB1MIMAT0004491TrueFalseFalseFalseFalseFalse0NoneENCODE_tf-mirnamirna_transcriptional10NaNNone
\n", + "

278579 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " source target is_directed is_stimulation is_inhibition \\\n", + "0 CALM1 TRPC1 True False True \n", + "1 CALM3 TRPC1 True False True \n", + "2 CALM2 TRPC1 True False True \n", + "3 CAV1 TRPC1 True True False \n", + "4 DRD2 TRPC1 True True False \n", + "... ... ... ... ... ... \n", + "278574 TAF7 MIMAT0000075 True False False \n", + "278575 RAD21 MIMAT0005867 True False False \n", + "278576 P23511 MIMAT0003308 True False False \n", + "278577 FOSL2 MIMAT0005867 True False False \n", + "278578 SMARCB1 MIMAT0004491 True False False \n", + "\n", + " consensus_direction consensus_stimulation consensus_inhibition \\\n", + "0 True False True \n", + "1 True False True \n", + "2 True False True \n", + "3 True True False \n", + "4 True True False \n", + "... ... ... ... \n", + "278574 False False False \n", + "278575 False False False \n", + "278576 False False False \n", + "278577 False False False \n", + "278578 False False False \n", + "\n", + " curation_effort references \\\n", + "0 3 TRIP:11290752;TRIP:11983166;TRIP:12601176 \n", + "1 3 TRIP:11290752;TRIP:11983166;TRIP:12601176 \n", + "2 3 TRIP:11290752;TRIP:11983166;TRIP:12601176 \n", + "3 13 DIP:19897728;HPRD:12732636;IntAct:19897728;Lit... \n", + "4 1 TRIP:18261457 \n", + "... ... ... \n", + "278574 0 None \n", + "278575 0 None \n", + "278576 0 None \n", + "278577 0 None \n", + "278578 0 None \n", + "\n", + " sources type n_sources \\\n", + "0 TRIP post_translational 1 \n", + "1 TRIP post_translational 1 \n", + "2 TRIP post_translational 1 \n", + "3 DIP;HPRD;IntAct;Lit-BM-17;TRIP post_translational 5 \n", + "4 TRIP post_translational 1 \n", + "... ... ... ... \n", + "278574 ENCODE_tf-mirna mirna_transcriptional 1 \n", + "278575 ENCODE_tf-mirna mirna_transcriptional 1 \n", + "278576 ENCODE_tf-mirna mirna_transcriptional 1 \n", + "278577 ENCODE_tf-mirna mirna_transcriptional 1 \n", + "278578 ENCODE_tf-mirna mirna_transcriptional 1 \n", + "\n", + " n_primary_sources n_references \\\n", + "0 1 3.0 \n", + "1 1 3.0 \n", + "2 1 3.0 \n", + "3 5 8.0 \n", + "4 1 1.0 \n", + "... ... ... \n", + "278574 0 NaN \n", + "278575 0 NaN \n", + "278576 0 NaN \n", + "278577 0 NaN \n", + "278578 0 NaN \n", + "\n", + " references_stripped \n", + "0 11290752;11983166;12601176 \n", + "1 11290752;11983166;12601176 \n", + "2 11290752;11983166;12601176 \n", + "3 10980191;12732636;14551243;16822931;18430726;1... \n", + "4 18261457 \n", + "... ... \n", + "278574 None \n", + "278575 None \n", + "278576 None \n", + "278577 None \n", + "278578 None \n", + "\n", + "[278579 rows x 16 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "omni" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "varnames = set(omni.iloc[:, :2].values.flatten())\n", + "varnames = list(varnames)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 278579/278579 [02:57<00:00, 1573.35it/s]\n" + ] + } + ], + "source": [ + "da = np.zeros((len(varnames), len(varnames)), dtype=float)\n", + "for i, j in tqdm.tqdm(omni.iloc[:, :2].values):\n", + " if i in varnames and j in varnames:\n", + " da[varnames.index(i), varnames.index(j)] = 1" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8896" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(da.sum(1)>0).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(da.sum(1)>0).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "230678.0" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "da.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "12.161429776465626" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "da.sum(1).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(da.sum(0)> 1000).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "550" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(da.sum(0)> 100).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4430" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(da.sum(0)> 10).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "15" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(da.sum(1)> 1000).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "436" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(da.sum(1)> 100).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2255" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(da.sum(1)> 10).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(18968, 18968)" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "da.sum(0)>0" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAHLCAYAAADBbjLhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+/klEQVR4nO3de1yUdf7//+coJxEEEQVBRUPXIhFWPJSZorLhIU2r1Q4WkmlteOhDh83atLKtz9ZqWk1ZW0q61Vp+W93NMhV1cc1dFdM0s9Q8H/AUIpigcP3+8Md8HE7CMDDDNY/77Ta3mvdcc12vmQv06XW9DxbDMAwBAACYUCNXFwAAAFBXCDoAAMC0CDoAAMC0CDoAAMC0CDoAAMC0CDoAAMC0CDoAAMC0CDoAAMC0CDoAAMC0CDrwOM8995wsFku9HCsxMVGJiYm252vXrpXFYtHixYvr5fhjx45V+/bt6+VYjsrPz9eDDz6o8PBwWSwWPfroo/V27Ibw/XzyyScKCQlRfn6+q0txG6W/R2vXrq3xe+fOnat27dqpsLDQ+YXBLRF00KBlZGTIYrHYHn5+foqIiFBycrJef/11nTt3zinHOXr0qJ577jlt3brVKftzJneurTpeeuklZWRk6He/+50WLlyo++67r9w2W7ZskcVi0R/+8IdK97N7925ZLBalp6fXZbn1qri4WNOnT9ekSZMUEBBga2/fvr1uvfVWF1b2f/Lz8zV9+nR16dJFTZs2VYsWLRQfH68pU6bo6NGjri6vnLFjx6qoqEjvvPOOq0tBPSHowBReeOEFLVy4UG+//bYmTZokSXr00UcVGxurb7/91m7bP/zhD/rll19qtP+jR4/q+eefr3GYWLFihVasWFGj99RUVbX95S9/0Q8//FCnx6+t1atX64YbbtD06dM1ZswYJSQklNumW7duuvbaa/Xxxx9Xup+PPvpIkjRmzJg6q7W+/fOf/9QPP/ygCRMmuLqUCl28eFF9+/bVq6++qptvvlmzZs3S008/rW7duumjjz7Sjz/+6OoSy/Hz81NKSopmzZollnr0DF6uLgBwhsGDB6t79+6251OnTtXq1at16623avjw4fr+++/VpEkTSZKXl5e8vOr2R//8+fPy9/eXj49PnR7nary9vV16/Oo4ceKEYmJirrrdvffeq2effVb/+c9/dMMNN5R7/eOPP9a1116rbt261UWZLjF//nzddNNNioyMdHUpFVqyZIm++eYbffjhh7rnnnvsXrtw4YKKiopcVFnVRo0apVdeeUVr1qzRgAEDXF0O6hhXdGBaAwYM0LPPPqsDBw7or3/9q629oj46K1euVJ8+fRQcHKyAgAB17txZTz/9tKTL/QF69OghSUpNTbXdJsvIyJB0uR9Oly5dlJ2drb59+8rf39/23rJ9dEoVFxfr6aefVnh4uJo2barhw4fr0KFDdtu0b99eY8eOLffeK/d5tdoq6oNSUFCgxx57TG3btpWvr686d+6sP//5z+X+dWuxWDRx4kQtWbJEXbp0ka+vr66//notX7684i+8jBMnTmjcuHEKCwuTn5+f4uLi9MEHH9heL+1nsW/fPi1btsxW+/79+yvc37333ivp/67cXCk7O1s//PCDbZulS5dq6NChioiIkK+vr6KjozVjxgwVFxdXWXNlfT/2799v972W2rVrl+68806FhITIz89P3bt31z/+8Q+7bS5evKjnn39enTp1kp+fn1q0aKE+ffpo5cqVVdZy4cIFLV++XElJSVVuV5lLly5pxowZio6Olq+vr9q3b6+nn366XN+UkpISPffcc4qIiJC/v7/69++vnTt3Vvrzd6W9e/dKkm666aZyr/n5+alZs2Z2bbt27dKoUaPUsmVLNWnSRJ07d9Yzzzxje/3AgQN65JFH1LlzZzVp0kQtWrTQb3/720p/Jsr673//q0GDBikoKEj+/v7q16+f1q9fX267hIQEhYSEaOnSpdXaLxo2gg5MrbS/R1W3j7777jvdeuutKiws1AsvvKCZM2dq+PDhtj8gr7vuOr3wwguSpAkTJmjhwoVauHCh+vbta9vH6dOnNXjwYMXHx2v27Nnq379/lXX98Y9/1LJly/T73/9ekydP1sqVK5WUlFTjW2rVqe1KhmFo+PDheu211zRo0CDNmjVLnTt31hNPPFFh35Z///vfeuSRR3TXXXfplVde0YULF3THHXfo9OnTVdb1yy+/KDExUQsXLtS9996rV199VUFBQRo7dqzmzJljq33hwoUKDQ1VfHy8rfaWLVtWuM8OHTqod+/e+uSTT8oFltLwU3pVISMjQwEBAUpPT9ecOXOUkJCgadOm6amnnqqy7pr47rvvdMMNN+j777/XU089pZkzZ6pp06YaMWKE/v73v9u2e+655/T888+rf//+evPNN/XMM8+oXbt22rJlS5X7z87OVlFRkcNXqB588EFNmzZN3bp102uvvaZ+/frp5Zdf1l133WW33dSpU/X888+re/fuevXVV9WpUyclJyeroKDgqseIioqSJC1YsOCqt4G+/fZb9erVS6tXr9b48eM1Z84cjRgxQv/85z9t22zatElff/217rrrLr3++ut6+OGHlZmZqcTERJ0/f77K/a9evVp9+/ZVXl6epk+frpdeekm5ubkaMGCANm7cWG77bt26VRiCYEIG0IDNnz/fkGRs2rSp0m2CgoKMX//617bn06dPN6780X/ttdcMScbJkycr3cemTZsMScb8+fPLvdavXz9DkjF37twKX+vXr5/t+Zo1awxJRmRkpJGXl2dr/+STTwxJxpw5c2xtUVFRRkpKylX3WVVtKSkpRlRUlO35kiVLDEnGiy++aLfdnXfeaVgsFmPPnj22NkmGj4+PXdu2bdsMScYbb7xR7lhXmj17tiHJ+Otf/2prKyoqMm688UYjICDA7rNHRUUZQ4cOrXJ/paxWqyHJ+Oqrr2xtxcXFRmRkpHHjjTfa2s6fP1/uvQ899JDh7+9vXLhwwdZW9vspPT9r1qyxe+++ffvKfccDBw40YmNj7fZXUlJi9O7d2+jUqZOtLS4urtqf70rvvfeeIcnYvn17udeu9p1t3brVkGQ8+OCDdu2PP/64IclYvXq1YRiGcfz4ccPLy8sYMWKE3XbPPfecIanCn78rnT9/3ujcubMhyYiKijLGjh1rvP/++0ZOTk65bfv27WsEBgYaBw4csGsvKSmx219ZGzZsMCQZCxYssLWVPU8lJSVGp06djOTk5HL769Chg/Gb3/ym3H4nTJhgNGnSpMrPB3Pgig5MLyAgoMrRV8HBwZIu3+4oKSlx6Bi+vr5KTU2t9vb333+/AgMDbc/vvPNOtW7dWl988YVDx6+uL774Qo0bN9bkyZPt2h977DEZhqEvv/zSrj0pKUnR0dG25127dlWzZs30008/XfU44eHhuvvuu21t3t7emjx5svLz8/Wvf/3LofpHjx4tb29vu9tX//rXv3TkyBHbbStJtv5YknTu3DmdOnVKN998s86fP69du3Y5dOwrnTlzRqtXr9aoUaNs+z916pROnz6t5ORk7d69W0eOHJF0+efru+++0+7du2t0jNKrZs2bN69xfaU/R2Wv0j322GOSpGXLlkmSMjMzdenSJT3yyCN225V26L+aJk2a6L///a+eeOIJSZevpI0bN06tW7fWpEmTbLfJTp48qaysLD3wwANq166d3T6uvI185Xm7ePGiTp8+rY4dOyo4OLjKK2Bbt27V7t27dc899+j06dO281FQUKCBAwcqKyur3O928+bN9csvv1z1ShEaPoIOTC8/P98uVJQ1evRo3XTTTXrwwQcVFhamu+66S5988kmNQk9kZGSNOh536tTJ7rnFYlHHjh2r3RfBUQcOHFBERES57+O6666zvX6lsn8pSZf/gvj555+vepxOnTqpUSP7P2IqO051tWjRQsnJyfr73/+uCxcuSLp828rLy0ujRo2ybffdd99p5MiRCgoKUrNmzdSyZUvbaKyzZ886dOwr7dmzR4Zh6Nlnn1XLli3tHtOnT5d0uY+SdHlEYG5urn71q18pNjZWTzzxRLmRgFUxHBgZdODAATVq1EgdO3a0aw8PD1dwcLDt+y/9b9ntQkJCqh2wgoKC9Morr2j//v3av3+/3n//fXXu3FlvvvmmZsyYIUm2YNylS5cq9/XLL79o2rRptv5joaGhatmypXJzc6s8b6UhMiUlpdz5eO+991RYWFju/aXfa33NqQXXYdQVTO3w4cM6e/ZsuT/Ir9SkSRNlZWVpzZo1WrZsmZYvX65FixZpwIABWrFihRo3bnzV41z5L1FnqewP4OLi4mrV5AyVHceRv3ydZcyYMfr888/1+eefa/jw4fp//+//6ZZbbrH17cnNzVW/fv3UrFkzvfDCC4qOjpafn5+2bNmi3//+91UG2Kq+8yuV7uPxxx9XcnJyhe8p/Znr27ev9u7dq6VLl2rFihV677339Nprr2nu3Ll68MEHK62lRYsWkqSff/5Zbdq0qXS7qtT3X+JRUVF64IEHNHLkSF1zzTX68MMP9eKLL1b7/ZMmTdL8+fP16KOP6sYbb1RQUJAsFovuuuuuKs9b6Wuvvvqq4uPjK9zmynmIpMvfq7+/f5387sK9EHRgagsXLpSkSv8yKtWoUSMNHDhQAwcO1KxZs/TSSy/pmWee0Zo1a5SUlOT0vzDK3sYwDEN79uxR165dbW3NmzdXbm5uufceOHBA11xzje15TWqLiorSqlWrdO7cOburOqW3c0o7l9ZWVFSUvv32W5WUlNhd1XHGcYYPH67AwEB99NFH8vb21s8//2x322rt2rU6ffq0PvvsM7tO2fv27bvqvkuvYpT93stegSr9/r29vas1KiokJESpqalKTU1Vfn6++vbtq+eee67KoHPttdfa6o6Njb3qMa4UFRWlkpIS7d6923YVTZJycnKUm5tr+/5L/7tnzx516NDBtt3p06evetWuKs2bN1d0dLR27Ngh6f++r9LnlVm8eLFSUlI0c+ZMW9uFCxcq/D24Uunt1WbNmlV7lNq+ffvsvhuYF7euYFqrV6/WjBkz1KFDB7u/CMs6c+ZMubbSfxWW9jFo2rSppPJ/ATpqwYIFdv2GFi9erGPHjmnw4MG2tujoaP3nP/+xm4vk888/LzcMvSa1DRkyRMXFxXrzzTft2l977TVZLBa749fGkCFDdPz4cS1atMjWdunSJb3xxhsKCAhQv379HN53kyZNNHLkSH3xxRd6++231bRpU912222210uvQl151amoqEhvvfXWVfcdFRWlxo0bKysry6697HtbtWqlxMREvfPOOzp27Fi5/Zw8edL2/2VHqAUEBKhjx45XXYIgISFBPj4+2rx581XrLmvIkCGSpNmzZ9u1z5o1S5I0dOhQSdLAgQPl5eWlt99+2267sj8fldm2bZtOnTpVrv3AgQPauXOnOnfuLElq2bKl+vbtq3nz5ungwYN22155nho3blzuauEbb7xx1WkBEhISFB0drT//+c8VLpVx5fkotWXLFvXu3bvK/cIcuKIDU/jyyy+1a9cuXbp0STk5OVq9erVWrlypqKgo/eMf/5Cfn1+l733hhReUlZWloUOHKioqSidOnNBbb72lNm3aqE+fPpIuh47g4GDNnTtXgYGBatq0qXr16mX3r+CaCAkJUZ8+fZSamqqcnBzNnj1bHTt21Pjx423bPPjgg1q8eLEGDRqkUaNGae/evfrrX/9q1zm4prUNGzZM/fv31zPPPKP9+/crLi5OK1as0NKlS/Xoo4+W27ejJkyYoHfeeUdjx45Vdna22rdvr8WLF2v9+vWaPXt2lX2mqmPMmDFasGCBvvrqK9177722sCdJvXv3VvPmzZWSkqLJkyfLYrFo4cKF1brdFhQUpN/+9rd64403ZLFYFB0drc8//9zW3+ZKVqtVffr0UWxsrMaPH69rrrlGOTk52rBhgw4fPqxt27ZJkmJiYpSYmGibu2Xz5s1avHixJk6cWGUtfn5+uuWWW7Rq1SrbFAJX2rNnT4W3hX79619r6NChSklJ0bvvvmu7lbdx40Z98MEHGjFihG36g7CwME2ZMsU2pcKgQYO0bds2ffnllwoNDb3q1cKVK1dq+vTpGj58uG644QYFBATop59+0rx581RYWKjnnnvOtu3rr7+uPn36qFu3bpowYYI6dOig/fv3a9myZbZZvW+99VYtXLhQQUFBiomJ0YYNG7Rq1SrbbbzKNGrUSO+9954GDx6s66+/XqmpqYqMjNSRI0e0Zs0aNWvWzG4Ye3Z2ts6cOWMXkGFirhruBThD6fDy0oePj48RHh5u/OY3vzHmzJljN4y5VNnh5ZmZmcZtt91mREREGD4+PkZERIRx9913Gz/++KPd+5YuXWrExMQYXl5edkON+/XrZ1x//fUV1lfZ8PKPP/7YmDp1qtGqVSujSZMmxtChQ8sNuzUMw5g5c6YRGRlp+Pr6GjfddJOxefPmcvusqrayw6cNwzDOnTtn/M///I8RERFheHt7G506dTJeffVVu2G5hnF5eHlaWlq5miob9l5WTk6OkZqaaoSGhho+Pj5GbGxshUPgazK8vNSlS5eM1q1bG5KML774otzr69evN2644QajSZMmRkREhPHkk08aX331Vbmh4xV9PydPnjTuuOMOw9/f32jevLnx0EMPGTt27KhwCP/evXuN+++/3wgPDze8vb2NyMhI49ZbbzUWL15s2+bFF180evbsaQQHBxtNmjQxrr32WuOPf/yjUVRUdNXP+dlnnxkWi8U4ePCgXXtUVJTdz/2Vj3HjxhmGYRgXL140nn/+eaNDhw6Gt7e30bZtW2Pq1Kl2w+FLv8tnn33WCA8PN5o0aWIMGDDA+P77740WLVoYDz/8cJX1/fTTT8a0adOMG264wWjVqpXh5eVltGzZ0hg6dKhtCPuVduzYYYwcOdIIDg42/Pz8jM6dOxvPPvus7fWff/7Z9jMTEBBgJCcnG7t27Sr3M1fZNADffPONcfvttxstWrQwfH19jaioKGPUqFFGZmam3Xa///3vjXbt2pX7mYc5WQyDxT4AwB0VFxcrJiZGo0aNso1gqg+5ublq3ry5XnzxRbuZi82gsLBQ7du311NPPaUpU6a4uhzUA/roAICbaty4sV544QVZrdYK+544Q0WzcZf27alo+ZKGbv78+fL29tbDDz/s6lJQT7iiAwAeLCMjQxkZGRoyZIgCAgL073//Wx9//LFuueUWffXVV64uD6g1OiMDgAfr2rWrvLy89MorrygvL8/WQbkm898A7owrOgAAwLToowMAAEyLoAMAAEzL4/volJSU6OjRowoMDGRxNwAAGgjDMHTu3DlFRESUW0D4Sh4fdI4ePaq2bdu6ugwAAOCAQ4cOVbnwrccHndKp6A8dOqRmzZq5uBoAAFAdeXl5atu27VWXlPH4oFN6u6pZs2YEHQAAGpirdTuhMzIAADAtgg4AADAtgg4AADAtgg4AADAtjw06VqtVMTEx6tGjh6tLAQAAdcTj17rKy8tTUFCQzp49y6grAAAaiOr+/e2xV3QAAID5EXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpefyinnWlsLBQ2dnZ5doTEhLk6+vrgooAAPA8BJ06kp2drclvLVVwZLStLffIXr3+iNS7d28XVgYAgOcg6NSh4MhohUbHuroMAAA8Fn10AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaXls0LFarYqJiVGPHj1cXQoAAKgjHht00tLStHPnTm3atMnVpQAAgDrisUEHAACYH0EHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYlperC0DdKCwsVHZ2tl1bQkKCfH19XVQRAAD1j6BjUtnZ2Zr81lIFR0ZLknKP7NXrj0i9e/d2cWUAANSfBh90cnNzlZSUpEuXLunSpUuaMmWKxo8f7+qy3EJwZLRCo2NdXQYAAC7T4INOYGCgsrKy5O/vr4KCAnXp0kW33367WrRo4erSAACAizX4zsiNGzeWv7+/pMv9UgzDkGEYLq4KAAC4A5cHnaysLA0bNkwRERGyWCxasmRJuW2sVqvat28vPz8/9erVSxs3brR7PTc3V3FxcWrTpo2eeOIJhYaG1lP1AADAnbk86BQUFCguLk5Wq7XC1xctWqT09HRNnz5dW7ZsUVxcnJKTk3XixAnbNsHBwdq2bZv27dunjz76SDk5OZUer7CwUHl5eXYPAABgTi4POoMHD9aLL76okSNHVvj6rFmzNH78eKWmpiomJkZz586Vv7+/5s2bV27bsLAwxcXFad26dZUe7+WXX1ZQUJDt0bZtW6d9FgAA4F5cHnSqUlRUpOzsbCUlJdnaGjVqpKSkJG3YsEGSlJOTo3PnzkmSzp49q6ysLHXu3LnSfU6dOlVnz561PQ4dOlS3HwIAALiMW4+6OnXqlIqLixUWFmbXHhYWpl27dkmSDhw4oAkTJtg6IU+aNEmxsZUPqfb19WXSPAAAPIRbB53q6Nmzp7Zu3erqMgAAgBty61tXoaGhaty4cbnOxTk5OQoPD3dRVQAAoKFw66Dj4+OjhIQEZWZm2tpKSkqUmZmpG2+8sVb7tlqtiomJUY8ePWpbJgAAcFMuv3WVn5+vPXv22J7v27dPW7duVUhIiNq1a6f09HSlpKSoe/fu6tmzp2bPnq2CggKlpqbW6rhpaWlKS0tTXl6egoKCavsxAACAG3J50Nm8ebP69+9ve56eni5JSklJUUZGhkaPHq2TJ09q2rRpOn78uOLj47V8+fJyHZQBAADKcnnQSUxMvOqSDRMnTtTEiRPrqSIAAGAWbt1HBwAAoDY8NujQGRkAAPPz2KCTlpamnTt3atOmTa4uBQAA1BGX99FBw1JYWKjs7Oxy7QkJCcw4DQBwOwQd1Eh2drYmv7VUwZHRtrbcI3v1+iNS7969XVgZAADlEXRQY8GR0QqNrnw9MQAA3IXH9tGhMzIAAObnsUGHzsgAAJifxwYdAABgfgQdAABgWgQdAABgWgQdAABgWgQdAABgWh4bdBheDgCA+Xls0GF4OQAA5uexQQcAAJgfQQcAAJgWQQcAAJgWQQcAAJgWq5ejXhQWFio7O9uuLSEhQb6+vi6qCADgCQg6qBfZ2dma/NZSBUdGS5Jyj+zV649IvXv3dnFlAAAz89igY7VaZbVaVVxc7OpSPEZwZLRCo2NdXQYAwIN4bB8d5tEBAMD8PDboAAAA8yPoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0/LYeXTg/iqaTVliRmUAQPURdOC2ys6mLDGjMgCgZjw26DAzcsPAbMoAgNrw2D46zIwMAID5eWzQAQAA5kfQAQAApkXQAQAApkXQAQAApkXQAQAApkXQAQAApkXQAQAApuWxEwbCHFgmAgBQFYIOGjSWiQAAVIWggwaPZSIAAJXx2D46VqtVMTEx6tGjh6tLAQAAdcRjgw5rXQEAYH4eG3QAAID5EXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpMY8OTI/ZkwHAcxF0YHrMngwAnougA4/A7MkA4JkIOvBIJZcuavv27XZt3MoCAPMh6MAj5eUc1Bv7f1H4TxZJ3MoCALMi6MBjBYZ34HYWAJgcw8sBAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpeWzQsVqtiomJUY8ePVxdCgAAqCMeO7w8LS1NaWlpysvLU1BQkKvLgRuqaI0sJhUEgIbFY4MOcDVl18hiUkEAaHgIOkAVWCMLABo2j+2jAwAAzI8rOkA1VbQQqES/HQBwZwQdoJrKLgQq0W8HANwdQQeoARYCBYCGhaAD1LOKhq1L3AIDgLpA0AHqWdlh6xK3wACgrhB0ABdg2DoA1A+CDuCGuL0FAM5B0AHcELe3AMA5CDqAm+L2FgDUHkEHACCJW6YwJ4IOAEASt0xhTgQdAIANt0xhNizqCQAATIsrOkAtVLTQJ/0ZAMB9EHSAWii70Cf9GQDAvRB0gFq6cqHPiq7wSA3vKk9Fo28a2mcAAImgAzhV2Ss8Uv1e5XFWQCk7+oYrVQAaKoIO4GRXXuGpb84MKIy+AWAGBB2ggaro6s327dvVrPU1VQYUbksB8CQNPugcOnRI9913n06cOCEvLy89++yz+u1vf+vqsoA6V9Hkboe3rlPzjgk1eh+3pQCYWYMPOl5eXpo9e7bi4+N1/PhxJSQkaMiQIWratKmrSwPqXNnbS7lH9jr0PgAwqwYfdFq3bq3WrVtLksLDwxUaGqozZ84QdIBqqmik2Pbt21VS4qKCAMCJXD4zclZWloYNG6aIiAhZLBYtWbKk3DZWq1Xt27eXn5+fevXqpY0bN1a4r+zsbBUXF6tt27Z1XDVgHnk5B/XGiu80bekO2+O1z9bpl/PnXV0aANSaQ0Hnp59+cloBBQUFiouLk9VqrfD1RYsWKT09XdOnT9eWLVsUFxen5ORknThxwm67M2fO6P7779e7777rtNoAZyi9YvL111/r66+//v+vlhiuLstO6Uix0kdAy0hXlwQATuHQrauOHTuqX79+GjdunO688075+fk5XMDgwYM1ePDgSl+fNWuWxo8fr9TUVEnS3LlztWzZMs2bN09PPfWUpMujSEaMGKGnnnrqqh0qCwsLVVhYaHuel5fncO1AdZSdW6c6HYYBAM7h0BWdLVu2qGvXrkpPT1d4eLgeeuihSm8n1UZRUZGys7OVlJRka2vUqJGSkpK0YcMGSZJhGBo7dqwGDBig++6776r7fPnllxUUFGR7cJsL9eHKKyZcLQGA+uNQ0ImPj9ecOXN09OhRzZs3T8eOHVOfPn3UpUsXzZo1SydPnnRKcadOnVJxcbHCwsLs2sPCwnT8+HFJ0vr167Vo0SItWbJE8fHxio+Pr3AK/lJTp07V2bNnbY9Dhw45pVbAzMrefit9XHl1FADcUa1GXXl5een222/X0KFD9dZbb2nq1Kl6/PHH9fTTT2vUqFH605/+ZBsRVVf69OmjkhoMD/H19WViNKCGXL20BQA4qlZBZ/PmzZo3b57+9re/qWnTpnr88cc1btw4HT58WM8//7xuu+22Wt3SCg0NVePGjZWTk2PXnpOTo/Dw8NqUDngEZw4dd+XSFgDgKIeCzqxZszR//nz98MMPGjJkiBYsWKAhQ4aoUaPLd8I6dOigjIwMtW/fvlbF+fj4KCEhQZmZmRoxYoQkqaSkRJmZmZo4cWKt9m21WmW1WlVcXFyr/QDurKIrMXSGBuBJHAo6b7/9th544AGNHTu20ltTrVq10vvvv3/VfeXn52vPnj225/v27dPWrVsVEhKidu3aKT09XSkpKerevbt69uyp2bNnq6CgwDYKy1FpaWlKS0tTXl6egoKCarUvwJ2VvRJT3dmTAcAMHAo6u3fvvuo2Pj4+SklJuep2mzdvVv/+/W3P09PTJUkpKSnKyMjQ6NGjdfLkSU2bNk3Hjx9XfHy8li9fXq6DMgDXY8FQAO7GoaAzf/58BQQElFs889NPP9X58+erFXBKJSYmyjCqnjxt4sSJtb5VBaDusWAoAHfj0PDyl19+WaGhoeXaW7VqpZdeeqnWRQFouEoXDA2NjrVbWR0AXMGhoHPw4EF16NChXHtUVJQOHjxY66Lqg9VqVUxMjHr06OHqUgAAQB1xKOi0atVK3377bbn2bdu2qUWLFrUuqj6kpaVp586d2rRpk6tLAQAAdcShoHP33Xdr8uTJWrNmjYqLi1VcXKzVq1drypQpuuuuu5xdIwAAgEMc6ow8Y8YM7d+/XwMHDpSX1+VdlJSU6P7776ePDgAAcBsOBR0fHx8tWrRIM2bM0LZt29SkSRPFxsYqKirK2fUBHqHsDMaOzl4MALBXqyUgfvWrX+lXv/qVs2oBPFbZGYyZvRgAnMOhoFNcXKyMjAxlZmbqxIkT5RbVXL16tVOKq0ssAQF3c+UMxsxeDADO4VDQmTJlijIyMjR06FB16dJFFovl6m9yMywBAQCA+TkUdP72t7/pk08+0ZAhQ5xdDwAAgNM43Bm5Y8eOzq4FQBUaYoflsjWXYv0rAPXFoaDz2GOPac6cOXrzzTcb5G0roCFqiB2Wy9Yssf4VgPrlUND597//rTVr1ujLL7/U9ddfL29vb7vXP/vsM6cUB8BeQ+ywfGXNAFDfHAo6wcHBGjlypLNrAQAAcCqHgs78+fOdXUe9Y3g5AADm59BaV5J06dIlrVq1Su+8847OnTsnSTp69Kjy8/OdVlxdYlFPAADMz6ErOgcOHNCgQYN08OBBFRYW6je/+Y0CAwP1pz/9SYWFhZo7d66z6wQAAKgxh67oTJkyRd27d9fPP/+sJk2a2NpHjhypzMxMpxUHAABQGw5d0Vm3bp2+/vpr+fj42LW3b99eR44ccUphAAAAteVQ0CkpKamwE+/hw4cVGBhY66IAuL+KJgNsCJMYAvAsDgWdW265RbNnz9a7774rSbJYLMrPz9f06dNZFgLwEBVNBtgQJjEE4FkcCjozZ85UcnKyYmJidOHCBd1zzz3avXu3QkND9fHHHzu7xjrB8HKg9spOBujIJIaFhYXKzs4u184yEQCcwaGg06ZNG23btk1/+9vf9O233yo/P1/jxo3Tvffea9c52Z2xejngHrKzszX5raUKjoy2tbFMBABncSjoSJKXl5fGjBnjzFoAeKjgyGiWiQBQJxwKOgsWLKjy9fvvv9+hYgAAAJzJoaAzZcoUu+cXL17U+fPn5ePjI39/f4IOAABwCw5NGPjzzz/bPfLz8/XDDz+oT58+DaYzMgAAMD+H17oqq1OnTvrf//3fcld7AAAAXMVpQUe63EH56NGjztwlAACAwxzqo/OPf/zD7rlhGDp27JjefPNN3XTTTU4pDAAAoLYcCjojRoywe26xWNSyZUsNGDBAM2fOdEZdAAAAtebwWlcNHTMjAwBgfg5PGNjQMTMy0LBVtHQEy0YAKMuhoJOenl7tbWfNmuXIIQCYVNlVzx1d8bzs0hEsGwGgIg4FnW+++UbffPONLl68qM6dO0uSfvzxRzVu3FjdunWzbWexWCrbBQAPVXbV89qseM7SEQCuxqGgM2zYMAUGBuqDDz5Q8+bNJV2eRDA1NVU333yzHnvsMacWCcBcrlz13JEVzwGguhwKOjNnztSKFStsIUeSmjdvrhdffFG33HILQQdArZS9vSXR/waAYxwKOnl5eTp58mS59pMnT+rcuXO1LgqAZyt7e6s6/W8qCkdFRUWSJB8fH1sbgQnwLA4FnZEjRyo1NVUzZ85Uz549JUn//e9/9cQTT+j22293aoEAPNOVt7eqo2w4kqTDW7PkFRCi8I5dJNFhGfBEDgWduXPn6vHHH9c999yjixcvXt6Rl5fGjRunV1991akFAkB1lQ1HuUf2yjsonA7LgAdzKOj4+/vrrbfe0quvvqq9ey93JIyOjlbTpk2dWhwAAEBt1GrCwGPHjunYsWPq27evmjRpIsMwGFIOwOkq6n/j6Pw7ADyLQ0Hn9OnTGjVqlNasWSOLxaLdu3frmmuu0bhx49S8eXPWuwLgVBX3v6n5/DsVBSaJDsqAmTkUdP7nf/5H3t7eOnjwoK677jpb++jRo5Went4ggg5rXQENS0X9b2qqosBEB2XA3BwKOitWrNBXX32lNm3a2LV36tRJBw4ccEphdY21rgDPVNPRXAAaNoeCTkFBgfz9/cu1nzlzhsu/AIByWIQVruJQ0Ln55pu1YMECzZgxQ9LlNa1KSkr0yiuvqH///k4tEADQ8LEIK1zFoaDzyiuvaODAgdq8ebOKior05JNP6rvvvtOZM2e0fv16Z9cIAHWmbAflimZTlrj64AwswgpXcCjodOnSRT/++KPefPNNBQYGKj8/X7fffrvS0tLUunVrZ9cIAHWm/Grq9rMpS1x9ABqyGgedixcvatCgQZo7d66eeeaZuqgJAOpV2dXUmU0ZMI9GNX2Dt7e3vv3227qoBQAAwKlqHHQkacyYMXr//fedXQsAAIBTOdRH59KlS5o3b55WrVqlhISEcmtczZo1yynFAYA7qGhG5bKdkxk+DbinGgWdn376Se3bt9eOHTvUrVs3SdKPP/5otw1rXQEwm7IdlivqnMzwacA91SjodOrUSceOHdOaNWskXV7y4fXXX1dYWFidFAcA7qI6MyozfBpwPzXqo2MYht3zL7/8UgUFBU4tCAAAwFkc6oxcqmzwAQAAcCc1CjoWi6VcHxz65AAAAHdVoz46hmFo7NixtlEEFy5c0MMPP1xu1NVnn33mvAoBAAAcVKOgk5KSYvd8zJgxTi0GAADAmWoUdObPn19XdQAAADhdrTojN2RWq1UxMTHq0aOHq0sBAAB1xKGZkc0gLS1NaWlpysvLU1BQkKvLAWAyFc2mLDFbMlDfPDboAEBdKjubssRsyYArEHQAoI5UZzZlAHXLY/voAAAA8yPoAAAA0+LWFQDUk4o6KNM5GahbBB0AqCdlOyjTORmoewQdAKhHdFAG6hdBBwDQYBQWFio7O9uujdt/qApBBwDQYGRnZ2vyW0sVHBktidt/uDqCDgC4sYquYBQVFUmSfHx8bG2edFUjODKa23+oNoIOALixslcwJOnw1ix5BYQovGMXSVzVAKpC0AEAN1f2Ckbukb3yDgrnqgZQDQQdAKihiubD2b59u0pKXFQQgEoRdACghipasPPw1nVq3jHBhVUBqAhBBwAcUHY+nNwje11YDYDKsNYVAAAwLYIOAAAwLYIOAAAwLYIOAAAwLTojA4AbKTsTMsPWgdoh6ACAGyk7EzLD1oHaIegAgJu5ciZkhq0DtUMfHQAAYFqmuKIzcuRIrV27VgMHDtTixYtdXQ4AuFxFq547ssJ5RctdeNJK6Wj4TBF0pkyZogceeEAffPCBq0sBALdQtq+Poyucl13ugpXS0dCYIugkJiZq7dq1ri4DANxK2VXPHVV2uQugIXF5H52srCwNGzZMERERslgsWrJkSbltrFar2rdvLz8/P/Xq1UsbN26s/0IBAECD4/KgU1BQoLi4OFmt1gpfX7RokdLT0zV9+nRt2bJFcXFxSk5O1okTJxw6XmFhofLy8uweAADAnFwedAYPHqwXX3xRI0eOrPD1WbNmafz48UpNTVVMTIzmzp0rf39/zZs3z6HjvfzyywoKCrI92rZtW5vyAQCAG3N50KlKUVGRsrOzlZSUZGtr1KiRkpKStGHDBof2OXXqVJ09e9b2OHTokLPKBQAAbsatOyOfOnVKxcXFCgsLs2sPCwvTrl27bM+TkpK0bds2FRQUqE2bNvr000914403VrhPX19fhkUCAOAh3DroVNeqVatcXQIA1FhFc9SwthXgXG4ddEJDQ9W4cWPl5OTYtefk5Cg8PLxW+7ZarbJarSouLq7VfgDAUWXnqJFY2wpwNrfuo+Pj46OEhARlZmba2kpKSpSZmVnpranqSktL086dO7Vp06balgkADiudo6b0EdAy0tUlAabi8is6+fn52rNnj+35vn37tHXrVoWEhKhdu3ZKT09XSkqKunfvrp49e2r27NkqKChQamqqC6sGAAANgcuDzubNm9W/f3/b8/T0dElSSkqKMjIyNHr0aJ08eVLTpk3T8ePHFR8fr+XLl5froAwAAFCWy4NOYmKiDMOocpuJEydq4sSJ9VQRAAAwC5cHHQBAw+asldKdtR/gSh4bdBh1BQDO4ayV0p21H+BKHht00tLSlJaWpry8PAUFBbm6HABo0Jy1Urqz9gOUcuvh5QAAALVB0AEAAKblsbeuAMAsGuJSEg2xZjRMHht06IwMwCwa4lISDbFmNEweG3TojAzATEqXkiiVe2SvC6upnoZYMxoe+ugAAADTIugAAADTIugAAADTIugAAADT8tjOyADg6cquLcXwbpiRxwYdhpcD8HRl15ZieDfMyGNvXaWlpWnnzp3atGmTq0sBAJcpXVsqNDpWAS0jXV0O4HQeG3QAAID5EXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpeezwcgBAzZVcuqjt27fbtdXV/Dv1eayycwqVSkhIkK+vr/MPiHrjsUGHeXQAoObycg7qjf2/KPwni62trubfqc9jlZ1TSLq8mvrrj0i9e/d2+vFQfzw26KSlpSktLU15eXkKCgpydTkA0GAEhndQaHSs7Xnukb2mOFbpnEIwF/roAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0/LY4eUA4Enqc/I9Vys7+V9RUZEkycfHx247d5oMsKIJC92pvobMY4MOEwYC8CT1Ofmeq5Wd/O/w1ix5BYQovGMX2zbuNhlg2Zrdrb6GzGODDhMGAvA09Tn5nqtdOflf7pG98g4Kd/vJAJmwsG7QRwcAAJgWQQcAAJgWQQcAAJgWQQcAAJgWQQcAAJgWQQcAAJgWQQcAAJgWQQcAAJgWQQcAAJgWQQcAAJiWxy4BAQCoGw1hAdGyNVZUX0Wfg4U2Gx6PDTos6gkAdaMhLCBatsaK6iu7DQttNkweG3RY1BMA6k5DWED0yhorq6/s50DDQx8dAABgWgQdAABgWgQdAABgWgQdAABgWgQdAABgWgQdAABgWgQdAABgWgQdAABgWgQdAABgWgQdAABgWgQdAABgWgQdAABgWgQdAABgWgQdAABgWl6uLgAAAEeVXLqo7du327Vt375dJSUuKghux2ODjtVqldVqVXFxsatLAQA4KC/noN7Y/4vCf7LY2g5vXafmHRNcWBXciccGnbS0NKWlpSkvL09BQUGuLgcA4KDA8A4KjY61Pc89steF1cDd0EcHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYFkEHAACYlimCzueff67OnTurU6dOeu+991xdDgAAcBNeri6gti5duqT09HStWbNGQUFBSkhI0MiRI9WiRQtXlwYAAFyswV/R2bhxo66//npFRkYqICBAgwcP1ooVK1xdFgAAcAMuDzpZWVkaNmyYIiIiZLFYtGTJknLbWK1WtW/fXn5+furVq5c2btxoe+3o0aOKjIy0PY+MjNSRI0fqo3QAAODmXH7rqqCgQHFxcXrggQd0++23l3t90aJFSk9P19y5c9WrVy/Nnj1bycnJ+uGHH9SqVasaH6+wsFCFhYW253l5ebWqHwDgGUouXdT27dvt2oqKiiRJPj4+traEhAT5+vrWeT2FhYXKzs4u117T4ztrP5Xtq76+j8q4POgMHjxYgwcPrvT1WbNmafz48UpNTZUkzZ07V8uWLdO8efP01FNPKSIiwu4KzpEjR9SzZ89K9/fyyy/r+eefd94HAAB4hLycg3pj/y8K/8liazu8NUteASEK79hFkpR7ZK9ef0Tq3bt3ndeTnZ2tyW8tVXBktK3NkeM7az8V7as+v4/KuDzoVKWoqEjZ2dmaOnWqra1Ro0ZKSkrShg0bJEk9e/bUjh07dOTIEQUFBenLL7/Us88+W+k+p06dqvT0dNvzvLw8tW3btu4+BADANALDOyg0Otb2PPfIXnkHhdu11afgyGinHNtZ+3H2vpzBrYPOqVOnVFxcrLCwMLv2sLAw7dq1S5Lk5eWlmTNnqn///iopKdGTTz5Z5YgrX19fl15CAwAA9cetg051DR8+XMOHD3d1GQAAwM24fNRVVUJDQ9W4cWPl5OTYtefk5Cg8PNxFVQEAgIbCrYOOj4+PEhISlJmZaWsrKSlRZmambrzxxlrt22q1KiYmRj169KhtmQAAwE25/NZVfn6+9uzZY3u+b98+bd26VSEhIWrXrp3S09OVkpKi7t27q2fPnpo9e7YKCgpso7AclZaWprS0NOXl5SkoKKi2HwMAALghlwedzZs3q3///rbnpSOiUlJSlJGRodGjR+vkyZOaNm2ajh8/rvj4eC1fvrxcB2UAAICyXB50EhMTZRhGldtMnDhREydOrKeKAACAWbh1Hx0AAIDa8NigQ2dkAADMz2ODTlpamnbu3KlNmza5uhQAAFBHPDboAAAA8yPoAAAA0yLoAAAA0yLoAAAA03L5PDquYrVaZbVadenSJUlSXl6eU/dfUFCgS4W/6OIvBba2S4W/qKCgwOnHqs7xnXVsRz+XI/VU51iOblN8sVCWogtV1lP2fWXfU1GbJ2/j6uOzDdu4wzaO/llbV39GOnLs+v4cjird59Xm4rMYV9vC5A4fPqy2bdu6ugwAAOCAQ4cOqU2bNpW+7vFBp6SkREePHlVgYKAsFoskqUePHpUOO6/stbLteXl5atu2rQ4dOqRmzZrVTfE1VNXnqu991vR91dn+ats447xK7ndu3em81vS91d22Ps6tu51Xyb3OLb+zzuNO57Wm73Wn31nDMHTu3DlFRESoUaPKe+J47K2rUo0aNSqXBBs3blzpL0Nlr1XW3qxZM7f4xZKq/lz1vc+avq86219tG2eeV8l9zq07ndeavre629bnuXWX8yq517nld9Z53Om81vS97vY7W51FuemMXIG0tLQav1bVe9xFXdTo6D5r+r7qbH+1bTiv9bPPmry3uttybl2/T35nncedzmtN39sQf2c9/tZVXcnLy1NQUJDOnj3rFv+CgPNwbs2J82penFvPxhWdOuLr66vp06fL19fX1aXAyTi35sR5NS/OrWfjig4AADAtrugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIui4wOeff67OnTurU6dOeu+991xdDpxo5MiRat68ue68805XlwInOnTokBITExUTE6OuXbvq008/dXVJcILc3Fx1795d8fHx6tKli/7yl7+4uiTUAYaX17NLly4pJiZGa9asUVBQkBISEvT111+rRYsWri4NTrB27VqdO3dOH3zwgRYvXuzqcuAkx44dU05OjuLj43X8+HElJCToxx9/VNOmTV1dGmqhuLhYhYWF8vf3V0FBgbp06aLNmzfz57HJcEWnnm3cuFHXX3+9IiMjFRAQoMGDB2vFihWuLgtOkpiYqMDAQFeXASdr3bq14uPjJUnh4eEKDQ3VmTNnXFsUaq1x48by9/eXJBUWFsowDPFvf/Mh6NRQVlaWhg0bpoiICFksFi1ZsqTcNlarVe3bt5efn5969eqljRs32l47evSoIiMjbc8jIyN15MiR+igdV1Hbcwv35cxzm52dreLiYrVt27aOq8bVOOO85ubmKi4uTm3atNETTzyh0NDQeqoe9YWgU0MFBQWKi4uT1Wqt8PVFixYpPT1d06dP15YtWxQXF6fk5GSdOHGinitFTXFuzctZ5/bMmTO6//779e6779ZH2bgKZ5zX4OBgbdu2Tfv27dNHH32knJyc+iof9cWAwyQZf//73+3aevbsaaSlpdmeFxcXGxEREcbLL79sGIZhrF+/3hgxYoTt9SlTphgffvhhvdSL6nPk3JZas2aNcccdd9RHmXCAo+f2woULxs0332wsWLCgvkpFDdTmd7bU7373O+PTTz+tyzLhAlzRcaKioiJlZ2crKSnJ1taoUSMlJSVpw4YNkqSePXtqx44dOnLkiPLz8/Xll18qOTnZVSWjmqpzbtEwVefcGoahsWPHasCAAbrvvvtcVSpqoDrnNScnR+fOnZMknT17VllZWercubNL6kXd8XJ1AWZy6tQpFRcXKywszK49LCxMu3btkiR5eXlp5syZ6t+/v0pKSvTkk0/Sw78BqM65laSkpCRt27ZNBQUFatOmjT799FPdeOON9V0uaqA653b9+vVatGiRunbtausHsnDhQsXGxtZ3uaim6pzXAwcOaMKECbZOyJMmTeKcmhBBxwWGDx+u4cOHu7oM1IFVq1a5ugTUgT59+qikpMTVZcDJevbsqa1bt7q6DNQxbl05UWhoqBo3blyuM1tOTo7Cw8NdVBWcgXNrXpxbc+K8ohRBx4l8fHyUkJCgzMxMW1tJSYkyMzO5fdHAcW7Ni3NrTpxXlOLWVQ3l5+drz549tuf79u3T1q1bFRISonbt2ik9PV0pKSnq3r27evbsqdmzZ6ugoECpqakurBrVwbk1L86tOXFeUS0uHvXV4KxZs8aQVO6RkpJi2+aNN94w2rVrZ/j4+Bg9e/Y0/vOf/7iuYFQb59a8OLfmxHlFdbDWFQAAMC366AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAwpcTERD366KOuLgOAixF0ALidYcOGadCgQRW+tm7dOlksFn377bf1XBWAhoigA8DtjBs3TitXrtThw4fLvTZ//nx1795dXbt2dUFlABoagg4At3PrrbeqZcuWysjIsGvPz8/Xp59+qhEjRujuu+9WZGSk/P39FRsbq48//rjKfVosFi1ZssSuLTg42O4Yhw4d0qhRoxQcHKyQkBDddttt2r9/v3M+FACXIOgAcDteXl66//77lZGRIcMwbO2ffvqpiouLNWbMGCUkJGjZsmXasWOHJkyYoPvuu08bN250+JgXL15UcnKyAgMDtW7dOq1fv14BAQEaNGiQioqKnPGxALgAQQeAW3rggQe0d+9e/etf/7K1zZ8/X3fccYeioqL0+OOPKz4+Xtdcc40mTZqkQYMG6ZNPPnH4eIsWLVJJSYnee+89xcbG6rrrrtP8+fN18OBBrV271gmfCIArEHQAuKVrr71WvXv31rx58yRJe/bs0bp16zRu3DgVFxdrxowZio2NVUhIiAICAvTVV1/p4MGDDh9v27Zt2rNnjwIDAxUQEKCAgACFhITowoUL2rt3r7M+FoB65uXqAgCgMuPGjdOkSZNktVo1f/58RUdHq1+/fvrTn/6kOXPmaPbs2YqNjVXTpk316KOPVnmLyWKx2N0Gky7friqVn5+vhIQEffjhh+Xe27JlS+d9KAD1iqADwG2NGjVKU6ZM0UcffaQFCxbod7/7nSwWi9avX6/bbrtNY8aMkSSVlJToxx9/VExMTKX7atmypY4dO2Z7vnv3bp0/f972vFu3blq0aJFatWqlZs2a1d2HAlCvuHUFwG0FBARo9OjRmjp1qo4dO6axY8dKkjp16qSVK1fq66+/1vfff6+HHnpIOTk5Ve5rwIABevPNN/XNN99o8+bNevjhh+Xt7W17/d5771VoaKhuu+02rVu3Tvv27dPatWs1efLkCoe5A2gYCDoA3Nq4ceP0888/Kzk5WREREZKkP/zhD+rWrZuSk5OVmJio8PBwjRgxosr9zJw5U23bttXNN9+se+65R48//rj8/f1tr/v7+ysrK0vt2rXT7bffruuuu07jxo3ThQsXuMIDNGAWo+xNawAAAJPgig4AADAtgg4AADAtgg4AADAtgg4AADAtgg4AADAtgg4AADAtgg4AADAtgg4AADAtgg4AADAtgg4AADAtgg4AADCt/w93TrvhgXjh9gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "values = da.sum(1)\n", + "sns.histplot(values, bins=100, log_scale=(True, False), fill=True)\n", + "plt.title('Distribution of Values (Log Scale)')\n", + "plt.xlabel('Value')\n", + "plt.ylabel('Frequency')\n", + "plt.yscale('log')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(\n", + " FILEDIR + \"/../data/GroundTruth/stone_and_sroy/hESC_ground_truth.tsv\",\n", + " sep=\"\\t\",\n", + " header=None,\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "omnilist = set((i,j) for i,j in omni.iloc[:,0:2].values)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "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", + "
01
0ATF3ABHD3
1ATF3AP3M2
2ATF3APBB3
3ATF3ARHGAP8
4ATF3ARHGEF3
.........
12981ZNF281TMEM2
12982ZNF281UCHL1
12983ZNF281UPP1
12984ZNF281WSB2
12985ZNF281ZMYND8
\n", + "

12986 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " 0 1\n", + "0 ATF3 ABHD3\n", + "1 ATF3 AP3M2\n", + "2 ATF3 APBB3\n", + "3 ATF3 ARHGAP8\n", + "4 ATF3 ARHGEF3\n", + "... ... ...\n", + "12981 ZNF281 TMEM2\n", + "12982 ZNF281 UCHL1\n", + "12983 ZNF281 UPP1\n", + "12984 ZNF281 WSB2\n", + "12985 ZNF281 ZMYND8\n", + "\n", + "[12986 rows x 2 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sroylist = set((i,j) for i,j in df.values)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sroylist_t = set((j,i) for i,j in df.values)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12986, 273556, 388, 273168)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(sroylist), len(omnilist), len(sroylist & omnilist), len(omnilist - sroylist)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(112, 273444)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(sroylist_t & omnilist), len(omnilist - sroylist_t)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "37" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(sroylist_t & sroylist)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "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", + "
sourcetargetis_directedis_stimulationis_inhibitionconsensus_directionconsensus_stimulationconsensus_inhibitioncuration_effortreferencessourcestypen_sourcesn_primary_sourcesn_referencesreferences_stripped
0CALM1TRPC1TrueFalseTrueTrueFalseTrue3TRIP:11290752;TRIP:11983166;TRIP:12601176TRIPpost_translational113.011290752;11983166;12601176
1CALM3TRPC1TrueFalseTrueTrueFalseTrue3TRIP:11290752;TRIP:11983166;TRIP:12601176TRIPpost_translational113.011290752;11983166;12601176
2CALM2TRPC1TrueFalseTrueTrueFalseTrue3TRIP:11290752;TRIP:11983166;TRIP:12601176TRIPpost_translational113.011290752;11983166;12601176
3CAV1TRPC1TrueTrueFalseTrueTrueFalse13DIP:19897728;HPRD:12732636;IntAct:19897728;Lit...DIP;HPRD;IntAct;Lit-BM-17;TRIPpost_translational558.010980191;12732636;14551243;16822931;18430726;1...
4DRD2TRPC1TrueTrueFalseTrueTrueFalse1TRIP:18261457TRIPpost_translational111.018261457
...................................................
278574TAF7MIMAT0000075TrueFalseFalseFalseFalseFalse0NoneENCODE_tf-mirnamirna_transcriptional10NaNNone
278575RAD21MIMAT0005867TrueFalseFalseFalseFalseFalse0NoneENCODE_tf-mirnamirna_transcriptional10NaNNone
278576P23511MIMAT0003308TrueFalseFalseFalseFalseFalse0NoneENCODE_tf-mirnamirna_transcriptional10NaNNone
278577FOSL2MIMAT0005867TrueFalseFalseFalseFalseFalse0NoneENCODE_tf-mirnamirna_transcriptional10NaNNone
278578SMARCB1MIMAT0004491TrueFalseFalseFalseFalseFalse0NoneENCODE_tf-mirnamirna_transcriptional10NaNNone
\n", + "

278579 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " source target is_directed is_stimulation is_inhibition \\\n", + "0 CALM1 TRPC1 True False True \n", + "1 CALM3 TRPC1 True False True \n", + "2 CALM2 TRPC1 True False True \n", + "3 CAV1 TRPC1 True True False \n", + "4 DRD2 TRPC1 True True False \n", + "... ... ... ... ... ... \n", + "278574 TAF7 MIMAT0000075 True False False \n", + "278575 RAD21 MIMAT0005867 True False False \n", + "278576 P23511 MIMAT0003308 True False False \n", + "278577 FOSL2 MIMAT0005867 True False False \n", + "278578 SMARCB1 MIMAT0004491 True False False \n", + "\n", + " consensus_direction consensus_stimulation consensus_inhibition \\\n", + "0 True False True \n", + "1 True False True \n", + "2 True False True \n", + "3 True True False \n", + "4 True True False \n", + "... ... ... ... \n", + "278574 False False False \n", + "278575 False False False \n", + "278576 False False False \n", + "278577 False False False \n", + "278578 False False False \n", + "\n", + " curation_effort references \\\n", + "0 3 TRIP:11290752;TRIP:11983166;TRIP:12601176 \n", + "1 3 TRIP:11290752;TRIP:11983166;TRIP:12601176 \n", + "2 3 TRIP:11290752;TRIP:11983166;TRIP:12601176 \n", + "3 13 DIP:19897728;HPRD:12732636;IntAct:19897728;Lit... \n", + "4 1 TRIP:18261457 \n", + "... ... ... \n", + "278574 0 None \n", + "278575 0 None \n", + "278576 0 None \n", + "278577 0 None \n", + "278578 0 None \n", + "\n", + " sources type n_sources \\\n", + "0 TRIP post_translational 1 \n", + "1 TRIP post_translational 1 \n", + "2 TRIP post_translational 1 \n", + "3 DIP;HPRD;IntAct;Lit-BM-17;TRIP post_translational 5 \n", + "4 TRIP post_translational 1 \n", + "... ... ... ... \n", + "278574 ENCODE_tf-mirna mirna_transcriptional 1 \n", + "278575 ENCODE_tf-mirna mirna_transcriptional 1 \n", + "278576 ENCODE_tf-mirna mirna_transcriptional 1 \n", + "278577 ENCODE_tf-mirna mirna_transcriptional 1 \n", + "278578 ENCODE_tf-mirna mirna_transcriptional 1 \n", + "\n", + " n_primary_sources n_references \\\n", + "0 1 3.0 \n", + "1 1 3.0 \n", + "2 1 3.0 \n", + "3 5 8.0 \n", + "4 1 1.0 \n", + "... ... ... \n", + "278574 0 NaN \n", + "278575 0 NaN \n", + "278576 0 NaN \n", + "278577 0 NaN \n", + "278578 0 NaN \n", + "\n", + " references_stripped \n", + "0 11290752;11983166;12601176 \n", + "1 11290752;11983166;12601176 \n", + "2 11290752;11983166;12601176 \n", + "3 10980191;12732636;14551243;16822931;18430726;1... \n", + "4 18261457 \n", + "... ... \n", + "278574 None \n", + "278575 None \n", + "278576 None \n", + "278577 None \n", + "278578 None \n", + "\n", + "[278579 rows x 16 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "omni" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/pasteur/appa/homes/jkalfon/miniconda3/envs/scprint17/lib/python3.10/site-packages/anndata/__init__.py:51: FutureWarning: `anndata.read` is deprecated, use `anndata.read_h5ad` instead. `ad.read` will be removed in mid 2024.\n", + " warnings.warn(\n", + "/pasteur/appa/homes/jkalfon/benGRN/bengrn/base.py:544: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.\n", + " adata_sc.obs[\"organism_ontology_term_id\"] = \"NCBITaxon:9606\"\n" + ] + } + ], + "source": [ + "#SROY\n", + "sroy = get_sroy_gt(get=\"han\")\n", + "sroy.var['symbol'] = sroy.var.index\n", + "#GWPS\n", + "gwps = get_perturb_gt('gwps')\n", + "gwps.var['symbol'] = gwps.var.gene_name" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3033" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(values==0).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/local/scratch/tmp/ipykernel_1222996/4088921595.py:6: UserWarning: Attempt to set non-positive xlim on a log-scaled axis will be ignored.\n", + " plt.xlim(0, 2000)\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAHLCAYAAADBbjLhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABACElEQVR4nO3deXxU1f3/8feQlRBIgEAWlhDZNCxJCQRBlgCpYREEVHBBQkTQGhAbl0Kt4Fb5VgoEdSpWBYSqjfCz2IoiEFAs0gJBEEVWwyJL2AkJkkByf3/wyJQsJGGyzMyd1/PxmEd7z71z72cml+TtuefcazEMwxAAAIAJ1XF0AQAAADWFoAMAAEyLoAMAAEyLoAMAAEyLoAMAAEyLoAMAAEyLoAMAAEyLoAMAAEyLoAMAAEyLoAO38/zzz8tisdTKseLi4hQXF2db/vLLL2WxWLRs2bJaOf64cePUqlWrWjmWvXJycvTwww8rJCREFotFTzzxRK0d2xW+n48++kiNGjVSTk6Oo0txGkX/jr788ssbfu/8+fPVsmVL5eXlVX9hcEoEHbi0RYsWyWKx2F6+vr4KCwtTQkKCXnvtNV24cKFajnP06FE9//zz2rZtW7Xsrzo5c22V8corr2jRokX6zW9+oyVLlujBBx8stc3WrVtlsVj0hz/84br72bt3rywWi1JSUmqy3FpVUFCgGTNmaPLkyfL397e1t2rVSnfccYcDK/ufnJwczZgxQx07dlS9evXUuHFjRUdHa8qUKTp69Kijyytl3Lhxys/P11tvveXoUlBLCDowhRdffFFLlizRm2++qcmTJ0uSnnjiCXXq1EnfffddsW3/8Ic/6Jdffrmh/R89elQvvPDCDYeJVatWadWqVTf0nhtVXm1vv/22du/eXaPHr6q1a9fq1ltv1YwZMzRmzBjFxMSU2qZLly66+eab9eGHH153Px988IEkacyYMTVWa23717/+pd27d2vixImOLqVMly9fVp8+fTRr1iz17t1bc+bM0e9//3t16dJFH3zwgfbs2ePoEkvx9fVVYmKi5syZIx716B48HV0AUB0GDRqkrl272panTZumtWvX6o477tCwYcP0448/qm7dupIkT09PeXrW7Kl/8eJF+fn5ydvbu0aPUxEvLy+HHr8yTpw4ocjIyAq3e+CBB/Tcc8/pP//5j2699dZS6z/88EPdfPPN6tKlS02U6RALFy7UbbfdpmbNmjm6lDItX75c3377rd5//33df//9xdZdunRJ+fn5DqqsfKNGjdKrr76qdevWqX///o4uBzWMHh2YVv/+/fXcc8/p4MGD+tvf/mZrL2uMzurVq9WrVy8FBgbK399f7du31+9//3tJV8cDdOvWTZKUlJRku0y2aNEiSVfH4XTs2FEZGRnq06eP/Pz8bO8tOUanSEFBgX7/+98rJCRE9erV07Bhw3T48OFi27Rq1Urjxo0r9d5r91lRbWWNQcnNzdWTTz6pFi1ayMfHR+3bt9ef//znUv91a7FYNGnSJC1fvlwdO3aUj4+POnTooJUrV5b9hZdw4sQJjR8/XsHBwfL19VVUVJTee+892/qicRaZmZlasWKFrfYDBw6Uub8HHnhA0v96bq6VkZGh3bt327b55JNPNGTIEIWFhcnHx0etW7fWSy+9pIKCgnJrvt7YjwMHDhT7Xovs2rVLd999txo1aiRfX1917dpV//znP4ttc/nyZb3wwgtq27atfH191bhxY/Xq1UurV68ut5ZLly5p5cqVio+PL3e767ly5YpeeukltW7dWj4+PmrVqpV+//vflxqbUlhYqOeff15hYWHy8/NTv379tHPnzuuef9fav3+/JOm2224rtc7X11cNGjQo1rZr1y6NGjVKTZo0Ud26ddW+fXs9++yztvUHDx7UY489pvbt26tu3bpq3Lix7rnnnuueEyX997//1cCBAxUQECA/Pz/17dtXGzZsKLVdTEyMGjVqpE8++aRS+4VrI+jA1IrGe5R3+eiHH37QHXfcoby8PL344ouaPXu2hg0bZvsFecstt+jFF1+UJE2cOFFLlizRkiVL1KdPH9s+Tp8+rUGDBik6Olqpqanq169fuXX98Y9/1IoVK/S73/1Ojz/+uFavXq34+PgbvqRWmdquZRiGhg0bprlz52rgwIGaM2eO2rdvr6effrrMsS3//ve/9dhjj+nee+/Vq6++qkuXLumuu+7S6dOny63rl19+UVxcnJYsWaIHHnhAs2bNUkBAgMaNG6d58+bZal+yZImCgoIUHR1tq71JkyZl7jMiIkI9e/bURx99VCqwFIWfol6FRYsWyd/fXykpKZo3b55iYmI0ffp0TZ06tdy6b8QPP/ygW2+9VT/++KOmTp2q2bNnq169eho+fLj+8Y9/2LZ7/vnn9cILL6hfv35644039Oyzz6ply5baunVrufvPyMhQfn6+3T1UDz/8sKZPn64uXbpo7ty56tu3r2bOnKl777232HbTpk3TCy+8oK5du2rWrFlq27atEhISlJubW+ExwsPDJUmLFy+u8DLQd999p+7du2vt2rWaMGGC5s2bp+HDh+tf//qXbZvNmzfrm2++0b333qvXXntNjz76qNLT0xUXF6eLFy+Wu/+1a9eqT58+ys7O1owZM/TKK6/o3Llz6t+/vzZt2lRq+y5dupQZgmBCBuDCFi5caEgyNm/efN1tAgICjF/96le25RkzZhjXnvpz5841JBknT5687j42b95sSDIWLlxYal3fvn0NScb8+fPLXNe3b1/b8rp16wxJRrNmzYzs7Gxb+0cffWRIMubNm2drCw8PNxITEyvcZ3m1JSYmGuHh4bbl5cuXG5KMl19+udh2d999t2GxWIx9+/bZ2iQZ3t7exdq2b99uSDJef/31Use6VmpqqiHJ+Nvf/mZry8/PN3r06GH4+/sX++zh4eHGkCFDyt1fEavVakgyvvjiC1tbQUGB0axZM6NHjx62tosXL5Z67yOPPGL4+fkZly5dsrWV/H6Kfj7r1q0r9t7MzMxS3/GAAQOMTp06FdtfYWGh0bNnT6Nt27a2tqioqEp/vmu98847hiRjx44dpdZV9J1t27bNkGQ8/PDDxdqfeuopQ5Kxdu1awzAM4/jx44anp6cxfPjwYts9//zzhqQyz79rXbx40Wjfvr0hyQgPDzfGjRtnvPvuu0ZWVlapbfv06WPUr1/fOHjwYLH2wsLCYvsraePGjYYkY/Hixba2kj+nwsJCo23btkZCQkKp/UVERBi//vWvS+134sSJRt26dcv9fDAHenRgev7+/uXOvgoMDJR09XJHYWGhXcfw8fFRUlJSpbcfO3as6tevb1u+++67FRoaqs8++8yu41fWZ599Jg8PDz3++OPF2p988kkZhqHPP/+8WHt8fLxat25tW+7cubMaNGign376qcLjhISE6L777rO1eXl56fHHH1dOTo6++uoru+ofPXq0vLy8il2++uqrr3TkyBHbZStJtvFYknThwgWdOnVKvXv31sWLF7Vr1y67jn2tM2fOaO3atRo1apRt/6dOndLp06eVkJCgvXv36siRI5Kunl8//PCD9u7de0PHKOo1a9iw4Q3XV3Qeleyle/LJJyVJK1askCSlp6frypUreuyxx4ptVzSgvyJ169bVf//7Xz399NOSrvakjR8/XqGhoZo8ebLtMtnJkye1fv16PfTQQ2rZsmWxfVx7Gfnan9vly5d1+vRptWnTRoGBgeX2gG3btk179+7V/fffr9OnT9t+Hrm5uRowYIDWr19f6t92w4YN9csvv1TYUwTXR9CB6eXk5BQLFSWNHj1at912mx5++GEFBwfr3nvv1UcffXRDoadZs2Y3NPC4bdu2xZYtFovatGlT6bEI9jp48KDCwsJKfR+33HKLbf21Sv5Rkq7+gTh79myFx2nbtq3q1Cn+K+Z6x6msxo0bKyEhQf/4xz906dIlSVcvW3l6emrUqFG27X744QeNGDFCAQEBatCggZo0aWKbjXX+/Hm7jn2tffv2yTAMPffcc2rSpEmx14wZMyRdHaMkXZ0ReO7cObVr106dOnXS008/XWomYHkMO2YGHTx4UHXq1FGbNm2KtYeEhCgwMND2/Rf9b8ntGjVqVOmAFRAQoFdffVUHDhzQgQMH9O6776p9+/Z644039NJLL0mSLRh37Nix3H398ssvmj59um38WFBQkJo0aaJz586V+3MrCpGJiYmlfh7vvPOO8vLySr2/6HutrXtqwXGYdQVT+/nnn3X+/PlSv8ivVbduXa1fv17r1q3TihUrtHLlSqWlpal///5atWqVPDw8KjzOtf8lWl2u9wu4oKCgUjVVh+sdx54/vtVlzJgx+vTTT/Xpp59q2LBh+n//7//p9ttvt43tOXfunPr27asGDRroxRdfVOvWreXr66utW7fqd7/7XbkBtrzv/FpF+3jqqaeUkJBQ5nuKzrk+ffpo//79+uSTT7Rq1Sq98847mjt3rubPn6+HH374urU0btxYknT27Fk1b978utuVp7b/iIeHh+uhhx7SiBEjdNNNN+n999/Xyy+/XOn3T548WQsXLtQTTzyhHj16KCAgQBaLRffee2+5P7eidbNmzVJ0dHSZ21x7HyLp6vfq5+dXI/924VwIOjC1JUuWSNJ1/xgVqVOnjgYMGKABAwZozpw5euWVV/Tss89q3bp1io+Pr/Y/GCUvYxiGoX379qlz5862toYNG+rcuXOl3nvw4EHddNNNtuUbqS08PFxr1qzRhQsXivXqFF3OKRpcWlXh4eH67rvvVFhYWKxXpzqOM2zYMNWvX18ffPCBvLy8dPbs2WKXrb788kudPn1aH3/8cbFB2ZmZmRXuu6gXo+T3XrIHquj79/LyqtSsqEaNGikpKUlJSUnKyclRnz599Pzzz5cbdG6++WZb3Z06darwGNcKDw9XYWGh9u7da+tFk6SsrCydO3fO9v0X/e++ffsUERFh2+706dMV9tqVp2HDhmrdurW+//57Sf/7voqWr2fZsmVKTEzU7NmzbW2XLl0q89/BtYourzZo0KDSs9QyMzOLfTcwLy5dwbTWrl2rl156SREREcX+EJZ05syZUm1F/1VYNMagXr16kkr/AbTX4sWLi40bWrZsmY4dO6ZBgwbZ2lq3bq3//Oc/xe5F8umnn5aahn4jtQ0ePFgFBQV64403irXPnTtXFoul2PGrYvDgwTp+/LjS0tJsbVeuXNHrr78uf39/9e3b1+59161bVyNGjNBnn32mN998U/Xq1dOdd95pW1/UC3Vtr1N+fr7+8pe/VLjv8PBweXh4aP369cXaS763adOmiouL01tvvaVjx46V2s/Jkydt/7/kDDV/f3+1adOmwkcQxMTEyNvbW1u2bKmw7pIGDx4sSUpNTS3WPmfOHEnSkCFDJEkDBgyQp6en3nzzzWLblTw/rmf79u06depUqfaDBw9q586dat++vSSpSZMm6tOnjxYsWKBDhw4V2/ban5OHh0ep3sLXX3+9wtsCxMTEqHXr1vrzn/9c5qMyrv15FNm6dat69uxZ7n5hDvTowBQ+//xz7dq1S1euXFFWVpbWrl2r1atXKzw8XP/85z/l6+t73fe++OKLWr9+vYYMGaLw8HCdOHFCf/nLX9S8eXP16tVL0tXQERgYqPnz56t+/fqqV6+eunfvXuy/gm9Eo0aN1KtXLyUlJSkrK0upqalq06aNJkyYYNvm4Ycf1rJlyzRw4ECNGjVK+/fv19/+9rdig4NvtLahQ4eqX79+evbZZ3XgwAFFRUVp1apV+uSTT/TEE0+U2re9Jk6cqLfeekvjxo1TRkaGWrVqpWXLlmnDhg1KTU0td8xUZYwZM0aLFy/WF198oQceeMAW9iSpZ8+eatiwoRITE/X444/LYrFoyZIllbrcFhAQoHvuuUevv/66LBaLWrdurU8//dQ23uZaVqtVvXr1UqdOnTRhwgTddNNNysrK0saNG/Xzzz9r+/btkqTIyEjFxcXZ7t2yZcsWLVu2TJMmTSq3Fl9fX91+++1as2aN7RYC19q3b1+Zl4V+9atfaciQIUpMTNRf//pX26W8TZs26b333tPw4cNttz8IDg7WlClTbLdUGDhwoLZv367PP/9cQUFBFfYWrl69WjNmzNCwYcN06623yt/fXz/99JMWLFigvLw8Pf/887ZtX3vtNfXq1UtdunTRxIkTFRERoQMHDmjFihW2u3rfcccdWrJkiQICAhQZGamNGzdqzZo1tst411OnTh298847GjRokDp06KCkpCQ1a9ZMR44c0bp169SgQYNi09gzMjJ05syZYgEZJuao6V5AdSiaXl708vb2NkJCQoxf//rXxrx584pNYy5Scnp5enq6ceeddxphYWGGt7e3ERYWZtx3333Gnj17ir3vk08+MSIjIw1PT89iU4379u1rdOjQocz6rje9/MMPPzSmTZtmNG3a1Khbt64xZMiQUtNuDcMwZs+ebTRr1szw8fExbrvtNmPLli2l9llebSWnTxuGYVy4cMH47W9/a4SFhRleXl5G27ZtjVmzZhWblmsYV6eXJycnl6rpetPeS8rKyjKSkpKMoKAgw9vb2+jUqVOZU+BvZHp5kStXrhihoaGGJOOzzz4rtX7Dhg3GrbfeatStW9cICwsznnnmGeOLL74oNXW8rO/n5MmTxl133WX4+fkZDRs2NB555BHj+++/L3MK//79+42xY8caISEhhpeXl9GsWTPjjjvuMJYtW2bb5uWXXzZiY2ONwMBAo27dusbNN99s/PGPfzTy8/Mr/Jwff/yxYbFYjEOHDhVrDw8PL3beX/saP368YRiGcfnyZeOFF14wIiIiDC8vL6NFixbGtGnTik2HL/oun3vuOSMkJMSoW7eu0b9/f+PHH380GjdubDz66KPl1vfTTz8Z06dPN2699VajadOmhqenp9GkSRNjyJAhtins1/r++++NESNGGIGBgYavr6/Rvn1747nnnrOtP3v2rO2c8ff3NxISEoxdu3aVOueudxuAb7/91hg5cqTRuHFjw8fHxwgPDzdGjRplpKenF9vud7/7ndGyZctS5zzMyWIYPOwDAJxRQUGBIiMjNWrUKNsMptpw7tw5NWzYUC+//HKxOxebQV5enlq1aqWpU6dqypQpji4HtYAxOgDgpDw8PPTiiy/KarWWOfakOpR1N+6isT1lPb7E1S1c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AAA3zK4enSlTpqhr1646e/as6tata2sfMWKE0tPTq604AACAqrCrR+frr7/WN998I29v72LtrVq10pEjR6qlMABwVnl5ecrIyCjWtmPHDhUW+juoIgDXY1fQKSwsLHNa9s8//6z69etXuajawPRyAPbKyMjQ3LQ1Co3430ONd3yzWcFtOqu1A+sCUJpdl65uv/12paam2pYtFotycnI0Y8YMl3ksRHJysnbu3KnNmzc7uhQALig0op0iOnSxvYJCWzq6JABlsKtHZ/bs2UpISFBkZKQuXbqk+++/X3v37lVQUJA+/PDD6q4RAACnxIM/nZ9dQad58+bavn27/v73v+u7775TTk6Oxo8frwceeKDY4GQAAMyMB386P7uCjiR5enpqzJgx1VkLAAAuhwd/Oje7gs7ixYvLXT927Fi7igEAwNXx4E/nYlfQmTJlSrHly5cv6+LFi/L29pafnx9BBwDg1njwp/Owa9bV2bNni71ycnK0e/du9erVy2UGI1utVkVGRqpbt26OLgUAANQQu591VVLbtm31f//3f6V6e5wV08sBADC/ags60tUBykePHq3OXQIAANjNrjE6//znP4stG4ahY8eO6Y033tBtt91WLYUBAGAG3GvHsewKOsOHDy+2bLFY1KRJE/Xv31+zZ8+ujroAADAF7rXjWHY/6woAAFQOs7Acp1rH6AAAADgTu3p0UlJSKr3tnDlz7DkEAABAldkVdL799lt9++23unz5stq3by9J2rNnjzw8PNSly/+65iwWS/VUCQAAYAe7gs7QoUNVv359vffee2rYsKGkqzcRTEpKUu/evfXkk09Wa5EAAAD2sGuMzuzZszVz5kxbyJGkhg0b6uWXX3aZWVfcGRkAAPOzq0cnOztbJ0+eLNV+8uRJXbhwocpF1Ybk5GQlJycrOztbAQEBFb8BgNvKy8tTRkaGbXnHjh0qLPR3YEUAKsuuoDNixAglJSVp9uzZio2NlST997//1dNPP62RI0dWa4EA4GgZGRmam7ZGoRHtJEk7vtms4Dad1drBdQGomF1BZ/78+Xrqqad0//336/Lly1d35Omp8ePHa9asWdVaIAA4g9CIdrb7oBzL3OPgagBUll1Bx8/PT3/5y180a9Ys7d+/X5LUunVr1atXr1qLAwAAqIoq3TDw2LFjOnbsmNq2bat69erJMIzqqgsAAKDK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yC7dJUnHMvfot5J69uzpoCrdOOgkJycrOTlZ2dnZCggIqPgNAACgmKDmEYro0MW2fCxzjzzqBRZrczTG6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANNy26DD08sBADA/tw06PL0cAADzc9ugAwAAzI+gAwAATIugAwAATIugAwAATIugAwAATIugAwAATMvT0QUAQE3Jy8tTRkZGsbaYmBj5+Pg4qCIAtc1tg47VapXValVBQYGjSwFQQzIyMjQ3bY1CI9pJko5l7tFvJfXs2dOxhQGoNW4bdJKTk5WcnKzs7GwFBAQ4uhwANSQ0op0iOnRxdBkAHIQxOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLTcNuhYrVZFRkaqW7duji4FAADUELcNOsnJydq5c6c2b97s6FIAAEANcdugAwAAzI+gAwAATIugAwAATIugAwAATIugAwAATIugAwAATIugAwAATIugAwAATIugAwAATIugAwAATIugAwAATIugAwAATIugAwAATIugAwAATIugAwAATMttg47ValVkZKS6devm6FIAAEANcdugk5ycrJ07d2rz5s2OLgUAANQQtw06AADA/Ag6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtAg6AADAtEwRdD799FO1b99ebdu21TvvvOPocgAAgJPwdHQBVXXlyhWlpKRo3bp1CggIUExMjEaMGKHGjRs7ujQAAOBgLt+js2nTJnXo0EHNmjWTv7+/Bg0apFWrVjm6LAAA4AQcHnTWr1+voUOHKiwsTBaLRcuXLy+1jdVqVatWreTr66vu3btr06ZNtnVHjx5Vs2bNbMvNmjXTkSNHaqN0AADg5Bx+6So3N1dRUVF66KGHNHLkyFLr09LSlJKSovnz56t79+5KTU1VQkKCdu/eraZNm97w8fLy8pSXl2dbzs7OrlL9AFxHwZXL2rFjR7G2HTt2qLDQ30EVAahpDg86gwYN0qBBg667fs6cOZowYYKSkpIkSfPnz9eK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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "values = gwps.varp['GRN'].sum(1)+1\n", + "sns.histplot(values, bins=100, log_scale=(True, False), fill=True)\n", + "plt.title('Distribution of Values (Log Scale)')\n", + "plt.xlabel('Value')\n", + "plt.ylabel('Frequency')\n", + "plt.xlim(0, 2000)\n", + "plt.yscale('log')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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JC1dulSSlJWVpXPnzumRRx6x265sQv+V+Pv767vvvtMTTzwh6fyZtDFjxqhFixYaP3687TLZ4cOHlZ2drfvvv18RERF2fVx4GfnC39vZs2d15MgRXX311WrcuHGFZ8A2bdqkHTt26J577tGRI0dsv4+ioiL169dP2dnZ5T7bTZo00alTp654pgi1H0EHpldYWGgXKi42YsQI3XjjjXrggQcUGhqqu+66Sx999FGVQk/Lli2rNPG4Xbt2dssWi0VXX311peciOGrv3r0KDw8vdzyuvfZa2/oLXfxHSTr/B+K333674n7atWunevXs/4m53H4qq2nTpkpKStInn3yi06dPSzp/2crb21vDhw+3bffjjz9q2LBhCgoKUqNGjdSsWTPb3VjHjx93aN8X2rlzpwzD0LPPPqtmzZrZ/aSnp0s6P0dJOn9H4LFjx3TNNdeoY8eOeuKJJ8rdCVgRw4E7g/bu3at69erp6quvtmsPCwtT48aNbce/7H8v3i44OLjSASsoKEgvv/yy9uzZoz179uidd95RdHS0Xn/9dT3//POSZAvGHTp0qLCvU6dOacqUKbb5YyEhIWrWrJmOHTtW4e+tLEQmJyeX+328/fbbKi4uLvf6suNaU9+pBffhriuY2q+//qrjx4+X+4f8Qv7+/srOztaqVau0dOlSLVu2TAsXLlTfvn21fPlyeXl5XXE/F/6XqLNc7h/gkpKSStXkDJfbjyN/fJ1l5MiR+vzzz/X5559ryJAh+sc//qGbb77ZNrfn2LFj6t27txo1aqTnnntObdu2lZ+fnzZu3Kg//elPFQbYio75hcr6mDhxopKSki75mrIx16tXL+3atUuffvqpli9frrfffluvvPKK5syZowceeOCytTRt2lSS9Ntvv6lVq1aX3a4iNf1HPDIyUvfff7+GDRumq666Su+//75eeOGFSr9+/Pjxmjdvnh577DH16NFDQUFBslgsuuuuuyr8vZWtmzFjhuLi4i65zYXfQySdP64BAQEu+ezCsxB0YGoLFiyQpMv+MSpTr1499evXT/369dOsWbP04osv6umnn9aqVauUmJjo9D8YF1/GMAxDO3fuVKdOnWxtTZo00bFjx8q9du/evbrqqqtsy1WpLTIyUl9//bVOnDhhd1an7HJO2eTS6oqMjNQPP/yg0tJSu7M6ztjPkCFD1LBhQ33wwQeqX7++fvvtN7vLVt98842OHDmijz/+2G5S9u7du6/Yd9lZjIuP+8VnoMqOf/369St1V1RwcLBSUlKUkpKiwsJC9erVS1OnTq0w6LRv395Wd8eOHa+4jwtFRkaqtLRUO3bssJ1Fk6S8vDwdO3bMdvzL/nfnzp1q06aNbbsjR45c8axdRZo0aaK2bdtqy5Ytkv7veJUtX87ixYuVnJysmTNn2tpOnz59yc/BhcourzZq1KjSd6nt3r3b7tjAvLh0BdNauXKlnn/+ebVp08buD+HFjh49Wq6t7L8Ky+YYNGjQQFL5P4COmj9/vt28ocWLFys3N1cDBgywtbVt21b//e9/7b6L5PPPPy93G3pVahs4cKBKSkr0+uuv27W/8sorslgsdvuvjoEDB+rgwYNauHChre3cuXN67bXXFBgYqN69ezvct7+/v4YNG6YvvvhCb7zxhho0aKBbb73Vtr7sLNSFZ53OnDmjv/71r1fsOzIyUl5eXsrOzrZrv/i1zZs3V0JCgt58803l5uaW6+fw4cO2/3/xHWqBgYG6+uqrr/gIgvj4ePn4+Gj9+vVXrPtiAwcOlCRlZGTYtc+aNUuSNGjQIElSv3795O3trTfeeMNuu4vHx+Vs3rxZ+fn55dr37t2rrVu3Kjo6WpLUrFkz9erVS3PnzlVOTo7dthf+nry8vMqdLXzttdeu+LUA8fHxatu2rf7yl79c8lEZF/4+ymzcuFE33HBDhf3CHDijA1P48ssvtX37dp07d055eXlauXKlVqxYocjISH322Wfy8/O77Gufe+45ZWdna9CgQYqMjNShQ4f017/+Va1atVLPnj0lnQ8djRs31pw5c9SwYUM1aNBA3bt3t/uv4KoIDg5Wz549lZKSory8PGVkZOjqq6/Wgw8+aNvmgQce0OLFi9W/f38NHz5cu3bt0nvvvWc3ObiqtQ0ePFh9+vTR008/rT179ig2NlbLly/Xp59+qscee6xc344aO3as3nzzTY0ePVobNmxQVFSUFi9erNWrVysjI6PCOVOVMXLkSM2fP19fffWV7r33XlvYk6QbbrhBTZo0UXJysh599FFZLBYtWLCgUpfbgoKCdOedd+q1116TxWJR27Zt9fnnn9vm21zIarWqZ8+e6tixox588EFdddVVysvL05o1a/Trr79q8+bNkqSYmBglJCTYvrtl/fr1Wrx4scaNG1dhLX5+frr55pv19ddf275C4EI7d+685GWh3/3udxo0aJCSk5P11ltv2S7lrV27Vu+++66GDh1q+/qD0NBQTZgwwfaVCv3799fmzZv15ZdfKiQk5IpnC1esWKH09HQNGTJE119/vQIDA/XLL79o7ty5Ki4u1tSpU23bvvrqq+rZs6c6d+6ssWPHqk2bNtqzZ4+WLl1q+1bvW265RQsWLFBQUJBiYmK0Zs0aff3117bLeJdTr149vf322xowYICuu+46paSkqGXLltq/f79WrVqlRo0a2d3GvmHDBh09etQuIMPE3HW7F+AMZbeXl/34+PgYYWFhxu9//3tj9uzZdrcxl7n49vKsrCzj1ltvNcLDww0fHx8jPDzcuPvuu42ff/7Z7nWffvqpERMTY3h7e9vdaty7d2/juuuuu2R9l7u9/MMPPzQmT55sNG/e3PD39zcGDRpU7rZbwzCMmTNnGi1btjR8fX2NG2+80Vi/fn25Piuq7eLbpw3DME6cOGH88Y9/NMLDw4369esb7dq1M2bMmGF3W65hnL+9PDU1tVxNl7vt/WJ5eXlGSkqKERISYvj4+BgdO3a85C3wVbm9vMy5c+eMFi1aGJKML774otz61atXG9dff73h7+9vhIeHG08++aTx1Vdflbt1/FLH5/Dhw8btt99uBAQEGE2aNDEeeughY8uWLZe8hX/Xrl3GqFGjjLCwMKN+/fpGy5YtjVtuucVYvHixbZsXXnjB6Natm9G4cWPD39/faN++vfHnP//ZOHPmzBXf58cff2xYLBYjJyfHrj0yMtJu3F/4M2bMGMMwDOPs2bPGtGnTjDZt2hj169c3WrdubUyePNnudviyY/nss88aYWFhhr+/v9G3b19j27ZtRtOmTY2HH364wvp++eUXY8qUKcb1119vNG/e3PD29jaaNWtmDBo0yHYL+4W2bNliDBs2zGjcuLHh5+dnREdHG88++6xt/W+//WYbM4GBgUZSUpKxffv2cmPucl8D8P333xu33Xab0bRpU8PX19eIjIw0hg8fbmRlZdlt96c//cmIiIgoN+ZhThbD4GEfAOCJSkpKFBMTo+HDh9vuYKoJx44dU5MmTfTCCy/YfXOxGRQXFysqKkqTJk3ShAkT3F0OagBzdADAQ3l5eem5556T1Wq95NwTZ7jUt3GXze251ONLart58+apfv36evjh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nz5dQUFBth8ucwEAYF4OBZ1vv/1WzzzzjHx8fOzao6KitH//fqcUJkn5+fkqKSlRaGioXXtoaKgOHjwoSVq9erUWLlyoJUuWKC4uTnFxcfrf//532T4nT56s48eP23727dvntHoBAIBncejSVWlpqUpKSsq1//rrr2rYsGG1i6qKnj17lnvWVkV8fX3l6+vrwooAAICncOiMzs0336yMjAzbssViUWFhodLT0536WIiQkBB5eXkpLy/Prj0vL09hYWFO2w8AADAnh4LOzJkztXr1asXExOj06dO65557bJetXnrpJacV5+Pjo/j4eLt5P6WlpcrKylKPHj2q1bfValVMTIy6du1a3TIBAICHcujSVatWrbR582b9/e9/1w8//KDCwkKNGTNG9957r93k5MooLCzUzp07bcu7d+/Wpk2bFBwcrIiICKWlpSk5OVldunRRt27dlJGRoaKiIttdWI5KTU1VamqqCgoKFBQUVK2+AACAZ3Io6EjnH70wcuTIahewfv169enTx7aclpYmSUpOTlZmZqZGjBihw4cPa8qUKTp48KDi4uK0bNmychOUAQAALuZQ0Jk/f36F60eNGlXpvhISEq74cNBx48Zp3Lhxle4TAABAcjDoTJgwwW757NmzOnnypHx8fBQQEFCloOMuVqtVVqv1knePAQAAc3BoMvJvv/1m91NYWKiffvpJPXv21IcffujsGl0iNTVVW7du1bp169xdCgAAcBGHn3V1sXbt2un//b//V+5sDwAAgLs4LehI5ycoHzhwwJldAgAAOMyhOTqfffaZ3bJhGMrNzdXrr7+uG2+80SmFAQAAVJdDQWfo0KF2yxaLRc2aNVPfvn01c+ZMZ9TlckxGBgDA/Bx+1lVtxxcGAgBgfk6dowMAAOBJHDqjU/btxZUxa9YsR3YBAABQbQ4Fne+//17ff/+9zp49q+joaEnSzz//LC8vL3Xu3Nm2ncVicU6VAAAADnAo6AwePFgNGzbUu+++qyZNmkg6/yWCKSkpuummm/T44487tUgAAABHODRHZ+bMmZo+fbot5EhSkyZN9MILL9Squ65iYmLUtWtXd5cCAABcxKGgU1BQoMOHD5drP3z4sE6cOFHtomoCj4AAAMD8HAo6w4YNU0pKij7++GP9+uuv+vXXX/WPf/xDY8aM0W233ebsGgEAABzi0BydOXPmaOLE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "values = sroy.varp['GRN'].sum(1)+1\n", + "sns.histplot(values, bins=20, log_scale=(True, False))\n", + "plt.title('Distribution of Values (Log Scale)')\n", + "plt.xlabel('Value')\n", + "plt.ylabel('Frequency')\n", + "plt.yscale('log')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# SROY" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading GT, omnipath\n", + "intersection of 5421 genes\n", + "intersection pct: 0.7261888814467515\n", + "precision: 0.05196431366411019 \n", + "recall: 0.007354732947874438 \n", + "random precision: 0.0015363581970075373\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 99%|█████████▉| 127/128 [00:11<00:00, 12.24it/s]/pasteur/appa/homes/jkalfon/benGRN/bengrn/base.py:749: RuntimeWarning: invalid value encountered in scalar divide\n", + " precision = (grn[true] > threshold).sum() / (grn > threshold).sum()\n", + "100%|██████████| 128/128 [00:11<00:00, 11.42it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Area Under Precision-Recall Curve (AUPRC): 0.0017161505176658254\n", + "EPR: 4.961930966011397\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1cAAALCCAYAAAAyHim0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABY/ElEQVR4nO3deVyVdf7//+fhsKu4IeBCYmnuyYjLaCVqKC5N0ZSaLaKp2cJkUVY6lpWZY6Vpo2n2LXXmV2la+bFyI9IypcWtssmyRtNUQHMUBVnP9fuDOHriQIBvPAd93G83b3Jd53Vd1+u6gDc8uZZjsyzLEgAAAADgnPh4ugEAAAAAuBAQrgAAAADAAMIVAAAAABhAuAIAAAAAAwhXAAAAAGAA4QoAAAAADCBcAQAAAIABhCsAAAAAMIBwBQAAAAAGEK4AAOdk5MiRioqKqtQyGzdulM1m08aNG6ulp5qud+/e6t27t3N63759stlsWrx4scd6AgD8McIVANQwixcvls1mc/4LDAzU5ZdfrqSkJGVkZHi6Pa9XElRK/vn4+KhBgwYaOHCg0tLSPN2eERkZGXrooYfUpk0bBQcHq1atWoqJidHTTz+t48ePe7o9ALhg+Xq6AQBA1Tz11FNq0aKFcnNz9emnn2r+/PlavXq1du3apeDg4PPWxyuvvCKHw1GpZXr16qXTp0/L39+/mrr6Y8OHD9egQYNUVFSkH374QS+99JL69OmjL7/8Uh07dvRYX+fqyy+/1KBBg3Tq1CnddtttiomJkSRt3bpV//jHP/TJJ59o/fr1Hu4SAC5MhCsAqKEGDhyoLl26SJLGjBmjhg0batasWfq///s/DR8+3O0y2dnZqlWrltE+/Pz8Kr2Mj4+PAgMDjfZRWZ07d9Ztt93mnL766qs1cOBAzZ8/Xy+99JIHO6u648eP64YbbpDdbteOHTvUpk0bl9enTZumV155xci2quNrCQBqOi4LBIALRN++fSVJe/fulVR8L1Tt2rX1008/adCgQapTp45uvfVWSZLD4dDs2bPVvn17BQYGKjw8XOPGjdP//ve/Uutds2aNYmNjVadOHYWEhKhr16564403nK+7u+dq6dKliomJcS7TsWNHzZkzx/l6WfdcLV++XDExMQoKClJoaKhuu+02HTx40KWmZL8OHjyohIQE1a5dW40aNdJDDz2koqKiKh+/q6++WpL0008/ucw/fvy47r//fkVGRiogIEAtW7bUjBkzSp2tczgcmjNnjjp27KjAwEA1atRIAwYM0NatW501ixYtUt++fRUWFqaAgAC1a9dO8+fPr3LPv/fyyy/r4MGDmjVrVqlgJUnh4eGaPHmyc9pms+mJJ54oVRcVFaWRI0c6p0suRf344491zz33KCwsTM2aNdOKFSuc8931YrPZtGvXLue83bt366abblKDBg0UGBioLl26aNWqVee20wDgRThzBQAXiJJQ0LBhQ+e8wsJCxcfH66qrrtLzzz/vvFxw3LhxWrx4sUaNGqX77rtPe/fu1dy5c7Vjxw5t3rzZeTZq8eLFuuOOO9S+fXtNnDhR9erV044dO7R27VrdcsstbvtISUnR8OHDdc0112jGjBmSpO+++06bN2/W+PHjy+y/pJ+uXbtq+vTpysjI0Jw5c7R582bt2LFD9erVc9YWFRUpPj5e3bt31/PPP68PP/xQM2fO1GWXXaa77767Ssdv3759kqT69es75+Xk5Cg2NlYHDx7UuHHjdMkll2jLli2aOHGiDh8+rNmzZztrR48ercWLF2vgwIEaM2aMCgsLtWnTJn322WfOM4zz589X+/btdd1118nX11fvvfee7rnnHjkcDt17771V6vtsq1atUlBQkG666aZzXpc799xzjxo1aqTHH39c2dnZGjx4sGrXrq233npLsbGxLrXLli1T+/bt1aFDB0nSt99+qyuvvFJNmzbVo48+qlq1aumtt95SQkKC3n77bd1www3V0jMAnFcWAKBGWbRokSXJ+vDDD60jR45YBw4csJYuXWo1bNjQCgoKsn755RfLsiwrMTHRkmQ9+uijLstv2rTJkmS9/vrrLvPXrl3rMv/48eNWnTp1rO7du1unT592qXU4HM6PExMTrebNmzunx48fb4WEhFiFhYVl7sOGDRssSdaGDRssy7Ks/Px8KywszOrQoYPLtt5//31LkvX444+7bE+S9dRTT7ms809/+pMVExNT5jZL7N2715JkPfnkk9aRI0es9PR0a9OmTVbXrl0tSdby5cudtVOnTrVq1apl/fDDDy7rePTRRy273W7t37/fsizL+uijjyxJ1n333Vdqe2cfq5ycnFKvx8fHW5deeqnLvNjYWCs2NrZUz4sWLSp33+rXr2916tSp3JqzSbKmTJlSan7z5s2txMRE53TJ19xVV11V6vM6fPhwKywszGX+4cOHLR8fH5fP0TXXXGN17NjRys3Ndc5zOBxWz549rVatWlW4ZwDwZlwWCAA1VFxcnBo1aqTIyEjdfPPNql27tt599101bdrUpe73Z3KWL1+uunXrql+/fjp69KjzX0xMjGrXrq0NGzZIKj4DdfLkST366KOl7o+y2Wxl9lWvXj1lZ2crJSWlwvuydetWZWZm6p577nHZ1uDBg9WmTRt98MEHpZa56667XKavvvpq/fe//63wNqdMmaJGjRopIiJCV199tb777jvNnDnT5azP8uXLdfXVV6t+/fouxyouLk5FRUX65JNPJElvv/22bDabpkyZUmo7Zx+roKAg58cnTpzQ0aNHFRsbq//+9786ceJEhXsvS1ZWlurUqXPO6ynL2LFjZbfbXeYNGzZMmZmZLpd4rlixQg6HQ8OGDZMkHTt2TB999JGGDh2qkydPOo/jr7/+qvj4eO3Zs6fU5Z8AUBNxWSAA1FDz5s3T5ZdfLl9fX4WHh6t169by8XH9m5mvr6+aNWvmMm/Pnj06ceKEwsLC3K43MzNT0pnLDEsu66qoe+65R2+99ZYGDhyopk2bqn///ho6dKgGDBhQ5jI///yzJKl169alXmvTpo0+/fRTl3kl9zSdrX79+i73jB05csTlHqzatWurdu3azuk777xTQ4YMUW5urj766CO9+OKLpe7Z2rNnj77++utS2ypx9rFq0qSJGjRoUOY+StLmzZs1ZcoUpaWlKScnx+W1EydOqG7duuUu/0dCQkJ08uTJc1pHeVq0aFFq3oABA1S3bl0tW7ZM11xzjaTiSwKjo6N1+eWXS5J+/PFHWZalxx57TI899pjbdWdmZpb6wwAA1DSEKwCoobp16+a8l6csAQEBpQKXw+FQWFiYXn/9dbfLlBUkKiosLEw7d+7UunXrtGbNGq1Zs0aLFi3SiBEjtGTJknNad4nfnz1xp2vXrs7QJhWfqTr74Q2tWrVSXFycJOnaa6+V3W7Xo48+qj59+jiPq8PhUL9+/fTwww+73UZJeKiIn376Sddcc43atGmjWbNmKTIyUv7+/lq9erVeeOGFSj/O3p02bdpo586dys/PP6fH3Jf1YJCzz7yVCAgIUEJCgt5991299NJLysjI0ObNm/XMM884a0r27aGHHlJ8fLzbdbds2bLK/QKAtyBcAcBF5rLLLtOHH36oK6+80u0vy2fXSdKuXbsq/Yuvv7+//vKXv+gvf/mLHA6H7rnnHr388st67LHH3K6refPmkqTvv//e+dTDEt9//73z9cp4/fXXdfr0aef0pZdeWm793//+d73yyiuaPHmy1q5dK6n4GJw6dcoZwspy2WWXad26dTp27FiZZ6/ee+895eXladWqVbrkkkuc80suwzThL3/5i9LS0vT222+X+Tj+s9WvX7/Umwrn5+fr8OHDldrusGHDtGTJEqWmpuq7776TZVnOSwKlM8fez8/vD48lANRk3HMFABeZoUOHqqioSFOnTi31WmFhofOX7f79+6tOnTqaPn26cnNzXeosyypz/b/++qvLtI+Pj6644gpJUl5enttlunTporCwMC1YsMClZs2aNfruu+80ePDgCu3b2a688krFxcU5//1RuKpXr57GjRundevWaefOnZKKj1VaWprWrVtXqv748eMqLCyUJN14442yLEtPPvlkqbqSY1Vytu3sY3fixAktWrSo0vtWlrvuukuNGzfWgw8+qB9++KHU65mZmXr66aed05dddpnzvrESCxcurPQj7ePi4tSgQQMtW7ZMy5YtU7du3VwuIQwLC1Pv3r318ssvuw1uR44cqdT2AMBbceYKAC4ysbGxGjdunKZPn66dO3eqf//+8vPz0549e7R8+XLNmTNHN910k0JCQvTCCy9ozJgx6tq1q2655RbVr19fX331lXJycsq8xG/MmDE6duyY+vbtq2bNmunnn3/WP//5T0VHR6tt27Zul/Hz89OMGTM0atQoxcbGavjw4c5HsUdFRemBBx6ozkPiNH78eM2ePVv/+Mc/tHTpUk2YMEGrVq3Stddeq5EjRyomJkbZ2dn65ptvtGLFCu3bt0+hoaHq06ePbr/9dr344ovas2ePBgwYIIfDoU2bNqlPnz5KSkpS//79nWf0xo0bp1OnTumVV15RWFhYpc8UlaV+/fp69913NWjQIEVHR+u2225TTEyMJGn79u1688031aNHD2f9mDFjdNddd+nGG29Uv3799NVXX2ndunUKDQ2t1Hb9/Pz017/+VUuXLlV2draef/75UjXz5s3TVVddpY4dO2rs2LG69NJLlZGRobS0NP3yyy/66quvzm3nAcAbePJRhQCAyit5LPaXX35Zbl1iYqJVq1atMl9fuHCh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gQceOOeGAAAAAKAmqnC4WrVqlQYOHCg/Pz+tWrWq3NrrrrvunBsDAAAAgJqkwuEqISFB6enpCgsLU0JCQpl1NpuNh1oAAAAAuOhUOFw5HA63HwMAAAAAqvgodgAAAACAqyqFq/vuu08vvvhiqflz587V/ffff649AQAAAECNU6Vw9fbbb+vKK68sNb9nz55asWLFOTcFAAAAADVNlcLVr7/+qrp165aaHxISoqNHj55zUwAAAABQ01QpXLVs2VJr164tNX/NmjW69NJLz7kpAAAAAKhpqvQmwsnJyUpKStKRI0fUt29fSVJqaqpmzpyp2bNnm+wPAAAAAGqEKoWrO+64Q3l5eZo2bZqmTp0qSYqKitL8+fM1YsQIow0CAAAAQE1QpXAlSXfffbfuvvtuHTlyREFBQapdu7bJvgAAAACgRqny+1wVFhbqww8/1DvvvCPLsiRJhw4d0qlTp4w1BwAAAAA1RZXOXP38888aMGCA9u/fr7y8PPXr10916tTRjBkzlJeXpwULFpjuEwAAAAC8WpXOXI0fP15dunTR//73PwUFBTnn33DDDUpNTTXWHAAAAADUFFU6c7Vp0yZt2bJF/v7+LvOjoqJ08OBBI40BAAAAQE1SpTNXDodDRUVFpeb/8ssvqlOnzjk3BQAAAAA1TZXCVf/+/V3ez8pms+nUqVOaMmWKBg0aZKo3AAAAAKgxqnRZ4PPPP68BAwaoXbt2ys3N1S233KI9e/YoNDRUb775pukeAQAAAMDrVSlcRUZG6quvvtKyZcv01Vdf6dSpUxo9erRuvfVWlwdcAAAAAMDFotLhqqCgQG3atNH777+vW2+9Vbfeemt19AUAAAAANUql77ny8/NTbm5udfQCAAAAADVWlR5oce+992rGjBkqLCw03Q8AAAAA1EhVuufqyy+/VGpqqtavX6+OHTuqVq1aLq+/8847RpoDAAAAgJqiSuGqXr16uvHGG033AgAAAAA1VqXClcPh0HPPPacffvhB+fn56tu3r5544gmeEAgAAADgolepe66mTZumSZMmqXbt2mratKlefPFF3XvvvdXVGwAAAADUGJUKV//617/00ksvad26dVq5cqXee+89vf7663I4HNXVHwAAAADUCJUKV/v379egQYOc03FxcbLZbDp06JDxxgAAAACgJqlUuCosLFRgYKDLPD8/PxUUFBht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AgIsSZaPj4+1YsWKcpcbPHiw9eCDDzqnY2NjrauuusqlpmvXrtYjjzxiWZZlrVmzxvL19bUOHDjgfH3NmjWWJOvdd9+1LMuyFi5caNWvX986deqUs+aDDz6wfHx8rPT0dGe/zZs3t4qKipw1rVu3tq6++mrndGFhoVWrVi3rzTffLHe/r7/+esuyLMvhcFgpKSlWQECA9dBDDzlfDw8Pt/Ly8pzL/Pvf/7Zat25tORwO57y8vDwrKCjIWrdunWVZltWkSRPr73//e5nbPXt///a3v1l9+/Z1WV9ZtZU5NoWFhc6aIUOGWMOGDSuzn3K/bgGcd/n5+dbKlSut/Px8T7cCAF7Jm8bJ8rLB73nFmSucH3369NH8+fOVnZ2tF154Qb6+vrrxxhudrxcVFemZZ57RW2+9pYMHDyo/P195eXml3uvriiuucJlu3LixMjMzJUm7d+9W06ZN1aRJE+frv3+QyHfffadOnTqp1lln36688ko5HA59//33zktC27dv7/LEwfDwcJfLP+12uxo2bOjcdlnef/991a5dWwUFBXI4HLrllltcLmXs2LGjy31WX331lX788UfVqVPHZT25ubn66aeflJmZqUOHDumaa64pd7slRo4cqX79+ql169YaMGCArr32WvXv399tbWWOzdlvBty4cWN98803FeoHAAAA1YNwZdJZ98WUctYvwpKk8gLB7x/x/rt7faqqVq1aatmypaTi+4U6deqkV199VaNHj5YkPffcc5ozZ45mz56tjh07qlatWrr//vtLvVny7x9HabPZnI9gN8nddqqy7ZJQ6e/vryZNmsjX1/XLvtbvLrE8deqUYmJi9Prrr5daV6NGjSr9CP7OnTtr7969WrNmjT788EMNHTpUcXFxWrFiRaXWc7bz9TkAAABAxRGuTKrMfVDVVVtBPj4+mjRpkpKTk3XLLbcoKChImzdv1vXXX6/bbrtNUvFj8X/44Qe1a9euwutt06aNDh48qMOHD6tp06aSpM8++8ylpm3btlq8eLGys7OdwWbz5s3y8fFxPlDCpLNDZUV07txZy5YtU1hYWKk3kS4RFRWl1NRU9enTp0LrDAkJ0bBhwzRs2DDddNNNGjBggI4dO6YGDRq41J3vYwMAAABzPP60QHjOkCFDZLfbNW/ePElSq1atlJKSoi1btui7777TuHHjSr1h8x+Ji4tTy5YtNXLkSH311VfatGmT/v73v7vU3HrrrQoMDFRiYqJ27dqlDRs26G9/+5tuv/1252VvnnTrrbcqNDRU119/vTZt2qS9e/dq48aNuu+++/TLL79Ikp544gnNnDlTL774ovbs2aPt27frn//8p9v1zZo1S2+++aZ2796tH374QcuXL1dERITq1avndtvefGwAAABQNsLVRczX11dJSUl69tlnlZ2drcmTJ6tz586Kj49X7969FRERUen3BvPx8dG///1v5ebmqlu3bhozZoymTZvmUhMcHKx169bp2LFj6tq1q2666SZdc801mjt3rsG9q7rg4GB98sknuuSSS/TXv/5Vbdu21ejRo5Wbm+s8k5WYmKjZs2frpZdeUvv27XXttddqz549btdXp04dPfvss+rSpYu6du2qffv2afXq1W4vL/T2YwMAAICy2SzLsjzdhLfJyspS3bp1deLEiVKXheXm5mrv3r1q0aLFRf++We44HA5lZWUpJCSk0vcmofrwdQt4l4KCAq1evVqDBg0qdQ8lAMC7xsnyssHv8dsvAAAAABhAuAIAAAAAAwhXAAAAAGAA4QoAAAAADCBcVRHPAUFNwtcrAABA9SNcVVLJ00pycnI83AlQcSVfr55+2g4AAMCFzNfTDdQ0drtd9erVU2ZmpqTi9yWy2Wwe7sp7OBwO5efnKzc3l0exewHLspSTk6PMzEzVq1dPdrvd0y0BAABcsAhXVRARESFJzoCFMyzL0unTpxUUFETo9CL16tVzft0CAACgehCuqsBms6lx48YKCwtTQUGBp9vxKgUFBfrkk0/Uq1cvLkHzEn5+fpyxAgAAOA8IV+fAbrfzS+vv2O12FRYWKjAwkHAFAACAiwo3xQAAAACAAYQrAAAAADCAcAUAAAAABnDPlRslb7ialZXl4U5qnoKCAuXk5CgrK4t7rgCgDIyVAFA+bxonSzJBSUYoD+HKjZMnT0qSIiMjPdwJAAAAAG9w8uRJ1a1bt9wam1WRCHaRcTgcOnTokOrUqVPqvZq6du2qL7/80vg2Ta7XxLqquo6srCxFRkbqwIEDCgkJOaceYEZ1fc16m5qwn57u8XxtvyaMkybWdy7LM1Z6F09/b54vNWE/Pd3j+dx+TRgr+Z2ymGVZOnnypJo0aSIfn/LvquLMlRs+Pj5q1qyZ29fsdnu1fIJNrtfEus51HSEhIR7/RkCx6vqa9TY1YT893eP52n5NGCdNrM9EP4yV3sHT35vnS03YT0/3eD63XxPGSn6nPOOPzliV4IEWlXTvvfd6/XpNrKu69hPn38XyuawJ++npHs/X9mvCOGlifZ7+fMKci+VzWRP209M9ns/t14Sxkt8pK4/LAmFUVlaW6tatqxMnTnjFXxkAwBsxVgJA+WrqOMmZKxgVEBCgKVOmKCAgwNOtAIDXYqwEgPLV1HGSM1cAAAAAYABnrgAAAADAAMIVAAAAABhAuAIAAAAAAwhXAAAAAGAA4QoAAAAADCBcwWMOHDig3r17q127drriiiu0fPlyT7cEAF7nhhtuUP369XXTTTd5uhUA8Arvv/++WrdurVatWun//b//5+l2XPAodnjM4cOHlZGRoejoaKWnpysmJkY//PCDatWq5enWAMBrbNy4USdPntSSJUu0YsUKT7cDAB5VWFiodu3aacOGDapbt65iYmK0ZcsWNWzY0NOtSeLMFTyocePGio6OliRFREQoNDRUx44d82xTAOBlevfurTp16ni6DQDwCl988YXat2+vpk2bqnbt2ho4cKDWr1/v6bacCFco0yeffKK//OUvatKkiWw2m1auXFmqZt68eYqKilJgYKC6d++uL774okrb2rZtm4qKihQZGXmOXQPA+XM+x0kAuBCc67h56NAhNW3a1DndtGlTHTx48Hy0XiGEK5QpOztbnTp10rx589y+vmzZMiUnJ2vKlCnavn27OnXqpPj4eGVmZjproqOj1aFDh1L/Dh065Kw5duyYRowYoYULF1b7PgGASedrnASAC4WJcdOrWUAFSLLeffddl3ndunWz7r33Xud0UVGR1aRJE2v69OkVXm9ubq519dVXW//6179MtQoAHlFd46RlWdaGDRusG2+80USbAOA1qjJubt682UpISHC+Pn78eOv1118/L/1WBGeuUCX5+fnatm2b4uLinPN8fHwUFxentLS0Cq3DsiyNHDlSffv21e23315drQKAR5gYJwHgYlKRcbNbt27atWuXDh48qFOnTmnNmjWKj4/3VMulEK5QJUePHlVRUZHCw8Nd5oeHhys9Pb1C69i8ebOWLVumlStXKjo6WtHR0frmm2+qo10AOO9MjJOSFBcXpyFDhmj16tVq1qwZwQzABasi46avr69mzpypPn36KDo6Wg8++KDXPClQknw93QAuXldddZUcDoen2wAAr/bhhx96ugUA8CrXXXedrrvuOk+34RZnrlAloaGhstvtysjIcJmfkZGhiIgID3UFAN6DcRIAKudCGDcJV6gSf39/xcTEKDU11TnP4XAoNTVVPXr08GBnAOAdGCcBoHIuhHGTywJRplOnTunHH390Tu/du1c7d+5UgwYNdMkllyg5OVmJiYnq0qWLunXrptmzZys7O1ujRo3yYNcAcP4wTgJA5Vzo46bNsizL003AO23cuFF9+vQpNT8xMVGLFy+WJM2dO1fPPfec0tPTFR0drRdffFHdu3c/z50CgGcwTgJA5Vzo4ybhCgAAAAAM4J4rAAAAADCAcAUAAAAABhCuAAAAAMAAwhUAAAAAGEC4AgAAAAADCFcAAAAAYADhCgAAAAAMIFwBAAAAgAGEKwAADLPZbFq5cqUkad++fbLZbNq5c6dHewIAVD/CFQDggjJy5EjZbDbZbDb5+fmpRYsWevjhh5Wbm+vp1gAAFzhfTzcAAIBpAwYM0KJFi1RQUKBt27YpMTFRNptNM2bM8HRrAIALGGeuAAAXnICAAEVERCgyMlIJCQmKi4tTSkqKJMnhcGj69Olq0aKFgoKC1KlTJ61YscJl+W+//VbXXnutQkJCVKdOHV199dX66aefJElffvml+vXrp9DQUNWtW1exsbHavn37ed9HAID3IVwBAC5ou3bt0pYtW+Tv7y9Jmj59uv71r39pwYIF+vbbb/XAAw/otttu08cffyxJOnjwoHr16qWAgAB99NFH2rZtm+644w4VFhZKkk6ePKnExER9+umn+uyzz9SqVSsNGjRIJ0+e9Ng+AgC8A5cFAgAuOO+//75q166twsJC5eXlycfHR3PnzlVeXp6eeeYZffjhh+rRo4ck6dJLL9Wnn36ql19+WbGxsZo3b57q1q2rpUuXys/PT5J0+eWXO9fdt29fl20tXLhQ9erV08cff6xrr732/O0kAMDrEK4AABecPn36aP78+crOztYLL7wgX19f3Xjjjfr222+Vk5Ojfv36udTn5+frT3/6kyRp586duvrqq53B6vcyMjI0efJkbdy4UZmZmSoqKlJOTo72799f7fsFAPBuhCsAwAWnVq1aatmypSTptddeU6dOnfTqq6+qQ4cOkqQPPvhATZs2dVkmICBAkhQUFFTuuhMTE/Xrr79qzpw5at68uQICAtSjRw/l5+dXw54AAGoSwhUA4ILm4+OjSZMmKTk5WT/88IMCAgK0f/9+xcbGuq2/4oortGTJEhUUFLg9e7V582a99NJLGjRokCTpwIEDOnr0aLXuAwCgZuCBFgCAC96QIUNkt9v18ssv66GHHtIDDzygJUuW6KefftL27dv1z3/+U0uWLJEkJSUlKSsrSzfffLO2bt2qPXv26N///re+//57SVKrVq3073//W999950+//xz3XrrrX94tgsAcHHgzBUA4ILn6+urpKQkPfvss9q7d68aNWqk6dOn67///a/q1aunzp07a9KkSZKkhg0b6qOPPtKECRMUGxsru92u6OhoXXnllZKkV199VXfeeac6d+6syMhIPfPMM3rooYc8uXsAAC9hsyzL8nQTAAAAAFDTcVkgAAAAABhAuAIAAAAAAwhXAAAAAGAA4QoAAAAADCBcAQAAAIABhCsAAAAAMIBwBQAAAAAGEK4AAAAAwADCFQAAAAAYQLgCAAAAAAMIVwAAAABgAOEKAAAAAAz4/wETH69oq7WrYgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "{'precision': 0.05196431366411019,\n", + " 'recall': 0.007354732947874438,\n", + " 'rand_precision': 0.0015363581970075373,\n", + " 'auprc': 0.0017161505176658254,\n", + " 'epr': 4.961930966011397}" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#SROY\n", + "#OMNIPATH\n", + "BenGRN(sroy).compare_to(to=\"omnipath\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "31" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(sroy.varp['GRN'].sum(1)>0).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading GT, omnipath\n", + "intersection of 5421 genes\n", + "intersection pct: 0.7261888814467515\n", + "precision: 0.015495382688996712 \n", + "recall: 0.0021931281983119558 \n", + "random precision: 0.0015363581970075373\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 98%|█████████▊| 126/128 [00:10<00:00, 11.13it/s]/pasteur/appa/homes/jkalfon/benGRN/bengrn/base.py:749: RuntimeWarning: invalid value encountered in scalar divide\n", + " precision = (grn[true] > threshold).sum() / (grn > threshold).sum()\n", + "100%|██████████| 128/128 [00:10<00:00, 12.23it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Area Under Precision-Recall Curve (AUPRC): 0.0015499804468824092\n", + "EPR: 1.5309086549993332\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA18AAALCCAYAAAAhyWlAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABmfElEQVR4nO3de1iUdf7/8ddwGg4KHgjwgIfKNNMkUQnTKEPw0BZtmZolumZ2sDQ6bLom2mFZS0tN09zd1PZXaVq5rkskoZWrrOap1b6ZVrq4EqC5goLAyNy/P1gmJw4Bwj0jPh/XxRX3Z973fb/vgfnEy/ueeyyGYRgCAAAAADQqD1c3AAAAAACXAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJCF8AAAAAYALCFwAAAACYgPAFAAAAACYgfAEAAACACQhfAAAAAGACwhcAoNGNGzdOnTp1qtM6n376qSwWiz799NNG6elid9NNN+mmm25yLB85ckQWi0UrVqxwWU8AgJoRvgCgCVqxYoUsFovjy9fXV1dddZUmT56s3NxcV7fn9iqCTMWXh4eHWrVqpaFDhyozM9PV7TWI3NxcPfnkk+rWrZv8/f0VEBCgyMhIvfDCCzp16pSr2wOAJsnL1Q0AABrPc889p86dO6u4uFj/+Mc/tGTJEqWmpmr//v3y9/c3rY8//vGPstvtdVrnxhtv1NmzZ+Xj49NIXf2y0aNHa9iwYSorK9PBgwf1+uuv6+abb9YXX3yhnj17uqyvC/XFF19o2LBhOnPmjO69915FRkZKknbu3Kk//OEP+vzzz7Vx40YXdwkATQ/hCwCasKFDh6pPnz6SpPvvv1+tW7fWK6+8or/+9a8aPXp0lesUFhYqICCgQfvw9vau8zoeHh7y9fVt0D7qqnfv3rr33nsdywMHDtTQoUO1ZMkSvf766y7srP5OnTqlO+64Q56entqzZ4+6devm9PiLL76oP/7xjw2yr8b4XQKAixmXHQLAJWTQoEGSpMOHD0sqfy9Ws2bN9N1332nYsGFq3ry5xowZI0my2+2aP3++rrnmGvn6+io0NFSTJk3Sf//730rb/eijjxQTE6PmzZsrMDBQffv21TvvvON4vKr3fK1atUqRkZGOdXr27KkFCxY4Hq/uPV9r1qxRZGSk/Pz8FBwcrHvvvVfHjh1zqqk4rmPHjikhIUHNmjXTZZddpieffFJlZWX1fv4GDhwoSfruu++cxk+dOqWpU6cqPDxcVqtVV155pebMmVPpbJ/dbteCBQvUs2dP+fr66rLLLtOQIUO0c+dOR83y5cs1aNAghYSEyGq1qnv37lqyZEm9e/65N954Q8eOHdMrr7xSKXhJUmhoqGbMmOFYtlgsmjVrVqW6Tp06ady4cY7liktdP/vsMz388MMKCQlR+/bttXbtWsd4Vb1YLBbt37/fMXbgwAHdddddatWqlXx9fdWnTx+tX7/+wg4aANwEZ74A4BJSERpat27tGDt37pzi4+M1YMAAzZ0713E54qRJk7RixQqNHz9ejz32mA4fPqxFixZpz5492rp1q+Ns1ooVK/Sb3/xG11xzjaZNm6YWLVpoz549SktL0z333FNlH+np6Ro9erRuueUWzZkzR5L09ddfa+vWrZoyZUq1/Vf007dvX6WkpCg3N1cLFizQ1q1btWfPHrVo0cJRW1ZWpvj4eEVFRWnu3Ln65JNPNG/ePF1xxRV66KGH6vX8HTlyRJLUsmVLx1hRUZFiYmJ07NgxTZo0SR06dNC2bds0bdo0/fDDD5o/f76jdsKECVqxYoWGDh2q+++/X+fOndOWLVv0z3/+03GGcsmSJbrmmmt02223ycvLS3/729/08MMPy26365FHHqlX3+dbv369/Pz8dNddd13wtqry8MMP67LLLtPMmTNVWFio4cOHq1mzZnrvvfcUExPjVLt69Wpdc8016tGjhyTpq6++0g033KB27drpmWeeUUBAgN577z0lJCTo/fff1x133NEoPQOAaQwAQJOzfPlyQ5LxySefGMePHzeOHj1qrFq1ymjdurXh5+dn/Oc//zEMwzASExMNScYzzzzjtP6WLVsMScbbb7/tNJ6WluY0furUKaN58+ZGVFSUcfbsWadau93u+D4xMdHo2LGjY3nKlClGYGCgce7cuWqPYfPmzYYkY/PmzYZhGEZpaakREhJi9OjRw2lfGzZsMCQZM2fOdNqfJOO5555z2uZ1111nREZGVrvPCocPHzYkGbNnzzaOHz9u5OTkGFu2bDH69u1rSDLWrFnjqH3++eeNgIAA4+DBg07beOaZZwxPT08jKyvLMAzD2LRpkyHJeOyxxyrt7/znqqioqNLj8fHxxuWXX+40FhMTY8TExFTqefny5TUeW8uWLY1evXrVWHM+SUZycnKl8Y4dOxqJiYmO5YrfuQEDBlT6uY4ePdoICQlxGv/hhx8MDw8Pp5/RLbfcYvTs2dMoLi52jNntdqN///5Gly5dat0zALgrLjsEgCYsNjZWl112mcLDwzVq1Cg1a9ZMH374odq1a+dU9/MzQWvWrFFQUJAGDx6sEydOOL4iIyPVrFkzbd68WVL5GazTp0/rmWeeqfT+LIvFUm1fLVq0UGFhodLT02t9LDt37lReXp4efvhhp30NHz5c3bp109///vdK6zz44INOywMHDtT3339f630mJyfrsssuU1hYmAYOHKivv/5a8+bNczprtGbNGg0cOFAtW7Z0eq5iY2NVVlamzz//XJL0/vvvy2KxKDk5udJ+zn+u/Pz8HN/n5+frxIkTiomJ0ffff6/8/Pxa916dgoICNW/e/IK3U52JEyfK09PTaWzkyJHKy8tzuoR07dq1stvtGjlypCTp5MmT2rRpk+6++26dPn3a8Tz++OOPio+P16FDhypdXgoAFxsuOwSAJmzx4sW66qqr5OXlpdDQUHXt2lUeHs7/7ubl5aX27ds7jR06dEj5+fkKCQmpcrt5eXmSfrqMseKysdp6+OGH9d5772no0KFq166d4uLidPfdd2vIkCHVrvPvf/9bktS1a9dKj3Xr1k3/+Mc/nMYq3lN1vpYtWzq9Z+348eNO7wFr1qyZmjVr5lh+4IEHNGLECBUXF2vTpk1auHBhpfeMHTp0SP/6178q7avC+c9V27Zt1apVq2qPUZK2bt2q5ORkZWZmqqioyOmx/Px8BQUF1bj+LwkMDNTp06cvaBs16dy5c6WxIUOGKCgoSKtXr9Ytt9wiqfySw4iICF111VWSpG+//VaGYejZZ5/Vs88+W+W28/LyKv3DAQBcTAhfANCE9evXz/FeoupYrdZKgcxutyskJERvv/12letUFzRqKyQkRHv37tXHH3+sjz76SB999JGWL1+usWPHauXKlRe07Qo/P/tSlb59+zpCnVR+puv8m0t06dJFsbGxkqRbb71Vnp6eeuaZZ3TzzTc7nle73a7Bgwfr6aefrnIfFeGiNr777jvdcsst6tatm1555RWFh4fLx8dHqampevXVV+t8u/6qdOvWTXv37lVpaekF3ca/uhuXnH/mroLValVCQoI+/PBDvf7668rNzdXWrVv1+9//3lFTcWxPPvmk4uPjq9z2lVdeWe9+AcAdEL4AAJVcccUV+uSTT3TDDTdU+cf0+XWStH///jr/Yezj46Nf/epX+tWvfiW73a6HH35Yb7zxhp599tkqt9WxY0dJ0jfffOO4a2OFb775xvF4Xbz99ts6e/asY/nyyy+vsf53v/ud/vjHP2rGjBlKS0uTVP4cnDlzxhHSqnPFFVfo448/1smTJ6s9+/W3v/1NJSUlWr9+vTp06OAYr7jMsyH86le/UmZmpt5///1qP27gfC1btqz0oculpaX64Ycf6rTfkSNHauXKlcrIyNDXX38twzAclxxKPz333t7ev/hcAsDFivd8AQAqufvuu1VWVqbnn3++0mPnzp1z/DEeFxen5s2bKyUlRcXFxU51hmFUu/0ff/zRadnDw0PXXnutJKmkpKTKdfr06aOQkBAtXbrUqeajjz7S119/reHDh9fq2M53ww03KDY21vH1S+GrRYsWmjRpkj7++GPt3btXUvlzlZmZqY8//rhS/alTp3Tu3DlJ0p133inDMDR79uxKdRXPVcXZuvOfu/z8fC1fvrzOx1adBx98UG3atNETTzyhgwcPVno8Ly9PL7zwgmP5iiuucLxvrcKyZcvqfMv+2NhYtWrVSqtXr9bq1avVr18/p0sUQ0JCdNNNN+mNN96oMtgdP368TvsDAHfEmS8AQCUxMTGaNGmSUlJStHfvXsXFxcnb21uHDh3SmjVrtGDBAt11110KDAzUq6++qvvvv199+/bVPffco5YtW+rLL79UUVFRtZcQ3n///Tp58qQGDRqk9u3b69///rdee+01RURE6Oqrr65yHW9vb82ZM0fjx49XTEyMRo8e7bjVfKdOnfT444835lPiMGXKFM2fP19/+MMftGrVKj311FNav369br31Vo0bN06RkZEqLCzUvn37tHbtWh05ckTBwcG6+eabdd9992nhwoU6dOiQhgwZIrvdri1btujmm2/W5MmTFRcX5zgjOGnSJJ05c0Z//OMfFRISUuczTdVp2bKlPvzwQw0bNkwRERG69957FRkZKUnavXu33n33XUVHRzvq77//fj344IO68847NXjwYH355Zf6+OOPFRwcXKf9ent769e//rVWrVqlwsJCzZ07t1LN4sWLNWDAAPXs2VMTJ07U5ZdfrtzcXGVmZuo///mPvvzyyws7eABwNVfeahEA0Dgqbvv9xRdf1FiX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ANAIuOFGI6h4j5e/v7+LOwFqr+L3lfcoAgAANA7CVyPiUkNcTPh9BQAAaFyELwAAAAAwAeELAAAAAExA+AIAAAAAExC+0OC4YQMAAABQGeHLzf3nP9LmzeX/NcNNN92kyZMna/LkyQoKClJwcLCeffZZGYZR7ToWi0VLlizRbbfdpoCAAL344ovmNAsAAABcRPicLxMYhlRUVPf1Vq6UHn1UstslDw/ptdekxMS6bcPfX6rrTexWrlypCRMmaMeOHdq5c6ceeOABdejQQRMnTqx2nVmzZukPf/iD5s+fLy8vfq0AAACAn+OvZBMUFUnNml3YNux26ZFHyr/q4swZKSCgbuuEh4fr1VdflcViUdeuXbVv3z69+uqrNYave+65R+PHj6/bjgAAAIBLCJcdopLrr7/e6TOfoqOjdejQIb344otq1qyZ4ysrK8tR06dPH1e0CgAAAFw0OPNlAn//8jNQdXHsmHT11eVnvCp4ekr/939Su3Z123dDefDBBzVy5EjHctu2bR3fB9T19BoAAABwiSF8mcBiqfulf1ddJS1bJk2aJJWVlQevN94oH29s27dvd1r+5z//qS5duqh169Zq3bp14zcAAAAANEGELzc2YYIUHy99+6105ZVS+/bm7DcrK0tJSUmaNGmSdu/erddee03z5s0zZ+cAAABAE0X4cnPt25sXuiqMHTtWZ8+eVb9+/eTp6akpU6bogQceMLcJAAAAoIkhfKESb29vzZ8/X0uWLKlVfU2fAQYAAACgHHc7BAAAAAATEL4AAAAAwARcdggnn376qatbAAAAAJoktzjztXjxYnXq1Em+vr6KiorSjh07aqxfs2aNunXrJl9fX/Xs2VOpqalOjxuGoZkzZ6pNmzby8/NTbGysDh065FRz8uRJjRkzRoGBgWrRooUmTJigM3X9MC4AAAAAqCWXh6/Vq1crKSlJycnJ2r17t3r16qX4+Hjl5eVVWb9t2zaNHj1aEyZM0J49e5SQkKCEhATt37/fUfPSSy9p4cKFWrp0qbZv366AgADFx8eruLjYUTNmzBh99dVXSk9P14YNG/T5559zRz8AAAAAjcbl4euVV17RxIkTNX78eHXv3l1Lly6Vv7+/3nzzzSrrFyxYoCFDhuipp57S1Vdfreeff169e/fWokWLJJWf9Zo/f75mzJih22+/Xddee63eeustZWdn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j3/00UeGJOPDDz80DMMwli1bZrRs2dI4c+aMo+bvf/+74eHhYeTk5Dj67dixo1FWVuao6dq1qzFw4EDH8rlz54yAgADj3XffrfG4b7/9dsMwDMNutxvp6emG1Wo1nnzyScfjoaGhRklJiWOdv/zlL0bXrl0Nu93uGCspKTH8/PyMjz/+2DAMw2jbtq3xu9/9rtr9nn+8jz76qDFo0CCn7VVXW5fn5ty5c46aESNGGCNHjqy2n2p/bxtRaWmpsW7dOqO0tNS0fQK4eDBHAKiJO80RNWWD87nFmS+4j5tvvllLlixRYWGhXn31VXl5eenOO+90PF5WVqbf//73eu+993Ts2DGVlpaqpKSk0medXXvttU7Lbdq0cdxh8uuvv1Z4eLjT++t+foOVr7/+Wr169VLAeWfvbrjhBtntdn3zzTeOy1KvueYapztKhoaGOl2C6unpqdatW1e6u+XPbdiwQc2aNZPNZpPdbtc999zjdKlkz549nd7n9eWXX+rbb79V8+bNnbZTXFys7777Tnl5ecrOztYtt9xS434rjBs3ToMHD1bXrl01ZMgQ3XrrrYqLi6uyti7PzfkfltymTRvt27evVv0AAACg4RG+zHTee3IqOe+PZElSTWHh57ev/9n7jC5EQECArrzySknl71fq1auX/vznP2vChAmSpJdfflkLFizQ/Pnz1bNnTwUEBGjq1KmVPkz657fbtFgsstvtDdZnTfupz74rQqePj4/atm0rLy/nl0bAzy7hPHPmjCIjI/X2229X2tZll11W548Y6N27tw4fPqyPPvpIn3zyie6++27FxsZq7dq1ddrO+cz6GQAAAKB2CF9mqst7sBqrtg48PDw0ffp0JSUl6Z577pGfn5+2bt2q22+/Xffee6+k8o8GOHjwoLp3717r7V599dU6evSofvjhB8dnsf3zn/+sVLNixQoVFhY6gs/WrVvl4eHhuOFFQzo/dNZG7969tXr1aoWEhFT6kO0KnTp1UkZGhm6++eZabTMwMFAjR47UyJEjddddd2nIkCE6efKkWrVq5VRn9nMDAACAhuHyux3CvY0YMUKenp5avHixJKlLly5KT0/Xtm3b9PXXX2vSpEmVPvT6l8TGxuqqq65SYmKivvzyS23ZskW/+93vnGrGjBkjX19fJSYmav/+/dq8ebMeffRR3XfffY7L6lxpzJgxCg4O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1UodOnRQUlKSEhMT1adPH/Xr10/z589XYWGhxo8f78KuAZiFOQJAXTTlOcNiGIbh6iYAXNw+/fRT3XzzzZXGExMTtWLFCknSokWL9PLLLysnJ0cRERFauHChoqKiTO4UgCswRwCoi6Y8ZxC+AAAAAMAEvOcLAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAABewWCxat26dJOnIkSOyWCzau3evS3sCADQuwhcA4JIzbtw4WSwWWSwWeXt7q3Pnznr66adVXFzs6tYAAE2Yl6sbAADAFYYMGaLly5fLZrNp165dSkxMlMVi0Zw5c1zdGgCgieLMFwDgkmS1WhUWFqbw8HAlJCQoNjZW6enpkiS73a6UlBR17txZfn5+6tWrl9auXeu0/ldffaVbb71VgYGBat68uQYOHKjvvvtOkvTFF19o8ODBCg4OVlBQkGJiYrR7927TjxEA4F4IXwCAS97+/fu1bds2+fj4SJJSUlL01ltvaenSpfrqq6/0+OOP695779Vnn30mSTp27JhuvPFGWa1Wbdq0Sbt27dJvfvMbnTt3TpJ0+vRpJSYm6h//+If++c9/qkuXLho2bJhOnz7tsmMEALgelx0CAC5JGzZsULNmzXTu3DmVlJTIw8NDixYtUklJiX7/+9/rk08+UXR0tCTp8ssv1z/+8Q+98cYbiomJ0eLFixUUFKRVq1bJ29tbknTVVVc5tj1o0CCnfS1btkwtWrTQZ599pltvvdW8gwQAuBXCFwDgknTzzTdryZIlKiws1KuvviovLy/deeed+uqrr1RUVKTBgwc71ZeWluq6666TJO3du1cDBw50BK+fy83N1YwZM/Tpp58qLy9PZWVlKioqUlZWVqMfFwDAfRG+AACXpICAAF155ZWSpDfffFO9evXSn//8Z/Xo0UOS9Pe//13t2rVzWsdqtUqS/Pz8atx2YmKifvzxRy1YsEAdO3aU1WpVdHS0SktLG+FIAAAXC8IXAOCS5+HhoenTpyspKUkHDx6U1WpVVlaWYmJiqqy/9tprtXLlStlstirPfm3dulWvv/66hg0bJkk6evSoTpw40ajHAABwf9xwAwAASSNGjJCnp6feeOMNPfnkk3r88ce1cuVKfffdd9q9e7dee+01rVy5UpI0efJkFRQUaNSoUdq5c6cOHTqkv/zlL/rmm28kSV26dNFf/vIXff3119q+fbvGjBnzi2fLAABNH2e+AACQ5OXlpcmTJ+ull17S4cOHddlllyklJUXff/+9WrRood69e2v69OmSpNatW2vTpk166qmnFBMTI09PT0VEROiGG26QJP35z3/WAw88oN69eys8PFy///3v9eSTT7ry8AAAbsBiGIbh6iYAAAAAoKnjskMAAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAAAAATED4AgAAAAATEL4AAAAAwASELwAAAAAwAeELAAAAAExA+AIAAAAAExC+AAAAAMAE/x+OsBVLlfJoYAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "{'precision': 0.015495382688996712,\n", + " 'recall': 0.0021931281983119558,\n", + " 'rand_precision': 0.0015363581970075373,\n", + " 'auprc': 0.0015499804468824092,\n", + " 'epr': 1.5309086549993332}" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sroy.varp['GRN'] = sroy.varp['GRN'].T\n", + "BenGRN(sroy).compare_to(to=\"omnipath\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4141" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(sroy.varp['GRN'].sum(1)>0).sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# GWPS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gwps.var['ensembl_id'] = gwps.var.index\n", + "gwps.var.index = gwps.var.gene_name.astype(str)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5530, 6384)" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(gwps.varp['GRN'].sum(1)>0).sum(), (gwps.varp['GRN'].sum(0)>0).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading GT, omnipath\n", + "intersection of 5727 genes\n", + "intersection pct: 0.6688076608665188\n", + "precision: 0.001522780666789853 \n", + "recall: 0.021875148125325875 \n", + "random precision: 0.0012862355421199006\n", + "EPR: 1.2537787690006579\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3EAAALCCAYAAABwXVojAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABUzUlEQVR4nO3deVhWdf7/8dcNIquAG5tSUpqWG7mRW2ihuNREi5nViKappaWSWVZqVuaklctomlnidFWaNjmWpiJqmTKWC36zqTSzwVRwG0BRFrnP7w9/3HkHGBB487Hn47q48P6c9znnfY63M+fV2WyWZVkCAAAAABjBzdUNAAAAAADKjhAHAAAAAAYhxAEAAACAQQhxAAAAAGAQQhwAAAAAGIQQBwAAAAAGIcQBAAAAgEEIcQAAAABgEEIcAAAAABiEEAcAMMagQYPUqFGjcs2zefNm2Ww2bd68uUp6Ml23bt3UrVs3x+eff/5ZNptNiYmJLusJAHBphDgAQKkSExNls9kcP15eXrruuus0atQoZWRkuLq9aq8oEBX9uLm5qU6dOurdu7dSUlJc3V6lyMjI0Lhx49SsWTP5+PjI19dXbdu21UsvvaTMzExXtwcAV6Qarm4AAFD9vfDCC4qIiFBubq6+/PJLzZ8/X2vWrNHevXvl4+Nz2fp46623ZLfbyzXPzTffrHPnzqlmzZpV1NXvGzBggPr06aPCwkLt27dPb7zxhrp3766vv/5aLVu2dFlff9TXX3+tPn366MyZM3rwwQfVtm1bSdKOHTv0t7/9TV988YXWr1/v4i4B4MpDiAMA/K7evXurXbt2kqShQ4eqbt26ev311/Wvf/1LAwYMKHGenJwc+fr6VmofHh4e5Z7Hzc1NXl5eldpHebVp00YPPvig43PXrl3Vu3dvzZ8/X2+88YYLO6u4zMxM3XnnnXJ3d9fu3bvVrFkzp+lTp07VW2+9VSnrqorvEgCYjMspAQDldsstt0iSDh48KOnCvWp+fn46cOCA+vTpo1q1aumBBx6QJNntds2aNUvNmzeXl5eXgoODNXz4cP3vf/8rttzPPvtM0dHRqlWrlvz9/dW+fXu9//77jukl3RO3dOlStW3b1jFPy5YtNXv2bMf00u6JW758udq2bStvb2/Vq1dPDz74oA4fPuxUU7Rdhw8fVlxcnPz8/FS/fn2NGzdOhYWFFd5/Xbt2lSQdOHDAaTwzM1NjxoxReHi4PD091bhxY73yyivFzj7a7XbNnj1bLVu2lJeXl+rXr69evXppx44djprFixfrlltuUVBQkDw9PXXDDTdo/vz5Fe75t958800dPnxYr7/+erEAJ0nBwcF67rnnHJ9tNpuef/75YnWNGjXSoEGDHJ+LLuH9/PPP9eijjyooKEgNGzbUihUrHOMl9WKz2bR3717H2Pfff6977rlHderUkZeXl9q1a6dVq1b9sY0GgGqCM3EAgHIrCh9169Z1jJ0/f16xsbHq0qWLXn31VcdllsOHD1diYqIGDx6sxx9/XAcPHtTcuXO1e/dubd261XF2LTExUQ899JCaN2+uCRMmKDAwULt379batWt1//33l9hHUlKSBgwYoFtvvVWvvPKKJOm7777T1q1bNXr06FL7L+qnffv2mjZtmjIyMjR79mxt3bpVu3fvVmBgoKO2sLBQsbGxioqK0quvvqoNGzbotdde07XXXqtHHnmkQvvv559/liTVrl3bMXb27FlFR0fr8OHDGj58uK666ipt27ZNEyZM0NGjRzVr1ixH7ZAhQ5SYmKjevXtr6NChOn/+vLZs2aJ///vfjjOm8+fPV/PmzfWXv/xFNWrU0CeffKJHH31UdrtdI0eOrFDfF1u1apW8vb11zz33/OFlleTRRx9V/fr1NWnSJOXk5Khv377y8/PThx9+qOjoaKfaZcuWqXnz5mrRooUk6dtvv1Xnzp3VoEEDPf300/L19dWHH36ouLg4ffTRR7rzzjurpGcAuGwsAABKsXjxYkuStWHDBuv48ePWoUOHrKVLl1p169a1vL29rV9++cWyLMuKj4+3JFlPP/200/xbtmyxJFnvvfee0/jatWudxjMzM61atWpZUVFR1rlz55xq7Xa748/x8fHW1Vdf7fg8evRoy9/f3zp//nyp27Bp0yZLkrVp0ybLsiwrPz/fCgoKslq0aOG0rk8//dSSZE2aNMlpfZKsF154wWmZN954o9W2bdtS11nk4MGDliRrypQp1vHjx6309HRry5YtVvv27S1J1vLlyx21L774ouXr62vt27fPaRlPP/205e7ubqWlpVmWZVkbN260JFmPP/54sfVdvK/Onj1bbHpsbKx1zTXXOI1FR0db0dHRxXpevHjxJbetdu3aVuvWrS9ZczFJ1uTJk4uNX3311VZ8fLzjc9F3rkuXLsX+XgcMGGAFBQU5jR89etRyc3Nz+ju69dZbrZYtW1q5ubmOMbvdbnXq1Mlq0qRJmXsGgOqKyykBAL8rJiZG9evXV3h4uO677z75+fnp448/VoMGDZzqfntmavny5QoICFCPHj104sQJx0/btm3l5+enTZs2SbpwRu306dN6+umni92/ZrPZSu0rMDBQOTk5SkpKKvO27NixQ8eOHdOjjz7qtK6+ffuqWbNmWr16dbF5RowY4fS5a9eu+umnn8q8zsmTJ6t+/foKCQlR165d9d133+m1115zOou1fPlyde3aVbVr13baVzExMSosLNQXX3whSfroo49ks9k0efLkYuu5eF95e3s7/pyVlaUTJ04oOjpaP/30k7Kyssrce2mys7NVq1atP7yc0jz88MNyd3d3Guvfv7+OHTvmdGnsihUrZLfb1b9/f0nSqVOntHHjRt177706ffq0Yz+ePHlSsbGx2r9/f7HLZgHANFxOCQD4XfPmzdN1112nGjVqKDg4WE2bNpWbm/N/B6xRo4YaNmzoNLZ//35lZWUpKCioxOUeO3ZM0q+XZxZdDldWjz76qD788EP17t1bDRo0UM+ePXXvvfeqV69epc7z3//+V5LUtGnTYtOaNWumL7/80mms6J6zi9WuXdvpnr7jx4873SPn5+cnPz8/x+dhw4apX79+ys3N1caNGzVnzpxi99Tt379f//d//1dsXUUu3ldhYWGqU6dOqdsoSVu3btXkyZOVkpKis2fPOk3LyspSQEDAJef/Pf7+/jp9+vQfWsalREREFBvr1auXAgICtGzZMt16662SLlxKGRkZqeuuu06S9OOPP8qyLE2cOFETJ04scdnHjh0r9h8gAMAkhDgAwO/q0KGD416r0nh6ehYLdna7XUFBQXrvvfdKnKe0wFJWQUFBSk1N1bp16/TZZ5/ps88+0+LFizVw4EAtWbLkDy27yG/PBpWkffv2jnAoXTjzdvFDPJo0aaKYmBhJ0m233SZ3d3c9/fTT6t69u2O/2u129ejRQ+PHjy9xHUUhpSwOHDigW2+9Vc2aNdPrr7+u8PBw1axZU2vWrNHMmTPL/ZqGkjRr1kypqanKz8//Q69vKO0BMRefSSzi6empuLg4ffzxx3rjjTeUkZGhrVu36uWXX3bUFG3buHHjFBsbW+KyGzduXOF+AaA6IMQBAKrMtddeqw0bNqhz584lHpRfXCdJe/fuLfcBds2aNXX77bfr9ttvl91u16OPPqo333xTEydOLHFZV199tSTphx9+cDxls8gPP/zgmF4e7733ns6dO+f4fM0111yy/tlnn9Vbb72l5557TmvXrpV0YR+cOXPGEfZKc+2112rdunU6depUqWfjPvnkE+Xl5WnVqlW66qqrHONFl69Whttvv10pKSn66KOPSn3NxMVq165d7OXf+fn5Onr0aLnW279/fy1ZskTJycn67rvvZFmW41JK6dd97+Hh8bv7EgBMxT1xAIAqc++996qwsFAvvvhisWnnz593HNT37NlTtWrV0rRp05Sbm+tUZ1lWqcs/efKk02c3Nze1atVKkpSXl1fiPO3atVNQUJAWLFjgVPPZZ5/pu+++U9++fcu0bRfr3LmzYmJiHD+/F+ICAwM1fPhwrVu3TqmpqZIu7KuUlBStW7euWH1mZqbOnz8vSbr77rtlWZamTJlSrK5oXxWdPbx432VlZWnx4sXl3rbSjBgxQqGhoXriiSe0b9++YtOPHTuml156yfH52muvddzXV2ThwoXlflVDTEyM6tSpo2XLlmnZsmXq0KGD06WXQUFB6tatm958880SA+Lx48fLtT4AqI44EwcAqDLR0dEaPny4pk2bptTUVPXs2VMeHh7av3+/li9frtmzZ+uee+6Rv7+/Zs6cqaFDh6p9+/a6//77Vbt2be3Zs0dnz54t9dLIoUOH6tSpU7rlllvUsGFD/fe//9Xf//53RUZG6vrrry9xHg8PD73yyisaPHiwoqOjNWDAAMcrBho1aqSxY8dW5S5xGD16tGbNmqW//e1vWrp0qZ588kmtWrVKt912mwYNGqS2bdsqJydH33zzjVasWKGff/5Z9erVU/fu3fXXv/5Vc+bM0f79+9WrVy/Z7XZt2bJF3bt316hRo9SzZ0/HGcrhw4frzJkzeuuttxQUFFTuM1+lqV27tj7++GP16dNHkZGRevDBB9W2bVtJ0q5du/TBBx+oY8eOjvqhQ4dqxIgRuvvuu9WjRw/t2bNH69atU7169cq1Xg8PD911111aunSpcnJy9OqrrxarmTdvnrp06aKWLVvq4Ycf1jXXXKOMjAylpKTol19+0Z49e/7YxgOAq7ny0ZgAgOqt6HHvX3/99SXr4uPjLV9f31KnL1y40Grbtq3l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cOCANm3apCVLligxMVGJiYnl2g8AAACoRBZcJisry5JkZWVlFZt27tw56z//+Y917ty54jNKpf/06eNc6+NTem10tFOpvV69kuvKKT4+3nJ3d7d8fX0tT09PS5Ll5uZmrVix4pLz9e3b13riiSccn6Ojo60uXbo41bRv39566qmnLMuyrHXr1lk1atSwDh8+7Jj+2WefWZKsjz/+2LIsy1q4cKFVu3Zt68yZM46a1atXW25ublZ6erqj36uvvtoqLCx01DRt2tTq2rWr4/P58+ctX19f64MPPrjkdt9xxx2WZVmW3W63kpKSLE9PT2vcuHGO6cHBwVZeXp5jnnfffddq2rSpZbfbHWN5eXmWt7e3tW7dOsuyLCssLMx69tlnS13vxdv72GOPWbfccovT8kqrLc++OX/+vKOmX79+Vv/+/Utc/iW/twAAANVMfn6+tXLlSis/P9/VrVwyG/wW98ShSnTv3l3z589XTk6OZs6cqRo1aujuu+92TC8sLNTLL7+sDz/8UIcPH1Z+fr7y8vLk4+PjtJxWrVo5fQ4NDdWxY8ckSd99953Cw8MVFhbmmN6xY0en+u+++06tW7eWr6+vY6xz586y2+364YcfFBwcLElq3ry53Nx+PTEdHBysFi1aOD67u7urbt26jnWX5tNPP5Wfn58KCgpkt9t1//33O10C2rJlS6czknv27NGPP/6oWrVqOS0nNzdXBw4c0LFjx3TkyBHdeuutl1xvkUGDBqlHjx5q2rSpevXqpdtuu009e/YssbY8+8bd3d1RExoaqm+++aZM/QAAAKDyEeJMdNE9S8VcdLAtSbpU6HBzvprW+uknZWVny9/f3ynQVISvr6/jkr933nlHrVu31ttvv60hQ4ZIkmbMmKHZs2dr1qxZatmypXx9fTVmzBinSw8lycPDw+mzzWaT3W7/Q72VpKT1VGTdReG1Zs2aCgsLU40azv/ELg5MknTmzBm1bdtW7733XrFl1a9fv9x/D23atNHBgwf12WefacOGDbr33nsVExOjFStWlGs5F7tcfwcAAAAoG0KciX4TBCq1trDwwu8/GOIu5ubmpmeeeUYJCQm6//775e3tra1bt+qOO+7Qgw8+KOnC/W379u3TDTfcUOblXn/99Tp06JCOHj2q0NBQSdK///3vYjWJiYnKyclxBKitW7fKzc3N8WCRynRxeC2L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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "{'precision': 0.001522780666789853,\n", + " 'recall': 0.021875148125325875,\n", + " 'rand_precision': 0.0012862355421199006,\n", + " 'epr': 1.2537787690006579}" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "BenGRN(gwps, do_auc=False).compare_to(to=\"omnipath\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loading GT, omnipath\n", + "intersection of 5727 genes\n", + "intersection pct: 0.6688076608665188\n", + "precision: 0.0029630705065596705 \n", + "recall: 0.042565293643646016 \n", + "random precision: 0.0012862355421199006\n", + "EPR: 0.6443167919241747\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3EAAALCCAYAAABwXVojAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABkVUlEQVR4nO3deVhWdf7/8dcNsiuoIZuSUppWmhQqQhZqKC5N0ZSZ1WhG2mZpaI46BtrGuOWSJlopzkyNpJVfMyMRtU2i3Jp00rQ0Tb1RK0BRFrnP7w9/3OMtoILgzann47q48P6c9znnfY53M+fl2SyGYRgCAAAAAJiCi7MbAAAAAABcPEIcAAAAAJgIIQ4AAAAATIQQBwAAAAAmQogDAAAAABMhxAEAAACAiRDiAAAAAMBECHEAAAAAYCKEOAAAAAAwEUIcAMA0HnroIbVq1apa82zYsEEWi0UbNmyok57Mrnv37urevbv98759+2SxWJSWlua0ngAA50eIAwBUKS0tTRaLxf7j6empa665RiNGjFBubq6z26v3ygNR+Y+Li4uaNm2qvn37Kjs729nt1Yrc3FyNGTNG7dq1k7e3t3x8fBQREaEXX3xReXl5zm4PAH6XGji7AQBA/ff8888rLCxMRUVF+vzzzzV//nytXr1a27dvl7e392Xr4/XXX5fNZqvWPLfeeqtOnTold3f3OurqwgYNGqR+/fqprKxM33//vV577TX16NFDX3/9tTp06OC0vi7V119/rX79+unEiRN68MEHFRERIUnatGmT/v73v+vTTz/VmjVrnNwlAPz+EOIAABfUt29fderUSZL0yCOP6IorrtArr7yi//u//9OgQYMqnaewsFA+Pj612oebm1u153FxcZGnp2et9lFdN910kx588EH751tuuUV9+/bV/Pnz9dprrzmxs5rLy8vTXXfdJVdXV23dulXt2rVzmP7SSy/p9ddfr5V11cV3CQDMjMspAQDV1rNnT0nS3r17JZ25V61hw4b64Ycf1K9fPzVq1EgPPPCAJMlms2nWrFm6/vrr5enpqcDAQD366KP67bffKiz3o48+UkxMjBo1aiRfX1917txZb7/9tn16ZffELV26VBEREfZ5OnTooNmzZ9unV3VP3LJlyxQRESEvLy/5+/vrwQcf1MGDBx1qyrfr4MGDio+PV8OGDdWsWTONGTNGZWVlNd5/t9xyiyTphx9+cBjPy8vTqFGjFBoaKg8PD7Vu3VpTpkypcPbRZrNp9uzZ6tChgzw9PdWsWTP16dNHmzZtstcsXrxYPXv2VEBAgDw8PHTddddp/vz5Ne75XAsWLNDBgwf1yiuvVAhwkhQYGKiJEyfaP1ssFk2aNKlCXatWrfTQQw/ZP5dfwvvJJ5/oiSeeUEBAgFq0aKHly5fbxyvrxWKxaPv27faxnTt36p577lHTpk3l6empTp06aeXKlZe20QBQT3AmDgBQbeXh44orrrCPnT59WnFxcerWrZumT59uv8zy0UcfVVpamoYOHaqnn35ae/fu1dy5c7V161Z98cUX9rNraWlpevjhh3X99ddr/Pjxaty4sbZu3aqMjAzdf//9lfaRmZmpQYMG6bbbbtOUKVMkSd99952++OILjRw5ssr+y/vp3LmzUlJSlJubq9mzZ+uLL77Q1q1b1bhxY3ttWVmZ4uLiFBkZqenTp2vt2rWaMWOGrr76aj3++OM12n/79u2TJDVp0sQ+dvLkScXExOjgwYN69NFHdeWVV2rjxo0aP368Dh8+rFmzZtlrExISlJaWpr59++qRRx7R6dOn9dlnn+nLL7+0nzGdP3++rr/+et1xxx1q0KCBPvjgAz3xxBOy2Wx68skna9T32VauXCkvLy/dc889l7ysyjzxxBNq1qyZkpKSVFhYqP79+6thw4Z65513FBMT41Cbnp6u66+/Xu3bt5ck7dixQzfffLOaN2+ucePGycfHR++8847i4+P17rvv6q677qqTngHgsjEAAKjC4sWLDUnG2rVrjaNHjxoHDhwwli5dalxxxRWGl5eX8fPPPxuGYRhDhgwxJBnjxo1zmP+zzz4zJBlvvfWWw3hGRobDeF5entGoUSMjMjLSOHXqlEOtzWaz/3nIkCFGy5Yt7Z9Hjhxp+Pr6GqdPn65yG9avX29IMtavX28YhmGUlJQYAQEBRvv27R3WtWrVKkOSkZSU5LA+Scbzzz/vsMwbb7zRiIiIqHKd5fbu3WtIMiZPnmwcPXrUsFqtxmeffWZ07tzZkGQsW7bMXvvCCy8YPj4+xvfff++wjHHjxhmurq7G/v37DcMwjHXr1hmSjKeffrrC+s7eVydPnqwwPS4uzrjqqqscxmJiYoyYmJgKPS9evPi829akSROjY8eO5605myQjOTm5wnjLli2NIUOG2D+Xf+e6detW4e910KBBRkBAgMP44cOHDRcXF4e/o9tuu83o0KGDUVRUZB+z2WxGdHS00aZNm4vuGQDqKy6nBABcUGxsrJo1a6bQ0FDdd999atiwod5//301b97coe7cM1PLli2Tn5+fevXqpWPHjtl/IiIi1LBhQ61fv17SmTNqx48f17hx4yrcv2axWKrsq3HjxiosLFRmZuZFb8umTZt05MgRPfHEEw7r6t+/v9q1a6cPP/ywwjyPPfaYw+dbbrlFP/7440WvMzk5Wc2aNVNQUJBuueUWfffdd5oxY4bDWaxly5bplltuUZMmTRz2VWxsrMrKyvTpp59Kkt59911ZLBYlJydXWM/Z+8rLy8v+5/z8fB07dkwxMTH68ccflZ+ff9G9V6WgoECNGjW65OVUZdiwYXJ1dXUYGzhwoI4cOeJwaezy5ctls9k0cOBASdKvv/6qdevW6d5779Xx48ft+/GXX35RXFycdu/eXeGyWQAwGy6nBABc0Lx583TNNdeoQYMGCgwMVNu2beXi4vjvgA0aNFCLFi0cxnbv3q38/HwFBARUutwjR45I+t/lmeWXw12sJ554Qu+884769u2r5s2bq3fv3rr33nvVp0+fKuf56aefJElt27atMK1du3b6/PPPHcbK7zk7W5MmTRzu6Tt69KjDPXINGzZUw4YN7Z+HDx+uAQMGqKioSOvWrdOcOXMq3FO3e/du/ec//6mwrnJn76uQkBA1bdq0ym2UpC+++ELJycnKzs7WyZMnHabl5+fLz8/vvPNfiK+vr44fP35JyzifsLCwCmN9+vSRn5+f0tPTddttt0k6cylleHi4rrnmGknSnj17ZBiGnnvuOT333HOVLvvIkSMV/gECAMyEEAcAuKAuXbrY77WqioeHR4VgZ7PZFBAQoLfeeqvSeaoKLBcrICBA27Zt08cff6yPPvpIH330kRYvXqzBgwdryZIll7TscueeDapM586d7eFQOnPm7eyHeLRp00axsbGSpNtvv12urq4aN26cevToYd+vNptNvXr10tixYytdR3lIuRg//PCDbrvtNrVr106vvPKKQkND5e7urtWrV2vmzJnVfk1DZdq1a6dt27appKTkkl7fUNUDYs4+k1jOw8ND8fHxev/99/Xaa68pNzdXX3zxhV5++WV7Tfm2jRkzRnFxcZUuu3Xr1jXuFwDqA0IcAKDOXH311Vq7dq1uvvnmSg/Kz66TpO3bt1f7ANvd3V1/+tOf9Kc//Uk2m01PPPGEFixYoOeee67SZbVs2VKStGvXLvtTNsvt2rXLPr063nrrLZ06dcr++aqrrjpv/d/+9je9/vrrmjhxojIyMiSd2QcnTpywh72qXH311fr444/166+/Vnk27oMPPlBxcbFWrlypK6+80j5efvlqbfjTn/6k7Oxsvfvuu1W+ZuJsTZo0qfDy75KSEh0+fLha6x04cKCWLFmirKwsfffddzIMw34ppfS/fe/m5nbBfQkAZsU9cQCAOnPvvfeqrKxML7zwQoVpp0+fth/U9+7dW40aNVJKSoqKiooc6gzDqHL5v/zyi8NnFxcX3XDDDZKk4uLiSufp1KmTAgIClJqa6lDz0Ucf6bvvvlP//v0vatvOdvPNNys2Ntb+c6EQ17hxYz366KP6+OOPtW3bNkln9lV2drY+/vjjCvV5eXk6ffq0JOnuu++WYRiaPHlyhbryfVV+9vDsfZefn6/FixdXe9uq8thjjyk4OFijR4/W999/X2H6kSNH9OKLL9o/X3311fb7+sotXLiw2q9qiI2NVdOmTZWenq709HR16dLF4dLLgIAAde/eXQsWLKg0IB49erRa6wOA+ogzcQCAOhMTE6NHH31UKSkp2rZtm3r37i03Nzft3r1by5Yt0+zZs3XPPffI19dXM2fO1COPPKLOnTvr/vvvV5MmTfTNN9/o5MmTVV4a+cgjj+jXX39Vz5491aJFC/3000969dVXFR4ermuvvbbSedzc3DRlyhQNHTpUMTExGjRokP0VA61atdIzzzxTl7vEbuTIkZo1a5b+/ve/a+nSpXr22We1cuVK3X777XrooYcUERGhwsJCffvtt1q+fLn27dsnf39/9ejRQ3/5y180Z84c7d69W3369JHNZtNnn32mHj16aMSIEerdu7f9DOWjjz6qEydO6PXXX1dAQEC1z3xVpUmTJnr//ffVr18/hYeH68EHH1RERIQkacuWLfr3v/+tqKgoe/0jjzyixx57THfffbd69eqlb775Rh9//LH8/f2rtV43Nzf9+c9/1tKlS1VYWKjp06dXqJk3b566deumDh06aNiwYbrqqquUm5ur7Oxs/fzzz/rmm28ubeMBwNmc+WhMAED9Vv6496+//vq8dUOGDDF8fHyqnL5w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5snPz09Lly6Vm5ubJOmaa66xL7tnz54O61q4cKEaN26sTz75RLfffvvl20gAQL1DiAMAoIZ69Oih+fPnq7CwUDNnzlSDBg109913a8eOHTp58qR69erlUF9SUqIbb7xRkrRt2zbdcsst9gB3rtzcXE2cOFEbNmzQkSNHVFZWppMnT2r//v11vl0AgPqNEAcAQA35+PiodevWkqRFixapY8eOevPNN9W+fXtJ0ocffqjmzZs7zOPh4SFJ8vLyOu+yhwwZol9++UWzZ89Wy5Yt5eHhoaioKJWUlNTBlgAAzIQQBwBALXBxcdGECROUmJio77//Xh4eHtq/f79iYmIqrb/hhhu0ZMkSlZaWVno27osvvtBrr72mfv36SZIOHDigY8eO1ek2AADMgQebAABQSwYMGCBXV1ctWLBAY8aM0TPPPKMlS5bohx9+0JYtW/Tqq69qyZIlkqQRI0aooKBA9913nzZt2qTdu3frn//8p3bt2iVJatOmjf75z3/qu+++U05Ojh544IELnr0DAPwxcCYOAIBa0qBBA40YMUJTp07V3r171axZM6WkpOjHH39U48aNddNNN2nChAmSpCuuuELr1q3Ts88+q5iYGLm6uio8PFw333yzJOnNN9/U8OHDddNNNyk0NFQvv/yyxowZ48zNAwDUExbDMAxnNwEAAAAAuDhcTgkAAAAAJkKIAwAAAAATIcQBAAAAgIkQ4gAAAADARAhxAAAAAGAihDgAAAAAMBFCHAAAAACYCCEOAAAAAEyEEAcAAAAAJkKIAwAAAAATIcQBAAAAgIkQ4gAAAADARP4fr+sM55W6LZIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "{'precision': 0.0029630705065596705,\n", + " 'recall': 0.042565293643646016,\n", + " 'rand_precision': 0.0012862355421199006,\n", + " 'epr': 0.6443167919241747}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gwps.varp['GRN'] = gwps.varp['GRN'].T\n", + "BenGRN(gwps, do_auc=False).compare_to(to=\"omnipath\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ml4ig1/Documents code/benGRN/bengrn/base.py:665: RuntimeWarning: divide by zero encountered in log10\n", + " thresholds = np.logspace(np.log10(grn.min()), np.log10(grn.max()), 50)\n", + "/home/ml4ig1/miniconda3/envs/scprint/lib/python3.10/site-packages/numpy/core/function_base.py:151: RuntimeWarning: invalid value encountered in multiply\n", + " y *= step\n", + "/home/ml4ig1/miniconda3/envs/scprint/lib/python3.10/site-packages/numpy/core/function_base.py:161: RuntimeWarning: invalid value encountered in add\n", + " y += start\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "precision: 0.01108829568788501 \n", + "recall: 0.020785219399538105 \n", + "random precision: 0.00979697115964764\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/99 [00:00 threshold).sum() / (grn > threshold).sum()\n", + "100%|██████████| 99/99 [00:00<00:00, 1061.81it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Area Under Precision-Recall Curve (AUPRC): 0.010340817326264214\n", + "EPR: 0.7824397043431892\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA18AAALCCAYAAAAhyWlAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABfXklEQVR4nO3dfVhUdf7/8dcM96CAioAoqaVpqcmGSpgt3aAotkW3araia2ZblkbmautNt+t2Y6lpmrub2l6Vpm3+XDOT0LZS1vJ2s2+Wlq6mApoJCgIDc35/zDIycTcgnEF4Pq5rLp0z7znnc0ac48vzOe9jMQzDEAAAAACgQVk9PQAAAAAAaA4IXwAAAABgAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJCF8AAAAAYALCFwAAAACYgPAFAAAAACYgfAEAAACACQhfAIAGN3r0aHXq1KlW7/nkk09ksVj0ySefNMiYLnbXX3+9rr/+eufzQ4cOyWKxaNmyZR4bEwCgeoQvAGiCli1bJovF4nz4+/vr8ssv14QJE5Sdne3p4TV6ZUGm7GG1WtW6dWsNGTJEmZmZnh5evcjOztbkyZPVvXt3BQYGKigoSLGxsXr22Wd1+vRpTw8PAJokb08PAADQcJ5++ml17txZhYWF+vzzz7Vo0SKtX79ee/fuVWBgoGnj+Mtf/iK73V6r9/z617/WuXPn5Ovr20CjqtmIESOUnJys0tJSfffdd3rttdd0ww036Msvv1SvXr08Nq4L9eWXXyo5OVlnz57Vvffeq9jYWEnS9u3b9ec//1mffvqpNm7c6OFRAkDTQ/gCgCZsyJAh6tOnjyTpvvvuU5s2bfTyyy/r//2//6cRI0ZU+p78/HwFBQXV6zh8fHxq/R6r1Sp/f/96HUdtXX311br33nudz6+77joNGTJEixYt0muvvebBkdXd6dOnddttt8nLy0u7du1S9+7dXV5/7rnn9Je//KVettUQP0sAcDFj2iEANCM33nijJOngwYOSHNditWjRQt9//72Sk5PVsmVLjRw5UpJkt9s1d+5c9ejRQ/7+/oqIiND48eP1888/V1jvhx9+qISEBLVs2VLBwcHq27ev3n77befrlV3ztWLFCsXGxjrf06tXL82bN8/5elXXfK1atUqxsbEKCAhQWFiY7r33Xh09etSlpmy/jh49qpSUFLVo0UJt27bV5MmTVVpaWufP77rrrpMkff/99y7LT58+rUmTJik6Olp+fn7q0qWLnn/++Qpn++x2u+bNm6devXrJ399fbdu21eDBg7V9+3ZnzdKlS3XjjTcqPDxcfn5+uvLKK7Vo0aI6j/mXXn/9dR09elQvv/xyheAlSREREZo+fbrzucVi0ZNPPlmhrlOnTho9erTzedlU13/961968MEHFR4erg4dOmj16tXO5ZWNxWKxaO/evc5l+/bt05133qnWrVvL399fffr00dq1ay9spwGgkeDMFwA0I2WhoU2bNs5lJSUlSkpK0oABA/TSSy85pyOOHz9ey5Yt05gxY/TII4/o4MGDWrBggXbt2qUtW7Y4z2YtW7ZMv/vd79SjRw9NmzZNoaGh2rVrlzZs2KB77rmn0nGkp6drxIgRuummm/T8889Lkr755htt2bJFEydOrHL8ZePp27evZs+erezsbM2bN09btmzRrl27FBoa6qwtLS1VUlKS4uLi9NJLL+njjz/WnDlzdNlll+n3v/99nT6/Q4cOSZJatWrlXFZQUKCEhAQdPXpU48eP1yWXXKKtW7dq2rRpOn78uObOneusHTt2rJYtW6YhQ4bovvvuU0lJiT777DP9+9//dp6hXLRokXr06KFbbrlF3t7e+uc//6kHH3xQdrtdDz30UJ3GXd7atWsVEBCgO++884LXVZkHH3xQbdu21cyZM5Wfn6+hQ4eqRYsWevfdd5WQkOBSu3LlSvXo0UM9e/aUJH399de69tpr1b59e02dOlVBQUF69913lZKSovfee0+33XZbg4wZAExjAACanKVLlxqSjI8//tg4ceKEceTIEWPFihVGmzZtjICAAOPHH380DMMwUlNTDUnG1KlTXd7/2WefGZKMt956y2X5hg0bXJafPn3aaNmypREXF2ecO3fOpdZutzt/n5qaanTs2NH5fOLEiUZwcLBRUlJS5T5s3rzZkGRs3rzZMAzDKC4uNsLDw42ePXu6bGvdunWGJGPmzJku25NkPP300y7r/NWvfmXExsZWuc0yBw8eNCQZTz31lHHixAkjKyvL+Oyzz4y+ffsakoxVq1Y5a5955hkjKCjI+O6771zWMXXqVMPLy8s4fPiwYRiGsWnTJkOS8cgjj1TYXvnPqqCgoMLrSUlJxqWXXuqyLCEhwUhISKgw5qVLl1a7b61atTJ69+5dbU15koxZs2ZVWN6xY0cjNTXV+bzsZ27AgAEV/lxHjBhhhIeHuyw/fvy4YbVaXf6MbrrpJqNXr15GYWGhc5ndbjf69+9vdO3a1e0xA0BjxbRDAGjCEhMT1bZtW0VHR2v48OFq0aKF3n//fbVv396l7pdnglatWqWQkBANHDhQJ0+edD5iY2PVokULbd68WZLjDNaZM2c0derUCtdnWSyWKscVGhqq/Px8paenu70v27dvV05Ojh588EGXbQ0dOlTdu3fXBx98UOE9DzzwgMvz6667Tj/88IPb25w1a5batm2ryMhIXXfddfrmm280Z84cl7NGq1at0nXXXadWrVq5fFaJiYkqLS3Vp59+Kkl67733ZLFYNGvWrArbKf9ZBQQEOH+fm5urkydPKiEhQT/88INyc3PdHntV8vLy1LJlywteT1XGjRsnLy8vl2XDhg1TTk6OyxTS1atXy263a9iwYZKkU6dOadOmTbr77rt15swZ5+f4008/KSkpSfv3768wvRQALjZMOwSAJmzhwoW6/PLL5e3trYiICHXr1k1Wq+v/u3l7e6tDhw4uy/bv36/c3FyFh4dXut6cnBxJ56cxlk0bc9eDDz6od999V0OGDFH79u01aNAg3X333Ro8eHCV7/nvf/8rSerWrVuF17p3767PP//cZVnZNVXltWrVyuWatRMnTrhcA9aiRQu1aNHC+fz+++/XXXfdpcLCQm3atEnz58+vcM3Y/v379Z///KfCtsqU/6yioqLUunXrKvdRkrZs2aJZs2YpMzNTBQUFLq/l5uYqJCSk2vfXJDg4WGfOnLmgdVSnc+fOFZYNHjxYISEhWrlypW666SZJjimHMTExuvzyyyVJBw4ckGEYmjFjhmbMmFHpunNycir8xwEAXEwIXwDQhPXr1895LVFV/Pz8KgQyu92u8PBwvfXWW5W+p6qg4a7w8HDt3r1bH330kT788EN9+OGHWrp0qUaNGqXly5df0LrL/PLsS2X69u3rDHWS40xX+eYSXbt2VWJioiTp5ptvlpeXl6ZOnaobbrjB+bna7XYNHDhQU6ZMqXQbZeHCHd9//71uuukmde/eXS+//LKio6Pl6+ur9evX65VXXql1u/7KdO/eXbt371ZxcfEFtfGvqnFJ+TN3Zfz8/JSSkqL3339fr732mrKzs7Vlyxb96U9/ctaU7dvkyZOVlJRU6bq7dOlS5/ECQGNA+AIAVHDZZZfp448/1rXXXlvpP6bL10nS3r17a/0PY19fX/3mN7/Rb37zG9ntdj344IN6/fXXNWPGjErX1bFjR0nSt99+6+zaWObbb791vl4bb731ls6dO+d8fumll1Zb/8c//lF/+ctfNH36dG3YsEGS4zM4e/asM6RV5bLLLtNHH32kU6dOVXn265///KeKioq0du1aXXLJJc7lZdM868NvfvMbZWZm6r333qvydgPltWrVqsJNl4uLi3X8+PFabXfYsGFavny5MjIy9M0338gwDOeUQ+n8Z+/j41PjZwkAFyuu+QIAVHD33XertLRUzzzzTIXXSkpKnP8YHzRokFq2bKnZs2ersLDQpc4wjCrX/9NPP7k8t1qtuuqqqyRJRUVFlb6nT58+Cg8P1+LFi11qPvzwQ33zzTcaOnSoW/tW3rXXXqvExETno6bwFRoaqvHjx+ujjz7S7t27JTk+q8zMTH300UcV6k+fPq2SkhJJ0h133CHDMPTUU09VqCv7rMrO1pX/7HJzc7V06dJa71tVHnjgAbVr106PPfaYvvvuuwqv5+Tk6Nlnn3U+v+yyy5zXrZVZsmRJrVv2JyYmqnXr1lq5cqVWrlypfv36uUxRDA8P1/XXX6/XX3+90mB34sSJWm0PABojznwBACpISEjQ+PHjNXv2bO3evVuDBg2Sj4+P9u/fr1WrVmnevHm68847FRwcrFdeeUX33Xef+vbtq3vuuUetWrXSnj17VFBQUOUUwvvuu0+nTp3SjTfeqA4dOui///2vXn31VcXExOiKK66o9D0+Pj56/vnnNWbMGCUkJGjEiBHOVvOdOnXSo48+2pAfidPEiRM1d+5c/fnPf9aKFSv0+OOPa+3atbr55ps1evRoxcbGKj8/X1999ZVWr16tQ4cOKSwsTDfccIN++9vfav78+dq/f78GDx4su92uzz77TDfccIMmTJigQYMGOc8Ijh8/XmfPntVf/vIXhYeH1/pMU1VatWql999/X8nJyYqJidG9996r2NhYSdLOnTv1zjvvKD4+3ll/33336YEHHtAdd9yhgQMHas+ePfroo48UFhZWq+36+Pjo9ttv14oVK5Sfn6+XXnqpQs3ChQs1YMAA9erVS+PGjdOll16q7OxsZWZm6scff9SePXsubOcBwNM82WoRANAwytp+f/nll9XWpaamGkFBQVW+vmTJEiM2NtYICAgwWrZsafTq1cuYMmWKcezYMZe6tWvXGv379zcCAgKM4OBgo1+/fsY777zjsp3yreZXr15tDBo0yAgPDzd8fX2NSy65xBg/frxx/PhxZ80vW82XWblypfGrX/3K8PPzM1q3bm2MHDnS2Tq/pv2aNWuW4c6hr6xt+4svvljp66NHjza8vLyMAwcOGIZhGGfOnDGmTZtmdOnSxfD19TXCwsKM/v37Gy+99JJRXFzsfF9JSYnx4osvGt27dzd8fX2Ntm3bGkOGDDF27Njh8lleddVVhr+/v9GpUyfj+eefN9544w1DknHw4EFnXV1bzZc5duyY8eijjxqXX3654e/vbwQGBhqxsbHGc889Z+Tm5jrrSktLjT/84Q9GWFiYERgYaCQlJRkHDhyostV8dT9z6enphiTDYrEYR44cqbTm+++/N0aNGmVERkYaPj4+Rvv27Y2bb77ZWL16tVv7BQCNmcUwqpkXAgAAAACoF1zzBQAAAAAmIHwBAAAAgAkIXwAAAABgAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJuMlyHdntdh07dkwtW7aUxWLx9HAAAAAAeIhhGDpz5oyioqJktVZ9fovwVUfHjh1TdHS0p4cBAAAAoJE4cuSIOnToUOXrhK86atmypSTHBxwcHOzh0QCAuWw2mzZu3KhBgwbJx8fH08MBADRDjelYlJeXp+joaGdGqArhq47KphoGBwcTvgA0OzabTYGBgQoODvb4AQ8A0Dw1xmNRTZcj0XADAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAAAAATED4AgAAAAATEL4AAAAAwASELwAAAAAwAeELAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAAAAATED4AgAAAAATeHt6ALhwFsv53xuG58YBAAAAoGqc+brIlQ9elT0HAAAA0Dhw5usC9exZ9Zmnhv79iROVj8likWbMkCIipMhIx6Ps9y1aVL8/AAAAABoG4esCHTni6RFU7plnKl8eFOQaxqr6fUSE5O9v7pgBAACApozwdYE2bXKcTSp/9sus3/fsWfW4HnxQyspyPLKzpePHpYICKT9f+v57x6MmISHnQ1l1ga1tW8nHp+b1AQAAAM0Z4esCxcZKwcGe2bZhVH6NV1VNN86ePR/Gygezyn5fXCzl5joe335b81jCwmoOaRERjjorVxoCAACgGSJ8XeR+GcCq63bYooXUpYvjUdM6c3PPB7HqQlpOjlRaKp086Xjs3Vv9ur28pPBw96Y+hobSQAQAAABNB+GrCajv9vIWiyP4hIZK3btXX2u3Sz/9VHNIy852NAgpLXVMgTx+vOZx+Pq6hrLqAhuNRAAAANDYEb5wQaxWxzVfbdtKvXpVX2uzOQKYO1MfT592TH08csS9piaBge6FNBqJAAAAwFMIXzCNj48UFeV41KSw0DGl0Z2pj/n5jmYiP/zgeNSkrJFITWfVwsNpJAIAAID6Q/hCo+TvL11yieNRk7Nn3Wsikp0tFRXVvpGIO1MfaSQCAACAmhC+cNFr0cLxuOyy6ut+2UikupCWne3aSOTrr6tft5eXY+qlO1MfaSQCAADQPBG+0GzUpZFI+VBWVWA7edIR1MqW16R8I5Gazqr98h5yAAAAuHgRvoBKlG8kUt3NrCWppOR8I5GazqrVtZFITSEtIkIKCKiXXQcAAEADIXwBF8jbW2rXzvGoyS8biVQ39fHs2do3EnHn+jQaiQAAAHgG4QswUV0bidTUUKR8I5Hvvqt53W3aVB7Qfvm8TRvH9WwAAAC4cIQvoJGqbSMRd65PK2sk8tNPjkdNjUSsVseZMnemPrZqxfVpAAAA1SF8ARe58o1EunWrvtZul06dcu/6tJMnHfW1bSRSVZfH8s9pJAIAAJojwhfQjFitjnuShYXVrpFITWfVfv659o1E3AlpNBIBAABNCeELQKVq00ikqOj8/dFqOqtW1kjk4EHHoybBwe5dn0YjEQAA0NgRvgBcMD8/9xuJ5Oe7F9LKGonk5TketWkkUtP1aWFhNBIBAADmI3wBMFVQkHTppY5HdQzDEboqC2W/fJ6T45gmWdtGIu5MfaSRCAAAqC+ELwCNksXiuHdZSEjtGonUdFbtxAnXRiJ79lS/bh+fqkPaLwMbjUQAAEB1CF8ALnp1aSTiztTHn3+WbDbpxx8dj5oEBLgX0mgkAgBA80T4AtCs1LaRSE6Oe1Mfz56Vzp2rfSORmkJaeLijjT8AALj4Eb4AoAp+flJ0tONRk/KNRKoLaXVtJOLO1EcaiQAA0LgRvgCgHtSlkUhNUx+zs10bifzf/1W/bqtVatvWvamPNBIBAMB8hC8AMFFdGom4c31aWSORstBWm0YiNU19bNmSoAYAQH0gfAFAI1W+kUiPHtXXlpRIJ0+6d31aXRuJuE5xtOrkyU6y2Szq0OH8azQSAQCgaoQvAGgCvL3PB6OalG8kUtNZtTNnqmok4iWptxYvdl13cLB716fRSAQA0BwRvgCgmalLI5FfhrJjx0q1Z0+OpAjl5FiVlSUVFp5vJLJ/f83rbt265pAWEeG4jo1GIgCApoDwBQCoUlWNRGw2u9av/0LJycny8bE6G4lUdj3aL5+XNRI5dcrxqE0jkZquT2vdmuvTAACNF+ELAHDByjcSufzy6mvtdsd1Z+5cn/bLRiI1KWsk4s7URxqJAADMRvgCAJjKanXcu6xNm9o1EqnprNqpU7VvJOJOSIuIkAID62ffAQDNG+ELANBo1aWRiDtTH8saiRw65HjUpGVL90JaRASNRAAAVSN8AQCahNo0EikocC+klTUSOXPG8ahNI5GazqrRSAQAmh/CFwCg2QkMlDp3djyqYxiO0FXdDa7LP69LIxF3pj7SSAQAmgbCFwAAVbBYHPcuCw6uXSORmkJaTo5rI5H//Kf6dfv4OO6N5s7Ux+BgghoANFaELwAA6kFdGolUFdLK/76skcjRo45HTfz93QtpkZE0EgEAsxG+AAAwWflGIr17V19bXOw4U+bO1MczZxzXqNW2kUhNIY1GIgBQPwhfAAA0Yr6+UocOjkdNyjcSqS6k1bWRiDvXp9FIBACqRvgCAKCJqEsjEXe6PpZvJPLNN9Wv22JxBDB3pj62bu2YrgkAzQXhCwCAZqYujUTcuT7txAlHfU6O41FTIxFvb9epjdUFNhqJAGgKCF8AAKBK5RuJXHll9bWlpY5GIu5cn3bqlOOMWm0aiZQPZdUFNhqJAGisCF8AAKBeeHk5QlBERO0aidQ09TEvz3GN2n//63jUpEUL90JaeLjj5twAYBbCFwAAMF1dGom4M/Xx3Dnp7FnpwAHHoyatWrl3fVrbto5pkgBwIfgaAQAAjVptG4m4E9Kysx33T/v5Z8fD3UYi7kx9pJEIgKoQvgAAQJNQvpFI167V1xqGI3S5E9JyclwbiXz1VfXr9vZ2TGl0Z+ojjUSA5oXwBQAAmh2LxXGGqnXr2jUSqen6tJ9+cjQSOXbM8aiJn1/loayywBYUVD/7DsBzCF8AAADVKN9IpCZljUTcmfqYlycVFdW+kUhNIS0igkYiQGNF+AIAAKgntWkkcu6ceyGtro1E3Lk+jUYigLn46wYAAOABAQFSp06OR3UMwxG83Lk+LSvLtZHIvn3Vr9tikcLC3Ls+jUYiwIUjfAEAADRiFovUsqXjUZtGIjWFtLJGIidOOB61aSRS01m1kBAaiQCVIXwBAAA0EXVpJOLO1Me6NhJxZ+ojjUTQnHg8fC1cuFAvvviisrKy1Lt3b7366qvq169flfWrVq3SjBkzdOjQIXXt2lXPP/+8kpOTna//4x//0OLFi7Vjxw6dOnVKu3btUkxMjMs6CgsL9dhjj2nFihUqKipSUlKSXnvtNUW4cyUtAABAE1C+kchVV1Vfa7M5zpS5M/UxN7f2jUSqmupY/jmNRNAUeDR8rVy5UmlpaVq8eLHi4uI0d+5cJSUl6dtvv1V4eHiF+q1bt2rEiBGaPXu2br75Zr399ttKSUnRzp071bNnT0lSfn6+BgwYoLvvvlvjxo2rdLuPPvqoPvjgA61atUohISGaMGGCbr/9dm3ZsqVB9xcAAOBi5OMjtW/veNSkfCOR6kLa8ePnG4mcPSt9/33N6w4Nda81P41E0FhZDMMwPLXxuLg49e3bVwsWLJAk2e12RUdH6+GHH9bUqVMr1A8bNkz5+flat26dc9k111yjmJgYLV682KX20KFD6ty5c4UzX7m5uWrbtq3efvtt3XnnnZKkffv26YorrlBmZqauueYat8ael5enkJAQ5ebmKjg4uLa7DgAXNZvNpvXr1ys5OVk+Pj6eHg6Ai1BZI5HK7pdW2e9tNvfXXb6RSE1TH9u0oZHIxaoxHYvczQYe+z+B4uJi7dixQ9OmTXMus1qtSkxMVGZmZqXvyczMVFpamsuypKQkrVmzxu3t7tixQzabTYmJic5l3bt31yWXXFJt+CoqKlJRUZHzeV5eniTHH7qtNt8GANAElH3v8f0H4EL4+0sdOzoe1SlrJJKdLWVnW/7XMMTyv4Bm+d+USIuys8saiVjcbiTi5WUoIqKsmYjxv6mY53+NjJTCwx2/0kikcWlMxyJ3x+Cx8HXy5EmVlpZWuM4qIiJC+6roi5qVlVVpfVZWltvbzcrKkq+vr0JDQ2u1ntmzZ+upp56qsHzjxo0KDAx0e/sA0JSkp6d7eggAmqHgYMejS5eKr5WWSmfO+Or0aX/9/LOfTp/2c/4+N9dPP//s/79lfsrL81NpqaVcI5Hqk5WPT6lCQ4sUGlqkVq0KFRJSpFatihQaWvi/X8//3t+/tEH2HRU1hmNRQUGBW3XMhnXTtGnTXM665eXlKTo6WoMGDWLaIYBmx2azKT09XQMHDvT4VA8AqCubzaacnPNn1BzTHF3PpJUtz821yGbz0okTgTpxoub/eA8KMv43tdFwOasWGWmUa9lv0EjkAjSmY1HZrLiaeCx8hYWFycvLS9nZ2S7Ls7OzFRkZWel7IiMja1Vf1TqKi4t1+vRpl7NfNa3Hz89PfpX8zfDx8fH4HzYAeArfgQAuZj4+7t3oWnI0Bynf8bG669MKCqT8fIu+/176/vua5ymWNRKpqetjeDiNRCrTGI5F7m7fY398vr6+io2NVUZGhlJSUiQ5Gm5kZGRowoQJlb4nPj5eGRkZmjRpknNZenq64uPj3d5ubGysfHx8lJGRoTvuuEOS9O233+rw4cO1Wg8AAACaj4AA965PkxyNRNwJadnZUnGxdPq041HFlTdOZY1E3GnNTyORxsmj2TktLU2pqanq06eP+vXrp7lz5yo/P19jxoyRJI0aNUrt27fX7NmzJUkTJ05UQkKC5syZo6FDh2rFihXavn27lixZ4lznqVOndPjwYR373x0Av/32W0mOM16RkZEKCQnR2LFjlZaWptatWys4OFgPP/yw4uPj3e50CAAAAFSlRQvH9WiVXZNWnmE4Qpc7IS07W7Lb5Wwksndv9ev28pJzemNNXR9pJGIej4avYcOG6cSJE5o5c6aysrIUExOjDRs2OJtqHD58WNZykb1///56++23NX36dD3xxBPq2rWr1qxZ47zHlyStXbvWGd4kafjw4ZKkWbNm6cknn5QkvfLKK7JarbrjjjtcbrIMAAAAmMVikVq1cjyuuKL62tJS6aef3GvNf/Kko/74ccejJr6+Vbfi/2Vga9Gifva9ufLofb4uZtznC0Bz1pjurQIAcGWzOc6OuTP1MTe3dusOCnIvpEVEOG4l0JAa07Go0d/nCwAAAED98/GRoqIcj5oUFlY/3bF8gHM0EtH/GonUvO7QUPeuT2vb1jHm2vrxR+mrr8J01VVS5861f78nEL7qS3Fx9bde9/d3TL6VHHXFxVXX+vmdb2VTm9qSEqncjaAr8PU9/5Ndm9rSUsffzKr4+Djqa1trtztaB9VHrbf3+T6thuH4dqiPWi8v1/+2yc+vn1qr1XHlbl1qCwoc466MxSKVv+9cbWrPnXN8zlUJCqpbbWGh4+eiPmoDA89PSi8qcvwc10dtQMD5q5Jr+rtcm9ryf++b2ndE+YsD+I44/5zviNrX8h1R+9qL4TuCf0c4XATfEf6SOoY5HupV/XfE2bNy3sg6O8eioz8HOkPaqaPnlJNld7buL7ZJxaelI6elI99KBQoqt81zsur8d4RFjgYhZWfMQqKCnAGtXatCRbYtdb5W1khk+XJpwgRDZ41rNWuWoSVLpLFjq/4YGg0DdZKbm2tIMnJzcx0LXnjBMBw/npU/Nm8+/+YFC6qvXbfufO3SpdXXvvvu+dp3362+dunS87Xr1lVfu2DB+drNm6uvfeGF87VffFF97axZ52v37q2+dvLk87UHD1Zf++CD52tzcqqvTU09X3v2bPW1d97p+gdfXW1ysmttYGDVtQkJrrVhYVXX9unjWtuxY9W1V17pWnvllVXXduzoWtunT9W1YWGutQkJVdcGBrrWJidX/7mVd+ed1deePXu+NjW1+tqcnPO1Dz5Yfe3Bg+drJ0+uvnbv3vO1s2ZVX/vFF+drm9h3RMm8ecaaNWuM4uJiviPKq66W7wjHg++I848m/B3BvyP+9+A7wjAk41zLMOOVVwxj6lTDGD3aMPa0Sqiy9qwCXX+cVf13RNlvvbwM48gRw2MqZIMqcOYLAAAAQIPx95PK3SlKul7Svyqv9fOVXnzu/FTHsA2Sfqp5G6Wl0oEDUocOFzzcBkXDjTqqcFEd0wVqX8t0gbrVMqXI8XumFNW+th6/I2wWi9anpzsucrZa+Y4ow3dE7Wv5jqh97UXwHcG/I/6H74jz6uE7wmZzdHL86ivp9tslQ+enM3p5SYcOeS58udtwg/BVR3Q7BNCcNaYOUwCA5udvf5PGjzdUWmqRl5eh11+3ePSaL3ezAfe9BgAAAHBRGTtW2r+/RM8887n27y+5OJptiPAFAAAA4CLUoYPUq9dPjf46r/IIXwAAAABgAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJCF8AAAAAYALCFwAAAACYgPAFAAAAACYgfAEAAACACQhfAAAAAGACwhcAAAAAmIDwBQAAAAAmIHwBAAAAgAkIXwAAAABgAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJCF8AAAAAYALCFwAAAACYgPAFAAAAACYgfAEAAACACQhfAAAAAGACwhcAAAAAmIDwBQAAAAAmIHwBAAAAgAkIXwAAAABgAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJCF8AAAAAYALCFwAAAACYgPAFAAAAACYgfAEAAACACQhfAAAAAGACwhcAAAAAmIDwBQAAAAAmIHwBAAAAgAkIXwAAAABgAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJCF8AAAAAYALCFwAAAACYgPAFAAAAACYgfAEAAACACQhfAAAAAGACwhcAAAAAmIDwBQAAAAAmIHwBAAAAgAkIXwAAAABgAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJCF8AAAAAYALCFwAAAACYgPAFAAAAACYgfAEAAACACQhfAAAAAGACwhcAAAAAmIDwBQAAAAAmIHwBAAAAgAkIXwAAAABgAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJCF8AAAAAYALCFwAAAACYgPAFAAAAACYgfAEAAACACQhfAAAAAGACwhcAAAAAmIDwBQAAAAAmIHwBAAAAgAkIXwAAAABgAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJCF8AAAAAYALCFwAAAACYgPAFAAAAACYgfAEAAACACQhfAAAAAGACwhcAAAAAmMDj4WvhwoXq1KmT/P39FRcXpy+++KLa+lWrVql79+7y9/dXr169tH79epfXDcPQzJkz1a5dOwUEBCgxMVH79+93qfnuu+906623KiwsTMHBwRowYIA2b95c7/sGAAAAAGU8Gr5WrlyptLQ0zZo1Szt37lTv3r2VlJSknJycSuu3bt2qESNGaOzYsdq1a5dSUlKUkpKivXv3OmteeOEFzZ8/X4sXL9a2bdsUFBSkpKQkFRYWOmtuvvlmlZSUaNOmTdqxY4d69+6tm2++WVlZWQ2+zwAAAACaJ4thGIanNh4XF6e+fftqwYIFkiS73a7o6Gg9/PDDmjp1aoX6YcOGKT8/X+vWrXMuu+aaaxQTE6PFixfLMAxFRUXpscce0+TJkyVJubm5ioiI0LJlyzR8+HCdPHlSbdu21aeffqrrrrtOknTmzBkFBwcrPT1diYmJbo09Ly9PISEhys3NVXBw8IV+FABwUbHZbFq/fr2Sk5Pl4+Pj6eEAAJqhxnQscjcbeJs4JhfFxcXasWOHpk2b5lxmtVqVmJiozMzMSt+TmZmptLQ0l2VJSUlas2aNJOngwYPKyspyCVAhISGKi4tTZmamhg8frjZt2qhbt2568803dfXVV8vPz0+vv/66wsPDFRsbW+V4i4qKVFRU5Hyel5cnyfGHbrPZar3/AHAxK/ve4/sPAOApjelY5O4YPBa+Tp48qdLSUkVERLgsj4iI0L59+yp9T1ZWVqX1ZdMFy36trsZisejjjz9WSkqKWrZsKavVqvDwcG3YsEGtWrWqcryzZ8/WU089VWH5xo0bFRgYWMPeAkDTlJ6e7ukhAACaucZwLCooKHCrzmPhy1MMw9BDDz2k8PBwffbZZwoICNBf//pX/eY3v9GXX36pdu3aVfq+adOmuZx1y8vLU3R0tAYNGsS0QwDNjs1mU3p6ugYOHOjxqR4AgOapMR2LymbF1cRj4SssLExeXl7Kzs52WZ6dna3IyMhK3xMZGVltfdmv2dnZLiEqOztbMTExkqRNmzZp3bp1+vnnn52h6bXXXlN6erqWL19e6bVmkuTn5yc/P78Ky318fDz+hw0AnsJ3IADA0xrDscjd7Xus26Gvr69iY2OVkZHhXGa325WRkaH4+PhK3xMfH+9SLzlOM5bVd+7cWZGRkS41eXl52rZtm7Om7JSg1eq661arVXa7/cJ3DAAAAAAq4dFph2lpaUpNTVWfPn3Ur18/zZ07V/n5+RozZowkadSoUWrfvr1mz54tSZo4caISEhI0Z84cDR06VCtWrND27du1ZMkSSY7ruSZNmqRnn31WXbt2VefOnTVjxgxFRUUpJSVFkiPAtWrVSqmpqZo5c6YCAgL0l7/8RQcPHtTQoUM98jkAAAAAaPo8Gr6GDRumEydOaObMmcrKylJMTIw2bNjgbJhx+PBhlzNU/fv319tvv63p06friSeeUNeuXbVmzRr17NnTWTNlyhTl5+fr/vvv1+nTpzVgwABt2LBB/v7+khzTHTds2KA//vGPuvHGG2Wz2dSjRw/9v//3/9S7d29zPwAAAAAAzYZH7/N1MeM+XwCas8Z0bxUAQPPUmI5F7mYDj13zBQAAAADNCeELAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAAAAATED4AgAAAAATEL4AAAAAwASELwAAAAAwAeELAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAAAAATED4AgAAAAATEL4AAAAAwASELwAAAAAwAeELAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAAAAATED4AgAAAAATEL4AAAAAwASELwAAAAAwAeELAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAAAAATED4AgAAAAATEL4AAAAAwASELwAAAAAwAeELAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAAAAATED4AgAAAAATEL4AAAAAwASELwAAAAAwAeELAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAAAAATED4AgAAAAATEL4AAAAAwASELwAAAAAwAeELAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAAAAATED4AgAAAAATEL4AAAAAwASELwAAAAAwAeELAAAAAExA+AIAAAAAExC+AAAAAMAEhC8AAAAAMAHhCwAAAABMUKfwVVpaqr/97W+65557lJiYqBtvvNHlURsLFy5Up06d5O/vr7i4OH3xxRfV1q9atUrdu3eXv7+/evXqpfXr17u8bhiGZs6cqXbt2ikgIECJiYnav39/hfV88MEHiouLU0BAgFq1aqWUlJRajRsAAAAAaqNO4WvixImaOHGiSktL1bNnT/Xu3dvl4a6VK1cqLS1Ns2bN0s6dO9W7d28lJSUpJyen0vqtW7dqxIgRGjt2rHbt2qWUlBSlpKRo7969zpoXXnhB8+fP1+LFi7Vt2zYFBQUpKSlJhYWFzpr33ntPv/3tbzVmzBjt2bNHW7Zs0T333FOXjwIAAAAA3GIxDMOo7ZvC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o379+mnu3LnKz893dpgCAKC+NeVjk8UwDMPTgwAAeMYnn3yiG264ocLy1NRULVu2TJK0YMECvfjii8rKylJMTIzmz5+vuLg4k0cKAGgumvKxifAFAAAAACbgmi8AAAAAMAHhCwAAAABMQPgCAAAAABMQvgAAAADABIQvAAAAADAB4QsAAAAATED4AgAAAAATEL4AAAAAwASELwAAPMBisWjNmjWSpEOHDslisWj37t0eHRMAoGERvgAAzc7o0aNlsVhksVjk4+Ojzp07a8qUKSosLPT00AAATZi3pwcAAIAnDB48WEuXLpXNZtOOHTuUmpoqi8Wi559/3tNDAwA0UZz5AgA0S35+foqMjFR0dLRSUlKUmJio9PR0SZLdbtfs2bPVuXNnBQQEqHfv3lq9erXL+7/++mvdfPPNCg4OVsuWLXXdddfp+++/lyR9+eWXGjhwoMLCwhQSEqKEhATt3LnT9H0EADQuhC8AQLO3d+9ebd26Vb6+vpKk2bNn680339TixYv19ddf69FHH9W9996rf/3rX5Kko0eP6te//rX8/Py0adMm7dixQ7/73e9UUlIiSTpz5oxSU1P1+eef69///re6du2q5ORknTlzxmP7CADwPKYdAgCapXXr1qlFixYqKSlRUVGRrFarFixYoKKiIv3pT3/Sxx9/rPj4eEnSpZdeqs8//1yvv/66EhIStHDhQoWEhGjFihXy8fGRJF1++eXOdd94440u21qyZIlCQ0P1r3/9SzfffLN5OwkAaFQIXwCAZumGG27QokWLlJ+fr1deeUXe3t6644479PXXX6ugoEADBw50qS8uLtavfvUrSdLu3bt13XXXOYPXL2VnZ2v69On65JNPlJOTo9LSUhUUFOjw4cMNvl8AgMaL8AUAaJaCgoLUpUsXSdIbb7yh3r17629/+5t69uwpSfrggw/Uvn17l/f4+flJkgICAqpdd2pqqn766SfNmzdPHTt2lJ+fn+Lj41VcXNwAewIAuFgQvgAAzZ7VatUTTzyhtLQ0fffdd/Lz89Phw4eVkJBQaf1VV12l5cuXy2azVXr2a8uWLXrttdeUnJwsSTpy5IhOnjzZoPsAAGj8aLgBAICku+66S15eXnr99dc1efJkPfroo1q+fLm+//577dy5U6+++qqWL18uSZowYYLy8vI0fPhwbd++Xfv379ff//53ffvtt5Kkrl276u9//7u++eYbbdu2TSNHjqzxbBkAoOnjzBcAAJK8vb01YcIEvfDCCzp48KDatm2r2bNn64cfflBoaKiuvvpqPfHEE5KkNm3aaNOmTXr88ceVkJAgLy8vxcTE6Nprr5Uk/e1vf9P999+vq6++WtHR0frTn/6kyZMne3L3AACNgMUwDMPTgwAAAACApo5phwAAAABgAsIXAAAAAJiA8AUAAAAAJiB8AQAAAIAJCF8AAAAAYALCFwAAAACYgPAFAAAAACYgfAEAAACACQhfAAAAAGACwhcAAAAAmIDwBQAAAAAmIHwBAAAAgAn+Pz2fy/wMRVs0AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "{'precision': 0.01108829568788501,\n", + " 'recall': 0.020785219399538105,\n", + " 'rand_precision': 0.00979697115964764,\n", + " 'auprc': 0.010340817326264214,\n", + " 'EPR': 0.7824397043431892}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#SROY\n", + "#GWPS\n", + "BenGRN(gwps).compare_to(sroy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "scprint", + "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.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/test.ipynb b/notebooks/test.ipynb deleted file mode 100644 index 7fe5c49..0000000 --- a/notebooks/test.ipynb +++ /dev/null @@ -1,1198 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from anndata import AnnData" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['0610009B22Rik',\n", - " '0610009O20Rik',\n", - " '0610010F05Rik',\n", - " '0610010K14Rik',\n", - " '0610012G03Rik',\n", - " '0610030E20Rik',\n", - " '0610037L13Rik',\n", - " '0610040J01Rik',\n", - " '1110002E22Rik',\n", - " '1110004E09Rik',\n", - " '1110004F10Rik',\n", - " '1110008F13Rik',\n", - " '1110008L16Rik',\n", - " '1110008P14Rik',\n", - " '1110012L19Rik',\n", - " '1110017D15Rik',\n", - " '1110032A03Rik',\n", - " '1110032F04Rik',\n", - " '1110034G24Rik',\n", - " '1110038F14Rik',\n", - " '1110051M20Rik',\n", - " '1110059E24Rik',\n", - " '1110059G10Rik',\n", - " '1110065P20Rik',\n", - " '1190002N15Rik',\n", - " '1190005I06Rik',\n", - " '1190007I07Rik',\n", - " '1300017J02Rik',\n", - " '1500009L16Rik',\n", - " '1500011B03Rik',\n", - " '1500011K16Rik',\n", - " '1600002K03Rik',\n", - " '1600012H06Rik',\n", - " '1600014C10Rik',\n", - " '1600014C23Rik',\n", - " '1700001C19Rik',\n", - " '1700001L19Rik',\n", - " '1700001O22Rik',\n", - " '1700001P01Rik',\n", - " '1700003E16Rik',\n", - " '1700003F12Rik',\n", - " '1700007G11Rik',\n", - " '1700007K13Rik',\n", - " '1700008O03Rik',\n", - " '1700010I14Rik',\n", - " '1700011H14Rik',\n", - " '1700013F07Rik',\n", - " '1700013H16Rik',\n", - " '1700015F17Rik',\n", - " '1700016H13Rik',\n", - " '1700016K19Rik',\n", - " '1700017B05Rik',\n", - " '1700019D03Rik',\n", - " '1700020L24Rik',\n", - " '1700021F05Rik',\n", - " '1700022I11Rik',\n", - " '1700023F06Rik',\n", - " '1700024G13Rik',\n", - " '1700025G04Rik',\n", - " '1700028J19Rik',\n", - " '1700028K03Rik',\n", - " '1700029F12Rik',\n", - " '1700029J07Rik',\n", - " '1700029P11Rik',\n", - " '1700030J22Rik',\n", - " '1700030K09Rik',\n", - " '1700034I23Rik',\n", - " '1700037C18Rik',\n", - " '1700037H04Rik',\n", - " '1700047I17Rik2',\n", - " '1700056E22Rik',\n", - " '1700057G04Rik',\n", - " '1700061G19Rik',\n", - " '1700066B19Rik',\n", - " '1700066M21Rik',\n", - " '1700088E04Rik',\n", - " '1700092M07Rik',\n", - " '1700093K21Rik',\n", - " '1700102P08Rik',\n", - " '1700109H08Rik',\n", - " '1700113H08Rik',\n", - " '1700123O20Rik',\n", - " '1700125H20Rik',\n", - " '1810009A15Rik',\n", - " '1810010D01Rik',\n", - " '1810010H24Rik',\n", - " '1810013L24Rik',\n", - " '1810022K09Rik',\n", - " '1810024B03Rik',\n", - " '1810030O07Rik',\n", - " '1810032O08Rik',\n", - " '1810037I17Rik',\n", - " '1810041L15Rik',\n", - " '1810043G02Rik',\n", - " '1810049J17Rik',\n", - " '1810055G02Rik',\n", - " '1810062G17Rik',\n", - " '2010005H15Rik',\n", - " '2010107E04Rik',\n", - " '2010109A12Rik',\n", - " '2010111I01Rik',\n", - " '2010300C02Rik',\n", - " '2010315B03Rik',\n", - " '2200002D01Rik',\n", - " '2200002J24Rik',\n", - " '2210011C24Rik',\n", - " '2210016F16Rik',\n", - " '2210016L21Rik',\n", - " '2210017I01Rik',\n", - " '2210408I21Rik',\n", - " '2210418O10Rik',\n", - " '2300009A05Rik',\n", - " '2310009B15Rik',\n", - " '2310011J03Rik',\n", - " '2310022A10Rik',\n", - " '2310022B05Rik',\n", - " '2310030G06Rik',\n", - " '2310033P09Rik',\n", - " '2310034G01Rik',\n", - " '2310035C23Rik',\n", - " '2310039H08Rik',\n", - " '2310057M21Rik',\n", - " '2310061I04Rik',\n", - " '2410002F23Rik',\n", - " '2410004B18Rik',\n", - " '2410015M20Rik',\n", - " '2410089E03Rik',\n", - " '2410131K14Rik',\n", - " '2410141K09Rik',\n", - " '2510002D24Rik',\n", - " '2510009E07Rik',\n", - " '2510039O18Rik',\n", - " '2610001J05Rik',\n", - " '2610002M06Rik',\n", - " '2610008E11Rik',\n", - " '2610021A01Rik',\n", - " '2610028H24Rik',\n", - " '2610042L04Rik',\n", - " '2610044O15Rik8',\n", - " '2610301B20Rik',\n", - " '2610318N02Rik',\n", - " '2610507B11Rik',\n", - " '2610524H06Rik',\n", - " '2610528J11Rik',\n", - " '2700049A03Rik',\n", - " '2700062C07Rik',\n", - " '2700081O15Rik',\n", - " '2700097O09Rik',\n", - " '2810004N23Rik',\n", - " '2810006K23Rik',\n", - " '2810021J22Rik',\n", - " '2810403A07Rik',\n", - " '2810408A11Rik',\n", - " '2810459M11Rik',\n", - " '2810474O19Rik',\n", - " '2900011O08Rik',\n", - " '2900026A02Rik',\n", - " '2900055J20Rik',\n", - " '3100002H09Rik',\n", - " '3110001I22Rik',\n", - " '3110002H16Rik',\n", - " '3110009E18Rik',\n", - " '3110021N24Rik',\n", - " '3110035E14Rik',\n", - " '3110040N11Rik',\n", - " '3110043O21Rik',\n", - " '3110062M04Rik',\n", - " '3110070M22Rik',\n", - " '3110082I17Rik',\n", - " '3110082J24Rik',\n", - " '3300002I08Rik',\n", - " '3632451O06Rik',\n", - " '3830403N18Rik',\n", - " '3830406C13Rik',\n", - " '4430402I18Rik',\n", - " '4833420G17Rik',\n", - " '4833439L19Rik',\n", - " '4921507P07Rik',\n", - " '4921524J17Rik',\n", - " '4921536K21Rik',\n", - " '4930402H24Rik',\n", - " '4930430F08Rik',\n", - " '4930432K21Rik',\n", - " '4930438A08Rik',\n", - " '4930444P10Rik',\n", - " '4930447C04Rik',\n", - " '4930451G09Rik',\n", - " '4930452B06Rik',\n", - " '4930453N24Rik',\n", - " '4930486L24Rik',\n", - " '4930502E18Rik',\n", - " '4930503L19Rik',\n", - " '4930507D05Rik',\n", - " '4930518I15Rik',\n", - " '4930522L14Rik',\n", - " '4930523C07Rik',\n", - " '4930524B15Rik',\n", - " '4930524J08Rik',\n", - " '4930539E08Rik',\n", - " '4930550C14Rik',\n", - " '4930550L24Rik',\n", - " '4930555G01Rik',\n", - " '4930562C15Rik',\n", - " '4930578G10Rik',\n", - " '4930579F01Rik',\n", - " '4930579G24Rik',\n", - " '4930590J08Rik',\n", - " '4931406C07Rik',\n", - " '4931406P16Rik',\n", - " '4931414P19Rik',\n", - " '4931422A03Rik',\n", - " '4931428F04Rik',\n", - " '4932438A13Rik',\n", - " '4932438H23Rik',\n", - " '4932443I19Rik',\n", - " '4933402E13Rik',\n", - " '4933407L21Rik',\n", - " '4933408B17Rik',\n", - " '4933415A04Rik',\n", - " '4933424G06Rik',\n", - " '4933425L06Rik',\n", - " '4933427D14Rik',\n", - " '4933428M09Rik',\n", - " '4933430I17Rik',\n", - " '4933434E20Rik',\n", - " '5031439G07Rik',\n", - " '5330417C22Rik',\n", - " '5430403G16Rik',\n", - " '5730409E04Rik',\n", - " '5730455P16Rik',\n", - " '5730480H06Rik',\n", - " '5730507C01Rik',\n", - " '5730522E02Rik',\n", - " '5730559C18Rik',\n", - " '5730596B20Rik',\n", - " '5830473C10Rik',\n", - " '6030408B16Rik',\n", - " '6030419C18Rik',\n", - " '6030458C11Rik',\n", - " '6330409D20Rik',\n", - " '6430531B16Rik',\n", - " '6430548M08Rik',\n", - " '6430550D23Rik',\n", - " '6430571L13Rik',\n", - " '6430573F11Rik',\n", - " '6720489N17Rik',\n", - " '6820408C15Rik',\n", - " '8030411F24Rik',\n", - " '8030462N17Rik',\n", - " '8030474K03Rik',\n", - " '8430408G22Rik',\n", - " '9030612E09Rik',\n", - " '9030624G23Rik',\n", - " '9030624J02Rik',\n", - " '9130008F23Rik',\n", - " '9130011E15Rik',\n", - " '9130019O22Rik',\n", - " '9130023H24Rik',\n", - " '9130204L05Rik',\n", - " '9130230L23Rik',\n", - " '9130401M01Rik',\n", - " '9230102O04Rik',\n", - " '9230110C19Rik',\n", - " '9330159F19Rik',\n", - " '9330182L06Rik',\n", - " '9430015G10Rik',\n", - " '9430038I01Rik',\n", - " '9530053A07Rik',\n", - " '9530068E07Rik',\n", - " '9530077C05Rik',\n", - " '9930012K11Rik',\n", - " '9930021J03Rik',\n", - " 'A030005L19Rik',\n", - " 'A130010J15Rik',\n", - " 'A230050P20Rik',\n", - " 'A2m',\n", - " 'A2ml1',\n", - " 'A3galt2',\n", - " 'A430005L14Rik',\n", - " 'A430033K04Rik',\n", - " 'A430105I19Rik',\n", - " 'A4galt',\n", - " 'A530032D15Rik',\n", - " 'A530084C06Rik',\n", - " 'A630001G21Rik',\n", - " 'A630010A05Rik',\n", - " 'A730009L09Rik',\n", - " 'A730015C16Rik',\n", - " 'A730017C20Rik',\n", - " 'A730046J19Rik',\n", - " 'A730049H05Rik',\n", - " 'A730071L15Rik',\n", - " 'A830005F24Rik',\n", - " 'A830010M20Rik',\n", - " 'A830018L16Rik',\n", - " 'A930002H24Rik',\n", - " 'A930004D18Rik',\n", - " 'A930009A15Rik',\n", - " 'A930018P22Rik',\n", - " 'A930033H14Rik',\n", - " 'AA467197',\n", - " 'AA986860',\n", - " 'AB124611',\n", - " 'AC034099.1',\n", - " 'AC099934.3',\n", - " 'AC099934.5',\n", - " 'AC123954.1',\n", - " 'AC124712.1',\n", - " 'AC133499.1',\n", - " 'AC134869.3',\n", - " 'AC138214.1',\n", - " 'AC140267.1',\n", - " 'AC149222.1',\n", - " 'AC152453.1',\n", - " 'AC153912.1',\n", - " 'AC154682.1',\n", - " 'AC155937.1',\n", - " 'AC158605.2',\n", - " 'AC158777.2',\n", - " 'AC161180.2',\n", - " 'AC163623.1',\n", - " 'AC163637.2',\n", - " 'AC163703.1',\n", - " 'AC166344.3',\n", - " 'AC174678.2',\n", - " 'AC175538.2',\n", - " 'AF067061',\n", - " 'AF067063',\n", - " 'AF529169',\n", - " 'AI314180',\n", - " 'AI413582',\n", - " 'AI429214',\n", - " 'AI464131',\n", - " 'AI467606',\n", - " 'AI481877',\n", - " 'AI597479',\n", - " 'AI606181',\n", - " 'AI661453',\n", - " 'AI837181',\n", - " 'AI846148',\n", - " 'AI854703',\n", - " 'AI987944',\n", - " 'AK157302',\n", - " 'AL670603.1',\n", - " 'AL731706.1',\n", - " 'AL732309.1',\n", - " 'AL732309.2',\n", - " 'AU015836',\n", - " 'AU018091',\n", - " 'AU019823',\n", - " 'AU022252',\n", - " 'AU022751',\n", - " 'AU040320',\n", - " 'AU041133',\n", - " 'AV320801',\n", - " 'AW011738',\n", - " 'AW146154',\n", - " 'AW209491',\n", - " 'AW549877',\n", - " 'AW551984',\n", - " 'AW554918',\n", - " 'AW822073',\n", - " 'AY074887',\n", - " 'Aaas',\n", - " 'Aacs',\n", - " 'Aadat',\n", - " 'Aaed1',\n", - " 'Aagab',\n", - " 'Aak1',\n", - " 'Aamdc',\n", - " 'Aamp',\n", - " 'Aar2',\n", - " 'Aard',\n", - " 'Aars',\n", - " 'Aars2',\n", - " 'Aarsd1',\n", - " 'Aasdh',\n", - " 'Aasdhppt',\n", - " 'Aass',\n", - " 'Aatf',\n", - " 'Aatk',\n", - " 'Abat',\n", - " 'Abca1',\n", - " 'Abca13',\n", - " 'Abca16',\n", - " 'Abca2',\n", - " 'Abca3',\n", - " 'Abca4',\n", - " 'Abca5',\n", - " 'Abca7',\n", - " 'Abcb10',\n", - " 'Abcb1a',\n", - " 'Abcb1b',\n", - " 'Abcb4',\n", - " 'Abcb6',\n", - " 'Abcb7',\n", - " 'Abcb8',\n", - " 'Abcb9',\n", - " 'Abcc1',\n", - " 'Abcc10',\n", - " 'Abcc2',\n", - " 'Abcc4',\n", - " 'Abcc5',\n", - " 'Abcc8',\n", - " 'Abcd1',\n", - " 'Abcd2',\n", - " 'Abcd3',\n", - " 'Abcd4',\n", - " 'Abce1',\n", - " 'Abcf1',\n", - " 'Abcf2',\n", - " 'Abcf3',\n", - " 'Abcg1',\n", - " 'Abcg2',\n", - " 'Abcg3',\n", - " 'Abcg4',\n", - " 'Abcg5',\n", - " 'Abhd10',\n", - " 'Abhd11',\n", - " 'Abhd12',\n", - " 'Abhd13',\n", - " 'Abhd14a',\n", - " 'Abhd14b',\n", - " 'Abhd15',\n", - " 'Abhd16a',\n", - " 'Abhd17a',\n", - " 'Abhd17b',\n", - " 'Abhd17c',\n", - " 'Abhd18',\n", - " 'Abhd2',\n", - " 'Abhd3',\n", - " 'Abhd4',\n", - " 'Abhd5',\n", - " 'Abhd6',\n", - " 'Abhd8',\n", - " 'Abi1',\n", - " 'Abi2',\n", - " 'Abi3bp',\n", - " 'Abl1',\n", - " 'Abl2',\n", - " 'Ablim1',\n", - " 'Ablim2',\n", - " 'Ablim3',\n", - " 'Abr',\n", - " 'Abracl',\n", - " 'Abraxas1',\n", - " 'Abraxas2',\n", - " 'Abt1',\n", - " 'Abtb1',\n", - " 'Abtb2',\n", - " 'Acaa1a',\n", - " 'Acaa1b',\n", - " 'Acaa2',\n", - " 'Acaca',\n", - " 'Acacb',\n", - " 'Acad10',\n", - " 'Acad11',\n", - " 'Acad12',\n", - " 'Acad8',\n", - " 'Acad9',\n", - " 'Acadl',\n", - " 'Acadm',\n", - " 'Acads',\n", - " 'Acadsb',\n", - " 'Acadvl',\n", - " 'Acap2',\n", - " 'Acap3',\n", - " 'Acat1',\n", - " 'Acat2',\n", - " 'Acat3',\n", - " 'Acbd3',\n", - " 'Acbd4',\n", - " 'Acbd5',\n", - " 'Acbd6',\n", - " 'Acbd7',\n", - " 'Accs',\n", - " 'Acd',\n", - " 'Acer2',\n", - " 'Acer3',\n", - " 'Ache',\n", - " 'Acin1',\n", - " 'Ackr1',\n", - " 'Ackr3',\n", - " 'Acly',\n", - " 'Acnat1',\n", - " 'Acnat2',\n", - " 'Aco1',\n", - " 'Aco2',\n", - " 'Acot1',\n", - " 'Acot10',\n", - " 'Acot11',\n", - " 'Acot13',\n", - " 'Acot2',\n", - " 'Acot3',\n", - " 'Acot6',\n", - " 'Acot7',\n", - " 'Acot8',\n", - " 'Acot9',\n", - " 'Acox1',\n", - " 'Acox3',\n", - " 'Acp1',\n", - " 'Acp2',\n", - " 'Acp4',\n", - " 'Acp5',\n", - " 'Acp6',\n", - " 'Acpp',\n", - " 'Acrbp',\n", - " 'Acsbg1',\n", - " 'Acsf2',\n", - " 'Acsf3',\n", - " 'Acsl1',\n", - " 'Acsl3',\n", - " 'Acsl4',\n", - " 'Acsl5',\n", - " 'Acsl6',\n", - " 'Acsm3',\n", - " 'Acss1',\n", - " 'Acss2',\n", - " 'Acss3',\n", - " 'Acta1',\n", - " 'Acta2',\n", - " 'Actb',\n", - " 'Actc1',\n", - " 'Actg1',\n", - " 'Actl6a',\n", - " 'Actl6b',\n", - " 'Actn1',\n", - " 'Actn2',\n", - " 'Actn3',\n", - " 'Actn4',\n", - " 'Actr10',\n", - " 'Actr1a',\n", - " 'Actr1b',\n", - " 'Actr2',\n", - " 'Actr3',\n", - " 'Actr3b',\n", - " 'Actr5',\n", - " 'Actr6',\n", - " 'Actr8',\n", - " 'Actrt3',\n", - " 'Acvr1',\n", - " 'Acvr1b',\n", - " 'Acvr1c',\n", - " 'Acvr2a',\n", - " 'Acvr2b',\n", - " 'Acvrl1',\n", - " 'Acy1',\n", - " 'Acy3',\n", - " 'Acyp1',\n", - " 'Acyp2',\n", - " 'Ada',\n", - " 'Adad1',\n", - " 'Adal',\n", - " 'Adam10',\n", - " 'Adam11',\n", - " 'Adam12',\n", - " 'Adam15',\n", - " 'Adam17',\n", - " 'Adam19',\n", - " 'Adam1a',\n", - " 'Adam2',\n", - " 'Adam21',\n", - " 'Adam22',\n", - " 'Adam23',\n", - " 'Adam28',\n", - " 'Adam32',\n", - " 'Adam4',\n", - " 'Adam8',\n", - " 'Adam9',\n", - " 'Adamts1',\n", - " 'Adamts10',\n", - " 'Adamts14',\n", - " 'Adamts15',\n", - " 'Adamts16',\n", - " 'Adamts17',\n", - " 'Adamts18',\n", - " 'Adamts19',\n", - " 'Adamts2',\n", - " 'Adamts20',\n", - " 'Adamts3',\n", - " 'Adamts4',\n", - " 'Adamts5',\n", - " 'Adamts6',\n", - " 'Adamts7',\n", - " 'Adamts9',\n", - " 'Adamtsl1',\n", - " 'Adamtsl2',\n", - " 'Adamtsl4',\n", - " 'Adamtsl5',\n", - " 'Adap1',\n", - " 'Adap2',\n", - " 'Adar',\n", - " 'Adarb1',\n", - " 'Adarb2',\n", - " 'Adat1',\n", - " 'Adat2',\n", - " 'Adat3',\n", - " 'Adck1',\n", - " 'Adck2',\n", - " 'Adck5',\n", - " 'Adcy1',\n", - " 'Adcy10',\n", - " 'Adcy2',\n", - " 'Adcy3',\n", - " 'Adcy4',\n", - " 'Adcy5',\n", - " 'Adcy6',\n", - " 'Adcy8',\n", - " 'Adcy9',\n", - " 'Adcyap1',\n", - " 'Adcyap1r1',\n", - " 'Add1',\n", - " 'Add2',\n", - " 'Add3',\n", - " 'Adgra1',\n", - " 'Adgra2',\n", - " 'Adgra3',\n", - " 'Adgrb1',\n", - " 'Adgrb2',\n", - " 'Adgrb3',\n", - " 'Adgre4',\n", - " 'Adgre5',\n", - " 'Adgrg1',\n", - " 'Adgrg2',\n", - " 'Adgrg6',\n", - " 'Adgrl1',\n", - " 'Adgrl2',\n", - " 'Adgrl3',\n", - " 'Adgrl4',\n", - " 'Adgrv1',\n", - " 'Adh1',\n", - " 'Adh5',\n", - " 'Adhfe1',\n", - " 'Adi1',\n", - " 'Adipor1',\n", - " 'Adipor2',\n", - " 'Adk',\n", - " 'Adm',\n", - " 'Adm2',\n", - " 'Adnp',\n", - " 'Adnp2',\n", - " 'Ado',\n", - " 'Adora1',\n", - " 'Adora2b',\n", - " 'Adpgk',\n", - " 'Adprh',\n", - " 'Adprhl2',\n", - " 'Adprm',\n", - " 'Adra1a',\n", - " 'Adra1b',\n", - " 'Adra2a',\n", - " 'Adra2b',\n", - " 'Adrb2',\n", - " 'Adrb3',\n", - " 'Adrm1',\n", - " 'Adsl',\n", - " 'Adss',\n", - " 'Adssl1',\n", - " 'Adtrp',\n", - " 'Aebp1',\n", - " 'Aebp2',\n", - " 'Aen',\n", - " 'Aes',\n", - " 'Afap1',\n", - " 'Afap1l1',\n", - " 'Afap1l2',\n", - " 'Afdn',\n", - " 'Aff1',\n", - " 'Aff2',\n", - " 'Aff3',\n", - " 'Aff4',\n", - " 'Afg1l',\n", - " 'Afg3l1',\n", - " 'Afg3l2',\n", - " 'Afmid',\n", - " 'Afp',\n", - " 'Aftph',\n", - " 'Aga',\n", - " 'Agap1',\n", - " 'Agap2',\n", - " 'Agap3',\n", - " 'Agbl2',\n", - " 'Agbl3',\n", - " 'Agbl4',\n", - " 'Agbl5',\n", - " 'Ager',\n", - " 'Agfg1',\n", - " 'Agfg2',\n", - " 'Aggf1',\n", - " 'Agk',\n", - " 'Agl',\n", - " 'Ago1',\n", - " 'Ago2',\n", - " 'Ago3',\n", - " 'Ago4',\n", - " 'Agpat1',\n", - " 'Agpat2',\n", - " 'Agpat3',\n", - " 'Agpat4',\n", - " 'Agpat5',\n", - " 'Agps',\n", - " 'Agrn',\n", - " 'Agrp',\n", - " 'Agtpbp1',\n", - " 'Agtr1a',\n", - " 'Agtrap',\n", - " 'Ahctf1',\n", - " 'Ahcy',\n", - " 'Ahcyl1',\n", - " 'Ahcyl2',\n", - " 'Ahdc1',\n", - " 'Ahi1',\n", - " 'Ahnak',\n", - " 'Ahnak2',\n", - " 'Ahr',\n", - " 'Ahrr',\n", - " 'Ahsa1',\n", - " 'Ahsa2',\n", - " 'Aida',\n", - " 'Aif1l',\n", - " 'Aifm1',\n", - " 'Aifm2',\n", - " 'Aifm3',\n", - " 'Aig1',\n", - " 'Aim2',\n", - " 'Aimp1',\n", - " 'Aimp2',\n", - " 'Aip',\n", - " 'Aipl1',\n", - " 'Ajap1',\n", - " 'Ajuba',\n", - " 'Ak1',\n", - " 'Ak2',\n", - " 'Ak3',\n", - " 'Ak4',\n", - " 'Ak6',\n", - " 'Ak7',\n", - " 'Ak8',\n", - " 'Ak9',\n", - " 'Akap1',\n", - " 'Akap10',\n", - " 'Akap11',\n", - " 'Akap12',\n", - " 'Akap13',\n", - " 'Akap14',\n", - " 'Akap17b',\n", - " 'Akap2',\n", - " 'Akap5',\n", - " 'Akap6',\n", - " 'Akap7',\n", - " 'Akap8',\n", - " 'Akap8l',\n", - " 'Akap9',\n", - " 'Akip1',\n", - " 'Akirin1',\n", - " 'Akirin2',\n", - " 'Akna',\n", - " 'Aknad1',\n", - " 'Akr1a1',\n", - " 'Akr1b10',\n", - " 'Akr1b3',\n", - " 'Akr1b8',\n", - " 'Akr1c12',\n", - " 'Akr1c13',\n", - " 'Akr1c19',\n", - " 'Akr1e1',\n", - " 'Akr7a5',\n", - " 'Akt1',\n", - " 'Akt1s1',\n", - " 'Akt2',\n", - " 'Akt3',\n", - " 'Aktip',\n", - " 'Alad',\n", - " 'Alas1',\n", - " 'Alas2',\n", - " 'Alcam',\n", - " 'Aldh16a1',\n", - " 'Aldh18a1',\n", - " 'Aldh1a1',\n", - " 'Aldh1a2',\n", - " 'Aldh1a3',\n", - " 'Aldh1a7',\n", - " 'Aldh1b1',\n", - " 'Aldh1l2',\n", - " 'Aldh2',\n", - " 'Aldh3a2',\n", - " 'Aldh3b1',\n", - " 'Aldh3b2',\n", - " 'Aldh4a1',\n", - " 'Aldh5a1',\n", - " 'Aldh6a1',\n", - " 'Aldh7a1',\n", - " 'Aldh9a1',\n", - " 'Aldoa',\n", - " 'Aldoart1',\n", - " 'Aldoart2',\n", - " 'Aldoc',\n", - " 'Alg1',\n", - " 'Alg10b',\n", - " 'Alg11',\n", - " 'Alg12',\n", - " 'Alg13',\n", - " 'Alg14',\n", - " 'Alg2',\n", - " 'Alg3',\n", - " 'Alg5',\n", - " 'Alg6',\n", - " 'Alg8',\n", - " 'Alg9',\n", - " 'Alkbh1',\n", - " 'Alkbh2',\n", - " 'Alkbh3',\n", - " 'Alkbh4',\n", - " 'Alkbh5',\n", - " 'Alkbh6',\n", - " 'Alkbh7',\n", - " 'Alkbh8',\n", - " 'Alms1',\n", - " 'Alox5ap',\n", - " 'Alox8',\n", - " 'Aloxe3',\n", - " 'Alpk1',\n", - " 'Alpk2',\n", - " 'Alpk3',\n", - " 'Alpl',\n", - " 'Als2',\n", - " 'Als2cl',\n", - " 'Alyref',\n", - " 'Alyref2',\n", - " 'Amacr',\n", - " 'Ambp',\n", - " 'Ambra1',\n", - " 'Amd1',\n", - " 'Amd2',\n", - " 'Amdhd1',\n", - " 'Amdhd2',\n", - " 'Amer1',\n", - " 'Amer2',\n", - " 'Amer3',\n", - " 'Amfr',\n", - " 'Amhr2',\n", - " 'Amigo1',\n", - " 'Amigo2',\n", - " 'Amigo3',\n", - " 'Ammecr1',\n", - " 'Ammecr1l',\n", - " 'Amn',\n", - " 'Amn1',\n", - " 'Amot',\n", - " 'Amotl1',\n", - " 'Amotl2',\n", - " 'Ampd1',\n", - " 'Ampd2',\n", - " 'Ampd3',\n", - " 'Amph',\n", - " 'Amt',\n", - " 'Amy1',\n", - " 'Amz1',\n", - " 'Amz2',\n", - " 'Anapc1',\n", - " 'Anapc10',\n", - " 'Anapc11',\n", - " 'Anapc13',\n", - " 'Anapc15',\n", - " 'Anapc15-ps',\n", - " 'Anapc16',\n", - " 'Anapc2',\n", - " 'Anapc4',\n", - " 'Anapc5',\n", - " 'Anapc7',\n", - " 'Ang',\n", - " 'Angel1',\n", - " 'Angel2',\n", - " 'Angpt1',\n", - " 'Angpt2',\n", - " 'Angptl1',\n", - " 'Angptl2',\n", - " 'Angptl3',\n", - " 'Angptl4',\n", - " 'Angptl6',\n", - " 'Angptl8',\n", - " 'Ank',\n", - " 'Ank1',\n", - " 'Ank2',\n", - " 'Ank3',\n", - " 'Ankdd1b',\n", - " 'Ankef1',\n", - " 'Ankfy1',\n", - " 'Ankhd1',\n", - " 'Ankib1',\n", - " 'Ankle1',\n", - " 'Ankle2',\n", - " 'Ankmy1',\n", - " 'Ankmy2',\n", - " 'Ankra2',\n", - " 'Ankrd1',\n", - " 'Ankrd10',\n", - " 'Ankrd11',\n", - " 'Ankrd12',\n", - " 'Ankrd13a',\n", - " 'Ankrd13b',\n", - " 'Ankrd13c',\n", - " 'Ankrd13d',\n", - " 'Ankrd16',\n", - " 'Ankrd17',\n", - " 'Ankrd23',\n", - " 'Ankrd24',\n", - " 'Ankrd26',\n", - " 'Ankrd27',\n", - " 'Ankrd28',\n", - " 'Ankrd29',\n", - " 'Ankrd31',\n", - " 'Ankrd33',\n", - " 'Ankrd33b',\n", - " 'Ankrd34a',\n", - " 'Ankrd35',\n", - " 'Ankrd37',\n", - " 'Ankrd39',\n", - " 'Ankrd40',\n", - " 'Ankrd42',\n", - " 'Ankrd44',\n", - " 'Ankrd45',\n", - " 'Ankrd46',\n", - " 'Ankrd49',\n", - " 'Ankrd50',\n", - " 'Ankrd52',\n", - " 'Ankrd54',\n", - " 'Ankrd55',\n", - " 'Ankrd6',\n", - " 'Ankrd66',\n", - " 'Ankrd9',\n", - " 'Anks1',\n", - " 'Anks1b',\n", - " 'Anks3',\n", - " 'Anks4b',\n", - " 'Anks6',\n", - " 'Ankub1',\n", - " 'Ankzf1',\n", - " 'Anln',\n", - " 'Ano1',\n", - " 'Ano10',\n", - " 'Ano2',\n", - " 'Ano3',\n", - " 'Ano4',\n", - " 'Ano6',\n", - " 'Ano7',\n", - " 'Ano8',\n", - " 'Ano9',\n", - " 'Anp32a',\n", - " 'Anp32b',\n", - " 'Anp32e',\n", - " 'Anpep',\n", - " 'Antxr1',\n", - " 'Antxr2',\n", - " 'Anxa1',\n", - " 'Anxa11',\n", - " 'Anxa2',\n", - " 'Anxa3',\n", - " 'Anxa4',\n", - " 'Anxa5',\n", - " 'Anxa6',\n", - " 'Anxa7',\n", - " 'Aoc1',\n", - " 'Aoc2',\n", - " 'Aoc3',\n", - " 'Aox4',\n", - " 'Ap1ar',\n", - " 'Ap1b1',\n", - " 'Ap1g1',\n", - " 'Ap1g2',\n", - " 'Ap1m1',\n", - " 'Ap1m2',\n", - " 'Ap1s1',\n", - " 'Ap1s2',\n", - " 'Ap1s3',\n", - " 'Ap2a1',\n", - " 'Ap2a2',\n", - " 'Ap2b1',\n", - " 'Ap2m1',\n", - " 'Ap2s1',\n", - " 'Ap3b1',\n", - " 'Ap3b2',\n", - " 'Ap3d1',\n", - " 'Ap3m1',\n", - " 'Ap3m2',\n", - " 'Ap3s1',\n", - " 'Ap3s2',\n", - " 'Ap4b1',\n", - " 'Ap4e1',\n", - " 'Ap4m1',\n", - " 'Ap4s1',\n", - " 'Ap5b1',\n", - " 'Ap5m1',\n", - " 'Ap5s1',\n", - " 'Ap5z1',\n", - " 'Apaf1',\n", - " 'Apba1',\n", - " 'Apba2',\n", - " 'Apba3',\n", - " 'Apbb1',\n", - " ...]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "adata_sem.var.index.tolist()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "adata_sem = AnnData(\n", - " (\n", - " 2\n", - " ** pd.read_csv(\n", - " \"../data/GroundTruth/stone_and_sroy/scRNA/duren_rna_filtered_log2.tsv.gz\",\n", - " sep=\"\\t\",\n", - " )\n", - " )\n", - " - 1\n", - ").T" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "from bengrn import get_sroy_gt" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/ml4ig1/miniconda3/envs/scprint/lib/python3.10/site-packages/anndata/utils.py:292: UserWarning: X converted to numpy array with dtype float64\n", - " warnings.warn(f\"{name} converted to numpy array with dtype {arr.dtype}\")\n" - ] - } - ], - "source": [ - "grn = get_sroy_gt(join=\"outer\", species=\"mouse\")" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "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", - "
0610007P14Rik
0610009B22Rik
0610009D07Rik
0610009O20Rik
0610010B08Rik
...
mt-Nd3
mt-Nd4
mt-Nd4l
mt-Nd5
mt-Nd6
\n", - "

16376 rows × 0 columns

\n", - "
" - ], - "text/plain": [ - "Empty DataFrame\n", - "Columns: []\n", - "Index: [0610007P14Rik, 0610009B22Rik, 0610009D07Rik, 0610009O20Rik, 0610010B08Rik, 0610010F05Rik, 0610010K14Rik, 0610011F06Rik, 0610012G03Rik, 0610030E20Rik, 0610031J06Rik, 0610037L13Rik, 0610038B21Rik, 0610040J01Rik, 1110001A16Rik, 1110001J03Rik, 1110002E22Rik, 1110002L01Rik, 1110004E09Rik, 1110004F10Rik, 1110007C09Rik, 1110008F13Rik, 1110008J03Rik, 1110008L16Rik, 1110008P14Rik, 1110012L19Rik, 1110017D15Rik, 1110032A03Rik, 1110032F04Rik, 1110034G24Rik, 1110037F02Rik, 1110038B12Rik, 1110038F14Rik, 1110046J04Rik, 1110051M20Rik, 1110057K04Rik, 1110058L19Rik, 1110059E24Rik, 1110059G10Rik, 1110065P20Rik, 1190002N15Rik, 1190005I06Rik, 1190007I07Rik, 1200011I18Rik, 1200014J11Rik, 1300002E11Rik, 1300017J02Rik, 1500009L16Rik, 1500011B03Rik, 1500011K16Rik, 1500012F01Rik, 1500016L03Rik, 1600002H07Rik, 1600002K03Rik, 1600012H06Rik, 1600014C10Rik, 1600014C23Rik, 1600020E01Rik, 1600029O15Rik, 1700001C19Rik, 1700001L05Rik, 1700001L19Rik, 1700001O22Rik, 1700001P01Rik, 1700003E16Rik, 1700003F12Rik, 1700003M07Rik, 1700007G11Rik, 1700007J10Rik, 1700007K13Rik, 1700008O03Rik, 1700010I14Rik, 1700011H14Rik, 1700013F07Rik, 1700013H16Rik, 1700015F17Rik, 1700016D06Rik, 1700016H13Rik, 1700016K19Rik, 1700017B05Rik, 1700017N19Rik, 1700019D03Rik, 1700020I14Rik, 1700020L24Rik, 1700020N15Rik, 1700021F05Rik, 1700021K19Rik, 1700022I11Rik, 1700023F06Rik, 1700024G13Rik, 1700025G04Rik, 1700025N23Rik, 1700028J19Rik, 1700028K03Rik, 1700028P14Rik, 1700029F12Rik, 1700029J07Rik, 1700029P11Rik, 1700030C10Rik, 1700030J22Rik, ...]\n", - "\n", - "[16376 rows x 0 columns]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "grn.var" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "scprint", - "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.10.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}