{ "cells": [ { "cell_type": "markdown", "id": "6e566156-76cf-442c-a893-be947629611d", "metadata": {}, "source": [ "### How To: Evaluate model performance\n", "Author: Jacob Schreiber\n", "\n", "After training a model, the next step is almost always to evaluate model performance on a held-out test set. Likewise, when you have downloaded a model from somewhere else, the first step should be to evaluate the performance of the model on your data to make sure that it is performance in the ways that are most interesting and relevant to you. \n", "\n", "In this notebook, we will explore how to evaluate the performance of a model using the standard performance measures for Chrom/BPNet. I will emphasize that there is usually no single performance measure that is sufficient to evaluate performance or to compare two models and that measures which are basically slightly different equations on the same data (e.g., accuracy vs auROC or MSE vs MAE) are not that helpful. Rather, one should rely on a collection of performance measures that chop up the data in different ways, such as by focusing on differential predictions at important regions or splitting data into highly active and inactive regions.\n", "\n", "In an earlier tutorial, we trained a BPNet model using the Python API to predict CTCF binding. Here, we will demonstrate how one would evaluate such a model without the training step, emulating the procedure for getting a model from somewhere else (e.g. the ENCODE portal) and confirming that it works well." ] }, { "cell_type": "markdown", "id": "61d30346-e44e-449d-a1a4-6f30c628e9d1", "metadata": {}, "source": [ "#### Loading up the evaluation data\n", "\n", "Before even loading the model, you must load your data. Many BPNet performance measures focus on performance within peaks, so we will begin by loading up data there. For each example, we load the input sequence, the bigWigs containing the signal counts, and the bigWigs containing the control counts that are also inputs to these models. Make sure to filter out examples used in the training set chromosomes! Otherwise, you may get a distorted view of accuracy." ] }, { "cell_type": "code", "execution_count": 1, "id": "b0bcaa20-939e-4c50-8030-7ecfb901a60e", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Loading Loci: 100%|███████████████████████████████████████████████████████████████| 4780/4780 [00:00<00:00, 9409.00it/s]\n" ] }, { "data": { "text/plain": [ "(torch.Size([4780, 4, 2114]),\n", " torch.Size([4780, 2, 2114]),\n", " torch.Size([4780, 2, 1000]))" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from tangermeme.io import extract_loci\n", "\n", "peaks = \"ctcf-bpnet/ENCFF199YFA.bed.gz\"\n", "seq = \"/home/jmschrei/common/hg38.fa\"\n", "signals = [\"ctcf-bpnet/ctcf-hepg2.+.bw\", \"ctcf-bpnet/ctcf-hepg2.-.bw\"]\n", "controls = [\"ctcf-bpnet/ctcf-hepg2-control.+.bw\", \"ctcf-bpnet/ctcf-hepg2-control.-.bw\"]\n", "\n", "test_chroms = ['chr8', 'chr20'] # Remember to not include training set chroms!\n", "\n", "X, y, X_ctl = extract_loci(peaks, seq, signals, in_signals=controls, chroms=test_chroms, verbose=True)\n", "X.shape, X_ctl.shape, y.shape" ] }, { "cell_type": "markdown", "id": "0ec872ec-4e7e-46a8-b194-1f66947d27d2", "metadata": {}, "source": [ "Now, we will load up our model and make predictions for those regions. If you are using a model that has been trained using the official TensorFlow repositories, please see the tutorial on how to load models from them. " ] }, { "cell_type": "code", "execution_count": 2, "id": "c0c1f4a9-d9b6-4637-8452-983b3efab1ce", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|████████████████████████████████████████████████████████████████████████████████| 150/150 [00:00<00:00, 327.23it/s]\n" ] }, { "data": { "text/plain": [ "(torch.Size([4780, 2, 1000]), torch.Size([4780, 1]))" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import torch\n", "from tangermeme.predict import predict\n", "\n", "model = torch.load(\"ctcf-bpnet/model.torch\", weights_only=False)\n", "\n", "y_logits, y_log_counts = predict(model, X, args=(X_ctl,), verbose=True)\n", "y_logits.shape, y_log_counts.shape" ] }, { "cell_type": "markdown", "id": "cbf29692-a04d-4b3e-bff6-815423e29845", "metadata": {}, "source": [ "We can start off by visualizing the predictions and the true data. Visualizations are always an important complement to the raw performance measures, because there are sometimes systematic issues that one cannot see from numbers alone but become immediately apparent in even a simple scatterplot." ] }, { "cell_type": "code", "execution_count": 3, "id": "1012bfc2-916a-4899-b160-4369ab532b81", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAGGCAYAAAC0W8IbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAlfRJREFUeJztnXl8E3X+/19Jmh4pV5sWKC1Xr+gKSAEtRRAoWmxpENf1XF3FWxbkWF08EDkXT6xQQVBXxPVAd9WlF1RBRaUFvxyCWnpTKYf04JC20DaZ3x/9zezcmaRpkzbv5+PhQzKZmXwmmc7r835/3oeOYRgGBEEQBEF4JXpPD4AgCIIgCGVIqAmCIAjCiyGhJgiCIAgvhoSaIAiCILwYEmqCIAiC8GJIqAmCIAjCiyGhJgiCIAgvhoSaIAiCILwYEmqCIAiC8GL8PD0AgnCVI0eO4N1338WePXtQU1MDPz8/DBkyBGlpabjllluwc+dOPPXUUw7PExkZiZ07dwIA/u///g/vvfce9u/fjzNnziAgIABxcXGYPn06ZsyYAZPJBABITk7G8ePHZc+3f/9+BAcHq35mbW0tNm3ahG+++QbV1dVobW1FREQErr32Wtx1110YMmSIc19GB7B//358//33uOeee9CrVy+H+69duxaZmZnca6PRiL59+yI5ORmPPfaYpnO0F4vFgtmzZ2POnDkAgE8//RRPPfUUduzYgaioKM3n+eabb3Do0CHuPHySk5Nx9dVX4/nnn3fbuAlCDRJqokvy8ccfY+nSpRg6dCjuv/9+xMbGorW1FT/99BM++ugjHDx4EMuXL8eWLVsEx912222YOnUq7rvvPm6bv78/AGDNmjV4/fXXkZCQgLlz52LQoEFoamrCgQMHkJmZiaNHj+Lpp5/mjhs1ahQWLlwoGVtQUJDq2A8dOoSHH34YDMPgrrvuwsiRI2E0GlFZWYmtW7filltuwQ8//NCer8ctsNd90003OSWyb731Fnr27ImGhgZ888032Lx5Mw4fPoyPPvoIOp2uA0csZdKkSdiyZQv69u3r1HHffPMN3n//fVmhzszMRI8ePdw1RIJwCAk10eU4cOAAlixZgnHjxmHdunWc0ALANddcg5kzZ+Lbb79FaGgoQkNDJceHhYVh5MiRgm15eXl4/fXX8ac//QkrVqwQCMrEiRPxwAMP4ODBg4JjevXqJTmPIy5cuIBZs2YhICAAH330Efr378+9l5iYiNtvvx3btm1z6pzexhVXXMF979dccw3Onj2L//73v9i/fz9Gjx4te0xTU5PDCY4rKN0D7eEPf/iDW89HEI6gNWqiy7FhwwbodDosX75cINIs/v7+mDJlilPnXLduHXr37o1FixbJWn09evTA+PHjXR4zy8cff4yamho88cQTApHmc8MNNwhe79ixA7fddhuuvPJKJCQkYObMmThw4IBgnyeffBLJycmSc61duxYWi0WwzWKxYNmyZfj888+RmpqKK6+8EtOnT8dXX30lOO7FF18EAEyZMgUWiwUWiwV79uxx+pqvvPJKAMCJEycAAHfffTfS09Pxww8/4Pbbb8eVV17JeSouXLiAF154AcnJyRg2bBgmTJiAlStXorGxUXDOCxcuYNGiRUhMTERCQgLuv/9+VFZWSj77008/hcViQXV1tWD7rl27cM8992D06NG48sorkZqaig0bNgBo+y7ff/997rti/2PPkZycjCeffFJwvhMnTuDxxx9HUlIShg0bhtTUVPzzn/+E3W7n9qmurobFYsHbb7+Nd955B8nJyUhISMBtt90mmQQSBB+yqIkuhc1mQ2FhIa644gpERES45ZynT59GSUkJ0tLSnLLqGIZBa2urYJter4derzz//f7772EwGDB58mRNn5GVlYXHH38c48ePxyuvvILm5ma89dZbuPvuu7Fp0yaMGTNG83j5fP311zh8+DAee+wxmEwmvPXWW5g9eza2bduGgQMH4pZbbsG5c+fw3nvvITMzE+Hh4QCA2NhYpz/r119/BQCBZctOVh544AHMnz8fer0eTU1NuOuuu3Dq1Ck88sgjsFgsKC0txZo1a1BSUoJNmzZBp9OBYRjMmjULBw4cwF//+lcMHz4c+/fvx4MPPqhpPJ988gmeffZZXHXVVVi6dCnMZjMqKytRWloKAJg1axYaGxuxfft2wdKJkvu8vr4et99+O1paWjB37lxERkbi66+/xgsvvIBff/0VS5YsEez//vvvIzo6mpucvPbaa3jooYewY8cO9OzZU/P3SvgOJNREl+LMmTNoampyKjDIESdPngQAp8/5zTff4IorrhBse+SRRzB//nzFY06cOIHQ0FAuKE0Nu92OF198EfHx8XjzzTe5CcDEiRNx/fXX4+WXX8ZHH33k1JhZLl26hHfeeYdba73iiiswYcIE5OXl4aGHHkL//v25idDll1/u1Hdjt9vR2tqKxsZGfP311/joo48QEREhmFScPXsWGRkZSEpK4rZt3LgRxcXF+PjjjzF8+HAAQFJSEvr164fHHnsMu3btwsSJE/Htt99iz549eOaZZ/CXv/wFQJuL3Wg04tVXX1UdW0NDA55//nmMGjUKmzdv5rwn/HEMGjQIYWFhAKBpaeOdd97Bb7/9hk8++QQjRowAAEyYMAE2mw0fffQR7rnnHgwdOpTbPzg4GBs2bIDBYADQNgG45ZZbsGvXLkybNs3h5xG+Bwk1QbjI6NGjJVHlzgYtqVFZWYnTp0/jnnvuEVjpwcHBSElJwZYtW1xe201MTBQERIWFhcFsNitGsjvDNddcI3g9atQoLF++HAEBAdy23r17C8QRAL766ivExcXh8ssvF3gqxo8fD51Oh71792LixImc+91qtQqOT09PdyjUBw4cwIULF3DnnXe6LbCtsLAQsbGxnEiz/PGPf8SHH36IwsJCgVBPmjSJE2kAuOyyywDALd890T0hoSa6FCEhIQgKCpKsObYH1nJ09pw9e/bkLD+tDBgwAAUFBWhsbHRoVZ85cwYAOLczn759+8Jut+P8+fMuCXWfPn0k2/z9/XHp0iWnzyVm06ZN6NGjB4xGI/r164eQkBDJPnLXVFdXh6qqKomXgoX9Ps6ePQs/Pz/JeeXOKaa+vh4AFOMDXOHs2bOIjIyUbGcnbWfPnhVsF3/3bJyFO757ontCQk10KQwGA8aOHYtvv/0Wp06dcssDt2/fvoiPj8f333/fYdHHLOPHj8d3332Hr776yqGbkxWimpoayXunT5+GXq/n0qb8/f3R3Nws2Y8Vt87EYrE4jLSWs2ZDQkIQEBCAf/zjH7LHsN9Hnz590NraijNnzgjEWu57EsOO69SpUw731UqfPn0UfyMAshMVgnAGivomuhxsDvKiRYtkxamlpYUrYKKVWbNm4dy5c1ixYgUYhpG839DQgO+++87lMbP86U9/Qnh4OF566SX89ttvsvvk5+cDAIYOHYp+/fohOztbMKbGxkbk5+dj5MiR3KQiKioKdXV1qK2t5fZrbm5u15g729KbNGkSjh07hj59+mD48OGS/9h18sTERABtgXZ8srOzHX5GQkICevbsiY8++kj2d2Zhr/3ixYsOz5mUlISysjL8/PPPgu2ff/45dDodN16CcBWyqIkuR0JCApYsWYKlS5fi5ptvxu233464uDi0trbil19+wccff4y4uDjZdCUlUlNTUVJSgnXr1qGiogJ/+tOfuIInhw4dwkcffYS0tLR2p2j17NkT69atw8MPP4wZM2bgz3/+MxISEmA0GlFVVYWtW7fiyJEjSElJgV6vxxNPPIHHH38cDz/8MG677TY0Nzfj7bffxvnz5/G3v/1NMP41a9Zg/vz5eOCBB3Dp0iW89957sNlsLo81Pj4eAPDuu+/ipptugp+fH4YOHdphxT7uuece5Ofn46677sK9994Li8UCu92OkydP4rvvvsN9992HK6+8EuPHj8dVV12Fl156CU1NTRg2bBj279+P//73vw4/Izg4GAsXLsSiRYtw77334tZbb4XZbMavv/6KI0eOYPHixYJrf/PNN3HttddCr9fDYrHIpgPee++9+Pzzz/Hwww/jsccew4ABA/D111/jgw8+wB133CFYnyYIVyChJrokt956K0aMGIFNmzbhrbfeQk1NDYxGI4YMGYL09HTcddddTp9z7ty5GDduHN577z28+uqrOHv2LFdCdObMmbjtttvcMvYRI0YgKysLmzZtwrZt2/DWW2/BZrMhIiICY8eOxbPPPsvta7VaERQUhI0bN2L+/PkwGAy48sorsXnzZowaNYrbb+DAgXj99dfx6quv4rHHHkN4eDhmzpyJ+vp6QVlPZ0hMTMTDDz+Mzz77DJ988gnsdjs2b97cYRaiyWTC+++/j40bN2LLli2orq5GYGAgIiIiMG7cOG4dWK/XY/369Vi1ahXeeusttLS0YNSoUdi4cSNSU1Mdfs4tt9yCvn374q233sKiRYvAMAwiIyMxY8YMbp/09HTs378fH3zwAV5//XUwDKNYhjQ0NBQfffQRXnnlFbzyyitoaGhAVFQUnnjiCcycOdNt3w/hu+gYNf8PQRAEQRAehdaoCYIgCMKLIaEmCIIgCC+GhJogCIIgvBgSaoIgCILwYkioCYIgCMKLIaEmCIIgCC+GhJogCIIgvBgSahex2+04dOiQoDF8d8MXrhHwjev0hWsEfOM6feEaAd+5Ti2QULsIwzBoaWlRrRfc1fGFawR84zp94RoB37hOX7hGwHeuUwsk1ARBEAThxZBQEwRBEIQXQ0JNEARBEF4MCTVBEARB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9++PhoYG5ObmYu/evXjrrbc8PTS30qNHD8THxwu2mUwm9OnTR7K9q/LCCy9g8uTJiIiIQH19PdavX48LFy50K8sEAO655x7ccccdeOONN5CamopDhw7h448/7lYeIACw2+349NNPMWPGDPj5dc/H2uTJk/HGG29gwIABnOv7nXfewc033+zpobmVb7/9FgzDYOjQofj111/x4osvYujQoQIPn6/RPe/oDqK2thZ///vfcfr0afTs2RMWiwVvvfVWty2U0Z05deoUFixYgLNnzyIkJAQjR47Exx9/3O0szREjRiAzMxOrV6/G66+/jqioKDz99NOYPn26p4fmVnbv3o0TJ050O9His2jRIrz22mtYunQp6urq0LdvX9x2223461//6umhuZXff/8dq1evxqlTp9CnTx+kpKRg/vz5MBqNnh6ax9Ax3dVvQhAEQRDdAMqjJgiCIAgvhoSaIAiCILwYEmqCIAiC8GJIqAmCIAjCiyGhJgiCIAgvhoSaIAiCILwYEmqCIAiC8GJIqAmCIAjCiyGhJggNJCcnY9OmTZ4ehtvobtdDEN0ZEmrCpzl58iSefvppjB8/HsOGDcPkyZOxYsUKnDlzxtND8yhr167FjTfe2OmfyzAMtmzZgltuuQUJCQkYM2YM/vjHP2LTpk1oamrq1LE8+eSTmDVrVqd+JkHIQbW+CZ/l2LFjuO222zBkyBCsXr0aUVFRKC0txUsvvYRvv/0WW7ZsQZ8+fTwyNpvNBp1OB73et+bSTzzxBL744gs8+uijePbZZxEaGoojR47g3XffRVRUFK677jpPD5EgOh3fegoQBI+lS5fCaDTin//8J66++moMGDAAEydOxDvvvIPffvsNr776qmD/hoYG/O1vf0NCQgLGjx+P9957T/D+2rVrMWnSJAwbNgzjx4/HihUruPeam5vx4osvYsKECRg5ciRuueUW7Nmzh3v/008/xZgxY/DVV18hLS0Nw4cPx8cff4zhw4fj/Pnzgs9ZsWIF7rrrLu71/v378ec//xkjRozAxIkTsWLFCjQ2NnLv19XV4ZFHHsGIESOQnJyMrVu3tvu7Ky4uxl/+8heMGDECiYmJePbZZ9HQ0MC939raihUrVmDMmDFITEzESy+9hIULF6paqLm5ucjKysIrr7zCjZcV582bNyMxMRFAW6eszMxMXHvttRg2bBhuvPFG7Nq1izvPnj17YLFYBN9bUVERLBYLqqurAfzv+/7222+RmpqKhIQE3H///Th9+jSAtt/ys88+w44dO2CxWGCxWLBnzx40Nzdj2bJlGD9+PIYPH47k5GRs2LCh3d8nQahBQk34JGfPnsV3332HO++8E4GBgYL3wsPDYbVakZeXJ+j1+/bbb8NiseDTTz/Fww8/jFWrVuH7778HAGzbtg2bNm3C0qVLkZ+fj3Xr1glagj711FPYv38/Xn31VWzduhU33HADHnjgARw9epTb5+LFi9iwYQNWrFiB7OxsTJ8+Hb169cL27du5fWw2G/Ly8mC1WgG0Ceb999+P66+/Hlu3bsWrr76Kffv2Yfny5dwxTz75JI4fP453330Xa9aswQcffIC6ujqXv7umpiY88MAD6N27N/79738jIyMDu3fvFnzmm2++iaysLKxatQoffPABLly4gC+//FL1vFlZWRg6dKis1azT6dCzZ08AwObNm/HOO+9g4cKF2Lp1K8aPH49Zs2YJvkstXLx4Ef/85z/x4osv4l//+hdOnjyJF154AQBw3333ITU1FRMmTMB3332H7777DgkJCXjvvfewc+dOZGRkYNu2bXjxxRe7Xcc1wvsgoSZ8kqqqKjAMg5iYGNn3Y2JicO7cOdTX13PbRo0ahYceeghDhw7F3XffjalTp3IBWSdPnkRYWBjGjRuHAQMGYMSIEbj11lsBAL/++itycnLw2muvYcyYMRg0aBDuv/9+jB49Gp9++il3/paWFixZsgSjRo1CdHQ0TCYTUlNTkZ2dze1TUFCAc+fO4YYbbgDQNnmwWq249957MWTIEIwaNQrPPPMMPv/8c1y6dAmVlZXYtWsXVqxYgYSEBAwbNgwrV67ExYsXXf7usrKycOnSJbzwwguIj49HUlISFi9ejP/+97+ora0FAPzrX//CQw89hOuvvx4xMTFYvHgxevXqpXreqqoqDB061OHnv/3223jwwQcxbdo0REdH44knnsBll12Gd99916nraGlpwdKlSzF8+HBcccUV+POf/4zCwkIAQHBwMAIDA+Hv74/w8HCEh4fD398fJ0+exODBgzF69GhERkZizJgxSE9Pd+pzCcJZaI2aIGRgLWmdTsdtGzlypGCfkSNHcuJwww034N1338V1112HCRMmYOLEiZg8eTL8/Pzw888/g2EYTlxZmpubBWvg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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "import seaborn; seaborn.set_style('whitegrid')\n", "\n", "y_log = torch.log2(y[:, 0].sum(dim=-1) + 1)\n", "\n", "plt.figure(figsize=(5, 4))\n", "plt.scatter(y_log, y_log_counts[:, 0], c='0.4', s=5)\n", "plt.title(\"CTCF Count Prediction\")\n", "plt.xlabel(\"Observed Log Counts\")\n", "plt.ylabel(\"Predicted Log Counts\")\n", "\n", "seaborn.despine(bottom=True, left=True)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "1a89b709-05fa-4d9a-9eba-4414be6d7cbf", "metadata": {}, "source": [ "We can also take a look at the profile predictions and compare them to the raw read counts for a region to make sure that the positioning of the predicted peaks as well as the offset between the positive and negative strand look right." ] }, { "cell_type": "code", "execution_count": 4, "id": "478cbedc-8f54-4c57-a85e-e33a759aa0c3", "metadata": {}, "outputs": [ { "data": { "image/png": "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iIiIiIiIiIjCE1FBqb60ZMkSAMCNN96omF5eXo6rrrqqP6pERERERERERDRoRFRQatq0aV0OcL569eqQl7Vv376+qBIREREREREREfVARAWlbr75ZsXfbrcbu3fvxtq1a3Hrrbf2U62IiIiIiIiIiChcER2UEr333nvYuXPnSa4NERERERERERH1VM+fB3sKOffcc7Fy5cr+rgYREREREREREYVoQASl/vOf/yAhIaG/q0FERERERERERCGKqO57M2fOVAx0LggCGhsb0dzcjMcee6wfa0ZEREREREREROGIqKDU9OnTFX+rVCokJSXhjDPOQFFRUT/VioiIiIiIiIiIwhVRQam77rqrv6tARERERERERER9IKKCUgDg8XiwatUqVFRUQKVSYejQoZg2bRo0Gk1/V42IiIiIiIiIiEIUUUGpo0ePYu7cuairq8OQIUMgCAIWLlyIjIwMLFq0CHl5ef1dRSIiIiIiIiIiCkFEPX3vqaeeQm5uLr755hssX74cK1aswNdff42cnBw89dRT/V09IiIiIiIiIiIKUUQFpTZv3owHHngACQkJ0rTExETcf//92Lx5c/9VjIiIiIiIiIiIwhJRQSm9Xo+Ojg6/6R0dHdDpdP1QIyIiIiIiIiIi6omICkqdd955mDdvHn766ScIggBBELBt2zb86U9/wrRp0/q7ekREREREREREFKKIGuj8kUcewe9//3v8/Oc/h1bbWXWPx4Np06bh4Ycf7ufaERERERERERFRqCIqKBUXF4e///3vOHr0KCoqKiAIAoYOHYr8/Pz+rhoREREREREREYUhYoJSFosFUVFRUKvVyM/PlwJRXq8XFosFMTEx/VxDIiIiIiIiIiIKVUSMKfXVV1/h6quvhsPh8HvP4XDg6quvxpo1a/qhZkRERERERERE1BMREZRasmQJfvWrX8FkMvm9ZzKZMGfOHLz33nv9UDMiIiIiIiIiIuqJiAhK7d+/H2eccUbQ9ydMmIB9+/adxBoREREREREREVFvRERQymw2w+12B33f7XbDbDafxBoREREREREREVFvRERQKjs7Gzt37gz6/o4dO5CVlXUSa0RERERERERERL0REUGpCy+8EC+88AIaGxv93mtoaMCLL76Iiy66qB9qRkREREREREREPaHt7wqEYs6cOVi9ejUuvPBCXHHFFRgyZAhUKhUq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U7dgn3uoy+nqN0RX122hHOu92e89WZ/ve+HUvSfLDUcobepUOiZPhIiKqsyfPx979+7FO++8A4PBIE2fOHEivvjii36sGRERERERERERhSOiMqVWr16N559/HmPHjlVMHzp0aNcpwwF0dHQo5qmqqsKePXsQHx+PrKysvqguEREREREREREFEVFBqebmZiQnJ/tNt9ls0mDNodq5cyduuukm6e/y8nIAwJVXXolnnnmmdxUlIiIiIiIiIqIuRVRQatSoUfjmm29w4403KqYvXbrUL3uqO2eeeab0ZCMiIiIiIiIiIjq5Iioode+99+JXv/oVDh48CI/Hg3feeQcHDx7Etm3b8O677/Z39YiIiIiIiIiIKEQRNdD5aaedhiVLlsButyMvLw/r1q1DcnIyPvjgA5SVlfV39YiIiIiIiIiIKEQRlSkFAKWlpXj22Wf7uxpERERERERERNQLEZUpdeONN+Kjjz5Ce3t7f1eFiIiIiIiIiIh6IaKCUqWlpXjxxRcxefJk/OY3v8GqVavgdDr7u1pERERERERERBSmiApKPfLII/j222/xyiuvIDo6Gr///e9x9tln49FHH8WmTZv6u3pERERERERERBSiiApKAYBarcbZZ5+NZ555BuvXr8fjjz+O7du34+abb+7vqhERERERERERUYgibqBzUUNDAz7//HN88skn2LdvH0aNGtXfVSIiIiIiIiIiohBFVFDKYrFg5cqV+Oyzz7Bp0ybk5ORgxowZeP7555Gfn9/f1SMiIiIiIiIiohBFVFBq0qRJiIuLwyWXXIJ77rkHo0eP7u8qERERERERERFRD0RMUEoQBDz88MO44oorYDKZ+rs6RERERERERETUCxEz0LkgCHjyySdRV1fX31UhIiIiIiIiIqJeipiglFqtRn5+PlpbW/u7KkRERERERERE1EsRE5QCgAceeAB/+ctfsH///v6uChERERERERER9ULEjCkFdAalbDYbfvazn0Gn08FoNCre37RpUz/VjIiIiIiIiIiIwhFRQak//vGP/V0FIiIiIiIiIiLqAxEVlLryyiv7uwpERERERERERNQHImpMKQCorKzE888/j3vvvRdNTU0AgG+//RYHDhzo55oREREREREREVGoIiootWnTJsyYMQPbt2/Hl19+CavVCgDYt28fXn755X6uHRERERERERERhSqiglLz58/H3XffjcWLF0On00nTzzzzTGzdurUfa0ZEREREREREROGIqKDU/v37MX36dL/pSUlJaG1tPfkVIiIiIiIiIiKiHomooFRsbCwaGhr8pu/Zswfp6en9UCMiIiIiIiIiIuqJiApKXX755fjrX/+KhoYGqFQqeL1ebNmyBc8++yxmzpzZ39UjIiIiIiIiIqIQRVRQ6p577kFmZibOPfdcWK1WXHbZZfjFL36BcePG4Y477ujv6hERERERERERUYi0/V2BcOh0Ommw8127dsHr9WLEiBEoKCjo76oREREREREREVEYIiooJcrNzUVubi48Hg/279+PtrY2xMfH93e1iIiIiIiIiIgoRBHVfe/pp5/GRx99BADweDz4xS9+gSuvvBLnnXceNm7c2M+1IyIiIiIiIiKiUEVUUGrlypUYNmwYAODrr7/GsWPH8O9//xs33XQTnn/++X6uHRERERERERERhSqiglItLS1ITU0FAPz3v//FJZdcgiFDhuCaa67B/v37+7l2REREREREREQUqogKSqWkpODgwYPweDz47rvvMGnSJACA3W6HRqPp59oREREREREREVGoImqg86uuugp33303UlNToVKpMHnyZADATz/9hMLCwn6uHRERERERERERhSqiglK/+c1vUFxcjNraWlx88cXQ6/UAAI1Ggzlz5vRz7YiIiIiIiIiIKFQRFZQCgIsvvthv2pVXXtkPNSEiIiIiIiIiop6KqDGlAGDDhg247bbbMH36dFxwwQW47bbbsH79+h4t67333sO0adMwatQoXHXVVfjhhx/6uLZERERERERERBRIRAWl/vGPf+BXv/oVoqOjcdNNN+HGG29ETEwM5s6di3/84x9hLeuLL75AeXk57rjjDqxYsQLjx4/HnDlzUF1dfYJqT0REREREREREoojqvrdw4UI89NBD+MUvfqGYftppp+Hvf/+73/SuLF68GFdffTWuvfZaAMDDDz+MtWvXYsmSJbjvvvtCWobX64UgCKFvwCmqqakJ7e3tqKmpkaZVV1d3+URDt9sdUtmuyrW2tiI2NhYAUFtbC7vd3uv19WTZfcm3nu3t7YiOjlZM66snRYa6ja2trYo6NDU1SfPJ9cV+ClSnUOsZ7mfckzoBCPvzEAQB7e3tOHr0KFQqVcD6AoDRaAxpuYG203cfdVdPsXx32yJfblNTU8C6iseDfFkA0NjY6Fd38Zj2PX7kn6vv/g5Evq7o6GgIghB0GYH2jW99xWWEWyen0wmPxwOPx6OY7jvN6/X6vd/Va4/HE3CeQOvyFWo5IqJTSaBzRjDy6xDxu1p+bpSfo3qiurpacU4Qz48tLS3StOjo6IDr7u4933NtsGuX7uYTdXf+D3YuDrQs33UGKy/fD4HW0921UXfXdaFe94nXVwAU5+hA8/fVNaJ8OcE+5768Bu0LvambfN5A7S6c+aOjoxXXksGO91CP9XB+I4SyrO7KAAg4T29/YwZbbjiCbY/4XRDp14ShHLMqIYKiKuPGjcOKFSuQn5+vmH7kyBFceeWV2Lp1a0jLcTqdGDt2LF588UVccMEF0vSnnnoKe/fuDTvrioiIiIiIiIiIwhNR3femTZuGr776ym/66tWrMXXq1JCX09LSAo/Hg+TkZMX0lJQUNDQ09LqeRERERERERETUtVO++94777wjvS4qKsKrr76KTZs2YezYsQCAn376CT/++CNmz54d9rLlXXGAzjRS32lERERERERERNT3Tvmg1FtvvaX4Oy4uDgcPHsTBgwelabGxsfj4449x5513hrTMxMREaDQav37aTU1NSElJ6XWdiYiIiIiIiIioa6d8UGrNmjV9vky9Xo+RI0di3bp1ijGl1q9fj/PPP7/P10dEREREREREREqnfFAqkObmZqhUKiQmJvZ4GbNnz8aDDz6IsrIyjBs3Dh9++CFqamowa9asPqwpEREREREREREFEjFBKbPZjOeffx5ffPEFzGYzgM6ufJdddhnuvvtuxMXFhbW8Sy+9FC0tLXjllVdQX1+PkpISLFq0CNnZ2Sei+kREREREREREJKMSBEHo70p0p7W1FT//+c9RX1+PGTNmoLCwEABQUVGBzz77DBkZGfjggw8QHx/fzzUlIiIiIiIiIqJQRERQ6umnn8b333+PxYsX+w1E3tDQgFtuuQUTJ07EH//4x36qIRERERERERERhUPd3xUIxerVq/Hggw8GfDJeamoqHnjgAaxataofakZERERERERERD0REUGp+vp6FBcXB32/pKQEDQ0NJ7FGRERERERERETUGxERlEpMTERVVVXQ96uqqpCQkHDyKkRERERERERERL0SEUGpc845By+88AKcTqffe06nEy+++CLOOeecfqhZ5Hvvvfcwbdo0jBo1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OhWvvvoqsrKypO57ixcvxtVXXw2A7YMGl46ODlRWVkp/V1VVYc+ePYiPj0dWVlaftIWioiKcc845eOSRR6Tz0KOPPoqpU6eisLDw5G90D6kEdtAd1N577z288cYbqK+vR0lJCR566CFMmDChv6tFdMKUlpYGnF5eXo6rrroKQGc21YIFC/Dhhx+ira0NY8aMwbx58xQ/1h0OB/7yl7/gs88+g91ux8SJE/HYY48hMzPzpGwH0cly4403YtiwYXj44YcBsH0Qff311/jb3/6GI0eOICcnB7Nnz8Z1110nvc82QoOVxWLBiy++iFWrVqGpqQlpaWm47LLL8Otf/xp6vR4A2wcNHhs3bsRNN93kN/3KK6/EM88802dtobW1FU899RTWrFkDAJg2bRrmzZuHuLi4E7+RfYRBKSIiIiIiIiIiOuk4phQREREREREREZ10DEoREREREREREdFJx6AUERERERERERGddAxKERERERERERHRScegFBERERERERERnXQMShERERERERER0UnHoBQREREREREREZ10DEoREREREREREdFJx6AUERERERERERGddAxKERERERERERHRScegFBERERERERERnXQ9CkpVVlbi+eefx7333oumpiYAwLfffosDBw70aeWIiIiIiIiIiGhgCjsotWnTJsyYMQPbt2/Hl19+CavVCgDYt28fXn755T6vIBERERERERERDTxhB6Xmz5+Pu+++G4sXL4ZOp5Omn3nmmdi6dWufVo6IiIiIiIiIiAamsINS+/fvx/Tp0/2mJyUlobW1tS/qREREREREREREA1zYQanY2Fg0NDT4Td+zZw/S09P7pFJERERERERERDSwhR2Uuvzyy/HXv/4VDQ0NUKlU8Hq92LJlC5599lnMnDnzBFSRiIiIiIiIiIgGGpUgCEI4M7hcLvzhD3/AF198AUEQoNVq4fF4cPnll+OZZ56BRqM5UXUlIiIiIiIiIqIBIuyglKiyshK7d++G1+vFiBEjUFBQ0KMKvPfee3jjjTfQ0NCA4uJi/PGPf8Tpp58etPymTZvwzDPP4MCBA0hLS8OvfvUrXH/99dL7Bw4cwEsvvYRdu3bh+PHjeOihh/DLX/6y1+slIiIiIiIiIqK+E3b3PVFeXh4uvvhiXHrppT0OSH3xxRcoLy/HHXfcgRUrVmD8+PGYM2cOqqur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5ctx3nnn4bLLLsO6devwpz/96QRWjYiIiIiIiIiIBiptqAW/+uorPP3007jssssAAFdccQWuv/56eDyeQTEiPBERERERERER9Z2QM6Vqa2tx+umnS3+PHj0aGo0G9fX1J6RiREREREREREQ0cIUclPJ4PNDpdIppGo0Gbre7zytFREREREREREQDW8hP3xs2bBjOPfdc6PV6adrXX3+Ns846CyaTSZq2YMGCvq8lERERERERERENKCGPKXXllVf6Tbviiiv6tDJERERERERERDQ4hJwpRQPTe++9hzfeeAMNDQ0oLi7GH//4R8XYYUQDzcKFC/Hll1/i0KFDMBqNGDduHO6//34UFhZKZQRBwIIFC/Dhhx/CbDZjzJgxmDdvHoqLi6UyTqcTzz77LD777DM4HA6cddZZ+NOf/oSMjIz+2CyiE2LhwoX429/+hptuugkPP/wwALYPorq6Ojz33HP47rvvYLfbUVBQgKeffhplZWUA2EZo8HK73Xj55Zfx6aeforGxEampqbjyyitx5513Qq3uHDWG7YMGk82bN+ONN97Azp070dDQgP/3//4fpk+fLr3fV+2hra0NTz31FNasWQMAmDZtGh599FHExcWdvI3thZDHlKKB54svvkB5eTnuuOMOrFixAuPHj8ecOXNQXV3d31UjOmE2bdqEG264AUuXLsXixYvh8Xhw6623wmq1SmVee+01LF68GPPmzcOyZcuQkpKC2bNnw2KxSGWefvppfPXVV3j++efx/vvvw2q14rbbboPH4+mPzSLqc9u3b8eHH36I0tJSxXS2DxrM2tracP3110On0+G1117D559/jj/84Q+KC3+2ERqsXnvtNXzwwQeYN28evvjiCzzwwAN444038O677yrKsH3QYGG1WlFaWop58+YFfL+v2sN9992HvXv34vXXX8frr7+OvXv34sEHHzzh29dnBBq0rrnmGmHevHmKaRdffLHw17/+tZ9qRHTyNTU1CSUlJcKmTZsEQRAEr9crTJ48WVi4cKFUxuFwCOPHjxeWLFkiCIIgmM1mYeTIkcLnn38ulamtrRWGDRsmfPvttyd3A4hOAIvFIlx44YXCunXrhF/84hfCU089JQgC2wfRc889J1x//fVB32cbocFs7ty5wkMPPaSYdtdddwn333+/IAhsHzS4lZSUCF999ZX0d1+1h4MHDwol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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "idx = 0\n", "\n", "y_profile = torch.softmax(y_logits[idx], dim=-1)\n", "\n", "plt.figure(figsize=(12, 3))\n", "plt.subplot(211)\n", "plt.bar(range(1000), y[idx, 0], edgecolor='0.5')\n", "plt.bar(range(1000), y[idx, 1], edgecolor='0.8')\n", "plt.ylabel(\"Observed Counts\")\n", "seaborn.despine(bottom=True, left=True)\n", "\n", "plt.subplot(212)\n", "plt.plot(y_profile[0], color='0.5')\n", "plt.plot(y_profile[1], color='0.8')\n", "plt.xlabel(\"Genomic Position\")\n", "plt.ylabel(\"Predicted Profile\")\n", "seaborn.despine(bottom=True, left=True)\n", "\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "7f0a9026-3f54-4efa-a38a-85960b1d340f", "metadata": {}, "source": [ "#### Calculating all the performance measures\n", "\n", "Now that we have the predictions across all peaks and the true readouts for those regions, and have verified that nothing seems to be systematically wrong with the predictions (such as not predicting peaks at all, predicting entirely NaNs or on a completely different scale, etc..), we can calculate the set of performance measures usually used for the BPNet models. This includes several measures of performance on the profile predictions, which are returned on a per-example basis, and several measures of performance on the log count predictions measured across the entire dataset.\n", "\n", "To make it easy to calculate these measures, bpnet-lite has a built-in `calculate_performance_measures` method that takes in a set of predicted logit, log counts, and the true signal, and returns each of the measures as a dictionary." ] }, { "cell_type": "code", "execution_count": 5, "id": "1f3b9307-3408-479a-8105-28034f3cee48", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'profile_mnll': tensor([[581.3618, 550.1101],\n", " [473.1202, 466.9050],\n", " [593.5938, 614.1980],\n", " ...,\n", " [221.7323, 231.9723],\n", " [ 73.2827, 60.0348],\n", " [114.7720, 127.7667]]),\n", " 'profile_jsd': tensor([[0.1123, 0.1003],\n", " [0.0901, 0.0802],\n", " [0.1060, 0.1074],\n", " ...,\n", " [0.3881, 0.4212],\n", " [0.5916, 0.6067],\n", " [0.6082, 0.6006]]),\n", " 'profile_pearson': tensor([[0.8207, 0.8545],\n", " [0.8675, 0.8939],\n", " [0.8439, 0.8280],\n", " ...,\n", " [0.4721, 0.4487],\n", " [0.1961, 0.1671],\n", " [0.1180, 0.1142]]),\n", " 'profile_spearman': tensor([[ 0.3892, 0.3287],\n", " [ 0.4911, 0.3688],\n", " [ 0.4207, 0.4164],\n", " ...,\n", " [ 0.5006, 0.3842],\n", " [ 0.0123, -0.3916],\n", " [ 0.0594, -0.3487]]),\n", " 'count_pearson': tensor([0.8117]),\n", " 'count_spearman': tensor([0.8103]),\n", " 'count_mse': tensor([0.2029])}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from bpnetlite.performance import calculate_performance_measures\n", "\n", "calculate_performance_measures(y_logits, y, y_log_counts)" ] }, { "cell_type": "markdown", "id": "d052a9d5-0f01-44eb-983d-b78111fc873d", "metadata": {}, "source": [ "There are several arguments that can be passed in to change the exact way that these measures are calculated. In the original BPNet paper, the *true* profiles are smoothed using a Gaussian filter with a sigma of 7 and a kernel width of 81. Those parameters can be passed in, and we can turn them on with the `smooth_true` argument." ] }, { "cell_type": "code", "execution_count": 6, "id": "fc6d773a-6fc2-40fc-8612-2c2d4c20d80e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'profile_mnll': tensor([[581.3618, 550.1101],\n", " [473.1202, 466.9050],\n", " [593.5938, 614.1980],\n", " ...,\n", " [221.7323, 231.9723],\n", " [ 73.2827, 60.0348],\n", " [114.7720, 127.7667]]),\n", " 'profile_jsd': tensor([[0.0274, 0.0212],\n", " [0.0227, 0.0200],\n", " [0.0240, 0.0288],\n", " ...,\n", " [0.0719, 0.0806],\n", " [0.2072, 0.2333],\n", " [0.1962, 0.1585]]),\n", " 'profile_pearson': tensor([[0.9106, 0.9406],\n", " [0.9468, 0.9632],\n", " [0.9403, 0.9258],\n", " ...,\n", " [0.8998, 0.8988],\n", " [0.6141, 0.6231],\n", " [0.4796, 0.5026]]),\n", " 'profile_spearman': tensor([[0.8479, 0.8306],\n", " [0.8738, 0.7210],\n", " [0.8369, 0.8068],\n", " ...,\n", " [0.6850, 0.5676],\n", " [0.4384, 0.3346],\n", " [0.4329, 0.6163]]),\n", " 'count_pearson': tensor([0.8117]),\n", " 'count_spearman': tensor([0.8103]),\n", " 'count_mse': tensor([0.2029])}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "calculate_performance_measures(y_logits, y, y_log_counts, smooth_true=True)" ] }, { "cell_type": "markdown", "id": "69291421-58f6-44e3-9364-2eb4e7aed878", "metadata": {}, "source": [ "My personal opinion is that one should never smooth the true profile, but it is implemented in case you want to more closely match other repositories.\n", "\n", "By default, the count performances are a single value across the entire dataset even when there are multiple strands, whereas the profile measures are " ] }, { "cell_type": "markdown", "id": "1dcb61bd-bcf7-4c62-9f75-4f7dd79fbb9b", "metadata": {}, "source": [ "The count performance measures as a single number across the entire dataset, whereas the profile measures are calculated per example.\n", "\n", "By default, the profile performance measures are calculated on a per-strand basis. This does not matter for chromatin accessibility models but does matter for those trained on ChIP-seq, ProCAP, or any other experiment that yields stranded signal. If you want to calculate a single value across both strands you can concatenate the two strands together before calculating the performance measures like this:" ] }, { "cell_type": "code", "execution_count": 7, "id": "817735b8-f69c-4ba8-a9b6-f88bd489d104", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'profile_mnll': tensor([[1152.3413],\n", " [ 948.8486],\n", " [1217.2588],\n", " ...,\n", " [ 456.4731],\n", " [ 135.7911],\n", " [ 244.7999]]),\n", " 'profile_jsd': tensor([[0.1097],\n", " [0.0861],\n", " [0.1079],\n", " ...,\n", " [0.4047],\n", " [0.5996],\n", " [0.6042]]),\n", " 'profile_pearson': tensor([[0.8205],\n", " [0.8762],\n", " [0.8286],\n", " ...,\n", " [0.4590],\n", " [0.1776],\n", " [0.1164]]),\n", " 'profile_spearman': tensor([[ 0.6425],\n", " [ 0.6233],\n", " [ 0.6160],\n", " ...,\n", " [-0.1630],\n", " [ 0.1808],\n", " [ 0.0409]]),\n", " 'count_pearson': tensor([0.8117]),\n", " 'count_spearman': tensor([0.8103]),\n", " 'count_mse': tensor([0.2029])}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "calculate_performance_measures(\n", " y_logits.reshape(y_logits.shape[0], -1).unsqueeze(1), \n", " y.reshape(y.shape[0], -1).unsqueeze(1),\n", " y_log_counts\n", ")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.13.5" } }, "nbformat": 4, "nbformat_minor": 5 }