{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "72d8be56",
   "metadata": {},
   "source": [
    "# ChIP-seq Data Exploration"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "750b957e",
   "metadata": {},
   "outputs": [],
   "source": [
    "import glob\n",
    "import re\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import pybedtools\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import seaborn as sns\n",
    "from matplotlib_venn import venn2, venn3\n",
    "import pyranges as pr\n",
    "import gseapy as gp\n",
    "import pyBigWig"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4370b8e7",
   "metadata": {},
   "source": [
    "## Reh RNA-seq data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a90688e7",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_3395402/3573898641.py:5: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  ccle_reh_rna_seq['gene_id'] = ccle_reh_rna_seq['gene_id'].str.split('.').str[0]\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Reh</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gene_id</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>ENSG00000000003</th>\n",
       "      <td>0.08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000005</th>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000419</th>\n",
       "      <td>74.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000457</th>\n",
       "      <td>4.10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000460</th>\n",
       "      <td>19.48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSGR0000264819</th>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSGR0000265350</th>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSGR0000265658</th>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSGR0000266731</th>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSGR0000270726</th>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>57820 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                   Reh\n",
       "gene_id               \n",
       "ENSG00000000003   0.08\n",
       "ENSG00000000005   0.00\n",
       "ENSG00000000419  74.75\n",
       "ENSG00000000457   4.10\n",
       "ENSG00000000460  19.48\n",
       "...                ...\n",
       "ENSGR0000264819   0.00\n",
       "ENSGR0000265350   0.00\n",
       "ENSGR0000265658   0.00\n",
       "ENSGR0000266731   0.00\n",
       "ENSGR0000270726   0.00\n",
       "\n",
       "[57820 rows x 1 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ccle_rna_seq = pd.read_csv('/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/CCLE/CCLE_RNAseq_rsem_genes_tpm_20180929.txt.gz', \n",
    "                           sep='\\t')\n",
    "ccle_reh_rna_seq = ccle_rna_seq[['gene_id', 'REH_HAEMATOPOIETIC_AND_LYMPHOID_TISSUE']]\n",
    "ccle_reh_rna_seq.columns = ['gene_id', 'Reh']\n",
    "ccle_reh_rna_seq['gene_id'] = ccle_reh_rna_seq['gene_id'].str.split('.').str[0]\n",
    "ccle_reh_rna_seq = ccle_reh_rna_seq.set_index('gene_id')\n",
    "ccle_reh_rna_seq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "81dfce86",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Reh</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gene_id</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>ENSG00000000003</th>\n",
       "      <td>0.070315</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000005</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000419</th>\n",
       "      <td>67.762360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000457</th>\n",
       "      <td>6.049870</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000460</th>\n",
       "      <td>22.378551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000288677</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000288678</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000288681</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000288684</th>\n",
       "      <td>0.776855</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000288695</th>\n",
       "      <td>0.238463</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>20090 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                       Reh\n",
       "gene_id                   \n",
       "ENSG00000000003   0.070315\n",
       "ENSG00000000005   0.000000\n",
       "ENSG00000000419  67.762360\n",
       "ENSG00000000457   6.049870\n",
       "ENSG00000000460  22.378551\n",
       "...                    ...\n",
       "ENSG00000288677   0.000000\n",
       "ENSG00000288678   0.000000\n",
       "ENSG00000288681   0.000000\n",
       "ENSG00000288684   0.776855\n",
       "ENSG00000288695   0.238463\n",
       "\n",
       "[20090 rows x 1 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hpa_rna_seq = pd.read_csv('/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/HPA/GSE240542_exp_tpm.tsv.gz', sep='\\t')\n",
    "hpa_reh_rna_seq = hpa_rna_seq[['ensg_id', 'P262_196']]\n",
    "hpa_reh_rna_seq.columns = ['gene_id', 'Reh']\n",
    "hpa_reh_rna_seq = hpa_reh_rna_seq.set_index('gene_id')\n",
    "hpa_reh_rna_seq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5c531ad7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Reh_CCLE</th>\n",
       "      <th>Reh_HPA</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gene_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>ENSG00000000003</th>\n",
       "      <td>0.08</td>\n",
       "      <td>0.070315</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000005</th>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000419</th>\n",
       "      <td>74.75</td>\n",
       "      <td>67.762360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000457</th>\n",
       "      <td>4.10</td>\n",
       "      <td>6.049870</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000000460</th>\n",
       "      <td>19.48</td>\n",
       "      <td>22.378551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000273213</th>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000273217</th>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000273238</th>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000273274</th>\n",
       "      <td>0.00</td>\n",
       "      <td>0.112581</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENSG00000273291</th>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>19380 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                 Reh_CCLE    Reh_HPA\n",
       "gene_id                             \n",
       "ENSG00000000003      0.08   0.070315\n",
       "ENSG00000000005      0.00   0.000000\n",
       "ENSG00000000419     74.75  67.762360\n",
       "ENSG00000000457      4.10   6.049870\n",
       "ENSG00000000460     19.48  22.378551\n",
       "...                   ...        ...\n",
       "ENSG00000273213      0.00   0.000000\n",
       "ENSG00000273217      0.00   0.000000\n",
       "ENSG00000273238      0.00   0.000000\n",
       "ENSG00000273274      0.00   0.112581\n",
       "ENSG00000273291      0.00   0.000000\n",
       "\n",
       "[19380 rows x 2 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reh_rna_seq_combined = pd.merge(left=ccle_reh_rna_seq, right=hpa_reh_rna_seq, \n",
    "                                left_index=True, right_index=True, suffixes=('_CCLE', '_HPA'))\n",
    "reh_rna_seq_combined"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "b9cc69e9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Gene expression TPM (Source: HPA)')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(6, 6))\n",
    "plt.scatter(reh_rna_seq_combined['Reh_CCLE'], reh_rna_seq_combined['Reh_HPA'], s=15)\n",
    "plt.xscale('log')\n",
    "plt.yscale('log')\n",
    "plt.title('Reh RNA-seq: CCLE vs HPA', fontsize=15)\n",
    "plt.xlabel('Gene expression TPM (Source: CCLE)', fontsize=14)\n",
    "plt.ylabel('Gene expression TPM (Source: HPA)', fontsize=14)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1ff7e2bd",
   "metadata": {},
   "source": [
    "Create a mapping from Ensembl gene id to gene name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e7191e98",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_3395402/3291424813.py:14: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  gene_gtf['gene_id'] = gene_gtf['attribute'].apply(lambda x: get_gtf_attribute(x, 'gene_id'))\n",
      "/tmp/ipykernel_3395402/3291424813.py:15: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  gene_gtf['gene_id'] = gene_gtf['gene_id'].str.split('.').str[0]\n",
      "/tmp/ipykernel_3395402/3291424813.py:16: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  gene_gtf['gene_name'] = gene_gtf['attribute'].apply(lambda x: get_gtf_attribute(x, 'gene_name'))\n",
      "/tmp/ipykernel_3395402/3291424813.py:17: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  gene_gtf[\"start0\"] = gene_gtf[\"start\"] - 1  # convert GTF 1-based start to 0-based\n",
      "/tmp/ipykernel_3395402/3291424813.py:19: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  gene_gtf[\"tss\"] = np.where(gene_gtf[\"strand\"] == \"+\", gene_gtf[\"start0\"], gene_gtf[\"end\"] - 1)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>chrom</th>\n",
       "      <th>source</th>\n",
       "      <th>feature</th>\n",
       "      <th>start</th>\n",
       "      <th>end</th>\n",
       "      <th>score</th>\n",
       "      <th>strand</th>\n",
       "      <th>frame</th>\n",
       "      <th>attribute</th>\n",
       "      <th>gene_id</th>\n",
       "      <th>gene_name</th>\n",
       "      <th>start0</th>\n",
       "      <th>tss</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>chr1</td>\n",
       "      <td>HAVANA</td>\n",
       "      <td>gene</td>\n",
       "      <td>11121</td>\n",
       "      <td>24894</td>\n",
       "      <td>.</td>\n",
       "      <td>+</td>\n",
       "      <td>.</td>\n",
       "      <td>gene_id \"ENSG00000290825.2\"; gene_type \"lncRNA...</td>\n",
       "      <td>ENSG00000290825</td>\n",
       "      <td>DDX11L16</td>\n",
       "      <td>11120</td>\n",
       "      <td>11120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124</th>\n",
       "      <td>chr1</td>\n",
       "      <td>HAVANA</td>\n",
       "      <td>gene</td>\n",
       "      <td>12010</td>\n",
       "      <td>13670</td>\n",
       "      <td>.</td>\n",
       "      <td>+</td>\n",
       "      <td>.</td>\n",
       "      <td>gene_id \"ENSG00000223972.6\"; gene_type \"transc...</td>\n",
       "      <td>ENSG00000223972</td>\n",
       "      <td>DDX11L1</td>\n",
       "      <td>12009</td>\n",
       "      <td>12009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>132</th>\n",
       "      <td>chr1</td>\n",
       "      <td>HAVANA</td>\n",
       "      <td>gene</td>\n",
       "      <td>14356</td>\n",
       "      <td>30744</td>\n",
       "      <td>.</td>\n",
       "      <td>-</td>\n",
       "      <td>.</td>\n",
       "      <td>gene_id \"ENSG00000310526.1\"; gene_type \"lncRNA...</td>\n",
       "      <td>ENSG00000310526</td>\n",
       "      <td>WASH7P</td>\n",
       "      <td>14355</td>\n",
       "      <td>30743</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2403</th>\n",
       "      <td>chr1</td>\n",
       "      <td>HAVANA</td>\n",
       "      <td>gene</td>\n",
       "      <td>14696</td>\n",
       "      <td>24886</td>\n",
       "      <td>.</td>\n",
       "      <td>-</td>\n",
       "      <td>.</td>\n",
       "      <td>gene_id \"ENSG00000227232.6\"; gene_type \"transc...</td>\n",
       "      <td>ENSG00000227232</td>\n",
       "      <td>WASH7P</td>\n",
       "      <td>14695</td>\n",
       "      <td>24885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2415</th>\n",
       "      <td>chr1</td>\n",
       "      <td>ENSEMBL</td>\n",
       "      <td>gene</td>\n",
       "      <td>17369</td>\n",
       "      <td>17436</td>\n",
       "      <td>.</td>\n",
       "      <td>-</td>\n",
       "      <td>.</td>\n",
       "      <td>gene_id \"ENSG00000278267.1\"; gene_type \"miRNA\"...</td>\n",
       "      <td>ENSG00000278267</td>\n",
       "      <td>MIR6859-1</td>\n",
       "      <td>17368</td>\n",
       "      <td>17435</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4107063</th>\n",
       "      <td>chrM</td>\n",
       "      <td>ENSEMBL</td>\n",
       "      <td>gene</td>\n",
       "      <td>14149</td>\n",
       "      <td>14673</td>\n",
       "      <td>.</td>\n",
       "      <td>-</td>\n",
       "      <td>.</td>\n",
       "      <td>gene_id \"ENSG00000198695.2\"; gene_type \"protei...</td>\n",
       "      <td>ENSG00000198695</td>\n",
       "      <td>MT-ND6</td>\n",
       "      <td>14148</td>\n",
       "      <td>14672</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4107068</th>\n",
       "      <td>chrM</td>\n",
       "      <td>ENSEMBL</td>\n",
       "      <td>gene</td>\n",
       "      <td>14674</td>\n",
       "      <td>14742</td>\n",
       "      <td>.</td>\n",
       "      <td>-</td>\n",
       "      <td>.</td>\n",
       "      <td>gene_id \"ENSG00000210194.1\"; gene_type \"Mt_tRN...</td>\n",
       "      <td>ENSG00000210194</td>\n",
       "      <td>MT-TE</td>\n",
       "      <td>14673</td>\n",
       "      <td>14741</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4107071</th>\n",
       "      <td>chrM</td>\n",
       "      <td>ENSEMBL</td>\n",
       "      <td>gene</td>\n",
       "      <td>14747</td>\n",
       "      <td>15887</td>\n",
       "      <td>.</td>\n",
       "      <td>+</td>\n",
       "      <td>.</td>\n",
       "      <td>gene_id \"ENSG00000198727.2\"; gene_type \"protei...</td>\n",
       "      <td>ENSG00000198727</td>\n",
       "      <td>MT-CYB</td>\n",
       "      <td>14746</td>\n",
       "      <td>14746</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4107076</th>\n",
       "      <td>chrM</td>\n",
       "      <td>ENSEMBL</td>\n",
       "      <td>gene</td>\n",
       "      <td>15888</td>\n",
       "      <td>15953</td>\n",
       "      <td>.</td>\n",
       "      <td>+</td>\n",
       "      <td>.</td>\n",
       "      <td>gene_id \"ENSG00000210195.2\"; gene_type \"Mt_tRN...</td>\n",
       "      <td>ENSG00000210195</td>\n",
       "      <td>MT-TT</td>\n",
       "      <td>15887</td>\n",
       "      <td>15887</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4107079</th>\n",
       "      <td>chrM</td>\n",
       "      <td>ENSEMBL</td>\n",
       "      <td>gene</td>\n",
       "      <td>15956</td>\n",
       "      <td>16023</td>\n",
       "      <td>.</td>\n",
       "      <td>-</td>\n",
       "      <td>.</td>\n",
       "      <td>gene_id \"ENSG00000210196.2\"; gene_type \"Mt_tRN...</td>\n",
       "      <td>ENSG00000210196</td>\n",
       "      <td>MT-TP</td>\n",
       "      <td>15955</td>\n",
       "      <td>16022</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>78686 rows × 13 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        chrom   source feature  start    end score strand frame  \\\n",
       "0        chr1   HAVANA    gene  11121  24894     .      +     .   \n",
       "124      chr1   HAVANA    gene  12010  13670     .      +     .   \n",
       "132      chr1   HAVANA    gene  14356  30744     .      -     .   \n",
       "2403     chr1   HAVANA    gene  14696  24886     .      -     .   \n",
       "2415     chr1  ENSEMBL    gene  17369  17436     .      -     .   \n",
       "...       ...      ...     ...    ...    ...   ...    ...   ...   \n",
       "4107063  chrM  ENSEMBL    gene  14149  14673     .      -     .   \n",
       "4107068  chrM  ENSEMBL    gene  14674  14742     .      -     .   \n",
       "4107071  chrM  ENSEMBL    gene  14747  15887     .      +     .   \n",
       "4107076  chrM  ENSEMBL    gene  15888  15953     .      +     .   \n",
       "4107079  chrM  ENSEMBL    gene  15956  16023     .      -     .   \n",
       "\n",
       "                                                 attribute          gene_id  \\\n",
       "0        gene_id \"ENSG00000290825.2\"; gene_type \"lncRNA...  ENSG00000290825   \n",
       "124      gene_id \"ENSG00000223972.6\"; gene_type \"transc...  ENSG00000223972   \n",
       "132      gene_id \"ENSG00000310526.1\"; gene_type \"lncRNA...  ENSG00000310526   \n",
       "2403     gene_id \"ENSG00000227232.6\"; gene_type \"transc...  ENSG00000227232   \n",
       "2415     gene_id \"ENSG00000278267.1\"; gene_type \"miRNA\"...  ENSG00000278267   \n",
       "...                                                    ...              ...   \n",
       "4107063  gene_id \"ENSG00000198695.2\"; gene_type \"protei...  ENSG00000198695   \n",
       "4107068  gene_id \"ENSG00000210194.1\"; gene_type \"Mt_tRN...  ENSG00000210194   \n",
       "4107071  gene_id \"ENSG00000198727.2\"; gene_type \"protei...  ENSG00000198727   \n",
       "4107076  gene_id \"ENSG00000210195.2\"; gene_type \"Mt_tRN...  ENSG00000210195   \n",
       "4107079  gene_id \"ENSG00000210196.2\"; gene_type \"Mt_tRN...  ENSG00000210196   \n",
       "\n",
       "         gene_name  start0    tss  \n",
       "0         DDX11L16   11120  11120  \n",
       "124        DDX11L1   12009  12009  \n",
       "132         WASH7P   14355  30743  \n",
       "2403        WASH7P   14695  24885  \n",
       "2415     MIR6859-1   17368  17435  \n",
       "...            ...     ...    ...  \n",
       "4107063     MT-ND6   14148  14672  \n",
       "4107068      MT-TE   14673  14741  \n",
       "4107071     MT-CYB   14746  14746  \n",
       "4107076      MT-TT   15887  15887  \n",
       "4107079      MT-TP   15955  16022  \n",
       "\n",
       "[78686 rows x 13 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Read gene_id to gene_name mapping from GENCODE GTF\n",
    "gtf = pd.read_csv('/users/shouvikm/data/Cell_Lines_Ped_Leukemia/gencode.v48.annotation.gtf.gz', \n",
    "                  sep='\\t', comment='#', header=None, \n",
    "                  names=['chrom','source','feature','start','end','score','strand','frame','attribute'])\n",
    "\n",
    "# Filter for rows where the feature is 'gene'\n",
    "gene_gtf = gtf[gtf['feature'] == 'gene']\n",
    "\n",
    "# Extract gene_id and gene_name from the attribute column\n",
    "def get_gtf_attribute(attr_string, key):\n",
    "    match = re.search(f'{key} \"([^\"]+)\"', attr_string)\n",
    "    return match.group(1) if match else None\n",
    "\n",
    "gene_gtf['gene_id'] = gene_gtf['attribute'].apply(lambda x: get_gtf_attribute(x, 'gene_id'))\n",
    "gene_gtf['gene_id'] = gene_gtf['gene_id'].str.split('.').str[0]\n",
    "gene_gtf['gene_name'] = gene_gtf['attribute'].apply(lambda x: get_gtf_attribute(x, 'gene_name'))\n",
    "gene_gtf[\"start0\"] = gene_gtf[\"start\"] - 1  # convert GTF 1-based start to 0-based\n",
    "# Add TSS column: for '+' strand use 0-based start, for '-' strand use 0-based end\n",
    "gene_gtf[\"tss\"] = np.where(gene_gtf[\"strand\"] == \"+\", gene_gtf[\"start0\"], gene_gtf[\"end\"] - 1)\n",
    "\n",
    "gene_gtf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "34a6c011",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "gene_id\n",
       "ENSG00000290825     DDX11L16\n",
       "ENSG00000223972      DDX11L1\n",
       "ENSG00000310526       WASH7P\n",
       "ENSG00000227232       WASH7P\n",
       "ENSG00000278267    MIR6859-1\n",
       "                     ...    \n",
       "ENSG00000198695       MT-ND6\n",
       "ENSG00000210194        MT-TE\n",
       "ENSG00000198727       MT-CYB\n",
       "ENSG00000210195        MT-TT\n",
       "ENSG00000210196        MT-TP\n",
       "Name: gene_name, Length: 78686, dtype: object"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create mapping dictionary: gene_id to gene_name\n",
    "gene_id_to_name = gene_gtf.set_index('gene_id')['gene_name']\n",
    "gene_id_to_name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "2e02691a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Reh RNA-seq TPM</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gene</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>7SK</th>\n",
       "      <td>84.89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A1BG</th>\n",
       "      <td>37.41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A1BG-AS1</th>\n",
       "      <td>10.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A1CF</th>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A2M</th>\n",
       "      <td>0.44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ZYX</th>\n",
       "      <td>37.40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ZZEF1</th>\n",
       "      <td>18.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ZZZ3</th>\n",
       "      <td>24.34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>hsa-mir-1253</th>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>hsa-mir-423</th>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>50351 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              Reh RNA-seq TPM\n",
       "Gene                         \n",
       "7SK                     84.89\n",
       "A1BG                    37.41\n",
       "A1BG-AS1                10.42\n",
       "A1CF                     0.00\n",
       "A2M                      0.44\n",
       "...                       ...\n",
       "ZYX                     37.40\n",
       "ZZEF1                   18.98\n",
       "ZZZ3                    24.34\n",
       "hsa-mir-1253             0.00\n",
       "hsa-mir-423              0.00\n",
       "\n",
       "[50351 rows x 1 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Map the gene names onto ccle_reh_rna_seq\n",
    "ccle_reh_rna_seq['gene_name'] = ccle_reh_rna_seq.index.map(gene_id_to_name)\n",
    "ccle_reh_rna_seq = ccle_reh_rna_seq[~ccle_reh_rna_seq['gene_name'].isnull()]\n",
    "ccle_reh_rna_seq = ccle_reh_rna_seq.set_index('gene_name')\n",
    "ccle_reh_rna_seq.index.name = 'Gene'\n",
    "ccle_reh_rna_seq.columns = ['Reh RNA-seq TPM']\n",
    "\n",
    "# Drop duplicates, keeping only the row with the highest 'Reh RNA-seq TPM' for each duplicated gene\n",
    "ccle_reh_rna_seq = ccle_reh_rna_seq.groupby(ccle_reh_rna_seq.index).max()\n",
    "\n",
    "ccle_reh_rna_seq"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7285647c",
   "metadata": {},
   "source": [
    "## Reh ChIP-seq data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "fa3a8937",
   "metadata": {},
   "outputs": [],
   "source": [
    "dataset_directories = {\n",
    "    'Reh_HPA': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Wray_et_al/Reh_HPA/',\n",
    "    'Reh_PAS': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Wray_et_al/Reh_PAS/',\n",
    "    'Reh_DMSO_HPA': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Wray_et_al/Reh_DMSO_HPA/',\n",
    "    'Nalm6_ETV6-RUNX1_V5_B': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Wray_et_al/Nalm6_ETV6-RUNX1_V5_B/',\n",
    "    'REH_ETV6-RUNX1_rep1': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Jakobczyk_et_al/REH_ETV6-RUNX1_rep1/',\n",
    "    'REH_ETV6-RUNX1_rep2': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Jakobczyk_et_al/REH_ETV6-RUNX1_rep2/',\n",
    "    'Reh_ETV6_Atlas': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Kodgule_et_al/Reh_ETV6_Atlas/',\n",
    "    'Reh_RUNX1_B': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Wray_et_al/Reh_RUNX1_B/',\n",
    "    'Reh_DMSO_RUNX1': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Wray_et_al/Reh_DMSO_RUNX1/',\n",
    "    'Nalm6_RUNX1': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Wray_et_al/Nalm6_RUNX1/',\n",
    "    'REH_RUNX1_rep1': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Jakobczyk_et_al/REH_RUNX1_rep1/',\n",
    "    'REH_RUNX1_rep2': '/users/shouvikm/data/Cell_Lines_Ped_Leukemia/Reh/Jakobczyk_et_al/REH_RUNX1_rep2/',\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4c4675de",
   "metadata": {},
   "source": [
    "Assign each peak to its nearest gene based on TSS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "7a510826",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "join: Strand data from other will be added as strand data to self.\n",
      "If this is undesired use the flag apply_strand_suffix=False.\n",
      "To turn off the warning set apply_strand_suffix to True or False.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Chromosome</th>\n",
       "      <th>Start</th>\n",
       "      <th>End</th>\n",
       "      <th>Start_b</th>\n",
       "      <th>End_b</th>\n",
       "      <th>Strand</th>\n",
       "      <th>Gene</th>\n",
       "      <th>Distance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>chr1</td>\n",
       "      <td>1677957</td>\n",
       "      <td>1677958</td>\n",
       "      <td>1673274</td>\n",
       "      <td>1673275</td>\n",
       "      <td>+</td>\n",
       "      <td>ENSG00000269737</td>\n",
       "      <td>4683</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>chr1</td>\n",
       "      <td>2028323</td>\n",
       "      <td>2028324</td>\n",
       "      <td>2019328</td>\n",
       "      <td>2019329</td>\n",
       "      <td>+</td>\n",
       "      <td>GABRD</td>\n",
       "      <td>8995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>chr1</td>\n",
       "      <td>8427727</td>\n",
       "      <td>8427728</td>\n",
       "      <td>8424644</td>\n",
       "      <td>8424645</td>\n",
       "      <td>+</td>\n",
       "      <td>RERE-AS1</td>\n",
       "      <td>3083</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>chr1</td>\n",
       "      <td>10918447</td>\n",
       "      <td>10918448</td>\n",
       "      <td>10901096</td>\n",
       "      <td>10901097</td>\n",
       "      <td>+</td>\n",
       "      <td>ENSG00000308257</td>\n",
       "      <td>17351</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>chr1</td>\n",
       "      <td>10932358</td>\n",
       "      <td>10932359</td>\n",
       "      <td>10901096</td>\n",
       "      <td>10901097</td>\n",
       "      <td>+</td>\n",
       "      <td>ENSG00000308257</td>\n",
       "      <td>31262</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>816</th>\n",
       "      <td>chrX</td>\n",
       "      <td>20061524</td>\n",
       "      <td>20061525</td>\n",
       "      <td>20017186</td>\n",
       "      <td>20017187</td>\n",
       "      <td>-</td>\n",
       "      <td>MIR23C</td>\n",
       "      <td>44338</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>817</th>\n",
       "      <td>chrX</td>\n",
       "      <td>56772936</td>\n",
       "      <td>56772937</td>\n",
       "      <td>56738787</td>\n",
       "      <td>56738788</td>\n",
       "      <td>-</td>\n",
       "      <td>ENSG00000295420</td>\n",
       "      <td>34149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>818</th>\n",
       "      <td>chrX</td>\n",
       "      <td>56778337</td>\n",
       "      <td>56778338</td>\n",
       "      <td>56738787</td>\n",
       "      <td>56738788</td>\n",
       "      <td>-</td>\n",
       "      <td>ENSG00000295420</td>\n",
       "      <td>39550</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>819</th>\n",
       "      <td>chrX</td>\n",
       "      <td>107674208</td>\n",
       "      <td>107674209</td>\n",
       "      <td>107677059</td>\n",
       "      <td>107677060</td>\n",
       "      <td>-</td>\n",
       "      <td>ENSG00000289923</td>\n",
       "      <td>2851</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>820</th>\n",
       "      <td>chrX</td>\n",
       "      <td>156030508</td>\n",
       "      <td>156030509</td>\n",
       "      <td>156029113</td>\n",
       "      <td>156029114</td>\n",
       "      <td>-</td>\n",
       "      <td>ENSG00000295135</td>\n",
       "      <td>1395</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>821 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Chromosome      Start        End    Start_b      End_b Strand  \\\n",
       "0         chr1    1677957    1677958    1673274    1673275      +   \n",
       "1         chr1    2028323    2028324    2019328    2019329      +   \n",
       "2         chr1    8427727    8427728    8424644    8424645      +   \n",
       "3         chr1   10918447   10918448   10901096   10901097      +   \n",
       "4         chr1   10932358   10932359   10901096   10901097      +   \n",
       "..         ...        ...        ...        ...        ...    ...   \n",
       "816       chrX   20061524   20061525   20017186   20017187      -   \n",
       "817       chrX   56772936   56772937   56738787   56738788      -   \n",
       "818       chrX   56778337   56778338   56738787   56738788      -   \n",
       "819       chrX  107674208  107674209  107677059  107677060      -   \n",
       "820       chrX  156030508  156030509  156029113  156029114      -   \n",
       "\n",
       "                Gene  Distance  \n",
       "0    ENSG00000269737      4683  \n",
       "1              GABRD      8995  \n",
       "2           RERE-AS1      3083  \n",
       "3    ENSG00000308257     17351  \n",
       "4    ENSG00000308257     31262  \n",
       "..               ...       ...  \n",
       "816           MIR23C     44338  \n",
       "817  ENSG00000295420     34149  \n",
       "818  ENSG00000295420     39550  \n",
       "819  ENSG00000289923      2851  \n",
       "820  ENSG00000295135      1395  \n",
       "\n",
       "[821 rows x 8 columns]"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset = 'Reh_HPA'\n",
    "dataset_dir = dataset_directories[dataset]\n",
    "\n",
    "peaks = pybedtools.BedTool(dataset_dir + 'idr_peaks/idr_thresholded_peaks.narrowPeak').to_dataframe()\n",
    "base_cols = [\"Chromosome\", \"Start\", \"End\"]\n",
    "extra_cols = [f\"col{i}\" for i in range(4, peaks.shape[1] + 1)]\n",
    "peaks.columns = base_cols + extra_cols\n",
    "\n",
    "# Peak centers as 1-bp intervals\n",
    "peaks[\"Center\"] = ((peaks[\"Start\"] + peaks[\"End\"]) // 2).astype(int)\n",
    "peak_centers = peaks.copy()\n",
    "peak_centers[\"Start\"] = peak_centers[\"Center\"]\n",
    "peak_centers[\"End\"] = peak_centers[\"Center\"] + 1\n",
    "peak_centers = pr.PyRanges(peak_centers[[\"Chromosome\", \"Start\", \"End\"]])\n",
    "\n",
    "tss = pd.DataFrame({\n",
    "    \"Chromosome\": gene_gtf[\"chrom\"],\n",
    "    \"Start\": gene_gtf[\"tss\"],\n",
    "    \"End\": gene_gtf[\"tss\"] + 1,\n",
    "    \"Strand\": gene_gtf[\"strand\"],\n",
    "    \"Gene\": gene_gtf[\"gene_name\"],\n",
    "})\n",
    "tss = pr.PyRanges(tss)\n",
    "\n",
    "nearest = peak_centers.nearest(tss).as_df()\n",
    "nearest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "fe2fda27",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f6bd2f06150>"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 5))\n",
    "plt.hist(nearest['Distance'], bins=100)\n",
    "plt.axvline(x=2000, color='tab:red', label='2 kb')\n",
    "plt.title('Distribution of distance to nearest gene', fontsize=14)\n",
    "plt.xlabel('Distance (bp from TSS)', fontsize=13)\n",
    "plt.ylabel('Frequency', fontsize=13)\n",
    "plt.legend(fontsize=13)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "87ed2ce0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Chromosome</th>\n",
       "      <th>Start</th>\n",
       "      <th>End</th>\n",
       "      <th>Start_b</th>\n",
       "      <th>End_b</th>\n",
       "      <th>Strand</th>\n",
       "      <th>Gene</th>\n",
       "      <th>Distance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>chr1</td>\n",
       "      <td>31506156</td>\n",
       "      <td>31506157</td>\n",
       "      <td>31506208</td>\n",
       "      <td>31506209</td>\n",
       "      <td>+</td>\n",
       "      <td>LINC01226</td>\n",
       "      <td>52</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>chr1</td>\n",
       "      <td>154999584</td>\n",
       "      <td>154999585</td>\n",
       "      <td>154999408</td>\n",
       "      <td>154999409</td>\n",
       "      <td>+</td>\n",
       "      <td>ENSG00000301940</td>\n",
       "      <td>176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>chr1</td>\n",
       "      <td>182616237</td>\n",
       "      <td>182616238</td>\n",
       "      <td>182615253</td>\n",
       "      <td>182615254</td>\n",
       "      <td>+</td>\n",
       "      <td>LINC01686</td>\n",
       "      <td>984</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>chr1</td>\n",
       "      <td>203626591</td>\n",
       "      <td>203626592</td>\n",
       "      <td>203626831</td>\n",
       "      <td>203626832</td>\n",
       "      <td>+</td>\n",
       "      <td>ATP2B4</td>\n",
       "      <td>240</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>chr1</td>\n",
       "      <td>225999677</td>\n",
       "      <td>225999678</td>\n",
       "      <td>225999460</td>\n",
       "      <td>225999461</td>\n",
       "      <td>+</td>\n",
       "      <td>ENSG00000289341</td>\n",
       "      <td>217</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>798</th>\n",
       "      <td>chr22</td>\n",
       "      <td>21550489</td>\n",
       "      <td>21550490</td>\n",
       "      <td>21551460</td>\n",
       "      <td>21551461</td>\n",
       "      <td>-</td>\n",
       "      <td>RIMBP3C</td>\n",
       "      <td>971</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>799</th>\n",
       "      <td>chr22</td>\n",
       "      <td>23580821</td>\n",
       "      <td>23580822</td>\n",
       "      <td>23580301</td>\n",
       "      <td>23580302</td>\n",
       "      <td>-</td>\n",
       "      <td>IGLL1</td>\n",
       "      <td>520</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>808</th>\n",
       "      <td>chr22</td>\n",
       "      <td>50190726</td>\n",
       "      <td>50190727</td>\n",
       "      <td>50192401</td>\n",
       "      <td>50192402</td>\n",
       "      <td>-</td>\n",
       "      <td>ENSG00000273188</td>\n",
       "      <td>1675</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>812</th>\n",
       "      <td>chrX</td>\n",
       "      <td>52920987</td>\n",
       "      <td>52920988</td>\n",
       "      <td>52919798</td>\n",
       "      <td>52919799</td>\n",
       "      <td>+</td>\n",
       "      <td>ENSG00000286118</td>\n",
       "      <td>1189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>820</th>\n",
       "      <td>chrX</td>\n",
       "      <td>156030508</td>\n",
       "      <td>156030509</td>\n",
       "      <td>156029113</td>\n",
       "      <td>156029114</td>\n",
       "      <td>-</td>\n",
       "      <td>ENSG00000295135</td>\n",
       "      <td>1395</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>302 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Chromosome      Start        End    Start_b      End_b Strand  \\\n",
       "9         chr1   31506156   31506157   31506208   31506209      +   \n",
       "15        chr1  154999584  154999585  154999408  154999409      +   \n",
       "22        chr1  182616237  182616238  182615253  182615254      +   \n",
       "24        chr1  203626591  203626592  203626831  203626832      +   \n",
       "25        chr1  225999677  225999678  225999460  225999461      +   \n",
       "..         ...        ...        ...        ...        ...    ...   \n",
       "798      chr22   21550489   21550490   21551460   21551461      -   \n",
       "799      chr22   23580821   23580822   23580301   23580302      -   \n",
       "808      chr22   50190726   50190727   50192401   50192402      -   \n",
       "812       chrX   52920987   52920988   52919798   52919799      +   \n",
       "820       chrX  156030508  156030509  156029113  156029114      -   \n",
       "\n",
       "                Gene  Distance  \n",
       "9          LINC01226        52  \n",
       "15   ENSG00000301940       176  \n",
       "22         LINC01686       984  \n",
       "24            ATP2B4       240  \n",
       "25   ENSG00000289341       217  \n",
       "..               ...       ...  \n",
       "798          RIMBP3C       971  \n",
       "799            IGLL1       520  \n",
       "808  ENSG00000273188      1675  \n",
       "812  ENSG00000286118      1189  \n",
       "820  ENSG00000295135      1395  \n",
       "\n",
       "[302 rows x 8 columns]"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "distance_threshold = 2000\n",
    "nearest = nearest[nearest['Distance'] <= distance_threshold]\n",
    "nearest"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0f6b84ee",
   "metadata": {},
   "source": [
    "Add a column for the nearest gene's expression in Reh"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "1acabb26",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Chromosome</th>\n",
       "      <th>Start</th>\n",
       "      <th>End</th>\n",
       "      <th>Start_b</th>\n",
       "      <th>End_b</th>\n",
       "      <th>Strand</th>\n",
       "      <th>Gene</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Reh RNA-seq TPM</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>chr1</td>\n",
       "      <td>182616237</td>\n",
       "      <td>182616238</td>\n",
       "      <td>182615253</td>\n",
       "      <td>182615254</td>\n",
       "      <td>+</td>\n",
       "      <td>LINC01686</td>\n",
       "      <td>984</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>chr1</td>\n",
       "      <td>203626591</td>\n",
       "      <td>203626592</td>\n",
       "      <td>203626831</td>\n",
       "      <td>203626832</td>\n",
       "      <td>+</td>\n",
       "      <td>ATP2B4</td>\n",
       "      <td>240</td>\n",
       "      <td>39.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>chr1</td>\n",
       "      <td>1574781</td>\n",
       "      <td>1574782</td>\n",
       "      <td>1574862</td>\n",
       "      <td>1574863</td>\n",
       "      <td>-</td>\n",
       "      <td>SSU72</td>\n",
       "      <td>81</td>\n",
       "      <td>119.96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>chr1</td>\n",
       "      <td>16513659</td>\n",
       "      <td>16513660</td>\n",
       "      <td>16514284</td>\n",
       "      <td>16514285</td>\n",
       "      <td>-</td>\n",
       "      <td>RNU1-1</td>\n",
       "      <td>625</td>\n",
       "      <td>43.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>chr1</td>\n",
       "      <td>16666307</td>\n",
       "      <td>16666308</td>\n",
       "      <td>16666947</td>\n",
       "      <td>16666948</td>\n",
       "      <td>-</td>\n",
       "      <td>RNU1-3</td>\n",
       "      <td>640</td>\n",
       "      <td>43.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>779</th>\n",
       "      <td>chr21</td>\n",
       "      <td>46184573</td>\n",
       "      <td>46184574</td>\n",
       "      <td>46184475</td>\n",
       "      <td>46184476</td>\n",
       "      <td>-</td>\n",
       "      <td>SPATC1L</td>\n",
       "      <td>98</td>\n",
       "      <td>28.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>785</th>\n",
       "      <td>chr22</td>\n",
       "      <td>22410396</td>\n",
       "      <td>22410397</td>\n",
       "      <td>22409765</td>\n",
       "      <td>22409766</td>\n",
       "      <td>+</td>\n",
       "      <td>IGLV1-40</td>\n",
       "      <td>631</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>798</th>\n",
       "      <td>chr22</td>\n",
       "      <td>21550489</td>\n",
       "      <td>21550490</td>\n",
       "      <td>21551460</td>\n",
       "      <td>21551461</td>\n",
       "      <td>-</td>\n",
       "      <td>RIMBP3C</td>\n",
       "      <td>971</td>\n",
       "      <td>0.33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>799</th>\n",
       "      <td>chr22</td>\n",
       "      <td>23580821</td>\n",
       "      <td>23580822</td>\n",
       "      <td>23580301</td>\n",
       "      <td>23580302</td>\n",
       "      <td>-</td>\n",
       "      <td>IGLL1</td>\n",
       "      <td>520</td>\n",
       "      <td>499.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>808</th>\n",
       "      <td>chr22</td>\n",
       "      <td>50190726</td>\n",
       "      <td>50190727</td>\n",
       "      <td>50192401</td>\n",
       "      <td>50192402</td>\n",
       "      <td>-</td>\n",
       "      <td>ENSG00000273188</td>\n",
       "      <td>1675</td>\n",
       "      <td>6.59</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>190 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Chromosome      Start        End    Start_b      End_b Strand  \\\n",
       "22        chr1  182616237  182616238  182615253  182615254      +   \n",
       "24        chr1  203626591  203626592  203626831  203626832      +   \n",
       "28        chr1    1574781    1574782    1574862    1574863      -   \n",
       "33        chr1   16513659   16513660   16514284   16514285      -   \n",
       "34        chr1   16666307   16666308   16666947   16666948      -   \n",
       "..         ...        ...        ...        ...        ...    ...   \n",
       "779      chr21   46184573   46184574   46184475   46184476      -   \n",
       "785      chr22   22410396   22410397   22409765   22409766      +   \n",
       "798      chr22   21550489   21550490   21551460   21551461      -   \n",
       "799      chr22   23580821   23580822   23580301   23580302      -   \n",
       "808      chr22   50190726   50190727   50192401   50192402      -   \n",
       "\n",
       "                Gene  Distance  Reh RNA-seq TPM  \n",
       "22         LINC01686       984             0.00  \n",
       "24            ATP2B4       240            39.94  \n",
       "28             SSU72        81           119.96  \n",
       "33            RNU1-1       625            43.69  \n",
       "34            RNU1-3       640            43.69  \n",
       "..               ...       ...              ...  \n",
       "779          SPATC1L        98            28.16  \n",
       "785         IGLV1-40       631             0.00  \n",
       "798          RIMBP3C       971             0.33  \n",
       "799            IGLL1       520           499.57  \n",
       "808  ENSG00000273188      1675             6.59  \n",
       "\n",
       "[190 rows x 9 columns]"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nearest = pd.merge(nearest, ccle_reh_rna_seq, left_on='Gene', right_index=True)\n",
    "nearest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "e30b6847",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Reh_HPA')"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 5))\n",
    "plt.hist(nearest['Reh RNA-seq TPM'], log=True, bins=20)\n",
    "plt.title(f'{dataset}', fontsize=15)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "3c05e3e0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x691.2 with 12 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fusion_datasets = ['Reh_HPA', 'Reh_PAS', 'Reh_DMSO_HPA', 'Nalm6_ETV6-RUNX1_V5_B', \n",
    "                   'REH_ETV6-RUNX1_rep1', 'REH_ETV6-RUNX1_rep2', 'Reh_ETV6_Atlas']\n",
    "composite_datasets = ['Reh_RUNX1_B', 'Reh_DMSO_RUNX1', 'Nalm6_RUNX1', 'REH_RUNX1_rep1', \n",
    "                      'REH_RUNX1_rep2']\n",
    "distance_threshold = 2000\n",
    "\n",
    "num_datasets = len(dataset_directories)\n",
    "fig, axes = plt.subplots(num_datasets, 1, figsize=(8, 0.8 * num_datasets), sharex=True)\n",
    "\n",
    "index = 0\n",
    "nearest_gene_exp_dfs = []\n",
    "for dataset, dataset_dir in dataset_directories.items():\n",
    "    peaks = pybedtools.BedTool(dataset_dir + 'idr_peaks/idr_thresholded_peaks.narrowPeak').to_dataframe()\n",
    "    base_cols = [\"Chromosome\", \"Start\", \"End\"]\n",
    "    extra_cols = [f\"col{i}\" for i in range(4, peaks.shape[1] + 1)]\n",
    "    peaks.columns = base_cols + extra_cols\n",
    "\n",
    "    # Peak centers as 1-bp intervals\n",
    "    peaks[\"Center\"] = ((peaks[\"Start\"] + peaks[\"End\"]) // 2).astype(int)\n",
    "    peak_centers = peaks.copy()\n",
    "    peak_centers[\"Start\"] = peak_centers[\"Center\"]\n",
    "    peak_centers[\"End\"] = peak_centers[\"Center\"] + 1\n",
    "    peak_centers = pr.PyRanges(peak_centers[[\"Chromosome\", \"Start\", \"End\"]])\n",
    "\n",
    "    tss = pd.DataFrame({\n",
    "        \"Chromosome\": gene_gtf[\"chrom\"],\n",
    "        \"Start\": gene_gtf[\"tss\"],\n",
    "        \"End\": gene_gtf[\"tss\"] + 1,\n",
    "        \"Strand\": gene_gtf[\"strand\"],\n",
    "        \"Gene\": gene_gtf[\"gene_name\"],\n",
    "    })\n",
    "    tss = pr.PyRanges(tss)\n",
    "\n",
    "    nearest = peak_centers.nearest(tss, apply_strand_suffix=False).as_df()\n",
    "    nearest = pd.merge(nearest, ccle_reh_rna_seq, left_on='Gene', right_index=True)\n",
    "    nearest = nearest[nearest['Distance'] <= distance_threshold]\n",
    "    nearest['dataset'] = dataset\n",
    "    nearest['log_TPM'] = np.log1p(nearest['Reh RNA-seq TPM'])\n",
    "    nearest_gene_exp_dfs.append(nearest)\n",
    "\n",
    "    ax = axes[index]\n",
    "    color = 'tab:red' if dataset in fusion_datasets else 'tab:blue'\n",
    "    ax.hist(nearest['log_TPM'], log=True, bins=50, color=color)\n",
    "    ax.set_ylabel(f'{dataset}', rotation=0, fontsize=13, ha='right', labelpad=-10)\n",
    "    # Remove the box around the subplot\n",
    "    for spine in ax.spines.values():\n",
    "        spine.set_visible(False)\n",
    "    # Hide the y-axis ticks\n",
    "    ax.tick_params(axis='y', which='both', left=False, right=False, labelleft=False)\n",
    "    # Hide the x-axis ticks\n",
    "    ax.tick_params(axis='x', which='both', bottom=False, top=False, labelbottom=False)\n",
    "    if index == num_datasets - 1:\n",
    "        ax.set_xlabel('Nearest gene expression (log TPM)', fontsize=13)\n",
    "        # Show x-axis labels only on last subplot\n",
    "        ax.tick_params(axis='x', which='both', bottom=True, top=False, labelbottom=True)\n",
    " \n",
    "    index += 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "22b26440",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
