{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from __future__ import print_function\n",
    "import keras\n",
    "from keras.models import Sequential, Model, load_model\n",
    "from keras import backend as K\n",
    "\n",
    "import tensorflow as tf\n",
    "\n",
    "import isolearn.keras as iso\n",
    "\n",
    "import os\n",
    "import pandas as pd\n",
    "\n",
    "import numpy as np\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.cm as cm\n",
    "\n",
    "from aparent.predictor import *\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /home/jlinder2/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Colocations handled automatically by placer.\n",
      "WARNING:tensorflow:From /home/jlinder2/anaconda3/envs/tensorflow/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jlinder2/anaconda3/envs/tensorflow/lib/python3.6/site-packages/keras/engine/saving.py:292: UserWarning: No training configuration found in save file: the model was *not* compiled. Compile it manually.\n",
      "  warnings.warn('No training configuration found in save file: '\n"
     ]
    }
   ],
   "source": [
    "#Load base APARENT model and input encoder\n",
    "\n",
    "aparent_model = load_model('../saved_models/aparent_large_lessdropout_all_libs_no_sampleweights.h5')\n",
    "aparent_encoder = get_aparent_encoder(lib_bias=4)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "len(seq) = 1610\n"
     ]
    }
   ],
   "source": [
    "#Example: pA sites from APADB (gene = PSMC6) and some non-pA repeat sequence inbetween\n",
    "\n",
    "#Proximal and Distal PAS Sequences\n",
    "seq_prox = 'AGATAGTGGTATAAGAAAGCATTTCTTATGACTTATTTTGTATCATTTGTTTTCCTCATCTAAAAAGTTGAATAAAATCTGTTTGATTCAGTTCTCCTACATATATATTCTTGTCTTTTCTGAGTATATTTACTGTGGTCCTTTAGGTTCTTTAGCAAGTAAACTATTTGATAACCCAGATGGATTGTGGATTTTTGAATATTAT'\n",
    "seq_dist = 'TGGATTGTGGATTTTTGAATATTATTTTAAAATAGTACACATACTTAATGTTCATAAGATCATCTTCTTAAATAAAACATGGATGTGTGGGTATGTCTGTACTCCTCCTTTCAGAAAGTGTTTACATATTCTTCATCTACTGTGATTAAGCTCATTGTTGGTTAATTGAAAATATACATGCACATCCATAACTTTTTAAAGAGTA'\n",
    "\n",
    "seq = (seq_prox + 'GATTGTGGATTTTTGAGTATTATTTTATTATTGTTCGCAT' * 30 + seq_dist)\n",
    "\n",
    "print(\"len(seq) = \" + str(len(seq)))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Peak positions = [91, 177, 1497]\n",
      "PolyA profile shape = (1610,)\n"
     ]
    }
   ],
   "source": [
    "#Step 1: Detect peaks by scanning APARENT across the sequence (strided).\n",
    "\n",
    "peak_ixs, polya_profile = find_polya_peaks(\n",
    "    aparent_model,\n",
    "    aparent_encoder,\n",
    "    seq,\n",
    "    sequence_stride=5,\n",
    "    conv_smoothing=True,\n",
    "    peak_min_height=0.01,\n",
    "    peak_min_distance=50,\n",
    "    peak_prominence=(0.01, None)\n",
    ")\n",
    "\n",
    "print(\"Peak positions = \" + str(peak_ixs))\n",
    "print(\"PolyA profile shape = \" + str(polya_profile.shape))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Peak PAS scores (log odds) = [2.413, 0.965, 1.688]\n"
     ]
    }
   ],
   "source": [
    "#Step 2: Score the pA signals at the peak intensity positions across the sequence.\n",
    "\n",
    "peak_iso_scores = score_polya_peaks(\n",
    "    aparent_model,\n",
    "    aparent_encoder,\n",
    "    seq,\n",
    "    peak_ixs,\n",
    "    sequence_stride=1,\n",
    "    strided_agg_mode='max',\n",
    "    iso_scoring_mode='both',\n",
    "    score_unit='log'\n",
    ")\n",
    "\n",
    "print(\"Peak PAS scores (log odds) = \" + str(peak_iso_scores))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x216 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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Z9/skG6Jmzpj93CTJjp26mft+/GwRo4erakfTtGQQQNzq2835Pz582r9SAuVLFVSG7Zs1dvvvqt33n5LE995J0/7BSBDZGSkVqxYodmzZ2vPnj1q3ry5mjZtqp9//lmSlJSUpAYNGmjChAl53FMA+cnatWvVs2dPbdq0STExMXJzc1PTpk117ty5f9z3ypUr6tixoxo1apSpLDk5WSVKlNDgwYMVEhKS5f7FixfX8OHDtWXLFn3//fd69tln9dxzz+nrr7++6XHlOmNMti9J5lJqWpavzl26mJatWjlte/a554yvr6/j/a7v95hHWrY03t7exsfHxzzVoYM5dupnR/n6zVtMk6ZNTfHixU2hQoVM/QahZs36DU5tSjKfzp/veD9m3OumePHiZt3GTVn2a+L775tChQqZcxcSHdtGjhptSvv5mYspqZnqZ3wEAP4NFy9eNK6urmbx4sVO24ODg82wYcOctv3yyy9GklmzZk2mdiSZjz76yLRr184UKFDAVKhQwURHRzuV//X14IMP3orh/CPmF+DWuXDhgnFxcTFffvnlP9bt27ev6dq1q5k5c6YpWLBgtvUeffRRExERcU3Hv//++83gwYOvtbu56s+5Jcvslqv32Nm9vJSSkiIp49Rms8YPqeq91bR+8xYtW7FSSYmJate2rdLTM9bVS7xwQU937qxv1q7T+s1bVKPmfXo8rLUSEhKyDKCDBw7UlA/e18qYNaqbTareumWLQh94QF5eXo5tTZs3V9zp0zpx/HhuDhfAdUpNTVVaWprsdrvTdi8vL23YsOG62ho9erQee+wx7d69Wx06dFC3bt104sQJSdK2bdskScuXL1dcXJwWLVqUOwMAkG9cuHBB6enpKlq0aI71li1bpqVLl+q9997LleMaY7R69WodPHgwyzOAeS3HX564Htu3bdNnc+fqoYcfliRN+/BDVa9xn8a+8YajzvRZs+XnU0I7d+xQnbp1HXWvemfie1qyaJFWrViu8E6dHdvT0tL0QuRz2rxpk2LWfSv/gIBs+3EmPl5lypZ12layVMaPZ8THxyugQoWbHSqAG1SoUCHVr19fr732mqpVqyZfX1/NnTtXmzdvVlBQ0HW19cwzz6hz54x5YsyYMZo4caLWr18vf39/+fj4SMq4fOLr65vr4wCQ96KiolSzZk3Vr18/2zpxcXHq3r27Fi1a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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Finally plot the predicted pA profile, annotate the peaks and plot the predicted PAS scores.\n",
    "\n",
    "f, ax = plt.subplots(1, 2, figsize=(12, 3), gridspec_kw={'width_ratios': [2, 1]})\n",
    "\n",
    "ax[0].plot(np.arange(len(seq)), polya_profile, linewidth=2, color='orange')\n",
    "\n",
    "for pos in peak_ixs :\n",
    "    ax[0].axvline(x=pos, ymin=0, linewidth=2, color='darkblue', linestyle='--')\n",
    "\n",
    "plt.sca(ax[0])\n",
    "\n",
    "plt.title(\"pA Cleavage Profile\", fontsize=16)\n",
    "\n",
    "#plt.xticks(fontsize=14)\n",
    "peak_names = [str(i) for i in np.arange(len(peak_iso_scores), dtype=np.int)]\n",
    "\n",
    "plt.xticks(peak_ixs, peak_names, fontsize=14)\n",
    "\n",
    "plt.yticks(fontsize=14)\n",
    "\n",
    "plt.xlabel(\"Sequence Position\", fontsize=14)\n",
    "plt.ylabel(\"pA Magnitude\", fontsize=14)\n",
    "\n",
    "ax[1].bar(np.arange(len(peak_iso_scores)), peak_iso_scores, color='deepskyblue', edgecolor='black', linewidth=2)\n",
    "\n",
    "plt.sca(ax[1])\n",
    "\n",
    "plt.title(\"PAS Scores\", fontsize=16)\n",
    "\n",
    "peak_names = [\"Peak \" + str(i) for i in np.arange(len(peak_iso_scores), dtype=np.int)]\n",
    "\n",
    "plt.xticks(np.arange(len(peak_iso_scores)), peak_names, fontsize=14)\n",
    "plt.yticks(fontsize=14)\n",
    "\n",
    "plt.xlabel(\"Detected Peaks\", fontsize=14)\n",
    "plt.ylabel(\"PAS Score\", fontsize=14)\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "peak_rows = []\n",
    "peak_info = []\n",
    "for peak_i, peak_ix in enumerate(peak_ixs) :\n",
    "    peak_rows.append(\"Peak \" + str(peak_i))\n",
    "    peak_info.append([\n",
    "        str(peak_ix) + \"nt\",\n",
    "        peak_iso_scores[peak_i]\n",
    "    ])\n",
    "\n",
    "f = plt.figure(figsize=(6, 4))\n",
    "\n",
    "colors = plt.cm.BuPu(np.linspace(0, 0.5, len(peak_rows)))\n",
    "table = plt.table(cellText=peak_info, rowLabels=peak_rows, rowColours=colors, colLabels=[\"Location\", \"PAS Score\"], loc='center')\n",
    "\n",
    "table.set_fontsize(14)\n",
    "table.scale(1.5, 1.5)\n",
    "\n",
    "plt.axis('tight')\n",
    "plt.axis('off')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:tensorflow]",
   "language": "python",
   "name": "conda-env-tensorflow-py"
  },
  "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.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}