[be1279]: / sub-packages / bionemo-evo2 / examples / zeroshot_brca1.ipynb

Download this file

1216 lines (1215 with data), 177.6 kB

{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Zero-shot prediction of BRCA1 variant effects with Evo 2\n",
    "Deploy this tutorial on brev.dev: \n",
    "[![ Click here to deploy.](https://brev-assets.s3.us-west-1.amazonaws.com/nv-lb-dark.svg)](https://console.brev.dev/launchable/deploy?launchableID=env-2uGqxNLgVdl752F2qcTFwHHn4Rj)\n",
    "\n",
    "*Note - this notebook is a reproduction of The Arc Institute’s same-titled notebook [here](https://github.com/ArcInstitute/evo2/blob/main/notebooks/brca1/brca1_zero_shot_vep.ipynb), using the BioNeMo 2 implementation of Evo2.*\n",
    "\n",
    "Evo2 is a foundation AI model trained on 9.3 trillion DNA base pairs, predicting variant effects without prior tast-specific training. \n",
    "\n",
    "Without being explicitly trained on BRCA1 variants, we show Evo 2's ability to generalize across all life forms.\n",
    "\n",
    "The human *BRCA1* gene encodes for a protein that repairs damaged DNA ([Moynahan et al., 1999](https://www.cell.com/molecular-cell/fulltext/S1097-2765%2800%2980202-6)). Certain variants of this gene have been associated with an increased risk of breast and ovarian cancers ([Miki et al., 1994](https://www.science.org/doi/10.1126/science.7545954?url_ver=Z39.88-2003&rfr_id=ori:rid:crossref.org&rfr_dat=cr_pub%20%200pubmed)). Using Evo 2, we can predict whether a particular single nucleotide variant (SNV) of the *BRCA1* gene is likely to be harmful to the protein's function, and thus potentially increase the risk of cancer for the patient with the genetic variant."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%capture\n",
    "!pip install biopython openpyxl\n",
    "import os\n",
    "\n",
    "\n",
    "# Runs a subset of the model layers to test that the notebook runs in CI, but the output will be incorrect.\n",
    "FAST_CI_MODE: bool = os.environ.get(\"FAST_CI_MODE\", False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import glob\n",
    "import gzip\n",
    "import json\n",
    "import math\n",
    "import os\n",
    "from pathlib import Path\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import torch\n",
    "from Bio import SeqIO\n",
    "from sklearn.metrics import auc, roc_auc_score, roc_curve"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We start by loading a dataset from [Findlay et al. (2018)](https://www.nature.com/articles/s41586-018-0461-z), which contains experimentally measured function scores of 3,893 *BRCA1* SNVs. These function scores reflect the extent by which the genetic variant has disrupted the protein's function, with lower scores indicating greater disruption. In this dataset, the SNVs are classified into three categories based on their function scores: `LOF` (loss-of-function), `INT` (intermediate), and `FUNC` (functional). We start by reading in this dataset.\n",
    "\n",
    "To keep the notebook streamlined, we've abstracted much of the preprocessing logic into accompanying scripts located in `brca1_utils`. The full notebook can be viewed [here](https://github.com/NVIDIA/bionemo-framework/blob/main/docs/docs/user-guide/examples/bionemo-evo2/evo2_zeroshot_brca.ipynb)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "jupyter": {
     "source_hidden": true
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def download_data(data_dir=\"brca1\", commit_hash=\"3819474bee6c24938016614411f1fa025e542bbe\"):\n",
    "    \"\"\"Download required data files if they don't exist locally.\n",
    "\n",
    "    Parameters:\n",
    "    -----------\n",
    "    data_dir : str\n",
    "        Directory to store downloaded files\n",
    "    commit_hash : str\n",
    "        GitHub commit hash for data version\n",
    "    \"\"\"\n",
    "    if not os.path.exists(data_dir):\n",
    "        os.makedirs(data_dir)\n",
    "\n",
    "    excel_path = os.path.join(data_dir, \"41586_2018_461_MOESM3_ESM.xlsx\")\n",
    "    genome_path = os.path.join(data_dir, \"GRCh37.p13_chr17.fna.gz\")\n",
    "\n",
    "    if not os.path.exists(excel_path):\n",
    "        os.system(\n",
    "            f\"wget https://github.com/ArcInstitute/evo2/raw/{commit_hash}/notebooks/brca1/41586_2018_461_MOESM3_ESM.xlsx -O {excel_path}\"\n",
    "        )\n",
    "\n",
    "    if not os.path.exists(genome_path):\n",
    "        os.system(\n",
    "            f\"wget https://github.com/ArcInstitute/evo2/raw/{commit_hash}/notebooks/brca1/GRCh37.p13_chr17.fna.gz -O {genome_path}\"\n",
    "        )\n",
    "\n",
    "    return excel_path, genome_path\n",
    "\n",
    "\n",
    "def load_genome_sequence(genome_path):\n",
    "    \"\"\"Load genome sequence from FASTA file.\n",
    "\n",
    "    Parameters:\n",
    "    -----------\n",
    "    genome_path : str\n",
    "        Path to the genome FASTA file\n",
    "\n",
    "    Returns:\n",
    "    --------\n",
    "    str\n",
    "        Genome sequence string\n",
    "    \"\"\"\n",
    "    with gzip.open(genome_path, \"rt\") as handle:\n",
    "        for record in SeqIO.parse(handle, \"fasta\"):\n",
    "            return str(record.seq)\n",
    "\n",
    "    raise ValueError(\"Failed to parse genome sequence\")\n",
    "\n",
    "\n",
    "def load_brca1_data(excel_path):\n",
    "    \"\"\"Load and preprocess BRCA1 data from Excel file.\n",
    "\n",
    "    Parameters:\n",
    "    -----------\n",
    "    excel_path : str\n",
    "        Path to the Excel file\n",
    "\n",
    "    Returns:\n",
    "    --------\n",
    "    pandas.DataFrame\n",
    "        Processed BRCA1 dataframe\n",
    "    \"\"\"\n",
    "    # Load the dataframe\n",
    "    brca1_df = pd.read_excel(excel_path, header=2)\n",
    "\n",
    "    # Select and rename columns\n",
    "    brca1_df = brca1_df[\n",
    "        [\n",
    "            \"chromosome\",\n",
    "            \"position (hg19)\",\n",
    "            \"reference\",\n",
    "            \"alt\",\n",
    "            \"function.score.mean\",\n",
    "            \"func.class\",\n",
    "        ]\n",
    "    ]\n",
    "\n",
    "    brca1_df.rename(\n",
    "        columns={\n",
    "            \"chromosome\": \"chrom\",\n",
    "            \"position (hg19)\": \"pos\",\n",
    "            \"reference\": \"ref\",\n",
    "            \"alt\": \"alt\",\n",
    "            \"function.score.mean\": \"score\",\n",
    "            \"func.class\": \"class\",\n",
    "        },\n",
    "        inplace=True,\n",
    "    )\n",
    "\n",
    "    # Convert to two-class system\n",
    "    brca1_df[\"class\"] = brca1_df[\"class\"].replace([\"FUNC\", \"INT\"], \"FUNC/INT\")\n",
    "\n",
    "    return brca1_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%capture\n",
    "\n",
    "# Configuration parameters\n",
    "DATA_DIR = \"brca1\"\n",
    "SAMPLE_CONFIG = {\"sample_frac\": 0.05, \"balanced\": True, \"disable\": False, \"random_state\": 42}\n",
    "\n",
    "# 1. Download the necessary data files if not present\n",
    "excel_path, genome_path = download_data(DATA_DIR)\n",
    "seq_chr17 = load_genome_sequence(genome_path)\n",
    "\n",
    "# 2. Load and preprocess BRCA1 data\n",
    "brca1_df = load_brca1_data(excel_path)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We then group the `FUNC` and `INT` classes of SNVs together into a single category (`FUNC/INT`).\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We build a function to parse the reference and variant sequences of a 8,192-bp window around the genomic position of each SNV, using the reference sequence of human chromosome 17 where *BRCA1* is located.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To make things run faster, we'll just look at a balanced sample of our data. If you want to run on the full dataset, set `disable_sample=True`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "jupyter": {
     "source_hidden": true
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def sample_data(df, sample_frac=1.0, balanced=True, disable=False, random_state=42):\n",
    "    \"\"\"Sample dataframe, optionally with balanced classes.\n",
    "\n",
    "    Parameters:\n",
    "    -----------\n",
    "    df : pandas.DataFrame\n",
    "        Input dataframe\n",
    "    sample_frac : float\n",
    "        Fraction of data to sample\n",
    "    balanced : bool\n",
    "        Whether to balance classes\n",
    "    disable : bool\n",
    "        Whether to disable sampling\n",
    "    random_state : int\n",
    "        Random seed for reproducibility\n",
    "\n",
    "    Returns:\n",
    "    --------\n",
    "    pandas.DataFrame\n",
    "        Sampled dataframe\n",
    "    \"\"\"\n",
    "    if disable:\n",
    "        return df\n",
    "\n",
    "    if balanced:\n",
    "        # Get the number of rows in the dataframe\n",
    "        num_rows_minor_class = math.ceil(len(df[df[\"class\"] == \"LOF\"]) * sample_frac)\n",
    "        return (\n",
    "            pd.concat(\n",
    "                [\n",
    "                    df[df[\"class\"] == \"LOF\"].sample(n=num_rows_minor_class, random_state=random_state),\n",
    "                    df[df[\"class\"] == \"FUNC/INT\"].sample(n=num_rows_minor_class, random_state=random_state),\n",
    "                ]\n",
    "            )\n",
    "            .sample(frac=1.0, random_state=random_state)\n",
    "            .reset_index(drop=True)\n",
    "        )\n",
    "    else:\n",
    "        # Calculate the number of rows to sample\n",
    "        return df.sample(frac=sample_frac, random_state=random_state).reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>chrom</th>\n",
       "      <th>pos</th>\n",
       "      <th>ref</th>\n",
       "      <th>alt</th>\n",
       "      <th>score</th>\n",
       "      <th>class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>17</td>\n",
       "      <td>41199726</td>\n",
       "      <td>T</td>\n",
       "      <td>C</td>\n",
       "      <td>0.159762</td>\n",
       "      <td>FUNC/INT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>17</td>\n",
       "      <td>41209074</td>\n",
       "      <td>T</td>\n",
       "      <td>A</td>\n",
       "      <td>-2.065569</td>\n",
       "      <td>LOF</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>17</td>\n",
       "      <td>41256913</td>\n",
       "      <td>A</td>\n",
       "      <td>C</td>\n",
       "      <td>-0.847753</td>\n",
       "      <td>FUNC/INT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>17</td>\n",
       "      <td>41219631</td>\n",
       "      <td>T</td>\n",
       "      <td>A</td>\n",
       "      <td>-2.053739</td>\n",
       "      <td>LOF</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>17</td>\n",
       "      <td>41215965</td>\n",
       "      <td>G</td>\n",
       "      <td>A</td>\n",
       "      <td>-1.671525</td>\n",
       "      <td>LOF</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   chrom       pos ref alt     score     class\n",
       "0     17  41199726   T   C  0.159762  FUNC/INT\n",
       "1     17  41209074   T   A -2.065569       LOF\n",
       "2     17  41256913   A   C -0.847753  FUNC/INT\n",
       "3     17  41219631   T   A -2.053739       LOF\n",
       "4     17  41215965   G   A -1.671525       LOF"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "OUTPUT_DIR = \"brca1_fasta_files\"\n",
    "\n",
    "brca1_df = sample_data(\n",
    "    brca1_df,\n",
    "    sample_frac=SAMPLE_CONFIG[\"sample_frac\"],\n",
    "    balanced=SAMPLE_CONFIG[\"balanced\"],\n",
    "    disable=SAMPLE_CONFIG[\"disable\"],\n",
    "    random_state=SAMPLE_CONFIG[\"random_state\"],\n",
    ")\n",
    "\n",
    "brca1_df.head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, we'll write these to local `.fasta` files so we can use them for prediction below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "jupyter": {
     "source_hidden": true
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def parse_sequences(pos, ref, alt, seq_chr17, window_size=8192):\n",
    "    \"\"\"Parse reference and variant sequences from the reference genome sequence.\n",
    "\n",
    "    Parameters:\n",
    "    -----------\n",
    "    pos : int\n",
    "        Position (1-indexed)\n",
    "    ref : str\n",
    "        Reference base\n",
    "    alt : str\n",
    "        Alternate base\n",
    "    seq_chr17 : str\n",
    "        Full chromosome 17 sequence\n",
    "    window_size : int\n",
    "        Size of the sequence window to extract\n",
    "\n",
    "    Returns:\n",
    "    --------\n",
    "    tuple\n",
    "        (reference_sequence, variant_sequence)\n",
    "    \"\"\"\n",
    "    p = pos - 1  # Convert to 0-indexed position\n",
    "    full_seq = seq_chr17\n",
    "\n",
    "    ref_seq_start = max(0, p - window_size // 2)\n",
    "    ref_seq_end = min(len(full_seq), p + window_size // 2)\n",
    "    ref_seq = seq_chr17[ref_seq_start:ref_seq_end]\n",
    "    snv_pos_in_ref = min(window_size // 2, p)\n",
    "    var_seq = ref_seq[:snv_pos_in_ref] + alt + ref_seq[snv_pos_in_ref + 1 :]\n",
    "\n",
    "    # Sanity checks\n",
    "    assert len(var_seq) == len(ref_seq)\n",
    "    assert ref_seq[snv_pos_in_ref] == ref\n",
    "    assert var_seq[snv_pos_in_ref] == alt\n",
    "\n",
    "    return ref_seq, var_seq\n",
    "\n",
    "\n",
    "def generate_fasta_files(df, seq_chr17, output_dir=\"brca1_fasta_files\", window_size=8192):\n",
    "    \"\"\"Generate FASTA files for reference and variant sequences.\n",
    "\n",
    "    Parameters:\n",
    "    -----------\n",
    "    df : pandas.DataFrame\n",
    "        Dataframe with variant information\n",
    "    seq_chr17 : str\n",
    "        Chromosome 17 sequence\n",
    "    output_dir : str\n",
    "        Output directory for FASTA files\n",
    "    window_size : int\n",
    "        Size of sequence window\n",
    "\n",
    "    Returns:\n",
    "    --------\n",
    "    pandas.DataFrame\n",
    "        Dataframe with added columns for FASTA names\n",
    "    \"\"\"\n",
    "    # Create output directory\n",
    "    output_dir = Path(output_dir)\n",
    "    output_dir.mkdir(parents=True, exist_ok=True)\n",
    "\n",
    "    # Paths for output files\n",
    "    ref_fasta_path = output_dir / \"brca1_reference_sequences.fasta\"\n",
    "    var_fasta_path = output_dir / \"brca1_variant_sequences.fasta\"\n",
    "\n",
    "    # Track unique sequences\n",
    "    ref_sequences = set()\n",
    "    var_sequences = set()\n",
    "    ref_seq_to_name = {}\n",
    "\n",
    "    # Store unique sequences with metadata for writing\n",
    "    ref_entries = []\n",
    "    var_entries = []\n",
    "    ref_names = []\n",
    "    var_names = []\n",
    "\n",
    "    # Collect unique reference and variant sequences\n",
    "    for idx, row in df.iterrows():\n",
    "        ref_seq, var_seq = parse_sequences(row[\"pos\"], row[\"ref\"], row[\"alt\"], seq_chr17, window_size)\n",
    "\n",
    "        # Add to sets to ensure uniqueness\n",
    "        if ref_seq not in ref_sequences:\n",
    "            ref_sequences.add(ref_seq)\n",
    "            ref_name = f\"BRCA1_ref_pos_{row['pos']}_{row['ref']}_class_{row['class']}\"\n",
    "\n",
    "            ref_entries.append(f\">{ref_name}\\n{ref_seq}\\n\")\n",
    "            ref_names.append(ref_name)\n",
    "            ref_seq_to_name[ref_seq] = ref_name\n",
    "        else:\n",
    "            ref_name = ref_seq_to_name[ref_seq]\n",
    "            ref_names.append(ref_name)\n",
    "\n",
    "        if var_seq not in var_sequences:\n",
    "            var_sequences.add(var_seq)\n",
    "            var_name = f\"BRCA1_var_pos_{row['pos']}_{row['ref']}to{row['alt']}_class_{row['class']}\"\n",
    "\n",
    "            var_entries.append(f\">{var_name}\\n{var_seq}\\n\")\n",
    "            var_names.append(var_name)\n",
    "        else:\n",
    "            assert False, \"Duplicate variant sequence\"\n",
    "\n",
    "    # Write unique sequences to FASTA files\n",
    "    with open(ref_fasta_path, \"w\") as f:\n",
    "        f.writelines(ref_entries)\n",
    "\n",
    "    with open(var_fasta_path, \"w\") as f:\n",
    "        f.writelines(var_entries)\n",
    "\n",
    "    # Add FASTA names to dataframe\n",
    "    df_with_names = df.copy()\n",
    "    df_with_names[\"ref_fasta_name\"] = ref_names\n",
    "    df_with_names[\"var_fasta_name\"] = var_names\n",
    "\n",
    "    print(f\"Total unique reference sequences: {len(ref_sequences)}\")\n",
    "    print(f\"Total unique variant sequences: {len(var_sequences)}\")\n",
    "\n",
    "    return df_with_names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Total unique reference sequences: 79\n",
      "Total unique variant sequences: 84\n"
     ]
    }
   ],
   "source": [
    "brca1_df = generate_fasta_files(brca1_df, seq_chr17, output_dir=OUTPUT_DIR)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load Evo 2 Checkpoints"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "Then, we load Evo 2 1B model, loading the Evo 2 weights from hugging face.\n",
    "\n",
    "*Note - for better performance, load the 7b model by setting `MODEL_SIZE=\"7b\"` which also works well GPUs that do not support FP8.*\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%capture\n",
    "EXPERIMENTAL_1b_CHECKPOINT: bool = False\n",
    "MODEL_SIZE = \"1b\"  # also try 7b if you have a GPU with more than 32GB of memory\n",
    "# Define checkpoint path\n",
    "if EXPERIMENTAL_1b_CHECKPOINT and MODEL_SIZE == \"1b\":\n",
    "    from bionemo.core.data.load import load\n",
    "\n",
    "    # This is a new 1b checkpoint that has been fine-tuned on BF16 hardware. It should be able to handle FP8 as well.\n",
    "    #  this line will download the checkpoint from NGC to your $HOME/.cache/bionemo directory and return the path.\n",
    "    #  alternatively you can use `CHECKPOINT_PATH=$(download_bionemo_data evo2/1b-8k-bf16:1.0)`  to do the same on the\n",
    "    #  command line.\n",
    "    checkpoint_path = load(\"evo2/1b-8k-bf16:1.0\")\n",
    "else:\n",
    "    checkpoint_path = Path(f\"nemo2_evo2_{MODEL_SIZE}_8k\")\n",
    "\n",
    "    # Check if the directory does not exist or is empty\n",
    "    if not checkpoint_path.exists() or not any(checkpoint_path.iterdir()):\n",
    "        !evo2_convert_to_nemo2 --model-path hf://arcinstitute/savanna_evo2_{MODEL_SIZE}_base --model-size {MODEL_SIZE} --output-dir nemo2_evo2_{MODEL_SIZE}_8k\n",
    "    else:\n",
    "        print(\"Checkpoint directory is not empty. Skipping command.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Score Sequences"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, we score the likelihoods of the reference and variant sequences of each SNV.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "jupyter": {
     "source_hidden": true
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def check_fp8_support():\n",
    "    \"\"\"Check if FP8 is supported on the current GPU.\n",
    "\n",
    "    FP8 requires compute capability 8.9+ (Ada Lovelace/Hopper architecture or newer).\n",
    "    \"\"\"\n",
    "    if not torch.cuda.is_available():\n",
    "        return False, \"CUDA not available\"\n",
    "\n",
    "    device_props = torch.cuda.get_device_properties(0)\n",
    "    compute_capability = f\"{device_props.major}.{device_props.minor}\"\n",
    "    device_name = device_props.name\n",
    "\n",
    "    # FP8 is supported on compute capability 8.9+ (Ada Lovelace/Hopper architecture)\n",
    "    is_supported = (device_props.major > 8) or (device_props.major == 8 and device_props.minor >= 9)\n",
    "\n",
    "    return is_supported, f\"Device: {device_name}, Compute Capability: {compute_capability}\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "FP8 Support: False\n",
      "Device: NVIDIA RTX A6000, Compute Capability: 8.6\n"
     ]
    }
   ],
   "source": [
    "# Define output directories for prediction results\n",
    "output_dir = Path(\"brca1_fasta_files\")\n",
    "output_dir.mkdir(parents=True, exist_ok=True)\n",
    "\n",
    "# Save reference and variant sequences to FASTA\n",
    "ref_fasta_path = output_dir / \"brca1_reference_sequences.fasta\"\n",
    "var_fasta_path = output_dir / \"brca1_variant_sequences.fasta\"\n",
    "\n",
    "predict_ref_dir = output_dir / \"reference_predictions\"\n",
    "predict_var_dir = output_dir / \"variant_predictions\"\n",
    "predict_ref_dir.mkdir(parents=True, exist_ok=True)\n",
    "predict_var_dir.mkdir(parents=True, exist_ok=True)\n",
    "\n",
    "fp8_supported, gpu_info = check_fp8_support()\n",
    "print(f\"FP8 Support: {fp8_supported}\")\n",
    "print(gpu_info)\n",
    "\n",
    "# Note: If FP8 is not supported, you may want to disable it in the model config\n",
    "# The Evo2 config has 'use_fp8_input_projections: True' by default\n",
    "\n",
    "if FAST_CI_MODE:\n",
    "    model_subset_option = \"--num-layers 4 --hybrid-override-pattern SDH*\"\n",
    "else:\n",
    "    model_subset_option = \"\"\n",
    "\n",
    "fp8_option = \"--fp8\" if fp8_supported else \"\"\n",
    "\n",
    "# Update predict commands to run on the full dataset\n",
    "predict_ref_command = (\n",
    "    f\"predict_evo2 --fasta {ref_fasta_path} --ckpt-dir {checkpoint_path} \"\n",
    "    f\"--output-dir {predict_ref_dir} --model-size {MODEL_SIZE} --tensor-parallel-size 1  {model_subset_option} \"\n",
    "    f\"--pipeline-model-parallel-size 1 --context-parallel-size 1 --output-log-prob-seqs {fp8_option}\"\n",
    ")\n",
    "\n",
    "predict_var_command = (\n",
    "    f\"predict_evo2 --fasta {var_fasta_path} --ckpt-dir {checkpoint_path} \"\n",
    "    f\"--output-dir {predict_var_dir} --model-size {MODEL_SIZE} --tensor-parallel-size 1 {model_subset_option} \"\n",
    "    f\"--pipeline-model-parallel-size 1 --context-parallel-size 1 --output-log-prob-seqs {fp8_option}\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Score reference sequences:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%capture\n",
    "print(f\"Running command: {predict_ref_command}\")\n",
    "!{predict_ref_command}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Score variant sequences:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%capture\n",
    "print(f\"Running command: {predict_var_command}\")\n",
    "!{predict_var_command}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We calculate the change in likelihoods for each variant relative to the likelihood of their respective wild-type sequence.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, we load the prediction files and sequence id maps:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Find and load prediction files\n",
    "ref_pred_files = glob.glob(os.path.join(predict_ref_dir, \"predictions__rank_*.pt\"))\n",
    "var_pred_files = glob.glob(os.path.join(predict_var_dir, \"predictions__rank_*.pt\"))\n",
    "\n",
    "# Load sequence ID maps (maps sequence ID -> prediction index)\n",
    "with open(os.path.join(predict_ref_dir, \"seq_idx_map.json\"), \"r\") as f:\n",
    "    ref_seq_idx_map = json.load(f)\n",
    "with open(os.path.join(predict_var_dir, \"seq_idx_map.json\"), \"r\") as f:\n",
    "    var_seq_idx_map = json.load(f)\n",
    "\n",
    "# Load predictions\n",
    "ref_preds = torch.load(ref_pred_files[0])\n",
    "var_preds = torch.load(var_pred_files[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Then, calculate the delta score:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>chrom</th>\n",
       "      <th>pos</th>\n",
       "      <th>ref</th>\n",
       "      <th>alt</th>\n",
       "      <th>score</th>\n",
       "      <th>class</th>\n",
       "      <th>ref_fasta_name</th>\n",
       "      <th>var_fasta_name</th>\n",
       "      <th>ref_log_probs</th>\n",
       "      <th>var_log_probs</th>\n",
       "      <th>evo2_delta_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>17</td>\n",
       "      <td>41199726</td>\n",
       "      <td>T</td>\n",
       "      <td>C</td>\n",
       "      <td>0.159762</td>\n",
       "      <td>FUNC/INT</td>\n",
       "      <td>BRCA1_ref_pos_41199726_T_class_FUNC/INT</td>\n",
       "      <td>BRCA1_var_pos_41199726_TtoC_class_FUNC/INT</td>\n",
       "      <td>-0.952916</td>\n",
       "      <td>-0.953258</td>\n",
       "      <td>-0.000342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>17</td>\n",
       "      <td>41209074</td>\n",
       "      <td>T</td>\n",
       "      <td>A</td>\n",
       "      <td>-2.065569</td>\n",
       "      <td>LOF</td>\n",
       "      <td>BRCA1_ref_pos_41209074_T_class_LOF</td>\n",
       "      <td>BRCA1_var_pos_41209074_TtoA_class_LOF</td>\n",
       "      <td>-0.750398</td>\n",
       "      <td>-0.750437</td>\n",
       "      <td>-0.000039</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>17</td>\n",
       "      <td>41256913</td>\n",
       "      <td>A</td>\n",
       "      <td>C</td>\n",
       "      <td>-0.847753</td>\n",
       "      <td>FUNC/INT</td>\n",
       "      <td>BRCA1_ref_pos_41256913_A_class_FUNC/INT</td>\n",
       "      <td>BRCA1_var_pos_41256913_AtoC_class_FUNC/INT</td>\n",
       "      <td>-0.798164</td>\n",
       "      <td>-0.799011</td>\n",
       "      <td>-0.000847</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>17</td>\n",
       "      <td>41219631</td>\n",
       "      <td>T</td>\n",
       "      <td>A</td>\n",
       "      <td>-2.053739</td>\n",
       "      <td>LOF</td>\n",
       "      <td>BRCA1_ref_pos_41219631_T_class_LOF</td>\n",
       "      <td>BRCA1_var_pos_41219631_TtoA_class_LOF</td>\n",
       "      <td>-1.032126</td>\n",
       "      <td>-1.032697</td>\n",
       "      <td>-0.000571</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>17</td>\n",
       "      <td>41215965</td>\n",
       "      <td>G</td>\n",
       "      <td>A</td>\n",
       "      <td>-1.671525</td>\n",
       "      <td>LOF</td>\n",
       "      <td>BRCA1_ref_pos_41215965_G_class_LOF</td>\n",
       "      <td>BRCA1_var_pos_41215965_GtoA_class_LOF</td>\n",
       "      <td>-0.860847</td>\n",
       "      <td>-0.861287</td>\n",
       "      <td>-0.000441</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   chrom       pos ref alt     score     class  \\\n",
       "0     17  41199726   T   C  0.159762  FUNC/INT   \n",
       "1     17  41209074   T   A -2.065569       LOF   \n",
       "2     17  41256913   A   C -0.847753  FUNC/INT   \n",
       "3     17  41219631   T   A -2.053739       LOF   \n",
       "4     17  41215965   G   A -1.671525       LOF   \n",
       "\n",
       "                            ref_fasta_name  \\\n",
       "0  BRCA1_ref_pos_41199726_T_class_FUNC/INT   \n",
       "1       BRCA1_ref_pos_41209074_T_class_LOF   \n",
       "2  BRCA1_ref_pos_41256913_A_class_FUNC/INT   \n",
       "3       BRCA1_ref_pos_41219631_T_class_LOF   \n",
       "4       BRCA1_ref_pos_41215965_G_class_LOF   \n",
       "\n",
       "                               var_fasta_name  ref_log_probs  var_log_probs  \\\n",
       "0  BRCA1_var_pos_41199726_TtoC_class_FUNC/INT      -0.952916      -0.953258   \n",
       "1       BRCA1_var_pos_41209074_TtoA_class_LOF      -0.750398      -0.750437   \n",
       "2  BRCA1_var_pos_41256913_AtoC_class_FUNC/INT      -0.798164      -0.799011   \n",
       "3       BRCA1_var_pos_41219631_TtoA_class_LOF      -1.032126      -1.032697   \n",
       "4       BRCA1_var_pos_41215965_GtoA_class_LOF      -0.860847      -0.861287   \n",
       "\n",
       "   evo2_delta_score  \n",
       "0         -0.000342  \n",
       "1         -0.000039  \n",
       "2         -0.000847  \n",
       "3         -0.000571  \n",
       "4         -0.000441  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# next, calculate change in likelihoods\n",
    "ref_log_probs = []\n",
    "var_log_probs = []\n",
    "for _, row in brca1_df.iterrows():\n",
    "    ref_name = row[\"ref_fasta_name\"]\n",
    "    var_name = row[\"var_fasta_name\"]\n",
    "    ref_log_probs.append(ref_preds[\"log_probs_seqs\"][ref_seq_idx_map[ref_name]].item())\n",
    "    var_log_probs.append(var_preds[\"log_probs_seqs\"][var_seq_idx_map[var_name]].item())\n",
    "brca1_df[\"ref_log_probs\"] = ref_log_probs\n",
    "brca1_df[\"var_log_probs\"] = var_log_probs\n",
    "# ideally probability of a broken variant is lower than a good one. So a bad var - good ref is negative.\n",
    "brca1_df[\"evo2_delta_score\"] = brca1_df[\"var_log_probs\"] - brca1_df[\"ref_log_probs\"]\n",
    "brca1_df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This delta likelihood should be predictive of how disruptive the SNV is to the protein's function: the lower the delta, the more likely that the SNV is disruptive. We can show this by comparing the distributions of delta likelihoods for the two classes of SNVs (functional/intermediate vs loss-of-function)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "jupyter": {
     "source_hidden": true
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def plot_strip_with_means(df, x_col=\"evo2_delta_score\", class_col=\"class\"):\n",
    "    \"\"\"Creates a strip plot with jittered points and median indicators for each class using Seaborn.\n",
    "\n",
    "    Parameters:\n",
    "    - df (pd.DataFrame): The input DataFrame containing data.\n",
    "    - x_col (str): The column name representing the x-axis values (e.g., evo2_delta_score).\n",
    "    - class_col (str): The column name representing the class labels.\n",
    "\n",
    "    Returns:\n",
    "    - matplotlib Figure: Strip plot with median indicators.\n",
    "    \"\"\"\n",
    "    # NVIDIA theme colors\n",
    "    NVIDIA_GREEN = \"#76B900\"\n",
    "    BACKGROUND_COLOR = \"#F8F8F8\"\n",
    "    GRID_COLOR = \"#DDDDDD\"\n",
    "    FONT_COLOR = \"#333333\"\n",
    "\n",
    "    # Determine order of classes (if not already specified)\n",
    "    unique_classes = sorted(df[class_col].unique())\n",
    "\n",
    "    # Set up the plot with NVIDIA theme\n",
    "    plt.figure(figsize=(9, 5), facecolor=BACKGROUND_COLOR)\n",
    "    plt.style.use(\"default\")  # Reset to default to avoid any pre-existing style\n",
    "\n",
    "    # Create strip plot\n",
    "    p = sns.stripplot(\n",
    "        data=df,\n",
    "        x=x_col,\n",
    "        y=class_col,\n",
    "        hue=class_col,\n",
    "        order=unique_classes,\n",
    "        palette=[NVIDIA_GREEN, \"red\"],\n",
    "        size=6,\n",
    "        jitter=0.3,\n",
    "        alpha=0.6,\n",
    "    )\n",
    "\n",
    "    # Add median indicators using boxplot\n",
    "    sns.boxplot(\n",
    "        showmeans=True,\n",
    "        meanline=True,\n",
    "        meanprops={\"visible\": False},\n",
    "        medianprops={\"color\": \"black\", \"ls\": \"-\", \"lw\": 2},\n",
    "        whiskerprops={\"visible\": False},\n",
    "        zorder=10,\n",
    "        x=x_col,\n",
    "        y=class_col,\n",
    "        data=df,\n",
    "        order=unique_classes,\n",
    "        showfliers=False,\n",
    "        showbox=False,\n",
    "        showcaps=False,\n",
    "        ax=p,\n",
    "    )\n",
    "\n",
    "    # Customize plot appearance\n",
    "    plt.title(\n",
    "        \"Distribution of Delta Likelihoods Scores\\nComparing Evo 2 likelihood scores for different BRCA1 SNV classes\",\n",
    "        color=FONT_COLOR,\n",
    "        fontsize=12,\n",
    "        loc=\"left\",\n",
    "    )\n",
    "    plt.xlabel(\"Delta Likelihood Score, Evo 2\", color=FONT_COLOR)\n",
    "    plt.ylabel(\"BRCA1 SNV Class\", color=FONT_COLOR)\n",
    "\n",
    "    # Customize grid and tick colors\n",
    "    plt.grid(color=GRID_COLOR, axis=\"x\", linestyle=\"--\", linewidth=0.5)\n",
    "    plt.tick_params(colors=FONT_COLOR)\n",
    "\n",
    "    # Set background color\n",
    "    plt.gca().set_facecolor(BACKGROUND_COLOR)\n",
    "    plt.gcf().set_facecolor(BACKGROUND_COLOR)\n",
    "\n",
    "    plt.tight_layout()\n",
    "\n",
    "    # return plt.gcf()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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GJijGJijGJhj9XDgFSIiIiIiIoHwSB4REREREZFA2OQREREREREJhE0eERERERGRQNjkERERERERCYSToQskOzsbixYtwqFDhyDLMvr3749p06bBzc3N7H3u3r2LZcuWISoqCsXFxejduzdmzpwJb29v421u3ryJyMhInDhxAq6urggLC8PkyZPh5FT27XPmzBmEh4ejdevW2LBhg02ep+i0yvH06dNYsWIFEhMTUVhYCF9fX4waNQpjx461+XMWkVY5/vLLL/j+++9x6dIlFBUVoXXr1pg0aRL69Olj8+csIq1yvH37NpYtW4a4uDgkJydjzJgxmD59uq2frjC+/fZbbNy4ERkZGQgMDMSMGTPQsWNHs7ffu3cvVq1ahZs3b8LPzw9///vf0bdvX+N6VVWxevVqbNu2DTk5OQgODsbMmTPRsmVL422q816himmR44YNG/Dbb7/h4sWLcHZ2xs8//2zT5+gIajvHGzduYP369YiOjkZ6ejoaN26MoUOHYsKECQ41QieP5Alk7ty5uHLlCpYsWYKPP/4Yp06dwscff1zhfT755BMcOnQI8+fPx7Jly3D79m3MmTPHuF6v12PWrFkoLi7GZ599hrfeegu7du3C6tWry2wrJycH8+bNQ48ePaz+3ByJVjm6urriySefxKeffoqNGzfi+eefx6pVq/DDDz/Y7LmKTKscT506hd69eyMyMhJr165F9+7d8frrryM+Pt5mz1VkWuVYXFyMRo0aYcKECQgMDLTZ8xNRVFQUli5diokTJ2Lt2rUIDAxEREQEMjMzy719TEwM3n33XYwYMQLr1q1DaGgo/vGPfyAhIcF4my+//BJbtmzBrFmzsGrVKtSvXx8RERG4e/eu8TbVea+QeVrlWFxcjAEDBmD06NE2f46OQIscExMToSgKZs2ahS+++AJTp07F1q1bsXLlylp5zvaCTZ4grl69isOHD+ONN95Ap06d8NBDD2HGjBmIiopCWlpauffJzc3F9u3bMWXKFPTo0QMPPvgg3nzzTcTExCA2NhYAcPToUVy9ehXvvPMO2rdvjz/96U948cUX8d1336G4uNhkewsXLsTgwYPRuXNnmz9fUWmZY/v27TF48GC0adMGzZs3x9ChQ9G7d2+cPn261p6/KLTMcfr06Xj22WfRoUMHtGzZEpMnT4afnx8OHjxYa89fFFrm2Lx5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SRPjKZrjxo1DdHQ01q1bh6SkJON1gqWnkfr7+yMkJAQff/wxzp49axzEpbIjceHh4di6dSvi4uJw48YN/Pbbb1i5ciW6d++OBg0aoHnz5ggLC8OHH36I/fv34/r16zhx4gT+85//AACeeOIJ3Lp1C4sWLUJiYiIOHDiANWvWYOzYsRU2Pk888QSys7Px7rvv4vz580hOTsaRI0fw/vvvQ6/XW/T65efnIz093eTf/QPJNG/eHF26dMGHH34IvV5vctprr1690KZNG8ydOxcXLlzAuXPnMG/ePHTr1s3sqZppaWkIDw9Hs2bNEB4ejqysLOPjEhHZM56uSUREZh0+fBgjR46ETqeDh4cHAgMDMWPGDISFhRm/2EuShMjISHz++ef44IMPkJWVBR8fHzz00ENmh6YfOXIkTp48iUmTJqGgoABLly5FaGgonn76aSxatAhFRUXo27cvnn/+eaxdu7bSOpcuXVpm2fLlyyu8j5ubG/73f/8XERERmDVrFiIjI/Hmm29i/fr1WLZsGdLS0tCwYUN06tTJONWDNcyZMwf/+te/8Prrr6O4uBhdu3ZFZGSk8TTPoKAgvPfee1i9ejXWr18PHx8fvPjiixg+fLjJNhYsWIDw8HB4eXnh5ZdfLjMgyR/17t0bu3btwsqVK1FYWIjGjRujX79+xgFeAGDmzJlYuXIlIiMjkZ2djWbNmuGvf/0rAMO1b5GRkfj0008xYcIEeHp6YsSIEcaBTcxp0qQJPvvsMyxfvhwzZsxAUVERfH190adPH+N7aMeOHfjggw9w6NChCre1evVqrF692mTZqFGj8Prrrxv/f8iQIYiMjMRjjz1m0vhKkoQFCxZg8eLFePXVV02mUDDn6NGjSE5ORnJyMh5//HGTdZXVSkSkJamwsNA+LhQgIiIih7R69WqcOnWq3Os6iYjIcjxdk4iIiDR1+PDhcgdmISKi6uGRPCIiIiIiIoHwSB4REREREZFA2OQREREREREJhE0eERERERGRQNjkERERERERCYRNHhERERERkUDY5BEREREREQmETR4REREREZFA2OQREREREREJhE0eERERERGRQP4fVgU1Sf0DHCsAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 900x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_strip_with_means(brca1_df, x_col=\"evo2_delta_score\", class_col=\"class\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also calculate the area under the receiver operating characteristic curve (AUROC) of this zero-shot prediction method. Note that the results are nearly random unless you are on one of the following configurations:\n",
    "* `--fp8` on an fp8 enabled GPU with either the 1b or 7b models. The 40b likely works as well.\n",
    "* the 7b model uniquely seems to work well without `--fp8` so if you are on an older device, the 7b model should produce\n",
    "  robust results. Change the `MODEL_SIZE` earlier in this tutorial and rerun for good results in that case.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Zero-shot prediction AUROC: 0.77\n"
     ]
    }
   ],
   "source": [
    "# Calculate AUROC of zero-shot predictions\n",
    "#  class 1 is LOF which is the bad thing. That means we expect this to be more negative.\n",
    "y_true = brca1_df[\"class\"] == \"LOF\"\n",
    "auroc = roc_auc_score(y_true, -brca1_df[\"evo2_delta_score\"])\n",
    "print(f\"Zero-shot prediction AUROC: {auroc:.2}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "jupyter": {
     "source_hidden": true
    },
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def plot_roc_curve(df):\n",
    "    \"\"\"Plots an ROC curve using Seaborn with a light NVIDIA-themed design.\n",
    "\n",
    "    The function assumes:\n",
    "    - `class` column as the true labels (binary, 'LOF' = 1, else 0).\n",
    "    - `evo2_delta_score` as the prediction score.\n",
    "\n",
    "    Parameters:\n",
    "    - df (pd.DataFrame): DataFrame containing `class` and `evo2_delta_score`.\n",
    "\n",
    "    Returns:\n",
    "    - matplotlib Figure: ROC Curve Visualization.\n",
    "    \"\"\"\n",
    "    # NVIDIA theme colors\n",
    "    NVIDIA_GREEN = \"#76B900\"\n",
    "    BACKGROUND_COLOR = \"#F8F8F8\"\n",
    "    GRID_COLOR = \"#DDDDDD\"\n",
    "    FONT_COLOR = \"#333333\"\n",
    "\n",
    "    # Validate required columns\n",
    "    if \"class\" not in df.columns or \"evo2_delta_score\" not in df.columns:\n",
    "        raise ValueError(\"DataFrame must contain 'class' and 'evo2_delta_score' columns.\")\n",
    "\n",
    "    # Convert 'class' to binary labels: Assume 'LOF' = 1, anything else = 0\n",
    "    y_true = (df[\"class\"] == \"LOF\").astype(int)\n",
    "\n",
    "    # Compute ROC curve\n",
    "    fpr, tpr, _ = roc_curve(y_true, -df[\"evo2_delta_score\"])  # Negative to align with previous logic\n",
    "    roc_auc = auc(fpr, tpr)\n",
    "\n",
    "    # Set up the plot with NVIDIA theme\n",
    "    plt.figure(figsize=(9, 5), facecolor=BACKGROUND_COLOR)\n",
    "    plt.style.use(\"default\")  # Reset to default to avoid any pre-existing style\n",
    "\n",
    "    # Plot ROC curve\n",
    "    plt.plot(fpr, tpr, color=NVIDIA_GREEN, lw=3, label=f\"ROC curve (AUROC = {roc_auc:.2f})\")\n",
    "\n",
    "    # Plot diagonal reference line for random guessing\n",
    "    plt.plot([0, 1], [0, 1], color=\"gray\", lw=2, linestyle=\"--\")\n",
    "\n",
    "    # Customize plot appearance\n",
    "    plt.xlim([0.0, 1.0])\n",
    "    plt.ylim([0.0, 1.05])\n",
    "    plt.xlabel(\"False Positive Rate\", color=FONT_COLOR, fontsize=12)\n",
    "    plt.ylabel(\"True Positive Rate\", color=FONT_COLOR, fontsize=12)\n",
    "    plt.title(\n",
    "        \"Zeroshot ROC Curve\\nEvaluating the discriminative performance of Evo 2 predictions\",\n",
    "        color=FONT_COLOR,\n",
    "        fontsize=16,\n",
    "        loc=\"left\",\n",
    "    )\n",
    "\n",
    "    # Customize grid and tick colors\n",
    "    plt.grid(color=GRID_COLOR, linestyle=\"--\", linewidth=0.5)\n",
    "    plt.tick_params(colors=FONT_COLOR)\n",
    "\n",
    "    # Set background color\n",
    "    plt.gca().set_facecolor(BACKGROUND_COLOR)\n",
    "\n",
    "    # Add legend\n",
    "    plt.legend(loc=\"lower right\", frameon=True, facecolor=BACKGROUND_COLOR, edgecolor=GRID_COLOR)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 900x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_curve(brca1_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Full Sample Performance\n",
    "\n",
    "The above analysis may have been performed on a subset of the available data.\n",
    "\n",
    "For comparison, the table below presents the AUROC scores for different model sizes trained on the *full dataset* (100% sample fraction).\n",
    "\n",
    "| Model Size  | Dataset Sample Fraction | AUROC |\n",
    "|------------|------------------------|-------|\n",
    "| Evo 2 1B   | 100%                   | 0.76  |\n",
    "| Evo 2 7B   | 100%                   | 0.87  |\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}