diff --git "a/notebooks_tutorials/03b_genome_annotation_decoding.ipynb" "b/notebooks_tutorials/03b_genome_annotation_decoding.ipynb" new file mode 100644--- /dev/null +++ "b/notebooks_tutorials/03b_genome_annotation_decoding.ipynb" @@ -0,0 +1,1203 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "15c8d2aa", + "metadata": {}, + "source": [ + "# ๐Ÿงฉ Genome annotation with NTv3: from per-base predictions to gene models\n", + "\n", + "NTv3's annotation models (`InstaDeepAI/NTv3_annot_{mammals,plants,insects}`) predict, for every\n", + "base of a genome and on each strand, one of **15 gene-structure states**. A genome annotation is\n", + "not a list of per-base labels, though: it is a set of **gene models** (a GFF3 file), each a\n", + "chain of exons that starts with a start codon, ends with a stop codon and keeps its reading frame\n", + "across every splice site. This notebook shows how we get from one to the other, on 1.6 Mb of the\n", + "*Medicago truncatula* genome, a species held out from training:\n", + "\n", + "1. what the 15 states are and which transitions between them are legal;\n", + "2. what the raw predictions look like, and why taking the most likely state at each base is not\n", + " enough;\n", + "3. the **hidden Markov model (HMM) decoder** that turns them into valid gene models, and the\n", + " **sequence constraints** that tie its splice sites and codons to the actual DNA;\n", + "4. two things about the input: soft-masking, and the window's context margins;\n", + "5. writing the GFF3.\n", + "\n", + "Every step is scored against the reference annotation, so each improvement is a number, not only\n", + "a picture.\n", + "\n", + "> โš ๏ธ **What differs from our pipeline.** This notebook runs in PyTorch with a small NumPy/Numba\n", + "> decoder; the released annotations were produced by our JAX pipeline. The decoder here omits the\n", + "> pipeline's rare U12 (AT-AC) intron lane, and IUPAC codes other than N are read as ``\n", + "> rather than N. Section 6 checks that this leaves the score on the demo region unchanged.\n", + "\n", + "**Hardware.** CPU only: the notebook reads the released model's predictions on a demo region,\n", + "computed in advance." + ] + }, + { + "cell_type": "markdown", + "id": "651888c5", + "metadata": {}, + "source": [ + "# 0. ๐Ÿ“ฆ Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2e64114", + "metadata": {}, + "outputs": [], + "source": [ + "!pip -q install pyfaidx biopython numba ipywidgets" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e71e4dc9", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:42:32.633274Z", + "iopub.status.busy": "2026-10-02T16:42:32.632954Z", + "iopub.status.idle": "2026-10-02T16:42:32.730970Z", + "shell.execute_reply": "2026-10-02T16:42:32.730329Z" + } + }, + "outputs": [], + "source": [ + "# The NTv3 models are gated: request access once on any model page, then log in.\n", + "from huggingface_hub import get_token, notebook_login\n", + "\n", + "if get_token() is None:\n", + " notebook_login()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "23f2c9c4", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:42:32.732829Z", + "iopub.status.busy": "2026-10-02T16:42:32.732592Z", + "iopub.status.idle": "2026-10-02T16:42:35.923005Z", + "shell.execute_reply": "2026-10-02T16:42:35.922396Z" + } + }, + "outputs": [], + "source": [ + "import importlib.util\n", + "import json\n", + "import sys\n", + "from pathlib import Path\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from huggingface_hub import hf_hub_download\n", + "\n", + "# The model, decoding and scoring code lives in a few small modules next to this notebook in\n", + "# the Space; fetch them unless they are already importable.\n", + "SPACE_REPO, SPACE_REVISION = \"InstaDeepAI/ntv3\", \"main\"\n", + "MODULES = (\"__init__\", \"analysis\", \"benchmark\", \"data\", \"decoding\", \"evaluation\", \"inference\",\n", + " \"model\", \"plotting\")\n", + "if importlib.util.find_spec(\"genome_annotation\") is None:\n", + " for name in MODULES:\n", + " hf_hub_download(\n", + " SPACE_REPO,\n", + " f\"src/genome_annotation/{name}.py\",\n", + " repo_type=\"space\",\n", + " revision=SPACE_REVISION,\n", + " local_dir=\".\",\n", + " )\n", + " sys.path.insert(0, \"src\")\n", + "\n", + "from genome_annotation import ( # noqa: E402\n", + " analysis, data, decoding, evaluation, inference, plotting,\n", + ")\n", + "from genome_annotation.benchmark import DATASET_REPO, TEST_SPECIES # noqa: E402\n", + "\n", + "pd.set_option(\"display.precision\", 2)" + ] + }, + { + "cell_type": "markdown", + "id": "59ca30bd", + "metadata": {}, + "source": [ + "# 1. ๐Ÿงฌ The 15 states\n", + "\n", + "Each base of each strand is in one of these states:\n", + "\n", + "| state | meaning |\n", + "|---|---|\n", + "| `intergenic` | outside any gene |\n", + "| `CDS_p0`, `CDS_p1`, `CDS_p2` | coding exon, at codon position 0, 1 or 2 |\n", + "| `intron_p0`, `intron_p1`, `intron_p2` | intron, remembering the codon position it interrupted |\n", + "| `splice_donor_p*`, `splice_acceptor_p*` | the last exon base before an intron / the first one after it, per codon position |\n", + "| `start_codon`, `stop_codon` | the A of the ATG that opens a gene / the last base of the stop codon that closes it |\n", + "\n", + "The phases are what keep the reading frame: an intron entered at codon position 1 must leave at\n", + "codon position 2. The HMM encodes this as a transition matrix in which most transitions are\n", + "**forbidden** (probability 0). Its allowed probabilities set the expected lengths: about 10 kb\n", + "between genes, 4.5 kb per intron and 200 bp per exon." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "86715f45", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:42:35.925040Z", + "iopub.status.busy": "2026-10-02T16:42:35.924823Z", + "iopub.status.idle": "2026-10-02T16:42:36.078000Z", + "shell.execute_reply": "2026-10-02T16:42:36.077488Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqkAAAJUCAYAAAA2Kr8AAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAnIRJREFUeJzs3Xt8z/X///Hbextvx82cz61RTjsZOSxzXOi0FHIKK4wUicIip2QVJeVT+IgRoZD6IHJaoZHTGENGy5Co2SGHzeb9+8N371/Lxg7vww73a5fX5eP9Ojwez9d79dnD8/V8Pl8Gk8lkQkRERESkAHGwdwNERERERP5NRaqIiIiIFDgqUkVERESkwFGRKiIiIiIFjopUERERESlwVKSKiIiISIGjIlVEREREChwVqSIiIiJS4KhIFREREZECR0WqiIiIiBQ4KlJFREREirD//Oc/uLm5UapUKVq2bMnPP/9s7ybliIpUERERkSJq1apVjB49msmTJ3Pw4EG8vb3p0qULly5dsnfT7slgMplM9m6EiIiIiFhey5Yteeihh5g7dy4At27dok6dOowYMYLx48fbuXV352TvBoiIiIgUNTdu3CA1NdXicU0mEwaDIdM+o9GI0Wi849zU1FQOHDhASEiIeZ+DgwMBAQFERERYvG2WpiJVRERExIJu3LhB6fKVIO2axWOXK1eOv//+O9O+yZMnM2XKlDvO/fPPP0lPT6datWqZ9lerVo0TJ05YvG2WpiJVRERExIJSU1Mh7RrGxgPBsaTlAqen8nf0EuLi4nB2djbvzqoXtShQkSoiIiJiDU6lMFiwSDUZbs93d3Z2zlSkZqdy5co4Ojryxx9/ZNr/xx9/UL16dYu1y1o0u19ERESkCCpZsiTNmjVj27Zt5n23bt1i27ZttG7d2o4tyxn1pIqIiIhYgwH41ySnfMfLpdGjRzNw4ECaN29OixYt+PDDD7l69SrPP/+85dplJSpSRURERKzB4HB7s2S8XOrVqxeXL19m0qRJXLx4ER8fHzZt2nTHZKqCSOukioiIiFhQUlISLi4uGH1exOBouUlNpvQUUiI/JTExMUdjUgs79aRKvty6dYsLFy5Qvnz5O9ZtExERKShMJhPJycnUrFkTBwcbTckxGCz8uL94/Z5VkSr5cuHCBerUqWPvZoiIiORIXFwctWvXtnczJAdUpEq+lC9fHoCSjQdadJmNu7m0a5ZN8oiIFCdH4pJtms+rTnmb5ktKSqJOnTrm31s2UQDGpBZmKlIlXzIe8RscS9qsSC0O43BERGytXHnbPkp2drZtkZpBQ9MKDxWpIiIiItagMan5oiJVRERExCos/Li/mL2DqXjdrYiIiIgUCupJFREREbEGPe7PF/WkioiIiEiBo55UEREREWvQElT5UrzuVkREREQKBRWp+eTj40Ny8r0XQA4LC+PEiRM2aFHO5bTtIiIikgcZY1ItuRUjetyfT5GRkTk6LywsjAoVKtCwYcNcxb916xaAVd4znNO2i4iISB7ocX++FK+7tQKDwUBCQgIAbm5uTJo0idatW3P//fczffp0ABYuXMj+/ft59dVX8fHxYePGjQDMmjWLFi1a4OvrS9euXfntt98AmDJlCt27d6dLly54eHjw+++/M3/+fB588EF8fX156623Mr0xY9++fXTs2JHmzZvTtGlTvvrqKwBiY2OpUKECkydPplmzZtSvX9+c+99tP378OF26dMHLywsvLy/mzZtn7a9OREREJFvqSbWwhIQEIiIi+PPPP6lXrx7PP/88gwcPZtmyZYwaNYpu3boB8MUXX3Dy5EkiIiJwdHTk888/Z/jw4WzYsAGAiIgIDh06RLVq1Th69ChTpkzh0KFDVK9encmTJ2fKFxwczMaNG6lRowZ//vknvr6++Pn5AZCYmIiXlxdTp05l06ZNvPLKKzz22GOZ2pyWlsZTTz3F1KlT6dOnDwB//vlnlveXkpJCSkqK+XNSUpLFvjsREZEiRUtQ5YuKVAvr27cvAJUrV8bd3Z1ff/2VWrVq3XHeunXr2LdvH82aNQMgPT090/HHHnuMatWqAbB9+3a6du1K9erVARgyZAjTpk0D4KeffuLMmTM8+uijma4/efIk7u7ulCpVimeeeQaA1q1bc/r06TvacvLkSW7cuGEuUDPan5XQ0FCmTp167y9CREREJB9UpFpYqVKlzH92dHQkLS0ty/NMJhMhISEEBwdnebxcuXLZ5vjno36TyUSTJk346aef7jgvNjYWo9FoPt/R0fGOYji3QkJCGD16tPlzUlISderUyVdMERGRIkljUvOleN2tHTk7O5OYmGj+3K1bN+bNm0d8fDwAN2/e5NChQ1le26FDBzZv3sylS5cA+Oyzz8zH/Pz8+PXXX9m6dat5X2RkJKmpqTluW4MGDShTpgwrVqww78vucb/RaMTZ2TnTJiIiIlkwGP5/oWqRrXg97leRaiPBwcHMmDHDPHGqX79+BAUF0aFDB7y9vfHx8WH79u1ZXuvp6cnEiRN5+OGH8fX15caNG7i4uADg6urKhg0bmDFjBt7e3jRu3Jjx48ebVwXICScnJ7755hsWL16Mp6cn3t7erFmzxiL3LSIiIpIXBpPJZLJ3I+TekpOTKV++PABz5sxh06ZNfPfdd3Zu1e3H/S4uLhg9h2BwLGmTnNcPzbVJHhGR4iTyrG3XzfapW96m+TJ+XyUmJlr9KaD5d2ObNzA4lbr3BTlkSrtByq4ZNrmHgkBjUguJ8ePHs3v3bm7evEnNmjWZP3++vZskIiIiYjUqUguJ//znP/ZugoiIiOSGJk7lS/G6WxEREREpFNSTKiIiImINWsw/X1SkioiIiFiDHvfnS/G6WxEREREpFNSTKiIiImINetyfL+pJFREREZECRz2pIiIiItagMan5oiJVLOLSrlk2e/tF6aYv2yTPP+ktV1JY/HAy3uY52zWoaPOcYnm2fgOUyL2oSBURERGxBo1JzRcVqSIiIiLWoMf9+VK87lZERERECgX1pIqIiIhYgx7354t6UkVERESkwFFPqoiIiIhVWHhMajHrW1SRKiIiImINetyfL8WrJBcRERGRQkE9qSIiIiLWYDBYeAkq9aSKiIiIiNiVelJFRERErEGL+edL8bpbG/Dx8SE5Ofme54WFhXHixAkbtChnpk+fTr169ahXrx4TJkywd3NERESkmFORamGRkZGUL1/+nufdq0hNT0+3ZLPu6scff2TFihUcOXKE6OhoNm/ezIYNG2yWX0REpEjKmN1vya0YUZFqYQaDgYSEBADc3NyYNGkSrVu35v7772f69OkALFy4kP379/Pqq6/i4+PDxo0bCQsLo0OHDnTv3h1PT09+/vlnNm/ejK+vL15eXrRr147o6GgAwsPD8fDwYPjw4Xh7e9OkSRP2799/13ZNmTKF7t2707FjRxo2bMiTTz7JX3/9BcCqVavo378/ZcuWxWg08sILL7BixYos46SkpJCUlJRpExERkSxkPO635FaMFK+7tYOEhAQiIiLYt28fM2fO5Pz58wwePJjmzZsze/ZsIiMjeeyxxwDYu3cvM2bMICoqinr16tG3b1+WLFnCkSNHCA4OpkePHphMJgBOnDjBwIEDOXz4MCNGjMjRI/qdO3fyxRdfcOLECerUqUNISAgAZ8+e5b777jOf5+bmxtmzZ7OMERoaiouLi3mrU6dOfr8iERERkTuoSLWyvn37AlC5cmXc3d359ddfsz3Xz8+PBg0aALcLVk9PTzw9PQHo168fFy5c4Pz58wDUr1+fli1bAtC6dWtOnz59z7Y8/vjjVK9eHYDg4GC2bt2a6/sJCQkhMTHRvMXFxeU6hoiISLGgx/35otn9VlaqVCnznx0dHUlLS8v23HLlylklbnYM//cve926dfntt9/M+2NjY6lbt26W1xiNRoxGY65ziYiIiOSGelLtxNnZmcTExGyPt2rViqioKI4ePQrAypUrqVWrFrVq1cpzzo0bN/LHH38At8fFBgQEANCzZ08+//xzrl69SkpKCosWLaJ37955ziMiIiJoTGo+qSfVToKDgxkzZgyzZ89mxowZdxyvUqUKy5cvZ8CAAaSlpeHq6spXX31l7v3MC39/f/r27cv58+d54IEHCAsLA6B9+/b06tXLPLSgV69ePPHEE3nOIyIiIpJfBlPGTBwp0qZMmUJCQgIffvihReMmJSXh4uJCYmIizs7OFo2dndJNX7ZJnn+6fmiuzXOK5MUPJ+NtnrNdg4o2zymSW7b8fZWRy/jExxhKlLZYXNPN66SsH2HT37n2pJ5UERERESswGAz5egKaRUDLxSoEVKQWIZGRkQQFBd2xf+DAgUyZMsXm7RERERHJKxWpRYiPjw+RkZH2boaIiIigntT8Kl7TxERERESkUFBPqoiIiIg1GP5vs2S8YkQ9qSIiIiJS4KgnVURERMQKNCY1f1SkioiIiFiBitT8UZEqhY49FtbXCwSksLDHwvq2foGAXh4gUjyoSBURERGxAvWk5o8mTomIiIhIgaOeVBERERErUE9q/qhIFREREbEGrZOaL3rcLyIiIiIFjnpSRURERKxAj/vzRz2pIiIiIlLgqCdVRERExAoMBizck2q5UIWBelJFREREpMBRT6qIiIiIFRiw8JjUYtaVqp5UC/Px8SE5Ofme54WFhXHixAkbtOje9u3bh5+fH2XKlKFbt272bo6IiEiRkDFxypJbcaIi1cIiIyMpX778Pc+7V5Ganp5uyWbdVY0aNfjwww+ZPXu2zXKKiIiI3I2KVAszGAwkJCQA4ObmxqRJk2jdujX3338/06dPB2DhwoXs37+fV199FR8fHzZu3EhYWBgdOnSge/fueHp68vPPP7N582Z8fX3x8vKiXbt2REdHAxAeHo6HhwfDhw/H29ubJk2asH///ru2a8qUKXTv3p2OHTvSsGFDnnzySf766y8AateuTYsWLTAajfe8v5SUFJKSkjJtIiIikgWDFbZiREWqlSUkJBAREcG+ffuYOXMm58+fZ/DgwTRv3pzZs2cTGRnJY489BsDevXuZMWMGUVFR1KtXj759+7JkyRKOHDlCcHAwPXr0wGQyAXDixAkGDhzI4cOHGTFiBBMmTLhnW3bu3MkXX3zBiRMnqFOnDiEhIbm+n9DQUFxcXMxbnTp1ch1DRERE5F5UpFpZ3759AahcuTLu7u78+uuv2Z7r5+dHgwYNgNsFq6enJ56engD069ePCxcucP78eQDq169Py5YtAWjdujWnT5++Z1sef/xxqlevDkBwcDBbt27N9f2EhISQmJho3uLi4nIdQ0REpFiw9HjUYjYmVbP7raxUqVLmPzs6OpKWlpbtueXKlbNK3OzkZQC20WjM0bAAERERkfxQT6qdODs7k5iYmO3xVq1aERUVxdGjRwFYuXIltWrVolatWnnOuXHjRv744w/g9rjYgICAPMcSERGRu9Ps/vxRT6qdBAcHM2bMGGbPns2MGTPuOF6lShWWL1/OgAEDSEtLw9XVla+++ipf/4L6+/vTt29fzp8/zwMPPEBYWBgAJ0+epFOnTly7do3r169Tu3Zt3njjDYYPH57nXCIiIsWdpQvL4lakGkwZM3GkSJsyZQoJCQl8+OGHFo2blJSEi4sLiYmJODs7WzR2QVK66cs2z3n90Fyb5xTJix9Oxts0X7sGFW2aT4oGW/6+yshVqd9iHEqWsVjcW6nX+Gv580X+d24GPe4XERERsYZCtATV22+/bX6xT4UKFayXKBf0uL8IiYyMJCgo6I79AwcOZMqUKTZvj4iIiBQOqamp9OzZk9atW/PZZ5/ZuzmAitQixcfHh8jISHs3Q0RERChcY1KnTp0KYJ6vUhCoSBURERGxAmsVqf9+22NRXR5SY1JFRERECpE6depkevtjaGiovZtkFepJFREREbECa/WkxsXFZZrdn10v6vjx43n33XfvGvP48eM0bNjQYm20JBWpIiIiIoWIs7NzjpagGjNmTJYTqv/J3d3dQq2yPBWpIiIiIlZg74lTVapUoUqVKhbLb2sqUkVERESKubNnzxIfH8/Zs2dJT083rxZUv359ypUrZ5c2qUgVyQF7vP3J1m+50huurKM4vI1Jb4ASyYalF+C34mL+kyZNYsmSJebPTZs2BWDHjh20b9/eeonvQrP7RURERKwg43G/JTdrCQsLw2Qy3bHZq0AFFakiIiIiUgDpcb+IiIiIFdh74lRhp55UERERESlw1JMqIiIiYgXqSc0fFakiIiIikm83b97k4sWLXLt2jSpVqlCxYv5W/tDjfhERERFrMFhhK2CSk5P59NNPadeuHc7Ozri5udGoUSOqVKnCfffdx5AhQ9i3b1+eYqtIFREREbGCwrQEVV588MEHuLm5sXjxYgICAli3bh2RkZH88ssvREREMHnyZNLS0ujcuTNdu3bl1KlTuYqvx/0iIiIikmv79u3jxx9/pEmTJlkeb9GiBS+88ALz5s1j8eLF7Ny5kwceeCDH8VWkioiIiFhBUZ84tWLFihydZzQaGTZsWK7j63G/hfn4+JCcnHzP88LCwjhx4oQNWnRvK1euxMfHBw8PDzw8PHj//fft3SQREREp5tSTamGRkZE5Oi8sLIwKFSrQsGHDLI+np6fj6OhowZZlr06dOmzatInq1auTmJhIs2bNaNasmV1fhSYiIlLYGbBwT2pBnDn1f65evco777zDtm3buHTpErdu3cp0/MyZM7mOqSLVwgwGA1euXKFChQq4ubkxYMAAtmzZwsWLFxk0aBATJ05k4cKF7N+/n1dffZUpU6YwY8YMLl26xJIlS6hYsSK//PILCxYsICkpiZCQENLS0nB1deXTTz+lcePGhIeH8/LLL9O2bVt2795NWloaS5YsoXnz5tm2a8qUKURFRXHlyhUuXLjAAw88QFhYGJUqVeLhhx82n+fi4kLDhg2JjY3NMk5KSgopKSnmz0lJSRb77kRERKRwGjx4MD/88AP9+/enRo0aFinOVaRaWUJCAhEREfz555/Uq1eP559/nsGDB7Ns2TJGjRpFt27dgNs9q3v37uXQoUM0aNCAS5cu0ahRI8LDw/H09GT58uX06NGDY8eOAXDixAk+++wzPvnkE+bNm8eECRPYvHnzXduyc+dOjhw5QvXq1Rk+fDghISEsWLAg0znR0dFEREQwb968LGOEhoYyderU/H8xIiIiRVxRH5P6T9999x0bNmzI1PGVXxqTamV9+/YFoHLlyri7u/Prr79me66fnx8NGjQAYO/evXh6euLp6QlAv379uHDhAufPnwegfv36tGzZEoDWrVtz+vTpe7bl8ccfp3r16gAEBwezdevWTMfPnTvHU089xbx586hdu3aWMUJCQkhMTDRvcXFx98wrIiJSLBWDdVIzuLq65nvx/n9TkWplpUqVMv/Z0dGRtLS0bM8tV66cVeJm559/I7tw4QIBAQFMnDiRnj17ZnuN0WjE2dk50yYiIiLF21tvvcWkSZO4du2axWLqcb+dODs7k5iYmO3xVq1aERUVxdGjR/Hw8GDlypXUqlWLWrVqERMTk6ecGzdu5I8//qBatWosXLiQgIAAAH7//Xc6derEuHHjGDhwYJ5ii4iISGbF6XH/+++/z+nTp6lWrRpubm6UKFEi0/GDBw/mOqaKVDsJDg5mzJgxzJ49mxkzZtxxvEqVKixfvpwBAwaYJ0599dVX+foX1N/fn759+3L+/HnzxCmASZMmcfbsWebMmcOcOXMAeOWVV3j++efznEtERESKj4w5NpZkMJlMJotHlQJnypQpJCQk8OGHH1o0blJSEi4uLiQmJurRv4WVbvqyTfNdPzTXpvmKix9Oxts0X7sGlh0TJlJU2PL3VUYut5dW42AsY7G4t1KuEfufHsXmd67GpIqIiIhYgcFg+a0gS0hIYOHChYSEhBAff/sv6AcPHjRP+s4tPe4vQiIjIwkKCrpj/8CBA5kyZYrN2yMiIiLFw5EjRwgICMDFxYXY2FiGDBlCxYoVWbt2LWfPnmXp0qW5jqkitQjx8fHJ8RuvRERExLpu935acuKUxUJZ3OjRowkKCuK9996jfPny5v2PPfaYeTnO3NLjfhERERHJl3379jF06NA79teqVYuLFy/mKaZ6UkVERESswdLjSAtwT6rRaMzyVem//PILVapUyVNM9aSKiIiISL4EBgYybdo0bt68Cdwe5nD27FnGjRtH9+7d8xRTRaqIiIiIFWQs5m/JraB6//33+fvvv6latSrXr1+nXbt21K9fn/Lly/P222/nKaYe94uIiIhYgaWXjSrANSouLi5s2bKFXbt2ceTIEf7++298fX3Nb7fMCxWpIgVUcVhcvzi8sECL6xcNA5Yftmm+pf28bZpPxFLatGlDmzZtLBJLRaqIiIiIFTg4GHBwsFz3p8mCsSzho48+yvG5I0eOzHV8FakiIiIikmuzZ8/O9Pny5ctcu3aNChUqALffQFWmTBmqVq2apyJVE6dERERErKCovxb1119/NW9vv/02Pj4+HD9+nPj4eOLj4zl+/Di+vr689dZbeYqvIlVERERE8uXNN9/k448/pkGDBuZ9DRo0YPbs2UycODFPMfW4X0RERMQKLL1sVEFegur3338nLS3tjv3p6en88ccfeYqpnlQRERERKyjqj/v/qVOnTgwdOpSDBw+a9x04cIAXX3wxz8tQqUgVERERkXxZtGgR1atXp3nz5hiNRoxGIy1atKBatWosXLgwTzH1uF9ERETECorT4/4qVaqwceNGfvnlF06cOAFAw4YNefDBB/McU0WqiIiIiFjEgw8+mK/C9J9UpIqIiIhYQVHvSR09enSOz/3ggw9yHV9Fqp2kpaXx9ttvs2LFCpycnHBycqJFixYMHz6cZs2a4enpSXp6Ojdv3sTf35/JkydTu3ZtAKKionjllVf466+/SE9Pp3Tp0ixevBgPD488teXUqVMMHDiQP//8ExcXF8LCwmjSpIklb1dERKTYsfRkpwJWo3Lo0KFMnw8ePEhaWpp5GapffvkFR0dHmjVrlqf4KlLtZNCgQcTHxxMREYGrqysmk4nVq1fj7OxM+fLliYyMBCA1NZXp06fj5+dHVFQULi4u9OnTh7feeounn34agLi4OIxGY57bMnToUIKDgwkKCmL16tUEBQWxb98+S9ymiIiIFFE7duww//mDDz6gfPnyLFmyBFdXVwCuXLnC888/j7+/f57ia3a/HcTExPDVV1+xePFi8w/SYDDQs2dPHBwy/0hKlizJtGnTqFWrFsuWLQPg3Llz1KpVy3xOnTp1qFq16l1zGgwGJk6cSNOmTXnwwQdZvnw5AJcuXWL//v0899xzAHTv3p24uDhiYmKyjJOSkkJSUlKmTURERO5kwGB+5G+RjQLWlfoP77//PqGhoea6BsDV1ZXp06fz/vvv5ymmilQ7OHjwIA888ACVK1fO8TUtWrTg2LFjwO23OnTo0IFOnToxYcKEO7rbs2MwGDh06BCbNm1ixIgRxMbGEhcXR40aNXBycjKfU7duXc6ePZtljNDQUFxcXMxbnTp1cnwPIiIiUjQlJSVx+fLlO/ZfvnyZ5OTkPMVUkVpImEwm85/HjBnDmTNnGDx4MPHx8fj7+7Nq1ap7xhg8eDAA7u7utG3blh9//DHX7QgJCSExMdG8xcXF5TqGiIhIcVCcFvN/+umnef7551m7di3nzp3j3LlzrFmzhkGDBvHMM8/kKabGpNqBr68vp06d4q+//qJSpUo5umbfvn3079/f/LlatWr06dOHPn36cN9997F8+XJ69eqVq3YYDAbq1KljfpWZk5MTJpOJs2fPUrdu3SyvyVigV0RERCTDvHnzeO211+jbty83b94EwMnJiUGDBjFz5sw8xVRPqh3Ur1+f7t27M2jQIBISEoDbPaVr1qzh1q1bmc5NTU1l6tSpnDt3jn79+gHw9ddfm/8FSEtL48iRI9SrV++eeRcvXgxAbGwsO3fuxN/fn6pVq+Lr62se77pmzRpq165N/fr1LXW7IiIixZJFx6NaeDkrSytTpgyffPIJf/31F4cOHeLQoUPEx8fzySefULZs2TzFVE+qnSxatIjp06fTsmVLnJycuHXrFm3btqVevXokJyfj4+NDWlqaeQmqn376CRcXFwDWrl3L+PHjMRqNpKen06JFC6ZOnXrPnOnp6TRt2pSrV6/y0Ucf4ebmBsD8+fMJCgpixowZODs7m4tZERERybuivgRVVsqWLYuXl5dFYhlM/xzsKEWWwWDgypUrVKhQwaJxk5KScHFxITExEWdnZ4vGlqKvdNOXbZrv+qG5Ns0nRceA5Ydtmm9pP2+b5isObPn7KiOXz4T/4Vgqb72IWUm/cZXIt58sML9zn3nmGcLCwnB2dr7nuNO1a9fmOr56UkVERESsoKi/ccrFxcXcpoynvZakIrUIGTZsGHv27Lljf0REBOowFxEREUv65/BAawwVVJFahMybN8/eTRAREZH/UxzHpF66dImTJ08C0KBBg3u+bOhuNLtfRERERPIlKSmJ/v37U6tWLdq1a0e7du2oVasWzz33HImJiXmKqSJVRERExAqK0xJUQ4YMYe/evaxfv56EhAQSEhJYv349+/fvZ+jQoXmKqcf9IiIiItZg6bdEFdwalfXr17N582batGlj3telSxf++9//0rVr1zzFVE+qiIiIiORLpUqVspzh7+Ligqura55iqkgVERERsYLi9Lh/4sSJjB49mosXL5r3Xbx4kddff50333wzTzH1uF9EREREcq1p06aZCudTp05Rt25d6tat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aXx9fQFo3749o0aNyt2Xxe1ifNy4ccTExFCpUiWWLl0KwLVr13jwwQdJSUkhMTGR2rVr079/f0JDQ3OdQ0RERIqfjLkun332mXmd1L179zJs2DACAwPzFNNgutuMokIoPDycUaNG5esRfVEUFhbGunXrWLdunUXjJiUl4eLiQmJiIs7OzhaNXZCUbvqyzXNeP3T3lSRERCTnbPn7KiPX9sNnKVfecrn+Tk6io3fdAvk7NyEhgYEDB/K///3PPEcoLS2NwMBAwsLCcHFxyXXMQt2TKiIiIiL2V6FCBb755htOnTplHlrYqFEj6tevn+eYRa5Ibd++vdV7US9dupTlmNBHHnmEmTNnWjX33dyrXUFBQbZvlIiISDFl6WWjCvISVBkeeOABHnjgAYvEKnJFqi1UrVq1QA4nKKjtEhERkaJn9OjROT73gw8+yHV8FakiIiIiVmCw8BJUFl3OygIOHTqUo/PysgwoqEgVERERsQpLLxtVwGrUO179bmmFep1UERERESma1JMqIiIiYg1FvSvVytSTKiIiIiIFjnpSRXLAHgvr2/oFAnp5gIiIZRXGJahSUlJo2bIlhw8f5tChQ/j4+Fg9Z3bUkyoiIiIiAIwdO5aaNWvauxmAilQRERERq8hYgsqSmzV99913fP/998yaNcu6iXJIj/tFRERErKAwzZv6448/GDJkCOvWraNMmTJWzJRzKlJFRERECpGkpKRMn41GI0ajMc/xTCYTQUFBDBs2jObNmxMbG5vPFlqGHveLiIiIWIPBChtQp04dXFxczFtoaGiW6cePH4/BYLjrduLECT7++GOSk5MJCQmx0heRN+pJFRERESlE4uLicHZ2Nn/Orhd1zJgxBAUF3TWWu7s727dvJyIi4o44zZs3p1+/fixZsiTfbc4LFakiIiIiVmCtJaicnZ0zFanZqVKlClWqVLnneR999BHTp083f75w4QJdunRh1apVtGzZMu8NzicVqSIiIiJWYOkZ+daa3V+3bt1Mn8uVKwdAvXr1qF27tnWS5oDGpIqIiIhIgaOeVBERERErKExLUP2Tm5sbJpPJRtmyp55UERERESlwilWRGh4ebn4H7YULF/D397d6zvXr19O+fXur58mP7du306JFCxo3bkyTJk0YO3Yst27dsnezRERECjcrLUFVXBSrIvWfatasyc6dO+3dDItKS0vL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RPny5blx44bF89n6OwXbf6+2/k4Btm/fzqlTpzLta9SoEV27duXBBx+0eL5/9mL+k8lk4tKlSxbPB7BhwwYOHDhAyZIlmTBhAoGBgVy7do2QkBCr/PefISoqihMnTtwxy9yatm7dSnR0tPkvN1L0qUgVm6tRowZffvklzz77LHC7kKxRo4ZVcplMJm7dunXH/lu3blnl/8A3b97Mhx9+eEdRbDKZ2Llzp8XzZchY1Llx48Zs376dRx55hPT0dKv8AklISLijmILbPSsTJkyweD4fHx/c3Nyy/HlZq/C/dOkSL730EnD7UeqMGTPo1KkTW7ZsKRLfKdj+e7X1dwq3e9kuX758x8SRy5cvW+W//zNnzrBixQrKlCmTab/JZKJXr14Wz5cRO+P/b6pXr87WrVt59NFHrfbff4Y6deqQmppq00fBNWrU0FumihkVqWJzH374IU899RRjx44FoEyZMnzzzTdWyRUUFMRDDz1E//79ue+++wD47bff+Pzzz3n++ectns/Hx4emTZvSvHnzO469+eabFs8H4OjoyKVLl8wzMGvXrs22bdsICAggLi7O4vkqV67M559/Tr9+/XBwcABuF/2ff/45lSpVsni+++67j127dmUaa5vh3wtaW8r169czfX7jjTcoWbIknTp1skovo62/U7D992rr7xRg3Lhx+Pj48NRTT2X67//bb79l6tSpFs/XtGlTXFxc8PPzu+NYVkv8WELZsmWJjY01D2dwdnZm8+bNdOnShWPHjlklJ0D9+vVp3749Tz/9dKaezZEjR1otZ8uWLenRowe9evXKlDMwMNBqOcW+VKSKzTVs2JDo6GhOnjwJQIMGDaw2gWHixIm0bduWL7/8kl27dgG3x4bNnTuXdu3aWTzfnDlzsvylD7Bt2zaL54PbY9JOnz6daZmQmjVrsm3bNiZPnmzxfEuWLGHo0KGMGDHC3AP++++/4+vrS1hYmMXzBQYGcubMmSy/18cff9zi+eD2I+FNmzbRtWtX877XXnsNBwcHXnvtNYvns/V3Crb/Xm39nQIMGjSITp06sXr1avN4UHd3d3bu3Mn9999v8XxhYWHZvgLTGmOnAd555x0SExMz7StXrhybN2/mo48+skpOgJSUFBo2bMjx48fN+6z96H///v0AfPrpp5lyqkgtujRxSmzm6tWrlC1blqSkpCyPW/L9xmJ9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exLcc889x7hx40hLS6Np06aFPp+9cgLs2bOHsLAw3N3dMxUa1ux5tHVOe9zjrVu38PHx4dSpU+Z91pxhb+t89sg5fPhwypQpw5dffonBYGD+/PkMHz6czz//3Go5R48ezenTpxk+fDgGg4GFCxfy22+/8dFHH1ktp9iXilSxCxcXFx599FGb5Xv44YfZv3+/eY2/opbPljn/2Wuxd+9eBg8ebN7/zx7cwprPXjkB/vOf/1gtdkHJaY97XLx4cZHOZ4+cR44c4fDhw+bPn3zyidUnToWHhxMZGWl+9erjjz+Or6+vVXOKfalIFZtzcHC442/4Li4utG7dmv/85z+4ublZPOePP/7If//7X+rXr0+pUqXM+63Ve2PrfLbMWbFiRb799ltq1qxJREQEX3zxBXD7UVxKSopFc9kjn71ywu1xhXB7qR0g03I7RSWnPe7R1o+J7fFY2tY509PTSU5ONj/e//vvv0lPT7dKrgwmk4lbt26Zi1STyWSXlRLEdlSkis1NmzaNtLQ0hgwZAsBnn31GSkoK1apVY+jQoWzevNniOefOnWvxmAUpny1zzpkzhz59+nD+/HmmTZtGlSpVAFi/fj0PPfRQoc9nr5wAx48fp0ePHuYCrnbt2nz11Vc0bNiwyOS0xz3a+jGxPR5L2zrnwIEDadWqFb169QLgyy+/5Pnnn7dKrgxdu3alc+fO5jW2ly5datMncmIHJhEba9asWbb7mjRpYtXc58+fN50/f96qOeyZz145xTLat29vWr58ufnzihUrTO3bty9SOe1xj56enqb09HTz55s3b5o8PT2LTD575fzuu+9MY8aMMY0ZM8b03XffWTWXyWQypaenmz755BNT9+7dTd27dzd9+umnme5Zih71pIrNJScnc/nyZXPv1OXLl83vZi5RooRVchaH3iJb5kxOTmbZsmUcO3YMAA8PD/r162e1mb22zmevnFeuXKFv377mz7179+add96xWj575LTHPZps/JjY1vnskfPGjRt06dKFrl27Arcnbt24cSPTUCNLc3Bw4MUXX+TFF1+0Wg4pWLSYv9jc6NGj8fb2ZtCgQQwaNIimTZvy6quv8vfff/Pwww9bJefw4cOZMGECV65c4cqVK0yYMMGq/0dn63y2zHn+/Hk8PDz4/PPPzROJli5dioeHh1VeUWjrfPbKCbdXaIiOjjZ/jo6O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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plotting.plot_transitions();" + ] + }, + { + "cell_type": "markdown", + "id": "9b3fdb85", + "metadata": {}, + "source": [ + "A gene is a walk through this graph. Below, a hand-made three-exon gene: its state path, and the\n", + "GFF3 lines our gene extractor writes from it (a `gene`, its `CDS` and the `intron`s in between).\n", + "The first exon is 25 bp, not a multiple of 3, so the second one starts 2 bases before a codon\n", + "boundary: its GFF3 **phase** is 2." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "cb668e4e", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:42:36.080046Z", + "iopub.status.busy": "2026-10-02T16:42:36.079928Z", + "iopub.status.idle": "2026-10-02T16:42:36.133363Z", + "shell.execute_reply": "2026-10-02T16:42:36.132861Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "legal path: True\n", + "demo\tNTv3\tgene\t21\t174\t.\t+\t.\tID=gene_1_p\n", + "demo\tNTv3\tCDS\t21\t45\t.\t+\t0\tID=gene_1_p_CDS_21;Parent=gene_1_p\n", + "demo\tNTv3\tintron\t46\t75\t.\t+\t.\tID=gene_1_p_intron_46;Parent=gene_1_p\n", + "demo\tNTv3\tCDS\t76\t118\t.\t+\t2\tID=gene_1_p_CDS_76;Parent=gene_1_p\n", + "demo\tNTv3\tintron\t119\t143\t.\t+\t.\tID=gene_1_p_intron_119;Parent=gene_1_p\n", + "demo\tNTv3\tCDS\t144\t174\t.\t+\t1\tID=gene_1_p_CDS_144;Parent=gene_1_p\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "C = decoding.CLASS_INDEX\n", + "\n", + "# A start codon, exons and introns keeping the reading frame, then a stop codon.\n", + "def gene_walk(exon_lengths: list[int], intron_lengths: list[int]) -> list[int]:\n", + " path, phase = [C[\"start_codon\"]], 1 # the start codon's A; its T and G are CDS_p1, CDS_p2\n", + " for i, length in enumerate(exon_lengths):\n", + " for _ in range(length):\n", + " path.append(C[f\"CDS_p{phase}\"])\n", + " phase = (phase + 1) % 3\n", + " if i < len(intron_lengths): # the intron remembers where the codon was cut\n", + " path += [C[f\"splice_donor_p{phase}\"]] + [C[f\"intron_p{phase}\"]] * intron_lengths[i]\n", + " path.append(C[f\"splice_acceptor_p{(phase + 1) % 3}\"])\n", + " phase = (phase + 2) % 3\n", + " return path + [C[\"stop_codon\"]]\n", + "\n", + "path = [C[\"intergenic\"]] * 20 + gene_walk([23, 41, 29], [30, 25]) + [C[\"intergenic\"]] * 20\n", + "states = np.array(path, dtype=np.int8)\n", + "legal = np.isfinite(decoding.LOG_TRANSITIONS[states[:-1], states[1:]]).all()\n", + "print(\"legal path:\", legal)\n", + "print(\"\\n\".join(decoding.find_genes(states, \"+\", \"demo\")))\n", + "plotting.plot_tracks({\"hand-made gene\": states}, 0, (0, len(states)), title=\"a legal walk\");" + ] + }, + { + "cell_type": "markdown", + "id": "d020a4ec", + "metadata": {}, + "source": [ + "# 2. ๐Ÿ“ฅ The demo region and the model's predictions\n", + "\n", + "The demo region is 1.57 Mb of chromosome 1 of *Medicago truncatula* (`NC_053042.1`), covering\n", + "two consecutive 1 Mb windows placed exactly as our pipeline tiles the genome, so decoding it\n", + "reproduces the released annotation of these bases. It holds about 150 reference genes. Each window\n", + "contributes its central 75% (section 5.2 explains why)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "2df81a03", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:42:36.135572Z", + "iopub.status.busy": "2026-10-02T16:42:36.135442Z", + "iopub.status.idle": "2026-10-02T16:42:53.544009Z", + "shell.execute_reply": "2026-10-02T16:42:53.543464Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "892549fab8a3476d8c34b6976db6779c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "genome.fa.gz: 0%| | 0.00/141M [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
window startkept fromkept to
0108789761101004811796480
1116654081179648012582912
\n", + "" + ], + "text/plain": [ + " window start kept from kept to\n", + "0 10878976 11010048 11796480\n", + "1 11665408 11796480 12582912" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "species = TEST_SPECIES[\"medicago_truncatula\"]\n", + "assembly_dir = Path(\"data\") / species.dataset_dir\n", + "for name in (\"genome.fa.gz\", \"genome.fa.gz.fai\", \"genome.fa.gz.gzi\", \"reference_longest_isoform.gff3.gz\", \"demo_log_probs/log_probs.npz\", \"demo_log_probs/meta.json\"):\n", + " hf_hub_download(DATASET_REPO, f\"{species.dataset_dir}/{name}\", repo_type=\"dataset\",\n", + " local_dir=\"data\")\n", + "reference_path = assembly_dir / \"reference_longest_isoform.gff3.gz\"\n", + "released_path = hf_hub_download(species.model_repo, species.released_gff, local_dir=\"data\")\n", + "\n", + "meta = json.loads((assembly_dir / \"demo_log_probs/meta.json\").read_text())\n", + "CHROM, SEQUENCE_LENGTH, KEEP = meta[\"chrom\"], meta[\"sequence_length\"], meta[\"keep_target_center_fraction\"]\n", + "import pyfaidx\n", + "contig = pyfaidx.Fasta(str(assembly_dir / \"genome.fa.gz\"))[CHROM][:].seq\n", + "windows = [inference.Window(*w) for w in meta[\"windows\"]]\n", + "REGION = tuple(meta[\"region\"])\n", + "print(f\"{CHROM}:{REGION[0]:,}-{REGION[1]:,} ({(REGION[1] - REGION[0]) / 1e6:.2f} Mb), \"\n", + " f\"{len(windows)} windows of {SEQUENCE_LENGTH:,} bp, predicted with {meta['model']}\")\n", + "pd.DataFrame(meta[\"windows\"], columns=[\"window start\", \"kept from\", \"kept to\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f7f1dd54", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:42:53.545813Z", + "iopub.status.busy": "2026-10-02T16:42:53.545695Z", + "iopub.status.idle": "2026-10-02T16:42:54.452140Z", + "shell.execute_reply": "2026-10-02T16:42:54.451549Z" + } + }, + "outputs": [], + "source": [ + "arrays = np.load(assembly_dir / \"demo_log_probs/log_probs.npz\")\n", + "\n", + "def region_prediction(prefix: str = \"\") -> inference.RegionPrediction:\n", + " per_window = [\n", + " (arrays[f\"{prefix}plus_{i}\"].astype(np.float32), arrays[f\"{prefix}rc_{i}\"].astype(np.float32))\n", + " for i in range(len(windows))\n", + " ]\n", + " return inference.RegionPrediction(CHROM, REGION[0], REGION[1], windows, per_window)\n", + "\n", + "prediction = region_prediction()" + ] + }, + { + "cell_type": "markdown", + "id": "0d5e39ca", + "metadata": {}, + "source": [ + "# 3. ๐Ÿ‘€ What the model predicts\n", + "\n", + "The reference genes of the region, read from the benchmark reference, and the model's most likely\n", + "state at every base (**argmax**). Let's look at the plus strand of the first 150 kb." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "97ab9fc1", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:42:54.453866Z", + "iopub.status.busy": "2026-10-02T16:42:54.453662Z", + "iopub.status.idle": "2026-10-02T16:42:55.390944Z", + "shell.execute_reply": "2026-10-02T16:42:55.390338Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "reference_cds, reference_genes = evaluation.parse_cds_and_genes(reference_path, [CHROM])\n", + "keep_ids = evaluation.scorable_reference_genes(reference_path, [CHROM])\n", + "reference_genes = {g: x for g, x in reference_genes.items() if g in keep_ids}\n", + "\n", + "def reference_on(strand: str) -> list:\n", + " return [g for g in reference_genes.values() if g.strand == strand]\n", + "\n", + "argmax_plus, argmax_minus = inference.decode_region(prediction, contig, \"argmax\")\n", + "ZOOM = (REGION[0], REGION[0] + 150_000)\n", + "plotting.plot_tracks({\"argmax\": argmax_plus}, REGION[0], ZOOM, reference_on(\"+\"),\n", + " title=\"plus strand\");" + ] + }, + { + "cell_type": "markdown", + "id": "7d955f0b", + "metadata": {}, + "source": [ + "From afar the argmax track follows the genes. Up close it breaks them: the probabilities do not\n", + "flip cleanly from one state to the next but ramp over a few bases, and where two states are close\n", + "the argmax flickers between them, opening one-base \"introns\" or \"intergenic\" gaps inside a gene,\n", + "or starting a coding exon with no start codon. Here is the probability of intergenic / exon /\n", + "intron around one reference gene:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "887fbfa3", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:42:55.392799Z", + "iopub.status.busy": "2026-10-02T16:42:55.392668Z", + "iopub.status.idle": "2026-10-02T16:42:55.603350Z", + "shell.execute_reply": "2026-10-02T16:42:55.602697Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABEIAAADlCAYAAABXlFI8AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAArnxJREFUeJzsnXecXGW9/9+nTZ/tmx4SkpCQkAQISFdELFxF5CpeCwKCWC6KXkCv+rMhKIooWK8NEbGLIlwVFQvKlQBShdBLKOnJbrZOO+X5/fFM3Z3dndmSbd/365XszJlznvOc/nw/51sMpZRCEARBEARBEARBEARhFmBOdgcEQRAEQRAEQRAEQRD2FSKECIIgCIIgCIIgCIIwaxAhRBAEQRAEQRAEQRCEWYMIIYIgCIIgCIIgCIIgzBpECBEEQRAEQRAEQRAEYdYgQoggCIIgCIIgCIIgCLMGEUIEQRAEQRAEQRAEQZg1iBAiCIIgCIIgCIIgCMKsQYQQQRAEQRAEQRAEQRBmDSKECIIgCIIgCIIgCIIwaxAhRBAEQRAEQRAEQRCEWYMIIYIgCIIgCIIgCIIgzBpECBEEQRAEQRAEQRAEYdZgT3YHpjLbduyZsLYXzGsbcZ5DDjmE//u//yOZTA4737XXXstRRx3FgQceOF7dGzO19n0iOOaD/oS0u/GL1oS0O9X4xyMTs/+OW1Pb/pvO570gCIIgCIIgCFMfEUKmMA888EBN81177bU0NTXVbRAGQQCAaY6/Y1CtfReEgYzXee/7PpY1O8QrQRAEQRAEQRBqR0JjpjCGYdDV1QXA0qVL+eQnP8nRRx/N/vvvz2c+8xkArr76au655x4uuOACDjnkEG6++WYAvvjFL3LEEUewYcMGTjrpJJ577jkALr74Yt7whjfwqle9irVr17J9+3a+/e1vs3LlSjZs2MCll16KYRjFPtx999287GUv4/DDD+fQQw/l+uuvB+DZZ5+lqamJT33qUxx22GGsWLGiuO6BfX/00Ud51atexfr161m/fj3f+ta3JnrXTTrV9ttnP/tZTjnlFJRSZLNZDjvsMH784x8D8MMf/rC4f17zmtewdetWQBv7L3/5y3nLW97CunXrOPzww3nmmWcmc9MmnNGe99deey0nnHACb3jDG1i3bh3//Oc/+eMf/8iGDRtYv349xx9/PI888ggAf/vb31i7di3nnXceBx98MAcddBD33HPPZG2yIAiCIAiCMM15YctWlq5YzcOPPDrkPPfedz9vf8e7WL/hSFauOZhXvfoUrv7etfj+YI/sjXfcxdvf8S4OOfwoDlx7KC9/1cl85rLL2bFjJwCZbJaL/vujvOrVp7B81Vre+Z73DWpj165dvP+CD3LCy09i/wPW8OnPXDbsNvzvb3/H0hWrB7X1hz/ewhlnvYNDDj9qyG187rnnedd/vo8NLzqGtQcfznvPv4DdeyojLJ7ZvJlz3/1eDn3R0aw9+HBOe9PpbLzjruLvjzz6GOf/10UcfdwJrDroEE581Wu45trrxrRNQyFCyDSiq6uLO+64g7vvvpsrrriCrVu3cu6553L44Ydz1VVX8cADD/DqV7+an/zkJzz++OPccccd3HfffZx++umcd955xXbuuOMOrrvuOh555BH27t3LxRdfzG233cZ9992H53kV63vXu97Fj3/8Y+655x7+9Kc/cdFFFxWN9O7ubtavX8+9997L17/+dS644IJBffY8j9e97nW8/e1v58EHH+TBBx/ktNNOm/idNYkMtd/e/va347ouX/rSl7jwwgs5/PDDOf3009m0aRMf+tCH+P3vf8+DDz7IMcccw7nnnlts7+677+ayyy7joYce4uUvfzmXX375JG7dvqfW8x7grrvuKu6r5cuX89a3vpUf/OAHPPjgg7zrXe/itNNOQykFwGOPPcZZZ53Fv/71L84//3w+9rGPTeZmCoIgCIIgCDOYP9zyJ9701jOZP28eP/3Rtfzllps5+6wz+Nr/fIvzP3BRcYwK8OOf/py3nXUO7e3tfPPrX+VPf/gtn730U/T29vLd730fgMD3iUTCvP3Mt3HsMUdXXWc259LS0sL73vseVo8QPfDClq1c9rkrOOJFhw36LZVKc/jhG/jIhy6qumwqleKMt5+LYRj85EfX8stf/ISc63Luu84rRiEAvOOd/4nve/zkh9fym5t+yeoDV/GOd/0nu3bvBmDTpodpbW3lqi9dzp9+/xve95/v5gtfvIofXPfjUW3TcEhozDTirW99KwBtbW0sW7aMzZs3s3DhwkHz3Xjjjdx9990cdpg+iQcqjK9+9auZO3cuAH/961856aSTmDdvHgDvfOc7ueSSSwDYuHEjzzzzDP/2b/9Wsfzjjz/OsmXLiEQivP71rwfg6KOP5umn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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gene = max(reference_on(\"+\"), key=lambda g: (REGION[0] <= analysis.cds_span(g)[0] < ZOOM[1], len(g.cds_keys)))\n", + "lo, hi = analysis.cds_span(gene)\n", + "zoom = (lo - 1_000, hi + 1_000)\n", + "plotting.plot_class_probabilities(prediction.stitched(\"+\"), REGION[0], zoom, title=gene.gene_id);\n", + "plotting.plot_tracks({\"argmax\": argmax_plus}, REGION[0], zoom, [gene]);" + ] + }, + { + "cell_type": "markdown", + "id": "132eef04", + "metadata": {}, + "source": [ + "# 4. ๐Ÿงฎ Decoding: from probabilities to gene models\n", + "\n", + "**The HMM (Viterbi) decoder** finds, among all *legal* state paths, the one with the highest total\n", + "probability: the model's log-probabilities for each base plus the log-probabilities of each\n", + "transition. A forbidden transition costs minus infinity, so no gene without a start codon, and no\n", + "frame-breaking splice, can come out.\n", + "\n", + "**Sequence constraints** add what the model may have missed: a `start_codon` state is only\n", + "allowed on ATG, a stop on TAA/TAG/TGA, a donor on GT (or the rare GC), an acceptor on AG. Where\n", + "the DNA does not match, the state is forbidden too.\n", + "\n", + "**Biological filters**, applied when the GFF3 is written: genes with an in-frame stop codon\n", + "inside, or with less than 201 bp of coding sequence, are dropped.\n", + "\n", + "Each rung of this ladder is scored against the reference over the region, with the benchmark\n", + "rules (see notebook 03c): a gene counts only if all its exons are exactly right." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "17f1c468", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:42:55.605211Z", + "iopub.status.busy": "2026-10-02T16:42:55.605001Z", + "iopub.status.idle": "2026-10-02T16:43:01.557804Z", + "shell.execute_reply": "2026-10-02T16:43:01.557011Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
predicted genesGene F1CDS F1Gene precisionGene recall
argmax15169.5486.5169.5469.54
HMM14973.3390.2773.8372.85
HMM + sequence constraints14974.0090.3474.5073.51
HMM + constraints + filters14774.5090.7975.5173.51
\n", + "
" + ], + "text/plain": [ + " predicted genes Gene F1 CDS F1 Gene precision \\\n", + "argmax 151 69.54 86.51 69.54 \n", + "HMM 149 73.33 90.27 73.83 \n", + "HMM + sequence constraints 149 74.00 90.34 74.50 \n", + "HMM + constraints + filters 147 74.50 90.79 75.51 \n", + "\n", + " Gene recall \n", + "argmax 69.54 \n", + "HMM 72.85 \n", + "HMM + sequence constraints 73.51 \n", + "HMM + constraints + filters 73.51 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def genes_of(pred: inference.RegionPrediction, decoder: str, filters: bool) -> list[str]:\n", + " plus, minus = inference.decode_region(pred, contig, decoder)\n", + " return inference.region_genes(plus, minus, contig, CHROM, pred.start, filters=filters)\n", + "\n", + "def score(lines: list[str], reference: Path = reference_path, name: str = \"rung\") -> dict:\n", + " path = Path(\"data\") / f\"{name}.gff3\"\n", + " decoding.write_gff3(path, lines)\n", + " sets = evaluation.prepare_scoring_sets(reference, path, reference, chromosomes=[CHROM])\n", + " return evaluation.score_sets(evaluation.restrict_to_region(sets, CHROM, REGION[0] + 1, REGION[1]))\n", + "\n", + "ladder = {\n", + " \"argmax\": genes_of(prediction, \"argmax\", False),\n", + " \"HMM\": genes_of(prediction, \"hmm\", False),\n", + " \"HMM + sequence constraints\": genes_of(prediction, \"hmm_constrained\", False),\n", + " \"HMM + constraints + filters\": genes_of(prediction, \"hmm_constrained\", True),\n", + "}\n", + "ladder_scores = {label: score(lines) for label, lines in ladder.items()}\n", + "pd.DataFrame({\n", + " label: {\n", + " \"predicted genes\": r[\"Gene\"][\"Pred_Total\"],\n", + " \"Gene F1\": 100 * r[\"Gene\"][\"F1\"],\n", + " \"CDS F1\": 100 * r[\"CDS\"][\"F1\"],\n", + " \"Gene precision\": 100 * r[\"Gene\"][\"Precision\"],\n", + " \"Gene recall\": 100 * r[\"Gene\"][\"Recall\"],\n", + " }\n", + " for label, r in ladder_scores.items()\n", + "}).T.astype({\"predicted genes\": int})" + ] + }, + { + "cell_type": "markdown", + "id": "023aac4f", + "metadata": {}, + "source": [ + "At 1 Mb context the model's per-base predictions are already largely consistent: read off\n", + "state by state, they recover about 70% of the genes exactly. Decoding still matters, because a\n", + "gene is only right if *every* base of every exon is. The HMM enforces a legal structure (a start\n", + "codon, splice sites in frame, a stop), which is worth about 4 points of gene F1 and 4 of CDS F1\n", + "here; the sequence constraints and filters add about one more. On a region of ~150 genes one gene\n", + "is worth ~0.7 points, so read the last rungs as a trend, not a measurement (notebook 03c scores\n", + "whole genomes).\n", + "\n", + "### One gene, three decoders\n", + "\n", + "`gene-LOC11419821` (4 exons): the argmax path breaks it, the HMM alone gets a legal but wrong\n", + "structure, and only the HMM with sequence constraints puts every exon boundary on the right base.\n", + "Predicted exons are blue when their boundaries match a reference exon, red when they do not." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "54712ea5", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:43:01.559113Z", + "iopub.status.busy": "2026-10-02T16:43:01.558988Z", + "iopub.status.idle": "2026-10-02T16:43:03.554357Z", + "shell.execute_reply": "2026-10-02T16:43:03.553900Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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RnUQ0c9HR4fnYZnFb0oJOnVoj5279mDQkOHo3as7TE1M8PzFSxw5FojZM6ZCSyvlXihfPiP06tEVU2fMgkwQULF8OURGRuLajZvIly8fWrVolmpd2Z3uR4MH9sevnbqiSJHCaNKoARISE3H2z7/Qt3dPFC9WDM2aNMawEaMxLmAkXF1cEPrxIy5cvAxnp1KoUb1atr8rIiIiIiIiInVhEkQJChSwxt7d2zFrznx07NIDcXFxsLOzhZ+Pd7pXHfyHDoa5uTlWrFqDV69ewzh/fri6uqB/317p1pfd6b5XpbInVixdiCXLVmHV6rXIly8fPD2/3fUxd/Z0LF2+CtNmzsH79x9gZmaKsmU8ULNGtUzXQURERERERJSXMAmSDbt2bEkxrJi9PVavWJrmNN27dkb3rp0VhkkkEnTr0gndunRKdZoqlT3x/PGDFMOzM52ri3OKYfXq1kG9unVSnYeOjg6GDRmo8OsxRERERERERJosbzwcSURERERERESUy5gEISIiIiIiIiJRYBKEiIiIiIiIiESBSRAiIiIiIiIiEgUmQYiIiIiIiIhIFJgEISIiIiIiIiJRYBKESAUMDQ2hrc1fpCbV09bWhqGhobqbQWqS3raH6waReqiiX/K4g0hcuE/PGm4diVTAxMQEAwYMQFRUlMrrlslkCP0YAQtzY0ilzHtqmpzGz9DQECYmJrnQMtIE6W17uG4QqYcq+qU6jzuUiccwmo3xUx3u07OGSRAiFTExMVHLxkkmk0GipQcba3PugDQQ40c5pa5tDxGlTRX98mfo+9wHajbGj/Iqro1EREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJAra6m4AkVi8CxMQ/kX19cpkAkLDtBAeJ0AqFVTfAMqRnMTPxAiwMZPkUstIU6S17VH6+hESDERE5Gwe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zsxUh1ep7Innjx+k+Ds1dWvXUhif1fJEREREREREmoaPwxARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIkQqYGAG6/EFqUjFd7aR1j8QrvW2PUtcPY2NARyfn89HRSZoX0U8qo+MBZfVLHncQiQuP+bKGm0ciFbAxk2DnKCnCv6i+bplMhtCwCFiYGUMqZd5T0+QkfiZGSeseiVd62x6lrh+WVsDiVUBERM7mY2ycNC+in1RGxwPK6pfqPO5QJh7DaDbGT3V4zJc1TIIQqYiNmQQ2ZqqvVyaT4J1uImysJZBKuXHUNIwf5ZTKtj2WVkxgEGWCqvqkuo47lIn7QM3G+FFexZQcEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQkRERERERESioK3uBhCJxbswAeFfVF+vTCYgNEwL4XECpFJB9Q2gHMlJ/EyMABszSS61jDRFWtserh9E6pHe8YAy+6W6jjuUiccwmo3xUx3u07OGSRAiFXgXJuCX2TLEJairBcZf/5epqwGUI9mLn642sHOUlDtFEUtv28P1g0j1MjoeUFa/VP9xhzLxGEazMX6qwH161vBxGCIVCP+Cn+RAhDRJXAI0/iog5Ux62x6uH0Sql9HxgLL6JY87iMSF+/SsYRKEiIiIiIiIiESBSRAiIiIiIiIiEgUmQYiIiIiIiIhIFJgEISIiIiIiIiJRYBKEiIiIiIiIiESBSZCf0KvXb2Dv4Ix79x+ouylEREREREREeUaWkiD+IwPQs8+AFMMvXb4KewdnhEdEKHx2L1cJMbGxCmVv3/kX9g7OsHdwTjF9Zsv/jOwdnHHy9O9KmZdtQRtcvXQOjqVKZnqahYuXoX7j5kqpn4iIiIiIiCgvytU7QfIZGeHkKcUT+117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CHr7FrPnLsjxd1CokB1evX6De/cfoKCNDYyMjHD46DHIEhNRpow7DPQNcPDQYejr68POLvXHZ4iIiIiIiIjyMpWkxHV1dWFubiZ/BEPZ5ZVh1fLFcHcvjUFDh6NWvUaYNXseZLKkOyPc3FyxfMlCHDkaiLoNmmLhoiUYNmSgwktRM2JkZIjVa9ajSfPWaNq8DV6/eYON61bLr0qMDRiF8xcuoqpPDTRokvbLYKVSKZYumo9/795HnQZNMGX6LASMGp6zhQdQr24d+Pl4o12HLijnWRWHjx6DsXF+/LZrD1q1+RX1GjXD+QuXsH7Nikw/okRERERERESUl0gEQUj7pRBEORAdE4sRY2dh7vTRMNDXU3dz1OrhawFdF/G2VFK9jUOkcOTjDmojk8nw7sNHtd2Kn9G2h+tHxtQdQ8qZvBa/zBwPKKNf8riDSHyUvU/Pa9tPZfq5loaIiIiIiIiIKA1MghARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQqQCJkaArra6W0Fio6udtO6ReKW37eH6QaR6GR0PKKtf8riDSFy4T88abh6JVMDGTIKdo6QI/6L6umUyGULDImBhZvzT/ca3GOQkfiZGSeseiVd62x6uH0Sql9HxgLL6pTqPO5SJxzCajfFTHe7Ts4ZJECIVsTGTwMZM9fXKZBK8002EjbUEUik3jpqG8aOcUte2h4hSp6o++TP0fe4DNRvjR3kVU3JEREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIEREREREREYkCkyBEREREREREJApMghARERERERGRKDAJQkRERERERESiwCQIEREREREREYmCtrobQD8vQRAAADExsWpuibjJZDLExsYhOiYWUinznpqG8dNsjJ/mYww1G+On2Rg/zcb4aTZNjp++ni4kEkma45kEoVwTGxsHABg/daGaW0JERERERERiMHf6aBjo66U5XiIkX64nUjKZTIbwiM/QyyATR7krJiYW46cuxNTxQ6GfzsaA8ibGT7MxfpqPMdRsjJ9mY/w0G+On2TQ5frwThNRGKpXCzNRY3c2gr/T19dLNiFLexvhpNsZP8zGGmo3x02yMn2Zj/DTbzxg/zXq4h4iIiIiIiIgom5gEISIiIiIiIiJRYBKE6Cen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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def exact_genes(lines: list[str]) -> set:\n", + " decoding.write_gff3(Path(\"data/tmp.gff3\"), lines)\n", + " _, genes = evaluation.parse_cds_and_genes(Path(\"data/tmp.gff3\"), [CHROM])\n", + " return {frozenset(g.cds_keys) for g in genes.values()}\n", + "\n", + "decoders = {\"argmax\": \"argmax\", \"HMM\": \"hmm\", \"HMM + constraints\": \"hmm_constrained\"}\n", + "paths = {label: inference.decode_region(prediction, contig, d) for label, d in decoders.items()}\n", + "exact = {\n", + " \"argmax\": exact_genes(ladder[\"argmax\"]),\n", + " \"HMM\": exact_genes(ladder[\"HMM\"]),\n", + " \"HMM + constraints\": exact_genes(ladder[\"HMM + sequence constraints\"]),\n", + "}\n", + "region_reference = {\n", + " gid: g for gid, g in reference_genes.items()\n", + " if REGION[0] < analysis.cds_span(g)[0] and analysis.cds_span(g)[1] <= REGION[1]\n", + "}\n", + "\n", + "def show_gene(gene_id: str) -> None:\n", + " gene = region_reference[gene_id]\n", + " lo, hi = analysis.cds_span(gene)\n", + " strand = 0 if gene.strand == \"+\" else 1\n", + " marks = \" ยท \".join(\n", + " f\"{label} {'โœ“' if frozenset(gene.cds_keys) in exact[label] else 'โœ—'}\" for label in exact\n", + " )\n", + " plotting.plot_tracks(\n", + " {label: path[strand] for label, path in paths.items()}, REGION[0],\n", + " (lo - 300, hi + 300), [gene], mark_errors=True,\n", + " title=f\"{gene_id} ({gene.strand} strand, {len(gene.cds_keys)} exons): {marks}\",\n", + " )\n", + " plt.show()\n", + "\n", + "SHOWCASE = \"gene-LOC11419821\"\n", + "show_gene(SHOWCASE)" + ] + }, + { + "cell_type": "markdown", + "id": "9b2328ad", + "metadata": {}, + "source": [ + "### Explore the region\n", + "\n", + "Pick any reference gene of the demo region (this needs a running notebook, e.g. in Colab). The\n", + "list starts with the genes where the decoders disagree; โœ“ marks a gene recovered exactly." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "ef30bd41", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:43:03.555827Z", + "iopub.status.busy": "2026-10-02T16:43:03.555701Z", + "iopub.status.idle": "2026-10-02T16:43:03.638462Z", + "shell.execute_reply": "2026-10-02T16:43:03.637868Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ca7c4be63365461496fbb8efecf52d0d", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Dropdown(description='gene', layout=Layout(width='720px'), options=(('gene-LOC11419821 (โ€ฆ" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import ipywidgets as widgets\n", + "\n", + "def label_of(gene_id: str) -> str:\n", + " gene = region_reference[gene_id]\n", + " marks = \" \".join(\n", + " f\"{name} {'โœ“' if frozenset(gene.cds_keys) in exact[name] else 'โœ—'}\" for name in exact\n", + " )\n", + " return f\"{gene_id} ({len(gene.cds_keys)} exons) | {marks}\"\n", + "\n", + "def disagreement(gene_id: str) -> tuple:\n", + " found = [frozenset(region_reference[gene_id].cds_keys) in exact[n] for n in exact]\n", + " return (len(set(found)) == 1, not found[-1], gene_id)\n", + "\n", + "options = [(label_of(g), g) for g in sorted(region_reference, key=disagreement)]\n", + "widgets.interact(\n", + " show_gene,\n", + " gene_id=widgets.Dropdown(options=options, value=SHOWCASE, description=\"gene\",\n", + " layout=widgets.Layout(width=\"720px\")),\n", + ");" + ] + }, + { + "cell_type": "markdown", + "id": "5a5fe323", + "metadata": {}, + "source": [ + "Most genes come out the same under all three decoders; where they differ, the HMM repairs\n", + "structures that the argmax breaks (a missing start codon, a one-base exon), and the constraints\n", + "move splice sites and codon boundaries onto the bases that can carry them. The list also shows the\n", + "limits: genes all three get wrong, and the occasional gene only the argmax gets right." + ] + }, + { + "cell_type": "markdown", + "id": "300ce86a", + "metadata": {}, + "source": [ + "# 5. ๐Ÿ”ฌ Two things about the input\n", + "\n", + "## 5.1 Soft-masked input: impact on performance\n", + "\n", + "NTv3 reads soft-masked genomes: repeats written in lowercase get their own tokens. Genes rarely\n", + "sit in repeats, so this is a useful hint. The same two windows were also predicted with the\n", + "sequence upper-cased, i.e. with the repeat annotation removed:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d4d63c75", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:43:03.640401Z", + "iopub.status.busy": "2026-10-02T16:43:03.640296Z", + "iopub.status.idle": "2026-10-02T16:43:06.352931Z", + "shell.execute_reply": "2026-10-02T16:43:06.352239Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Gene F1CDS F1predicted genes
soft-masked genome74.5090.79147
upper-cased genome72.9190.37148
\n", + "
" + ], + "text/plain": [ + " Gene F1 CDS F1 predicted genes\n", + "soft-masked genome 74.50 90.79 147\n", + "upper-cased genome 72.91 90.37 148" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "upper = region_prediction(\"upper_\")\n", + "pd.DataFrame({\n", + " label: {\"Gene F1\": 100 * r[\"Gene\"][\"F1\"], \"CDS F1\": 100 * r[\"CDS\"][\"F1\"],\n", + " \"predicted genes\": r[\"Gene\"][\"Pred_Total\"]}\n", + " for label, r in {\n", + " \"soft-masked genome\": ladder_scores[\"HMM + constraints + filters\"],\n", + " \"upper-cased genome\": score(genes_of(upper, \"hmm_constrained\", True), name=\"upper\"),\n", + " }.items()\n", + "}).T.astype({\"predicted genes\": int})" + ] + }, + { + "cell_type": "markdown", + "id": "22d05307", + "metadata": {}, + "source": [ + "On this region the difference is small, a couple of genes. The model was trained on soft-masked\n", + "genomes, so give it one (repeats in lowercase, as distributed by NCBI, Ensembl and Phytozome, or\n", + "produced by RepeatMasker / RepeatModeler): that is the input it expects.\n", + "\n", + "## 5.2 Context margins: why we keep only the central 75% of each window\n", + "\n", + "The model reads **1 Mb windows** (1,048,576 bp) but we keep its predictions for the **central\n", + "75%** only (786,432 bp), discarding **131,072 bp on each side**:\n", + "\n", + "```\n", + "|<-- 131 kb -->|<------------- 786 kb kept ------------->|<-- 131 kb -->|\n", + " discarded discarded\n", + "```\n", + "\n", + "Windows advance by 786 kb, so the kept centres tile the chromosome end to end and every base is\n", + "predicted with at least 131 kb of context on both sides.\n", + "\n", + "**Why.** Near a window edge the model sees context on one side only. To measure what that costs,\n", + "we predicted the first window over its full 1 Mb and compared its predictions near the right edge\n", + "with the ones we keep for the same bases (from the next window, where they sit in the centre):" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "2b6fbef2", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:43:06.354475Z", + "iopub.status.busy": "2026-10-02T16:43:06.354349Z", + "iopub.status.idle": "2026-10-02T16:43:07.552862Z", + "shell.execute_reply": "2026-10-02T16:43:07.552304Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "start = meta[\"full_window_start\"]\n", + "full = {\"+\": arrays[\"full_window_plus\"].astype(np.float32),\n", + " \"-\": arrays[\"full_window_rc\"].astype(np.float32)[::-1]}\n", + "lo, hi = REGION[0], start + SEQUENCE_LENGTH # bases both predictions cover\n", + "distance_kb = (hi - np.arange(lo, hi)) / 1_000\n", + "drift = sum( # total-variation distance: 0 identical, 1 disjoint\n", + " 0.5 * np.abs(np.exp(prediction.stitched(s)[lo - REGION[0] : hi - REGION[0]])\n", + " - np.exp(full[s][lo - start : hi - start])).sum(-1)\n", + " for s in \"+-\"\n", + ") / 2\n", + "edges = np.array([0, 1, 2, 4, 8, 16, 32, 64, 131, 262])\n", + "which = np.digitize(distance_kb, edges) - 1\n", + "centres = np.sqrt(np.maximum(edges[:-1], 0.5) * edges[1:])\n", + "means = np.array([drift[which == i].mean() for i in range(len(edges) - 1)])\n", + "plotting.plot_edge_drift(centres, means, inference.crop_of(SEQUENCE_LENGTH, KEEP) / 1_000);" + ] + }, + { + "cell_type": "markdown", + "id": "03d7f60e", + "metadata": {}, + "source": [ + "Within a few kb of the edge the predictions change a lot, and they keep drifting up to tens of kb\n", + "in. Beyond 131 kb from the edge (the kept centre) they are identical. Keeping 75% leaves every\n", + "retained base far from an edge." + ] + }, + { + "cell_type": "markdown", + "id": "e2633e6c", + "metadata": {}, + "source": [ + "# 6. ๐Ÿ“ The output: a GFF3 file\n", + "\n", + "The decoded genes, written as GFF3, are the annotation of the region:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "2689c5c4", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:43:07.554237Z", + "iopub.status.busy": "2026-10-02T16:43:07.554116Z", + "iopub.status.idle": "2026-10-02T16:43:07.557974Z", + "shell.execute_reply": "2026-10-02T16:43:07.557391Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "##gff-version 3\n", + "NC_053042.1\tNTv3\tgene\t11016194\t11024377\t.\t-\t.\tID=gene_1_m\n", + "NC_053042.1\tNTv3\tCDS\t11016194\t11017329\t.\t-\t2\tID=gene_1_m_CDS_11016194;Parent=gene_1_m\n", + "NC_053042.1\tNTv3\tintron\t11017330\t11020453\t.\t-\t.\tID=gene_1_m_intron_11017330;Parent=gene_1_m\n", + "NC_053042.1\tNTv3\tCDS\t11020454\t11020510\t.\t-\t2\tID=gene_1_m_CDS_11020454;Parent=gene_1_m\n", + "NC_053042.1\tNTv3\tintron\t11020511\t11023572\t.\t-\t.\tID=gene_1_m_intron_11020511;Parent=gene_1_m\n", + "NC_053042.1\tNTv3\tCDS\t11023573\t11024377\t.\t-\t0\tID=gene_1_m_CDS_11023573;Parent=gene_1_m\n", + "NC_053042.1\tNTv3\tgene\t11030855\t11033287\t.\t+\t.\tID=gene_1_p\n", + "NC_053042.1\tNTv3\tCDS\t11030855\t11031569\t.\t+\t0\tID=gene_1_p_CDS_11030855;Parent=gene_1_p\n", + "NC_053042.1\tNTv3\tintron\t11031570\t1103205\n" + ] + } + ], + "source": [ + "final = ladder[\"HMM + constraints + filters\"]\n", + "decoding.write_gff3(\"ntv3_demo_region.gff3\", final)\n", + "print(open(\"ntv3_demo_region.gff3\").read()[:700])" + ] + }, + { + "cell_type": "markdown", + "id": "be722b51", + "metadata": {}, + "source": [ + "This notebook decodes with a simplified PyTorch/NumPy version of our pipeline (no U12 intron\n", + "lane). On the demo region it scores exactly like the annotation we released, which our JAX\n", + "pipeline produced:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "6c174f3c", + "metadata": { + "execution": { + "iopub.execute_input": "2026-10-02T16:43:07.559242Z", + "iopub.status.busy": "2026-10-02T16:43:07.559129Z", + "iopub.status.idle": "2026-10-02T16:43:09.379826Z", + "shell.execute_reply": "2026-10-02T16:43:09.379125Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
predicted genesGene F1CDS F1
this notebook14774.590.79
released NTv3 annotation14774.590.79
\n", + "
" + ], + "text/plain": [ + " predicted genes Gene F1 CDS F1\n", + "this notebook 147 74.5 90.79\n", + "released NTv3 annotation 147 74.5 90.79" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def region_scores(path) -> dict:\n", + " sets = evaluation.prepare_scoring_sets(reference_path, path, reference_path, [CHROM])\n", + " r = evaluation.score_sets(evaluation.restrict_to_region(sets, CHROM, REGION[0] + 1, REGION[1]))\n", + " return {\"predicted genes\": r[\"Gene\"][\"Pred_Total\"], \"Gene F1\": 100 * r[\"Gene\"][\"F1\"],\n", + " \"CDS F1\": 100 * r[\"CDS\"][\"F1\"]}\n", + "\n", + "pd.DataFrame({\n", + " \"this notebook\": region_scores(\"ntv3_demo_region.gff3\"),\n", + " \"released NTv3 annotation\": region_scores(released_path),\n", + "}).T.astype({\"predicted genes\": int})" + ] + }, + { + "cell_type": "markdown", + "id": "8dfe197b", + "metadata": {}, + "source": [ + "---\n", + "**Next.** To score a whole-genome annotation (NTv3's or yours) with the benchmark pipeline and\n", + "break its errors down, see notebook 03c. To train an annotation model, see notebook 03a." + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}