{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 276, "metadata": {}, "outputs": [], "source": [ "\n", "import argparse\n", "import os\n", "import shutil\n", "import numpy as np\n", "import pandas as pd\n", "import numpy as np\n", "import scipy.spatial.distance as ssd\n", "import gc\n", "import h5py\n", "import itertools\n", "\n", "\n", "def make_tss_tss(gene_data, chrom, dist_folder, RAWobserved, KRnorm, resoulution_in_kb):\n", " RAWobserved.columns = [\"pos1\", \"pos2\", \"freq\"]\n", " #normalizing the dataframe as done in the Rao paper\n", " RAWobserved[\"pos1_norm\"]=RAWobserved[\"pos1\"]/(resoulution_in_kb *1000) \n", " RAWobserved[\"pos2_norm\"]=RAWobserved[\"pos2\"]/(resoulution_in_kb *1000)\n", " RAWobserved[\"pos1_norm\"]=RAWobserved[\"pos1_norm\"].astype(int)\n", " RAWobserved[\"pos2_norm\"]=RAWobserved[\"pos2_norm\"].astype(int)\n", " \n", " RAWobserved_pos1 = RAWobserved.set_index(\"pos1_norm\")\n", " raw_df = RAWobserved_pos1.merge(right=KRnorm, left_on=RAWobserved_pos1.index, right_on=KRnorm.index, how='left')\n", " raw_df.drop(['key_0'], inplace=True, axis=1)\n", " RAWobserved_pos2 = raw_df.set_index(\"pos2_norm\")\n", " raw_df = RAWobserved_pos2.merge(right=KRnorm, left_on=RAWobserved_pos2.index, right_on=KRnorm.index, how='left')\n", " raw_df.drop(['key_0'], inplace=True, axis=1)\n", " raw_df['freq_norm'] = raw_df['freq'] / (raw_df['0_x'] * raw_df['0_y'])\n", " raw_df.dropna(inplace=True)\n", " raw_df.reset_index(inplace=True)\n", " \n", " del RAWobserved_pos1, RAWobserved_pos2, RAWobserved, KRnorm\n", " gc.collect()\n", " \n", " freq_norm = raw_df['freq_norm'].to_numpy()\n", " freq_norm_dict = dict(enumerate(freq_norm, 0)) \n", " print (freq_norm_dict)\n", " \n", " #this step is done to reduce the memmory consumption\n", " #df_tmp = pd.read_csv(\"/home/lohia/data/gene_distance_expresseion/georg_paper/MSB-17-7548_Dataset_EV1.csv\")\n", " #GK_genes = df_tmp['Gene_IDs'].to_list()\n", " #gene_data = gene_data[gene_data['Gene stable ID'].isin(GK_genes)] \n", " #gene_data = gene_data[gene_data['Gene type']== 'protein_coding']\n", " \n", "\n", " tmp_val = []\n", " gene_occurence_frequency = []\n", " for tss, tes in zip(gene_data['txStart_outer'].head(10), gene_data['txStart_outer'].head(10)):\n", " tmpv1 = (abs(raw_df['pos1']- tss)) <= (resoulution_in_kb *2000)\n", " tmpv2 = (abs(raw_df['pos2']- tss)) <= (resoulution_in_kb *2000)\n", " #tmpv3 = (abs(raw_df['pos1']- tes)) <= (resoulution_in_kb *2000)\n", " #tmpv4 = (abs(raw_df['pos2']- tes)) <= (resoulution_in_kb *2000)\n", " \n", " raw_df['BoolCol'] = [x+y for x, y in zip(tmpv1, tmpv2)]\n", " \n", " index_list = raw_df.index[raw_df['BoolCol'] > 0].tolist()\n", " tmp_val.append(index_list)\n", " gene_occurence_frequency.append(len(tmp_val))\n", " print (raw_df['BoolCol'])\n", " #gene_data['gene_occurence_frequency'] = gene_occurence_frequency\n", " #gene_data.to_csv(os.path.join(dist_folder, f'{chrom}_tss_tss_{resoulution_in_kb}_freq.csv'),\n", " # sep=',', columns = ['Gene stable ID', 'gene_occurence_frequency'])\n", " \n", " print (\"here\")\n", " \n", "\n", " print (([[freq_norm_dict[x] for x in list(set(tmp_val[pairs[0]]).intersection(tmp_val[pairs[1]]))] for pairs in list(itertools.combinations(range(len(tmp_val)),2))]))\n", " pairwise_distance = ([np.median([freq_norm_dict[x] for x in list(set(tmp_val[pairs[0]]).intersection(tmp_val[pairs[1]]))] ) for pairs in list(itertools.combinations(range(len(tmp_val)),2))])\n", " print (pairwise_distance)\n", " dist_mat = ssd.squareform(pairwise_distance)\n", " print (dist_mat)\n", "\n", " \n", " #dist_mat = ssd.squareform(ssd.pdist(map_hic_tss_bool, lambda u, v: np.median( (freq_norm)[np.nonzero(u*v)] )))\n", " #dist_mat = ssd.squareform(ssd.pdist(genes_freq, lambda u, v: np.median(np.sqrt( (u * v)[np.nonzero(u*v)] ))))\n", " #dist_mat = ssd.squareform(ssd.pdist(genes_freq, lambda u, v: np.nanmedian(np.sqrt((u * v)))))\n", "\n", " dist_mat = pd.DataFrame(dist_mat, index=gene_data['Gene stable ID'].head(10),\n", " columns=gene_data['Gene stable ID'].head(10))\n", " dist_mat.fillna(0, inplace=True)\n", " print (dist_mat)\n", " \n", " \n", " #del dist_mat.index.Gene stable ID\n", " dist_mat.to_csv(os.path.join(dist_folder, f'{chrom}_tss_tss_{resoulution_in_kb}.csv'),\n", " sep=',', float_format='%d')\n", "\n", "def make_distance_matrix(gene_folder, dist_folder,resoulution_in_kb=100):\n", " if os.path.isdir(dist_folder):\n", " # shutil.rmtree(dist_folder)\n", " pass\n", " else:\n", " os.mkdir(dist_folder)\n", " #for subdir in ['tss_tss']:\n", " # os.mkdir(os.path.join(dist_folder, subdir))\n", " for gene_file in os.scandir(gene_folder):\n", " gene_data = pd.read_csv(gene_file.path, sep='\\t',\n", " header=0, index_col=None)\n", " \n", " if not gene_data.empty:\n", " print (gene_file.path)\n", " chrom = gene_data.iloc[0]['chrom']\n", " #chrom_list = list(range(1,23)) + ['X']\n", " chrom_list = ['X']\n", " chrom_list = ['chr%s' %x for x in chrom_list ]\n", " if chrom in chrom_list:\n", " prefix = '/'.join(dist_folder.split('/')[:-1])\n", " RAWobserved = pd.read_csv('%s/GM12878_combined/%skb_resolution_intrachromosomal/%s/MAPQG0/%s_%skb.RAWobserved' %(prefix, resoulution_in_kb, chrom, chrom,resoulution_in_kb),sep='\\t', header = None)\n", " KRnorm = pd.read_csv('%s/GM12878_combined/%skb_resolution_intrachromosomal/%s/MAPQG0/%s_%skb.KRnorm' %(prefix, resoulution_in_kb, chrom, chrom,resoulution_in_kb) ,sep='\\t', header = None)\n", " RAWobserved = RAWobserved.head(10)\n", " make_tss_tss(gene_data, chrom, dist_folder, RAWobserved, KRnorm, resoulution_in_kb)\n", " else:\n", " pass\n", " else:\n", " \n", " pass" ] }, { "cell_type": "code", "execution_count": 277, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr10_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr11_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr9_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr12_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr13_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr14_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr15_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr16_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr4_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr5_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr17_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr18_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr19_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr8_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr1_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr20_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr21_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr22_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr2_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr3_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr6_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chr7_order.tsv\n", "/data/lohia/gene_distance_expresseion/gene_tx_map_37/gencode32_ucscgenes_hg37_knowngene_chrX_order.tsv\n", "{0: 4564.665188584462, 1: 730.1978350026033, 2: 3787.851743522336, 3: 118.82485505185504, 4: 398.7212714294596, 5: 286.27514780455397, 6: 1174.075256931945, 7: 4411.677113255485, 8: 127.20816019131941}\n", "0 0\n", "1 0\n", "2 0\n", "3 0\n", "4 0\n", "5 0\n", "6 0\n", "7 0\n", "8 0\n", "Name: BoolCol, dtype: int64\n", "here\n", "[[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]\n", "[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]\n", "[[ 0. nan nan nan nan nan nan nan nan nan]\n", " [nan 0. nan nan nan nan nan nan nan nan]\n", " [nan nan 0. nan nan nan nan nan nan nan]\n", " [nan nan nan 0. nan nan nan nan nan nan]\n", " [nan nan nan nan 0. nan nan nan nan nan]\n", " [nan nan nan nan nan 0. nan nan nan nan]\n", " [nan nan nan nan nan nan 0. nan nan nan]\n", " [nan nan nan nan nan nan nan 0. nan nan]\n", " [nan nan nan nan nan nan nan nan 0. nan]\n", " [nan nan nan nan nan nan nan nan nan 0.]]\n", "Gene stable ID ENSG00000182378 ENSG00000178605 ENSG00000167393 \\\n", "Gene stable ID \n", "ENSG00000182378 0.0 0.0 0.0 \n", "ENSG00000178605 0.0 0.0 0.0 \n", "ENSG00000167393 0.0 0.0 0.0 \n", "ENSG00000185960 0.0 0.0 0.0 \n", "ENSG00000205755 0.0 0.0 0.0 \n", "ENSG00000265658 0.0 0.0 0.0 \n", "ENSG00000198223 0.0 0.0 0.0 \n", "ENSG00000185291 0.0 0.0 0.0 \n", "ENSG00000169100 0.0 0.0 0.0 \n", "ENSG00000169093 0.0 0.0 0.0 \n", "\n", "Gene stable ID ENSG00000185960 ENSG00000205755 ENSG00000265658 \\\n", "Gene stable ID \n", "ENSG00000182378 0.0 0.0 0.0 \n", "ENSG00000178605 0.0 0.0 0.0 \n", "ENSG00000167393 0.0 0.0 0.0 \n", "ENSG00000185960 0.0 0.0 0.0 \n", "ENSG00000205755 0.0 0.0 0.0 \n", "ENSG00000265658 0.0 0.0 0.0 \n", "ENSG00000198223 0.0 0.0 0.0 \n", "ENSG00000185291 0.0 0.0 0.0 \n", "ENSG00000169100 0.0 0.0 0.0 \n", "ENSG00000169093 0.0 0.0 0.0 \n", "\n", "Gene stable ID ENSG00000198223 ENSG00000185291 ENSG00000169100 \\\n", "Gene stable ID \n", "ENSG00000182378 0.0 0.0 0.0 \n", "ENSG00000178605 0.0 0.0 0.0 \n", "ENSG00000167393 0.0 0.0 0.0 \n", "ENSG00000185960 0.0 0.0 0.0 \n", "ENSG00000205755 0.0 0.0 0.0 \n", "ENSG00000265658 0.0 0.0 0.0 \n", "ENSG00000198223 0.0 0.0 0.0 \n", "ENSG00000185291 0.0 0.0 0.0 \n", "ENSG00000169100 0.0 0.0 0.0 \n", "ENSG00000169093 0.0 0.0 0.0 \n", "\n", "Gene stable ID ENSG00000169093 \n", "Gene stable ID \n", "ENSG00000182378 0.0 \n", "ENSG00000178605 0.0 \n", "ENSG00000167393 0.0 \n", "ENSG00000185960 0.0 \n", "ENSG00000205755 0.0 \n", "ENSG00000265658 0.0 \n", "ENSG00000198223 0.0 \n", "ENSG00000185291 0.0 \n", "ENSG00000169100 0.0 \n", "ENSG00000169093 0.0 \n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/lohia/anaconda3/lib/python3.7/site-packages/numpy/core/fromnumeric.py:3335: RuntimeWarning: Mean of empty slice.\n", " out=out, **kwargs)\n", "/home/lohia/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:161: RuntimeWarning: invalid value encountered in double_scalars\n", " ret = ret.dtype.type(ret / rcount)\n" ] } ], "source": [ "make_distance_matrix('/data/lohia/gene_distance_expresseion/gene_tx_map_37', '/data/lohia/gene_distance_expresseion/gene_contact_map_rao/x_t_0_less_way', resoulution_in_kb=10)" ] }, { "cell_type": "code", "execution_count": 273, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.7 s ± 10.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "%%timeit\n", "raw_df = pd.read_csv('/data/lohia/gene_distance_expresseion/gene_contact_map_rao/GM12878_combined/50kb_resolution_intrachromosomal/chrX/MAPQG0/chrX_50kb.RAWobserved' ,sep='\\t', header = None)\n", "raw_df.columns = [\"pos1\", \"pos2\", \"freq_norm\"]\n", "freq_norm = raw_df['freq_norm'].to_numpy()\n", "freq_norm_dict = dict(enumerate(freq_norm, 0)) \n", "\n", "\n", "#this step is done to reduce the memmory consumption\n", "#df_tmp = pd.read_csv(\"/home/lohia/data/gene_distance_expresseion/georg_paper/MSB-17-7548_Dataset_EV1.csv\")\n", "#GK_genes = df_tmp['Gene_IDs'].to_list()\n", "#gene_data = gene_data[gene_data['Gene stable ID'].isin(GK_genes)] \n", "#gene_data = gene_data[gene_data['Gene type']== 'protein_coding']\n", "\n", "\n", "tmp_val = []\n", "gene_occurence_frequency = []\n", "for tss, tes in zip([1,5], [1,5]):\n", " #pass\n", " raw_df['tmpv1'] = (abs(raw_df['pos1']- tss)) <= (10 *2000)\n", " raw_df['tmpv2'] = (abs(raw_df['pos2']- tss)) <= (10 *2000)\n", " tmpv3 = (abs(raw_df['pos1']- tes)) <= (10 *2000)\n", " tmpv4 = (abs(raw_df['pos2']- tes)) <= (10 *2000)\n", "\n", " \n", " #raw_df['BoolCol'] = raw_df['tmpv1'] + raw_df['tmpv2']\n", " #print (raw_df['BoolCol'])\n", " raw_df['BoolCol'] = raw_df[['tmpv1','tmpv2']].sum(axis=1)\n", " \n", " \n", " index_list = raw_df.index[raw_df['pos1'] > 0].tolist()\n", " tmp_val.append(index_list)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import re \n", "\n", "def sorted_nicely( l ): \n", " \"\"\" Sort the given iterable in the way that humans expect.\"\"\" \n", " convert = lambda text: int(text) if text.isdigit() else text \n", " alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ] \n", " return sorted(l, key = alphanum_key)" ] }, { "cell_type": "code", "execution_count": 591, "metadata": {}, "outputs": [], "source": [ "import matplotlib\n", "import matplotlib.pyplot as plt\n", "from matplotlib.colors import LinearSegmentedColormap\n", "import matplotlib.ticker as plticker\n", "from matplotlib.colors import LogNorm\n", "\n", "\n", "def plots_with_1_level(group_x):\n", "\n", " change_group_level_1 = df_2_or_uniq.groupby(['chrom_x'])\n", " nrow = int(len(change_group_level_1.groups.keys())/3) + 1\n", " ncol = 3\n", " fig, axes = plt.subplots(nrows=nrow, ncols=ncol, figsize=(4*ncol, 4*nrow),sharex=True,sharey=True) \n", "\n", " for key_level_1,ax in zip(sorted_nicely(change_group_level_1.groups.keys()),axes.flatten()):\n", " given_group_level_1 = change_group_level_1.get_group(key_level_1)\n", " #given_group2 = given_group_level_1.groupby(['order_diff', 'category']).mean().groupby(level=2)['exp'].plot(ax=ax)\n", " given_group2 = given_group_level_1.groupby([group_x]).mean()['exp'].plot(ax=ax)\n", " given_group2 = given_group_level_1.groupby([group_x]).mean()['exp (GK)'].plot(ax=ax)\n", " #given_group2 = given_group_level_1.groupby([group_x]).mean()['SRP063477'].plot(ax=ax)\n", " #given_group2 = given_group_level_1.groupby([group_x]).mean()['SRP026208'].plot(ax=ax)\n", " #given_group2 = given_group_level_1.groupby([group_x]).mean()['SRP115956'].plot(ax=ax)\n", "\n", " ax.axhline(y=0.5, color='r', linestyle='-')\n", " #ax.set_xlim([0, 2000])\n", " ax.legend()\n", " rects = ax.patches \n", " ax.set_title('%s' %(key_level_1))\n", " #ax.set_ylabel('%Population')\n", " ax.set_xlabel('Distance between gene pairs (MB)')\n", " ax.set_ylabel('Co-expression')\n", " \n", "\n", "def plots_with_2_groups(group_2='None', group_3_x='category'): \n", " change_group_level_1 = df_2_or_uniq.groupby(['chrom_x'])\n", " change_group_level_2 = df_2_or_uniq.groupby([group_2])\n", " nrow = len(change_group_level_1.groups.keys())\n", " ncol = len(change_group_level_2.groups.keys())\n", " fig, axes = plt.subplots(nrows=nrow, ncols=ncol, figsize=(8*ncol, 8*nrow),sharey=True) \n", "\n", " for key_level_1,ax_row in zip(sorted_nicely(change_group_level_1.groups.keys()) ,axes):\n", " given_group_level_1 = change_group_level_1.get_group(key_level_1)\n", " change_group = given_group_level_1.groupby([group_2])\n", " for key,ax in zip(change_group.groups.keys(),ax_row):\n", " given_group = change_group.get_group(key)\n", " #given_group2 = given_group.groupby([group_3_x, 'category']).mean().groupby(level=1)['exp'].plot(ax=ax)\n", " given_group2 = given_group.groupby([group_3_x]).mean()['exp'].plot(ax=ax)\n", " given_group2 = given_group.groupby([group_3_x]).mean()['exp_georg'].plot(ax=ax)\n", " ax.legend()\n", " rects = ax.patches \n", " ax.set_title('%s, %s' %(key_level_1,key))\n", " ax.axhline(y=0.5, color='r', linestyle='-')\n", " ax.set_ylabel('%Population')\n", " ax.set_ylim([0.3, 0.9])\n", " \n", " \n", "def plots_with_2_groups_same_plot(group_2='None', group_3_x='category'): \n", " change_group_level_1 = df_2_or_uniq.groupby(['chrom_x'])\n", " change_group_level_2 = df_2_or_uniq.groupby([group_2])\n", " nrow = int(len(change_group_level_1.groups.keys())/3) + 1\n", " ncol = 3\n", " fig, axes = plt.subplots(nrows=nrow, ncols=ncol, figsize=(4*ncol, 4*nrow),sharey=True, sharex=True) \n", "\n", " for key_level_1,ax in zip(sorted_nicely(change_group_level_1.groups.keys()) ,axes.flatten()):\n", " given_group_level_1 = change_group_level_1.get_group(key_level_1)\n", " change_group = given_group_level_1.groupby([group_2])\n", " for key in change_group.groups.keys():\n", " given_group = change_group.get_group(key)\n", " #given_group2 = given_group.groupby([group_3_x, 'category']).mean().groupby(level=1)['exp'].plot(ax=ax)\n", " given_group2 = given_group.groupby([group_3_x]).mean()['exp'].plot(ax=ax)\n", " #given_group2 = given_group.groupby([group_3_x]).mean()['exp_georg'].plot(ax=ax)\n", " #ax.legend()\n", " rects = ax.patches \n", " ax.set_title('%s, %s' %(key_level_1,key))\n", " ax.axhline(y=0.5, color='r', linestyle='-')\n", " ax.set_ylabel('Co-expression')\n", " ax.set_xlabel('Distance between gene pairs (MB)')\n", " #ax.set_ylim([0.3, 0.9])\n", " \n", "\n", "def plots_with_1_level_3d(df, group_x):\n", " change_group_level_1 = df.groupby(['chrom_x'])\n", " nrow = int(len(change_group_level_1.groups.keys())/3) + 1\n", " ncol = 3\n", " fig, axes = plt.subplots(nrows=nrow, ncols=ncol, figsize=(4*ncol, 4*nrow)) \n", "\n", " for key_level_1,ax in zip(sorted_nicely(change_group_level_1.groups.keys()),axes.flatten()):\n", " given_group_level_1 = change_group_level_1.get_group(key_level_1)\n", " H = given_group_level_1.pivot_table(index='gene_order_tss_x', columns='gene_order_tss_y', values=group_x)\n", " #print (H)\n", " print ((H - H.T).max().max())\n", " #H.mask(H < 0, inplace=True)\n", " #elix.reset_index(drop=True, inplace=True)\n", " print (H.max())\n", " vmax= 1\n", " cmap = LinearSegmentedColormap.from_list('mycmap', [(0/ vmax, 'red'), (1./2, 'white'), (vmax / vmax, 'blue')])\n", " current_cmap = cmap\n", " current_cmap.set_bad(color='grey')\n", " # vmax= 1000000\n", " # current_cmap = LinearSegmentedColormap.from_list('mycmap', [ (0/ vmax, 'white'), (vmax / vmax, 'blue')])\n", " # imgp = ax.imshow(H.T,origin='low', aspect='auto' , cmap=current_cmap, norm=LogNorm(vmin=1, vmax=vmax))\n", " \n", " imgp = ax.imshow(H,origin='low', aspect='auto' , vmin=0.5, vmax=vmax, cmap=current_cmap)\n", " #imgp = ax.imshow(H,origin='low', aspect='auto' , norm=LogNorm(), cmap=current_cmap)\n", " #sns.heatmap(H, annot = False) \n", " ax.set_title('%s' %(key_level_1))\n", " ax.set_yticklabels([])\n", " ax.set_xticklabels([])\n", " ax.set_xlabel(\"Genes in chromosome order\")\n", " ax.set_ylabel(\"Genes in chromosome order\")\n", " \n", " cbar = ax.figure.colorbar(imgp, ax=ax)" ] }, { "cell_type": "code", "execution_count": 516, "metadata": {}, "outputs": [], "source": [ "df_2_or = pd.read_hdf('/data/lohia/gene_distance_expresseion/dist_files/11_dist_with_georg_hic_sub_median_hic_500.h5')" ] }, { "cell_type": "code", "execution_count": 499, "metadata": {}, "outputs": [], "source": [ "df_2_or = df_2_or[df_2_or['exp_georg'] >= 0] " ] }, { "cell_type": "code", "execution_count": 508, "metadata": {}, "outputs": [], "source": [ "df_2_or = df_2_or[df_2_or['hi-c-rao'] >= 0] " ] }, { "cell_type": "code", "execution_count": 504, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0\n", "gene_order_tss_y\n", "6 30508.0\n", "9 30508.0\n", "11 30508.0\n", "12 30508.0\n", "14 30508.0\n", " ... \n", "3345 23677.0\n", "3347 23677.0\n", "3348 23677.0\n", "3349 23677.0\n", "3355 78596.0\n", "Length: 1004, dtype: float64\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plots_with_1_level_3d(df_2_or, 'hi-c-rao')" ] }, { "cell_type": "code", "execution_count": 513, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0\n", "gene_order_tss_y\n", "6 0.999501\n", "9 0.999501\n", "11 0.999501\n", "12 0.999501\n", "14 0.999501\n", " ... \n", "3345 0.999501\n", "3347 0.999501\n", "3348 0.999501\n", "3349 0.999501\n", "3355 0.999501\n", "Length: 1004, dtype: float64\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ranked_matirx = rank(df_2_or['exp'])\n", "df_2_or['exp'] = ranked_matirx\n", "plots_with_1_level_3d(df_2_or,'exp')" ] }, { "cell_type": "code", "execution_count": 592, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0\n", "gene_order_tss_y\n", "6 0.883556\n", "9 0.883556\n", "11 0.883556\n", "12 0.883556\n", "14 0.883556\n", " ... \n", "3345 0.943445\n", "3347 0.943445\n", "3348 0.943445\n", "3349 0.943445\n", "3355 0.943445\n", "Length: 1293, dtype: float64\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAEMCAYAAADZOkBJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOyde5yN1f7H32vGZdwHgyEmuXPGJQ3JQXJS6qSLU0o/RElyKFSSblLpehBOl6kjxYnUkeSodBOO3JKQFEnuMZX7dcz6/bGe677MPLaZMcz3/Xrt11rP91nPWms/ex6+e+3v+nyV1hpBEARBEARBEAxxp3sCgiAIgiAIglCQEAdZEARBEARBEDyIgywIgiAIgiAIHsRBFgRBEARBEAQP4iALgiAIgiAIggdxkAVBEARBEATBgzjIpxmlVC+l1MLTPQ9BEARBEATBIA7yGYhSqqtSapFS6pBSal6E8+lKqR+UUllKqV75P0NBEARBEIQzF3GQzyCUIQ74HRgLPB2l6bdAf2BFfs1NEARBEAThbEEc5HxEKVVDKTVDKbVbKfWbUmqC59zzSqk/lFI/K6Wu8NjnKaWeVEr9DzgE1NJaf6q1ng5sjzSO1vqfWuvPgCN5/Z4EQRAEQRDONsRBzieUUvHAbOAXoCZwDjDNOn0h8AOQBDwL/EsppTyX9wD6AmWs6wVBEARBEIQ8Qhzk/KMlUA24T2t9UGt9RGttb877RWv9qtb6BPAGUBWo4rl2ktb6O611ptb6eD7PWxAEQRAEoVAhDnL+UQPjCGdGOLfTrmitD1nV0p7zW/JyYoIgCIIgCIKLOMj5xxYgRSlVJIZrdW5PRhAEQRAEQYiMOMj5x1JgB/C0UqqUUipBKfXnWDpSSsUrpRKAIkCc1VdRz/li1nkFFLXOy2ctCIIgCIIQAHGa8gkrvrgzUAfYDGwFboyxux7AYeAloK1Vf9Vzfq5law2kW/V2MY4lCIIgCIJQqFBay6/3giAIgiAIgmAjK8iCIAiCIAiC4EEcZEHII5RSE5VSu5RSa6KcV0qpcUqpDUqpVUqp5mfSeIIgxI48r4JQsBEHWRDyjklAp2zOXwHUtV59MTHlZ9J4giDEziTkeRWEAos4yIKQR2it5wO/Z9PkGuBNbVgMJCqlqp4p4wmCEDvyvApCwSYWTd5TIkkpXTPUWKoUHDyY7XWZTS9w6kW+/RrOPRd+/dUYjhyJYSJJkJEBdevC+vXGVrMmh0pUpOT3XwOQce4FJO3baM5VqGDaA8R5vlccPpz9+PXqmdKeK7C/Sp2wZsWK+Y+zsqCoJdwWH2/K7PZT7t7t1qtk7TCV7dsjNy5a1K0fN4n5dtUw97eydufJ1q3h11aqZNonpFB5x7fGlpnp9HmwdhMASq372nfZjmoXUHX712xLvoBzSu2BQ1Y+lBMnzBvcYc35Autz/tp/vZfDjS6gRNFM2LbNsemUc526WmFdW78+G3aafCt7936dobWuFLVT+1rVSUNGTs2Ar78DvB98utY6PcCFXs7BnwRmq2XbcZL95Pp4Sqm+mFUrSpUqdUGDBg3yaEqCcGbx9dfB/i3JBeR5FYRcINZnNt8d5JrA8lBj06awaFG21+3+xL2qUmUFDz4I48YZw5qIIVzZc+218Npr8M9/wmWXGdvIkXzdqAcXpCkAXn1wObd/3s2c69oVJk0yda83u2YNrFsXfZx0y2d6/nnH9OW9H4Q1q1bNf3zokGsrW9aUx475fXMvL7/s1u859LipPPJI5MaVPH8nlhM9/j5zfwce+4d77t57w6+90SjTvVBnPHePsrJh79rl9LnsTdNPi5bKd9kTdy7noYcVD/RazlOt3ocVK8yJffsgMRFGjDDHS5aYskj0P81v31pO0+q/wbBhju34i67KXdFi1tivvcY1z7UBYNYs9UvUDn1kEOEvNALqiNY6LVif0TuJYMtLWZnA41nOfjpAWlqaXr48yD0RhLMfpYL+W3LqQ0WwyfMqCCdJrM9svsu8pSml5dEV8hsFXwdxaJVK03FxOf+FZmWpgP2pmsBsrXVqhHOvAPO01lOt4x+A9lrrmFeQ82I8+Q9XEFyUCvbsB+yrJvK8CkKeEuszm+8ryDFjr94C9OoFs2bB1Vefer9du8L06aZeuTIMGgTDh5vj+fOhnZVf48cfYcAAU69Vy71+3TqYNy96/xMnmvLFF11bly7h7Vq18h+vW2fCDwCqWCu1ycluaEIoCQluvUMHU2Zl+dtcey3MnAkpKa5t82ZTLlhgyrZtw/uuXNmt79plysWLYaMVfnLzze55e6U8dPV58GAYMwbGjeNo34EUH/2UsVeoAP36ue3ssJDQJXUvn35q5m2PD/4QnTFjoGtXhpzzNqO7LIz+viKgVLaL1w7HjgXqLidmAQOUUtOAC4G9p+IcF8DxBEGIHXleBeE0cuY4yLNn+49zwzkG1zkGaNTI50j9ktIWJ7LVjiUOpU54PLGPW28Nt0UKXfA6rWAc0dDA5A0bXEc2lLp13XqoY2wzc6Ypbac4KHv2hNtWrID+/cPtiYmR+/jrX2HMGD6sM5Arut9gvnBEmmv79jnPZ+lSePZZN/YEzGfnZcYMRne5EdpO52SJFsZysiilpgLtgSSl1FbgUaAogNb6ZWAOcCWwATgE9D6TxhMEIXbkeRWEgo2EWGSDztKouEhhYHlAqKO9YUP+jBs6ftBxL7sM5s49+XFGjXJX6PORoCEW8fFpOiEh57/QQ4dy72fWgo78ZCsILrkZYpEXyPMqCH5ifWZF5i2Ubt1Orn12oQAnw65d/ld+0759sNVbmwoVItszMly1j0h06ABbtkQ/36yZeeVEvXpmBdl+efFsiIyFuLicX4IgCIIgnL2cOSEW+cXUqU410OpxNCm1k2XfvtzpJ1Zee+3k2k+bFtmelJT9daGx1qGsXBlsfDtEIxKRQlhOAnGABUEQBKFwk/8O8rnnwqOP+kx/XNub8hWyd0afGuWGgjzQ6H3e2HMNt7T5CYCPN9Tm8n7nsWz6z4AlMZaQAM2bm5/0wa9V3KmTiatNTOTGrpq3pys4coSOVxVnzRrYsdPMpWgR7ciHPbb9dh7NMvN+ouhjTlfHj7t79wAqtalvKpYD99mnZt7ff++2eeGF8PcXKgNdvz7s3Wvqtg5ynTquLRTvHr0HHzTlpk2u7W/8B1q3Nive3hXcEydg9WrOG3gV4IYpAzT96BkA3ki+37H98IMpP/gAVt9sbbQbPpzOV5n3afu3W7b6P8+2bTQLxn1Didbnk5Li7iM8cAAmb/yz0alr0oQHhpl+npp7Adx0k2nkdap37WLK4b+xZInZc2hz1VVu/fARZT7jhg05/sxoYywWLFRGKXGQBUEQBKGwIyvIguAhqIqFIAiCIAhnL+IKCEIIsoIsCIIgCIWb/HeQt2yBu+7ymcpnt6nLwivFy8cf0+rua+DddwG4/MsvYdMmWtza2G1z5IjJzmdvPPPGIHg6fLvlP2C6Of/Jhg38Wro2JJsmvXoBffsC8OjkEvCUGe+hNSOcbjQK9cTjbr8hsbF/qW/SNf8lrYxj++mncmHvr00b/3FSEuzfb+olSri2aFmtveEUF9T6w5Qf/tPfyLpfvjjfqlVhzhz69TMxCk3HepSErM/llr4eCbUFzwLQcdwC2FbDMX8wtzgAt/7fUWN43T/03LlAyebcNVTTqRNcUtOEw7BxI1y6CJqYFNV//rN1wdMr3Gx73puzcCHdx46le5X9PLX0IcfsUwHsUhbWroW0NIr2v52TRRxkQRAEQSjcyAqyIHiQGGRBEARBEMRBFoQQxEEWBEEQhMJN/jvIWVlGusCLNw1zEM4/n/olt8D//Z857trVpH9es8bfLjXVtYXGJowYAcOHs6zdPbTAyILd+XxtVq6Er6wm//sfVpwFJn1xz56m7gmjUCtXhmfB87JkiSkPH3ZMHTp0D2sWmkG6USM3nbFXAS6aipovsiOaRrEt+3D0qGs7cAC+/ZbZq83hkM/d2IiilvLDskc+cGwthpqyb19YPzLesb8/3fS57pnIQ990E6Tv1MxsB3PmwNSp55kTVc4jFUxK7/nz+eMP64JHHoHq1U3dGz+xZw8vvVWODxbBnIe/csy3T7zIqf9l3z6YP58tFZpSo7L1XgPK2MkmPUEQBEEQCoYr4A2gjcL113sOxv9qYlcnTTLHtuNnO0F9+phy9myoWdPU7dIez8rmtmkTtABYvpw/fw/ffus2K1cOd4xBg2DYMFP3eqlpacbji8Z//mPKSpUcU0azcAe5a1f/cal9OziRXBVw82CUKXkCHRdPJC67LPoUAOPEX3WV0XHzxoDXqweLFlHdUlQrOvOdsEtbzPbI8ln3LTkZn86aHeJ94oTnwokTnVTbu3fDsmVmdfbECfcjr2GHMc+fD0CPTrvNcZN0N2HI55+7fSYnc9maw7z5JvDZZ57xXQeZevWgfXtqjB4dU0pyWUEWBEEQhMJNvjjISqm+QF+AbNZaBeG0IzHIgiAIgiDki4OstU4H0gHSlNI5NI/IrFluvceDD/LxXMXlTSyVA1udIdSzufRStx4Sw7B3j6ZcoqJTJ8uQlUV8PPTogRNjceAArFltppva2JNowv7pH0z8g7WqClhLq8DOnaa8+GJTfvml06R3rwi34Lvv/Mfff0+8FRZSxg4POXIElZUVfi2wuObdTv2aSA02b3ZX2Lt7VrCfNaoUTnbnULUP8KWg3nvEqFUkJuIofAAUK2bK48c911mrx2Dysnz3HWRmQosWcFVTK1lJYqIpe/eG1z3SFzt3wkcfRXondOwIn3wCzHaVQS6s6Wkw4UeTICYlhW+3VozYR3aIgywIgiAIhRuldUz+asykKaWXx3Jh8+ZufcUKaNkSli7NrWkZWrWCV1+FxkYu7pmnNfcPsxzjpCRH9swX4/v77yc/TqQ0yaFx2VbIAeDGI3z+efQAWTtWGsJk9Bzat4d58yKfGz/elAMHRj4fyuLFEdNG791j/p7KJfoz161Zrc2XjAEDYMKEYGNEokIFc88TEvxx5faXJAiJxzEo+FprnZZT9yVKpOmaNXP+C123TgXq72wgLS1NL18e01MrCGcdShXsZ1+eV0HwE+szWzBikC+5BL74Ivs2rVu79RUrct85Bli5ksO1U7Fkh/nTnzznWrSADz809cGDXXu5ctEdUoDrrjOld2XWu+vO4u0NF/iOW159vrNJzw6fLl5MRxVCPl6khFMvai+379rlNli1KrJzfMkl8P337L7R5MuuFNRBnjIlorncqgUR7c4KfJ8+5j0sXGiON2wwy8o2q63dgo09mtZ2EDa4X0iysvz6yD6h7FNDVpAFQRAEoXBTMBxkQSggiIqFIAiCIAjiCghCCLKCLAiCIAiFG3GQBcGDqFgIgiAIglAwHOSc4o/Br4UL0KABrFuX61Mp8fdbI5+w448BHn44eIfvvRduu/LKMNON/33eb5iJKw1hv8/ff3c3CoZQ1KvzvGqVKaMoXviw7n2l7d/m0DCEDh0ib7bzxgV76dsX0tN5b2NTruvSJXrijgcfDLdFiNmmQwe/ysXixTnPOSDiIAuCIAhC4aZgOMiCUIAQB1kQBEEQCjfiIAuCB9mkJwiCIAiCuAKC4EFikAVBEARBOHMc5NB4Wq92bm5x5Ah8841zaCd5y3VWrAi3hcbQZmZC6dKmbgsiHzoUlhHQwZt8JEjscSihMd45MW1aZPuaNdledl2tb+HlWdEbBE28snJlsPnEgDjIgiAIglC4yX8HOTnZpBX28uijJoPdwIFuzuMQB+jRrt879ccuXcC3ZdvSdOZjxrB3L4wZE3m8Sy4xZd26ri093a2vXm2SUjRvzs/vfs2IEfDGSpPUom9f+C5LO9M5/6OnAJhS4wHn8t27oWdPt7uKSf4Mcu/PNNfb++0AJk4Mn+bBhqN9x6VKuY6anbivSBEoWTLy29yyxa0/95wpz0k+4RqzskxSjkaN2LHdzZ64eTNUqwZXXWWOZ292k6DU6NLCVLxJQaxvDV3urMKM9lYiknnz+HWn6dO+3WtD5je5zSv0+PxzGnVrSvv2L9Ft/kvOubbtlMl+9+67XBxnEo182aat+8affNLtqHFjJwHK7CWVHPP//uc2eSrrfPNFYt48N4HIScRNiIMsCIIgCIWbM2cFWRDyAQmxEARBEARBaa1zbpWLpCmlz5Qs8Q8/pHn8CZVzw9wg1CuLJUziVEhONuXOncHa9+kTWarNDgEJWerudpNm6jTF3Xdp4uJgzNhTuK8tW5r75Q1LmTzZrffoEXaJgkC52MuWTdMXXpjzX+inn8aW2/1MJC0tTS9ffqY8tYKQtyhVsJ99eV4FwU+sz6ysIGdDvjnHkP8OcShBHWObaDrGUWJApk4z9/KFj+r746VjYenScFsEpzgWRMVCEARBEIQzxxVo1cqtL15sjk8lOUTr1rBoEQwY4Ca8mDULypaF9u0B+HKe5uLFz5hzw4bFPlYo3gQXNvPm+Y9//91d1bU39W3fboKGI/Hss2791ijJTmys9+cb105AkpQU3r56dbe+dSsAf/yuKV/B8wWiVy//2O3a+fvIyICkJIb89QdGt+zhbgrcvt2UycnGSb/+enP87rvR59+7N7z+ut9mJ0cBaNIk+rUBkBALQRAEQSjcSIjF6cDrcNpYjmfMeL26WFajx40z5V13BWtfr97JrQRbDvBvGTpsI2OeYt0XlZUV6CeWxMQ03bZtzn+hs2cX7J9ZcxP5yVYQXCTEQhDOLM7+EIt69dz6jz9Co0awNlQrIZfp2RPefDP3+23RItx2qg5y8+ZuPZZ/HG21h6CsXRs5FqFfP1O+/LLPvHfdDsolKr7/HtqA69BnZRlVipMdP5TWrd36okVu/ZFHTDliROCuZAVZEARBEAo3BcNBrlAhR/3bH2b94NTrv9CfZb1fpMV7w42hY0fo0AGuvdYcz5zpXmiHDHgd7EWLoHt3mDKFZ57W3D9MQdmyfDx9L59+Cs89b1Y4y818g72LLIfv+uvdcIDp0/2T8666hsbyjh1ryk2bHFOPjHBJujJ3+o//9jc4fNjUS5UyZbNmUD4x8or/x3PdVdnLa1r3au5ct8Hzz8MTTxinf8AA1z5/PqxaxY0zbgTg7bGe+Q8aZEqPxvA7cabdi5fCF/b5sWP57FMzL7vr7/E7yF27wseTJ3P11VC/lXa6XrQIXqjszn3BfNNP23aeVWavI56ZCfv28e3GMjTN+Mwx95j0F6c+eZGC1FQzmXXrOBlExUIQBEEQhILhIKek5Ogg+0JjExONH9qtm79RiRLhF9qxtXZp07o1TJni7inbt4/LW/7B+vXl/e0szV3S0kyMMvjjgEuXdvV6AQ4c8Jfx8WFTql8/fJqh+T+qVXN97Vq1TFm+7AnYFfI+LEqWrBI+B+89rVfPTThivyd74Dp13Gl6V19tPE5my16mnDED87lZ1KljSmX7tc2b+xKi1K4NlCjBiRNGE9p+v61bAxPiTAiG/QUkFLtzey579rBlSxma/qmWY7ZzqjjExZn3X7Zs5D6zQRxkQRAEQSjcFAwHWRAKCKJiIQiCIAiCuAKCEIKsIAuCIAhC4aZgOMghaaUjYcesAtSrN4ofp8OshMYA/PQTPPy5Zv58c/5RpnJJe80Xb+2AffsAmPCJG9cwYKAyQbH9+/PiizAQaJGm2dPSRE/8NEgzpt17HOoKj628xvR58xEnxGJy5Xt8c7t51R1OPX7Pb6byj3/ACy+g/z6AUH4bEv7+unb1HyckuGElR45YxmPHgoUM2JJrDRq4tunTuWVQed6gD3ra245Z/fgDLFrE+hctw0LPpkQr7mJgxqOO6bMr3FMDk0xa6vEMceb/88+m/PKjr3n3XRg/wcRc/OtfsGXL3wCcz8l+SzdmZZkY8ilTmDrV2Nv26wdXX20OZsxwL1i3jpvvr8HKlVDqn+c5Zls1DjB5twcP5uiQByj+0fvR71MEJAZZEARBEIRsHWSlVDzwtNb6vlwbMTXVjeW1OJFyHvFFQqS/bCm0rVvhrbf4+nH31ObNxgeyZYIBLkn5iUEzagPwKEYc4YFxVdm7typgnGibUhM1/arBUWDDBmPr0MEIL5QqBSNHAmW7kIlmyhRzfsDiG6n4o1GKmNDd7SsryxN3C2zbVhGA+++5B556ikmTjN3y0wF4663w27Jnj/9YKTh40NQTE02ZkBAhxtpiwQK3PnjoagDatHFtL46yQo9bt/bJIL/2Wn3qHpjrfEe5e2hx59wLO3YA8Ok3bnt7r+HRo2bToI0dL2078yNGwPjxwASgQQOOrYNt28x9KFvW/U4UHw8LF2hmzIDR9Za6ctBT+/HexqYAXDegmjtQQgLLPjJhEF45aZ889LZtfHjrO1yRPp4Htg8Mu1c5IQ6yIAiCIBRuctRBVkp9DvxF55Jgcq7pILdr51+KjJGPP9Jc3knB0KEwapQvALVuHc36IzXMwanKsHmxk2F48W5EA3j66dwbLwB795iPt1xiBI1ib3a8hQsBuKj/+XyVUdfYNmzg153m+j59jOmD2f5+Wl+kue026N8f/vQnWHHnq+bEV1+FJ/3IgW9WaDIzoUVLd4z3Z7p/ntdcG/4egqaaTkpK03/9a85/oW++mbOuolKqE/ACEA+8prV+OuT8ucBEoBLwO9Bdax3zH1qA8VKAN4BEq80wrfWcnPoVXVVBcMlNHeS8eGbleRUEP3mpg/wN8L5S6h3goG3UWs+Ifkk+EMQ5HjvWH5vhZeVKaNaMRYvgcoD16xk4KJ7x+/dDmTIADBkClB5l2vfsmRuzNmSXJe40Yd/OzpFOPvCAW7eWiK+8EuhnKV5UrkyVXWbVum5dE/bCxIm+jH67d0N6unGOzzkHV/mjQwe/g2x/UbCX9iMwd67px8s1Kd9EbhwDubFJz/r15Z9AR2ArsEwpNUtr7RXvfh54U2v9hlKqA/AUEFPO7IDjPQRM11q/pJRqBMwBasYyniAIp4Y8s4JQsAniClQAfgM6eGwayFcHudtN7grhzTebMAU7u/LevZB6URmWfLofgAtbKT6Ypel813lOTMAb8851rr/l7Stp3rspKzBO22PAUy1mcOBHuPAvpVlitevfH6a1M/7Kl5MV9LB8F4982vHS5SlazLNiud/MwXaynRTVnrTYL3X9Iuz9FSvmP76tymyoYa1ez7EWDHbu9MdqeHi9netk9r41cqa63bs0lSorli1176W9CjvK+h5QfoF7rk1bq58HH3Rstj7x1q3QpEklAK4BujxqHGNbgnr05o5GGs9aydiwwfi+GzbAd99B/xomHvmnn2D6nu6Uy/wNkpKY/Mh6AHosdOO6SU93qmtWa97oasJO/nLInetll7nNFwB8+in89788UWG0MT4cLHtfLsYgtwQ2aK03mn7VNMyt8v7n1wgYbNW/AGYSO0HG04AdxF4OiKKrJwhCPiDPrCAUYCTVdHZUqxZdm1cIzGMjNI+OsBzUBg1OOnlHbhA0xKJSpTTdpUvOf6Hp6eoXwCtKna61djx5pdT1QCetdR/ruAdwodZ6gKfNW8ASrfULSqkuwH+AJK31b0Hf10mOVxWYC5QHSgGXaq2/jtJfX6AvQEpKygW//PLLyU5JEM5KcivEIjefWXleBSE6sT6zOa6VKaXqKaU+U0qtsY6bKKUeimWSZxziHOcKjnMMp8U5PhnsFeScXkCG1jrN80oP7SpC96HfRu8FLlZKfQNcDGwDMmOdeoDxugGTtNbVgSuByUqpiP8GaK3T7fdWqVKlGKckCEI25NozK8+rIOQ+QX5MfhV4ADgOoLVeBdyUl5MShNNJQAc5J7YCNTzH1Qn5eVRrvV1r3UVrfT7woGXbG+O0cxwPuA2Ybo3zFZAAJCEIwulAnllBKMAE+a++pNZ6aYgt1lUuQSjw5JKDvAyoq5Q6TylVDPOl0qdvqJRK8qwGPYBRtIiVHMcDNgN/scZuiPnPdvcpjCkIQuzIMysIBZgg/9VnKKVqY/30Y8VN7cjTWeUnzZv7j73ej5OhoxCQkmJeQYkk5gwm88exY66OtU2aCf9Zs1ozcEAuxL1PPBVfMjp2qumcXjmhtc4EBgAfA99jdqJ/p5QaqZSyMqDQHvhBKfUjUAV4MtZ5BxzvHuB2pdS3wFSgV27JNwqCcHLIMysIBZsgOsi1gHSgNfAH8DNGr3VTLANWrZqme/f2b4LavRtefc0Kx7IlxW680ZTNmrF3j6Z8ebd9YqIRi7AThRw8aJTCbCW2vfsURYtoGjRwfdxjx9zr//xn+OAD2H9AodBoFGVKaw4cMOdTU2H1U7NRna9ynKFbb4VXnjBf3CvUd2O8jh/3+4KVK5vy6qvhnp67uehq09buG4yKQyh16/qPjxxx52wnIilXzp+UxMsff7j1qiY3Chdc4Nq2bnWVJLxhwC1bwoABRlYaoGZN99zPy81esaLJFR1bpue3A7vtz5sUxYuZvyN7zu3aGbGP1WsUXy3StG5tlDq8n4PNiBFG5OPDm95A9boFgEmTQrLjWQwZ4vjaNGrk2letcuvTpxsn9rq497noaZMJcfHiYEH6yclp+v/+L+dNeqNH554WakFHdFUFwSU3dZDzAnleBcFPnukgWxI0lyqlSgFxWuv9MUzO3WFbpgyjjvsT820b8Ry8Zh0UtzK5edK0lUtUNG7iOvKdOhmH6tprzfHOnXDN2qcYMcJyrofA8bSL4K67oLGRH3v/p1Tn+mtGXcgdNy+BdGjSBFhlsue9/LJRhVud9SfovJYiRTQ3WdHWAwcC48YBcMcdblq/TZuMw21z3XWmPGfjAmh2E59v2AbgZogD+vYNv0feXBxgnE9bTc520hs0CM+4Z7PXE7na2RIz9mbMy8yEJUtMmu0pk917edFFUHvuS5QufSdgbpnD9OkAdO9+p2NaYmngrV/vkVZLh9atTdV+n1/+WNWktysGF7VWKKX5+99hzBiTRvs8K0u01vDozjth+M3QrhcNGxoH+Zbmq7mlp/WZWclJAPbWbEvjxlC0qF8L2aO8xw0dfjN6c3v22B8ZLVtGvm+RkEx6giAIglC4ieogK6WGRLEDoLUeHXQQa4d/OkBacrL8PCQUaMRBFgRBEITCTcaE8ZkAACAASURBVHYryFamC+oDLXA3D3QGYs/x/Ouv8PzzPtM53uMRIyJeNneuW6/S6jyzQmjHoQ4aBLWGM/imVf6LevUyWsbANd7f4K9dyvOfAumYFeJVULasWXHdvx+YanTa69SByROPm2uaN4c1awB4aqZnpb5Pqn9yzR4xZYaRyC3xjycAuOKgk4SQIUOeCnt/oQn/9uyBbWbxmYpWhEPVYr85/YbyW1J9p15x5N2mcs9qt8EXX9Cia1cAuu9/ybXfNBGWL+fKrmaVeHCt991z1/YH4PkMdwV5wgRTfvwxvNLoBcfeqVPIhObt9GU/ufhiuP9++Ne/TGiEnUn7yBGg08tOLPj48dYFTZpEfJ/lgJEfaOLj4YpHWjj2zs2WuY2S3E3eLdLLcjLkYqIQQRAEQRDOUKI6yFrrxwCUUnOB5nZohVJqBPBOvszOQ5W1nuxzmzYZ59dyWLn9dlN6stWRkWECXq1Meiz1C3GU6dIRcPxnwPz0vz80gMQOzt21y7Xt3OnWK1aEWrX843rZbW049mTAOxASTgEmRthLYqJbty+tmpgZ1XureMAjDG/P74cf/I3s+IxZs8LaOvsRI2Tqq1jEjd+oWbMcYEIjHG85AOXLQ5Vdq0lMbExWlhu/7GSUXmTSVqemRrzcR6lSViyz90tPcpTGUb5wZYc4yIIgCIJQuAmSajoF8G6tOobkghfOUmwVC0EQBEEQCi9BXIHJwFKl1HsYqbfrgDfydFaReO45//HKlW79lVdMaa8Wg2dp0sJebbb59FMAbul+AnrBbXGv81KD3jzyCEZMB2uf4LCXPQcW/foFn7e9S8zDw2ObhbdLGRRmSrVlOrwr1tHwhDNElIoANxTko4/CTtkbHh0pEC+jRjnV1n2eAWDtWuBZ9x7bt2fjRsswz99FxYrA9u1UqNCYWrXg3JkmPOPcBg1Mg0mTAKgy5/XIc/dwSdp+8/l73ueMGZ4GnlsRSzZEWUEWBEEQhMJNEBWLJ5VSHwJtLVNvrfU3sY9YxBcjCsCcOSYGtXp195zXAQZ4yhO3++ij0KqVK7nw7LN8du1459f0BQs9WmjdupkyNMjXokWreJYBDZ/tTZEipsvjd90F48YxezYwzfL8pk3DlrRonOruMwxNHPHNSjP2bxmaivUqwlVXAfBVP/c7Ra9e4fM4VvNu33HPnq6/v2KFKTt0iO4rp3sSHdtKeT//7No+nPQrE96pwoCBITpxR47w/cbi9LfkoHt7gon1nA8B/61rYkWfv/UWPOPp5hEr9Hr9elO+AkYWpF8/aNOG+fOB1zqxpojm6FFovMa836JFYYWnn2WpvQFo0XuBa+zY0dNgGZQty333ap7zOPNeFZAp0zQ3/vi4O6mTQGKQBUEQBEHIVgfZyvK1SmsdIDI0GGlK6ZgUGr3aaDNmGF22YcPMsR03azvXUTay+ejeHaZMMZ7ezTcbm+1QjRwJQI/umsmbLza2+bHvSwyErZNmY8XkBsbRXMO/adBLUlL0e2OvxnpXoiMx2oiX9F8/mJ9+MqaP5yqzoxG4o4PxkF+ZUgoOHXIue3+m5prWu+kxpBKJiTC+1hhzYvNmGDvW7d/WpvPq4oXSvbv5RvCf/7i2LVvc+vDhpnzrLce7V7t2BdJBPOecNN2/f85/oQ89VLC1UHMT0VUVBBfRQRaEM4tYn9ls18q01lnAt0qpk0ixJghnLvYKci6kmhYEQRAE4QwlSAxyVeA7pdRSwNEq01pfHf2SbChdOjy9c7VqJoQhG67Y/IpTv3faK/z733DHXCM/lpUFF42/Gf1vk/5YxSmWLNZcOP85uP56AKb87zzn+u49FAMTJzOeKTQc2Y3vuRn276d5u9KUKgULMCvIU6bAheO/BGDApJ/Bkkn7cKQrKbZrF9zyF48ExdGjprRWVHnzTVN6ZClunNI57P01CwlLTu7jZq0rXdrtMjmKWsNrr7n1x5pbMRbeVeguXdjR9W6qVlOsWe3+apD66t2Qnk7DJkUBeHmee+7i5808X7ryA8f2gVX95BNXPATgoiSzcrzcUt5rM/EgPYpMdVbnBw2CVbdW4t//Ngk+umUMBkzIyBeZz/PHvnjKV1B0KW/USmZ0vdEJafGl1Ovenc5PXMiey2DkyO6O+S5PvMfqm1YZ9ZFatXhh+K/GOChKCsIIyCY9QRAEQSjcBHEFHsvzWQhCAUFikAVBEARBCLJJ70ulVBVMshCApVrrXdldky0HDsQUzzvak7ev4aq3Sbr7RpoO7mAMf/87TJ2KOvdcp82FrawVw6FDAehuqSTYDBsGTLAWKUcADz7Irbe+YDJTX1oEMjNp1gwG/Nnaj7h4HVhxXVcs9XxnSEyEGpE3AALuKq4nXXKDLuEryA90CdEsrlOHbTvjATinmKWl/PnnMG52xGEee/FF92CopXfsvc/z51PVWqVPXT3Vta9bBykpXHSRObx46IXuOUs7uo0rYuFswgN4se4Yp24LezxjreT26Olfsa1eHR6+9CtGjbqIEyfcRCFLlwJFilDeajfjJWvFN3m6k+rax4QJTNmjKZdwFC691DF37uzZ1PfUNOcXibsHDAAgm08oDHGQBUEQBKFwk6MroJTqCiwFbgC6AkuUUtfn9cQE4XQgMciCIAiCIAQJsXgQaGGvGiulKgGfAu/m5cRCafjIDe7Bu+/StNMk+MLKrrfMigm2lyUjEaKtdk51s8L56N4hxjBuHAOergaJnZzg37JlcVd+bUk5cFNcg5tpLxovvxxmemzo5Ajze9F/3KwZ55S31lW/+861e7PgefGqYEQYEzDB2uCqf4BRkQAmzrJWsBssJZTGT9zo1Efb1zZpAkWGOPZbWpnrL5hupbxu7O9jwYzdkNyGVu1O0LMnnHuVaXBuyZC0gl41jiiUG9DDBIi3bOnYRjV9O3Ljk8j2ZyMOsCAIgiAUboI4yHEhIRW/EWDlObc5Mc3Nbh1f61wj+2YnvGje3IQTJCSYYydvsocrrnDrH37oVA8/OZoSY8ZAmzYcH3I/RQ+5aZV37cI4gqFYMnAA1KtnnLVo3HuvKQ8ccEz/KdkjrFmV5/y2cuVczeOW91u2+APw/fcRh1lwpIVTb3uFtZOueHG3wcyZ0L+/iWn4619d+0svAXDfa8axfa53b/fc6yZpx/cjXOfT3ji4MB3u9E7A2j34DyuWISzdR1ISPPYYO/9tdJ17W5snadDAxLlUr27ybdthFXYCkUjceqtJ753mqra88bsbtnILNxm5usREf4rwgIiDLAiCIAiFmyAO8kdKqY9x8stxIzAn76YkCKcPSTUtCIIgCEKQTXr3KaW6AG0ABaRrrd/L85kJwmlAVCwEQRAEQcg2k15eEHMmPa928ooV0dudKnPmwJVXAqCzNCrOUmOYNClyjuigeGNtZ84MO70ssaPvuMWhL60gaNzsdxs2RA4fASeWGHAz6a1d629TrJibMS+UyVZcdA9PqIcdXx1JdeSqqzC5uEOw1TT69488Tvv2ULUqTJ0a+bwdNhEkE5SVxhuANm3cujfG2kJBoEw6NWum6YcfznnsPn0Kdjat3EQycwmCi2TSE4Qzi1ifWfkxWRBCkBVkQRAEQSjciIMsCB4kxEIQBEEQhEAOslKqBJCitf4hx8Z5xfvvu/UaNaBnTzeN86lw7bVuyENGBu98XhFbUK5nT3AE2TZtcq/xpnAuWdJJQQ3Ajz/6+x9sUipTtKhjWp3sD6cASEzwH/9S+WInGuKI9SnVbNUx6gYyW/EC4Lxx8ZEb2R3WquXaLrwQlizh9eMmbXPv7h+752x1Dq+yhSU59+W9H3DxbE8yEOuzGJNhQjQG4w+xWLhA06at4u4mX/DCs0fhxAlzonVrk4faYssMI9lXIyWb1NCzZplQkznuXtFvO93v1Jt6Qyyef96UtppIAMRBFgRBEITCTZBEIZ2BlcBH1nEzpVQUMV5BOLOxVSxyegmCIAiCcPYSZK1sBNAS2AOgtV4J1My7KQnC6UMy6QmCIAiCEGQtLFNrvVepbH7yFoSzCHGABUEQBKFwE8RBXqOUuhmIV0rVBe4CFuVwTXQaN4b//tdn+mBlDTpfbTngPXuaMiS++PLbqjv1TqM1u3fDA/veAExCvRuG12Xv8vUAlEtUcN11sHq1Gy/syWRHvXqwfTtUrswle97jCxRkZtLlhnjWrYMbihSBzEz+/W/oMsPI4F16KZSx0iDfMekip6tDh2CyV05t1SpTtmkDhw4x+fzRgBnO5oXLw29LQkgMcnIyHD/utyUmwsGD4dcCHD7s1jsNNfG91aq5toE1P2DMhs4MHqL4cMJPjv3AATjQEYYPtwyj3DTYvS83E73v2+6O7bc/mfKrfvC9HdNcrBjXvGtijz//3JgGA6SkOPJz990Hw2dpXuwCixYVp25dk53vxCJ4e1qyucFJSY5y27ejR0OHDgDsrtbUGb/S2xN4Zm1nVq6EZs3c9OMvX+u+15/79IFbbgFg/De2/JvEIAuCIAiCEIwgrsBA4E/AUUw2vX3AoGyvEIQzFAmxEARBEAQhSCa9Q8CD1ksQzmok1bQgCIIgCDm6AkqpNGA4ZmOe015r3SSmEY8fh61bfaayZWu4B145NQ+lSnnbw65dUCbjZwAaNjwPDh2iXLwnjOK990ycwrRp4Z1lZpp4BaB0acs2ezZVqlzD+vXWeYsGDUxZpuQJE08BVKzodlWyJP74CTvEwmprh04kJ7tNPIpvUW3R2njvgxdvOIadgK9RI0+D/3xI6nWdAX/oBcC6da5T6NwPgNmfAFCvjRti8bO55ZQoge+zqlnTlNZthQP4s/sBSUlmnDJl3Ht48CBGGq9yZd/cWbbMmWilJv4/tYQE+NOfTGJAmxIlPA3mzYNOnaByZXc+J4GsEAuCIAhC4SbHVNNKqR+A+4DVQJZt11r/EsuAaWXL6uUXXug3TphgHMru3cPTI9t4UyyHBuzaVKhgyt9/j2VqMH48A38YwPgJJh764Yc0jz9hxUZPnAgDBgDw+gQ3EPjIEbizyKtuH337+rr8ZVP4/fXI9zqsXOk/LlvWDZsOsqLZurVbv/56UxY9tNc1duoEdeoYbeOrr3bM3z/9PuPGQcuW5rj3E7XdazZuDB+oXj1Tbt4cOe11Tqmmx40zXvioUeZ4wwbf6S2bzf3y6SB7v114BZ/vvNOtW+nBAejcOWzYoKmm69ZN0+PG5Zym9corC3a62dxEUtcKgoukmhaEM4u8TDW9W2ude7rHBw7AwoV+28KFZknYt3wZgneVFqBfP3j5Zb8tVsfYw7XXAhNMfdcuzwl7ZRh3tRSsvBmbIziSFtbCKBkZrs12Rr149xDax/ZKZryV96N4cbe/ULyrwkWXf2UqXq97+3bIsr7fPPGEY16+HO66C9assQzeLy+RHGT7zXfqZJxdm+pmE+VPlxmntTaRHeT1nQZSN8uTb6ZJE9+9tT/mGt6LGjZ067aD3L493Haba09KijjeySKZ9ARBEARBCOIgP6qUeg34DLNRDwCt9YyYRtQ6fOWxT5+cr/N6q6mpMGKE69Vt3hz2c35gBg2CsWNNvWJFUlPdUw0a4DpvPXs6YROXZH3mtGlzx1+g5PNRuy8xy6g11PCElZS+9Z6wdhdkLvEbmjVj/7HiAJQ5sMPY9u3zOZM+mndy60MtBZAZno9o1y43JsHjTfdgNQx7iE39rEyFS0LmAf6V2rZtAVjTuBupXgfZunFfWb65Zx0agGVLNS1aKvr0gXnz6qOaNzcnKlc276l9e5g3j5SUCO/tiy/8x0OHmpXwHTtcW5Uq4delpLjhMqFfsLJBHGRBEARBKNwEcZB7Aw2AorghFhqIzUEWhAKMrCALgiAIghDEQW6qtW6c5zMRhAKCqFgIgiAIQuEmyFrZYqVUo5ybRUcp1VcptVwptXz3qXQkCHmM6CALgiAIghBkrawNcItS6mdMDLIC9MnIvGmt04F0gDSlwmUdmjeHFSuy7WMJ7uaxCzt14p35Vbjh/vuNYds2s2nPS/XqRk7O3tVWp457btEiI1FWsyYv1RvDnZgY5N2XdmP2LLC3fn3yCXToYBbPm3o3AHriiYvOfi97j2nfPlN6YqgXLw5vdkUNv37b8bjibrf2juRjx/wqDh5enVbGqd9ua6VVd7MPcuCAE/t9uKSrU1ei12WwYgUf1bTm4b3G2qT38TUvOqb1663rlkCqHbs9aBDMMvs41z4acXpMmABvjB3L5rFmr+CxSSY2u1gxiJ8wAR56CObNY+ZM0/7OyN0YHnoIli6Fy92UhGt+cHXxUgF69YKjR+Hxx43R+/nnQG45wEqpTsALQDzwmtb66ZDzKcAbQKLVZpjWOoLGSe6MZ7XpCozAhEl9q7W+OdbxBEE4NeSZFYSCSxCZt3Mj2WOWeVNKiwDNaWLBArj/fjf99umgdevTMn5QmbeGDdP0xIk5/4W2bp29bIxSKh74EegIbAWWAd201ms9bdKBb7TWL1m/0szRWtfMcfDYx6sLTAc6aK3/UEpV1lrvitihB5GNEgSX3JJ5y6tnVp5XQfCTZzJvWutflFJNgbaWaYHW+tuTHeiMoXt3o5AARo9t6dLcHyOSzlvoOJ06uVk39uwxZWJi1BVkX6aMDz+M3KZjx8jaxbGQkhJZOeSRR0w5cmTEy/Z/9D/KNKsdWUIO4IorTBntPUSjVi23Hq3vgOTSCnJLYIPWeiOAUmoacA3gFfrWgJ0apRwQXGojtvFuB/6ptf4DIIhzLAhCniHPrCAUYIJk0rsb85DaqhVTlFLpWuvxeTqzULySZV26GFkxR7z3FKhQwdVPfughkwzEcpD/1XcJty21ElbMnGmJJGO0e20qVgyXIfNiS6odO+ba7DgCL6HvpUkTd7eY7SAfOBDd+fM6iLbWmn2dPY8mTeCjj/zXpaSYc8OHm2NPEpFsGTLEhFaEsOyqxwBoEcVBHjkSnlu+HLp2NYYff/Q72u9bcnPeNHmRSEmB2293j71ayXamlBg4iVTTSUop7zJNuhVKZHMOsMVzvBUIyZDDCGCuUmogUAq49KQnfHLj1QNQSv0P85PuCK11yB+EQSnVF+gLkBJRe08QhFMk155ZeV4FIfcJ4grcBlyotT4IoJR6BvgKyF8HWRDyiYAryBk5/GSjIthC45m6AZO01v9QSl0ETFZKpWqtsyJcmxNBxisC1AXaA9WBBdZ4e8Iu9O4bSEvLPg5LEIRYyLVnVp5XQch9gjjICjjhOT5B5Ac7GFWqQI8ePtP3tz5Hw0Y5dJkW4otkl3XvZGjSBObNM/Vdu3h1VhXsdckpU9wNe7z8srNy/OtcN8Lk0CE4r50n75tnA5/TCXCi3SWOqVMnwti3r6rvODnZ3d+XkGA21SUlwZ49TSO+jXbt3PrGm/4AzGqozYsvKTdZhjcd37BhcPPNjH+zHAADI3Vur5yDu/o9I0QG21opz2n1tX9/TDruNm2M4eqrTSo/m0jeqXfF3k6UEhLe8R/+5tT/Ruzkog7yVvwJAasTHkJxG9AJQGv9lVIqAUgCYvkZNch4W4HFWuvjwM9WGvm6mNhHQRDyF3lmBaEAE8QVeB1YopQaoZR6DFgM/CtvpyUIp49cknlbBtRVSp2nlCoG3ASEpmzfDPwFQCnVEEgAYlVCDDLeTOASa7wkzM+3pxawLQhCrMgzKwgFmCCb9EYrpeZh5N4U0Ftr/U1eT0wQThe5sYKstc5USg0APsbEDk7UWn+nlBoJLNdazwLuAV5VSg3G/LTaS+ckK3Nq430MXKaUWov5Jeg+rfVvp/peBUE4eeSZFYSCTZBNerWB77TWK5RS7YG2SqmfI8UtCsKZTm6mmrY0jeeE2B7x1NcCf86d0QKNp4Eh1ksQhNOMPLOCUHAJEoP8HyBNKVUHeA34AHgLuDKWAY9Xqc6OIc/5bK8+B6MzM02yj23bjDFE5mtvWTdUqxyYOFpbuSEuDjZsiGU6/ljm3btZ6xHY8cbwctddjjzbXM8/Z9u3w/033OAaxozxdb++uok9PrDKtdmxxV68Ihdg8orYimxZ1pat33+H48cjvw1vSLAdB5ya6mmQmGgUOzZuNCogNs2acbxkOSc82ecdNmhgyqNHXZudkCUxEebPd+1WTLEdzn1+5GmycCGct26diX2GsFjybTvjAbO925mLN2bay9//7lRrRvrRMS4ORoww9UceidAgnJNQsRAEQRAE4SwliCuQZf0U1AV4QWs9XiklIRbCWYukkhYEQRCEwk0QB/m4Uqob0BPobNmKZtM+WzIz4beQCKr9+zE6wAcPQv36xvjJJ+4F+BcAXxg8mDeajuaWWy3N3GrVzOpucrI59ibTePNNU27a5No8nX157wdcPNssFX959wy+HOw2270bJ1Xx5IwraHfA2L05PTIzgec8mr8hK8gTJpgyPt617YqgUaBCRDyOHHHeusOxY0Y1IxL797v1ppbQhVcamWnToEMHKFaMo2NfcswrVsCmd2H2bHN880pXsKTxmFsB+KTbRMdm3+KXXoIXW80zB4sXs+V5kzr6TUtG2XMbAbjvXs1zzytGj4bSI1dzzFrw37cPbo+Lg/R06NPHyS/ySp067mB24haAGTP4uNadNGgAC/7rml95xa0vAHjxRWjUiDErLraswVaQQRxkQRAEQSjsBHGQewP9gCe11j8rpc4DpuRwTVROnPDnrwDLIdm+3TjIe/caY4h36Msbse+g8Z3spHC2Q2zLgXkdZDvlZpT0xt5f79PSjAqdTUICJj0zsPag66+d8IjeKQXb9rphAudEHAW8W6+yIqjcJiSE2+yf+r3tvY62l1Kl3HrEZHnJyY7MW/Fjrjd97FgZ31i+iIdy5cLm1rimubZSpTJQtqxjr5FlMo+XLx8xMzmNGplSKSNXZ5OYCDRv7niljqO/fbszmeMV3A+laGYmR46YORX1fE2rVClkQOuPLNK9zo7cjEEWBEEQBOHMJIiKxVql1L1APaVUKvCD1vrpvJ+aIJwexEEWBEEQhMJNEBWL9sAbwCaMzFsNpdQtWuv52V0nCGcisoIsCIIgCEKQEIt/AJdprX8AUErVA6YCF8Qy4OHD8N13ftvGjfBN8hWc/+6lrhrF66/72tjhDQA8n87lFSrAkiXmuHZtU86dGz6gHYMcGtdh0XDS/U69VMYv7NnjhggcOeL2mXQZHLBikHd7UjkcOeJP6hYaYmGHRHhjhCPFEe8OSQ9RsaIbZWKHTBQrFj0G2RtiYItOeEUm7quz0chgAHz0kWNfm3EDa9dCiRLm2HefU1IAaJvgSdrUfxwAfUZNhpGe+23JcFhRGWH0nt/b9NUW2qYddqU8KleGTsth6FAAathiJZmZTtx40czDbkeTJnFNzyz01XdTs6ZrDgsrWb8emjd3RDfuvTfyvCIhKhaCIAiCULgJ4goUtZ1jAK31j0qpmDfpCUJBRlaQBUEQBEEI4iAvV0r9C5hsHf8f8HXeTUkQTi/iIAuCIAhC4SaIg3wn8HfgLkwM8nzgxbyclCCcLmQFWRAEQRCEICoWR4HR1ksQznrEQRYEQRCEwk0QFYurgMeBc632CpMivmy2FwrCGYikmhYEQRAEIYgrMBboAqzW2pvuQhDOTmQFWRAEQRAKN0Ec5C3AGnGOhcKAxCALgiAIghDEQR4KzFFKfQkctY1aa4lJFs5KxEEWBEEQhMJNEAf5SeAAkAAUO9UBT5xwc0TYxMVZOSyOHoVduyJed/hwiCE52c0q0aSJKVu1MuXixW67ChVMGSVRCAkJbr10aZRyD4t61J6LFfMfeymWzV2xrzlxwjdM1HY23jhYe4rZxcYWLx7eV2Kip0GtWlC9uqnb9wvYNc2UpUqZ0k5O4hu4YUPXdtVVAOzcCTU8TSlbNnzMCOcdkpIA+GOPojyYpCQZGW4ilAoV3Bvl/YwyMyEuDpV1goSEeMcclqCkbVsoWZKsrCjziYKsIAuCIAiCEMRBrqC1viy3BtQ6POtZWBa0CBw9GmJo3tx4aQCpqaasV8+UXge5cmVTbtwYuWOPs/gbFX0Z77xO+bFjro/tdfCPHYPt293j0PSCx4+b0uufR8qGF/qloXx591rbaU1IcBLWheF1BO37mZHhaVC6tPvlw+Os2vfVnp+VvA6AxnXqALD3hOvRl+vQAYANn0ILT/c/7KkCwLp1kednp+g7cgR+2FzC8Xk3boRLAKpVgxUrXAe9ZEnny83RY+63luIdOkBCAvsPxfven52A0SExEXbuzPbLSzTEQRYEQRCEwk0QV+BTpVSuOciCUNBRWSdyfAmCIAiCcPYSZAX578BQpdQxwFrTFJk34SxFa046LkMQBEEQhLOKIIlCyuTmgNn6H7/9Fh5rYBEahrG/WVvK2LENdsjA7beb8s033YZ2iIVdgj/OuUoVpxoa+uD9ef7AAfOrP7ihD2DeS7VqEafsa3sih0XH0FCA+Hj3Gjv2uEgRfziuF29YgF333bPERCvQG/aXruqYT5zwxx37+rfihJcudU2NGlUCzP3wEhoOEsaVV8Lw4ezZ4w9LOXjQOt+8OcyebU/R3JAGDQB/2Ef9mjUhIYGSJf0hMBHv76+/Rvtzyh5xkAVBEAShUBMoJYJS6mqgnXU4T2s9O++mJAinEVlBFgRBEIRCT5BMek9j9mP92zLdrZRqo7UelqczE4TThTjIgiAIglCoCbKCfCXQTGudBaCUegP4BojJQS5SJLIUWEYGHG93LnHVzwUgPuR8qIxXQgKu9IIt7fDdd+EdW6oLzJoVeUJNmzrVX37x/OSPP5QiIcFEgID/p32loirTAW64g9fncsIIPISGCMTHu+Pbb69IkehqdV4VNXssn583ezZUrAhAmRVfOubk5ItZt84NmfCGJBxudD4AqZ4xqy7/AICUlM6+8VNrmg7i4iJo2IETu9GoETRO1bzzrlGmcMJa5s0DXGESDhxw3uzatW439Y8dg7Jlid+1gxIl7ykpRwAAIABJREFU3FARXzhJ6dJG2aR06ajiJdkiDrIgCIIgFGoChVgAiYDt1oUqzp4y8fGQlgZFt//iBvqGeJahMm+ZmVDUbpuaCjVrwp//HN65Lf0WhTdmlOEWq75jh/mF3eaPP9z6hg3QsqWpe/WI4+KiO63gfhkIvSaUUAe5eHHXZrdXCp9OczQixiBXq2buEfgCjTMzjQLb6tXm2Otor1ljSu+9r2rdzxUz4PLWrY1x0SK2/GEc42gydP9aWJ/bMPHEXy1WfPONse/Zg7n/rVvD/PmOHjNFijh/C74+L70UihblYNmqvvvu+wzi4syrSBFHBjswWmcTSC0IgiAIQmEgiIP8FPCNUuoLQGFikR84mUGUUn2BvgDly6ec7BwFIf+QGGRBEARBKPRk6yArpRSwEGiFiUNWwP1a653ZXReK1jodSAdISUnTOTQXhNOLOMiCIAiCUKjJ1kHWWmul1Eyt9QVAlCBeQTiLkBVkQRAEQSj0BMmkt1gp1SLnZoJwlpCVlfNLEARBEISzliAxyJcAdyilfgEOYsIstNa6SZ7OTBBOB7JJTxAEQRAKPUEc5Ctyc8CEBCP15WXxYqi98RNYuBA6djTGkFU6bzY1hg5l5ky4uksPANatgws2bYLOfukxwFVueMCzr/Cpp5zqhg1WpXLlMDWKI0eAa68FoE0baNXK2BcudNscO+aqW0TCVmDwSttFWoAsWtR/7M2aZ5fFi+OqPITgVaywx/IqUpCa6qTr+6PehY65QxGjivbBB+H9tNjzCQD/2dfRsT36SX3A3HMWLXLskyaZMiMj8vzs+zBnjpmfpTjHli3AdddB+/bw9NPu+7vuOpNdD7ixztduR6XLQp06TJ8Eq1a5Zt992bEPli+HjRvZ3vqSyBPKDlkhFgRBEIRCTZBU078opeKBKkHaC8IZjcQgC4IgCEKhJ0gmvYHAo8CvgO05aEBCLISzE3GQBUEQBKFQE2RF+G6gvtb6t7yejCAUCMRBFgRBEIRCTRAHeQuwN68nIggFAgmxEARBEIRCT1QHWSk1xKpuBOYppf4LOEmHtdaj83hugpD/iIqFIAiCIBR6sltBLmOVm61XMet1SpQ9sJ2O8x/22TpOegguewLmz4eRIyNed+utnoMOz9LtriPQdyIAF7Rubew+qQuLUMmMEB5fbol07NrF7XH/Yt+A2+BeYzr/fGDmTABuGbfFka+4/vpuzvVbt0Lt72dH7X+I9TXj7beznUaYgkZSEuzaZerx8aZMTHTroZQu7dZ79jRlE2+UeHIT6NULgPIT/+GYK3e9hyuvhH37zHHjKfe710yYAMDf7A6Bv9kSHqNGwXS36cMbewOQlv66MVzpn9+d042axPDhcNddoIYMtt4oMOU9eO89wPM5XznGvbibe7+ZOhW6daN3pUq+v5Xatcu5bQYCN90EaWlc7FHaCEwurSArpToBLwDxwGta66dDzo/ByCgClAQqa60TiZGcxvO0ux54B2ihtV4e63iCIJwa8swKQsElqoOstX4sPyciCAWGXHCQLeWXfwIdga3AMqXULK31WruN1nqwp/1A4Py8HM9qVwa4C1gS61iCIJw68swKQsEmx0x6SqlPlFKJnuPySqmP83ZagnCasGOQTz2TXktgg9Z6o9b6GDANuCab9t2Aqacw86DjPQ48CxyJcE4QhPxDnllBKMAESTVdSWvtBABorf8AKufdlAThNBPMQU5SSi33vPqG9HIOZoOrzVbLFoZS6lzgPODzU5h1juMppc4Hamito8cEuW372u9t9+7dpzAtQRCikGvPrDyvgpD7BFGxOKGUStFabwbnP3Odt9MShNNEcBWLDK11WjbnVaTeo7S9CXhXa30iyMCxjKeUigPGAL2CdKa1TgfSAdLS0uR5F4TcJ9eeWXleBSH3CeIgPwgsVEp9aR23A0JXy4ITF+ffUQawe7fZoJcNyckhhjp1oLK1kL15c8zTYeVKt56URPtm7qEv/fPcuXDoEACprVxz+fLAq+9E7X6JFTV2442ubdu28HYpKf7jffvcFNP2PIoWhePHI49zwuNa2bc3fv4XrrFYMTh40NSrV3fM9mbAatUsw6+eAaz36/u82rQxZeiuQiuvdfv2kedHq1Ywb56b/rp27fCJ46ak9nEk5JfFiy+GL7+E/fsdU8OG5Qijf3+oVcvUZ+e4aOqSOyoWW4EanuPqwPYobW8C/p7H45UBUjGKNADJwCyl1NWy6UcQTgvyzApCASZIqumPlFLNgVaYb7yDtdYZeT4zQTgd5J4O8jKgrlLqPGAbxgm+ObSRUqo+UB74Ki/H01rvxWiG2OPOA+6V/2gF4bQhz6wgFGCU1vn7a0yaUoXn6S5dGg4cON2zyF/spejt0RZLgZIl3dXpfELB1zmERACQ1qCBXv7qqzn3165djv0ppa4ExmIknCZqrZ9USo0ElmutZ1ltRgAJWuthAd5G9nMKMJ6n7TwC/meblpamly8vNE+tIGSLUirQvyUB+8r1Z1aeV0HwE+szGyTEQhAKD7mYSU9rPQeYE2J7JOR4RK4MFnA8j719bo0rCEJsyDMrCAWXICoWhYd69SDN/ZKhs05xdf1MWj0uWdK8TpVp08wrGhkZcPfdpz5OXpI7Mm+CIAiCIJyhBHKQlVLxSqlqSqkU+5XXE8s3vLv/EhPB89NU6D60QDRrZl5nGgsXOpkCA7FhQ0Tztlpt2VarbfgJa0PdM69VhHvuMeEnoZs1gxK2YxPz5cZ+nQp2qumcXoIgCIIgnLXkGGJhZfh6FPgVsJfONNAk6kWCcCYjK8SCIAiCUKgJEoN8N1Bfa/1bXk/mtFCtGuzcaeojRxr5uDp1ALOPrPxpnFp+crSRyXJcPKeGvXqZMi7kx4dLLwWMZByEZ8T49qfSNAXWrIElGypyYYUKbj/79p3cZAcNgo8+gnnzXFsTz/e1H388uf685GIMsiAIgiAIZyZBHOQtwN48nUW3bjA1hyy7zz7r1ocOzb2x16xx6zNmMKbBKwy2Du+915P7t3Jl1/t7+WX3mk6d4NNP3eM+ffz99+xpyhtucEw/NbwqbBpLl/qPGzVyf8m3BSGqVYuiE4xfR/mcfwwxlXc8+sxbt7rqEUU8H/u990KtWhQvYukRe0MUIjmakyaZ8vHH/fZ77wXgf/8zh+eHXNa0mdHEv/xyK8zbDq84dsznIP+WYeK+KyZF0tC3GDYMRo2CDh0c0+5+Dzv1Su9mc20QxEEWBEEQhEJNEAd5I0ao/L/AUduotR6dZ7MShNOJOMiCIAiCUKgJ4iBvtl7FrJcgnL1IiIUgCIIgFHqCZNJ7LD8mIggFAlvFQhAEQRCEQktUB1kpNVZrPUgp9QFGtcKH1vrqmEY87zx48kmf6aeW3ah9xx2wdi3MnWuMM2f62sxueJ9Tv4qh8NprsHixMfx/e+ceblO1Pv7PS7FT5J6E5BK5lLST+pbLSS4dJDkqoY7cD4rT0eWo5BSny1cdKpEkhC6PhJ9LF4mShLZrUUnSTUhyfGu7jN8fY8w151p7rb3W3vZlsd7P86xnjjHmmGO8c8w9eOeY73jfBg3sxq3c8MQTMGQIAEefncjOu/xT69cHhfwKHn0UgH982S9U/OMImP5wq5jNf9DnJQA2bvTLlr+ctV5k4LlgsDlvP1x2XtGqVvXT555rrV+6LvetYM67/U923K+4gsOHDofKJ06Eokdg5W02P/3VV/2GPHd1K1f6Zc5Y+qV3q3BrUIDTTwd8G+RBEfIdzjScWkz4z3+sDtrDjTlly0LXrqF606bZ49DgxePG+ekhQ2D5cihVCnPhRaHip0f6VR6qXNkOYJUq/gbMzz8nYXQFWVEURVFSmuxWkKe74xN52uORI7A33CFG6dLAtkNWiYmhyNSvH1HQrBm87DTNU0/NvTwBrbPojq+oVq1m9HqffRbaCVfqx4hzixfHbP4c587hl1/8smJRDFWi6WRFi9qjd3tpaTG7CcOL9hwW92PvXlhoAzaduvzdUHH9+lezY0egbrQQ0MHNes45dMVId8ObNwNQvfqVUWU69aAdgJDzCy+IiufNwlGhQpSLfw3sES1b1sq4bRsS8Fxx6qmBjXne20arVlC+vE2rgqwoiqIoSoLEVJCNMWvd8f2CE0dRChm1QVYURVGUlCeRTXqKklqogqwoiqIoKY0qyIoSRDfpKYqiKErKkyMFWUSKAGcYY3IU+kxE+gJ9AaqddRZccknY+TlzoE/vttYQtlcvW+gis7FnDwBjA16Xx//1r2z8vTYNh7mAGBUqwIQJdlMW2KAYHtWr26NnmAvhm87atg0l395ekzlz/A1ihw8TanN9sUu5qHVFK1JAln374Idh/qa9s/v3D7s3b9Pad9/5ZV98QRaCNsoAv//u62negub+/bY8GsFbLl3aHoMb/+7u399uhnv4YX6od3WoPGM2bN8O337rZCt/eehcbW88mzYNlf1xk92at+IhaBcUoFs3ABY3s9kxEfJ9c6AM5wK//QZr1kCPfw8EYO+h0ygHdiPekCEhOahRw7+RP//Zb2jrVr6o0YYarWDR//OLnQm0pV49u2nzggvgrLNs2euvkxBqYqEoiqIoKY8Yk8VBRXgFkZlAf+AosBY4ExhrjHk8Nx2mi5g1kYXTpvkR52IR6ckgvxg7FpzivWmjoUFDt/mrShVWzLTa21WfP+/X37kTHn44dnue3N5mMWBr45uzVFu+PDwfXMQsWdIeS5d2SnsUgh4urmnsNkEGIs2xYUP0C73deV40wCuuiF4vkvR0q+lGMmKEPcYak23bwqP1RTJ6tD3ed198GerV89NduvjpUaPssXXr0M5GmTdvrTEmPV6T6dWrmzX33x+vGtK7d0LtnQykp6ebNdGetaKkICKS1HNf56uihJPbOVskfhXquRXjTsBCoBrQI6cdKcoJw7Fj8X+KoiiKopy0JGJicaqInIpVkJ82xhwWkeyXnXNKvNVjyN9V4yD33BNKNvh2kV++axdXZYzPuSyef+aAj7Y631+bpVq17meG5U/L/NW/xrOV2LHD/qJxYTM/3cf5jI61ahzEc+s2dWr8ukGcu7csxFo5LlsW9u1j7YHaXBK9hiWRlWOPLVv89JQpWc+/9RZcGd3tXEzUxEJRFEVRUp5EFOSJwA5gPbBcRM4FcmSDHJfq1WMrfo6Xpvo6+a2rBvBulwlcXWyFLcjIsEqrZ7fsmQsEmTTJT/fty/vLDM1bCFs/N9Spa80ovt1pSEuDChVtvvE/2zFqvu23/VW/+jaxwc9XpUqF2TGzfXt4v57JQcAG+qGnwpVhgEERkTV+PHBmyN64SpXzAChZpYovQwQvfeD7b77Vc6AcpFo1a5KweDHf7fLH8pzuLWHdOpp/PhGA9yc38a/p3Ruw4+LhxWZZuhQmXHuHzYwbF1KYG15p723jpoBfYuCqentZ8exGOl0LDdoaJk+25du2Qcs/iVVwe/Xizbm2r+s6hV8f5I05husv/Mr3pQw8PN8PGjLifoHu3a1t+h1ORs8WPRFUQVYURVGUlCaRUNPjgIABMN+ISMs8lSKOcgxwa8XAau5zz3F1t27QubPN16hhj9EUY4+ZM8OyzX9fAkCdiv7uuKqHtkLrTqH8iy/6m9fCFNP0HJiyePawAR7sFCWwSPnwyIHlEu8BgFtbt/YzXjTCIDt32h9wzr5AWL9ly4BAIMLOvbNcWnW77wq7aq1SAPz008XwWoZfyb0kNGr0kc1vCm+jSBEgI4O0tIY0bQrnrHnTylLRbnxk924AOiYQn7F2baBWrbCyEcEXIIAZM+zxhx/iNxhEvVgoiqIoSsoT1wZZRM4SkRdEZJHL14PwKMOKclKhNsiKoiiKktIkYmIxFXgR+KfLbwNeAV7IJ5misrai71Tsko4drbeFxo0B+GnaEs6qJH7Y4n37rNnFyJEw163MBldVixWDJtaUYPqCMnbHYUYGTy6sQ6m7PuP23vbz/pAh/pf59o0bw7p1NhMMj9yvH4yJdGoWwPPYEAzX7LmnCzI3fAWZtDRo0cKmswllHaJmjBDZQZo0gdWr+ehgw1DR5T17wrRpvs7XqJFfP8OuEP9Ut3mo6Kmn7PH00wmLZf1QW7tyvNvzoOdsjj2+/x7+6NqDnb1h/XrgWmdy4p7h0bvupug99/DII7Z4RDa3sWMHNHjggdCqM8D6Jn1C6YusR0FLLFvpWKgNsqIoiqKkPIkoyOWNMa+KyL0AxpgjInI0tx2axpdweFW4C5q5c+EvXZ3NaYMG9rgp/Bv9bbf56Q4d3mRFC2jTxppJbL4TphwyIQ9ln+4Tpm+4iM8ueINL3f6/1wJr3jNr1ODWO8vwEnZPWQ+g3T0XsXKl3bN2+7PPwsCBLF/ue2l7bdtaLrjAprt2DQoPF900OpR99ll7LF0apIjQpvpWAA6f41/yaRQzgrRK4fseq1WD393evMy69njaabHdvKV94qdLtrRCBD34de8OxYtD9x4SsiMGmJr2EhVHvMQjf7H5W275NHRumnsfaBHwpubtG8zIgK3drdnLdITZs235l1+6iptW2reLtDSoXJkvv7RmxpmZMH8+nPnupaE2f+3Zkw8+gOb4ljAtVpiouu3mzTDjXnjkjIdCfyoAUwNWL5nHDDt3wrk7V/D851fZwsWxbZqzoAqyoiiKoqQ0ifhBXgbcALxtjGksIk2BR40xzbO9MAZR/SAnI3Pm+DbOSt5SCGMrkJgf5CpVzBpvY1927Q0fntS+UPMS9auqKD7qB1lRTizy0w/yMGAeUFNEPgSmAYNz2lG+UiSR20iAdu38Y+fO/nJwKnDKKfZ3vPXq1QsP4BHBbwcMQ5dfnwsBCxC1QVYURVGUlCYRLxbrRKQ5UAcQYKsxJsaH/kIirxSWN97guz3FOaeK/Ry/oOoA2jMwb9pOdjzPHEH7i2h4Hh5KlPB9KAf58cdsL8/MtJ7x8py8irSoXiwURVEUJeVJxAYZoAlQ3dVvLCIYY6blm1RR+HSdbwpy8eqJ/Ny5HxUG3WgLnnsO/vY3uPdem7/wQv9Cb9OZt8EO7Irz5MnQuzd/vc3w4lTh+UmGZ5tCpUqwqF07WLSIW26BXz//3F7TqxesdDvQQoa2cLR6TYoO7Oe37Ta2sX+/3Zjnbb7bsydU5fljt2e5v0j3xl26wK5dNu3thSvH3jDfv0H+W/7cUPr0Hs58oUIFv0LFitC+PTRtGu7ybq8NS915qXXEPGfPXv+cC499ONMf+4nWXTJTpsC6Dg/azKhR3DHE1vH2E27dF27z+9fbDGecAdNqWFEechv4lqwuQ5u2AvPmQceOfL3dtnNeDQkLrhKiUSNmDfmIo0eh++VfhYqv6e9vUnybIXaD45Yt8MQTtjCRYDQeukKsKIqiKClNXAVZRKYDNYEMwNucZ7CmFopycqFeLBRFURQl5Ulkk95nQD0Tr2KC5HqTXtC12r590Lq177qte3c/MEQO+WWfoUxZ4aGRhsqV7aLv40/Y1c92bQ2LcuL9IFG84BhBAi7LCgXPrCCafXEwXLNzy8Yjj0DJkqHiFybbP48DLsbi0GHh4zZmtOHeTzpzd+05LF0Kn6xx50uV8i8Kth9c8Y9k9Wr7FSAYsMULOwhRV54T3qRXubJZ06dPvGrIqFFJvVEnL9FNP4rio5v0FOXEIrdzNhETi01AJSCHIcnymIBPXSDcr3EulWOAMjPGA/DgyKyK8KIWj0ICLohzTGErw9HIZmMdH3yQtezDD8Oynu/oWPTvDxS5jMppAeUYwpVjyF4x9pg8OTx0OEQ3x8gtuoKsKIqiKClNQn6QgS0ishr4wys0xiQQFPgEYMgQXphsoit499xT8PIUFsFAJtnhKcsutHSilClrx/cO8mBMI5XjvEQ36SmKoihKypOIgjwyv4VIhLVrfAuPS4pthLp1CUWn6NTJfqpfscLmr3LBIdq2hVq1bLpvILrahReyYrnhqmZC7VqGL3oLv+wzDBtmg80NGGiVuTrnG7au+sVeEzTxmDLFTx88CHfd5ee9ep43h0qV7DEQoe7+9EVZ7s8T0+PW3ydC/fo289NP9rhhQ7gpQYDPbns0lL5geAdfNo8NG+A//4EePeDOO/1yFxqvZQs7vu+VDrhgcxsM/++QP/aPPWaPs2fDZw/Msplu3Xhpqq0zdqwtWr9BrLmEWxE+u5Khb18YPdre60DnHOTQIbj7HoFBg+Dpp2HjRnuioR/tL5LfDhgWL4a/7PzfUNmNq/8eSr/yqnvZ6doVeve26datY7YXhtogK4qiKErKE9cGGUBEzgVqG2PeEZESQFFjzG+56TDPAoU4TxO5xoVYfmik8c0r2ra1Gtvy5QAMHmQY/3Q+2CB3jLL4/s474floLtSyI2hiEEOJzhbP5/PAOG7tnI3wjKFr6d4jMDZdugDwfOvXAOjTN3zcXpxi+Gsv4fKmhuefhwZ9Lrcn9uwJ8wqSa4YO9dNPPpnldMI2yJUqmTU9esTtTp54IqntEPMStWlUFB+1QVaUE4vcztlENun1AfoCZY0xNUWkNvCcMebq3Ah6wkTSU04qcqQg33JL/PbGjk3q/yTzEv0PV1F8VEFWlBOL/Iyk9zfgf4ADAMaYL4Aobhjymdat/V+VKjlfYY2g8cX2xWDF8sALwuTJYXVu7WmsY9/F+bFTL8nYvTuhzYPf7TJ8t8sweJCx3kO6d7cnWrWCVq3o19fQr2/Wl67GFxvIyKB4MWNXjZ991v6866+4ImFRf93v2i9WzP/t3+//gvTu7ZtZJIJnYqGR9BRFURQlZUnEBvkPY0ymiP1kLiKnYP0gFyxBrxXgR8/IJes+tfdzVbOAKUCEIvXSBzVh2vbj6ueEoXLlhKp5UQbHR55wJiITm1wW9bp1la6FRot4booJBSAJwwvCkgBnlnbPLDPTL4yMtOIR8dKTEHmkAItIW+A/QFFgsjHm31HqdMXa+RtgvTGmW371JyLDgN7AEeBnoJcx5pvc9qcoyvGhc1ZRkpdEFOT3ReQ+4DQRuQYYCMzPX7Gi0L69n16wwG6G81y/padDvE9KNWr46e0BpXfDBj/y3rFjNiqfs8PtdtlXzKzW0p5btuz45A/iRfwLMmZMeL5UKd+uOBG3cEGfwLn5vOZ5sQiOk0e7dn76Rhu9cEbRW8NtkJ2C/OZBa3lzXadwG+SXblzIrYuE2bPhv+MNgwa781dcEa4ce5sps/NUUbGifUEKhrX2IhZCjj1shJFHXixEpCjwDHANsAv4RETmGWO2BOrUBu4F/scY84uI5PrLTCL9AZ8C6caYQyIyAHgMuDG3fSqKknt0zipKcpOIicU92DfXjUA/YCEwIj+FUpRCJW9MLJoAXxpjthtjMoHZwHURdfoAzxhjfgEwxhyPg+y4/Rlj3jPGeLZJq4Aqx9GfoijHh85ZRUli4q4gG2OOAc+7n6Kc3CTu5q28iASX6icZY4LL3ucA3wbyu4BI+5PzAUTkQ+wn1pHGmNwavCfSX5DbgZhuYESkL3ZzLtWqVculSIqiZEOezVmdr4qS98RUkEXkOqCKMeYZl/8YqOBO322Mea0A5FOUgicxBXlPnF2x0fwDRtrunwLUBlpgV4ZWiEgDY8z+yAsTIJH+bEWR7kA60DxWY07ZnwR2V3wu5FEUJXvybM7qfFWUvCe7FeThwE2BfHHgUuB04EWgYBXkBQvC88HQ04nY3G6P2GxXooT1hPHii35ZkXCLkwEDgGbLciRmQuzYkbXMCyji8eOPWcMwZ4fnDQJyZ4OcXYjnoL9pl26z+9bwOq1aAXBdDJm9/XTVq8OgAUdhsDsRuTkvkSh5L7wAN9wQvkkvIyN63Tlz7LFz5/jtQl4GCtkFVA3kqwDfR6mzyhhzGPhaRLZiFeZP8qk/RKQV8E+guTHmj8jziqIUGDpnFSWJyU5BLmaMCX7++cAYsxfYKyKn57Nc+Y/nJu7wYb+sUSPrYcFtONuzJ5/6vv/+rGWRwSnGjvU9dXib9HbvDn8xCBL5ApBTmjXLUfUKB7+OfuKb6Bus+7S25UWLEh4YpHz58IFu6TZFvvde7M47dMha1rRp9LqJKsZB8kZB/gSoLSLnAd9hXzYjPVTMBW4GpopIeazJRW4fZNz+RORiYCLQ9jjtnRVFOX50zipKEpOdglwmmDHGDApkK6AoJyN55MXCGHNERAYBS7D2xVOMMZtFZBSwxhgzz51rLSJbgKPAP9xLaH719zhwBvCac9u40xgTJayjoij5jc5ZRUluYkbSE5GXgWXGmOcjyvsBLYwxN+emw/Rq1cyav/89vLBbN+u6KxseGunL+eBb/8MvCz6kzJT/BWBBnb/TvoOEAkiE/ORC9EAUAwda/7i9e9OhvWH+AoGNGxn4bAPWroWPV9vra9cyfLHwC3vNE0+EAoZMf9hfJT1yJBRlGYCSpSLMyj7/3B5LlQoVNf7z2Vnur3798HyNGr6FxSnuNaZ8eevdLhq7dvnpnj3tMbhQ22b7BP/etwS8CG3aBDNmcNGONwFY37Sff84zd/jNjyo+YfoZgPV698qorbawbl0mPGvHfvRoW/Rt5lk2LLUbs4YNDBvr3Ujxua9QvToMH+53c3tvwRwzSBHh6fG2nUGDxb/ZunX9yitXwlNPwZAh9pk4Wi78Ryj93jKxg3bkCIwbB4AMGZJYJL1y5cyaBNzEycyZSR1NKy/RyFyK4qOR9BTlxCLPQ007n6xzgT8Az0D1EqwtcidjzE+5EbQgQ03Pmmm4uVu0fRAB2raNGSnvvnsNo8fEuf5koVYtewxq1dnx2GPhWq7HzJn22C3CmqB6dbjzTu798Q7GDPkh4cAkUalVy5rBVK/ulwVfgKIEHUk41HTZsmZNmzZxRZDZs5P6P8m8RP/DVRQfVZAV5cQit3M2pomFs3e6QkT+BHjrm//PGLM0lzIWLOPHx1eOIdsw0hdckIfyJDsNG9pjggryx83+wWUEFGRPwXYxsSNeAAAWPUlEQVQrtpHMH/c1HToKK5vdQctVZ5ONhXF8vvwyXDmG7DcZ5hQNJa0oiqIoKU0ifpCXAieGUhxk8OD4deLQo2eKrB4DvPFGjqpf1jRibDzFOoaC3aGjrf/+8nwa099/z7u2VEFWFEVRlJQmkVDTyYHndQLgyivtz/uMdOwYrFrlrwa3bQvXXw8ffwzfZ/GaE8YP3xvOrmyVtgcfMKxbh7VJBq7raHhznlPojhzxjYFXrfIbqFgRHn/cz0+YEN7BTc5TnnODBjBgze1xb7dvXzh40Ka9iMoVK8Ze4PXqAtxxrbObbtTILzx0CKZN8w2Ug/Lv3s2A/tbUZkL5gIeNhx+2x9Wr/bKOdn9I8/N/4P0pX9myWrVCXjR6/es8AKa8GK4It2trWDTzFxo2K8Oll8I119jyvXvxw04Db861coSFqg7eR6NGfPfwizzzDIy+7M1Q8c2z/QBUs2a7a9etY8bmi226R4KKeR5t0lMURVEU5cQlpg1ynnYSjPIDl0R3BBaHUaP89AMPWOU4PWBS0r27/3k/1k62aKxYAVddZdMbNvBb9YahjXYXNzJ8muEUq8aN8+4zfqR5AMD8+eH5/YFYEc+7fZLbtoUr50Fat/bTb72VM3nKluXX7dZ5QtgGR4+0ND99550AmNFjkIrOmcmePaF7enKIdf82dFh4Ox+vMlzWVLjoQkPnzvDgVmej/H//B3Pn5kzeKVPsS9FTT4WKPpmyMZS+tEnWe0jYBrl0abOmecz4GX578+YltR1iXqI2jYriozbIinJikec2yHlJWJQfEY3yoyQ3amKhKIqiKCnNiWNi8cAD4fn0iJeB3but66+c4q0eA4wZQ8mjR0PZlSsBF6sjTzeBRYukFxn8Ilqd7MjpqnGQffs4M7127PNB+95//xsA+eab8AAfTt6hv4+J2sRlrUoCsH7OV7y3syaMnJV7eXv1ylJ0adfzct9ekLyLpKcoiqIoygnKiaMgO8UMgHvusT+v7KmnQp/+YxJUqIOfnw4csD6KnYnGC3PKcPvrr8OxY/TqBbOaNLH1gna4Awb46Tp1su/b8+FbrVqoaO3oJVmqXXL+b+EFCxf6niE8h8ibNsGGDdH76RjwHT9smD1GGiyXKmXbCsjCzp0AvDba2i3/pWsUE4tglD33EvJR5Ru4fFZAyd1oTRzunt4AgEe5L6yJTR/9RoOGwhU9apKWBi29+9izB/70J7/i0KH2+OST0e8T7LPq0gUmTgwVLbljYSjdpu1xbgRUBVlRFEVRUpoTR0FWlIJCFWRFURRFSWlUQVaUIOrFQlEURVFSnhNHQfZMHQAqVbLu07xQw/HMKyDcrCKI50FhxgzIzKTr5Fegt11BrF8feGd71mu88NEAhw9n329mpj0GorsFIyeHmBPhySEtzTeRyMiwx++/h2+/jd5PcNUz1gqoZ6oRxcQi2+jKy5f76aJFASgy5gY/fPaBA3CxdadW6bHo43HmmX66Zs3Aibffjl0xFo0b2+cW8DbRptZX0es2sCYfbNoUv11QG2RFURRFUU4gBVlRCgpVkBVFURQlpUkOBblFC1i2LNsqY1a1DKWvXfwDPXvCem9VePZsu2HPy0d6uIBw38j79tnAGSVK2JXonj2hdWt+fvoVxo4Gzw/DkiUwYs4cm3nnHd8Xc2BzGMuXw+TJsQX3VrcDG+bmzctarVOXHmH5zEwoUsSmS1aubBPr1oGXjmBJmh8oo02DKTZRsaJf4eBBuxlu3Dh4/XW/fORIeO45xribHh0MJDJtmj16YwCsr3E9ABP/A5d5myQHDgyt1HoL8kNdABKP4cNhFjboSc2aMH+HDW1d6fqGXPrmm3Y1etUq1nd6EICLZszwA7MEV+ybNGFJvaG0afw+Wyv5K8irPvCr3Ool5s3zo6z07UvCqIKsKIqiKClNcijIcZRjgHsHB0LFffEF06Zd7NsFeEpQNMXYY9++8Pz559ujp3y99RYV5kykWbN+4PS+q64i3IND5LWJEMX13M3BwBse3R4Ly57meZxIkDbB+4umgYNvZhCI6ueVVXAxPxgzLet1AROWix6zJiO33HIj3BRwvefMQJoOd/nlvnIM0K0bMBuqVrXD1+Ej5+Vi/37YssVv/8AKm4gVMnD1atq0NvDICup8/0qouE6bNlnrBj17JIqaWCiKoihKylPwCnLp0tCyZXjZrFnh0dqi0K3vGaH0zEm1WTgeLpo50xasXm3dvnkrvJE+kwHat/fTCxZAvXqwaxdrMxtyCUDZsnzapB/P/wvauWrz58Pohc59WJMm4Pr7uv3gUFObN0P7zwKhpocPJ8hnW2xcFE+HBxsILpLqIx4Nyx854u8V84ameHE47bSs10a2P2K/XeE+80DAXnnNGmvvO2FC+Ip3xYpQuTKLnS45NGjjfJ1dlT66em2oaNs2e3xiGFzdubPNTJoES5cCsNjp0uF3Y4euA/Dzz7aNvU+NBqyXtzrvvmtX+Fet4sF3rF/qh+rW9ZfQg27gVq5k+gyh4+ARYQvhu30dm3vBuoFr356fr3XryRVz4PpNFWRFURRFSWmSYwVZUZIF9WKhKIqiKCmPKsiKEomuICuKoihKSqMKsqIEURtkRVEURUl5xBhToB2mi5gYHoljcvdww6OPHWf4YCU5mDnT7dgrWATWGmOy2cVpSS9RwqypXTt+exs2JNTeyUB6erpZE8uPuKKkGCKS1HNf56uihJPbOasryIoSRFeQFUVRFCXlOSEUZF09PokohNXjHKOb9BRFURQlpSlS2AIojiJFwn8nK1WqFLYE2eOtIMf7KYqiKIpy0nJCrCArSoGiCrCiKIqipDSqICtKELVBVhRFUZSURxXkZCFVlLJduwpbgvikyrNQFEVRFCUqqiBHUqIEHDpk0w0awKZNWevUrRuenjs3Z32sWJG1rE6d8Py8eTYMNECpUn65VxbJ44Fw117c6UWLEpepZ097nDYt8WuiMXJk+DGnNGpkjxkZxyfH8aAKsqIoiqKkNKogK0oQDTWtKIqiKClPcijIrVvDgQOwbh1kZhauLN7qMURfPQYrr0duVpDffjtrWdWq4fnGjaFsWZsuV84vL148ept79/rpc85JXJYmTeDgweNfOfbI7cqxR2GuHIPaICuKoiiKkiQKsqIkE6ogK4qiKEpKU/AKctGiULJkeNl990GxYjBsGKxaVeAiJUTTpr5sbdv65SVKJHZ9s2Z++sors5z+6si5YfnvD55L5j6X+dIv9xaVI7m4f38/461wT54cX65Onez9NG4cv25BMH68PQ4eXHgyqIKsKIqiKClNgSvIv9VsxPuTwuPEL1gAj7d/P3wzWiS//+6n09KgRQtYtizP5ftul+GcKjZy32uvGv7S1UXxGzkSdu8GYG+TdqH6+/dDzZtv9huYNSu8wW+/tccKFUJFN9+W1Uzip5/C88WLh1t7gL3tWLpbjRq+TKc7C44+W0yo7IJ6MaIRVqwIJUowf56t26FjglELb7oJZs/OUvzdLtuON4aRHD1iKHqK+Jvxdu6Effv8Cn362GNQQW7Z0k+/956ffuyxUPKX3v8IpcuUDfR9xRX2uHJlNjcTQE0sFEVRFCXlURMLRYlEFWRFURRFSWkKXEEuWeIozS/8JaK0jP3Uv39/7AuDq7SQL6vHAOcsfD6U7tQpcGLq1NCKabnxv4aKy5Url3XVOMjLL9vjwYOhol69/pWl2pYt4fnff/cXzb3I02lpsRfZ69f30zVr2uPZY/8RvXKQQYPgyivpMGVK/LpBvv8+avE5T2XfZ9GdX9tErM14Dz2UtSy4ahxk1KhQskz58tHrJLpy7KFeLBRFURQl5dEVZEWJRFeQFUVRFCWlUQVZUYKoDbKiKIqipDxFClsARUk6jh2L/0sAEWkrIltF5EsRuSfK+dtE5GcRyXC/3scjdgL9FReRV9z5j0Wk+vH0pyjK8aFzVlGSF1WQFSWIt4J8nAqyiBQFngHaAfWAm0WkXpSqrxhjGrlfAn75jqu/24FfjDG1gCeBR3Pbn6Iox4fOWUVJblRBVpRIjhyJ/4tPE+BLY8x2Y0wmMBu4Lh+lTqS/64CXXPp14GoRSdCvn6IoeYzOWUVJYsQYE7/W8XYi0hfo67INgBgxnE9aygN7CluIAibZ7vlcY0yFeJVEZDFW9nikAQHn3EwyxkwKtNMFaGuM6e3yPYDLjDGDAnVuA8YAPwPbgKHGmG8T6Dua3In0t8nV2eXyX7k6WZ7TCTRnk+3vLEgyywbJLV8yy1bHGFMyfrXsycs5q/M1z0hm+VS23JOrOVsgm/Sc4jAJQETWGGPSC6LfZEHv+cTBGNM2fq2EiLbKE/k2Oh+YZYz5Q0T6Y1eK/pSP/SVSxxaeIHNWZcs9ySxfssuWV01FKcvVnNX5mjcks3wqW+7J7ZxVEwtFyR92AVUD+SpAmPNoY8xeY8wfLvs8cEl+9hesIyKnAGcC+1AUpTDQOasoSYwqyIqSP3wC1BaR80SkGHATMC9YQUTODmQ7Ap/lZ38uf6tLdwGWmoKwsVIUJRo6ZxUliSkMP8iT4lc56dB7TjGMMUdEZBCwBCgKTDHGbBaRUcAaY8w8YIiIdASOYFeFbsvn/l4ApovIl66/mxJsPpmfpcqWe5JZvpNetnycsyf92OUjySyfypZ7ciVfgWzSUxRFURRFUZQTBTWxUBRFURRFUZQAqiAriqIoiqIoSgBVkBVFSfqQtwnIN0xEtojIBhF5V0TOTRbZAvW6iIgRkQJzh5SIbCLS1Y3dZhGZWVCyJSKfiFQTkfdE5FP3bK8tQNmmiMhu54s42nkRkXFO9g0i0rigZHP9J+2c1fmav/IV1pxNuflqjNGf/vSXwj/sBqGvgBpAMWA9UC+izkDgOZe+CRsiO5nkawmUcOkBBSVfIrK5eiWB5cAqID1ZZANqA58CZVy+YpI910nAAJeuB+woQPmaAY2BTTHOXwsswvoqbgp8nGRjVyhzVudrvo9doczZVJyvuoKsKEqyh7yNK58x5j1jzCGXXYX1KZsUsjn+BTxGePTFZJCtD/CMMeYXAGPM7iSTzwClXPpMsvoJzjeMMcvJ3ufwdcA0Y1kFlI5w3ZifJPOc1fmae5J5zqbcfFUFWVGUc4BgiOtdrixqHWPMEeBXoFyBSJeYfEFux64UFARxZRORi4GqxpgFBSSTRyLjdj5wvoh8KCKrRCSvIkkmQiLyjQS6i8guYCEwuGBES4ic/l0WdN+FNWd1vuaeZJ6zKTdfk1JBFpGzRGSmiGwXkbUi8pGIXF8IcqSLyLg8aGekiNyVFzKlAjpeBU6ehqnOBxLuW0S6A+nA4/kqUaDLKGUh2USkCPAk8PcCkidIIuN2CvaTbQvgZmCyiJTOZ7k8EpHvZmCqMaYK9hPpdDemyUCyz4nCkk/na+5J5jmbcvM1WQQP4T4BzQWWG2NqGGMuwdpPFdQnmBDGmDXGmCEF0ZczIE+655HfiEjRPGijMALenEwke8jbRORDRFoB/wQ6Gj+Ed2HLVhJoACwTkR1Y27d5BbTxJ9Hn+qYx5rAx5mtgK/Y/34IgEfluB14FMMZ8BKQB5QtEuvgk9HdZiH0X1pzV+Zp/8nl1CmPOpt58LSgD6hwYWl8NvJ/N+aLYt81PgA1AP1feAliGtbX6HHgZPxDKJcD7wFps1KKzXfkQYItrZ3aUvloAC1x6JDDF9bEdGBJDvrbAOqwB+7vZXQtUx4YXfhZrdH8u9g1sI7AJeDTQ7kHgUXcP72Dtgbz2Oro6acCL7vpPgZauvD6wGshw91rblQ9z/WwC7gzI9Dkw2ZW/DLQCPgS+AJq4eqe7e/rE9XVdlLEQ96w2OZluDIzre8BMYIsr+yd2or8DzALucuU1gcXuvlcAdV35VGCsa+d/C/vv9kT+YVcktgPn4W++qB9R52+Eb/h5Ncnkuxi7gaR2so1dRP1lFNwmvUTGrS3wkkuXx36CLJdE8i0CbnPpC7D/oUkBPt/qxN7082fCN/2sTqa/u8Kaszpf833sCmXOpuJ8LbA/zBzc4BDgyWzO9wVGuHRxYI17YC2wNlZVsCvjHwFXAqcCK4EK7pobsSE9cQ+vuEuXjtJXC8IV5JWuz/LAXuDUiPoV3B/reS5fNrtr3cM8BjR19SoDO107pwBLgU7unAHaufQbwFuujYuADFf+d+BFl67r2koDxgO3uPJiwGnYl4aNWEX3DGAz9h+t6tjQxw3dOK7FKsKCNXKf69oZDXT3xg7YBpweMR43AG9jX2rOcvKc7cb1v4Fx8mQpgTXw/xJfQX4XX6G/DFjq0lOBBUDRwv6bPRl+2M9h27D/af3TlY0i/OXrNfdsVgM1kky+d4CfsC+BGcC8ZJEtou4yCvY/3HjjJtgXzS1uDt6UZM+1HvblfL17rq0LULZZwA/AYezq0+1Af6B/YOyecbJvLMjnmuDYFdqc1fmar2NXaHM21eZr0oWaFpEhWMVpqMs/g1V0M40xl4rI68CFgLcD9kygH5CJfWDXuOsmYB9UBlY53e7qFwV+MMa0FpHF2JXZuVjF72CELC2wilp7ERkJHDbGPOLOfQZcY4zZFajfAfvHektEO1GvxSrB7xljznPl1wE3GGN6uvzt2De0YSLyB5BmjDEiMgr4wxjziDPL2GeMKS0ibwDjjTFL3fUrsKsIDbArtNOAOcaYL0TkDuxb5wOu7r+An4F5wNvGmNqufBqwxBjzsojUcNc3EpE12H+Aj7jbLAu0McZ8FrjvJ4GNxpgpLj8d+w/2AeBBY0xLV34n9mXCk2Us9uXlOSfT1sBwFjfGXCAiU93YvYSiKIqiKEoekoy2m5uxK48AGGP+JiLlsSvFYN8CBhtjlgQvcsps0I7pKPb+BNhsjLk8Sl9/xvrO6wjcLyL1jd3tG4to7YeJQWyj71jX/jfi+lgcNv7bzDGvPWPMsYANbtTrjTEzReRj7P0uEZHecfoKynoskD8WkFuwynxQeY0kuz7+G5GPNm5FgP3GmEYJtqEoiqIoinLcJOOmsKVAmogMCJSVCKSXAANE5FQAETlfRE7Ppr2tQAURudzVP1VE6ruV16rGmPeA4VgzgTOOU/aPgOYi4q0Il83h9R+768u7zWs3Y22nE2U5cIvr+3ygGrDVrfxuN8aMw64QX+jqdhKREm78rsfa+CbKEmCw51fTucaJJs+NIlJURCpgX0ZWx6h3vYicJiIlgQ4AxpgDwNci8hfXh4jIRTmQUVEURVEUJcck3QqyMyHoBDwpIsOxn9j/C9ztqkzG2smuc8rZz0CnbNrLFJEuwDgRORN7z09h7WhmuDLB2j3vP07ZfxaRvsAcp4DvxppSJHr9DyJyL3bjmQALjTFv5kCEZ4HnRGQj1vThNmPMHyJyI9Y34WHgR2CUMWafM1PwFNbJxphPJfFwpP/CjuMG9xx2AO0j6rwBXI61RzLAcGPMjyJSN+K+14nIK1hzmG8IV9RvASaIyAiszfVs156iKIqiKEq+kHQ2yIqiKIqiKIpSmCSjiYWiKIqiKIqiFBqqICuKoiiKoihKAFWQFUVRFEVRFCWAKsiKoiiKoiiKEkAVZEVRFEVRFEUJoAqyoiiKoiiKogRQBVlRFEVRFEVRAvx/tfRFRxrg3icAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ranked_matirx = rank(df_2_or['exp_median'])\n", "df_2_or['exp_median'] = ranked_matirx\n", "plots_with_1_level_3d(df_2_or,'exp_median')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'df_2_or_median' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mranked_matirx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrank\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf_2_or_median\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'exp_median'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mdf_2_or_median\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'exp_median'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mranked_matirx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mplots_with_1_level_3d\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf_2_or_median\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'exp_median'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'df_2_or_median' is not defined" ] } ], "source": [ "ranked_matirx = rank(df_2_or_median['exp_median'])\n", "df_2_or_median['exp_median'] = ranked_matirx\n", "plots_with_1_level_3d(df_2_or_median,'exp_median')" ] }, { "cell_type": "code", "execution_count": 608, "metadata": {}, "outputs": [], "source": [ "df_2_or_median = df_2_or" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df_2_or = pd.read_hdf('/data/lohia/gene_distance_expresseion/dist_files/_dist_with_georg_hic_sub_median_hic_500.h5')" ] }, { "cell_type": "code", "execution_count": 382, "metadata": {}, "outputs": [], "source": [ "#merges DE prior genes\n", "ensg_gene_name = pd.read_csv(\"/data/lohia/gene_distance_expresseion/biomart_mapping_files/ENSG_gene_name.txt\", sep='\\t')\n", "mg_de_prior = pd.read_csv(\"/data/lohia/gene_distance_expresseion/mc_predictability/pnas.1802973116.sd02.txt\", sep='\\t')\n", "ensg_gene_name = ensg_gene_name.drop_duplicates('Gene name')\n", "ensg_gene_name_mg_prior = ensg_gene_name.merge(right= mg_de_prior[['Gene_Name','DE_Prior_Rank', 'Gene_Order']], left_on='Gene name', right_on='Gene_Name')\n", "\n", "ensg_gene_name_mg_prior.rename(columns={\"Gene stable ID\": \"Gene stable ID_x\"}, inplace=True)\n", "df_2_or = df_2_or.merge(right=ensg_gene_name_mg_prior, on='Gene stable ID_x', how='left')\n", "ensg_gene_name_mg_prior.rename(columns={\"Gene stable ID_x\": \"Gene stable ID_y\"}, inplace=True)\n", "df_2_or = df_2_or.merge(right=ensg_gene_name_mg_prior, on='Gene stable ID_y', how='left')" ] }, { "cell_type": "code", "execution_count": 386, "metadata": {}, "outputs": [], "source": [ "df_2_or['DE_tot_rank'] = df_2_or['DE_Prior_Rank_x'] + df_2_or['DE_Prior_Rank_y']" ] }, { "cell_type": "code", "execution_count": 520, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
tss_tssexpexp_georghi-c-raostrand_xgene_order_tss_xgene_order_tes_xGene stable ID_xGene type_xUniprot_dc_x...chrom_xstrand_ygene_order_tss_ygene_order_tes_yGene stable ID_yGene type_yUniprot_dc_ydc_yseq_length_ychrom_y
pairs
ENSG00000174669_ENSG0000017466901.000000NaN0.0-18281827ENSG00000174669protein_codingQ14542...chr11-18281827ENSG00000174669protein_codingQ145420.000000456.0chr11
ENSG00000174669_ENSG00000183340300177740.863495NaN274.0+25912593ENSG00000183340protein_codingQ9Y4A0...chr11-18281827ENSG00000174669protein_codingQ145420.000000456.0chr11
ENSG00000174669_ENSG000001827912208490.688515NaN401.0-18471847ENSG00000182791protein_codingQ9NVE4...chr11-18281827ENSG00000174669protein_codingQ145420.000000456.0chr11
ENSG00000174669_ENSG00000132275597685980.939615NaN404.0-384384ENSG00000132275protein_codingO43159...chr11-18281827ENSG00000174669protein_codingQ145420.000000456.0chr11
ENSG00000174669_ENSG0000016849645793040.887136NaN4489.0+15271527ENSG00000168496protein_codingP39748...chr11-18281827ENSG00000174669protein_codingQ145420.000000456.0chr11
..................................................................
ENSG00000239306_ENSG00000267940604133280.860745NaNNaN-366366ENSG00000267940NaNNaN...chr11+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr11
ENSG00000239306_ENSG00000254694595924460.722093NaNNaN-32243225ENSG00000254694NaNNaN...chr11+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr11
ENSG00000239306_ENSG000001737151278690.934376NaN446.0+18561858ENSG00000173715protein_codingA0A2U3TZP7...chr11+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr11
ENSG00000239306_ENSG00000166086674524890.909951NaN403.0+33373339ENSG00000166086protein_codingQ9BX67...chr11+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr11
ENSG00000239306_ENSG0000023930601.000000NaN0.0+18501850ENSG00000239306protein_codingQ96PK6...chr11+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr11
\n", "

1679616 rows × 22 columns

\n", "
" ], "text/plain": [ " tss_tss exp exp_georg hi-c-rao \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 0 1.000000 NaN 0.0 \n", "ENSG00000174669_ENSG00000183340 30017774 0.863495 NaN 274.0 \n", "ENSG00000174669_ENSG00000182791 220849 0.688515 NaN 401.0 \n", "ENSG00000174669_ENSG00000132275 59768598 0.939615 NaN 404.0 \n", "ENSG00000174669_ENSG00000168496 4579304 0.887136 NaN 4489.0 \n", "... ... ... ... ... \n", "ENSG00000239306_ENSG00000267940 60413328 0.860745 NaN NaN \n", "ENSG00000239306_ENSG00000254694 59592446 0.722093 NaN NaN \n", "ENSG00000239306_ENSG00000173715 127869 0.934376 NaN 446.0 \n", "ENSG00000239306_ENSG00000166086 67452489 0.909951 NaN 403.0 \n", "ENSG00000239306_ENSG00000239306 0 1.000000 NaN 0.0 \n", "\n", " strand_x gene_order_tss_x gene_order_tes_x \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 - 1828 1827 \n", "ENSG00000174669_ENSG00000183340 + 2591 2593 \n", "ENSG00000174669_ENSG00000182791 - 1847 1847 \n", "ENSG00000174669_ENSG00000132275 - 384 384 \n", "ENSG00000174669_ENSG00000168496 + 1527 1527 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 - 366 366 \n", "ENSG00000239306_ENSG00000254694 - 3224 3225 \n", "ENSG00000239306_ENSG00000173715 + 1856 1858 \n", "ENSG00000239306_ENSG00000166086 + 3337 3339 \n", "ENSG00000239306_ENSG00000239306 + 1850 1850 \n", "\n", " Gene stable ID_x Gene type_x Uniprot_dc_x \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174669_ENSG00000183340 ENSG00000183340 protein_coding Q9Y4A0 \n", "ENSG00000174669_ENSG00000182791 ENSG00000182791 protein_coding Q9NVE4 \n", "ENSG00000174669_ENSG00000132275 ENSG00000132275 protein_coding O43159 \n", "ENSG00000174669_ENSG00000168496 ENSG00000168496 protein_coding P39748 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 ENSG00000267940 NaN NaN \n", "ENSG00000239306_ENSG00000254694 ENSG00000254694 NaN NaN \n", "ENSG00000239306_ENSG00000173715 ENSG00000173715 protein_coding A0A2U3TZP7 \n", "ENSG00000239306_ENSG00000166086 ENSG00000166086 protein_coding Q9BX67 \n", "ENSG00000239306_ENSG00000239306 ENSG00000239306 protein_coding Q96PK6 \n", "\n", " ... chrom_x strand_y gene_order_tss_y \\\n", "pairs ... \n", "ENSG00000174669_ENSG00000174669 ... chr11 - 1828 \n", "ENSG00000174669_ENSG00000183340 ... chr11 - 1828 \n", "ENSG00000174669_ENSG00000182791 ... chr11 - 1828 \n", "ENSG00000174669_ENSG00000132275 ... chr11 - 1828 \n", "ENSG00000174669_ENSG00000168496 ... chr11 - 1828 \n", "... ... ... ... ... \n", "ENSG00000239306_ENSG00000267940 ... chr11 + 1850 \n", "ENSG00000239306_ENSG00000254694 ... chr11 + 1850 \n", "ENSG00000239306_ENSG00000173715 ... chr11 + 1850 \n", "ENSG00000239306_ENSG00000166086 ... chr11 + 1850 \n", "ENSG00000239306_ENSG00000239306 ... chr11 + 1850 \n", "\n", " gene_order_tes_y Gene stable ID_y \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000183340 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000182791 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000132275 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000168496 1827 ENSG00000174669 \n", "... ... ... \n", "ENSG00000239306_ENSG00000267940 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000254694 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000173715 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000166086 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000239306 1850 ENSG00000239306 \n", "\n", " Gene type_y Uniprot_dc_y dc_y \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000183340 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000182791 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000132275 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000168496 protein_coding Q14542 0.000000 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000254694 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000173715 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000166086 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000239306 protein_coding Q96PK6 0.170404 \n", "\n", " seq_length_y chrom_y \n", "pairs \n", "ENSG00000174669_ENSG00000174669 456.0 chr11 \n", "ENSG00000174669_ENSG00000183340 456.0 chr11 \n", "ENSG00000174669_ENSG00000182791 456.0 chr11 \n", "ENSG00000174669_ENSG00000132275 456.0 chr11 \n", "ENSG00000174669_ENSG00000168496 456.0 chr11 \n", "... ... ... \n", "ENSG00000239306_ENSG00000267940 669.0 chr11 \n", "ENSG00000239306_ENSG00000254694 669.0 chr11 \n", "ENSG00000239306_ENSG00000173715 669.0 chr11 \n", "ENSG00000239306_ENSG00000166086 669.0 chr11 \n", "ENSG00000239306_ENSG00000239306 669.0 chr11 \n", "\n", "[1679616 rows x 22 columns]" ] }, "execution_count": 520, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_2_or" ] }, { "cell_type": "code", "execution_count": 519, "metadata": {}, "outputs": [], "source": [ "df_2_or['pairs'] = [x+\"_\"+y for x,y in zip(df_2_or['Gene stable ID_y'], df_2_or['Gene stable ID_x'])]\n", "df_2_or.set_index('pairs', inplace=True)" ] }, { "cell_type": "code", "execution_count": 527, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
tss_tssexpexp_georghi-c-raostrand_xgene_order_tss_xgene_order_tes_xGene stable ID_xGene type_xUniprot_dc_x...chrom_xstrand_ygene_order_tss_ygene_order_tes_yGene stable ID_yGene type_yUniprot_dc_ydc_yseq_length_ychrom_y
pairs
ENSG00000174669_ENSG0000017466901.000000NaN0.0-18281827ENSG00000174669protein_codingQ14542...chr11-18281827ENSG00000174669protein_codingQ145420.000000456.0chr11
ENSG00000182791_ENSG000001746692208490.688515NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18471847ENSG00000182791protein_codingQ9NVE40.000000849.0chr11
ENSG00000175592_ENSG000001746694716410.292721NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11-17951795ENSG00000175592protein_codingP154070.531365271.0chr11
ENSG00000175376_ENSG000001746693700380.938259NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11-18011801ENSG00000175376protein_codingQ8N9N80.327273165.0chr11
ENSG00000174744_ENSG00000174669270890.886680NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18251824ENSG00000174744protein_codingG5E9I40.196552290.0chr11
ENSG00000175229_ENSG000001746693230530.408519NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11-18061805ENSG00000175229protein_codingQ96A110.076566431.0chr11
ENSG00000173914_ENSG000001746693056730.955518NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18531852ENSG00000173914protein_codingQ9BQ040.000000359.0chr11
ENSG00000172543_ENSG000001746694923780.608773NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11+17921793ENSG00000172543protein_codingP562020.000000376.0chr11
ENSG00000174903_ENSG000001746691036250.917490NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18151817ENSG00000174903protein_codingQ9H0U40.139303201.0chr11
ENSG00000174996_ENSG000001746691149210.964790NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18111814ENSG00000174996protein_codingQ9H0B60.289389622.0chr11
ENSG00000174807_ENSG00000174669551700.744971NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18221821ENSG00000174807protein_codingQ9HCU00.092470757.0chr11
ENSG00000175115_ENSG000001746693019430.921198NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18091809ENSG00000175115protein_codingQ6VY070.305296963.0chr11
ENSG00000248643_ENSG000001746692444110.698206NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18511851ENSG00000248643protein_codingA0A0A0MSL80.000000147.0chr11
ENSG00000175334_ENSG000001746693699870.940329NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11+18021802ENSG00000175334protein_codingO755310.00000089.0chr11
ENSG00000174165_ENSG000001746691740210.958612NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18431841ENSG00000174165protein_codingQ6UX980.000000284.0chr11
ENSG00000248746_ENSG000001746691741800.511541NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18441845ENSG00000248746protein_codingA0A087WSZ20.043432944.0chr11
ENSG00000175550_ENSG000001746694529410.870073NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11+17971797ENSG00000175550protein_codingC9JCC60.575472212.0chr11
ENSG00000175602_ENSG000001746694815420.836505NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11+17941794ENSG00000175602protein_codingQ158340.272277202.0chr11
ENSG00000174871_ENSG00000174669940400.730943NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18171819ENSG00000174871protein_codingQ6PI250.000000160.0chr11
ENSG00000255320_ENSG000001746691259750.839466NaNNaN-18281827ENSG00000174669protein_codingQ14542...chr11-18101810ENSG00000255320NaNNaNNaNNaNchr11
ENSG00000254986_ENSG000001746691077980.922207NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18381839ENSG00000254986protein_codingG3V1800.000000757.0chr11
ENSG00000254461_ENSG000001746691103800.851077NaNNaN-18281827ENSG00000174669protein_codingQ14542...chr11-18121811ENSG00000254461NaNNaNNaNNaNchr11
ENSG00000245156_ENSG00000174669936890.814795NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18181815ENSG00000245156NaNNaNNaNNaNchr11
ENSG00000255468_ENSG00000174669242650.950628NaNNaN-18281827ENSG00000174669protein_codingQ14542...chr11+18271828ENSG00000255468NaNNaNNaNNaNchr11
ENSG00000174684_ENSG00000174669245850.954155NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18261826ENSG00000174684protein_codingO435050.000000415.0chr11
ENSG00000173621_ENSG000001746694844320.927786NaN446.0-18281827ENSG00000174669protein_codingQ14542...chr11+18601861ENSG00000173621protein_codingQ6PJG90.105512635.0chr11
ENSG00000174791_ENSG00000174669353740.833507NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18241823ENSG00000174791protein_codingQ136710.266922783.0chr11
ENSG00000174547_ENSG00000174669945240.922721NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18371835ENSG00000174547protein_codingQ9Y3B70.000000192.0chr11
ENSG00000173933_ENSG000001746692664020.846646NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18521853ENSG00000173933protein_codingQ9BWF30.000000364.0chr11
ENSG00000179292_ENSG00000174669803210.414194NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18201820ENSG00000179292protein_codingQ8N4L10.162393468.0chr11
ENSG00000175315_ENSG000001746693602070.374777NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11+18031803ENSG00000175315protein_codingQ158280.000000149.0chr11
ENSG00000174080_ENSG000001746691966270.872283NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18461846ENSG00000174080protein_codingQ9UBX10.000000484.0chr11
ENSG00000254510_ENSG00000174669369430.416113NaNNaN-18281827ENSG00000174669protein_codingQ14542...chr11+18321832ENSG00000254510NaNNaNNaNNaNchr11
ENSG00000173992_ENSG000001746692209380.940365NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18481848ENSG00000173992protein_codingO146180.000000274.0chr11
ENSG00000175294_ENSG000001746693457350.440095NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11-18041804ENSG00000175294protein_codingQ8NEC50.397436780.0chr11
ENSG00000087365_ENSG000001746693214860.937533NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11+18071808ENSG00000087365protein_codingQ134350.498324895.0chr11
ENSG00000174576_ENSG00000174669487890.231663NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18331833ENSG00000174576protein_codingQ8IUM70.128429802.0chr11
ENSG00000172638_ENSG000001746694986220.873684NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11-17911790ENSG00000172638protein_codingO959670.000000443.0chr11
ENSG00000255517_ENSG000001746691080190.907583NaNNaN-18281827ENSG00000174669protein_codingQ14542...chr11-18391837ENSG00000255517NaNNaNNaNNaNchr11
ENSG00000175573_ENSG000001746694531520.928440NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11-17961796ENSG00000175573protein_codingQ9H3H30.205479292.0chr11
ENSG00000173898_ENSG000001746693570120.861919NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18551854ENSG00000173898protein_codingO150200.0845192390.0chr11
ENSG00000172500_ENSG000001746694836750.939908NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11-17931792ENSG00000172500protein_codingO434270.000000364.0chr11
ENSG00000174516_ENSG00000174669941120.945597NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18361838ENSG00000174516protein_codingQ8N2H90.083156469.0chr11
ENSG00000174483_ENSG000001746691383910.897050NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18411843ENSG00000174483protein_codingQ8NFJ90.000000593.0chr11
ENSG00000173653_ENSG000001746694706200.943478NaN446.0-18281827ENSG00000174669protein_codingQ14542...chr11+18591859ENSG00000173653protein_codingQ9Y2560.000000329.0chr11
ENSG00000175467_ENSG000001746694104870.929302NaN380.0-18281827ENSG00000174669protein_codingQ14542...chr11+17991799ENSG00000175467protein_codingO432900.316250800.0chr11
ENSG00000174851_ENSG00000174669830690.915673NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11-18191818ENSG00000174851protein_codingO950700.112628293.0chr11
ENSG00000173715_ENSG000001746693722360.895157NaN446.0-18281827ENSG00000174669protein_codingQ14542...chr11+18561858ENSG00000173715protein_codingA0A2U3TZP70.141720628.0chr11
ENSG00000239306_ENSG000001746692443670.962711NaN401.0-18281827ENSG00000174669protein_codingQ14542...chr11+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr11
\n", "

49 rows × 22 columns

\n", "
" ], "text/plain": [ " tss_tss exp exp_georg hi-c-rao \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 0 1.000000 NaN 0.0 \n", "ENSG00000182791_ENSG00000174669 220849 0.688515 NaN 401.0 \n", "ENSG00000175592_ENSG00000174669 471641 0.292721 NaN 380.0 \n", "ENSG00000175376_ENSG00000174669 370038 0.938259 NaN 380.0 \n", "ENSG00000174744_ENSG00000174669 27089 0.886680 NaN 401.0 \n", "ENSG00000175229_ENSG00000174669 323053 0.408519 NaN 380.0 \n", "ENSG00000173914_ENSG00000174669 305673 0.955518 NaN 401.0 \n", "ENSG00000172543_ENSG00000174669 492378 0.608773 NaN 380.0 \n", "ENSG00000174903_ENSG00000174669 103625 0.917490 NaN 401.0 \n", "ENSG00000174996_ENSG00000174669 114921 0.964790 NaN 401.0 \n", "ENSG00000174807_ENSG00000174669 55170 0.744971 NaN 401.0 \n", "ENSG00000175115_ENSG00000174669 301943 0.921198 NaN 401.0 \n", "ENSG00000248643_ENSG00000174669 244411 0.698206 NaN 401.0 \n", "ENSG00000175334_ENSG00000174669 369987 0.940329 NaN 380.0 \n", "ENSG00000174165_ENSG00000174669 174021 0.958612 NaN 401.0 \n", "ENSG00000248746_ENSG00000174669 174180 0.511541 NaN 401.0 \n", "ENSG00000175550_ENSG00000174669 452941 0.870073 NaN 380.0 \n", "ENSG00000175602_ENSG00000174669 481542 0.836505 NaN 380.0 \n", "ENSG00000174871_ENSG00000174669 94040 0.730943 NaN 401.0 \n", "ENSG00000255320_ENSG00000174669 125975 0.839466 NaN NaN \n", "ENSG00000254986_ENSG00000174669 107798 0.922207 NaN 401.0 \n", "ENSG00000254461_ENSG00000174669 110380 0.851077 NaN NaN \n", "ENSG00000245156_ENSG00000174669 93689 0.814795 NaN 401.0 \n", "ENSG00000255468_ENSG00000174669 24265 0.950628 NaN NaN \n", "ENSG00000174684_ENSG00000174669 24585 0.954155 NaN 401.0 \n", "ENSG00000173621_ENSG00000174669 484432 0.927786 NaN 446.0 \n", "ENSG00000174791_ENSG00000174669 35374 0.833507 NaN 401.0 \n", "ENSG00000174547_ENSG00000174669 94524 0.922721 NaN 401.0 \n", "ENSG00000173933_ENSG00000174669 266402 0.846646 NaN 401.0 \n", "ENSG00000179292_ENSG00000174669 80321 0.414194 NaN 401.0 \n", "ENSG00000175315_ENSG00000174669 360207 0.374777 NaN 380.0 \n", "ENSG00000174080_ENSG00000174669 196627 0.872283 NaN 401.0 \n", "ENSG00000254510_ENSG00000174669 36943 0.416113 NaN NaN \n", "ENSG00000173992_ENSG00000174669 220938 0.940365 NaN 401.0 \n", "ENSG00000175294_ENSG00000174669 345735 0.440095 NaN 380.0 \n", "ENSG00000087365_ENSG00000174669 321486 0.937533 NaN 380.0 \n", "ENSG00000174576_ENSG00000174669 48789 0.231663 NaN 401.0 \n", "ENSG00000172638_ENSG00000174669 498622 0.873684 NaN 380.0 \n", "ENSG00000255517_ENSG00000174669 108019 0.907583 NaN NaN \n", "ENSG00000175573_ENSG00000174669 453152 0.928440 NaN 380.0 \n", "ENSG00000173898_ENSG00000174669 357012 0.861919 NaN 401.0 \n", "ENSG00000172500_ENSG00000174669 483675 0.939908 NaN 380.0 \n", "ENSG00000174516_ENSG00000174669 94112 0.945597 NaN 401.0 \n", "ENSG00000174483_ENSG00000174669 138391 0.897050 NaN 401.0 \n", "ENSG00000173653_ENSG00000174669 470620 0.943478 NaN 446.0 \n", "ENSG00000175467_ENSG00000174669 410487 0.929302 NaN 380.0 \n", "ENSG00000174851_ENSG00000174669 83069 0.915673 NaN 401.0 \n", "ENSG00000173715_ENSG00000174669 372236 0.895157 NaN 446.0 \n", "ENSG00000239306_ENSG00000174669 244367 0.962711 NaN 401.0 \n", "\n", " strand_x gene_order_tss_x gene_order_tes_x \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 - 1828 1827 \n", "ENSG00000182791_ENSG00000174669 - 1828 1827 \n", "ENSG00000175592_ENSG00000174669 - 1828 1827 \n", "ENSG00000175376_ENSG00000174669 - 1828 1827 \n", "ENSG00000174744_ENSG00000174669 - 1828 1827 \n", "ENSG00000175229_ENSG00000174669 - 1828 1827 \n", "ENSG00000173914_ENSG00000174669 - 1828 1827 \n", "ENSG00000172543_ENSG00000174669 - 1828 1827 \n", "ENSG00000174903_ENSG00000174669 - 1828 1827 \n", "ENSG00000174996_ENSG00000174669 - 1828 1827 \n", "ENSG00000174807_ENSG00000174669 - 1828 1827 \n", "ENSG00000175115_ENSG00000174669 - 1828 1827 \n", "ENSG00000248643_ENSG00000174669 - 1828 1827 \n", "ENSG00000175334_ENSG00000174669 - 1828 1827 \n", "ENSG00000174165_ENSG00000174669 - 1828 1827 \n", "ENSG00000248746_ENSG00000174669 - 1828 1827 \n", "ENSG00000175550_ENSG00000174669 - 1828 1827 \n", "ENSG00000175602_ENSG00000174669 - 1828 1827 \n", "ENSG00000174871_ENSG00000174669 - 1828 1827 \n", "ENSG00000255320_ENSG00000174669 - 1828 1827 \n", "ENSG00000254986_ENSG00000174669 - 1828 1827 \n", "ENSG00000254461_ENSG00000174669 - 1828 1827 \n", "ENSG00000245156_ENSG00000174669 - 1828 1827 \n", "ENSG00000255468_ENSG00000174669 - 1828 1827 \n", "ENSG00000174684_ENSG00000174669 - 1828 1827 \n", "ENSG00000173621_ENSG00000174669 - 1828 1827 \n", "ENSG00000174791_ENSG00000174669 - 1828 1827 \n", "ENSG00000174547_ENSG00000174669 - 1828 1827 \n", "ENSG00000173933_ENSG00000174669 - 1828 1827 \n", "ENSG00000179292_ENSG00000174669 - 1828 1827 \n", "ENSG00000175315_ENSG00000174669 - 1828 1827 \n", "ENSG00000174080_ENSG00000174669 - 1828 1827 \n", "ENSG00000254510_ENSG00000174669 - 1828 1827 \n", "ENSG00000173992_ENSG00000174669 - 1828 1827 \n", "ENSG00000175294_ENSG00000174669 - 1828 1827 \n", "ENSG00000087365_ENSG00000174669 - 1828 1827 \n", "ENSG00000174576_ENSG00000174669 - 1828 1827 \n", "ENSG00000172638_ENSG00000174669 - 1828 1827 \n", "ENSG00000255517_ENSG00000174669 - 1828 1827 \n", "ENSG00000175573_ENSG00000174669 - 1828 1827 \n", "ENSG00000173898_ENSG00000174669 - 1828 1827 \n", "ENSG00000172500_ENSG00000174669 - 1828 1827 \n", "ENSG00000174516_ENSG00000174669 - 1828 1827 \n", "ENSG00000174483_ENSG00000174669 - 1828 1827 \n", "ENSG00000173653_ENSG00000174669 - 1828 1827 \n", "ENSG00000175467_ENSG00000174669 - 1828 1827 \n", "ENSG00000174851_ENSG00000174669 - 1828 1827 \n", "ENSG00000173715_ENSG00000174669 - 1828 1827 \n", "ENSG00000239306_ENSG00000174669 - 1828 1827 \n", "\n", " Gene stable ID_x Gene type_x Uniprot_dc_x \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000182791_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000175592_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000175376_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174744_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000175229_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000173914_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000172543_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174903_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174996_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174807_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000175115_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000248643_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000175334_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174165_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000248746_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000175550_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000175602_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174871_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000255320_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000254986_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000254461_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000245156_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000255468_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174684_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000173621_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174791_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174547_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000173933_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000179292_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000175315_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174080_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000254510_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000173992_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000175294_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000087365_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174576_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000172638_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000255517_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000175573_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000173898_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000172500_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174516_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174483_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000173653_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000175467_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174851_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000173715_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000239306_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "\n", " ... chrom_x strand_y gene_order_tss_y \\\n", "pairs ... \n", "ENSG00000174669_ENSG00000174669 ... chr11 - 1828 \n", "ENSG00000182791_ENSG00000174669 ... chr11 - 1847 \n", "ENSG00000175592_ENSG00000174669 ... chr11 - 1795 \n", "ENSG00000175376_ENSG00000174669 ... chr11 - 1801 \n", "ENSG00000174744_ENSG00000174669 ... chr11 - 1825 \n", "ENSG00000175229_ENSG00000174669 ... chr11 - 1806 \n", "ENSG00000173914_ENSG00000174669 ... chr11 - 1853 \n", "ENSG00000172543_ENSG00000174669 ... chr11 + 1792 \n", "ENSG00000174903_ENSG00000174669 ... chr11 + 1815 \n", "ENSG00000174996_ENSG00000174669 ... chr11 + 1811 \n", "ENSG00000174807_ENSG00000174669 ... chr11 - 1822 \n", "ENSG00000175115_ENSG00000174669 ... chr11 + 1809 \n", "ENSG00000248643_ENSG00000174669 ... chr11 + 1851 \n", "ENSG00000175334_ENSG00000174669 ... chr11 + 1802 \n", "ENSG00000174165_ENSG00000174669 ... chr11 - 1843 \n", "ENSG00000248746_ENSG00000174669 ... chr11 + 1844 \n", "ENSG00000175550_ENSG00000174669 ... chr11 + 1797 \n", "ENSG00000175602_ENSG00000174669 ... chr11 + 1794 \n", "ENSG00000174871_ENSG00000174669 ... chr11 + 1817 \n", "ENSG00000255320_ENSG00000174669 ... chr11 - 1810 \n", "ENSG00000254986_ENSG00000174669 ... chr11 + 1838 \n", "ENSG00000254461_ENSG00000174669 ... chr11 - 1812 \n", "ENSG00000245156_ENSG00000174669 ... chr11 - 1818 \n", "ENSG00000255468_ENSG00000174669 ... chr11 + 1827 \n", "ENSG00000174684_ENSG00000174669 ... chr11 - 1826 \n", "ENSG00000173621_ENSG00000174669 ... chr11 + 1860 \n", "ENSG00000174791_ENSG00000174669 ... chr11 - 1824 \n", "ENSG00000174547_ENSG00000174669 ... chr11 - 1837 \n", "ENSG00000173933_ENSG00000174669 ... chr11 + 1852 \n", "ENSG00000179292_ENSG00000174669 ... chr11 + 1820 \n", "ENSG00000175315_ENSG00000174669 ... chr11 + 1803 \n", "ENSG00000174080_ENSG00000174669 ... chr11 - 1846 \n", "ENSG00000254510_ENSG00000174669 ... chr11 + 1832 \n", "ENSG00000173992_ENSG00000174669 ... chr11 + 1848 \n", "ENSG00000175294_ENSG00000174669 ... chr11 - 1804 \n", "ENSG00000087365_ENSG00000174669 ... chr11 + 1807 \n", "ENSG00000174576_ENSG00000174669 ... chr11 + 1833 \n", "ENSG00000172638_ENSG00000174669 ... chr11 - 1791 \n", "ENSG00000255517_ENSG00000174669 ... chr11 - 1839 \n", "ENSG00000175573_ENSG00000174669 ... chr11 - 1796 \n", "ENSG00000173898_ENSG00000174669 ... chr11 - 1855 \n", "ENSG00000172500_ENSG00000174669 ... chr11 - 1793 \n", "ENSG00000174516_ENSG00000174669 ... chr11 + 1836 \n", "ENSG00000174483_ENSG00000174669 ... chr11 + 1841 \n", "ENSG00000173653_ENSG00000174669 ... chr11 + 1859 \n", "ENSG00000175467_ENSG00000174669 ... chr11 + 1799 \n", "ENSG00000174851_ENSG00000174669 ... chr11 - 1819 \n", "ENSG00000173715_ENSG00000174669 ... chr11 + 1856 \n", "ENSG00000239306_ENSG00000174669 ... chr11 + 1850 \n", "\n", " gene_order_tes_y Gene stable ID_y \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 1827 ENSG00000174669 \n", "ENSG00000182791_ENSG00000174669 1847 ENSG00000182791 \n", "ENSG00000175592_ENSG00000174669 1795 ENSG00000175592 \n", "ENSG00000175376_ENSG00000174669 1801 ENSG00000175376 \n", "ENSG00000174744_ENSG00000174669 1824 ENSG00000174744 \n", "ENSG00000175229_ENSG00000174669 1805 ENSG00000175229 \n", "ENSG00000173914_ENSG00000174669 1852 ENSG00000173914 \n", "ENSG00000172543_ENSG00000174669 1793 ENSG00000172543 \n", "ENSG00000174903_ENSG00000174669 1817 ENSG00000174903 \n", "ENSG00000174996_ENSG00000174669 1814 ENSG00000174996 \n", "ENSG00000174807_ENSG00000174669 1821 ENSG00000174807 \n", "ENSG00000175115_ENSG00000174669 1809 ENSG00000175115 \n", "ENSG00000248643_ENSG00000174669 1851 ENSG00000248643 \n", "ENSG00000175334_ENSG00000174669 1802 ENSG00000175334 \n", "ENSG00000174165_ENSG00000174669 1841 ENSG00000174165 \n", "ENSG00000248746_ENSG00000174669 1845 ENSG00000248746 \n", "ENSG00000175550_ENSG00000174669 1797 ENSG00000175550 \n", "ENSG00000175602_ENSG00000174669 1794 ENSG00000175602 \n", "ENSG00000174871_ENSG00000174669 1819 ENSG00000174871 \n", "ENSG00000255320_ENSG00000174669 1810 ENSG00000255320 \n", "ENSG00000254986_ENSG00000174669 1839 ENSG00000254986 \n", "ENSG00000254461_ENSG00000174669 1811 ENSG00000254461 \n", "ENSG00000245156_ENSG00000174669 1815 ENSG00000245156 \n", "ENSG00000255468_ENSG00000174669 1828 ENSG00000255468 \n", "ENSG00000174684_ENSG00000174669 1826 ENSG00000174684 \n", "ENSG00000173621_ENSG00000174669 1861 ENSG00000173621 \n", "ENSG00000174791_ENSG00000174669 1823 ENSG00000174791 \n", "ENSG00000174547_ENSG00000174669 1835 ENSG00000174547 \n", "ENSG00000173933_ENSG00000174669 1853 ENSG00000173933 \n", "ENSG00000179292_ENSG00000174669 1820 ENSG00000179292 \n", "ENSG00000175315_ENSG00000174669 1803 ENSG00000175315 \n", "ENSG00000174080_ENSG00000174669 1846 ENSG00000174080 \n", "ENSG00000254510_ENSG00000174669 1832 ENSG00000254510 \n", "ENSG00000173992_ENSG00000174669 1848 ENSG00000173992 \n", "ENSG00000175294_ENSG00000174669 1804 ENSG00000175294 \n", "ENSG00000087365_ENSG00000174669 1808 ENSG00000087365 \n", "ENSG00000174576_ENSG00000174669 1833 ENSG00000174576 \n", "ENSG00000172638_ENSG00000174669 1790 ENSG00000172638 \n", "ENSG00000255517_ENSG00000174669 1837 ENSG00000255517 \n", "ENSG00000175573_ENSG00000174669 1796 ENSG00000175573 \n", "ENSG00000173898_ENSG00000174669 1854 ENSG00000173898 \n", "ENSG00000172500_ENSG00000174669 1792 ENSG00000172500 \n", "ENSG00000174516_ENSG00000174669 1838 ENSG00000174516 \n", "ENSG00000174483_ENSG00000174669 1843 ENSG00000174483 \n", "ENSG00000173653_ENSG00000174669 1859 ENSG00000173653 \n", "ENSG00000175467_ENSG00000174669 1799 ENSG00000175467 \n", "ENSG00000174851_ENSG00000174669 1818 ENSG00000174851 \n", "ENSG00000173715_ENSG00000174669 1858 ENSG00000173715 \n", "ENSG00000239306_ENSG00000174669 1850 ENSG00000239306 \n", "\n", " Gene type_y Uniprot_dc_y dc_y \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 protein_coding Q14542 0.000000 \n", "ENSG00000182791_ENSG00000174669 protein_coding Q9NVE4 0.000000 \n", "ENSG00000175592_ENSG00000174669 protein_coding P15407 0.531365 \n", "ENSG00000175376_ENSG00000174669 protein_coding Q8N9N8 0.327273 \n", "ENSG00000174744_ENSG00000174669 protein_coding G5E9I4 0.196552 \n", "ENSG00000175229_ENSG00000174669 protein_coding Q96A11 0.076566 \n", "ENSG00000173914_ENSG00000174669 protein_coding Q9BQ04 0.000000 \n", "ENSG00000172543_ENSG00000174669 protein_coding P56202 0.000000 \n", "ENSG00000174903_ENSG00000174669 protein_coding Q9H0U4 0.139303 \n", "ENSG00000174996_ENSG00000174669 protein_coding Q9H0B6 0.289389 \n", "ENSG00000174807_ENSG00000174669 protein_coding Q9HCU0 0.092470 \n", "ENSG00000175115_ENSG00000174669 protein_coding Q6VY07 0.305296 \n", "ENSG00000248643_ENSG00000174669 protein_coding A0A0A0MSL8 0.000000 \n", "ENSG00000175334_ENSG00000174669 protein_coding O75531 0.000000 \n", "ENSG00000174165_ENSG00000174669 protein_coding Q6UX98 0.000000 \n", "ENSG00000248746_ENSG00000174669 protein_coding A0A087WSZ2 0.043432 \n", "ENSG00000175550_ENSG00000174669 protein_coding C9JCC6 0.575472 \n", "ENSG00000175602_ENSG00000174669 protein_coding Q15834 0.272277 \n", "ENSG00000174871_ENSG00000174669 protein_coding Q6PI25 0.000000 \n", "ENSG00000255320_ENSG00000174669 NaN NaN NaN \n", "ENSG00000254986_ENSG00000174669 protein_coding G3V180 0.000000 \n", "ENSG00000254461_ENSG00000174669 NaN NaN NaN \n", "ENSG00000245156_ENSG00000174669 NaN NaN NaN \n", "ENSG00000255468_ENSG00000174669 NaN NaN NaN \n", "ENSG00000174684_ENSG00000174669 protein_coding O43505 0.000000 \n", "ENSG00000173621_ENSG00000174669 protein_coding Q6PJG9 0.105512 \n", "ENSG00000174791_ENSG00000174669 protein_coding Q13671 0.266922 \n", "ENSG00000174547_ENSG00000174669 protein_coding Q9Y3B7 0.000000 \n", "ENSG00000173933_ENSG00000174669 protein_coding Q9BWF3 0.000000 \n", "ENSG00000179292_ENSG00000174669 protein_coding Q8N4L1 0.162393 \n", "ENSG00000175315_ENSG00000174669 protein_coding Q15828 0.000000 \n", "ENSG00000174080_ENSG00000174669 protein_coding Q9UBX1 0.000000 \n", "ENSG00000254510_ENSG00000174669 NaN NaN NaN \n", "ENSG00000173992_ENSG00000174669 protein_coding O14618 0.000000 \n", "ENSG00000175294_ENSG00000174669 protein_coding Q8NEC5 0.397436 \n", "ENSG00000087365_ENSG00000174669 protein_coding Q13435 0.498324 \n", "ENSG00000174576_ENSG00000174669 protein_coding Q8IUM7 0.128429 \n", "ENSG00000172638_ENSG00000174669 protein_coding O95967 0.000000 \n", "ENSG00000255517_ENSG00000174669 NaN NaN NaN \n", "ENSG00000175573_ENSG00000174669 protein_coding Q9H3H3 0.205479 \n", "ENSG00000173898_ENSG00000174669 protein_coding O15020 0.084519 \n", "ENSG00000172500_ENSG00000174669 protein_coding O43427 0.000000 \n", "ENSG00000174516_ENSG00000174669 protein_coding Q8N2H9 0.083156 \n", "ENSG00000174483_ENSG00000174669 protein_coding Q8NFJ9 0.000000 \n", "ENSG00000173653_ENSG00000174669 protein_coding Q9Y256 0.000000 \n", "ENSG00000175467_ENSG00000174669 protein_coding O43290 0.316250 \n", "ENSG00000174851_ENSG00000174669 protein_coding O95070 0.112628 \n", "ENSG00000173715_ENSG00000174669 protein_coding A0A2U3TZP7 0.141720 \n", "ENSG00000239306_ENSG00000174669 protein_coding Q96PK6 0.170404 \n", "\n", " seq_length_y chrom_y \n", "pairs \n", "ENSG00000174669_ENSG00000174669 456.0 chr11 \n", "ENSG00000182791_ENSG00000174669 849.0 chr11 \n", "ENSG00000175592_ENSG00000174669 271.0 chr11 \n", "ENSG00000175376_ENSG00000174669 165.0 chr11 \n", "ENSG00000174744_ENSG00000174669 290.0 chr11 \n", "ENSG00000175229_ENSG00000174669 431.0 chr11 \n", "ENSG00000173914_ENSG00000174669 359.0 chr11 \n", "ENSG00000172543_ENSG00000174669 376.0 chr11 \n", "ENSG00000174903_ENSG00000174669 201.0 chr11 \n", "ENSG00000174996_ENSG00000174669 622.0 chr11 \n", "ENSG00000174807_ENSG00000174669 757.0 chr11 \n", "ENSG00000175115_ENSG00000174669 963.0 chr11 \n", "ENSG00000248643_ENSG00000174669 147.0 chr11 \n", "ENSG00000175334_ENSG00000174669 89.0 chr11 \n", "ENSG00000174165_ENSG00000174669 284.0 chr11 \n", "ENSG00000248746_ENSG00000174669 944.0 chr11 \n", "ENSG00000175550_ENSG00000174669 212.0 chr11 \n", "ENSG00000175602_ENSG00000174669 202.0 chr11 \n", "ENSG00000174871_ENSG00000174669 160.0 chr11 \n", "ENSG00000255320_ENSG00000174669 NaN chr11 \n", "ENSG00000254986_ENSG00000174669 757.0 chr11 \n", "ENSG00000254461_ENSG00000174669 NaN chr11 \n", "ENSG00000245156_ENSG00000174669 NaN chr11 \n", "ENSG00000255468_ENSG00000174669 NaN chr11 \n", "ENSG00000174684_ENSG00000174669 415.0 chr11 \n", "ENSG00000173621_ENSG00000174669 635.0 chr11 \n", "ENSG00000174791_ENSG00000174669 783.0 chr11 \n", "ENSG00000174547_ENSG00000174669 192.0 chr11 \n", "ENSG00000173933_ENSG00000174669 364.0 chr11 \n", "ENSG00000179292_ENSG00000174669 468.0 chr11 \n", "ENSG00000175315_ENSG00000174669 149.0 chr11 \n", "ENSG00000174080_ENSG00000174669 484.0 chr11 \n", "ENSG00000254510_ENSG00000174669 NaN chr11 \n", "ENSG00000173992_ENSG00000174669 274.0 chr11 \n", "ENSG00000175294_ENSG00000174669 780.0 chr11 \n", "ENSG00000087365_ENSG00000174669 895.0 chr11 \n", "ENSG00000174576_ENSG00000174669 802.0 chr11 \n", "ENSG00000172638_ENSG00000174669 443.0 chr11 \n", "ENSG00000255517_ENSG00000174669 NaN chr11 \n", "ENSG00000175573_ENSG00000174669 292.0 chr11 \n", "ENSG00000173898_ENSG00000174669 2390.0 chr11 \n", "ENSG00000172500_ENSG00000174669 364.0 chr11 \n", "ENSG00000174516_ENSG00000174669 469.0 chr11 \n", "ENSG00000174483_ENSG00000174669 593.0 chr11 \n", "ENSG00000173653_ENSG00000174669 329.0 chr11 \n", "ENSG00000175467_ENSG00000174669 800.0 chr11 \n", "ENSG00000174851_ENSG00000174669 293.0 chr11 \n", "ENSG00000173715_ENSG00000174669 628.0 chr11 \n", "ENSG00000239306_ENSG00000174669 669.0 chr11 \n", "\n", "[49 rows x 22 columns]" ] }, "execution_count": 527, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_2_or[(df_2_or['Gene stable ID_x'] == 'ENSG00000174669') & (df_2_or['tss_tss'] <=500000)]" ] }, { "cell_type": "code", "execution_count": 546, "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", "
tss_tssexpexp_georghi-c-raostrand_xgene_order_tss_xgene_order_tes_xGene stable ID_xGene type_xUniprot_dc_x...chrom_xstrand_ygene_order_tss_ygene_order_tes_yGene stable ID_yGene type_yUniprot_dc_ydc_yseq_length_ychrom_y
pairs
ENSG00000183340_ENSG0000018334001.000000NaN0.0+25912593ENSG00000183340protein_codingQ9Y4A0...chr11+25912593ENSG00000183340protein_codingQ9Y4A00.000000524.0chr11
ENSG00000149231_ENSG00000183340320.996508NaN785.0+25912593ENSG00000183340protein_codingQ9Y4A0...chr11-25902590ENSG00000149231protein_codingQ8N4S00.540441544.0chr11
ENSG00000184384_ENSG00000183340467930.935457NaN785.0+25912593ENSG00000183340protein_codingQ9Y4A0...chr11-25892587ENSG00000184384protein_codingQ8IZL20.4169551156.0chr11
ENSG00000087053_ENSG000001833404646730.983718NaN774.0+25912593ENSG00000183340protein_codingQ9Y4A0...chr11-25852584ENSG00000087053protein_codingQ136140.132193643.0chr11
\n", "

4 rows × 22 columns

\n", "
" ], "text/plain": [ " tss_tss exp exp_georg hi-c-rao \\\n", "pairs \n", "ENSG00000183340_ENSG00000183340 0 1.000000 NaN 0.0 \n", "ENSG00000149231_ENSG00000183340 32 0.996508 NaN 785.0 \n", "ENSG00000184384_ENSG00000183340 46793 0.935457 NaN 785.0 \n", "ENSG00000087053_ENSG00000183340 464673 0.983718 NaN 774.0 \n", "\n", " strand_x gene_order_tss_x gene_order_tes_x \\\n", "pairs \n", "ENSG00000183340_ENSG00000183340 + 2591 2593 \n", "ENSG00000149231_ENSG00000183340 + 2591 2593 \n", "ENSG00000184384_ENSG00000183340 + 2591 2593 \n", "ENSG00000087053_ENSG00000183340 + 2591 2593 \n", "\n", " Gene stable ID_x Gene type_x Uniprot_dc_x \\\n", "pairs \n", "ENSG00000183340_ENSG00000183340 ENSG00000183340 protein_coding Q9Y4A0 \n", "ENSG00000149231_ENSG00000183340 ENSG00000183340 protein_coding Q9Y4A0 \n", "ENSG00000184384_ENSG00000183340 ENSG00000183340 protein_coding Q9Y4A0 \n", "ENSG00000087053_ENSG00000183340 ENSG00000183340 protein_coding Q9Y4A0 \n", "\n", " ... chrom_x strand_y gene_order_tss_y \\\n", "pairs ... \n", "ENSG00000183340_ENSG00000183340 ... chr11 + 2591 \n", "ENSG00000149231_ENSG00000183340 ... chr11 - 2590 \n", "ENSG00000184384_ENSG00000183340 ... chr11 - 2589 \n", "ENSG00000087053_ENSG00000183340 ... chr11 - 2585 \n", "\n", " gene_order_tes_y Gene stable ID_y \\\n", "pairs \n", "ENSG00000183340_ENSG00000183340 2593 ENSG00000183340 \n", "ENSG00000149231_ENSG00000183340 2590 ENSG00000149231 \n", "ENSG00000184384_ENSG00000183340 2587 ENSG00000184384 \n", "ENSG00000087053_ENSG00000183340 2584 ENSG00000087053 \n", "\n", " Gene type_y Uniprot_dc_y dc_y \\\n", "pairs \n", "ENSG00000183340_ENSG00000183340 protein_coding Q9Y4A0 0.000000 \n", "ENSG00000149231_ENSG00000183340 protein_coding Q8N4S0 0.540441 \n", "ENSG00000184384_ENSG00000183340 protein_coding Q8IZL2 0.416955 \n", "ENSG00000087053_ENSG00000183340 protein_coding Q13614 0.132193 \n", "\n", " seq_length_y chrom_y \n", "pairs \n", "ENSG00000183340_ENSG00000183340 524.0 chr11 \n", "ENSG00000149231_ENSG00000183340 544.0 chr11 \n", "ENSG00000184384_ENSG00000183340 1156.0 chr11 \n", "ENSG00000087053_ENSG00000183340 643.0 chr11 \n", "\n", "[4 rows x 22 columns]" ] }, "execution_count": 546, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_2_or[(df_2_or['Gene stable ID_x'] == 'ENSG00000183340') & (df_2_or['tss_tss'] <=500000)]" ] }, { "cell_type": "code", "execution_count": 543, "metadata": {}, "outputs": [], "source": [ "import itertools\n", "y = [r[0]+ '_' + r[1] for r in itertools.product(['ENSG00000183340', 'ENSG00000149231'], ['ENSG00000183340', 'ENSG00000149231'])] " ] }, { "cell_type": "code", "execution_count": 576, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('ENSG00000183340', 'ENSG00000183340')\n", "v\n", "('ENSG00000183340', 'ENSG00000149231')\n", "v\n", "('ENSG00000149231', 'ENSG00000183340')\n", "v\n", "('ENSG00000149231', 'ENSG00000149231')\n", "v\n" ] } ], "source": [ "for r in itertools.product(['ENSG00000183340', 'ENSG00000149231'], ['ENSG00000183340', 'ENSG00000149231']):\n", " print (r)\n", " print (\"v\")\n", " " ] }, { "cell_type": "code", "execution_count": 552, "metadata": {}, "outputs": [], "source": [ "df_2_or['exp_mean'] = df_2_or.loc[y,:]['exp'].mean()" ] }, { "cell_type": "code", "execution_count": 581, "metadata": {}, "outputs": [], "source": [ "df_2_or['exp_mean'] = 1" ] }, { "cell_type": "code", "execution_count": 582, "metadata": {}, "outputs": [], "source": [ "for ind_val in y:\n", " df_2_or.at[['ENSG00000174669_ENSG00000174669', 'ENSG00000174669_ENSG00000183340'], 'exp_mean'] = df_2_or.loc[y,:]['exp'].mean()" ] }, { "cell_type": "code", "execution_count": 583, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
tss_tssexpexp_georghi-c-raostrand_xgene_order_tss_xgene_order_tes_xGene stable ID_xGene type_xUniprot_dc_x...strand_ygene_order_tss_ygene_order_tes_yGene stable ID_yGene type_yUniprot_dc_ydc_yseq_length_ychrom_yexp_mean
pairs
ENSG00000174669_ENSG0000017466901.000000NaN0.0-18281827ENSG00000174669protein_codingQ14542...-18281827ENSG00000174669protein_codingQ145420.000000456.0chr110.998254
ENSG00000174669_ENSG00000183340300177740.863495NaN274.0+25912593ENSG00000183340protein_codingQ9Y4A0...-18281827ENSG00000174669protein_codingQ145420.000000456.0chr110.998254
ENSG00000174669_ENSG000001827912208490.688515NaN401.0-18471847ENSG00000182791protein_codingQ9NVE4...-18281827ENSG00000174669protein_codingQ145420.000000456.0chr111.000000
ENSG00000174669_ENSG00000132275597685980.939615NaN404.0-384384ENSG00000132275protein_codingO43159...-18281827ENSG00000174669protein_codingQ145420.000000456.0chr111.000000
ENSG00000174669_ENSG0000016849645793040.887136NaN4489.0+15271527ENSG00000168496protein_codingP39748...-18281827ENSG00000174669protein_codingQ145420.000000456.0chr111.000000
..................................................................
ENSG00000239306_ENSG00000267940604133280.860745NaNNaN-366366ENSG00000267940NaNNaN...+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr111.000000
ENSG00000239306_ENSG00000254694595924460.722093NaNNaN-32243225ENSG00000254694NaNNaN...+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr111.000000
ENSG00000239306_ENSG000001737151278690.934376NaN446.0+18561858ENSG00000173715protein_codingA0A2U3TZP7...+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr111.000000
ENSG00000239306_ENSG00000166086674524890.909951NaN403.0+33373339ENSG00000166086protein_codingQ9BX67...+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr111.000000
ENSG00000239306_ENSG0000023930601.000000NaN0.0+18501850ENSG00000239306protein_codingQ96PK6...+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr111.000000
\n", "

1679616 rows × 23 columns

\n", "
" ], "text/plain": [ " tss_tss exp exp_georg hi-c-rao \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 0 1.000000 NaN 0.0 \n", "ENSG00000174669_ENSG00000183340 30017774 0.863495 NaN 274.0 \n", "ENSG00000174669_ENSG00000182791 220849 0.688515 NaN 401.0 \n", "ENSG00000174669_ENSG00000132275 59768598 0.939615 NaN 404.0 \n", "ENSG00000174669_ENSG00000168496 4579304 0.887136 NaN 4489.0 \n", "... ... ... ... ... \n", "ENSG00000239306_ENSG00000267940 60413328 0.860745 NaN NaN \n", "ENSG00000239306_ENSG00000254694 59592446 0.722093 NaN NaN \n", "ENSG00000239306_ENSG00000173715 127869 0.934376 NaN 446.0 \n", "ENSG00000239306_ENSG00000166086 67452489 0.909951 NaN 403.0 \n", "ENSG00000239306_ENSG00000239306 0 1.000000 NaN 0.0 \n", "\n", " strand_x gene_order_tss_x gene_order_tes_x \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 - 1828 1827 \n", "ENSG00000174669_ENSG00000183340 + 2591 2593 \n", "ENSG00000174669_ENSG00000182791 - 1847 1847 \n", "ENSG00000174669_ENSG00000132275 - 384 384 \n", "ENSG00000174669_ENSG00000168496 + 1527 1527 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 - 366 366 \n", "ENSG00000239306_ENSG00000254694 - 3224 3225 \n", "ENSG00000239306_ENSG00000173715 + 1856 1858 \n", "ENSG00000239306_ENSG00000166086 + 3337 3339 \n", "ENSG00000239306_ENSG00000239306 + 1850 1850 \n", "\n", " Gene stable ID_x Gene type_x Uniprot_dc_x \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174669_ENSG00000183340 ENSG00000183340 protein_coding Q9Y4A0 \n", "ENSG00000174669_ENSG00000182791 ENSG00000182791 protein_coding Q9NVE4 \n", "ENSG00000174669_ENSG00000132275 ENSG00000132275 protein_coding O43159 \n", "ENSG00000174669_ENSG00000168496 ENSG00000168496 protein_coding P39748 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 ENSG00000267940 NaN NaN \n", "ENSG00000239306_ENSG00000254694 ENSG00000254694 NaN NaN \n", "ENSG00000239306_ENSG00000173715 ENSG00000173715 protein_coding A0A2U3TZP7 \n", "ENSG00000239306_ENSG00000166086 ENSG00000166086 protein_coding Q9BX67 \n", "ENSG00000239306_ENSG00000239306 ENSG00000239306 protein_coding Q96PK6 \n", "\n", " ... strand_y gene_order_tss_y \\\n", "pairs ... \n", "ENSG00000174669_ENSG00000174669 ... - 1828 \n", "ENSG00000174669_ENSG00000183340 ... - 1828 \n", "ENSG00000174669_ENSG00000182791 ... - 1828 \n", "ENSG00000174669_ENSG00000132275 ... - 1828 \n", "ENSG00000174669_ENSG00000168496 ... - 1828 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 ... + 1850 \n", "ENSG00000239306_ENSG00000254694 ... + 1850 \n", "ENSG00000239306_ENSG00000173715 ... + 1850 \n", "ENSG00000239306_ENSG00000166086 ... + 1850 \n", "ENSG00000239306_ENSG00000239306 ... + 1850 \n", "\n", " gene_order_tes_y Gene stable ID_y \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000183340 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000182791 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000132275 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000168496 1827 ENSG00000174669 \n", "... ... ... \n", "ENSG00000239306_ENSG00000267940 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000254694 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000173715 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000166086 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000239306 1850 ENSG00000239306 \n", "\n", " Gene type_y Uniprot_dc_y dc_y \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000183340 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000182791 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000132275 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000168496 protein_coding Q14542 0.000000 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000254694 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000173715 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000166086 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000239306 protein_coding Q96PK6 0.170404 \n", "\n", " seq_length_y chrom_y exp_mean \n", "pairs \n", "ENSG00000174669_ENSG00000174669 456.0 chr11 0.998254 \n", "ENSG00000174669_ENSG00000183340 456.0 chr11 0.998254 \n", "ENSG00000174669_ENSG00000182791 456.0 chr11 1.000000 \n", "ENSG00000174669_ENSG00000132275 456.0 chr11 1.000000 \n", "ENSG00000174669_ENSG00000168496 456.0 chr11 1.000000 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 669.0 chr11 1.000000 \n", "ENSG00000239306_ENSG00000254694 669.0 chr11 1.000000 \n", "ENSG00000239306_ENSG00000173715 669.0 chr11 1.000000 \n", "ENSG00000239306_ENSG00000166086 669.0 chr11 1.000000 \n", "ENSG00000239306_ENSG00000239306 669.0 chr11 1.000000 \n", "\n", "[1679616 rows x 23 columns]" ] }, "execution_count": 583, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_2_or" ] }, { "cell_type": "code", "execution_count": 557, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 557, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_2_or['exp_mean'].max()" ] }, { "cell_type": "code", "execution_count": 553, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pairs\n", "ENSG00000174669_ENSG00000174669 0.998254\n", "ENSG00000174669_ENSG00000183340 0.998254\n", "ENSG00000174669_ENSG00000182791 0.998254\n", "ENSG00000174669_ENSG00000132275 0.998254\n", "ENSG00000174669_ENSG00000168496 0.998254\n", " ... \n", "ENSG00000239306_ENSG00000267940 0.998254\n", "ENSG00000239306_ENSG00000254694 0.998254\n", "ENSG00000239306_ENSG00000173715 0.998254\n", "ENSG00000239306_ENSG00000166086 0.998254\n", "ENSG00000239306_ENSG00000239306 0.998254\n", "Name: exp_mean, Length: 1679616, dtype: float64" ] }, "execution_count": 553, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_2_or['exp_mean']" ] }, { "cell_type": "code", "execution_count": 537, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pairs\n", "ENSG00000183340_ENSG00000174669 0.863495\n", "ENSG00000183340_ENSG00000174483 0.900847\n", "ENSG00000149231_ENSG00000174669 0.784731\n", "ENSG00000149231_ENSG00000174483 0.923430\n", "Name: exp, dtype: float64" ] }, "execution_count": 537, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_2_or.loc[y,:]['exp']" ] }, { "cell_type": "code", "execution_count": 542, "metadata": {}, "outputs": [], "source": [ "unique_genes = list(set(df['Gene stable ID_x'].unique()))" ] }, { "cell_type": "code", "execution_count": 549, "metadata": {}, "outputs": [], "source": [ "gene_resolution_pairs= {}\n", "for each_gene in unique_genes:\n", " gene_resolution_pairs[each_gene] = df_2_or[(df_2_or['Gene stable ID_x'] == each_gene) & (df_2_or['tss_tss'] <=500000)]['Gene stable ID_y'].to_list()" ] }, { "cell_type": "code", "execution_count": 604, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['ENSG00000162188',\n", " 'ENSG00000168092',\n", " 'ENSG00000166407',\n", " 'ENSG00000172927',\n", " 'ENSG00000166333',\n", " 'ENSG00000150779',\n", " 'ENSG00000150776',\n", " 'ENSG00000187726',\n", " 'ENSG00000172830',\n", " 'ENSG00000242689']" ] }, "execution_count": 604, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unique_genes[0:10]" ] }, { "cell_type": "code", "execution_count": 607, "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "\"Passing list-likes to .loc or [] with any missing labels is no longer supported. The following labels were missing: Index(['ENSG00000250659_ENSG00000250659', 'ENSG00000250659_ENSG00000162222',\\n 'ENSG00000250659_ENSG00000204922', 'ENSG00000250659_ENSG00000168569',\\n 'ENSG00000250659_ENSG00000162188',\\n ...\\n 'ENSG00000185475_ENSG00000269463', 'ENSG00000185475_ENSG00000269176',\\n 'ENSG00000185475_ENSG00000255508', 'ENSG00000185475_ENSG00000254454',\\n 'ENSG00000185475_ENSG00000252361'],\\n dtype='object', name='pairs', length=408). See https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex-listlike\"", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mcounter\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mdf_2_or\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mindex_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'exp_mean'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf_2_or\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mindex_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'exp'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 871\u001b[0m \u001b[0;31m# AttributeError for IntervalTree get_value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 872\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 873\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_tuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 874\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 875\u001b[0m \u001b[0;31m# we by definition only have the 0th axis\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m_getitem_tuple\u001b[0;34m(self, tup)\u001b[0m\n\u001b[1;32m 1053\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_multi_take\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1054\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1055\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_tuple_same_dim\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1056\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1057\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_get_label\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m_getitem_tuple_same_dim\u001b[0;34m(self, tup)\u001b[0m\n\u001b[1;32m 748\u001b[0m \u001b[0;32mcontinue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 749\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 750\u001b[0;31m \u001b[0mretval\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mretval\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_axis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 751\u001b[0m \u001b[0;31m# We should never have retval.ndim < self.ndim, as that should\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 752\u001b[0m \u001b[0;31m# be handled by the _getitem_lowerdim call above.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m_getitem_axis\u001b[0;34m(self, key, axis)\u001b[0m\n\u001b[1;32m 1097\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Cannot index with multidimensional key\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1098\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1099\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_iterable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1100\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1101\u001b[0m \u001b[0;31m# nested tuple slicing\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m_getitem_iterable\u001b[0;34m(self, key, axis)\u001b[0m\n\u001b[1;32m 1035\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1036\u001b[0m \u001b[0;31m# A collection of keys\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1037\u001b[0;31m \u001b[0mkeyarr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_listlike_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mraise_missing\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1038\u001b[0m return self.obj._reindex_with_indexers(\n\u001b[1;32m 1039\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mkeyarr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mallow_dups\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m_get_listlike_indexer\u001b[0;34m(self, key, axis, raise_missing)\u001b[0m\n\u001b[1;32m 1252\u001b[0m \u001b[0mkeyarr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindexer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnew_indexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reindex_non_unique\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkeyarr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1253\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1254\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_validate_read_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkeyarr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindexer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mraise_missing\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mraise_missing\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1255\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mkeyarr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindexer\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m_validate_read_indexer\u001b[0;34m(self, key, indexer, axis, raise_missing)\u001b[0m\n\u001b[1;32m 1314\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0moption_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"display.max_seq_items\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"display.width\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m80\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1315\u001b[0m raise KeyError(\n\u001b[0;32m-> 1316\u001b[0;31m \u001b[0;34m\"Passing list-likes to .loc or [] with any missing labels \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1317\u001b[0m \u001b[0;34m\"is no longer supported. \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1318\u001b[0m \u001b[0;34mf\"The following labels were missing: {not_found}. \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyError\u001b[0m: \"Passing list-likes to .loc or [] with any missing labels is no longer supported. The following labels were missing: Index(['ENSG00000250659_ENSG00000250659', 'ENSG00000250659_ENSG00000162222',\\n 'ENSG00000250659_ENSG00000204922', 'ENSG00000250659_ENSG00000168569',\\n 'ENSG00000250659_ENSG00000162188',\\n ...\\n 'ENSG00000185475_ENSG00000269463', 'ENSG00000185475_ENSG00000269176',\\n 'ENSG00000185475_ENSG00000255508', 'ENSG00000185475_ENSG00000254454',\\n 'ENSG00000185475_ENSG00000252361'],\\n dtype='object', name='pairs', length=408). See https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex-listlike\"" ] } ], "source": [ "counter = 0\n", "for pairs in itertools.product(unique_genes, unique_genes):\n", " counter = counter +1 \n", " index_list = [r[0]+ '_' + r[1] for r in itertools.product(gene_resolution_pairs[pairs[0]], gene_resolution_pairs[pairs[1]])] \n", " if counter == 100000:\n", " \n", " print (counter)\n", " df_2_or.at[index_list, 'exp_mean'] = df_2_or.loc[index_list,:]['exp'].mean()" ] }, { "cell_type": "code", "execution_count": 606, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
tss_tssexpexp_georghi-c-raostrand_xgene_order_tss_xgene_order_tes_xGene stable ID_xGene type_xUniprot_dc_x...gene_order_tss_ygene_order_tes_yGene stable ID_yGene type_yUniprot_dc_ydc_yseq_length_ychrom_yexp_meanexp_median
pairs
ENSG00000174669_ENSG0000017466900.999501NaN0.0-18281827ENSG00000174669protein_codingQ14542...18281827ENSG00000174669protein_codingQ145420.000000456.0chr110.9982540.986647
ENSG00000174669_ENSG00000183340300177740.760818NaN274.0+25912593ENSG00000183340protein_codingQ9Y4A0...18281827ENSG00000174669protein_codingQ145420.000000456.0chr110.9982540.957684
ENSG00000174669_ENSG000001827912208490.542436NaN401.0-18471847ENSG00000182791protein_codingQ9NVE4...18281827ENSG00000174669protein_codingQ145420.000000456.0chr111.0000000.966585
ENSG00000174669_ENSG00000132275597685980.886262NaN404.0-384384ENSG00000132275protein_codingO43159...18281827ENSG00000174669protein_codingQ145420.000000456.0chr111.0000000.863231
ENSG00000174669_ENSG0000016849645793040.797051NaN4489.0+15271527ENSG00000168496protein_codingP39748...18281827ENSG00000174669protein_codingQ145420.000000456.0chr111.0000000.902240
..................................................................
ENSG00000239306_ENSG00000151702620699530.809972NaN293.0+32603262ENSG00000151702protein_codingQ01543...18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr111.0000000.397166
ENSG00000239306_ENSG0000015658790482970.789157NaN1140.0-13361336ENSG00000156587protein_codingO14933...18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr111.0000000.775546
ENSG00000239306_ENSG000001737151278690.876923NaN446.0+18561858ENSG00000173715protein_codingA0A2U3TZP7...18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr111.0000000.971924
ENSG00000239306_ENSG00000166086674524890.834559NaN403.0+33373339ENSG00000166086protein_codingQ9BX67...18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr111.0000000.862044
ENSG00000239306_ENSG0000023930600.999501NaN0.0+18501850ENSG00000239306protein_codingQ96PK6...18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr111.0000000.971924
\n", "

1008016 rows × 24 columns

\n", "
" ], "text/plain": [ " tss_tss exp exp_georg hi-c-rao \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 0 0.999501 NaN 0.0 \n", "ENSG00000174669_ENSG00000183340 30017774 0.760818 NaN 274.0 \n", "ENSG00000174669_ENSG00000182791 220849 0.542436 NaN 401.0 \n", "ENSG00000174669_ENSG00000132275 59768598 0.886262 NaN 404.0 \n", "ENSG00000174669_ENSG00000168496 4579304 0.797051 NaN 4489.0 \n", "... ... ... ... ... \n", "ENSG00000239306_ENSG00000151702 62069953 0.809972 NaN 293.0 \n", "ENSG00000239306_ENSG00000156587 9048297 0.789157 NaN 1140.0 \n", "ENSG00000239306_ENSG00000173715 127869 0.876923 NaN 446.0 \n", "ENSG00000239306_ENSG00000166086 67452489 0.834559 NaN 403.0 \n", "ENSG00000239306_ENSG00000239306 0 0.999501 NaN 0.0 \n", "\n", " strand_x gene_order_tss_x gene_order_tes_x \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 - 1828 1827 \n", "ENSG00000174669_ENSG00000183340 + 2591 2593 \n", "ENSG00000174669_ENSG00000182791 - 1847 1847 \n", "ENSG00000174669_ENSG00000132275 - 384 384 \n", "ENSG00000174669_ENSG00000168496 + 1527 1527 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000151702 + 3260 3262 \n", "ENSG00000239306_ENSG00000156587 - 1336 1336 \n", "ENSG00000239306_ENSG00000173715 + 1856 1858 \n", "ENSG00000239306_ENSG00000166086 + 3337 3339 \n", "ENSG00000239306_ENSG00000239306 + 1850 1850 \n", "\n", " Gene stable ID_x Gene type_x Uniprot_dc_x \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174669_ENSG00000183340 ENSG00000183340 protein_coding Q9Y4A0 \n", "ENSG00000174669_ENSG00000182791 ENSG00000182791 protein_coding Q9NVE4 \n", "ENSG00000174669_ENSG00000132275 ENSG00000132275 protein_coding O43159 \n", "ENSG00000174669_ENSG00000168496 ENSG00000168496 protein_coding P39748 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000151702 ENSG00000151702 protein_coding Q01543 \n", "ENSG00000239306_ENSG00000156587 ENSG00000156587 protein_coding O14933 \n", "ENSG00000239306_ENSG00000173715 ENSG00000173715 protein_coding A0A2U3TZP7 \n", "ENSG00000239306_ENSG00000166086 ENSG00000166086 protein_coding Q9BX67 \n", "ENSG00000239306_ENSG00000239306 ENSG00000239306 protein_coding Q96PK6 \n", "\n", " ... gene_order_tss_y gene_order_tes_y \\\n", "pairs ... \n", "ENSG00000174669_ENSG00000174669 ... 1828 1827 \n", "ENSG00000174669_ENSG00000183340 ... 1828 1827 \n", "ENSG00000174669_ENSG00000182791 ... 1828 1827 \n", "ENSG00000174669_ENSG00000132275 ... 1828 1827 \n", "ENSG00000174669_ENSG00000168496 ... 1828 1827 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000151702 ... 1850 1850 \n", "ENSG00000239306_ENSG00000156587 ... 1850 1850 \n", "ENSG00000239306_ENSG00000173715 ... 1850 1850 \n", "ENSG00000239306_ENSG00000166086 ... 1850 1850 \n", "ENSG00000239306_ENSG00000239306 ... 1850 1850 \n", "\n", " Gene stable ID_y Gene type_y \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 ENSG00000174669 protein_coding \n", "ENSG00000174669_ENSG00000183340 ENSG00000174669 protein_coding \n", "ENSG00000174669_ENSG00000182791 ENSG00000174669 protein_coding \n", "ENSG00000174669_ENSG00000132275 ENSG00000174669 protein_coding \n", "ENSG00000174669_ENSG00000168496 ENSG00000174669 protein_coding \n", "... ... ... \n", "ENSG00000239306_ENSG00000151702 ENSG00000239306 protein_coding \n", "ENSG00000239306_ENSG00000156587 ENSG00000239306 protein_coding \n", "ENSG00000239306_ENSG00000173715 ENSG00000239306 protein_coding \n", "ENSG00000239306_ENSG00000166086 ENSG00000239306 protein_coding \n", "ENSG00000239306_ENSG00000239306 ENSG00000239306 protein_coding \n", "\n", " Uniprot_dc_y dc_y seq_length_y chrom_y \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 Q14542 0.000000 456.0 chr11 \n", "ENSG00000174669_ENSG00000183340 Q14542 0.000000 456.0 chr11 \n", "ENSG00000174669_ENSG00000182791 Q14542 0.000000 456.0 chr11 \n", "ENSG00000174669_ENSG00000132275 Q14542 0.000000 456.0 chr11 \n", "ENSG00000174669_ENSG00000168496 Q14542 0.000000 456.0 chr11 \n", "... ... ... ... ... \n", "ENSG00000239306_ENSG00000151702 Q96PK6 0.170404 669.0 chr11 \n", "ENSG00000239306_ENSG00000156587 Q96PK6 0.170404 669.0 chr11 \n", "ENSG00000239306_ENSG00000173715 Q96PK6 0.170404 669.0 chr11 \n", "ENSG00000239306_ENSG00000166086 Q96PK6 0.170404 669.0 chr11 \n", "ENSG00000239306_ENSG00000239306 Q96PK6 0.170404 669.0 chr11 \n", "\n", " exp_mean exp_median \n", "pairs \n", "ENSG00000174669_ENSG00000174669 0.998254 0.986647 \n", "ENSG00000174669_ENSG00000183340 0.998254 0.957684 \n", "ENSG00000174669_ENSG00000182791 1.000000 0.966585 \n", "ENSG00000174669_ENSG00000132275 1.000000 0.863231 \n", "ENSG00000174669_ENSG00000168496 1.000000 0.902240 \n", "... ... ... \n", "ENSG00000239306_ENSG00000151702 1.000000 0.397166 \n", "ENSG00000239306_ENSG00000156587 1.000000 0.775546 \n", "ENSG00000239306_ENSG00000173715 1.000000 0.971924 \n", "ENSG00000239306_ENSG00000166086 1.000000 0.862044 \n", "ENSG00000239306_ENSG00000239306 1.000000 0.971924 \n", "\n", "[1008016 rows x 24 columns]" ] }, "execution_count": 606, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_2_or" ] }, { "cell_type": "code", "execution_count": 563, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
tss_tssexpexp_georghi-c-raostrand_xgene_order_tss_xgene_order_tes_xGene stable ID_xGene type_xUniprot_dc_x...strand_ygene_order_tss_ygene_order_tes_yGene stable ID_yGene type_yUniprot_dc_ydc_yseq_length_ychrom_yexp_mean
pairs
ENSG00000174669_ENSG0000017466901.000000NaN0.0-18281827ENSG00000174669protein_codingQ14542...-18281827ENSG00000174669protein_codingQ145420.000000456.0chr111.000000
ENSG00000174669_ENSG00000183340300177740.863495NaN274.0+25912593ENSG00000183340protein_codingQ9Y4A0...-18281827ENSG00000174669protein_codingQ145420.000000456.0chr111.000000
ENSG00000174669_ENSG000001827912208490.688515NaN401.0-18471847ENSG00000182791protein_codingQ9NVE4...-18281827ENSG00000174669protein_codingQ145420.000000456.0chr110.998254
ENSG00000174669_ENSG00000132275597685980.939615NaN404.0-384384ENSG00000132275protein_codingO43159...-18281827ENSG00000174669protein_codingQ145420.000000456.0chr110.998254
ENSG00000174669_ENSG0000016849645793040.887136NaN4489.0+15271527ENSG00000168496protein_codingP39748...-18281827ENSG00000174669protein_codingQ145420.000000456.0chr110.998254
..................................................................
ENSG00000239306_ENSG00000267940604133280.860745NaNNaN-366366ENSG00000267940NaNNaN...+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr110.998254
ENSG00000239306_ENSG00000254694595924460.722093NaNNaN-32243225ENSG00000254694NaNNaN...+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr110.998254
ENSG00000239306_ENSG000001737151278690.934376NaN446.0+18561858ENSG00000173715protein_codingA0A2U3TZP7...+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr110.998254
ENSG00000239306_ENSG00000166086674524890.909951NaN403.0+33373339ENSG00000166086protein_codingQ9BX67...+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr110.998254
ENSG00000239306_ENSG0000023930601.000000NaN0.0+18501850ENSG00000239306protein_codingQ96PK6...+18501850ENSG00000239306protein_codingQ96PK60.170404669.0chr110.998254
\n", "

1679616 rows × 23 columns

\n", "
" ], "text/plain": [ " tss_tss exp exp_georg hi-c-rao \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 0 1.000000 NaN 0.0 \n", "ENSG00000174669_ENSG00000183340 30017774 0.863495 NaN 274.0 \n", "ENSG00000174669_ENSG00000182791 220849 0.688515 NaN 401.0 \n", "ENSG00000174669_ENSG00000132275 59768598 0.939615 NaN 404.0 \n", "ENSG00000174669_ENSG00000168496 4579304 0.887136 NaN 4489.0 \n", "... ... ... ... ... \n", "ENSG00000239306_ENSG00000267940 60413328 0.860745 NaN NaN \n", "ENSG00000239306_ENSG00000254694 59592446 0.722093 NaN NaN \n", "ENSG00000239306_ENSG00000173715 127869 0.934376 NaN 446.0 \n", "ENSG00000239306_ENSG00000166086 67452489 0.909951 NaN 403.0 \n", "ENSG00000239306_ENSG00000239306 0 1.000000 NaN 0.0 \n", "\n", " strand_x gene_order_tss_x gene_order_tes_x \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 - 1828 1827 \n", "ENSG00000174669_ENSG00000183340 + 2591 2593 \n", "ENSG00000174669_ENSG00000182791 - 1847 1847 \n", "ENSG00000174669_ENSG00000132275 - 384 384 \n", "ENSG00000174669_ENSG00000168496 + 1527 1527 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 - 366 366 \n", "ENSG00000239306_ENSG00000254694 - 3224 3225 \n", "ENSG00000239306_ENSG00000173715 + 1856 1858 \n", "ENSG00000239306_ENSG00000166086 + 3337 3339 \n", "ENSG00000239306_ENSG00000239306 + 1850 1850 \n", "\n", " Gene stable ID_x Gene type_x Uniprot_dc_x \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 ENSG00000174669 protein_coding Q14542 \n", "ENSG00000174669_ENSG00000183340 ENSG00000183340 protein_coding Q9Y4A0 \n", "ENSG00000174669_ENSG00000182791 ENSG00000182791 protein_coding Q9NVE4 \n", "ENSG00000174669_ENSG00000132275 ENSG00000132275 protein_coding O43159 \n", "ENSG00000174669_ENSG00000168496 ENSG00000168496 protein_coding P39748 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 ENSG00000267940 NaN NaN \n", "ENSG00000239306_ENSG00000254694 ENSG00000254694 NaN NaN \n", "ENSG00000239306_ENSG00000173715 ENSG00000173715 protein_coding A0A2U3TZP7 \n", "ENSG00000239306_ENSG00000166086 ENSG00000166086 protein_coding Q9BX67 \n", "ENSG00000239306_ENSG00000239306 ENSG00000239306 protein_coding Q96PK6 \n", "\n", " ... strand_y gene_order_tss_y \\\n", "pairs ... \n", "ENSG00000174669_ENSG00000174669 ... - 1828 \n", "ENSG00000174669_ENSG00000183340 ... - 1828 \n", "ENSG00000174669_ENSG00000182791 ... - 1828 \n", "ENSG00000174669_ENSG00000132275 ... - 1828 \n", "ENSG00000174669_ENSG00000168496 ... - 1828 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 ... + 1850 \n", "ENSG00000239306_ENSG00000254694 ... + 1850 \n", "ENSG00000239306_ENSG00000173715 ... + 1850 \n", "ENSG00000239306_ENSG00000166086 ... + 1850 \n", "ENSG00000239306_ENSG00000239306 ... + 1850 \n", "\n", " gene_order_tes_y Gene stable ID_y \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000183340 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000182791 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000132275 1827 ENSG00000174669 \n", "ENSG00000174669_ENSG00000168496 1827 ENSG00000174669 \n", "... ... ... \n", "ENSG00000239306_ENSG00000267940 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000254694 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000173715 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000166086 1850 ENSG00000239306 \n", "ENSG00000239306_ENSG00000239306 1850 ENSG00000239306 \n", "\n", " Gene type_y Uniprot_dc_y dc_y \\\n", "pairs \n", "ENSG00000174669_ENSG00000174669 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000183340 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000182791 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000132275 protein_coding Q14542 0.000000 \n", "ENSG00000174669_ENSG00000168496 protein_coding Q14542 0.000000 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000254694 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000173715 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000166086 protein_coding Q96PK6 0.170404 \n", "ENSG00000239306_ENSG00000239306 protein_coding Q96PK6 0.170404 \n", "\n", " seq_length_y chrom_y exp_mean \n", "pairs \n", "ENSG00000174669_ENSG00000174669 456.0 chr11 1.000000 \n", "ENSG00000174669_ENSG00000183340 456.0 chr11 1.000000 \n", "ENSG00000174669_ENSG00000182791 456.0 chr11 0.998254 \n", "ENSG00000174669_ENSG00000132275 456.0 chr11 0.998254 \n", "ENSG00000174669_ENSG00000168496 456.0 chr11 0.998254 \n", "... ... ... ... \n", "ENSG00000239306_ENSG00000267940 669.0 chr11 0.998254 \n", "ENSG00000239306_ENSG00000254694 669.0 chr11 0.998254 \n", "ENSG00000239306_ENSG00000173715 669.0 chr11 0.998254 \n", "ENSG00000239306_ENSG00000166086 669.0 chr11 0.998254 \n", "ENSG00000239306_ENSG00000239306 669.0 chr11 0.998254 \n", "\n", "[1679616 rows x 23 columns]" ] }, "execution_count": 563, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_2_or" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "for r in itertools.product(unique_genes, unique_genes):" ] }, { "cell_type": "code", "execution_count": 385, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "nan" ] }, "execution_count": 385, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.float('nan') + 3" ] }, { "cell_type": "code", "execution_count": 319, "metadata": {}, "outputs": [], "source": [ "df_2_or = df_2_or[df_2_or['exp_georg'] >= 0] # liming the matrix to only chosen values for rank standerization" ] }, { "cell_type": "code", "execution_count": 321, "metadata": {}, "outputs": [], "source": [ "df_2_or_u = df_2_or[df_2_or['Gene stable ID_x'] != df_2_or['Gene stable ID_y']]" ] }, { "cell_type": "code", "execution_count": 322, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5989310739310739" ] }, "execution_count": 322, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_2_or_u['hi-c-rao'].isnull().astype(int).sum() / df_2_or_u.shape[0]" ] }, { "cell_type": "code", "execution_count": 189, "metadata": {}, "outputs": [], "source": [ "h = df_2_or_uf.groupby(['hi-c-rao']).count()" ] }, { "cell_type": "code", "execution_count": 275, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0, 500)" ] }, "execution_count": 275, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "ax = sns.distplot(df_2_or_u['hi-c-rao'], bins=10000, hist=True, kde=False, hist_kws={\"range\":(1, 10000)})\n", "#ax.set_ylim(0, 500)\n", "ax.set_xlim(0, 500)" ] }, { "cell_type": "code", "execution_count": 262, "metadata": {}, "outputs": [], "source": [ "df_2_or = pd.read_hdf('/data/lohia/gene_distance_expresseion/dist_files/11_dist_with_georg_hic_sub_median_hic_500.h5')" ] }, { "cell_type": "code", "execution_count": 136, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
tss_tssexpexp_georghi-c-raostrand_xgene_order_tss_xgene_order_tes_xGene stable ID_xGene type_xUniprot_dc_x...chrom_xstrand_ygene_order_tss_ygene_order_tes_yGene stable ID_yGene type_yUniprot_dc_ydc_yseq_length_ychrom_y
3428951051604420.9500810.051895119.0-7676ENSG00000177830protein_codingQ9BWS9...chr11+26992701ENSG00000149313protein_codingQ9NRN70.000000309.0chr11
3432971058385350.9809660.774490119.0+1516ENSG00000185627protein_codingA0A087WUL9...chr11+26992701ENSG00000149313protein_codingQ9NRN70.000000309.0chr11
12755281053280860.8560560.106404119.0+26992701ENSG00000149313protein_codingQ9NRN7...chr11+5959ENSG00000177156protein_codingP378370.000000337.0chr11
3433811052329710.8891970.070446119.0-7372ENSG00000177700protein_codingP62875...chr11+26992701ENSG00000149313protein_codingQ9NRN70.000000309.0chr11
3433261058679900.9819780.226579119.0+1214ENSG00000177963protein_codingQ9NPQ8...chr11+26992701ENSG00000149313protein_codingQ9NRN70.000000309.0chr11
..................................................................
35521410665220.9364100.99176747941.0+146147ENSG00000110651protein_codingA6NMH8...chr11-8787ENSG00000078902protein_codingQ9H0E20.000000274.0chr11
46966110901770.9938630.88416453696.0+509511ENSG00000198730protein_codingQ6PD62...chr11+530532ENSG00000170242protein_codingQ96K760.1301821375.0chr11
47015310324820.9946990.93842053696.0-511509ENSG00000110321protein_codingD3DQV9...chr11+530532ENSG00000170242protein_codingQ96K760.1301821375.0chr11
129765810324820.9946990.93842053696.0+530532ENSG00000170242protein_codingQ96K76...chr11-511509ENSG00000110321protein_codingD3DQV90.126792907.0chr11
66002610901770.9938630.88416453696.0+530532ENSG00000170242protein_codingQ96K76...chr11+509511ENSG00000198730protein_codingQ6PD620.2404091173.0chr11
\n", "

59780 rows × 22 columns

\n", "
" ], "text/plain": [ " tss_tss exp exp_georg hi-c-rao strand_x gene_order_tss_x \\\n", "342895 105160442 0.950081 0.051895 119.0 - 76 \n", "343297 105838535 0.980966 0.774490 119.0 + 15 \n", "1275528 105328086 0.856056 0.106404 119.0 + 2699 \n", "343381 105232971 0.889197 0.070446 119.0 - 73 \n", "343326 105867990 0.981978 0.226579 119.0 + 12 \n", "... ... ... ... ... ... ... \n", "355214 1066522 0.936410 0.991767 47941.0 + 146 \n", "469661 1090177 0.993863 0.884164 53696.0 + 509 \n", "470153 1032482 0.994699 0.938420 53696.0 - 511 \n", "1297658 1032482 0.994699 0.938420 53696.0 + 530 \n", "660026 1090177 0.993863 0.884164 53696.0 + 530 \n", "\n", " gene_order_tes_x Gene stable ID_x Gene type_x Uniprot_dc_x ... \\\n", "342895 76 ENSG00000177830 protein_coding Q9BWS9 ... \n", "343297 16 ENSG00000185627 protein_coding A0A087WUL9 ... \n", "1275528 2701 ENSG00000149313 protein_coding Q9NRN7 ... \n", "343381 72 ENSG00000177700 protein_coding P62875 ... \n", "343326 14 ENSG00000177963 protein_coding Q9NPQ8 ... \n", "... ... ... ... ... ... \n", "355214 147 ENSG00000110651 protein_coding A6NMH8 ... \n", "469661 511 ENSG00000198730 protein_coding Q6PD62 ... \n", "470153 509 ENSG00000110321 protein_coding D3DQV9 ... \n", "1297658 532 ENSG00000170242 protein_coding Q96K76 ... \n", "660026 532 ENSG00000170242 protein_coding Q96K76 ... \n", "\n", " chrom_x strand_y gene_order_tss_y gene_order_tes_y \\\n", "342895 chr11 + 2699 2701 \n", "343297 chr11 + 2699 2701 \n", "1275528 chr11 + 59 59 \n", "343381 chr11 + 2699 2701 \n", "343326 chr11 + 2699 2701 \n", "... ... ... ... ... \n", "355214 chr11 - 87 87 \n", "469661 chr11 + 530 532 \n", "470153 chr11 + 530 532 \n", "1297658 chr11 - 511 509 \n", "660026 chr11 + 509 511 \n", "\n", " Gene stable ID_y Gene type_y Uniprot_dc_y dc_y seq_length_y \\\n", "342895 ENSG00000149313 protein_coding Q9NRN7 0.000000 309.0 \n", "343297 ENSG00000149313 protein_coding Q9NRN7 0.000000 309.0 \n", "1275528 ENSG00000177156 protein_coding P37837 0.000000 337.0 \n", "343381 ENSG00000149313 protein_coding Q9NRN7 0.000000 309.0 \n", "343326 ENSG00000149313 protein_coding Q9NRN7 0.000000 309.0 \n", "... ... ... ... ... ... \n", "355214 ENSG00000078902 protein_coding Q9H0E2 0.000000 274.0 \n", "469661 ENSG00000170242 protein_coding Q96K76 0.130182 1375.0 \n", "470153 ENSG00000170242 protein_coding Q96K76 0.130182 1375.0 \n", "1297658 ENSG00000110321 protein_coding D3DQV9 0.126792 907.0 \n", "660026 ENSG00000198730 protein_coding Q6PD62 0.240409 1173.0 \n", "\n", " chrom_y \n", "342895 chr11 \n", "343297 chr11 \n", "1275528 chr11 \n", "343381 chr11 \n", "343326 chr11 \n", "... ... \n", "355214 chr11 \n", "469661 chr11 \n", "470153 chr11 \n", "1297658 chr11 \n", "660026 chr11 \n", "\n", "[59780 rows x 22 columns]" ] }, "execution_count": 136, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_2_or_u" ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [], "source": [ "df_2_or_u = df_2_or_u.sort_values(by=['hi-c-rao'], ascending=True) " ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "342895\n", "343297\n" ] } ], "source": [ "for i in df_2_or_u.index.values[0:2]:\n", " print (i)\n", " long_form_top.at[i]=-1" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/lohia/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py:2446: PerformanceWarning: \n", "your performance may suffer as PyTables will pickle object types that it cannot\n", "map directly to c-types [inferred_type->mixed,key->block2_values] [items->Index(['chrm', 'plot', 'pr_curve', 'Gene stable ID'], dtype='object')]\n", "\n", " encoding=encoding,\n" ] } ], "source": [ "# import numpy as np\n", "import pandas as pd\n", "import warnings\n", "from lohia_utilities.calculate_auc import *\n", "from pandas.core.common import SettingWithCopyWarning\n", "warnings.simplefilter(action=\"ignore\", category=SettingWithCopyWarning)\n", "from lohia_utilities.create_corr_network import rank\n", "\n", "df_2_or = pd.read_hdf('/data/lohia/gene_distance_expresseion/dist_files/combined_dist_with_georg_hic_sub_median_hic_250.h5')\n", "\n", "#df_2_or = df_2_or[df_2_or['exp_georg'] >= 0] # liming the matrix to only chosen values for rank standerization\n", "df_2_or = df_2_or[df_2_or['hi-c-rao'] >= 0] # liming the matrix to only chosen values for rank standerization\n", "df_2_or_u = df_2_or[df_2_or['Gene stable ID_x'] != df_2_or['Gene stable ID_y']]\n", "#ranked_matirx = rank(df_2_or['exp_georg'])\n", "#df_2_or['exp_georg'] = ranked_matirx\n", "#df_2_or.rename(columns={\"exp_georg\": \"exp (GK)\"}, inplace=True)\n", "\n", "ranked_matirx = rank(df_2_or['exp'])\n", "df_2_or['exp'] = ranked_matirx\n", "\n", "#ranked_matirx = rank(df_2_or['hi-c-rao'])\n", "#df_2_or['hi-c-rao'] = ranked_matirx\n", "m_l = []\n", "change_group_level_1 = df_2_or.groupby(['chrom_x'])\n", "for chrm in change_group_level_1.groups.keys():\n", " df = change_group_level_1.get_group(chrm)\n", " num_pairs = df['Gene stable ID_x'].nunique()\n", "\n", " prot_list_sp = np.array_split(df, num_pairs, axis=0)\n", " for i in range(0,num_pairs):\n", "\n", " long_form_top = prot_list_sp[int(i)]\n", " long_form_top['dist'] = long_form_top['hi-c-rao']\n", " long_form_top = long_form_top[long_form_top['tss_tss'] >= 10000000] # liming the matrix to only chosen values for rank standerization\n", "\n", " long_form_top = long_form_top[long_form_top['Gene stable ID_x'] != long_form_top['Gene stable ID_y']] # remove all the self pairs from each set\n", " long_form_top['hi-c-rao'].fillna(-1, inplace=True)\n", " mp = long_form_top['Gene stable ID_y'].values[0]\n", " #print (long_form_top.shape)\n", " \n", " exp_median = long_form_top['exp'].median()\n", " exp_mean = long_form_top['exp'].mean()\n", " exp_var = long_form_top['exp'].var()\n", "\n", " long_form_top = long_form_top.reset_index()\n", " if long_form_top['exp'].values[0] >=0:\n", " \n", " \n", "\n", " for dist_thresh in [1,5,10,100,int(num_pairs/2)]:\n", " #for dist_thresh in [100000,1000000,10000000,100000000]:\n", " #for dist_thresh in [4000]:\n", " #for dist_thresh in [df_2_or_u[\"hi-c-rao\"].min(), df_2_or[\"hi-c-rao\"].max()-1, df_2_or[\"hi-c-rao\"].mean(), df_2_or[\"hi-c-rao\"].median()]:\n", " #long_form_top[\"True_sim\"] = [1 if score > dist_thresh else 0 for score in long_form_top[\"dist\"]] \n", " \n", " #long_form_top = long_form_top.sort_values(by=['dist'], ascending=False) \n", " #long_form_top[\"True_sim\"] = [0 if score > dist_thresh else 0 for score in long_form_top[\"dist\"]] \n", " #for ind_val in long_form_top.index.values[0:dist_thresh]:\n", " # long_form_top.at[ind_val, 'True_sim'] = 1\n", " \n", " long_form_top = long_form_top.sort_values(by=['dist'], ascending=True) \n", " long_form_top[\"True_sim\"] = [1 if score > dist_thresh else 1 for score in long_form_top[\"dist\"]] \n", " for ind_val in long_form_top.index.values[0:dist_thresh]:\n", " long_form_top.at[ind_val, 'True_sim'] = 0\n", " #\n", " #long_form_top[\"True_sim\"] = [1 if score <= dist_thresh else 0 for score in long_form_top[\"dist\"]] \n", " #long_form_top[\"True_sim\"] = [1 if score >= dist_thresh else 1 if score2 <= 1000 else 0 for score, score2 in zip(long_form_top[\"dist\"],long_form_top[\"tss_tss\"])] \n", " long_form_top[\"true_pos\"] = [score for score in long_form_top[\"True_sim\"]]\n", " long_form_top[\"true_neg\"] = [1 if score==0 else 0 for score in long_form_top[\"True_sim\"]]\n", " long_form_top[\"predicted_sim_from_exp\"] = [score for score in long_form_top[\"exp\"]]\n", " ca = calc_auroc (long_form_top,predicted_score='predicted_sim_from_exp')\n", " m_curve = calc_auc_curve (long_form_top,predicted_score='predicted_sim_from_exp')\n", " pr_curve = prec_recall (long_form_top,predicted_score='predicted_sim_from_exp')\n", "\n", " tpd = pd.DataFrame(m_curve)\n", " if m_curve:\n", " tpd[0] = tpd[0].astype(float).round(2)\n", " tpd = tpd.groupby([0]).mean()\n", " m_curve = dict(zip(tpd.index, tpd[1]))\n", " else:\n", " m_curve = {}\n", " tpd = pd.DataFrame(pr_curve)\n", " if pr_curve:\n", " tpd[0] = tpd[0].astype(float).round(2)\n", " tpd = tpd.groupby([0]).mean()\n", " pr_curve = dict(zip(tpd.index, tpd[1]))\n", " else:\n", " pr_curve = {}\n", " m_l.append((chrm, num_pairs,dist_thresh, ca, m_curve, pr_curve, long_form_top[\"true_pos\"].sum(), long_form_top[\"true_neg\"].sum(), exp_median, exp_mean, exp_var, mp))\n", " else:\n", " pass\n", "\n", "df_scores = pd.DataFrame(m_l, columns =['chrm', 'num_pairs','dist_thresh', 'auc', 'plot', 'pr_curve', 'true_pos', 'true_neg', 'exp_median', 'exp_mean', 'exp_var', 'Gene stable ID'])\n", "df_scores.to_hdf('/data/lohia/gene_distance_expresseion/dist_files/combined_250kb_tn.h5', key='df', mode='w') " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "df_scores = pd.read_hdf('/data/lohia/gene_distance_expresseion/dist_files/combined_250kb_tn.h5')" ] }, { "cell_type": "code", "execution_count": 493, "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", "
chrmnum_pairsdist_threshaucplotpr_curvetrue_postrue_negexp_medianexp_meanexp_varGene stable ID
0chr1110044000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}06500.5925830.5473750.063044ENSG00000174669
1chr1110044000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}09320.7320260.6565740.070272ENSG00000183340
2chr1110044000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}06470.3923910.3796310.036577ENSG00000182791
3chr1110044000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}08280.8226970.7283520.067169ENSG00000132275
4chr11100440000.561063{0.0: 0.0, 0.01: 0.0, 0.02: 0.0104166666666666...{0.0: 0.0, 0.08: 0.021899579772188874, 0.17: 0...126960.6502240.6089710.084299ENSG00000168496
.......................................
999chr1110044000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}08960.7101740.6172680.067416ENSG00000151702
1000chr11100440000.820235{0.0: 0.0, 0.01: 0.0, 0.02: 0.0, 0.03: 0.0, 0....{0.0: 0.0, 0.33: 0.011573465587966434, 0.67: 0...37380.5805030.5228500.076284ENSG00000156587
1001chr1110044000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}06460.6534050.6058700.066594ENSG00000173715
1002chr11100440000.427163{0.0: 0.0, 0.01: 0.0, 0.02: 0.0, 0.03: 0.01739...{0.0: 0.0, 0.04: 0.03137291143578475, 0.09: 0....239130.6574610.5920150.051981ENSG00000166086
1003chr1110044000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}06470.7286890.6495450.071352ENSG00000239306
\n", "

1004 rows × 12 columns

\n", "
" ], "text/plain": [ " chrm num_pairs dist_thresh auc \\\n", "0 chr11 1004 4000 NaN \n", "1 chr11 1004 4000 NaN \n", "2 chr11 1004 4000 NaN \n", "3 chr11 1004 4000 NaN \n", "4 chr11 1004 4000 0.561063 \n", "... ... ... ... ... \n", "999 chr11 1004 4000 NaN \n", "1000 chr11 1004 4000 0.820235 \n", "1001 chr11 1004 4000 NaN \n", "1002 chr11 1004 4000 0.427163 \n", "1003 chr11 1004 4000 NaN \n", "\n", " plot \\\n", "0 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... \n", "1 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... \n", "2 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... \n", "3 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... \n", "4 {0.0: 0.0, 0.01: 0.0, 0.02: 0.0104166666666666... \n", "... ... \n", "999 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... \n", "1000 {0.0: 0.0, 0.01: 0.0, 0.02: 0.0, 0.03: 0.0, 0.... \n", "1001 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... \n", "1002 {0.0: 0.0, 0.01: 0.0, 0.02: 0.0, 0.03: 0.01739... \n", "1003 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... \n", "\n", " pr_curve true_pos true_neg \\\n", "0 {} 0 650 \n", "1 {} 0 932 \n", "2 {} 0 647 \n", "3 {} 0 828 \n", "4 {0.0: 0.0, 0.08: 0.021899579772188874, 0.17: 0... 12 696 \n", "... ... ... ... \n", "999 {} 0 896 \n", "1000 {0.0: 0.0, 0.33: 0.011573465587966434, 0.67: 0... 3 738 \n", "1001 {} 0 646 \n", "1002 {0.0: 0.0, 0.04: 0.03137291143578475, 0.09: 0.... 23 913 \n", "1003 {} 0 647 \n", "\n", " exp_median exp_mean exp_var Gene stable ID \n", "0 0.592583 0.547375 0.063044 ENSG00000174669 \n", "1 0.732026 0.656574 0.070272 ENSG00000183340 \n", "2 0.392391 0.379631 0.036577 ENSG00000182791 \n", "3 0.822697 0.728352 0.067169 ENSG00000132275 \n", "4 0.650224 0.608971 0.084299 ENSG00000168496 \n", "... ... ... ... ... \n", "999 0.710174 0.617268 0.067416 ENSG00000151702 \n", "1000 0.580503 0.522850 0.076284 ENSG00000156587 \n", "1001 0.653405 0.605870 0.066594 ENSG00000173715 \n", "1002 0.657461 0.592015 0.051981 ENSG00000166086 \n", "1003 0.728689 0.649545 0.071352 ENSG00000239306 \n", "\n", "[1004 rows x 12 columns]" ] }, "execution_count": 493, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_scores" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "df_scores = df_scores[df_scores['dist_thresh'] <= 100]\n", "df_scores = df_scores[df_scores['dist_thresh'] != 89]\n", "df_scores = df_scores.rename(columns={\"dist_thresh\": \"#of TN\"})" ] }, { "cell_type": "code", "execution_count": 595, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "803" ] }, "execution_count": 595, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_scores[df_scores['dist_thresh'] == 4000]['auc'].isnull().astype(int).sum()" ] }, { "cell_type": "code", "execution_count": 220, "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", "
chrmnum_pairsdist_threshaucplotpr_curvetrue_postrue_negexp_medianexp_meanexp_varGene stable ID
4chr167732000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}04950.3450030.3226510.030117ENSG00000245694
9chr167732000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}04960.6192990.5850250.087750ENSG00000245694
14chr167732000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}04370.4860550.4770940.069154ENSG00000198931
19chr167732000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}04200.5543520.5567620.077769ENSG00000243716
24chr167732000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}04280.8288320.7260010.064853ENSG00000168434
.......................................
3844chr167732000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}04280.4252410.4051200.049482ENSG00000260807
3849chr167732000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}04320.4901190.4542700.064232ENSG00000169627
3854chr167732000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}04420.4749220.4651650.052825ENSG00000248124
3859chr167732000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}04940.3609490.3684680.032043ENSG00000102935
3864chr167732000NaN{0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0....{}04950.5724790.5510790.061528ENSG00000177200
\n", "

773 rows × 12 columns

\n", "
" ], "text/plain": [ " chrm num_pairs dist_thresh auc \\\n", "4 chr16 773 2000 NaN \n", "9 chr16 773 2000 NaN \n", "14 chr16 773 2000 NaN \n", "19 chr16 773 2000 NaN \n", "24 chr16 773 2000 NaN \n", "... ... ... ... ... \n", "3844 chr16 773 2000 NaN \n", "3849 chr16 773 2000 NaN \n", "3854 chr16 773 2000 NaN \n", "3859 chr16 773 2000 NaN \n", "3864 chr16 773 2000 NaN \n", "\n", " plot pr_curve true_pos \\\n", "4 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... {} 0 \n", "9 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... {} 0 \n", "14 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... {} 0 \n", "19 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... {} 0 \n", "24 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... {} 0 \n", "... ... ... ... \n", "3844 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... {} 0 \n", "3849 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... {} 0 \n", "3854 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... {} 0 \n", "3859 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... {} 0 \n", "3864 {0.0: nan, 0.01: nan, 0.02: nan, 0.03: nan, 0.... {} 0 \n", "\n", " true_neg exp_median exp_mean exp_var Gene stable ID \n", "4 495 0.345003 0.322651 0.030117 ENSG00000245694 \n", "9 496 0.619299 0.585025 0.087750 ENSG00000245694 \n", "14 437 0.486055 0.477094 0.069154 ENSG00000198931 \n", "19 420 0.554352 0.556762 0.077769 ENSG00000243716 \n", "24 428 0.828832 0.726001 0.064853 ENSG00000168434 \n", "... ... ... ... ... ... \n", "3844 428 0.425241 0.405120 0.049482 ENSG00000260807 \n", "3849 432 0.490119 0.454270 0.064232 ENSG00000169627 \n", "3854 442 0.474922 0.465165 0.052825 ENSG00000248124 \n", "3859 494 0.360949 0.368468 0.032043 ENSG00000102935 \n", "3864 495 0.572479 0.551079 0.061528 ENSG00000177200 \n", "\n", "[773 rows x 12 columns]" ] }, "execution_count": 220, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_scores[df_scores['dist_thresh'] == 2000]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "fig, axes = plt.subplots(figsize=(20,10))\n", "#grouped = df_scores.groupby(['threshold'])\n", "\n", "#bp = grouped.boxplot(subplots=False, sym='k+', figsize=(8,10))\n", "#bp = df_scores.boxplot(column=['auc'], by=['chrm', 'dist_thresh'], ax=axes,rot=40, fontsize=8,layout=(2, 1))\n", "sns.boxplot(y='auc', x='chrm', \n", " data=df_scores, \n", " palette=\"colorblind\"\n", " ,hue='#of TN'\n", " )\n", "#bp = axes.boxplot([[x if x>=0 else -1 for x in top_500_score_auroc_0_9], [x if x>=0 else -1 for x in top_500_score_auroc_0_7], [x if x>=0 else -1 for x in top_500_score_auroc_0_5], [x if x>=0 else -1 for x in top_500_score_auroc_0_4]] , sym='k+')\n", "#axes.set_title('Predicting structure similarity from expression')\n", "axes.yaxis.grid(True)\n", "#axes.set_xlabel('Co-expression')\n", "axes.set_ylabel('AUC')\n", "axes.set_ylim([0.0,1.101])\n", "#plt.setp(bp['fliers'], markersize=3.0)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 358, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABI8AAAJNCAYAAAC4BVWHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdf5ReZWEv+u+TZDT8CCkwSW4gg2ClY12RAsaKnkVOLAYh9CQL9FhRCygzVFuq65zbWaa110u9p2uFjne1xctVmaSCxR+3AhJaQiulpCoiECVQf3QKKDqBGBJC+B0Nyb5/BNIkZofMZN7smTefz1os5tnvM/v9ZtaeMPPlefYuVVUFAAAAAPZkQtMBAAAAABi7lEcAAAAA1FIeAQAAAFBLeQQAAABALeURAAAAALWURwAAAADUmtR0gOHq7Oysjj/++KZjAAAAALSN73znOxuqqpq2p9fGXXl0/PHHZ9WqVU3HAAAAAGgbpZSf1L1m2xoAAAAAtZRHAAAAANRSHgEAAABQa9zd8wgAAABgf23ZsiVr1qzJ5s2bm45yQE2ePDmzZs1KR0fHPn+O8ggAAAA46KxZsyZTpkzJ8ccfn1JK03EOiKqq8vjjj2fNmjU54YQT9vnzbFsDAAAADjqbN2/O0UcffdAUR0lSSsnRRx897NVWyiMAAADgoHQwFUcvGcmfWXkEAAAAQC3lEQAAAMBuLrvssnzyk5/Mxz/+8fzzP/9z7bwbb7wxP/jBD/Z6rquvvjqPPvrojvHxxx+fDRs2jFrWlxx++OGjfs5EeQQAAABQ6xOf+ETe9ra31b4+kvJoX7zwwgvDmt9KyiMAAACAJH/+53+e7u7uvO1tb8vg4GCS5KKLLsp1112XJFm8eHFe97rX5aSTTsof/dEf5Vvf+lZuuumm9PX15eSTT85DDz30S+e87rrrsmrVqrz3ve/NySefnOeffz5J8qlPfSqnnnpqXv/61+ff//3fk2xf7XTJJZfkzDPPzAUXXJCtW7emr68vb3zjG3PSSSfls5/9bJJk7dq1mTt3bk4++eTMnj073/jGN3a838c+9rH8xm/8Rk477bSsW7duVL4uyiMAAADgoPed73wnX/7yl3PvvffmhhtuyD333LPL6xs3bsxXv/rVfP/738/999+fP/3TP81b3vKWLFy4MP39/Vm9enV+9Vd/9ZfO+853vjNz5szJF77whaxevTqHHHJIkqSzszPf/e5386EPfSif/OQnd8mxfPnyfPGLX8yyZcsyderU3HPPPbnnnnsyMDCQH//4x/niF7+Yt7/97Vm9enXuu+++nHzyyUmSZ599Nqeddlruu+++zJ07NwMDA6PytVEeAQAAAAe9b3zjGzn33HNz6KGH5ogjjsjChQt3ef2II47I5MmT09PTkxtuuCGHHnrofr3feeedlyR5wxvekIcffnjH8YULF+4omL72ta/l85//fE4++eS86U1vyuOPP54HHnggb3zjG/O5z30ul112Wf7t3/4tU6ZMSZK84hWvyG//9m/v8bz7Q3kEAAAAkL0/xn7SpEm5++678453vCM33nhjzjrrrP16r1e+8pVJkokTJ+5yf6PDDjtsx8dVVeVTn/pUVq9endWrV+fHP/5xzjzzzMydOzdf//rXc+yxx+Z3f/d38/nPfz5J0tHRsePPsPt594fyCAAAADjozZ07N1/96lfz/PPP5+mnn87f//3f7/L6M888kyeffDILFizIX/3VX2X16tVJkilTpuTpp5/e67n3Zc6evP3tb8+nP/3pbNmyJUnyH//xH3n22Wfzk5/8JNOnT09vb28uvvjifPe73x32uYdjUkvPDgAAADAOnHrqqfmd3/mdnHzyyXnVq16V008/fZfXn3766SxatCibN29OVVX5y7/8yyTJu9/97vT29uaKK67Iddddt8f7Hl100UX54Ac/mEMOOSR33nnnPmfq6enJww8/nFNPPTVVVWXatGm58cYbs3LlyvT396ejoyOHH374jpVHrVKqqmrpG4y2OXPmVKtWrWo6BgAAADCO/fCHP8yv//qvNx2jEXv6s5dSvlNV1Zw9zbdtDQAAAIBatq0BAAAAjII/+IM/yB133LHLsY985CN5//vf31Ci0aE8AgAAABgFV155ZdMRWsK2NQAAAABqKY8AAAAAqKU8AgAAAKCW8ggAAABgDPjABz6Q6dOnZ/bs2U1H2YUbZgMAAADs5qLf+4OsXf/4qJ1v5rSjc/Vn935D7YsuuiiXXnppLrjgglF739GgPAIAAADYzdr1j+e+WfNH74Rrbn3ZKXPnzs3DDz88eu85SmxbAwAAAKCW8ggAAACAWsojAAAAAGopjwAAAACopTwCAAAAGAPOP//8vPnNb87g4GBmzZqVZcuWNR0piaetAQAAAPySmdOO3qcnpA3rfC/jS1/60qi932hSHgEAAADs5urPXtl0hDHDtjUAAAAAaimPAAAAAKilPAIAAACglvIIAAAAgFrKIwAAAABqedoaAAAAwBhx/PHHZ8qUKZk4cWImTZqUVatWNR1JeQQAAACwuw9/6P3ZuGHtqJ3vqM6ZueLTn9unubfffns6OztH7b33l/IIAAAAYDcbN6zNB+cMjtr5PtP8AqIRc88jAAAAgDGilJIzzzwzb3jDG3LVVVc1HSeJlUcAAAAAY8Ydd9yRY445Jo899ljmz5+f1772tZk7d26jmaw8AgAAABgjjjnmmCTJ9OnTc+655+buu+9uOFELy6NSyt+UUh4rpXyv5vVSSrmilPJgKeX+UsqprcoCAAAAMNY9++yzefrpp3d8/LWvfS2zZ89uOFVrt61dneT/SfL5mtfPTnLii/+8KcmnX/w3AAAAwEFn3bp1Offcc5MkL7zwQt7znvfkrLPOajhVC8ujqqq+Xko5fi9TFiX5fFVVVZJvl1J+pZQys6qq0XsOHgAAAMAIHNU5c1SfkHZU58yXnfPqV78699133+i96Shp8obZxyYZ2mm85sVjyiPGjP7+/gwOjt6jGVttaGj7t1RXV1fDSfZdd3d3+vr6mo4BAACwiys+/bmmI4wZTZZHZQ/Hqj1OLOWSJJckyYwZM7Jy5coWxoL/tGbNmmzatKnpGPvsqaeeSpJxlXnNmjW+pwEAgANu6tSpO+4vdLDZvHnzsH4Pa7I8WpNk5+URs5I8uqeJVVVdleSqJJkzZ041b968loeDJBlv11pPT0+SZOnSpQ0nAQAAGNt++MMfZsqUKU3HaMTkyZNzyimn7PP8lj1tbR/clOSCF5+6dlqSJ93vCAAAAGBsadnKo1LKl5LMS9JZSlmT5P9M0pEkVVV9JsmKJAuSPJjkuSTvb1UWAAAAAEamlU9bO/9lXq+S/EGr3h8AAACA/dfktjUAAAAAXvSBD3wg06dPz+zZs3cc27hxY+bPn58TTzwx8+fPzxNPPHHAczV5w2wAAACAMemiD12StRvWj9r5ZnZOy9Wfvmrv73nRRbn00ktzwQUX7Di2ZMmSnHHGGVm8eHGWLFmSJUuW5PLLLx+1XPtCeQQAAACwm7Ub1ufeNx0zeie8a48PmN/F3Llz8/DDD+9ybPny5Vm5cmWS5MILL8y8efMOeHlk2xoAAADAGLVu3brMnDkzSTJz5sw89thjBzyD8ggAAACAWsojAAAAgDFqxowZWbt2bZJk7dq1mT59+gHPoDwCAAAAGKMWLlyYa665JklyzTXXZNGiRQc8g/IIAAAAYAw4//zz8+Y3vzmDg4OZNWtWli1blsWLF+fWW2/NiSeemFtvvTWLFy8+4Lk8bQ0AAABgNzM7p+3TE9KGdb6X8aUvfWmPx2+77bZRyzESyiMAAACA3Vz96auajjBmKI8ADgL9/f0ZHBxsOsY+GxoaSpJ0dXU1nGTfdHd3p6+vr+kYAADQEsojAMac5557rukIAADAi5RHAAeB8bYqpqenJ0mydOnShpMAAACetgYAAABALeURAAAAALWURwAAAABjwAc+8IFMnz49s2fP3nFs48aNmT9/fk488cTMnz8/TzzxRJKkqqp8+MMfzmte85qcdNJJ+e53v9uyXO55BAAAALCbP7zkomx8bO2one+o6TPzqauu3uuciy66KJdeemkuuOCCHceWLFmSM844I4sXL86SJUuyZMmSXH755bnlllvywAMP5IEHHshdd92VD33oQ7nrrrtGLe/OlEccUOPtceHjzUtf25duNszo8jh2AAA4eGx8bG0uOur7o3a+qx97+Tlz587Nww8/vMux5cuXZ+XKlUmSCy+8MPPmzcvll1+e5cuX54ILLkgpJaeddlo2bdqUtWvXZubMmaOW+SXKIw6owcHB3LP637Ll8M6mo7Slib+okiTfenD02nG263hmQ9MRAACAg9C6det2FEIzZ87MY49tb6EeeeSRdHV17Zg3a9asPPLII8oj2sOWwzuz8aTzmo4Bw3LU/Tc0HQEAAGCHqqp+6VgppSXv5YbZAAAAAGPUjBkzsnbt9t0la9euzfTp05NsX2k0NDS0Y96aNWtyzDHHtCSD8ggAAABgjFq4cGGuueaaJMk111yTRYsW7Tj++c9/PlVV5dvf/namTp3aki1riW1rAAAAAGPC+eefn5UrV2bDhg2ZNWtW/uzP/iyLFy/Ou971rixbtizHHXdcvvKVryRJFixYkBUrVuQ1r3lNDj300Hzuc59rWS7lEQAAAMBujpo+c5+ekDac872cL33pS3s8ftttt/3SsVJKrrzyyv3OtS+URwAAAAC7+dRVVzcdYcxwzyMAAAAAaimPAAAAAKilPAIAAACglvIIAAAAgFrKIwAAAABqKY8AAAAAxojjjz8+r3/963PyySdnzpw5SZKNGzdm/vz5OfHEEzN//vw88cQTSZIvfOELOemkk3LSSSflLW95S+67776WZJrUkrMCAAAAjGMf/uAfZuOGjaN2vqM6j8oVn/nUPs29/fbb09nZuWO8ZMmSnHHGGVm8eHGWLFmSJUuW5PLLL88JJ5yQf/3Xf82RRx6ZW265JZdccknuuuuuUcv8EuURAAAAwG42btiY3/uN947a+T573xdG/LnLly/PypUrkyQXXnhh5s2bl8svvzxvectbdsw57bTTsmbNmv2NuUfKIwBgXOjv78/g4GDTMfbZ0NBQkqSrq6vhJPuuu7s7fX19TccAgINaKSVnnnlmSin5vd/7vVxyySVZt25dZs6cmSSZOXNmHnvssV/6vGXLluXss89uSSblEQBACzz33HNNRwAAxqE77rgjxxxzTB577LHMnz8/r33ta1/2c26//fYsW7Ys3/zmN1uSSXkEAIwL421FTE9PT5Jk6dKlDScBAMaTY445Jkkyffr0nHvuubn77rszY8aMrF27NjNnzszatWszffr0HfPvv//+9PT05JZbbsnRRx/dkkyetgYAAAAwBjz77LN5+umnd3z8ta99LbNnz87ChQtzzTXXJEmuueaaLFq0KEny05/+NOedd17+9m//Nr/2a7/WslxWHgEAAACMAevWrcu5556bJHnhhRfynve8J2eddVbe+MY35l3veleWLVuW4447Ll/5yleSJJ/4xCfy+OOP5/d///eTJJMmTcqqVatGPZfyCAAAAGA3R3UetV9PSNvT+V7Oq1/96tx3332/dPzoo4/Obbfd9kvHly5dekC2yCuPAAAAAHZzxWc+1XSEMcM9jwAAAACopTwCAAAAoJbyCAAAADgoVVXVdIQDbiR/ZuURAAAAcNCZPHlyHn/88YOqQKqqKo8//ngmT548rM9zw2wAAADgoDNr1qysWbMm69evbzrKATV58uTMmjVrWJ+jPAIAAAAOOh0dHTnhhBOajjEu2LYGAAAAQC3lEQAAAAC1lEcAAAAA1FIeAQAAAFBLeQQAAABALeURAAAAALWURwAAAADUmtR0AA4uQ0ND6XhmU466/4amo8CwdDyzIUNDLzQdAwAA4ICz8ggAAACAWlYecUB1dXVl6OeTsvGk85qO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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "fig, axes = plt.subplots(figsize=(20,10))\n", "#grouped = df_scores.groupby(['threshold'])\n", "\n", "#bp = grouped.boxplot(subplots=False, sym='k+', figsize=(8,10))\n", "#bp = df_scores.boxplot(column=['auc'], by=['chrm', 'dist_thresh'], ax=axes,rot=40, fontsize=8,layout=(2, 1))\n", "sns.boxplot(y='auc', x='chrm', \n", " data=df_scores, \n", " palette=\"colorblind\"\n", " ,hue='dist_thresh'\n", " )\n", "#bp = axes.boxplot([[x if x>=0 else -1 for x in top_500_score_auroc_0_9], [x if x>=0 else -1 for x in top_500_score_auroc_0_7], [x if x>=0 else -1 for x in top_500_score_auroc_0_5], [x if x>=0 else -1 for x in top_500_score_auroc_0_4]] , sym='k+')\n", "#axes.set_title('Predicting structure similarity from expression')\n", "axes.yaxis.grid(True)\n", "#axes.set_xlabel('Co-expression')\n", "axes.set_ylabel('AUC')\n", "axes.set_ylim([0.0,1.101])\n", "#plt.setp(bp['fliers'], markersize=3.0)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 602, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "fig, axes = plt.subplots(figsize=(20,10))\n", "#grouped = df_scores.groupby(['threshold'])\n", "\n", "#bp = grouped.boxplot(subplots=False, sym='k+', figsize=(8,10))\n", "#bp = df_scores.boxplot(column=['auc'], by=['chrm', 'dist_thresh'], ax=axes,rot=40, fontsize=8,layout=(2, 1))\n", "sns.boxplot(y='auc', x='chrm', \n", " data=df_scores, \n", " palette=\"colorblind\"\n", " ,hue='dist_thresh'\n", " )\n", "#bp = axes.boxplot([[x if x>=0 else -1 for x in top_500_score_auroc_0_9], [x if x>=0 else -1 for x in top_500_score_auroc_0_7], [x if x>=0 else -1 for x in top_500_score_auroc_0_5], [x if x>=0 else -1 for x in top_500_score_auroc_0_4]] , sym='k+')\n", "#axes.set_title('Predicting structure similarity from expression')\n", "axes.yaxis.grid(True)\n", "#axes.set_xlabel('Co-expression')\n", "axes.set_ylabel('AUC')\n", "axes.set_ylim([0.0,1.101])\n", "#plt.setp(bp['fliers'], markersize=3.0)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 414, "metadata": {}, "outputs": [ { "data": { "image/png": "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AACAmpRHAAAAANSkPAIAAACgJuURAAAAADUpjwAAAAAaxLRp0/K6170up5xySmbMmJEk2bJlS+bMmZMTTzwxc+bMycMPP5wk+fKXv5yTTz45J598ck477bTcdddddck0pi5nBQAAABjGFnzor7Jl05YhO98xTcdkyec/c0BzV69enaampj3jRYsWZfbs2Vm4cGEWLVqURYsW5YorrsgrXvGK/Md//EeOPvro3Hzzzbn00ktz6623Dlnm3ZRHAAAAAPvYsmlL/vz17xuy833hri8/7+9dsWJF1qxZkyS5+OKLM2vWrFxxxRU57bTT9sw59dRTs379+hcac1DKIwBoYIsXL05PT0/VMQbo7e1NkrS0tFSc5A9aW1vT2dlZdQwAgBesKIqcddZZKYoif/7nf55LL700GzZsSHNzc5Kkubk5GzdufNb3LVu2LOecc05dMimPAICD8sQTT1QdAQDgsPWDH/wgU6ZMycaNGzNnzpy85jWvec7vWb16dZYtW5b//M//rEsm5REANLBGXE3T3t6eJFm6dGnFSQAADj9TpkxJkkyaNCnnnXdefvKTn2Ty5Mnp6+tLc3Nz+vr6MmnSpD3z77777rS3t+fmm2/OscceW5dMnrYGAAAA0AAef/zxPProo3u+/va3v52TTjopc+fOzfLly5Mky5cvz7x585Ikv/vd73L++efnX//1X/PqV7+6brmsPAIAAABoABs2bMh5552XJNm+fXve+9735uyzz86b3vSmvPvd786yZcty/PHH5+tf/3qS5PLLL8/mzZvzF3/xF0mSMWPG5Pbbbx/yXMojAAAAgH0c03TMC3pC2mDney6vfOUrc9dddz3r+LHHHptVq1Y96/jSpUsPyVYCyiMAAACAfSz5/GeqjtAw7HkEAAAAQE3KIwAAAABqUh4BAAAAUJPyCAAAAICalEcAAAAA1ORpaxxSvb29GfvY1hxz9/VVR2EYG/vYpvT2bq86BgAAwJDq6enJBRdcsGd877335vLLL89FF12UCy64IPfdd1+mTZuWr33tazn66KNTlmUuu+yydHd3Z/z48bn66qszffr0Ic+lPAIAAADYx1/9xZ/n4U39Q3a+o5sm5jOf/cJ+57S2tmbt2rVJkh07duS4447Leeedl0WLFmX27NlZuHBhFi1alEWLFuWKK67IzTffnHXr1mXdunW59dZb8+EPfzi33nrrkGXeTXnEIdXS0pLe/x6TLSefX3UUhrFj7r4+LS3NVccAAAAOYw9v6s8HT28ZsvP9y/d7D2r+qlWr8qpXvSovf/nLs2LFiqxZsyZJcvHFF2fWrFm54oorsmLFilx00UUpiiKnnnpqtm7dmr6+vjQ3D+3PS/Y8AgAAAGgwX/3qV3PhhRcmSTZs2LCnEGpubs7GjRuTJA888EBaWv5QcE2dOjUPPPDAkGdRHgEAAAA0kKeffjo33nhj3vWud+13XlmWzzpWFMWQ51EeAQAAADSQm2++OdOnT8/kyZOTJJMnT05fX1+SpK+vL5MmTUqya6VRb+8fbodbv359pkyZMuR5lEcAAAAADeTaa6/dc8taksydOzfLly9Pkixfvjzz5s3bc/yaa65JWZb58Y9/nAkTJgz5fkeJDbMBAAAAGsYTTzyRW265JV/4wh+ezLZw4cK8+93vzrJly3L88cfn61//epKkra0t3d3dOeGEEzJ+/Ph88YtfrEsm5REAAADAPo5umnjQT0h7rvMdiPHjx2fz5s0Djh177LFZtWrVs+YWRZErr7xySPLtj/IIAAAAYB+f+ewXnnvSCGHPIwAAAABqUh4BAAAAUJPyCAAAABiRyrKsOsIh93x+zcojAAAAYMQZN25cNm/ePKIKpLIss3nz5owbN+6gvs+G2QAAAMCIM3Xq1Kxfvz79/f1VRzmkxo0bl6lTpx7U9yiPAAAAgBFn7NixecUrXlF1jGHBbWsAAAAA1KQ8AgAAAKAm5REAAAAANSmPAAAAAKhJeQQAAABATcojAAAAAGpSHgEAAABQk/IIAAAAgJqURwAAAADUpDwCAAAAoCblEQAAAAA1KY8AAAAAqEl5BAAAAEBNyiMAAAAAalIeAQAAAFDTmKoDALwQixcvTk9PT9UxGtruz6e9vb3iJI2ttbU1nZ2dVccAAICGozwChrWenp784u7bc9xLd1QdpWGN3rFrkekjv7u14iSN64Gto6uOAAAADUt5BAx7x710Ry6b/VjVMRjGPr3qyKojAABAw7LnEQAAAAA1KY8AAAAAqEl5BAAAAEBNyiMAAAAAalIeAQAAAFCT8ggAAACAmpRHAAAAANSkPAIAAACgJuURAAAAADUpjwAAAACoSXkEAAAAQE11LY+Koji7KIqeoijuKYpi4SCvH18UxeqiKO4siuLuoija6pkHAAAADkZ/f3/mz5+fTZs2VR0FKlO38qgoitFJrkxyTpLXJrmwKIrX7jPtb5N8rSzLNyR5T5LP1isPAAAAHKwlS5bkjjvuyJIlS6qOApWp58qjNye5pyzLe8uyfDrJV5PM22dOmeQlz3w9IcmDdcwDAAAAB6y/vz/d3d1JkpUrV1p9xIhVz/LouCS9e43XP3Nsb59I8v6iKNYn6U7yV3XMAwAAAAdsyZIl2blzZ5Jk586dVh8xYo2p47mLQY6V+4wvTHJ1WZb/WBTFW5P8a1EUJ5VluXPAiYri0iSXJsnkyZOzZs2aeuTlEDj99NPzhjdvy44jJlQdhWFs9Enn5cg/Gps1a9bk9NNPz46np2frUTuqjsUwds67Rmf0i17sz5cDtHXr1iTxeQFw2Nu96mi3lStX5swzz6woDVSnnuXR+iQte42n5tm3pc1PcnaSlGX5o6IoxiVpSrJx70llWV6V5KokmTFjRjlr1qw6Rabe2tvb88N7+rLl5POrjsIwdszd38xpJzTn4osvTnt7ex753a25bPZjVcdiGFu+6shMOP4tufjii6uOMix86UtfSpL48xiAw92oUaP2rDzaPfbnHyNRPW9buy3JiUVRvKIoihdl14bYN+4z53dJZidJURR/nGRckv46ZgIAAIADcvbZZw8Yn3POORUlgWrVrTwqy3J7ko8k+fckv8yup6r9vCiKy4uimPvMtP87SUdRFHcluTbJJWVZ7ntrGwAAABxyCxYsyKhRu35sHj16dBYsWFBxIqhGPW9bS1mW3dm1Efbex/5ur69/keR/1DMDAAAAPB8TJ05MW1tbbrrpprS1taWpqanqSFCJupZHAAAAMJwtWLAgDz74oFVHjGjKIwAAAKhh4sSJWbZsWdUxoFL13DAbAAAAhrX+/v7Mnz8/mzZtqjoKVEZ5BAAAADV0dXXlzjvvTFdXV9VRoDLKIwAAABhEf39/VqxYkbIsc8MNN1h9xIilPAIAAIBBdHV1Zdu2bUmSbdu2WX3EiGXDbADYy+LFi9PT01N1jIa2+/Npb2+vOElja21tTWdnZ9UxAHgBbrrpppRlmSQpyzLf+ta38vGPf7ziVHDoKY8AYC89PT257e612Xb0i6uO0rBG73g6SfLD3nUVJ2lcYx9+vOoIAAyB5ubm3HvvvXvGU6ZMqTANVEd5BAD72Hb0i7NpzklVx2AYa7rlZ1VHAGAIPPTQQwPGfX19FSWBatnzCAAAAAZx7rnnZtSoXT82jxo1Ku94xzsqTgTVsPIIAGAEabR9vXp7e5MkLS0tFScZyJ5VQJJ0dHRkxYoVefrppzNmzJh0dHRUHQkqYeURAACVeeKJJ/LEE09UHQNgUBMnTsy8efNSFEX+5E/+JE1NTVVHgkpYeQQAMII02mqa3U/tW7p0acVJAAbX0dGR3/zmN1YdMaIpjwAAAKCGiRMnZtmyZVXHgEopjwAAgOfNPloHxj5awHBmzyMAAOCwYR8thtqvfvWrnH766fn1r39ddRSojJVHAADA89Zoq2nso8VQ++u//us89thj+djHPpYbbrih6jhQCSuPAAAAYBC/+tWv8rvf/S5Jcv/991t9xIilPAIAAIBB/PVf//WA8cc+9rGKkkC1lEcAAAAwiN2rjna7//77K0oC1VIeAQAAwCCKotjvGEYK5REAAAAMYvbs2QPGc+bMqSgJVEt5BAAAAIOYP3/+fscwUoypOgDAC9Hb25vfbx2dT686suooDGPrt47O74veqmMAAA3m+uuvHzD+xje+kY9//OMVpYHqWHkEAAAAg+ju7h4wXrlyZUVJoFpWHgHDWktLSx4pH8xlsx+rOgrD2KdXHZkJLS1VxwAAGswZZ5yRm266ac/4zDPPrDANVMfKIwAAAABqUh4BAADAIFavXj1g/N3vfreiJFAt5REAAAAM4owzzhgwdtsaI5XyCAAAAICalEcAAAAwiFWrVg0Yf+c736koCVRLeQQAAACDaG5uHjCeMmVKRUmgWmOqDsDIM/axTTnm7uurjtGwRj/5SJJkxxETKk7SuMY+tilJ83POAwCAF6Kvr2/A+MEHH6woCVRLecQh1draWnWEhtfT8/skSesJypHaml1LAADU3YQJE/Lkk0/uGb/0pS+tMA1UR3nEIdXZ2Vl1hIbX3t6eJFm6dGnFSQAAYGR76KGHBoz3XYkEI4U9jwAAAACoSXkEAAAAgxg3btyA8RFHHFFREqiW8ggAAAAGURRF1RGgISiPAAAAYBB7b5Y92BhGCuURAAAADOKoo44aMH7JS15SURKolqetAQAA0DAWL16cnp6eqmMkSSZPnpxHH310wHj305Gr1tra6mnWHDJWHgEAAMAgJkyYsOfrUaNGWXnEiGXlEQAAAA2j0VbTvOtd78o999yTz33uc3nzm99cdRyohPIIAPbS29ubsQ8/nqZbflZ1FIaxsQ8/nt70Vh0DgCEwYcKEvPGNb1QcMaK5bQ0AAACAmqw8AoC9tLS0pDdPZdOck6qOwjDWdMvP0tLSUnUMAIAhYeURAAAAADUpjwAAAACoSXkEAAAAQE3KIwAAAABqUh4BAAAAUJPyCAAAAICalEcAAAAA1KQ8AgAAAKAm5REAAAAANY2pOgAAwOFs8eLF6enpqTpGw9r92bS3t1ecpLG1trams7Oz6hgAjFDKIwCAOurp6cnP196WKUdsrzpKQxr136OTJA/3/KjiJI3rwSf9lR2AavmTCACgzqYcsT0fOvGRqmMwTH1+3YSqIwAwwtnzCAAAAICalEcAAAAA1KQ8AgAAAKAm5REAAAAANSmPAAAAAKhJeQQAAABATcojAAAAAGpSHgEAAABQk/IIAAAAgJqURwAAAADUpDwCAAAAoCblEQAAAAA1KY8AAAAAqEl5BAAAAEBNyiMAAAAAalIeAQAAAFCT8ggAAACAmpRHAAAAANSkPAIAAACgJuURAAAAADUpjwAAAACoSXkEAAAAQE1jqg4AAHA46+3tze+fGJPPr5tQdRSGqQefGJPHenurjgHACGblEQAAAAA1WXkEAFBHLS0tefiJ9fnQiY9UHYVh6vPrJuTolpaqYwAwgll5BAAAAEBNyiMAAAAAalIeAQAAAFCT8ggAAACAmpRHAAAAANTkaWsAADBMLF68OD09PVXHaGi7P5/29vaKkzS21tbWdHZ2Vh0DGCaURwAAMEz09PTkF3f/PMdNaK46SsMavX3XzRWP3L+l4iSN64FH+qqOAAwzdS2PiqI4O8mnk4xOsrQsy0WDzHl3kk8kKZPcVZble+uZCQAAhrPjJjRnwUyranj+lnxvadURgGGmbuVRURSjk1yZZE6S9UluK4rixrIsf7HXnBOTfDzJ/yjL8uGiKCbVKw8AAAAAB6+eG2a/Ock9ZVneW5bl00m+mmTePnM6klxZluXDSVKW5cY65gEAAADgINWzPDouSe9e4/XPHNvbq5O8uiiKHxRF8eNnbnMDAAAAoEHUc8+jYpBj5SDvf2KSWUmmJvl+URQnlWW5dcCJiuLSJJcmyeTJk7NmzZohDwuNYuvWXZe/6/zAnH766dnx9PRsPWpH1VEYxs551+iMftGLs2bNmpx++ul5w9NvyvaXHFF1LIaxMX96co580bg919T2N70hT43z3ymen7a3jM6YcUfuuZ52vGV7Hjlye9WxGMbOedm5Gf2iMf6+eYD8/RzqWx6tT9Ky13hqkgcHmfPjsiy3JfltURQ92VUm3bb3pLIsr0pyVZLMmDGjnDVrVr0yQ+W+9KUvJUlc5wemvb09j/zu1lw2+7GqozCMLV91ZCYc/5ZcfPHFaW9vzw9712XTnJOqjsUw1nTLz3Jay4l7rqmHe36UD534SNWxGKa6103I0a1v3XM9PXL/Fhtm84Is/97KTHj5Mbn44ourjjIs+Ps51Pe2tduSnFgUxSuKook38PkAACAASURBVHhRkvckuXGfOTckOSNJiqJoyq7b2O6tYyYAAAAADkLdyqOyLLcn+UiSf0/yyyRfK8vy50VRXF4Uxdxnpv17ks1FUfwiyeoknWVZbq5XJgAAAAAOTj1vW0tZlt1Juvc59nd7fV0m+d/P/AMAAABAg6nnbWsAAAAADHPKIwAAAABqquttawAwHI19+PE03fKzqmM0rNGPPpUk2XHUuIqTNK6xDz8+8JmzAADDmPIIAPbS2tpadYSG19PTkyRpbTmx4iQNrMW1BAAcPpRHwLD3wNbR+fSqI6uO0bD6H9t1h/LEI3dWnKRxPbB1dCYcv+vrzs7OasMMA+3t7UmSpUuXVpwEAIBDQXkEDGv+z/5ze+iZVSITjvdZ1TLheNcSAADUojwChjWrRJ6bVSIAAMAL4WlrAAAAANSkPAIAAACgJretAQAAjFCLFy/e8xRNBrf789m9FQCDa21ttaXEYUx5BAAAMEL19PTk5/+1Nscd48m1tYze+XSSZOsD91ScpHE9sOWxqiNQZzXLo6Io3p7kqLIsr9vn+PuSbCzL8pZ6hwMAAKC+jjvmyPxF2+urjsEw9tnuu6qOQJ3tb8+jv0/yH4McX5Xk8vrEAQAAAKCR7K88Gl+WZf++B8uyfCjJi+sXCQAAAIBGsb/yaFxRFM+6ra0oirFJjqhfJAAAAAAaxf7Ko+uTdBVFsWeV0TNff/6Z1wAAAAA4zO2vPPrbJBuS3F8UxU+LorgjyX1J+p95DQAAAIDDXM2nrZVluT3JwqIo/j7JCc8cvqcsyycPSTIAAAAAKlezPCqK4vx9DpVJXloUxdqyLB+tbywAAAAAGkHN8ijJ/xzk2DFJTi6KYn5Zlt+tUyYAgMPKg0+OyefXTag6RkPa9N+jkyRNf7Sj4iSN68Enx+ToqkMAMKLt77a1Dwx2vCiKlyf5WpK31CsUAMDhorW1teoIDW1jT0+S5GifU01H5w/XUW9vb36/9fdZ8r2l1YZiWFu/tS+/H/V41TGAYWR/K48GVZbl/UVRjK1HGACAw01nZ2fVERpae3t7kmTpUmUIADSqgy6PiqJ4TZL/rkMWAABgP1paWvLIzi1ZMLO96igMY0u+tzQTWo6pOgYwjOxvw+xvZdcm2Xs7JklzkvfXMxQAAAAAjWF/K48+tc+4TLIluwqk9yf5Ub1CAQAAANAY9rdh9n/s/rooilOSvDfJu5P8Nsk36h8NAAAAgKrt77a1Vyd5T5ILk2xO8v8lKcqyPOMQZQMAAACgYvu7be1XSb6f5H+WZXlPkhRF8b8OSSoAAAAAGsKo/bz2ziQPJVldFEVXURSzkxSHJhYAAAAAjaBmeVSW5TfLsrwgyWuSrEnyv5JMLoric0VRnHWI8gEAAABQof2tPEqSlGX5eFmWXy7L8h1JpiZZm2Rh3ZMBAAAAULnnLI/2VpbllrIsv1CW5Zn1CgQAAABA4zio8ggAAACAkUV5BAAAAEBNY6oOAAAAQDV6e3vz+4cfy2e776o6CsPYA5sfy6M7e6uOQR1ZeQQAAABATVYeAQAAjFAtLS3ZOuq/8xdtr686CsPYZ7vvykuPa6k6BnVk5REAAAAANSmPAAAAAKhJeQQAAABATcojAAAAAGpSHgEAAABQk6etAQDAMPLAI31Z8r2lVcdoWP2PbU6STDzy2IqTNK4HHunLhBxTdQxgGFEeAQDAMNHa2lp1hIb3UE9/kmTCy5UjtUzIMa4l4KAojwAAYJjo7OysOkLDa29vT5IsXWp1FsBQsecRAAAAADUpjwAAAACoSXkEAAAAQE3KIwAAAABqUh4BAAAAUJPyCAAAAICalEcAAAAA1KQ8AgAAAKAm5REAAAAANSmPAAAAAKhJeQQAAABATWOqDgAAAEB1HtjyWD7bfVfVMRrWpt8/mSRpeskRFSdpXA9seSwvPa7qFNST8ggAAGCEam1trTpCw9vwWE+S5KXHnVBxksb10uNcS4c75REAAMAI1dnZWXWEhtfe3p4kWbp0acVJoDr2PAIAAACgJuURAAAAADUpjwAAAACoSXkEAAAAQE3KIwAAAABqUh4BAAAAUJPyCAAAAICalEcAAAAA1KQ8AgAAAKAm5REAAAAANSmPAAAAAKhJeQQAAABATcojAAAAAGpSHgEAAABQk/IIAAAAgJqURwAAAADUpDwCAAAAoCblEQAAAAA1KY8AAAAAqEl5BAAAAEBNyiMAAAAAalIeAQAAAFCT8ggAAACAmpRHAAAAANSkPAIAAACgJuURAAAAADUpjwAAAACoSXkEAAAAQE3KIwAAAABqUh4BAAAAUFNdy6OiKM4uiqKnKIp7iqJYuJ95f1oURVkUxYx65gEAAADg4NStPCqKYnSSK5Ock+S1SS4siuK1g8w7KsmCJLfWKwsAAAAAz089Vx69Ock9ZVneW5bl00m+mmTeIPP+3ySfTPJUHbMAAAAA8DzUszw6LknvXuP1zxzboyiKNyRpKcvypjrmAAAAAOB5GlPHcxeDHCv3vFgUo5L8U5JLnvNERXFpkkuTZPLkyVmzZs3QJIQGtHXr1iRxnTNkXFMMNdcUQ8n1xFBzTTHUXFNQ3/JofZKWvcZTkzy41/ioJCclWVMURZK8LMmNRVHMLcvy9r1PVJblVUmuSpIZM2aUs2bNqmNsqNaXvvSlJInrnKHimmKouaYYSq6n4W/x4sXp6empOsYeGzZsSPKHa6tRtLa2prOzs+oYPA/+OwX1LY9uS3JiURSvSPJAkvckee/uF8uyfCRJ0+5xURRrknx03+IIAADgQI0fP77qCACHnbqVR2VZbi+K4iNJ/j3J6CT/Upblz4uiuDzJ7WVZ3liv9wYAAA4Nq2kADn/1XHmUsiy7k3Tvc+zvasydVc8sAAAAABy8ej5tDQAAAIBhTnkEAAAAQE3KIwAAAABqUh4BAAAAUJPyCAAAAICalEcAAAAA1KQ8AgAAAKAm5REAAAAANSmPAAAAAKhpTNUBoGqLFy9OT09P1TH22J2lvb294iQDtba2prOzs+oYAAAAHGLKI2gw48ePrzoCAAAA7KE8YsSzmgYAAABqs+cRAAAAADUpjwAAAACoyW1rAAAjiAdFHBgPigCAP1AeAQBQGQ+KAIDGpzyCBtPf35+FCxfmiiuuSFNTU9VxADjMWE0DABwsex5Bg+nq6sqdd96Zrq6uqqMAAACA8ggaSX9/f1asWJGyLHPDDTdk06ZNVUcCAABghFMeQQPp6urK9u3bkyTbt2+3+ggAAIDKKY+ggaxcuTI7d+5MkuzcuTM33XRTxYkAAAAY6ZRH0EBe9rKXDRg3NzdXlAQAAAB2UR5BA+nr6xswfvDBBytKAgAAALsoj6CBzJ49e8D4bW97W0VJAAAAYJcxVQcA/uCpp57a7xgAAA53ixcvTk9PT9Ux9tidpb29veIkA7W2tqazs7PqGIwQyiNoIKtXrx4w/u53v1tREgAAIEnGjx9fdQSonPIIGsjuJ63VGgMAwOHOahpoPPY8ggYyatSo/Y4BAADgUPOTKTSQM844Y8D4zDPPrCgJAAAA7KI8ggYybty4/Y4BAADgUFMeQQOxYTYAAACNRnkEDaStrW3A+Nxzz60oCQAAAOyiPIIGsu+eR7Nnz64oCQAAAOyiPIIG8qlPfWrA+JOf/GRFSQAAAGAX5RE0kHvvvXfA+De/+U1FSQAAAGAX5RE0kJe//OX7HQMAAMChpjyCBnL88ccPGCuPAACgWv39/Zk/f342bdpUdRSojPIIGsiPfvSjAeMf/vCHFSUBAACSpKurK3feeWe6urqqjgKVUR4BAADAIPr7+3PjjTemLMusWLHC6iNGLOURNJCzzz57wPicc86pKAkAANDV1ZWdO3cmSXbu3Gn1ESOW8ggayIIFCzJq1K7flqNHj86CBQsqTgQAACNXd3d3tm3bliTZtm1bVq5cWXEiqMaYqgMAfzBx4sS0tbXlpptuSltbW5qamqqOBFRs8eLF6enpqTrGALvztLe3V5zkD1pbW9PZ2Vl1DAAOM21tbbnhhhuybdu2jB07Nueee27VkaASVh5Bg1mwYEGmT59u1RHQsMaPH5/x48dXHQMA6q6jo2PPnQGjRo1KR0dHxYmgGlYeQYOZOHFili1bVnUMoEFYTQMA1Zk4cWLmzp2b6667LvPmzXNnACOW8ggAAABq6OjoyG9+8xurjhjR3LYGDaa/vz/z58/3GFAAAGgAu+8MsOqIkUx5BA1myZIlueOOO7JkyZKqowAAAIDyCBpJf39/uru7k+x6LKjVRwAAAFRNeQQNZMmSJdm5c2eSZMeOHVYfAQAAUDnlETSQf/u3fxswvvnmmytKAlCbvdkAAEYW5REAcFC6urpy5513pqurq+ooAAAcAsojaCBnn332gPE555xTURKAwfX39+fGG29MWZZZsWKF1UcAACOA8ggayPve974B4/e///0VJQEYXFdX15692Xbu3Gn1EQDACKA8ggZy/fXXDxh/4xvfqCgJwOC6u7uzbdu2JMm2bduycuXKihMBAFBvyiNoIN3d3QPGfigDGk1bW1vGjBmTJBkzZkzOPffcihMBAFBvyiNoIGecccaA8ZlnnllREoDBdXR0DLhtraOjo+JEAADUm/IIGshTTz213zFAIymKouoIAAAcAsojaCBr1qwZMF69enU1QQBq6OrqGlAa2TAbAODwpzyCBlKW5X7HAFXr7u7Ojh07kiQ7duywNxsAwAigPIIG8rKXvWzAuLm5uaIkAIN761vfOmB82mmnVZQEAIBDRXkEDeShhx4aMO7r66soCcDg1q1bN2D861//uqIkAAAcKsojaCC7n2BUawxQtfvvv3+/YwAADj/KI2ggo0aN2u8YoGqvfOUrB4xf9apXVZQEAIBDxU+m0EDOOeecAeO2traKkgAM7qMf/eiA8cc+9rGKkgAAcKgoj6CBLFiwYM8jsIuiyIIFCypOBDDQ6tWrB4xXrVpVURIAAA4V5RE0kIkTJ+bcc89NkrzjHe9IU1NTxYkABuru7h4wXrlyZUVJAAA4VJRH0GAWLFiQ6dOnW3UENKS2traMHTs2STJ27Ng9hTcAAIcv5RE0mIkTJ2bZsmVWHQENqaOjY89m/qNGjUpHR0fFiQAAqDflETSY/v7+zJ8/P5s2bao6CsCzTJw4MXPnzk1RFJk3b56iGwBgBFAeQYPp6urKnXfema6urqqjAAyqo6Mjb3jDG6w6AgAYIZRH0ED6+/tz4403pizLrFixwuojoCG5vRYAYGRRHkED6erqys6dO5MkO3futPoIAACAyimPoIF0d3dn27ZtSZJt27Z5BDYAAACVUx5BA2lraxsw9ghsAAAAqqY8ggZy/vnnDxi/853vrCgJAAAA7KI8ggby2c9+dsD4yiuvrCgJAAAA7KI8ggby/e9/f8D4e9/7XkVJAAAAYBflEQAAAAA1KY+ggRx55JH7HQMAAMChpjyCBvLJT35ywPgf//EfK0oCAAAAuyiPoIGccMIJA8avfOUrK0oCAAAAuyiPoIF0dXVl9OjRSZLRo0enq6ur4kQAAACMdMojaCDd3d3ZsWNHkmTHjh1ZuXJlxYkAAAAY6ZRH0EDa2toyZsyYJMmYMWNy7rnnVpwIAACAkU55BA2ko6MjO3fuTJKUZZmOjo6KEwEAADDSKY+gQZVlWXUEAAAAUB5BI+nq6sqoUbt+W44aNcqG2QAAAFROeQQNpLu7O9u3b0+SbN++3YbZAAAAVE55BA2kra0tY8eOTZKMHTvWhtkAAABUTnkEDaSjoyNFUSRJiqKwYTYAAACVG1PPkxdFcXaSTycZnWRpWZaL9nn9fydpT7I9SX+SD5ZleX89M0EjmzhxYqZOnZp77703LS0taWpqqjoSB2nx4sXp6empOsYAu/O0t7dXnOQPWltb09nZWXUMAADgANRt5VFRFKOTXJnknCSvTXJhURSv3WfanUlmlGV5cpLrknyyXnlgOOjv78/69euTJL29vdm0aVPFiTgcjB8/PuPHj686BgAAMEzVc+XRm5PcU5blvUlSFMVXk8xL8ovdE8qyXL3X/B8neX8d80DD6+rqys6dO5MkO3fuTFdXVz7+8Y9XnIqDYTUNAABwuKnnnkfHJenda7z+mWO1zE9ycx3zQMPztDXqob+/P/Pnz7eSDQAAeF7qufKoGORYOejEonh/khlJ/q8ar1+a5NIkmTx5ctasWTNEEf//9u4vtM77vAP495GtumWDQSJR7HgkjbPM/XPRQCiUjq5x0i6x5Thzsq676Rjh9KrkKoStgxEKzlhXOvDYxXqW0tGm+5cGx5blOtCEFpawNsNNk7QrixPapXapRMdgvUhs67eLo2Q5rqU4ceX3lfX5gEHPe34+fAXWhb963vdAv1xzzTV56qmnxmb/3rlQDz74YI4dO5Z77703d9xxR9dxAACANaZaO2efc+FvXPX+JPe21n5naf6TJGmt/flZ525K8tdJfru19tPXe9/rr7++Pfnkk6uQGLq3Z8+e/OhHP3p1vvLKK3PgwIEOE7HWzc/PZ/fu3XnppZeyadOmzM7OehA7AADwC6rq31tr15/rtdW8be3bSX6jqt5RVW9J8rEkB88Kdl2Sv01y6/kUR3Cpe21xlCQ//KEPH+TCDIfDnDlzJkly5syZDIfDjhMBAABrzaqVR62100k+meRoku8n+efW2rNV9emqunXp2F8m+dUk/1JV36mqg8u8HawLV1999di8bdu2jpJwqfAcLQAA4EKt5uZRWmtzrbVrW2vbWmv7lq79WWvt4NLXN7XW3t5ae+/Sn1tXfke4tO3bt29svu+++zpKwqXihhtuGJt37NjRURIAAGCtWtXyCHhjtm/f/ur20bZt23Lttdd2nAgAAID1TnkEPXP33XdnYmIi99xzT9dRuAQ89thjY/Ojjz7aURIAAGCtUh5Bz8zNzWVxcTGzs7NdR+ESsHPnzmzcuDFJsnHjxuzatavjRAAAwFqjPIIemZ+ff/WBxocPH87CwkLHiVjrBoNBNmzYkCTZsGFDBoNBx4kAAIC1RnkEPbJ///601pIki4uL2b9/f8eJWOump6dz6623pqqyZ8+eTE1NdR0JAABYY5RH0CNHjhwZm+fm5jpKwqVkMBjkuuuus3UEAAC8KRu7DgD8vzNnzqw4w5sxPT2d+++/v+sYAADAGmXzCHqkqlacAQAA4GJTHkGPTExMrDgDAADAxeZ/ptAjW7duXXEGAACAi015BD0yPz+/4gwAAAAXm/IIemTXrl1j88zMTEdJAAAAYER5BD1yww03jM033nhjR0kAAABgRHkEPfLZz352bP7MZz7TURIAAAAYUR5Bjzz//PNj8/HjxztKAgAAACPKI+iRq6++emzetm1bR0kAAABgRHkEPbJv376x+b777usoCQAAAIwoj6BHtm/f/ur20bZt23Lttdd2nAgAAID1TnkEPXP33XdnYmIi99xzT9dRAAAAQHkEfTM3N5fFxcXMzs52HQUAAACUR9An8/PzOXz4cJJkdnY2CwsLHScCAABgvVMeQY/s378/rbUkSWst+/fv7zgRAAAA653yCHrkyJEjY/Pc3FxHSQAAAGBEeQQ9sri4uOIMAAAAF5vyCHpkw4YNK84AAABwsSmPoEduvvnmsfmWW27pKAkAAACMKI+gR+66665MTIx+LCcmJnLXXXd1nAgAAID1TnkEPTI9PZ0dO3YkSW666aZMTU11nAgAAID1TnkEPfPWt741SbJp06aOkwAAAIDyCHplfn4+jzzySJLk6NGjWVhY6DgRAAAA653yCHpkOBzm5ZdfTpK8/PLLGQ6HHScCAABgvVMeQY/Mzs6OzYcOHeooCQAAAIwoj6BHLrvssrH58ssv7ygJAAAAjCiPoEdOnDgxNv/4xz/uKAkAAACMKI+gR1prK84AAABwsSmPoEeuuOKKsXnr1q0dJQEAAIAR5RH0yDvf+c4VZwAAALjYlEfQI0888cTY/Pjjj3eUBAAAAEaUR9AjO3fuzMTE6MdyYmIiu3bt6jgRAAAA653yCHpkMBisOAMAAMDFpjyCnqqqriMAAACA8gj6ZDgcvnrbWlVlOBx2nAgAAID1TnkEPTI3N5fTp08nSU6fPp3Dhw93nAgAAID1TnkEPeKB2QAAAPSN8gh6ZO/evVlcXEySLC4u5vbbb+84EQAAAOud8gh65KGHHhqbv/rVr3aUBAAAAEaUR9Ajs7OzY/OhQ4c6SgIAAAAjyiPokc2bN4/NW7Zs6SgJAAAAjCiPoEd+8pOfjM0nT57sKAkAAACMKI+gR87+dLWZmZmOkgAAAMCI8gh6ZO/evWOzT1sDAACga8oj6JGHHnooVZUkqSqftgYAAEDnlEfQI3Nzc2mtJUlaazl8+HDHiQAAAFjvlEfQIzt37szk5GSSZHJy8heegQQAAAAXm/IIemQwGGRiYvRjOTExkcFg0HEiAAAA1jvlEfTI9PR0PvzhDydJPvKRj2RqaqrjRAAAAKx3yiMAAAAAlqU8gh6Zn5/PI488kiQ5evRoFhYWOk4EAADAeqc8gh4ZDoc5depUkuTUqVMZDocdJwIAAGC9Ux5Bj8zOzqa1liRpreXQoUMdJwIAAGC9Ux5Bj2zevHls3rJlS0dJAAAAYER5BD1y8uTJsfnEiRMdJQEAAIAR5RH0iM0jAAAA+kZ5BD1i8wgAAIC+UR5Bj8zMzIzNu3fv7igJAAAAjCiPoEf27t07Nt9+++0dJQEAAIAR5RH0yAMPPDA2f/nLX+4oCQAAAIwoj6BHvva1r43NR44c6SgJAAAAjCiPoEdaayvOAAAAcLEpj6BHrrjiirF569atHSUBAACAEeUR9MjCwsLYPD8/31ESAAAAGFEeQY/s2rUrVZUkqarMzMx0nAgAAID1TnkEPTIYDDI5OZkkmZyczGAw6DgRAAAA653yCHpkeno6e/bsSVXltttuy9TUVNeRAAAAWOc2dh0AGDcYDHL8+HFbRwAAAPSCzSMAAAAAlqU8gp4ZDoc5duxYhsNh11EAAABAeQR9Mj8/n4cffjittRw4cCALCwtdRwIAAGCdUx5BjwyHw5w6dSpJcurUKdtHAAAAdE55BD0yOzub1lqSpLWWQ4cOdZwIAACA9U55BD2yefPmsXnLli0dJQEAAIAR5RH0yMmTJ8fmEydOdJQEAAAARpRH0CM2jwAAAOgb5RH0iM0jAAAA+kZ5BD0yMzOTqkqSVFV2797dcSIAAADWO+UR9MhgMMjk5GSSZHJyMoPBoONEAAAArHfKI+iR6enp7NmzJ1WV2267LVNTU11HAgAAYJ3b2HUAYNxgMMjx48dtHQEAANALyiPomenp6dx///1dxwAAAIAkblsDAAAAYAWrWh5V1c1V9YOqeq6q/vgcr2+qqn9aev3fquqq1cwDa8H8/HzuvPPOLCwsdB0FAAAAVq88qqoNSf4myS1J3pXkD6rqXWcduzPJf7fWrknyV0n+YrXywFoxHA5z7NixDIfDrqMAAADAqm4evS/Jc62151trLyf5xyR7zjqzJ8nfL339YJIbq6pWMRP02vz8fA4ePJjWWh5++GHbRwAAAHRuNcujK5L812vmF5eunfNMa+10kv9JcvkqZoJeGw6HWVxcTJIsLi7aPgIAAKBzq/lpa+faIGpv4kyq6hNJPrE0/m9V/eACs0Evve1tb3tvkg2vzM8888yZT33qU9/pMBIAF2YqiTVSAGAtuHK5F1azPHoxya+/Zt6a5MQyZ16sqo1Jfi3Jz85+o9ba55N8fpVyAgCsiqp6srV2fdc5AAAuxGretvbtJL9RVe+oqrck+ViSg2edOZjkD5e+viPJo621X9g8AgAAAKAbq7Z51Fo7XVWfTHI0o9twvtBae7aqPp3kydbawST3J/lSVT2X0cbRx1YrDwAAAABvXFn0AQBYHVX1iaXb7wEA1izlEQAAAADLWs1nHgEAAACwximPAADehKr6YlXdcZ5nv1BVP62qZ866/ntV9WxVLVaVT2UDAHpJeQQAsEqqasPSl19McvM5jjyTZG+Sb16sTAAAb5TyCADgPFTVx6vqu1X1VFV9aenyB6vq8ap6/pUtpKr6UFU9VlVfSfJ0krTWvpnRJ8uOaa19v7X2g4v2TQAAvAkbuw4AANB3VfXuJH+a5AOttYWquizJ55JsTvJbSbYnOZjkwaW/8r4k72mtvdBFXgCAXyabRwAAr29HkgdbawtJ0lp7ZYvoQGttsbX2vSRvf835bymOAIBLhfIIAOD1VZJ2jusvnXXmFT9f3TgAABeP8ggA4PV9PclHq+ryJFm6bQ0AYF1QHgEAvI7W2rNJ9iX5RlU9ldHzjs5bVf1DkieS/GZVvVhVdy5d/92qejHJ+5Mcrqqjv+ToAAAXrFo71wY2AAAAANg8AgAAAGAFyiMAAAAAlqU8AgAAAGBZyiMAAAAAlqU8AgAAAGBZyiMAgAtQVV+sqju6zgEAsFqURwAAq6yqNnSdAQDgzVIeAQC8AVX18ar6blU9VVVfWrr8wap6vKqef2ULqao+VFWPVdVXkjxdVVdV1X9U1d9V1TNV9UBV3VRV/1pV/1lV7+vuuwIAWF611rrOAACwJlTVu5M8lOQDrbWFqrosyeeS/EqS30+yPcnB1to1VfWhJIeTvKe19kJVXZXkuSTXJXk2ybeTPJXkziS3Jvmj1tptF/c7AgB4fTaPAADO344kD7bWFpKktfazpesHWmuLrbXvJXn7a85/q7X2wmvmF1prT7fWFjMqkL7eRr/JezrJVasfHwDgjVMeAQCcv0pyrrXtl84684qfr3Bu8TXzYpKNF5wOAGAVKI8AAM7f15N8tKouT5Kl29YAAC5pfsMFAHCeWmvPVtW+JN+oqjNJjnWdCQBgtXlgNgAAAADLctsaAAAAAMtSHgEAAACwLOURAAAAAMtSHgEAAACwLOURAAAAAMtSHgEAAACwLOURAAAAG3M8OgAAABBJREFUAMtSHgEAAACwrP8DF5YCRi/YfY0AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "fig, axes = plt.subplots(figsize=(20,10))\n", "#grouped = df_scores.groupby(['threshold'])\n", "\n", "#bp = grouped.boxplot(subplots=False, sym='k+', figsize=(8,10))\n", "#bp = df_scores.boxplot(column=['auc'], by=['chrm', 'dist_thresh'], ax=axes,rot=40, fontsize=8,layout=(2, 1))\n", "sns.boxplot(y='auc', x='chrm', \n", " data=df_scores, \n", " palette=\"colorblind\"\n", " ,hue='dist_thresh'\n", " )\n", "#bp = axes.boxplot([[x if x>=0 else -1 for x in top_500_score_auroc_0_9], [x if x>=0 else -1 for x in top_500_score_auroc_0_7], [x if x>=0 else -1 for x in top_500_score_auroc_0_5], [x if x>=0 else -1 for x in top_500_score_auroc_0_4]] , sym='k+')\n", "#axes.set_title('Predicting structure similarity from expression')\n", "axes.yaxis.grid(True)\n", "#axes.set_xlabel('Co-expression')\n", "axes.set_ylabel('AUC')\n", "axes.set_ylim([0.0,1.101])\n", "#plt.setp(bp['fliers'], markersize=3.0)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "fig, axes = plt.subplots(figsize=(20,10))\n", "#grouped = df_scores.groupby(['threshold'])\n", "\n", "#bp = grouped.boxplot(subplots=False, sym='k+', figsize=(8,10))\n", "#bp = df_scores.boxplot(column=['auc'], by=['chrm', 'dist_thresh'], ax=axes,rot=40, fontsize=8,layout=(2, 1))\n", "sns.boxplot(y='auc', x='chrm', \n", " data=df_scores, \n", " palette=\"colorblind\"\n", " ,hue='dist_thresh'\n", " )\n", "#bp = axes.boxplot([[x if x>=0 else -1 for x in top_500_score_auroc_0_9], [x if x>=0 else -1 for x in top_500_score_auroc_0_7], [x if x>=0 else -1 for x in top_500_score_auroc_0_5], [x if x>=0 else -1 for x in top_500_score_auroc_0_4]] , sym='k+')\n", "#axes.set_title('Predicting structure similarity from expression')\n", "axes.yaxis.grid(True)\n", "#axes.set_xlabel('Co-expression')\n", "axes.set_ylabel('AUC')\n", "axes.set_ylim([0.0,1.101])\n", "#plt.setp(bp['fliers'], markersize=3.0)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [], "source": [ "df_scores_plot = pd.concat([df_scores.drop(['plot'], axis=1), df_scores['plot'].apply(pd.Series)], axis=1)\n", "df_plot = df_scores_plot.groupby(['chrm']).median()" ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 {0.0: 0.15891472868217105, 0.1: 0.358914728682...\n", "1 {0.0: 0.19172932330827042, 0.1: 0.479591836734...\n", "2 {0.0: 0.027435610302351626, 0.1: 0.14389697648...\n", "3 {0.0: 0.03850267379679142, 0.1: 0.107486631016...\n", "4 {0.0: 0.3575498575498566, 0.1: 0.7236467236467...\n", " ... \n", "999 {0.0: 0.0858757062146893, 0.1: 0.3598870056497...\n", "1000 {0.0: 0.09021739130434761, 0.1: 0.192391304347...\n", "1001 {0.0: 0.03621346886912323, 0.1: 0.156289707750...\n", "1002 {0.0: 0.09125188536953226, 0.1: 0.208898944193...\n", "1003 {0.0: 0.06352459016393448, 0.1: 0.174863387978...\n", "Name: plot, Length: 1004, dtype: object" ] }, "execution_count": 143, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_scores['plot']" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEKCAYAAAAMzhLIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deZRU1bXH8e9GCRohxoAjiKCAgsw2OGACzqhPSBwhycqLIjiEwThFTIxRk2ck8RkHVNDnHAWFqKgoGGRQ5kahbSAowYEWFEQGmRqa3u+PU4S27aFo+tat4fdZi9VVdW9Xbe5qerPPuWcfc3dEREQqUyfuAEREJL0pUYiISJWUKEREpEpKFCIiUiUlChERqZIShYiIVCmyRGFmj5nZKjMrrOS4mdl9ZrbUzArMrHNUsYiISM1FWVE8AfSs4vjZQMvEnwHAQxHGIiIiNRRZonD3acBXVZzSG3jKg1nA983s0KjiERGRmtk7xs9uDCwv87wo8drK8iea2QBC1cF+++133DHHHJOSAEVEMt5XX8Hy5cwrKfnS3Q+syVvEmSisgtcq7Cfi7iOBkQB5eXmen58fZVwiIpmvqAiuugqKi2H6dOz44z+p6VvFeddTEXB4medNgBUxxSIikh1KS2HkSOjUCfLyYN486Np1j94yzopiHDDQzEYBxwPr3f1bw04iIpKkpUuhf3/YvBkmT4a2bQFYs7EYq7vvd2v6tlHeHvscMBM42syKzKyfmV1pZlcmThkPLAOWAo8AV0cVi4hIVtuxA+6+G044Ac47D2bM+E+SeHn+Z3S76y32PuDQVjV9+8gqCnfvW81xB34V1eeLiOSE99+Hfv2gfn2YPRuOOuo/h9ZsLOY3YwvYur0Uq1Nnr5p+hFZmi4hkouJiuPVWOPVUGDAAJk36RpIAKFq7hbp19vzXfJxzFCIiUhOzZ4cq4sgjYf58aNy4wtOaHLAv20tL9/jjVFGIiGSKTZvg2muhd2+45RZ4+eVKkwRAw/r1GHZBe/apWwcvLd1R049VohARyQRvvQXt28OqVVBYCJdcAlbRcrRv6tWxMdN/cyola1d+UNOP1tCTiEg6W7cObrgBJkyAhx6Cc8/d7bdoWL8evn3L5pqGoIpCRCRdjRsXbnOtWzdUETVIErVBFYWISLpZtQoGDw6rqv/+d+jePdZwVFGIiKQLd3jmGWjXDo44AgoKYk8SoIpCRCQ9LF8OV14Zvr72WujTlCZUUYiIxKm0NExSd+4MJ54I+flplSRAFYWISHw+/BAuvxy2bYOpU6FNm7gjqpAqChGRVCspgWHDQgVx/vnwzjtpmyRAFYWIZKk1G4spWruFJgfsS8P69eIOZ5cFC+Cyy+AHP4C5c6F587gjqpYShYhknZfnf8ZvxhZQt04dtpeWMuyC9vTqWHmri5QoLoY//hFGjIA//xkuvTSpldXpQENPIpJVyrbW/rq4hK3bS7lxbAFrNhbHF9TMmWHHucLC0MTvsssyJkmAEoWIZJmKWmvXrVOHorVbUh/Mxo1wzTVhHuK22+Af/4DDDkt9HHtIiUJEskpFrbW3l5bS5IB9UxvIm2+GhXNr14ZK4qKLMqqKKEuJQkSyStnW2g3q7c0+desw7IL2qZvQXrs27BVx+eVhfcSTT0LDhqn57IhoMltEsk6vjo3p1qJR6u96evFFGDgQfvKTUEU0aJCaz42YEoWIZKWG9eulLkF8/jkMGhR6M40aBT/8YWo+N0U09CQiUlPu8NRT0KEDtGgR1khkWZIAVRQiIjXzySdwxRXwxRfw+uuhV1OWUkUhIrI7Skth+PDQuK97d5gzJ6uTBKiiEBFJ3pIl4W6m0lJ4+2045pi4I0oJVRQiItXZvh3uvBO6dYNLLsmpJAGqKEREqvbee2FdxIEHhr0imjWLO6KUU0UhIlKRrVvh5pvhrLNgyBB4442cTBKgikJE5NumTw9VRLt2YW3EIYfEHVGslChERHb6+utQRYwdCw88EJr5iYaeREQAmDAhVBCbNsHChUoSZaiiEMkiaburWzr76iv49a/DntUjR8KZZ8YdUdpRohDJEmm5q1u6GzMGBg8OLcALC6F+/bgjSktKFCJZoOyublsJezHcOLaAbi0aqbKoyMqVocvrokXwwgthfYRUSnMUIlkgrXZ1S2fu8PjjoYlf69ZhjYSSRLVUUYhkgbTZ1S2dffwxDBgAa9bAxInQsWPcEWWMSCsKM+tpZkvMbKmZ3VTB8aZmNtnM3jOzAjM7J8p4RLJV7Lu6pbMdO+C++0ITv9NOg9mzlSR2U2QVhZntBQwHzgCKgLlmNs7dF5U57XfA8+7+kJm1AcYDzaKKSSSbxbarWzpbvDgsnNt7b5gxA1q1ijuijBRlRdEVWOruy9x9GzAK6F3uHAe+l3i8P7AiwnhEsl7D+vXocPj3lSS2b4c//SlsIvTzn8OUKUoSeyDKOYrGwPIyz4uA48ud8wdgopkNAvYDTq/ojcxsADAAoGnTprUeqIhkkXnz4LLL4LDD4N13Qb8z9liUFYVV8JqXe94XeMLdmwDnAE+b2bdicveR7p7n7nkHHnhgBKGKSMbbsgVuugnOOQduuAHGj1eSqCVRJooi4PAyz5vw7aGlfsDzAO4+E9gHaBRhTCKSjaZNC7e8fvQRvP9+GG6yiv6vKjURZaKYC7Q0s+Zm9h2gDzCu3DmfAqcBmFlrQqJYHWFMIpJNNmyAq6+Gn/4Uhg2D0aPhoIPijirrRJYo3L0EGAhMABYT7m5aaGa3m1mvxGnXAf3NbAHwHPBLdy8/PCUi8m3jx0PbtrBtW2i/8eMfxx1R1op0wZ27jyfc8lr2td+XebwI0LJIEUnel1+GJn7Tp4dV1qedFndEWU8tPEQkM7jD88+HVuCNGoW5CCWJlFALDxFJfytWhLmIDz+EF1+EE06IO6KcoopCRNKXOzz6aGi50aFDWBehJJFyqihEJD0tWwb9+4c7m/75T2jfPu6IcpYqChFJLzt2wD33QNeucPbZMHOmkkTMVFGISPpYuDA08dtnH5g1C1q0iDsiQRWFiKSDbdvg9tuhRw+49FJ46y0liTSiikJE4jV3bqgimjYNO841aRJ3RFKOKgoRicfmzaF533nnwdCh8MorShJpSolCRFJvypQwQf3ZZ2HhXN++auKXxjT0JCKps3493Hhj6NP04IOhmpC0p4pCRFLj1VdDEz8ITfyUJDKGKgoRidbq1TBkCMyZA089BaecEndEsptUUYhINNzhuedCE7/GjaGgQEkiQ6miEJHaV1QEV10FH38M48aFVdaSsVRRiEjtKS2FESOgUyfo0gXmzVOSyAKqKESkdixdGpr4bd4MkyfvmriWjKeKQkT2TEkJ/PWvof13r14wY4aSRJZRRSEiNff++6H9RoMGMHs2HHVU3BFJBFRRiMjuKy6GW2+FU0+FAQPCfhFKEllLFYWI7J7Zs0MVcdRRMH9+uPVVspoShYgkZ9MmuOWWsDbib3+Diy9Wf6YcoaEnEanepElh4dzq1WFe4pJLlCRyiCoKEancunWhFfiECfDQQ3DuuXFHJDFQRSEiFXv55XCba926oYmfkkTOUkUhIt+0ahUMHgzvvgvPPgs/+lHcEUnMVFGISOAOzzwT5iKOOAIWLFCSEEAVhYgAfPopXHll2HHutdcgLy/uiCSNqKIQyWWlpWGS+rjj4KSTID9fSUK+RRWFSK764AO4/PLQq2nqVGjTJu6IJE2pohDJNSUlMGxYqCAuvBDefltJQqqkikIklyxYAJddBj/4AcydC82bxx2RZABVFCK5oLg4tN844wwYOBAmTlSSkKSpohDJdjNmhCZ+rVuHiuLQQ+OOSDJMpBWFmfU0syVmttTMbqrknIvNbJGZLTSzZ6OMRySnbNwIQ4aEeYg77oCxY5UkpEYiqyjMbC9gOHAGUATMNbNx7r6ozDktgaFAN3dfa2YHRRWPSE55882wT0T37qGJX8OGcUckGSzKoaeuwFJ3XwZgZqOA3sCiMuf0B4a7+1oAd18VYTwi2W/tWrjuOnjrLRgxAs46K+6IJAtEOfTUGFhe5nlR4rWyWgGtzGy6mc0ys54VvZGZDTCzfDPLX716dUThimS4F18MTfz22y9UEUoSUkuirCgqalbvFXx+S6AH0AR428zauvu6b3yT+0hgJEBeXl759xDJbZ9/DoMGheQwejScfHLcEUmWibKiKAIOL/O8CbCignNedvft7v4RsISQOESkOu7w5JPQvj20bBm2JVWSkAhEWVHMBVqaWXPgM6AP8NNy57wE9AWeMLNGhKGoZRHGJJIdPvkErrgCvvgC3ngDOneOOyLJYpFVFO5eAgwEJgCLgefdfaGZ3W5mvRKnTQDWmNkiYDJwg7uviSomkYxXWgoPPBCa+HXvDnPmKElI5Mw9s4b88/LyPD8/P+4wRFJvyZKwcA7g0UfhmGPijUcyipnNc/catQZWCw+RdLd9O9x5J3TrBn36wLRpShKSUmrhIZLO3nsvNPE7+GCYNy/sPCeSYqooRNLR1q0wdGhYC3HNNfD660oSEhtVFCLp5p13wlxE+/ZQUACHHBJ3RJLjlChE0sXXX4cq4sUX4f774fzz445IBNiDoScze702AxHJaRMmQLt2sHkzFBYqSUhaqbKiMLPKbtA2oGPthyOSY9asgWuvDXcyPfJI2FhIJM1UN/Q0F5hKxX2bvl/74YjkCPewP8TgwXDRRaFPU/36cUclUqHqEsVi4Ap3/7D8ATNbXsH5IlKdlSvhV7+CxYthzBg46aS4IxKpUnVzFH+o4pxBtRuKSJZzh8cfhw4d4NhjwxoJJQnJAFVWFO4+popjL9V+OCJZ6qOPwo5za9eG3ec6dIg7IpGk7cldT5fWZiAiWWnHDrjvPujSJUxUz5qlJCEZZ0/WUdwGPF5bgYhknUWL4PLLYe+9YcYMaNUq7ohEaqS622MLKjsEHFz74Yhkge3b4a674N574fbbw74RddQtRzJXdRXFwcBZwNpyrxswI5KIRDLZvHmhiV/jxuFx06ZxRySyx6pLFK8C9d19fvkDZjYlkohEMtGWLfCHP8ATT8Ddd8PPfgZW0fIjkcxT3V1P/ao4Vn5bU5HcNG1amIvo3DksnDvooLgjEqlV1U5mm1kdoMDd26YgHpHMsWED3HQTjBsHw4dD795xRyQSiWpn2Ny9FFhgZhpsFdlp/Hho2zZMXBcWKklIVkv29thDgYVmNgfYtPNFd+8VSVQi6erLL8NGQjNnhlXWp50Wd0QikUs2UdwWaRQi6c4dnn8+JIm+fcOGQvvtF3dUIimRVKJw96lRByKStlasgKuugqVLw6ZCJ5wQd0QiKZXUKiAzO9/MPjSz9Wa2wcy+NrMNUQcnEit3ePRR6NgROnWCd99VkpCclOzQ0zDgPHdfHGUwImlj2TLo3z/c2TRpUth9TiRHJdtX4AslCckJO3bAPfdA165wzjlh0lpJQnJcdb2edm7cm29mo4GXgOKdx939HxHGJpJahYXQrx/su2/o8tqiRdwRiaSF6oaezkt8dWAzcGaZYw4oUUjm27YN7rwTHngA/vSnsMpaTfxE/qO6Fh6XApjZk8AQd1+XeH4AcHf04YlEbO7c0MSvWbOw41yTJnFHJJJ2kv1vU/udSQLA3dcCnaIJSSQFNm+G66+H886Dm28ObTiUJEQqlGyiqJOoIgAwsx+wZ5seicRnyhRo3x5WrgxN/Pr2VadXkSok+8v+bmCGmY0hzE1cDPwpsqhEorB+Pdx4Y+jT9OCDoZoQkWolVVG4+1PABcAXwGrgfHd/OsrARGrVK6+EJn5m4e4mJQmRpCU9fOTui4BFEcYiUvtWr4YhQ8Kk9dNPQ48ecUckknF0D6BkJ3d49tmwWK5xY1iwQElCpIY0IS3Zp6goNPH75JMw5NSlS9wRiWS0SCsKM+tpZkvMbKmZ3VTFeReamZtZXpTxSJYrLYURI0IDvy5dID9fSUKkFkRWUZjZXsBw4AygCJhrZuMScx1lz2sADAZmRxWL5IClS0MTvy1bwu2vxx4bd0QiWSPKiqIrsNTdl7n7NmAUUNF+kXcQutNujTAWyVYlJfDXv4b23716wfTpShIitSzKOYrGwPIyz4uA48ueYGadgMPd/VUzu76yNzKzAcAAgKZNtXW3JBQUhCZ+3/sezJkDRx4Zd0QiWSnKiqKipa7+n4NmdYB7gOuqeyN3H+nuee6ed+CBB9ZiiJKRiovh1lvh9NPhyivhn/9UkhCJUJQVRRFweJnnTYAVZZ43ANoCUyy0TzgEGGdmvdw9P8K4JJPNmhWqiJYtYf58OOywuCMSyXpRJoq5QEszaw58BvQBfrrzoLuvBxrtfG5mU4DrlSSkQps2wS23wHPPwb33wkUXqT+TSIpENvTk7iXAQGACsBh43t0XmtntZtYrqs+VLLRzK9LVq0P7jYsvVpIQSaFIF9y5+3hgfLnXfl/JuT2ijEUy0Lp1oRX4xInw8MNha1IRSTm18JD09PLLoYlfvXqhilCSEImNWnhIevniCxg8OOw29+yz8KMfxR2RSM5TRSHpwR2eeSZsKNS8eWjipyQhkhZUUUj8Pv00rIdYsSJsKnTccXFHJCJlqKKQ+JSWhp3mjjsOunULe0YoSYikHVUUEo8PPoDLLw+9mqZNg9at445IRCqhikJSq6QE7roLTjoJLrwQ3n5bSUIkzamikNRZsAAuuwwaNgx7RTRrFndEIpIEVRQSva1b4Xe/gzPOgEGDYMIEJQmRDKKKQqI1Y0Zo4te6dagoDj007ohEZDcpUUg0Nm6Em2+GMWPg/vvhggvijkhEakhDT1L7Jk4MTfw2bAjtN5QkRDKaKgqpPWvXwrXXwuTJMGIEnHVW3BGJSC1QRSG14x//CE386teH999XkhDJIqooZM98/jkMHBiGmEaPhpNPjjsiEallqiikZtzhySehQwdo1SpsS6okIZKVVFHI7vv4Y7jiCli1Ct54Azp1ijsiEYmQKgpJXmlpuNU1Lw9OOQXmzFGSEMkBqigkOf/6V2jiZwbTp8PRR8cdkYikiCoKqdr27fA//xPmH/r2halTlSREcowqCqnce++FJn4HHwzz5sERR8QdkYjEQBWFfNuWLTB0KPTsCb/+Nbz+upKESA5TRSHf9M47oYlf+/ZQUBCqCRHJaUoUEnz9dagiXnwRHngAfvKTuCMSkTShoScJayHatQtDToWFShIi8g2qKHLZmjWhid+0afDoo3D66XFHJCJpSBVFLnIP+0S0awcHHBCa+ClJiEglVFHkmpUr4Ve/Cgvoxo6FE0+MOyIRSXOqKHKFOzz2WGjid+yxYY2EkoSIJEEVRS746CMYMCBsLPTmmyFZiIgkSRVFNtuxA+69F7p0gTPPhFmzlCREZLeposhWixaFJn5168KMGWHPCBGRGlBFkW22b4c//hG6d4df/CLsX60kISJ7QBVFNsnPD+03GjeGd9+Fww+POyIRyQKRVhRm1tPMlpjZUjO7qYLj15rZIjMrMLNJZqbOczWxZQvceCOce274+tprShIiUmsiSxRmthcwHDgbaAP0NbM25U57D8hz9/bAGGBYVPFkralTQwO/5cvDwrmf/SxsLiQiUkuirCi6AkvdfZm7bwNGAb3LnuDuk919c+LpLKBJhPFklw0b4KqrQmK4+2547jk46KC4oxKRLBRlomgMLC/zvCjxWmX6Aa9XdMDMBphZvpnlr169uhZDzFDjx0PbtuH218JC6NUr7ohEJItFOZld0fiHV3ii2c+BPKB7RcfdfSQwEiAvL6/C98gJX34J11wDM2fCE0/AqafGHZGI5IAoK4oioOyMahNgRfmTzOx04LdAL3cvjjCezOUOo0eHJn4HHxw2FFKSEJEUibKimAu0NLPmwGdAH+CnZU8ws07ACKCnu6+KMJbM9dlncPXV8O9/w0svwfHHxx2RiOSYyCoKdy8BBgITgMXA8+6+0MxuN7Odg+p/AeoDL5jZfDMbF1U8GccdHnkEOnaETp3CugglCRGJQaQL7tx9PDC+3Gu/L/NYmyBU5N//hv79YeNGeOutMOQkIhITtfBIJzt2wP/+b6gczj03TForSYhIzNTCI10UFob2G9/9bujy2qJF3BGJiACqKOK3bRvcdhucckpIFJMmKUmISFpRRRGnOXNCcmjWLOw410QL00Uk/ShRxGHzZvj97+GZZ+Bvf4NLLlF/JhFJWxp6SrXJk0MTv5Urw7xEnz5KEiKS1lRRpMr69aEF+Pjx8NBD8F//FXdEIiJJUUWRCq+8Epr4mYUqQklCRDKIKooorV4NQ4bA3Lnw9NPQo0fcEYmI7DZVFFFwh2efDYvlmjSBBQuUJEQkY6miqG3Ll4cNhT79FF59FfLy4o5IRGSPqKKoLaWlMGIEdO4cWnDk5ytJiEhWUEVRGz78MDTx27oVpkyBY4+NOyIRkVqjimJPlJTAX/4CJ54IP/4xTJ+uJCEiWUcVRU0VFIT2G/vvH1pxHHlk3BGJiERCFcXuKi4O7TdOPz1MWr/5ppKEiGQ1VRS7Y9asUEW0bAnz58Nhh8UdkYhI5JQokrFpE/zudzBqFNx3H1x4ofoziUjO0NBTdSZNCgvn1qwJ7TcuukhJQkRyiiqKyqxbB9dfH+YgHn4Yzj477ohERGKhiqIiL70UbnOtVw/ef19JQkRymiqKsr74AgYNCr2ZRo2CH/4w7ohERGKnigJCE7+nnw4bCh11VLijSUlCRARQRRGa9115JaxYETYVOu64uCMSEUkruVtRlJbCgw+GxHDyyWHPCCUJEZFvyc2KYsmS0MSvpASmTYPWreOOSEQkbeVWRVFSAn/+M3TrFtZDvP22koSISDVyp6KYPz+032jYMOwV0axZ3BGJiGSE7K8otm6F3/4Wzjwz3Po6YYKShIjIbsjuimLGjFBFtGkT2oIfckjcEYmIZJzsTBQbN8LNN8OYMXD//XDBBXFHJCKSsbJv6GnixNDEb8OG0MRPSUJEZI9kT0Xx1Vdw3XUweTKMGAFnnRV3RCIiWSE7KoqxY6FtW2jQIFQRShIiIrUmsyuKzz+HgQNDcnjhhbA+QkREalWkFYWZ9TSzJWa21MxuquB4PTMbnTg+28yaJfXG7vDEE6GJ39FHhzUSShIiIpGIrKIws72A4cAZQBEw18zGufuiMqf1A9a6ewsz6wPcBVxS5Rtv2wY9e8Lq1WHiumPHiP4GIiIC0VYUXYGl7r7M3bcBo4De5c7pDTyZeDwGOM2smn1GFy+GU06B2bOVJEREUiDKOYrGwPIyz4uA4ys7x91LzGw90BD4suxJZjYAGJB4WmxDhxYydGgkQWeYRpS7VjlM12IXXYtddC12Obqm3xhloqioMvAanIO7jwRGAphZvrvn7Xl4mU/XYhddi110LXbRtdjFzPJr+r1RDj0VAYeXed4EWFHZOWa2N7A/8FWEMYmIyG6KMlHMBVqaWXMz+w7QBxhX7pxxwH8nHl8IvOXu36ooREQkPpENPSXmHAYCE4C9gMfcfaGZ3Q7ku/s44P+Ap81sKaGS6JPEW4+MKuYMpGuxi67FLroWu+ha7FLja2H6D7yIiFQlO1p4iIhIZJQoRESkSmmbKCJr/5GBkrgW15rZIjMrMLNJZnZEHHGmQnXXosx5F5qZm1nW3hqZzLUws4sTPxsLzezZVMeYKkn8G2lqZpPN7L3Ev5Nz4ogzamb2mJmtMrPCSo6bmd2XuE4FZtY5qTd297T7Q5j8/jdwJPAdYAHQptw5VwMPJx73AUbHHXeM1+IU4LuJx1fl8rVInNcAmAbMAvLijjvGn4uWwHvAAYnnB8Udd4zXYiRwVeJxG+DjuOOO6Fr8COgMFFZy/BzgdcIathOA2cm8b7pWFNG0/8hM1V4Ld5/s7psTT2cR1qxko2R+LgDuAIYBW1MZXIolcy36A8PdfS2Au69KcYypksy1cOB7icf78+01XVnB3adR9Vq03sBTHswCvm9mh1b3vumaKCpq/9G4snPcvQTY2f4j2yRzLcrqR/gfQzaq9lqYWSfgcHd/NZWBxSCZn4tWQCszm25ms8ysZ8qiS61krsUfgJ+bWREwHhiUmtDSzu7+PgHSdz+KWmv/kQWS/nua2c+BPKB7pBHFp8prYWZ1gHuAX6YqoBgl83OxN2H4qQehynzbzNq6+7qIY0u1ZK5FX+AJd7/bzE4krN9q6+6l0YeXVmr0ezNdKwq1/9glmWuBmZ0O/Bbo5e7FKYot1aq7Fg2AtsAUM/uYMAY7LksntJP9N/Kyu29394+AJYTEkW2SuRb9gOcB3H0msA+hYWCuSer3SXnpmijU/mOXaq9FYrhlBCFJZOs4NFRzLdx9vbs3cvdm7t6MMF/Ty91r3AwtjSXzb+Qlwo0OmFkjwlDUspRGmRrJXItPgdMAzKw1IVGsTmmU6WEc8IvE3U8nAOvdfWV135SWQ08eXfuPjJPktfgLUB94ITGf/6m794ot6IgkeS1yQpLXYgJwppktAnYAN7j7mviijkaS1+I64BEz+zVhqOWX2fgfSzN7jjDU2CgxH3MrUBfA3R8mzM+cAywFNgOXJvW+WXitRESkFqXr0JOIiKQJJQoREamSEoWIiFRJiUJERKqkRCEiIlVSohCphJnN2M3ze5hZtrcOkRykRCFSCXc/Ke4YRNKBEoVIJcxsY+JrDzObYmZjzOxfZvb3nZ2KE/sg/MvM3gHOL/O9+yX2Bpib2AOhd+L1a83sscTjdmZWaGbfjeGvJ5I0JQqR5HQCriHsZXAk0M3M9gEeAc4DfggcUub83xLaynQhtNH4i5ntB/wNaGFmPwEeB64o0yJeJC0pUYgkZ467FyW6jc4HmgHHAB+5+4eJdhDPlDn/TOAmM5sPTCH0Fmqa+P5fAk8DU919eur+CiI1k5a9nkTSUNmOvDvY9W+nsh44Blzg7ksqONYS2AgcVnvhiURHFYVIzf0LaG5mRyWe9y1zbAIwqMxcRqfE1/2BewlbVjY0swtTGK9IjShRiNSQu28FBgCvJSazPylz+A5C186CxEb3dyRevwd40N0/IOyR8GczOyiFYYvsNnWPFRGRKqmiEBGRKilRiIhIlZQoRESkSkoUIiJSJSUKERGpkhKFiIhUSbrOf8cAAAALSURBVIlCRESq9P+Ovbj0JRPShAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for thresh in df_plot.index.tolist():\n", " axes = df_plot.T.reset_index()[11::].plot.scatter(x='index', y=thresh)\n", " #axes = zt.reset_index().plot.scatter(x='x_p', y=0, s=1)\n", " #axes.plot([0, 1], [0, 1], 'red', linewidth=1)\n", " #axes = df_plot.T.reset_index().plot(x='index', y=0.3)\n", " axes.plot([0, 1], [0, 1], 'red', linewidth=1)\n", " #bp = axes.boxplot([[x if x>=0 else -1 for x in top_500_score_auroc_0_9], [x if x>=0 else -1 for x in top_500_score_auroc_0_7], [x if x>=0 else -1 for x in top_500_score_auroc_0_5], [x if x>=0 else -1 for x in top_500_score_auroc_0_4]] , sym='k+')\n", " #axes.set_title('Predicting structure similarity from expression')\n", " #axes.yaxis.grid(True)\n", " #axes.set_xlabel('Co-expression')\n", " #axes.set_ylabel('AUC')\n", " #axes.set_ylim([0.0,1.101])\n", " #plt.setp(bp['fliers'], markersize=3.0)\n", " #0.5\n", " #fig, axes = plt.subplots()\n", " #axes.scatter(x, y)\n", " #axes.plot(x, y)\n", " axes.set_ylim([0,1])\n", " axes.set_xlim([0,1])\n", "\n", " #plt.show()\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 258, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for thresh in df_plot.index.tolist():\n", " axes = df_plot.T.reset_index()[11::].plot.scatter(x='index', y=thresh)\n", " #axes = zt.reset_index().plot.scatter(x='x_p', y=0, s=1)\n", " #axes.plot([0, 1], [0, 1], 'red', linewidth=1)\n", " #axes = df_plot.T.reset_index().plot(x='index', y=0.3)\n", " axes.plot([0, 1], [0, 1], 'red', linewidth=1)\n", " #bp = axes.boxplot([[x if x>=0 else -1 for x in top_500_score_auroc_0_9], [x if x>=0 else -1 for x in top_500_score_auroc_0_7], [x if x>=0 else -1 for x in top_500_score_auroc_0_5], [x if x>=0 else -1 for x in top_500_score_auroc_0_4]] , sym='k+')\n", " #axes.set_title('Predicting structure similarity from expression')\n", " #axes.yaxis.grid(True)\n", " #axes.set_xlabel('Co-expression')\n", " #axes.set_ylabel('AUC')\n", " #axes.set_ylim([0.0,1.101])\n", " #plt.setp(bp['fliers'], markersize=3.0)\n", " #0.5\n", " #fig, axes = plt.subplots()\n", " #axes.scatter(x, y)\n", " #axes.plot(x, y)\n", " axes.set_ylim([0,1])\n", " axes.set_xlim([0,1])\n", "\n", " #plt.show()\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 154, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chrmnum_pairsdist_threshaucpr_curvetrue_postrue_negexp_medianexp_meanexp_var...0.820.830.850.860.880.890.90.910.921.0
0chr1110042.00.603357{0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0....56620.8183310.7099480.077252...NaNNaNNaNNaNNaNNaNNaNNaNNaN0.863074
1chr1110041.00.950000{0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0....48010.7117960.6383670.072380...NaNNaNNaNNaNNaNNaNNaNNaNNaN0.975000
2chr1110041.00.990826{0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0....43610.6809950.6136320.075320...NaNNaNNaNNaNNaNNaNNaNNaNNaN0.995413
3chr1110042.00.964930{0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0....49920.6902130.6306270.070869...NaNNaNNaNNaNNaNNaNNaNNaNNaN0.994990
4chr1110045.00.937400{0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0....62320.7128880.6254890.079132...NaNNaNNaNNaNNaNNaNNaNNaNNaN0.981541
..................................................................
999chr1110042.00.074297{0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0....49810.0614970.1093560.028743...NaNNaNNaNNaNNaNNaNNaNNaNNaN0.537149
1000chr1110046.00.426445{0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0....57120.2645740.2742640.040111...NaNNaNNaNNaNNaNNaNNaNNaNNaN0.834501
1001chr1110046.00.650485{0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0....61810.4809490.4958390.064536...NaNNaNNaNNaNNaNNaNNaNNaNNaN0.825243
1002chr1110046.00.793478{0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0....55230.6846590.6326750.075314...NaNNaNNaNNaNNaNNaNNaNNaNNaN0.987319
1003chr1110046.00.855932{0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0....47210.7455230.6608550.078882...NaNNaNNaNNaNNaNNaNNaNNaNNaN0.927966
\n", "

1004 rows × 66 columns

\n", "
" ], "text/plain": [ " chrm num_pairs dist_thresh auc \\\n", "0 chr11 1004 2.0 0.603357 \n", "1 chr11 1004 1.0 0.950000 \n", "2 chr11 1004 1.0 0.990826 \n", "3 chr11 1004 2.0 0.964930 \n", "4 chr11 1004 5.0 0.937400 \n", "... ... ... ... ... \n", "999 chr11 1004 2.0 0.074297 \n", "1000 chr11 1004 6.0 0.426445 \n", "1001 chr11 1004 6.0 0.650485 \n", "1002 chr11 1004 6.0 0.793478 \n", "1003 chr11 1004 6.0 0.855932 \n", "\n", " pr_curve true_pos true_neg \\\n", "0 {0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0.... 566 2 \n", "1 {0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0.... 480 1 \n", "2 {0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0.... 436 1 \n", "3 {0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0.... 499 2 \n", "4 {0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0.... 623 2 \n", "... ... ... ... \n", "999 {0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0.... 498 1 \n", "1000 {0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0.... 571 2 \n", "1001 {0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0.... 618 1 \n", "1002 {0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0.... 552 3 \n", "1003 {0.0: 1.0, 0.01: 1.0, 0.02: 1.0, 0.03: 1.0, 0.... 472 1 \n", "\n", " exp_median exp_mean exp_var ... 0.82 0.83 0.85 0.86 0.88 0.89 \\\n", "0 0.818331 0.709948 0.077252 ... NaN NaN NaN NaN NaN NaN \n", "1 0.711796 0.638367 0.072380 ... NaN NaN NaN NaN NaN NaN \n", "2 0.680995 0.613632 0.075320 ... NaN NaN NaN NaN NaN NaN \n", "3 0.690213 0.630627 0.070869 ... NaN NaN NaN NaN NaN NaN \n", "4 0.712888 0.625489 0.079132 ... NaN NaN NaN NaN NaN NaN \n", "... ... ... ... ... ... ... ... ... ... ... \n", "999 0.061497 0.109356 0.028743 ... NaN NaN NaN NaN NaN NaN \n", "1000 0.264574 0.274264 0.040111 ... NaN NaN NaN NaN NaN NaN \n", "1001 0.480949 0.495839 0.064536 ... NaN NaN NaN NaN NaN NaN \n", "1002 0.684659 0.632675 0.075314 ... NaN NaN NaN NaN NaN NaN \n", "1003 0.745523 0.660855 0.078882 ... NaN NaN NaN NaN NaN NaN \n", "\n", " 0.9 0.91 0.92 1.0 \n", "0 NaN NaN NaN 0.863074 \n", "1 NaN NaN NaN 0.975000 \n", "2 NaN NaN NaN 0.995413 \n", "3 NaN NaN NaN 0.994990 \n", "4 NaN NaN NaN 0.981541 \n", "... ... ... ... ... \n", "999 NaN NaN NaN 0.537149 \n", "1000 NaN NaN NaN 0.834501 \n", "1001 NaN NaN NaN 0.825243 \n", "1002 NaN NaN NaN 0.987319 \n", "1003 NaN NaN NaN 0.927966 \n", "\n", "[1004 rows x 66 columns]" ] }, "execution_count": 154, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_scores_plot" ] }, { "cell_type": "code", "execution_count": 375, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABI8AAAJNCAYAAAC4BVWHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdf7BfdX3v+9cnydbwI+CRhDSQIKgxQpEGjL96Kie9GMRQkxG4FsQKloRbRy/e4zVOzrTXy7G3vWBs1ThcjwQq+PtYikAlVpFDjg5qJUKgIt0VFJtohB1AJSgQyOf+kcAkcX82JNnfrP1NHo8ZZvZa30/W951MZk947s9a31JrDQAAAAAMZ1zXAwAAAAAwdolHAAAAADSJRwAAAAA0iUcAAAAANIlHAAAAADSJRwAAAAA0Teh6gJ01efLkeuSRR3Y9BgAAAMBe43vf+96GWuuU4V7ru3h05JFHZvXq1V2PAQAAALDXKKX8pPWa29YAAAAAaBKPAAAAAGgSjwAAAABo6rtnHgEAAADsrk2bNmXdunV59NFHux5lj5o4cWKmT5+egYGBZ/1rxCMAAABgn7Nu3bpMmjQpRx55ZEopXY+zR9Ra88ADD2TdunU56qijnvWvc9saAAAAsM959NFHc8ghh+wz4ShJSik55JBDdnq3lXgEAAAA7JP2pXD0lF35PYtHAAAAADSJRwAAAAA7uPDCC/OhD30o73//+/P1r3+9ue6aa67JD37wgxGvdcUVV+RnP/vZ08dHHnlkNmzYMGqzPuXAAw8c9Wsm4hEAAABA0wc+8IG87nWva76+K/Ho2XjiiSd2an0viUcAAAAASf7qr/4qs2bNyute97oMDg4mSc4999xcddVVSZKlS5fmmGOOyXHHHZf3vve9+da3vpXrrrsuS5YsyezZs3PPPff81jWvuuqqrF69OmeffXZmz56d3/zmN0mSj33sYznhhBPyspe9LP/6r/+aZMtup/PPPz8nn3xy3va2t+XJJ5/MkiVL8opXvCLHHXdcPvGJTyRJ1q9fnxNPPDGzZ8/Osccem29+85tPv9+f//mf5/d+7/fy6le/Ovfdd9+o/LmIRwAAAMA+73vf+16+8IUv5LbbbsvVV1+dW265ZbvXH3zwwXzpS1/KnXfemTvuuCN/8Rd/kd///d/PggULsmzZsqxZsyYvetGLfuu6Z5xxRubMmZPPfvazWbNmTfbbb78kyeTJk3PrrbfmHe94Rz70oQ9tN8e1116bz33uc7n88stz8MEH55Zbbsktt9ySFStW5Mc//nE+97nP5fWvf33WrFmT22+/PbNnz06SPPLII3n1q1+d22+/PSeeeGJWrFgxKn824hEAAACwz/vmN7+ZN73pTdl///1z0EEHZcGCBdu9ftBBB2XixIlZtGhRrr766uy///679X6nnXZakuTlL3957r333qfPL1iw4OnA9LWvfS2f+tSnMnv27LzqVa/KAw88kB/+8Id5xStekU9+8pO58MIL8y//8i+ZNGlSkuQ5z3lO/uiP/mjY6+4O8QgAAAAgI3+M/YQJE/Ld7343p59+eq655pqccsopu/Vez33uc5Mk48eP3+75RgcccMDTX9da87GPfSxr1qzJmjVr8uMf/zgnn3xyTjzxxHzjG9/I4Ycfnj/5kz/Jpz71qSTJwMDA07+HHa+7O8QjAAAAYJ934okn5ktf+lJ+85vf5OGHH84//uM/bvf6xo0b88tf/jLz58/PRz7ykaxZsyZJMmnSpDz88MMjXvvZrBnO61//+nz84x/Ppk2bkiT/9m//lkceeSQ/+clPcuihh2bx4sU577zzcuutt+70tXfGhJ5eHQAAAKAPnHDCCfnjP/7jzJ49Oy94wQvy2te+drvXH3744SxcuDCPPvpoaq358Ic/nCQ588wzs3jx4ixfvjxXXXXVsM89Ovfcc/Nnf/Zn2W+//fLtb3/7Wc+0aNGi3HvvvTnhhBNSa82UKVNyzTXXZNWqVVm2bFkGBgZy4IEHPr3zqFdKrbWnbzDa5syZU1evXt31GAAAAEAfu+uuu3L00Ud3PUYnhvu9l1K+V2udM9x6t60BAAAA0OS2NQAAAIBR8M53vjM333zzdufe/e535+1vf3tHE40O8QgAAABgFFxyySVdj9ATblsDAAAAoEk8AgAAAKBJPAIAAACgyTOPAAAAAMagI488MpMmTcr48eMzYcKErF69upM5xCMAAACAEZz7v70z64ceGLXrTZtySK74xLN7uPZNN92UyZMnj9p77wrxCAAAAGAE64ceyO3T543eBdfdMHrX2gM88wgAAABgDCql5OSTT87LX/7yXHrppZ3NYecRAAAAwBh0880357DDDsv999+fefPm5aUvfWlOPPHEPT6HnUcAAAAAY9Bhhx2WJDn00EPzpje9Kd/97nc7mUM8AgAAABhjHnnkkTz88MNPf/21r30txx57bCezuG0NAAAAYIy577778qY3vSlJ8sQTT+Qtb3lLTjnllE5mEY8AAAAARjBtyiGj+glp06Yc8oxrXvjCF+b2228ftffcHeIRAAAAwAiu+MQlXY/QKc88AgAAAKBJPAIAAACgSTwCAAAAoEk8AgAAAKBJPAIAAACgSTwCAAAAGGP+9E//NIceemiOPfbYp889+OCDmTdvXmbOnJl58+bloYce2iOzTNgj7wIAAADQpy54x9vz4Ib1o3a950+eluUf/+SIa84999y8613vytve9ranz1100UU56aSTsnTp0lx00UW56KKLcvHFF4/aXC3iEQAAAMAIHtywPn82Z3DUrvffVj/zmhNPPDH33nvvdueuvfbarFq1KklyzjnnZO7cuXskHrltDQAAAKAP3HfffZk2bVqSZNq0abn//vv3yPuKRwAAAAA0iUcAAAAAfWDq1KlZv37Ls5fWr1+fQw89dI+8b8/iUSnl70op95dSvt94vZRSlpdS7i6l3FFKOaFXswAAAAD0uwULFuTKK69Mklx55ZVZuHDhHnnfXu48uiLJKSO8/oYkM7f+d36Sj/dwFgAAAIC+cdZZZ+U1r3lNBgcHM3369Fx++eVZunRpbrjhhsycOTM33HBDli5dukdm6dmnrdVav1FKOXKEJQuTfKrWWpN8p5TyvFLKtFrr6H32HQAAAMBuev7kac/qE9J25nrP5POf//yw52+88cbRG+RZ6lk8ehYOT7J2m+N1W8+JRwAAAMCYsfzjn+x6hE51GY/KMOfqsAtLOT9bbm3L1KlTs2rVqh6OBQAAAOztDj744Dz88MNdj9GJRx99dKfaSpfxaF2SGdscT0/ys+EW1lovTXJpksyZM6fOnTu358MBAAAAe6+77rorkyZN6nqMTkycODHHH3/8s17fywdmP5Prkrxt66euvTrJLz3vCAAAAGBs6dnOo1LK55PMTTK5lLIuyf+dZCBJaq3/LcnKJPOT3J3k10ne3qtZAAAAANg1vfy0tbOe4fWa5J29en8AAAAAdl+Xt60BAAAAMIy1a9fmD//wD3P00Ufnd3/3d/PRj340SfLggw9m3rx5mTlzZubNm5eHHnqo57N0+cBsAAAAgDHv3Hecn/UbhkbtetMmT8kVH790xDUTJkzI3/zN3+SEE07Iww8/nJe//OWZN29errjiipx00klZunRpLrroolx00UW5+OKLR222YWfp6dUBAAAA+tz6DUO57VWHjd4F/3nYD5vfzrRp0zJt2rQkyaRJk3L00Ufnpz/9aa699tqsWrUqSXLOOedk7ty5PY9HblsDAAAAGMPuvffe3HbbbXnVq16V++677+moNG3atNx///09f3/xCAAAAGCM2rhxY04//fR85CMfyUEHHdTJDOIRAAAAwBi0adOmnH766Tn77LNz2mmnJUmmTp2a9evXJ0nWr1+fQw89tOdziEcAAAAAY0ytNeedd16OPvrovOc973n6/IIFC3LllVcmSa688sosXLiw57N4YDYAAADAGHPzzTfn05/+dF72spdl9uzZSZK//uu/ztKlS/PmN785l19+eY444oj8/d//fc9nEY8AAAAARjBt8pRn9QlpO3W9Z/AHf/AHqbUO+9qNN944arM8G+IRAAAAwAiu+PilXY/QKc88AgAAAKBJPAIAAACgSTwCAAAA9kmtZwrtzXbl9yweAQAAAPuciRMn5oEHHtinAlKtNQ888EAmTpy4U7/OA7MBAACAfc706dOzbt26DA0NdT3KHjVx4sRMnz59p36NeAQAAADscwYGBnLUUUd1PUZfcNsaAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN4hEAAAAATeIRAAAAAE3iEQAAAABN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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "fig, axes = plt.subplots(figsize=(20,10))\n", "#grouped = df_scores.groupby(['threshold'])\n", "\n", "#bp = grouped.boxplot(subplots=False, sym='k+', figsize=(8,10))\n", "#bp = df_scores.boxplot(column=['auc'], by=['chrm', 'dist_thresh'], ax=axes,rot=40, fontsize=8,layout=(2, 1))\n", "sns.boxplot(y='auc', x='chrm', \n", " data=df_scores, \n", " palette=\"colorblind\",\n", " hue='dist_thresh'\n", " )\n", "#bp = axes.boxplot([[x if x>=0 else -1 for x in top_500_score_auroc_0_9], [x if x>=0 else -1 for x in top_500_score_auroc_0_7], [x if x>=0 else -1 for x in top_500_score_auroc_0_5], [x if x>=0 else -1 for x in top_500_score_auroc_0_4]] , sym='k+')\n", "#axes.set_title('Predicting structure similarity from expression')\n", "axes.yaxis.grid(True)\n", "#axes.set_xlabel('Co-expression')\n", "axes.set_ylabel('AUC')\n", "axes.set_ylim([0.0,1.101])\n", "#plt.setp(bp['fliers'], markersize=3.0)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }