Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save wojtyniak/a25c028b8a1445bfc4dcc5175a37c20f to your computer and use it in GitHub Desktop.

Select an option

Save wojtyniak/a25c028b8a1445bfc4dcc5175a37c20f to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# BioVERSE: Representation Alignment of Biomedical Modalities to LLMs\n",
"\n",
"**Paper**: BioVERSE: Representation Alignment of Biomedical Modalities to LLMs for Multi-Modal Reasoning\n",
"\n",
"**Authors**: Ching-Huei Tsou, Michal Ozery-Flato, Ella Barkan, Diwakar Mahajan, Ben Shapira\n",
"\n",
"## Overview\n",
"\n",
"This notebook provides an educational implementation of the BioVERSE framework, which bridges biomedical foundation models (BioFMs) and large language models (LLMs) through lightweight projection layers.\n",
"\n",
"**Key Concepts**:\n",
"- **Two-stage training**: (1) Alignment of bio embeddings to LLM space, (2) Instruction tuning\n",
"- **Two alignment strategies**: Autoregressive (AR) and Contrastive (CT)\n",
"- **Modular architecture**: BioFM encoder → Projection layer → LLM decoder\n",
"\n",
"**Note**: This is a simplified, educational implementation using small-scale synthetic data to demonstrate the workflow within resource constraints (4GB RAM, ~5-10 minute runtime)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Setup and Dependencies\n",
"\n",
"Install required packages using uv pip."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:07:56.052470Z",
"iopub.status.busy": "2026-01-26T20:07:56.052285Z",
"iopub.status.idle": "2026-01-26T20:07:56.211975Z",
"shell.execute_reply": "2026-01-26T20:07:56.211091Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[2mAudited \u001b[1m7 packages\u001b[0m \u001b[2min 12ms\u001b[0m\u001b[0m\r\n"
]
}
],
"source": [
"!uv pip install torch numpy scikit-learn matplotlib transformers datasets tqdm"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:07:56.214347Z",
"iopub.status.busy": "2026-01-26T20:07:56.214136Z",
"iopub.status.idle": "2026-01-26T20:07:59.081676Z",
"shell.execute_reply": "2026-01-26T20:07:59.080559Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Libraries imported successfully!\n",
"PyTorch version: 2.10.0+cu128\n",
"Device: cpu\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/app/.venv/lib/python3.13/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n"
]
}
],
"source": [
"import numpy as np\n",
"import torch\n",
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"from torch.utils.data import Dataset, DataLoader\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.decomposition import PCA\n",
"from sklearn.metrics import accuracy_score, f1_score\n",
"from tqdm.auto import tqdm\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"\n",
"# Set random seeds for reproducibility\n",
"np.random.seed(42)\n",
"torch.manual_seed(42)\n",
"\n",
"print(\"Libraries imported successfully!\")\n",
"print(f\"PyTorch version: {torch.__version__}\")\n",
"print(f\"Device: {'cuda' if torch.cuda.is_available() else 'cpu'}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Data Preparation: Synthetic Biomedical Data\n",
"\n",
"We generate small-scale synthetic data to demonstrate the BioVERSE workflow:\n",
"- **Bio embeddings**: Simulated BioFM outputs (scRNA-seq, protein, molecule)\n",
"- **Text embeddings**: Simulated LLM embeddings\n",
"- **Paired data**: (bio_embedding, text_embedding, text_description)\n",
"\n",
"This mimics the alignment datasets described in Section 4.2.1 of the paper (UniProtKB for proteins, LLASmol for molecules, CellxGene for scRNA-seq)."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:07:59.083783Z",
"iopub.status.busy": "2026-01-26T20:07:59.083443Z",
"iopub.status.idle": "2026-01-26T20:07:59.087793Z",
"shell.execute_reply": "2026-01-26T20:07:59.087141Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Configuration:\n",
" BioFM embedding dim: 512\n",
" LLM embedding dim: 768\n",
" Number of samples: 1000\n",
" Number of classes: 9\n"
]
}
],
"source": [
"# Configuration\n",
"D_BIO = 512 # BioFM embedding dimension (e.g., scGPT, ESM-2, ChemBERTa output)\n",
"D_TEXT = 768 # LLM embedding dimension (e.g., Granite-8B)\n",
"N_SAMPLES = 1000 # Number of paired bio-text samples (small for demo)\n",
"N_CLASSES = 9 # Number of cell types (matching PBMC10K dataset)\n",
"\n",
"# Cell type labels (from PBMC10K dataset mentioned in paper)\n",
"CELL_TYPES = [\n",
" \"CD14+ Monocytes\",\n",
" \"CD4 T cells\",\n",
" \"CD8 T cells\",\n",
" \"NK cells\",\n",
" \"B cells\",\n",
" \"Dendritic cells\",\n",
" \"FCGR3A+ Monocytes\",\n",
" \"Megakaryocytes\",\n",
" \"Platelets\"\n",
"]\n",
"\n",
"print(f\"Configuration:\")\n",
"print(f\" BioFM embedding dim: {D_BIO}\")\n",
"print(f\" LLM embedding dim: {D_TEXT}\")\n",
"print(f\" Number of samples: {N_SAMPLES}\")\n",
"print(f\" Number of classes: {N_CLASSES}\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:07:59.089735Z",
"iopub.status.busy": "2026-01-26T20:07:59.089557Z",
"iopub.status.idle": "2026-01-26T20:07:59.157267Z",
"shell.execute_reply": "2026-01-26T20:07:59.156199Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Data generated:\n",
" Training samples: 1000\n",
" Test samples: 200\n",
" Bio embeddings shape: (1000, 512)\n",
" Text embeddings shape: (1000, 768)\n"
]
}
],
"source": [
"def generate_synthetic_biomedical_data(n_samples, d_bio, d_text, n_classes):\n",
" \"\"\"\n",
" Generate synthetic paired bio-text data for alignment training.\n",
" \n",
" This simulates the paired datasets described in the paper:\n",
" - Bio embeddings: Output from BioFMs (scGPT, ESM-2, ChemBERTa)\n",
" - Text embeddings: LLM embeddings of textual descriptions\n",
" - Labels: Cell types, protein functions, or molecular properties\n",
" \n",
" Args:\n",
" n_samples: Number of paired samples\n",
" d_bio: Dimension of bio embeddings\n",
" d_text: Dimension of text embeddings\n",
" n_classes: Number of classes/types\n",
" \n",
" Returns:\n",
" Dictionary with bio_embeddings, text_embeddings, labels\n",
" \"\"\"\n",
" # Generate class centers for bio and text embeddings\n",
" bio_centers = np.random.randn(n_classes, d_bio) * 2.0\n",
" text_centers = np.random.randn(n_classes, d_text) * 2.0\n",
" \n",
" # Generate labels\n",
" labels = np.random.randint(0, n_classes, size=n_samples)\n",
" \n",
" # Generate bio embeddings (with some noise around class centers)\n",
" bio_embeddings = np.zeros((n_samples, d_bio))\n",
" for i in range(n_samples):\n",
" bio_embeddings[i] = bio_centers[labels[i]] + np.random.randn(d_bio) * 0.5\n",
" \n",
" # Generate text embeddings (initially in different space)\n",
" text_embeddings = np.zeros((n_samples, d_text))\n",
" for i in range(n_samples):\n",
" text_embeddings[i] = text_centers[labels[i]] + np.random.randn(d_text) * 0.5\n",
" \n",
" # Normalize embeddings (common practice in embedding models)\n",
" bio_embeddings = bio_embeddings / (np.linalg.norm(bio_embeddings, axis=1, keepdims=True) + 1e-8)\n",
" text_embeddings = text_embeddings / (np.linalg.norm(text_embeddings, axis=1, keepdims=True) + 1e-8)\n",
" \n",
" return {\n",
" 'bio_embeddings': bio_embeddings.astype(np.float32),\n",
" 'text_embeddings': text_embeddings.astype(np.float32),\n",
" 'labels': labels,\n",
" 'bio_centers': bio_centers,\n",
" 'text_centers': text_centers\n",
" }\n",
"\n",
"# Generate training data (for alignment)\n",
"train_data = generate_synthetic_biomedical_data(N_SAMPLES, D_BIO, D_TEXT, N_CLASSES)\n",
"\n",
"# Generate test data (for zero-shot evaluation)\n",
"test_data = generate_synthetic_biomedical_data(200, D_BIO, D_TEXT, N_CLASSES)\n",
"\n",
"print(\"\\nData generated:\")\n",
"print(f\" Training samples: {len(train_data['labels'])}\")\n",
"print(f\" Test samples: {len(test_data['labels'])}\")\n",
"print(f\" Bio embeddings shape: {train_data['bio_embeddings'].shape}\")\n",
"print(f\" Text embeddings shape: {train_data['text_embeddings'].shape}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. BioVERSE Architecture Components\n",
"\n",
"Following Figure 1 and Section 3.3 of the paper, we implement:\n",
"1. **Projection Layer** (P_θ): Lightweight MLP mapping bio embeddings to LLM space\n",
"2. **Alignment objectives**: Autoregressive (AR) and Contrastive (CT) losses\n",
"\n",
"The projection layer uses:\n",
"- 3-layer MLP with ReLU activations (Section 4.1)\n",
"- Layer normalization and dropout for stability"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:07:59.159259Z",
"iopub.status.busy": "2026-01-26T20:07:59.159049Z",
"iopub.status.idle": "2026-01-26T20:07:59.185070Z",
"shell.execute_reply": "2026-01-26T20:07:59.184223Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Projection layer initialized\n",
" Parameters: 2,367,744\n",
" Input dim: 512, Output dim: 768\n"
]
}
],
"source": [
"class ProjectionLayer(nn.Module):\n",
" \"\"\"\n",
" Lightweight MLP projection layer (P_θ) that maps BioFM embeddings \n",
" from dimension d_b to LLM embedding dimension d_t.\n",
" \n",
" Architecture from Section 4.1 of the paper:\n",
" - 3-layer MLP with ReLU activations\n",
" - Layer normalization\n",
" - Dropout for stability\n",
" \"\"\"\n",
" def __init__(self, d_bio, d_text, hidden_dim=1024, dropout=0.1):\n",
" super().__init__()\n",
" self.layers = nn.Sequential(\n",
" nn.Linear(d_bio, hidden_dim),\n",
" nn.LayerNorm(hidden_dim),\n",
" nn.ReLU(),\n",
" nn.Dropout(dropout),\n",
" \n",
" nn.Linear(hidden_dim, hidden_dim),\n",
" nn.LayerNorm(hidden_dim),\n",
" nn.ReLU(),\n",
" nn.Dropout(dropout),\n",
" \n",
" nn.Linear(hidden_dim, d_text),\n",
" nn.LayerNorm(d_text)\n",
" )\n",
" \n",
" def forward(self, bio_embeddings):\n",
" \"\"\"\n",
" Project bio embeddings to LLM space.\n",
" \n",
" Args:\n",
" bio_embeddings: (batch_size, d_bio)\n",
" Returns:\n",
" projected_embeddings: (batch_size, d_text)\n",
" \"\"\"\n",
" return self.layers(bio_embeddings)\n",
"\n",
"# Initialize projection layer\n",
"projection = ProjectionLayer(D_BIO, D_TEXT)\n",
"print(f\"Projection layer initialized\")\n",
"print(f\" Parameters: {sum(p.numel() for p in projection.parameters()):,}\")\n",
"print(f\" Input dim: {D_BIO}, Output dim: {D_TEXT}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Alignment Training (Stage 1)\n",
"\n",
"We implement both alignment strategies from Section 3.4:\n",
"\n",
"### 3.1 Contrastive Alignment (CT)\n",
"\n",
"Bidirectional InfoNCE loss (Equation in Section 3.4):\n",
"- Aligns projected bio embeddings with text embeddings\n",
"- Computationally efficient (bypasses LLM forward pass)\n",
"- Uses in-batch negatives\n",
"\n",
"$$\\mathcal{L}_{CT} = -\\frac{1}{2N} \\sum_{i=1}^{N} \\left[ \\log \\frac{\\exp(\\text{sim}(\\tilde{z}_b^{(i)}, \\phi(t_b^{(i)}))/\\tau)}{\\sum_{j=1}^{N} \\exp(\\text{sim}(\\tilde{z}_b^{(i)}, \\phi(t_b^{(j)}))/\\tau)} + \\log \\frac{\\exp(\\text{sim}(\\phi(t_b^{(i)}), \\tilde{z}_b^{(i)})/\\tau)}{\\sum_{j=1}^{N} \\exp(\\text{sim}(\\phi(t_b^{(i)}), \\tilde{z}_b^{(j)})/\\tau)} \\right]$$"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:07:59.187048Z",
"iopub.status.busy": "2026-01-26T20:07:59.186843Z",
"iopub.status.idle": "2026-01-26T20:07:59.191163Z",
"shell.execute_reply": "2026-01-26T20:07:59.190379Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Contrastive loss function defined\n"
]
}
],
"source": [
"def contrastive_loss(bio_embeddings_proj, text_embeddings, temperature=0.07):\n",
" \"\"\"\n",
" Bidirectional InfoNCE contrastive loss (Section 3.4).\n",
" \n",
" Args:\n",
" bio_embeddings_proj: Projected bio embeddings (batch_size, d_text)\n",
" text_embeddings: Text embeddings (batch_size, d_text)\n",
" temperature: Temperature parameter τ (learnable in practice)\n",
" \n",
" Returns:\n",
" loss: Bidirectional contrastive loss\n",
" \"\"\"\n",
" # Normalize embeddings\n",
" bio_norm = F.normalize(bio_embeddings_proj, dim=-1)\n",
" text_norm = F.normalize(text_embeddings, dim=-1)\n",
" \n",
" # Compute similarity matrix\n",
" logits = torch.matmul(bio_norm, text_norm.T) / temperature\n",
" \n",
" # Labels: diagonal elements are positive pairs\n",
" batch_size = bio_embeddings_proj.shape[0]\n",
" labels = torch.arange(batch_size, device=bio_embeddings_proj.device)\n",
" \n",
" # Bidirectional loss: bio→text and text→bio\n",
" loss_bio_to_text = F.cross_entropy(logits, labels)\n",
" loss_text_to_bio = F.cross_entropy(logits.T, labels)\n",
" \n",
" return (loss_bio_to_text + loss_text_to_bio) / 2\n",
"\n",
"print(\"Contrastive loss function defined\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:07:59.192873Z",
"iopub.status.busy": "2026-01-26T20:07:59.192677Z",
"iopub.status.idle": "2026-01-26T20:07:59.198312Z",
"shell.execute_reply": "2026-01-26T20:07:59.197469Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Datasets created:\n",
" Train batches: 16\n",
" Test batches: 4\n"
]
}
],
"source": [
"class AlignmentDataset(Dataset):\n",
" \"\"\"Dataset for alignment training.\"\"\"\n",
" def __init__(self, bio_embeddings, text_embeddings, labels):\n",
" self.bio_embeddings = torch.FloatTensor(bio_embeddings)\n",
" self.text_embeddings = torch.FloatTensor(text_embeddings)\n",
" self.labels = torch.LongTensor(labels)\n",
" \n",
" def __len__(self):\n",
" return len(self.labels)\n",
" \n",
" def __getitem__(self, idx):\n",
" return {\n",
" 'bio': self.bio_embeddings[idx],\n",
" 'text': self.text_embeddings[idx],\n",
" 'label': self.labels[idx]\n",
" }\n",
"\n",
"# Create datasets\n",
"train_dataset = AlignmentDataset(\n",
" train_data['bio_embeddings'],\n",
" train_data['text_embeddings'],\n",
" train_data['labels']\n",
")\n",
"\n",
"test_dataset = AlignmentDataset(\n",
" test_data['bio_embeddings'],\n",
" test_data['text_embeddings'],\n",
" test_data['labels']\n",
")\n",
"\n",
"# Create dataloaders\n",
"train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)\n",
"test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)\n",
"\n",
"print(f\"Datasets created:\")\n",
"print(f\" Train batches: {len(train_loader)}\")\n",
"print(f\" Test batches: {len(test_loader)}\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:07:59.200051Z",
"iopub.status.busy": "2026-01-26T20:07:59.199860Z",
"iopub.status.idle": "2026-01-26T20:08:03.021602Z",
"shell.execute_reply": "2026-01-26T20:08:03.020828Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"============================================================\n",
"STAGE 1: CONTRASTIVE ALIGNMENT TRAINING\n",
"============================================================\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training alignment (Stage 1 CT) on cpu...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 1/10: 0%| | 0/16 [00:00<?, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 1/10: 38%|███▊ | 6/16 [00:00<00:00, 53.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 1/10: 75%|███████▌ | 12/16 [00:00<00:00, 52.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/10 - Loss: 2.1734\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 2/10: 0%| | 0/16 [00:00<?, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 2/10: 38%|███▊ | 6/16 [00:00<00:00, 58.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 2/10: 75%|███████▌ | 12/16 [00:00<00:00, 54.04it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 2/10 - Loss: 1.9964\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 3/10: 0%| | 0/16 [00:00<?, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 3/10: 38%|███▊ | 6/16 [00:00<00:00, 56.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 3/10: 75%|███████▌ | 12/16 [00:00<00:00, 55.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 3/10 - Loss: 1.9894\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 4/10: 0%| | 0/16 [00:00<?, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 4/10: 38%|███▊ | 6/16 [00:00<00:00, 52.25it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 4/10: 75%|███████▌ | 12/16 [00:00<00:00, 53.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 4/10 - Loss: 1.9818\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 5/10: 0%| | 0/16 [00:00<?, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 5/10: 38%|███▊ | 6/16 [00:00<00:00, 56.79it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 5/10: 75%|███████▌ | 12/16 [00:00<00:00, 53.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 5/10 - Loss: 1.9949\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 6/10: 0%| | 0/16 [00:00<?, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 6/10: 38%|███▊ | 6/16 [00:00<00:00, 52.12it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 6/10: 75%|███████▌ | 12/16 [00:00<00:00, 51.67it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 6/10 - Loss: 1.9783\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 7/10: 0%| | 0/16 [00:00<?, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 7/10: 38%|███▊ | 6/16 [00:00<00:00, 52.87it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 7/10: 75%|███████▌ | 12/16 [00:00<00:00, 54.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 7/10 - Loss: 1.9846\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 8/10: 0%| | 0/16 [00:00<?, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 8/10: 38%|███▊ | 6/16 [00:00<00:00, 52.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 8/10: 75%|███████▌ | 12/16 [00:00<00:00, 52.17it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 8/10 - Loss: 1.9681\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 9/10: 0%| | 0/16 [00:00<?, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 9/10: 38%|███▊ | 6/16 [00:00<00:00, 53.75it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 9/10: 75%|███████▌ | 12/16 [00:00<00:00, 54.06it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 9/10 - Loss: 1.9533\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 10/10: 0%| | 0/16 [00:00<?, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 10/10: 38%|███▊ | 6/16 [00:00<00:00, 52.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"Epoch 10/10: 75%|███████▌ | 12/16 [00:00<00:00, 52.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" "
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 10/10 - Loss: 1.9545\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r"
]
}
],
"source": [
"def train_alignment(projection, train_loader, n_epochs=10, lr=1e-3):\n",
" \"\"\"\n",
" Train projection layer using contrastive alignment (Stage 1 CT).\n",
" \n",
" Args:\n",
" projection: Projection layer module\n",
" train_loader: DataLoader for training data\n",
" n_epochs: Number of training epochs\n",
" lr: Learning rate\n",
" \n",
" Returns:\n",
" List of training losses\n",
" \"\"\"\n",
" device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
" projection = projection.to(device)\n",
" projection.train()\n",
" \n",
" optimizer = torch.optim.Adam(projection.parameters(), lr=lr)\n",
" losses = []\n",
" \n",
" print(f\"Training alignment (Stage 1 CT) on {device}...\")\n",
" \n",
" for epoch in range(n_epochs):\n",
" epoch_losses = []\n",
" \n",
" for batch in tqdm(train_loader, desc=f\"Epoch {epoch+1}/{n_epochs}\", leave=False):\n",
" bio_emb = batch['bio'].to(device)\n",
" text_emb = batch['text'].to(device)\n",
" \n",
" # Forward pass: project bio embeddings\n",
" bio_proj = projection(bio_emb)\n",
" \n",
" # Compute contrastive loss\n",
" loss = contrastive_loss(bio_proj, text_emb)\n",
" \n",
" # Backward pass\n",
" optimizer.zero_grad()\n",
" loss.backward()\n",
" optimizer.step()\n",
" \n",
" epoch_losses.append(loss.item())\n",
" \n",
" avg_loss = np.mean(epoch_losses)\n",
" losses.append(avg_loss)\n",
" print(f\"Epoch {epoch+1}/{n_epochs} - Loss: {avg_loss:.4f}\")\n",
" \n",
" return losses\n",
"\n",
"# Train the projection layer (Stage 1)\n",
"print(\"\\n\" + \"=\"*60)\n",
"print(\"STAGE 1: CONTRASTIVE ALIGNMENT TRAINING\")\n",
"print(\"=\"*60)\n",
"training_losses = train_alignment(projection, train_loader, n_epochs=10, lr=1e-3)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:08:03.024192Z",
"iopub.status.busy": "2026-01-26T20:08:03.023862Z",
"iopub.status.idle": "2026-01-26T20:08:03.161851Z",
"shell.execute_reply": "2026-01-26T20:08:03.160985Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAGGCAYAAACNL1mYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAaQ1JREFUeJzt3Xd8VfX9x/H3vRn3Zg8yIYMAyt6yRKtYAXFiHYWKgnX8ikBFaq3YKlKtuKtVi12OMtQ6QEVFEHEgU/ZWEJKQHUJys9c9vz9CLoQEyIV7ucnN6/l45AH33HNOPjd+b+R9v8tkGIYhAAAAAADgFmZPFwAAAAAAgDcjeAMAAAAA4EYEbwAAAAAA3IjgDQAAAACAGxG8AQAAAABwI4I3AAAAAABuRPAGAAAAAMCNCN4AAAAAALgRwRsAAAAAADcieAMAcA589dVXMplM+uqrrxzHJk2apI4dO3qsJhzz6KOPymQyndG1b7zxhkwmkw4ePOjaogAAXoPgDQBoZPv27brxxhuVnJwsq9WqDh06aOTIkXrppZcanPfEE09o8eLFninSSX/5y1907bXXKjY2ViaTSY8++qhL73/zzTfLZDLpD3/4g0vv643Kysr06KOPNvgQ4mQ6duwok8l02q833njD7XW3RPUfGOTn53u6FADAKZgMwzA8XQQAoOVYvXq1RowYoaSkJE2cOFFxcXFKT0/X2rVrtX//fu3bt89xbnBwsG688cZWEXpMJpPi4uLUt29fff7555o1a5bLwrfNZlNsbKzi4uJUW1ur1NTURr2nX331lUaMGKGVK1fq0ksvlSRVV1fLbrfLYrG4pI7WIj8/X9HR0c36b7B48WKVlJQ4Hn/66ad666239Ne//lVRUVGO4xdeeKE6dep0xjXV1NSopqZGVqvV6Wtra2tVXV0ti8Vyxr3mZ+rRRx/V7NmzlZeX1+DnAQBoWXw9XQAAoGX5y1/+orCwMG3YsEHh4eENnsvNzfVMUS5w4MABdezY0RH6XOn9999XbW2tXnvtNV122WX65ptvdMkll5z2Oj8/P5fW4Y3Gjh3b4HF2drbeeustjR079pTD9EtLSxUUFNTs7+Pr6ytf3zP7Z5GPj498fHzO6FoAQNvAUHMAQAP79+9Xz549G4VuSYqJiXH83WQyqbS0VG+++aZjuO+kSZMkSampqbrnnnvUtWtXBQQEqF27drrpppuanAO7bds2XXLJJQoICFBCQoIef/xxvf76603Omf3ss8908cUXKygoSCEhIbrqqqu0c+fOZr2u5s6lLisr0549e5waurtgwQKNHDlSI0aMUPfu3bVgwYJmXdfUHO/Dhw/r1ltvVWhoqMLDwzVx4kRt3bq10XDqSZMmKTg4WBkZGRo7dqyCg4MVHR2t+++/X7W1tY7zDh48KJPJpGeffVavvPKKOnXqpMDAQI0aNUrp6ekyDEOPPfaYEhISFBAQoOuuu04FBQWNam3Oz745NR08eNDxwcfs2bMdbedsRh/Uf9/9+/fryiuvVEhIiG655RZJ0rfffqubbrpJSUlJslgsSkxM1H333afy8vIG92hqjrfJZNLUqVO1ePFi9erVSxaLRT179tTSpUsbnNfUHO+OHTvq6quv1qpVqzR48GBZrVZ16tRJ//3vfxvV78x74Ex9+eWXjv9+4eHhuu6667R79+4G5xQXF2v69Onq2LGjLBaLYmJiNHLkSG3atMlxzo8//qgbbrhBcXFxslqtSkhI0Lhx41RUVOSSOgHAW9HjDQBoIDk5WWvWrNGOHTvUq1evk543b9483XnnnRo8eLDuvvtuSVLnzp0lSRs2bNDq1as1btw4JSQk6ODBg5o7d64uvfRS7dq1S4GBgZKkjIwMjRgxQiaTSTNnzlRQUJD+/e9/Nzn0et68eZo4caJGjx6tp556SmVlZZo7d64uuugibd682WWLlK1fv14jRoxo9lD0zMxMrVy5Um+++aYkafz48frrX/+ql19+Wf7+/k59b7vdrmuuuUbr16/X5MmT1a1bN3344YeaOHFik+fX1tZq9OjRGjJkiJ599ll98cUXeu6559S5c2dNnjy5wbkLFixQVVWVpk2bpoKCAj399NO6+eabddlll+mrr77SH/7wB+3bt08vvfSS7r//fr322muOa5352Z+upujoaM2dO1eTJ0/W9ddfr1/84heSpD59+jj1szpRTU2NRo8erYsuukjPPvuso429++67Kisr0+TJk9WuXTutX79eL730kg4dOqR33333tPddtWqVPvjgA91zzz0KCQnR3/72N91www1KS0tTu3btTnntvn37dOONN+qOO+7QxIkT9dprr2nSpEkaOHCgevbsKcm598CZ+uKLLzRmzBh16tRJjz76qMrLy/XSSy9p+PDh2rRpk+O/329+8xu99957mjp1qnr06KHDhw9r1apV2r17twYMGKCqqiqNHj1alZWVmjZtmuLi4pSRkaElS5aosLBQYWFhLqsZALyOAQDAcZYtW2b4+PgYPj4+xrBhw4wHHnjA+Pzzz42qqqpG5wYFBRkTJ05sdLysrKzRsTVr1hiSjP/+97+OY9OmTTNMJpOxefNmx7HDhw8bkZGRhiTjwIEDhmEYRnFxsREeHm7cddddDe6ZnZ1thIWFNTp+Knl5eYYkY9asWU0+v3LlylM+f6Jnn33WCAgIMGw2m2EYhvHDDz8YkoxFixY1ed+VK1c6jk2cONFITk52PH7//fcNScYLL7zgOFZbW2tcdtllhiTj9ddfb3CtJOPPf/5zg+/Tv39/Y+DAgY7HBw4cMCQZ0dHRRmFhoeP4zJkzDUlG3759jerqasfx8ePHG/7+/kZFRYVhGM797Jtb0+n+G5zKM88806BtHP99H3zwwUbnN9UW58yZY5hMJiM1NdVxbNasWcaJ/yySZPj7+xv79u1zHNu6dashyXjppZccx15//fVGNSUnJxuSjG+++cZxLDc317BYLMbvfvc7x7HmvgdOpr7uvLy8k57Tr18/IyYmxjh8+HCD12E2m43bbrvNcSwsLMyYMmXKSe+zefNmQ5Lx7rvvnrImAEBjDDUHADQwcuRIrVmzRtdee622bt2qp59+WqNHj1aHDh300UcfNeseAQEBjr9XV1fr8OHD6tKli8LDwxsMW126dKmGDRumfv36OY5FRkY6hgnXW758uQoLCzV+/Hjl5+c7vnx8fDRkyBCtXLny7F70cS699FIZhtHsoc8LFizQVVddpZCQEEnSeeedp4EDBzZ7uPnxli5dKj8/P911112OY2azWVOmTDnpNb/5zW8aPL744ov1008/NTrvpptuatAjOWTIEEnShAkTGsxtHjJkiKqqqpSRkSHpzH72za3J1U7s5ZcatsXS0lLl5+frwgsvlGEY2rx582nvefnllztGckh1PfOhoaHNej09evTQxRdf7HgcHR2trl27Nri2ue+BM5WVlaUtW7Zo0qRJioyMbPA6Ro4cqU8//dRxLDw8XOvWrVNmZmaT96pvP59//rnKyspcUh8AtBUEbwBAI4MGDdIHH3ygI0eOaP369Zo5c6aKi4t14403ateuXae9vry8XI888ogSExNlsVgUFRWl6OhoFRYWNpgLmpqaqi5dujS6/sRjP/74oyTpsssuU3R0dIOvZcuWeWzRt927d2vz5s0aPny49u3b5/i69NJLtWTJEtlsNqful5qaqvj4eMcw6XpN/YwkyWq1NlooLiIiQkeOHGl0blJSUoPH9SEqMTGxyeP193D2Z+9MTa7k6+urhISERsfT0tIcobN+znn9wnfNmZd84s9Nav7rac61zX0PnKnU1FRJUteuXRs91717d+Xn56u0tFSS9PTTT2vHjh1KTEzU4MGD9eijjzb4kCAlJUUzZszQv//9b0VFRWn06NF65ZVXmN8NAM3AHG8AwEn5+/tr0KBBGjRokM4//3zdfvvtevfddzVr1qxTXjdt2jS9/vrrmj59uoYNG6awsDCZTCaNGzdOdrvd6Trqr5k3b57i4uIaPX+mq1Gfrfnz50uS7rvvPt13332Nnn///fd1++23u+37O7OS9snOPdlx4+huo87+7D21urfFYpHZ3LA/oba2ViNHjlRBQYH+8Ic/qFu3bgoKClJGRoYmTZrUrLZ4up+Pu671hJtvvlkXX3yxFi1apGXLlumZZ57RU089pQ8++EBjxoyRJD333HOaNGmSPvzwQy1btky//e1vNWfOHK1du7bJDz4AAHUI3gCAZrngggsk1Q1drXeyPYvfe+89TZw4Uc8995zjWEVFhQoLCxucl5yc3GBf8HonHqsf6hsTE6PLL7/8jOp3NcMwtHDhQo0YMUL33HNPo+cfe+wxLViwwKngnZycrJUrV6qsrKxBr3dTP6NzxR0/+3O11/X27dv1ww8/6M0339Rtt93mOL58+fJz8v2bo7nvgbO5vyTt3bu30XN79uxRVFRUg23X4uPjdc899+iee+5Rbm6uBgwYoL/85S+O4C1JvXv3Vu/evfWnP/1Jq1ev1vDhw/Xqq6/q8ccfd0nNAOCNGGoOAGhg5cqVTfbI1c8FPX7IalBQUKMwLdX19J14j5deeqnBNleSNHr0aK1Zs0ZbtmxxHCsoKGg0P3r06NEKDQ3VE088oerq6kbfLy8v77Svq7mau53Yd999p4MHD+r222/XjTfe2Ojrl7/8pVauXHnS+bJNGT16tKqrq/Wvf/3Lccxut+uVV14549dzttzxs6//UKGptuNK9T3Ox7dFwzD04osvuvX7OqO574EzFR8fr379+unNN99s8PPesWOHli1bpiuvvFJS3eiAE4eMx8TEqH379qqsrJQk2Ww21dTUNDind+/eMpvNjnMAAE2jxxsA0MC0adNUVlam66+/Xt26dVNVVZVWr16td955Rx07dmzQgztw4EB98cUXev7559W+fXulpKRoyJAhuvrqqzVv3jyFhYWpR48eWrNmjb744otG2y898MADmj9/vkaOHKlp06Y5tlJKSkpSQUGBo2c0NDRUc+fO1a233qoBAwZo3Lhxio6OVlpamj755BMNHz5cL7/88ilf17x585SamupYFOqbb75x9NDdeuutjp7B5m4ntmDBAvn4+Oiqq65q8vlrr71Wf/zjH/X2229rxowZp/6hHzV27FgNHjxYv/vd77Rv3z5169ZNH330kWNf7XPVU3w8V/zsTxQQEKAePXronXfe0fnnn6/IyEj16tXrlNvXnYlu3bqpc+fOuv/++5WRkaHQ0FC9//77bp9v7ozmvgdO5/nnn2+0NoDZbNZDDz2kZ555RmPGjNGwYcN0xx13OLYTCwsLc7Tx4uJiJSQk6MYbb1Tfvn0VHBysL774Qhs2bHCMXPnyyy81depU3XTTTTr//PNVU1OjefPmycfHRzfccINLfy4A4G0I3gCABp599lm9++67+vTTT/XPf/5TVVVVSkpK0j333KM//elPCg8Pd5z7/PPP6+6779af/vQnlZeXa+LEiRoyZIhefPFF+fj4aMGCBaqoqNDw4cP1xRdfaPTo0Q2+V2JiolauXKnf/va3euKJJxQdHa0pU6YoKChIv/3tb2W1Wh3n/upXv1L79u315JNP6plnnlFlZaU6dOigiy++uFnDuf/zn//o66+/djxeuXKlY0Xuiy66yBG8m6O6ulrvvvuuLrzwwgYrRR+vV69eSklJ0fz585sdvH18fPTJJ5/o3nvv1Ztvvimz2azrr79es2bN0vDhwxv8PM6ls/3ZN+Xf//63pk2bpvvuu09VVVWaNWuWy4O3n5+fPv74Y8c8ZKvVquuvv15Tp05V3759Xfq9zpQz74FTmTNnTqNjPj4+euihh3T55Zdr6dKlmjVrlh555BH5+fnpkksu0VNPPaWUlBRJdaMQ7rnnHi1btkwffPCB7Ha7unTpor///e+O1eL79u2r0aNH6+OPP1ZGRoYCAwPVt29fffbZZxo6dKjrfigA4IVMRktd4QMA0GZNnz5d//jHP1RSUuKx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TxcAAADc54orrtDrr7/e4JjFYvFQNQAAtE30eAMA4MUsFovi4uIafEVEREiqGwY+d+5cjRkzRgEBAerUqZPee++9Btdv375dl112mQICAtSuXTvdfffdKikpaXDOa6+9pp49e8pisSg+Pl5Tp05t8Hx+fr6uv/56BQYG6rzzztNHH33k3hcNAEALQ/AGAKANe/jhh3XDDTdo69atuuWWWzRu3Djt3r1bklRaWqrRo0crIiJCGzZs0LvvvqsvvviiQbCeO3eupkyZorvvvlvbt2/XRx99pC5dujT4HrNnz9bNN9+sbdu26corr9Qtt9yigoKCc/o6AQDwJJNhGIaniwAAAK43adIkzZ8/X1artcHxhx56SA899JBMJpN+85vfaO7cuY7nhg4dqgEDBujvf/+7/vWvf+kPf/iD0tPTFRQUJEn69NNPdc011ygzM1OxsbHq0KGDbr/9dj3++ONN1mAymfSnP/1Jjz32mKS6MB8cHKzPPvuMueYAgDaDOd4AAHixESNGNAjWkhQZGen4+7Bhwxo8N2zYMG3ZskWStHv3bvXt29cRuiVp+PDhstvt2rt3r0wmkzIzM/Xzn//8lDX06dPH8fegoCCFhoYqNzf3TF8SAACtDsEbAAAvFhQU1Gjot6sEBAQ06zw/P78Gj00mk+x2uztKAgCgRWKONwAAbdjatWsbPe7evbskqXv37tq6datKS0sdz3/33Xcym83q2rWrQkJC1LFjR61YseKc1gwAQGtDjzcAAF6ssrJS2dnZDY75+voqKipKkvTuu+/qggsu0EUXXaQFCxZo/fr1+s9//iNJuuWWWzRr1ixNnDhRjz76qPLy8jRt2jTdeuutio2NlSQ9+uij+s1vfqOYmBiNGTNGxcXF+u677zRt2rRz+0IBAGjBCN4AAHixpUuXKj4+vsGxrl27as+ePZLqVhx/++23dc899yg+Pl5vvfWWevToIUkKDAzU559/rnvvvVeDBg1SYGCgbrjhBj3//POOe02cOFEVFRX661//qvvvv19RUVG68cYbz90LBACgFWBVcwAA2iiTyaRFixZp7Nixni4FAACvxhxvAAAAAADciOANAAAAAIAbMccbAIA2itlmAACcG/R4AwAAAADgRgRvAAAAAADciOANAAAAAIAbEbwBAAAAAHAjgjcAAAAAAG5E8AYAAAAAwI0I3gAAAAAAuBHBGwAAAAAANyJ4AwAAAADgRv8PVRP2z/2KJQ0AAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 1000x400 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Final training loss: 1.9545\n"
]
}
],
"source": [
"# Plot training loss\n",
"plt.figure(figsize=(10, 4))\n",
"plt.plot(training_losses, marker='o')\n",
"plt.xlabel('Epoch')\n",
"plt.ylabel('Contrastive Loss')\n",
"plt.title('Stage 1: Alignment Training Loss')\n",
"plt.grid(True, alpha=0.3)\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"print(f\"\\nFinal training loss: {training_losses[-1]:.4f}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Visualization: Embedding Alignment (Figure 2)\n",
"\n",
"Reproduce Figure 2 from the paper: Visualization showing bio and text embeddings before and after alignment.\n",
"\n",
"**Before alignment**: Bio embeddings (green) and text embeddings (blue/purple) occupy disjoint regions.\n",
"\n",
"**After alignment**: Projected bio embeddings move closer to their corresponding text embeddings.\n",
"\n",
"**Note**: Using PCA for 2D visualization (paper uses UMAP)."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:08:03.163779Z",
"iopub.status.busy": "2026-01-26T20:08:03.163579Z",
"iopub.status.idle": "2026-01-26T20:08:03.833642Z",
"shell.execute_reply": "2026-01-26T20:08:03.832638Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\\n============================================================\n",
"VISUALIZATION: EMBEDDING ALIGNMENT (Figure 2)\n",
"============================================================\n",
"Computing PCA projections for visualization...\n"
]
},
{
"data": {
"image/png": "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pk2bNtx+++1Gn+ZTpkxhz549ALRt29ZoKljUNcjgwYO9+ly98cYbadKkCfPmzTOaSn/33XdMnDiRpKSkMvfjr7/+omnTpvTr1w+lFGazuUpxrqzPPvvM+P91111H586dady4Mdu2bQMKm1b369ev0usrz6pVq3jttdeM35GRkQwbNoysrCw++eQTCgoKKrWexYsXc80119CpUyevJux//vkny5cvp0OHDmUut27dOu655x78/f157733cLlc5OfnM2DAAGPciIKCAv7zn/8AkJaWxscff8zTTz8NQHJyMrfddht5eXkANG3alEGDBqHrOtOmTWPfvn2kpqZyww03sGnTJuO8Fbdx40ZCQkIYNWoUeXl5fPTRR3g8HpRSTJo0iWuuuYa6desyadIkfvvtN+bNmwdASEiI1wBMRU38Bw4cyNy5c5k1a9YpuypYvHgxgwYNokmTJkybNo29e/cCMG3aNF599VViYmIAWLlypXEu/Pz8aNy48SnPSe3atcucHh4ezt13333K5aHw/I0ePRqlFADx8fHcdtttZGdnM3XqVHJzc8nIyOCGG25g165dZXZ9UFJkZCT9+vWjbt26hIaGYjabSU1NZcaMGaSlpZGamspLL73E+++/X+byK1eupGbNmgwePJj9+/fz1VdfAYVjjvzzn//kgw8+AODAgQOMGjXKWC4gIIC7774bk8nEJ598QnJycqWOQZGiflWLP7eKd6NQNK5CZmYmAwcO5Pjx4wAkJCRwyy234HA4+Pbbb9myZYtxzHbu3Gks9/HHH7Nq1SoOHjzIpk2bmDBhAsHBwSxZsgSA4OBgvvzyS0wmE+3atWPSpEnMmDGD1atXA1CnTh0eeOABI25169Y9rf2rSFXv7+JGjhzpNfhov379aNWqFXPmzOGXX3457Th9+OGHeDweoHDgyZtuugmLxUJKSgrr1683uhA5lfT0dK6//npjUFiHw8Gdd95JYGAgX3/9Nfv27UPXdZ544gnatGlD165dTyuelblez8b5LN49XUhICHfeeSdhYWEcPHiQv//+m7/++qvC5RcsWMCQIUOIj4/nu+++4++//wYKx3b64osvGDp0KFA4nk/Lli1p27YtERERBAYGkpOTw5IlS4yuG1588UXuvvtuY4DOb775xqufa19fX2699VYSEhJITk7mxx9/9IrLkCFDWL9+PVB4395+++3UrFmTJUuWMHfuXHRdZ9SoUbRt25bOnTsDMGXKFGP5Hj160K1bN3Jycti/fz+LFy823hEltW3blrlz5wKF73kZoF1cTop339O6dWs6dOhAjx49mDNnjhH+8MMPG/OcKt3dvn17mjVrxurVq5kxY4ax3KRJk4z/F6XNp0+fzsSJE43pvXr1onPnzhw5coTPPvuM7Oxs/vrrL0aNGsWHH35YZvz/+usvwsPDufXWWwkLCys1vkJlVGdaafjw4UaapaCggBkzZhjP/aNHj3oNuj148GAslvKz8B999FGZabDKdIWamZnJp59+6jWO38033+w1T/E+uY8fP06DBg1o2bIl7dq1o02bNlx99dXUq1fvlNuaO3eukT4q7pZbbjmtsSxO99qtqpJpST8/P0aMGIHJZOLjjz8mMzOzUutZvHgx7dq1o1evXixYsMBI2+3cuZNZs2Zx6623lrncmjVruOWWW6hTpw7vvfceWVlZ6LpuzD9kyBDCw8N59913cbvdpdLCVU2TFrdnzx58fHx44IEHcDgcTJkyxXinvv7669x1112EhoYyadKkSt37AwcO5IMPPmDWrFm8/PLLpzxulUl/pqSkkJKSYixXVhdnJV199dVlTnc4HDzyyCOnXB4Ku6kbMmQITqcTgLCwMIYNG4amaXz22WccP34cp9PJsGHDaNOmDfXr1z/lOoODg7n22mtp3LgxISEh2Gw2jhw5wsyZM0lJSSEzM5MxY8aUm3auTL4WCrsCv/vuu3G73UDhmD133XUXISEhfPnll5XqTq64onFpJk6caKSpe/bsybXXXus1n8fjYdCgQUaeNyIigttvv53Q0FB+/fVXli5ditPpZOjQobRp04Y6deoAhdfaggUL2LRpE4cOHeLhhx9m4MCBxhhPVquVr7/+Gj8/v9PKt58NVb2/i2RnZ/Pll18av2+44QZat25NRkYG+/btY9GiRRUuP2/ePBo1asT111/P+vXrjWuj5HcTgJo1a3L11VeTkJBASEgISimSk5OZMWMGOTk5bNq0iffff5+nnnqqzG2V996tyjv9bOfVoer5ASg8jw0aNOCmm27iwIEDfPHFF+i6Tl5eHnfeeSd///238S3pdL9neDweBg4cyM6dO43ttWvXjmuuuQaPx8OKFSu83idLly5l5MiR6LoOQIcOHejduzdZWVnGs2Xr1q0MHTqU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xrtmz549vPvuu0ZYv379ynxmn22vvvoq06dPJyMjAygsUL799tuNViSfffYZ+fn53HbbbaXyM35+fphMJuNj7KkKgc7Eub52SyqZllywYIHxUXHhwoXGYMcXqjNJk1bFqe79IgEBAXTv3p05c+Ywe/Zs7r333jPabvH3d0FBwSk/GJalqvd+UT50zZo1bNmyxXhebd682avF1enmk4KCgrj55puN/F5V0soVKTmY+ldffcXdd98NFH67KNldTmWdKi1b/Djk5+fTtGlTr65ei6xYsaJUq6Bvv/2WTz75xNhOfHw8u3fvZt++fdx///1evV1UJi4XkvXr19OyZUuaN2/uVWE1MTGRjRs3AoXp2PIGuK+M4tdX27ZtjcrG+fn5Xun+01XVd/q5yKtXNT8A8MMPP5CZmWm844p/J4Sy80OV/Z7RpUsXXn/9deP32LFjef/9970KoPbt20dCQgLgna44fPgw9957b6l3b15eHt98802Zz5bLIX8jhRrivJk7dy7Hjx/H4/GwdetWvvrqKyPMbDYbH5pDQ0O56667+OijjwB4/fXXWb16NZ06dcLHx4fU1FSWL1/OunXrGDZsGL169arU9hMTE7nmmmv4/fffjfXu2bOHpk2b8ttvv3n1b/noo4+e1ofisx3n1NRUfvvtN+N3s2bNyszILV++3KhtO23aNF5//fVKj31R0t13382HH36IUgqPx8NVV13F0KFDyczM5OOPP67SOs+nhx9+mA8++ID8/HxOnDhBy5Ytuemmm4iLiyM7O5utW7eycOFC0tPTSU5OrlJN6+KKF5gcO3aMO++8kyZNmqBpGg899JBXDZdBgwaxbds2Zs2adcaFGu3bt8dqteJyucjJyWHHjh2n7Hbho48+IiQkhPz8fP7880+vrmcaNmxYqUzyqFGjmD17NkopsrKyaNeuHbfffjvZ2dlGohIK74Xi49WUp2HDhsybNw+AjRs3ctttt9G4cWPmzJnD8uXLT7n86Rg8eDDjxo0zajwOGjSIESNGoGmaV9xPV2xsrHH/vfnmm6SlpeFwOGjVqhXXXHMNw4cP56WXXuL48eO43W46d+7MTTfdRL169XA6nWzfvp2FCxcameOi7njWrVvn1T3fe++9R1BQkDG2weuvv06vXr28umgofj2uWbOGRx99lLi4OGw2W6W7zTgfYmJi6NOnjzEewpdffklmZiYtW7Zkzpw5bNmy5bTX+dZbb/HFF19wzTXXULt2baKiojhx4gSff/65MU9lPqwMGzaMF1980Uig3nDDDdx1110EBgby1VdfGU2LNU3jscceO+14no4zOZ9//vkngwcPpkuXLjRu3NgYU+j777835rHZbOWOM/L888/z999/k5CQwLfffuvVSu+ee+4BoF69el4frh599FHWr19PWlpahX2XP/3000Z/utnZ2bRs2ZJbb72VhIQE9u/fz08//cT777/PwIEDSUxMpGfPnsZzYuTIkcyZM4c2bdpgMpnYt28fS5cuZdu2bYwdO9bo8/mWW24hIyODq6++2mj9uXv3bq8xOMq6Hop/cKioVpkQl4r8/HymT59u/K5du3ap/pkBNm3axNatWwH46aefOH78eKW7JC1ZueT222+nU6dOmEwmhgwZQlRUFE8++aQxvtKSJUto0aIF/fr1IyQkhLS0NNatW8fixYupUaOG15hyZ9uFkFbq378/oaGhRs3K4h/fKtP1VPH9KKlZs2Ze40CUJzg4mIceeoiJEycCsGvXLmbMmGG0EklOTmb8+PE89thjdOnShZYtWxIaGkpaWhrffvutVyWoirZXlC8sKSgoyHjXlOd8XLslDRkyhPHjx5Ofnw8UtsQu+vB7MeSTqpomrarK3PtFBg0axJw5c5g1a9YZF2rUqlWL2NhYo1vrtWvXnvK6nzFjBqtXr8blcrFmzRqv9FJgYGC5LfyLe+ihh5gyZQpOpxNd1+natSvDhg1D0zQ+++wzI71ks9kq1Rq9eOXK9PR0+vbtS6dOnVi8eLHXN4KzoX///kRERBiFrg888ACrVq0iJCSEL7/8EpfLVaX1xsbGGmMDffrppzgcDgICAqhbty6DBg2ib9++RsU/KLynrr/+epo0aYKu6+zevZs///yTffv2MXXqVKO1zIEDB7yuk7Fjx3LddddxxRVX4HK5mD59On369GHo0KFecSlyqnx7devQoQMxMTFceeWVxMTEEBgYyIYNG4wCDTjzAuOGDRsaLel++ukn7rvvPqKjo/n222/5+++/z2jdVXmnn4u8elXzAwDHjx+nXbt23HTTTRw4cMCrK8W6desaBUpV+Z5x3XXX0bx5c2PMmA8++IB169bRvXt3lFKsXbuWo0ePGuMQPv7440a6YteuXTRr1ozrr7+eqKgoMjIy2LRpE4sWLSInJ8frmi9yWeRvzv1Y5OJytWDBAgVU6m/8+PFey+bk5KgePXqccrlhw4Z5Lde1a9dyw5RS6tChQ6pJkyYVrvOGG25QLper3P1ITk4uc3+rGueyvPLKK17LLF68uMz5Pv74Y6/5Zs2apZRSaurUqV7TK3uMnn766TLj3Lp1axUVFVXm+TrV8UlISDDCxo4da0yvKI5jx44tN2zYsGHG9K5du3qFzZw5U/n5+Z3yHBSPY0XHo6I4Hjp0SPn6+pa5/mPHjnnNu3LlSgWomJgYpev6KdetlPIKmzp1qldY8Th/8sknpZYtefzK+7Pb7eq3337zWra886WUUm+99ZYymUzlri8oKEgtWLCgVHzKsnPnThUQEFBqHRaLRQ0ePLjcY1NR/Irvd0JCglfYe++9V2acY2JiVP369U/r/iwyatSoMtf50EMPGfMsWbJEhYeHn/JcFB23nJwc1ahRI6/nUZG7777bmF6zZk114sQJI2zdunVlnhs/P79K7Ut5x7Wq93dF9uzZoyIjI8s8DsWv7co+u+67774Kj63JZFIzZ8405q/oGbJo0SIVHBxc4breeOMNr2Uquu6qer2eyfn8+uuvT3m9jR492pi/5LOob9++ZS7Tt29f4/mllFL3339/mfNdc801KjY2ttz9HjdunNI0rdy4FT9XR44cUS1btjzl/hTfRsOGDSucNzQ0VO3du9crTjt27DDC/f39VW5u7imPsxAXu5LPii+//LLM+X7//Xev+d5++20j7FTp7vz8fFWjRo0y78VVq1YZ8z3zzDOnvM9LPieLh5VMJ1XGhZpWevDBB0stEx0d7ZU3qcp+FD8/Jd/tJY/f0aNHvdK4TZs2NZ7/ld3ePffc47XOyuYLS57nspzptVtR2qaiNMKUKVPKjXPjxo2N33feeaexTHJyste8Jc99efdQRXEs+d4uHlZR2uJ006SnOh4VxbGy975SSh0+fFiZTCZls9lUZmbmKdetVMX3YPE4JyUlqZJKHr/y/jRNqzAPVvKZ99///lf5+PhU+Cz5+uuvS8WnLGlpaSomJqbce7m8Y1PVfO3s2bOV2Wwuta2AgADVunXrcq+Bivzzn/8sM/59+/Y15tm+fbuqVavWKc9F0XnweDyqW7duxvT27dsrt9utlFLqxRdf9Ir37t27je2cTr69LOUd16re3xWx2+0VHovatWur9PR0Y/6yjlOR8u7fv/76S1ksllLr9vf3V9dff325z5CKtlVcVd7pZzuvfrr5geLPlGuuuabM8+Dj46MWLVpkLFPV7xm7d+9W9erVKzduiYmJXvP/61//KvN8lfwr6XLJ38hA4aJa2O12EhISuPHGG5k7dy5JSUle4b6+vvz666989dVXXHfddURFRWGxWHA4HNStW5cbb7yRDz/88LS7W4qOjmbVqlW8+eabdOzYkaCgICwWCxEREfTu3Zvp06fz7bffVqm1w9mMc/G+3xs2bEjnzp3LnO/mm2/26s/wTAcMf+WVV/jwww9p2rQpNpuNGjVqMHLkSH7//XevPivPZXPyMzFw4EA2b97M6NGjad68Of7+/pjNZsLCwujYsSNPPvkkS5YsKTWIVlVER0fz448/0rlz51P25dy2bVtq1qzJwYMHjabJZ+Kuu+4y/n86XTVpmoafnx+NGzfmvvvuY926dUYzycp47LHHWLFiBUOGDCEhIQGbzYbD4aBx48aMGjWKTZs2VXqAx3r16vHnn39y7bXX4uvri7+/P127duX333+nR48elY5TZT300EN8++23tGnTBrvdTnh4OEOGDGHFihUVjn9TkZdffplHH32UmjVreg3uWVynTp3YsmULL7zwAm3atCEwMBCz2UxwcDBt2rRh5MiRzJs3j6uuugoorOVZVEMmMjKSKVOmGOt66623jJpzBw4c8KrJ2LJlS77++mtat26Nj49PlfbnfKlduzbLly/n5ptvJjg4GIfDQceOHfnxxx8rXRO1uLvvvpsxY8Zw1VVXERcXh4+PDzabjbi4OG666SYWLVpkDEQJ3gPllWyRd9VVV7F582Yef/xxmjZtiq+vLzabjfj4eAYPHszSpUt5/PHHq7rrlXYm57NLly68/PLL9O3bl7p16xIQEGC856655ho+/fRT3nzzzXKX//7775kwYQJ169bFZrNRq1Ytxo4dy3fffefVNPrdd99lwoQJJCQkGE3/n3zySX788ccK36Fjx45l+fLlDBs2jDp16uDj44Ovry916tRhyJAhXjUiIyMjWbFiBVOmTKF79+6Eh4djNpvx8/OjUaNG3HHHHUybNo0nn3zSWOaVV17h/vvvp02bNkRHR2O1WvH19aVRo0Y8+OCDrFmzxmjSXaT4c/S22267oGrsCXGuFE8zBgUFcf3115c539VXX+2V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da6//npsNhsrVqzggw8+YMyYMZU6xs899xxvvvkmq1evxmKxcNddd3kd/5dffpnXXnuNNWvWEB8fz5QpU4xwt9vNwIED6dq1Kxs3bmTZsmXce++956RFjxBCCCHE2SbdT4kL0vluOi+EEEIIIcTFKmVfCuajZgIjAssMD/QL5PjR46TsSyGhVsJ5idPYsWN58803uf7664HClhdbt27l3//+N8OGDcPf358vv/ySrl27EhAQwNtvv82CBQsIDCzch4iICABCQ0OJjo4uNw/w3nvv0apVKyZOnGhM++STT4iLi2PHjh00aNAAgMTERJ5//nkAnnnmGV599VXCw8O55557AEhKSmLKlCls3LiRDh06eO1Hz549gcKCkZo1azJz5kxuvvlmXnnlFQYPHsxjjz0GQP369XnnnXfo2rUrU6ZMISUlhTlz5rBy5UratWsHwMcff0zjxo2N9c+fP5+///6bX3/9lZiYGAAmTpxInz59TnmMX375Zbp27QrA008/Td++fcnPz8fHx4d3332Xu+++mzvvvNPYv99++43s7GwAMjMzycjI4B//+Ad169YF8IqXEEIIUZKu62zYuIHZf8wmIyeDIL8gBnQfQGKLREwm0ynDhTibpFBDXHDy8vKY/eVszEfNxAbHYrfacZ50snLaSpZGLKX1Va3Zvna7FHYIIYQQQggBbFi6gdjg2ArniQ2OZcPSDeelUCMnJ4fdu3dz9913G4UGUNg6ICgoyPjdsWNHnnjiCV588UXGjBlDly5dTntbGzZsYMGCBWWO37F7926jUKNFixbGdLPZTFhYGM2bNzemRUVFAXi1oiiKY5HQ0FAaNmzItm3bjG1v3LjRq0sppRS6rpOcnMyOHTuwWCy0adPGCG/UqBHBwcHG723bthEXF2cUaJTcZkWK71ONGjWM+MfHx7N9+3YefPBBr/nbt2/PH3/8YezL8OHD6dWrFz179qRHjx7cfPPNxnqEEEKI4jIzM0manESqPZWAegFYfaxk5Gcwcc5EYmfF8sSIJ3jjP2+UGz5h9ASj4oIQZ4MUaohqU1ZrjBYdW7Bs3jKic6K9aprZrXZigmKYN38eW3/ZSq9repGelc62Jdv4679/keuTS9M2TQkNCsXX31cKOoQQQlRIahEJIS4leTl5RpdT5bFb7eTlnP1xNcpS1Brgo48+4oorrvAKM5vNxv91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1+ulxlfD3z/491w9/2ps26Z9Sztr1q4hnopTHipn6a1LaWluGfEg4USPjda2VoqzihS8BQ7tOkQmnbkkFSQXg0INERERERERERERERkT3hhInE5yb5JlS5adcX1LcwsNTzTQH+vH7Xez4WcbShUQs0oVEOl4muSOJP+2+t+oqa7ha//8Nbp93YRnhPH4PcSzcVY9uYqGJxpYuXzliDfmPrnHxupnVjNt0jQiocglrSAZSQo1RERERERERERERGRMODmQCEaDp6xPx9I05BrO2l/iRPXDF77+BX6+4efY19n4qnzYBZtcLEeoGGLRskX0J/u56y/uYs4fzyFa/XqI4vF7iM6N0h/rp7WtlbbWtotSsdHS3HLGPiFjydiKaERERERERERERERk3DoRSFR1VhHriGFlLKA05VSsI0ZVZxUrl69805AhEonwp0v/lKnzplLhrsDT56EsVcaCyQtYvHAxXo+XjJOht7aXbPL003wGo0G6fd1s7dh6wfdzPFOlhoiIiIiIiIiIiIiMGW+cjimRSpSmY1ry1qZj+r+//r80Lmxkmn/aadfvP7yfwNwA+7ftp6qp6rTbhKeHWf3M6nFRQXGxKNQQERERERERERERkTHlQkzHFE+93nD8dM3C42Yc91Vu8vn8GT/DE/CQSCXOewxyKoUaIiIiIiIiIiIiIiJvUB4qJ56N49jOKc3C87k8fe198Atoqmk642dYGYtIaGQbhY836qkhIiIiIiIiIiIiIvIGS29dSmJ3gg0/20B2dhbfbB+mr/RI3fSZVDZXkp+YZ/D4II7tnPYzknuTLLt92cUc9pinUENERERERERERERE5A1amlvwHvKSCCZwl5866ZEbN0F3kFxtjlhX7JT16ViahlwD8+bOuxjDHTcUaoiIiIiIiIiIiIiIvIFpmkxunExZtIxcLIddsAGwCza5WA5/0s+dN99JWXUZ25/djpWxgNKUU7GOGFWdVaxcvvKcG5PLuVFPDRERERERERERERGR08gVc9y4+EZisRid3Z1YloXH46FpchPRaBQDg5sW30RmMMPkQ5NJpBJEQhGWLVnGvLnzFGiMAIUaIiIiIiIiIiIiIiKncaJZeFW0iqpo1Wm3KWQKTJ86nRXLV1zUsY1XiolERERERERERERERE5j6a1LSb6aPOs2agZ+cSnUEBERERERERERERE5jZbm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GHeiiuOLH/oiwSNBZi6ZSU2mBs9WD96Xvfg3+amrrcM134XxqoF5xMQdcGNMMTAnmAS8ASZHJ/Oexe/BF/ed9buSe5Msu33ZRdozERERERERERERERlvVKkxRtm2TfuWdtasXUM8FScSiNASbMGcbrLj2A4i745g+kqZlolJtVFNeGaYQrKA9ZKFUTQIDgaZf8185lTN4cF7H2TFIyvoj/UTjAZP+b50LE1DroF5c+dd7F0VERERERERERERkXFCocYYlEgkaG1rpdvXTXhGGI/fQzwbJ51M0/VfXSRcCdxXlU69XbCxEha+kI8PvOcDJAeTdHZ3YlkWoU0hvv7JrzNv7ryhhuStba10H+4mPD2MJ+DBylgk9yZpyDWwcvlKTFPFPyIiIiIiIiIiIiIyMhRqjDG2bdPa1kp/Uz/RaHRoucfvoW5RHWVTy2j/3+24Yi5s08bj8TBt8jRmVc6ijz68US9V0SqsjMXk8ORhPTpO15A8EoqwbMmyoeBDRERERERERERERGSkKNQYY9q3tNPt6x4WaJwsVB2ifm495GDajdMAMBwDA2PYdsm9SZYtObU/xpkakouIiIiIiIiIiIiIjDT9af0Ys2btGsIzwmfdZtINk0juSJKOpU+7Xv0xRERERERERERERORypEqNMSaeiuPxe866jTfkZeHchXg6PXQf7iYyPQJ+sLIWib0J9ccQERERERERERERkcuSQo0xpjxUTjx79mDDylhMqJpA62dah/pjeEwPjXaj+mOIiIiIiIiIiIiIyGVLocYYs/TWpax6chXRuafvqQGv98s40R9j3tx59PT0UFtbqzBDRERERERERERERC5beoI9xrQ0t9CQa1C/DBEREREREREREREZcxRqjDGmabJy+UqqOquIdcSwMhZQmnIq1hGjqrNK/TJEREREREREREREZFTS9FNjUCQSoa21bahfRiKVIBKKqF+GiIiIiIiIiIiIiIxqCjXGqBP9MlqaWy71UERERERERERERERELgj9yb6IiIiIiIiIiIiIiIwKCjVERERERERERERERGRUUKghIiIiIiIiIiIiIiKjgkINEREREREREREREREZFRRqiIiIiIiIiIiIiIjIqKBQQ0RERERERERERERERgWFGiIiIiIiIiIiIiIiMioo1BARERERERERERERkVFBoYaIiIiIiIiIiIiIiIwKCjVERERERERERERERGRUUKghIiIiIiIiIiIiIiKjgkINEREREREREREREREZFRRqiIiIiIiIiIiIiIjIqKBQQ0RERERERERERERERgWFGiIiIiIiIiIiIiIiMioo1BARERERERERERERkVFBoYaIiIiIiIiIiIiIiIwKCjVERERERERERERERGRUUKghIiIiIiIiIiIiIiKjgkINEREREREREREREREZFRRqiIiIiIiIiIiIiIjIqKBQQ0RERERE5E1MnToVwzCG/XzlK1+51MMSERERERl33Jd6ACIiIiIiIqPBypUr+cQnPjH0OhwOX8LRiIiIiIiMTwo1REREREREzkE4HKa+vv5SD0NEREREZFxTqCEiIiIiInIOvvKVr/ClL32JyZMn86EPfYh7770Xt/v0t1S5XI5cLjf0OpFIAGDbNrZtX5Txjna2beM4jo7XOKPzPj7pvI9POu/jl879+HTivF8ICjVERERERETexKc//WkWLFhANBrlhRde4IEHHuDIkSO0tbWddvuHH36YBx988JTlvb29ZLPZkR7umGDbNvF4HMdxME21gxwvdN7HJ5338UnnffzSuR+fTpz3C0GhhoiIiIiIjEv3338/X/3qV8+6zY4dO5g9ezbLly8fWtbc3IzX6+VTn/oUDz/8MD6f75T3PfDAA8Pek0gkaGxspKamhkgkcuF2YgyzbRvDMKipqdEDj3FE53180nkfn3Texy+d+/HJtm0GBwcvyGcp1BARERERkXHpvvvu46Mf/ehZt5k2bdppl1933XUUCgX279/PrFmzTlnv8/lOG3aYpqmb97fAMAwds3FI53180nkfn3Texy+d+/HJMIwL8jkKNUREREREZFyqqamhpqbmvN67efNmTNOktrb2Ao9KRERERETORqGGiIiIiIjIWaxbt46XXnqJd73rXYTDYdatW8e9997Ln/zJn1BZWXmphyciIiIiMq4o1BARERERETkLn8/HD37wA1asWEEul6OpqYl77713WM8MERERERG5OBRqiIiIiIiInMWCBQt48cUXL/UwREREREQEUCcWEREREREREREREREZFRRqiIiIiIiIiIiIiIjIqKBQQ0RERERERERERERERgWFGiIiIiIiIiIiIiIiMioo1BARERERERERERERkVFBoYaIiIiIiIiIiIiIiIwKCjVERERE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OBwOoqOjOXjwIHa73d3hSAuheiPnQ/VGzpfqjpwP1ZvGYxgGhYWFREZG6u26s3Qx3kc0Np3DrZPKvXVSubdOKvfWS2XfOtWU+86dO+ncufMF3UeopcY5MpvN/OpXv3J3GI3Cbrfri0TOmeqNnA/VGzlfqjtyPlRvGodaaJybi/k+orHpHG6dVO6tk8q9dVK5t14q+9YpKirqgl+M0mtVIiIiIiIiIiIiIiLSIiipISIiIiIiIiIiIiIiLYKSGoK3tzezZs3C29vb3aFIC6J6I+dD9UbOl+qOnA/VG5GWTedw66Ryb51U7q2Tyr31Utm3Tg1Z7hooXEREREREREREREREWgS11BARERERERERERERkRZBSQ0REREREREREREREWkRlNQQEREREREREREREZEWQUmNVio/P59bbrkFu91OYGAg48ePp6io6KzWNQyDIUOGYDKZ+Mc//tG4gUqzcq71Jj8/n8mTJ9O5c2esVivt2rXj3nvv5cSJE00YtTS1F154gdjYWHx8fOjTpw8bN2484/IffvghCQkJ+Pj4kJiYyPLly5soUmlOzqXevPrqq/Tv35+goCCCgoIYOHDgL9YzuXid63dOjffffx+TycSIESMaN0AROS/z5s2jX79++Pr6EhgYWO8ymZmZDB06FF9fX8LDw3nwwQepqqpq2kClUcXGxmIymWr9f+yxx9wdljSC8/09l5bpkUceqXNuJyQkuDssaWBff/01w4YNIzIyst5niIZhkJqaStu2bbFarQwcOJA9e/a4J1hpUL9U9uPGjavzHTB48OBz2oeSGq3ULbfcwg8//MDKlSv59NNP+frrr5k4ceJZrfvMM89gMpkaOUJpjs613hw+fJjDhw/z5JNPsmPHDpYsWcJnn33G+PHjmzBqaUoffPABU6dOZdasWXz33XckJSWRkpJCbm5uvcuvX7+e0aNHM378eLZs2cKIESMYMWIEO3bsaOLIxZ3Otd6sWbOG0aNH8+WXX5KWlkZ0dDSDBg0iKyuriSMXdzvXulNj//79TJs2jf79+zdRpCJyrioqKrjxxhu5++67651fXV3N0KFDqaioYP369bz55pssWbKE1NTUJo5UGtucOXPIzs52/Z88ebK7Q5IGdr6/59KydevWrda5vXbtWneHJA2suLiYpKQkXnjhhXrnP/HEEzz77LO8/PLLbNiwAT8/P1JSUigrK2viSKWh/VLZAwwePLjWd8B77713bjsxpNXZuXOnARibNm1yTfv3v/9tmEwmIysr64zrbtmyxYiKijKys7MNwFi6dGkjRyvNxYXUm1P9/e9/N7y8vIzKysrGCFPcLDk52bjnnntcf1dXVxuRkZHGggUL6l3+97//vTF06NBa0/r06WPceeedjRqnNC/nWm9+rqqqyrDZbMabb77ZWCFKM3U+daeqqsro16+f8dprrxljx441hg8f3gSRisj5euONN4yAgIA605cvX26YzWYjJyfHNe2ll14y7Ha7UV5e3oQRSmOKiYkxnn76aXeHIY3sQq8FpeWZNWuWkZSU5O4wpAn9/Bmi0+k0IiIijIULF7qmFRQUGN7e3sZ7773nhgilsdT3/Lgh7sPUUqMVSktLIzAwkN69e7umDRw4ELPZzIYNG067XklJCTfffDMvvPACERERTRGqNCPnW29+7sSJE9jtdjw9PRsjTHGjiooKvv32WwYOHOiaZjabGThwIGlpafWuk5aWVmt5gJSUlNMuLxef86k3P1dSUkJlZSXBwcGNFaY0Q+dbd+bMmUN4eLhaDYq0cGlpaSQmJtKmTRvXtJSUFBwOBz/88IMbI5OG9thjjxESEsKll17KwoUL1cXYRaYhrgWlZdqzZw+RkZG0b9+eW265hczMTHeHJE0oIyODnJycWud+QEAAffr00bnfSqxZs4bw8HA6d+7M3XffTV5e3jmtr6eKrVBOTg7h4eG1pnl6ehIcHExOTs5p15syZQr9+vVj+PDhjR2iNEPnW29OdezYMR599NGz7upMWpZjx45RXV1d6+ECQJs2bfjxxx/rXScnJ6fe5c+2TknLdz715uemT59OZGRknQSZXNzOp+6sXbuWxYsXs3Xr1iaIUEQa0+muIWrmycXh3nvvpWfPngQHB7N+/XoeeughsrOzWbRokbtDkwbSENeC0vL06dOHJUuW0LlzZ7Kzs5k9ezb9+/dnx44d2Gw2d4cnTaDmt1rPA1qnwYMHM2rUKOLi4khPT+dPf/oTQ4YMIS0tDQ8Pj7PahlpqXERmzJhRZ5CVn/8/34uCTz75hC+++IJnnnmmYYMWt2vMenMqh8PB0KFD6dq1K4888siFBy4iwsm3N99//32WLl2Kj4+Pu8ORZqywsJBbb72VV199ldDQUHeHI9IqNdV1pzRv51IPpk6dyhVXXEH37t256667eOqpp3juuecoLy9381GIyIUYMmQIN954I927dyclJYXly5dTUFDA3//+d3eHJiJN4A9/+AO/+93vSExMZMSIEXz66ads2rSJNWvWnPU21FLjIvLAAw8wbty4My7Tvn17IiIi6gy4VVVVRX5+/mm7lfriiy9IT08nMDCw1vTrr7+e/v37n1Olk+alMetNjcLCQgYPHozNZmPp0qVYLJYLDVuaodDQUDw8PDhy5Eit6UeOHDltHYmIiDin5eXicz71psaTTz7JY489xqpVq+jevXtjhinN0LnWnfT0dPbv38+wYcNc05xOJ3Cy5eHu3bvp0KFD4wYt0sqd7XXn2YiIiGDjxo21ptV8H+g6onm7kHrQp08fqqqq2L9/P507d26E6KSpXci1oFw8AgMD6dSpE3v37nV3KNJEas7vI0eO0LZtW9f0I0eO0KNHDzdFJe7Svn17QkND2bt3L1dfffVZraOkxkUkLCyMsLCwX1yub9++FBQU8O2339KrVy/gZNLC6XTSp0+feteZMWMGEyZMqDUtMTGRp59+utbDAWl5GrPewMkWGikpKXh7e/PJJ5/oTeqLmJeXF7169WL16tWMGDECOPnAcPXq1UyaNKnedfr27cvq1au5//77XdNWrlxJ3759myBiaQ7Op94APPHEE8ybN4/PP/+81lg/0nqca91JSEhg+/bttabNnDmTwsJC/vKXvxAdHd0UYYu0amd73Xk2+vbty7x588jNzXV1kbpy5Ursdjtdu3ZtkH1I47iQerB161bMZnOdbnGl5Trfa0G5uBQVFZGens6tt97q7lCkicTFxREREcHq1atdSQyHw8GGDRu4++673RucNLlDhw6Rl5dXK8H1S5TUaIW6dOnC4MGDueOOO3j55ZeprKxk0qRJ/OEPfyAyMhKArKwsrr76at566y2Sk5OJiIio9y2Jdu3aERcX19SHIG5wPvXG4XAwaNAgSkpKeOedd3A4HDgcDuDkzczZ9pMnLcfUqVMZO3YsvXv3Jjk5mWeeeYbi4mJuv/12AG677TaioqJYsGABAPfddx8DBgzgqaeeYujQobz//vts3ryZv/71r+48DGli51pvHn/8cVJTU/nb3/5GbGysq89Vf39//P393XYc0vTOpe74+PhwySWX1Fq/pgXqz6eLiPtlZmaSn59PZmYm1dXVrrFw4uPj8ff3Z9CgQXTt2pVbb72VJ554gpycHGbOnMk999yDt7e3e4OXBpGWlsaGDRu48sorsdlspKWlMWXKFMaMGUNQUJC7w5MG9Eu/53LxmTZtGsOGDSMmJobDhw8za9YsPDw8GD16tLtDkwZUVFRUq/VNRkYGW7duJTg4mHbt2nH//fczd+5cOnbsSFxcHH/+85+JjIx0JTil5TpT2QcHBzN79myuv/56IiIiSE9P549//CPx8fGkpKSc/U4MaZXy8vKM0aNHG/7+/obdbjduv/12o7Cw0DU/IyPDAIwvv/zytNsAjKVLlzZ+sNJsnGu9+fLLLw2g3v8ZGRnuOQhpdM8995zRrl07w8vLy0hOTja++eYb17wBAwYYY8eOrbX83//+d6NTp06Gl5eX0a1bN+Nf//pXE0cszcG51JuYmJh6v1dmzZrV9IGL253rd86pxo4dawwfPrzxgxSRczZ27Nh6v+tPvT/Zv3+/MWTIEMNqtRqhoaHGAw88YFRWVrovaGlQ3377rdGnTx8jICDA8PHxMbp06WLMnz/fKCsrc3do0gjO9HsuF5+bbrrJaNu2reHl5WVERUUZN910k7F37153hyUN7HTPhGquz51Op/HnP//ZaNOmjeHt7W1cffXVxu7du90btDSIM5V9SUmJMWjQICMsLMywWCxGTEyMcccddxg5OTnntA+TYRjG+eVcREREREREREREREREmo7Z3QGIiIiIiIiIiIiIiIicDSU1RERERERERERERESkRVBSQ0REREREREREREREWgQlNUREREREREREREREpEVQUkNERERERERERERERFoEJTVERERERERERERERKRFUFJDRERERERERERERERaBCU1RERERERERERERESkRVBSQ0REREREREREREREWgQlNUREpEktWbIEk8nk+u/j40OnTp2YNGkSR44cqbP8kSNHmDZtGgkJCfj6+uLn50evXr2YO3cuBQUFZ9xXdnY2M2bM4Morr8Rms2EymVizZk3jHJiIiIiIiDQa3UeIiEgNT3cHICIirdOcOXOIi4ujrKyMtWvX8tJLL7F8+XJ27NiBr68vAJs2beLaa6+lqKiIMWPG0KtXLwA2b97MY489xtdff82KFStOu4/du3fz+OOP07FjRxITE0lLS2uSYxMRERERkcah+wgREVFSQ0RE3GLIkCH07t0bgAkTJhASEsKiRYtYtmwZo0ePpqCggJEjR+Lh4cGWLVtISEiotf68efN49dVXz7iPXr16kZeXR3BwMB999BE33nhjox2PiIiIiIg0Pt1HiIiIup8SEZFm4aqrrgIgIyMDgFdeeYWsrCwWLVpU50YEoE2bNsycOfOM27TZbAQHBzd8sCIiIiIi0izoPkJEpPVRUkNERJqF9PR0AEJCQgD45JNPsFqt3HDDDe4MS0REREREmjHdR4iItD7qfkpERNzixIkTHDt2jLKyMtatW8ecOXOwWq1cd911AOzatYtOnTrh5eXl5khFRERERKS50H2EiIgoqSEiIm4xcODAWn/HxMTw7rvvEhUVBYDD4cBms7kjNBERERERaaZ0HyEiIkpqiIiIW7zwwgt06tQJT09P2rRpQ+fOnTGb/9srot1up7Cw0I0RioiIiIhIc6P7CBERUVJDRETcIjk5md69e592fkJCAlu3bqWiokJNx0VEREREBNB9hIiIaKBwERFppoYNG0ZpaSkff/yxu0MREREREZEWQvcRIiIXPyU1RESkWbrrrrto27YtDzzwAD/99FOd+bm5ucydO9cNkYmIiIiISHOl+wgRkYufup8SEZFmKSgoiKVLl3LttdfSo0cPxowZQ69evQD47rvveO+99+jbt+8vbqfmhuWHH34A4O2332bt2rUAzJw5s5GiFxERERERd9B9hIjIxc9kGIbh7iBERKT1WLJkCbfffjubNm06Y1+4NbKzs1m4cCH/+te/yMzMxGw206VLF0aNGsWkSZOw2+1nXN9kMp12nn4CRURERERaBt1HiIhIDSU1RERERERERERERESkRdCYGiIiIiIiIiIiIiIi0iIoqSEiIiIiIiIiIiIiIi2CkhoiIiIiIiIiIiIiItIiKKkhIiIiIiIiIiIiIiItgpIaIiIiIiIiIiIiIiLSIiipISIiIiIiIiIiIiIiLYKSGiIiIiIiIiIiIiIi0iIoqSEiIiIiIiIiIiIiIi2CkhoiIiIiIiIiIiIiItIiKKkhIiIiIiIiIiIiIiItgpIaIiIiIiIiIiIiIiLSIiipISIiIiIiIiIiIiIiLYKSGiIiIiIiIiIiIiIi0iL8fyoib3Zu22o8AAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 1600x600 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\\nVisualization complete (reproduces Figure 2 concept from paper)\n",
"Note: Using PCA instead of UMAP for resource efficiency\n"
]
}
],
"source": [
"def visualize_alignment(projection, test_data, n_samples=200):\n",
" \"\"\"\n",
" Visualize embeddings before and after alignment using PCA.\n",
" Reproduces Figure 2 concept from the paper.\n",
" \"\"\"\n",
" device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
" projection = projection.to(device)\n",
" projection.eval()\n",
" \n",
" # Get embeddings\n",
" bio_emb = test_data['bio_embeddings'][:n_samples]\n",
" text_emb = test_data['text_embeddings'][:n_samples]\n",
" labels = test_data['labels'][:n_samples]\n",
" \n",
" # Project bio embeddings using trained projection\n",
" with torch.no_grad():\n",
" bio_emb_torch = torch.FloatTensor(bio_emb).to(device)\n",
" bio_proj = projection(bio_emb_torch).cpu().numpy()\n",
" \n",
" # For \"before alignment\": use PCA to reduce bio embeddings to match text dimension\n",
" # But we need to be careful with dimensions\n",
" n_components_pre = min(bio_emb.shape[0], bio_emb.shape[1], D_TEXT)\n",
" pca_pre = PCA(n_components=n_components_pre)\n",
" bio_pca = pca_pre.fit_transform(bio_emb)\n",
" \n",
" # Pad or trim to match text embedding dimension\n",
" if bio_pca.shape[1] < D_TEXT:\n",
" bio_pca_padded = np.zeros((bio_pca.shape[0], D_TEXT))\n",
" bio_pca_padded[:, :bio_pca.shape[1]] = bio_pca\n",
" bio_pca = bio_pca_padded\n",
" \n",
" # Combine embeddings for dimensionality reduction\n",
" # Before alignment: bio (PCA) + text\n",
" before_bio = bio_pca\n",
" before_text = text_emb\n",
" before_all = np.vstack([before_bio, before_text])\n",
" \n",
" # After alignment: bio (projected) + text\n",
" after_bio = bio_proj\n",
" after_text = text_emb\n",
" after_all = np.vstack([after_bio, after_text])\n",
" \n",
" # Apply PCA for 2D visualization\n",
" print(\"Computing PCA projections for visualization...\")\n",
" pca_before = PCA(n_components=2, random_state=42)\n",
" before_2d = pca_before.fit_transform(before_all)\n",
" \n",
" pca_after = PCA(n_components=2, random_state=42)\n",
" after_2d = pca_after.fit_transform(after_all)\n",
" \n",
" # Split back into bio and text\n",
" before_bio_2d = before_2d[:n_samples]\n",
" before_text_2d = before_2d[n_samples:]\n",
" after_bio_2d = after_2d[:n_samples]\n",
" after_text_2d = after_2d[n_samples:]\n",
" \n",
" # Plot\n",
" fig, axes = plt.subplots(1, 2, figsize=(16, 6))\n",
" \n",
" # Before alignment\n",
" axes[0].scatter(before_text_2d[:, 0], before_text_2d[:, 1], \n",
" c='purple', alpha=0.4, s=50, label='Text embeddings', edgecolors='k', linewidth=0.5)\n",
" axes[0].scatter(before_bio_2d[:, 0], before_bio_2d[:, 1], \n",
" c='green', alpha=0.6, s=50, label='Bio embeddings (scRNA-seq)', edgecolors='k', linewidth=0.5)\n",
" axes[0].set_title('Before Alignment\\\\n(Bio and text in disjoint spaces)', fontsize=14, fontweight='bold')\n",
" axes[0].set_xlabel('PC 1', fontsize=12)\n",
" axes[0].set_ylabel('PC 2', fontsize=12)\n",
" axes[0].legend(fontsize=10)\n",
" axes[0].grid(True, alpha=0.3)\n",
" \n",
" # After alignment\n",
" axes[1].scatter(after_text_2d[:, 0], after_text_2d[:, 1], \n",
" c='purple', alpha=0.4, s=50, label='Text embeddings', edgecolors='k', linewidth=0.5)\n",
" axes[1].scatter(after_bio_2d[:, 0], after_bio_2d[:, 1], \n",
" c='green', alpha=0.6, s=50, label='Bio embeddings (aligned)', edgecolors='k', linewidth=0.5)\n",
" axes[1].set_title('After BioVERSE Alignment\\\\n(Bio and text in shared space)', fontsize=14, fontweight='bold')\n",
" axes[1].set_xlabel('PC 1', fontsize=12)\n",
" axes[1].set_ylabel('PC 2', fontsize=12)\n",
" axes[1].legend(fontsize=10)\n",
" axes[1].grid(True, alpha=0.3)\n",
" \n",
" plt.tight_layout()\n",
" plt.show()\n",
" \n",
" print(\"\\\\nVisualization complete (reproduces Figure 2 concept from paper)\")\n",
" print(\"Note: Using PCA instead of UMAP for resource efficiency\")\n",
"\n",
"# Visualize alignment\n",
"print(\"\\\\n\" + \"=\"*60)\n",
"print(\"VISUALIZATION: EMBEDDING ALIGNMENT (Figure 2)\")\n",
"print(\"=\"*60)\n",
"visualize_alignment(projection, test_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5. Zero-Shot Cell Type Annotation (Table 1)\n",
"\n",
"Evaluate the aligned model on cell type annotation task (Section 5.2.1).\n",
"\n",
"**Task**: Given a cell's bio embedding, predict its cell type.\n",
"\n",
"**Approach**: \n",
"- **Candidate matching** (baseline): Find nearest text embedding\n",
"- **Generative** (BioVERSE): Use aligned bio tokens for generation (simulated)\n",
"\n",
"This demonstrates the \"zero-shot generative cell type annotation\" evaluation from the paper."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:08:03.835789Z",
"iopub.status.busy": "2026-01-26T20:08:03.835457Z",
"iopub.status.idle": "2026-01-26T20:08:03.855569Z",
"shell.execute_reply": "2026-01-26T20:08:03.854540Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"============================================================\n",
"ZERO-SHOT CELL TYPE ANNOTATION RESULTS (Table 1)\n",
"============================================================\n",
"\n",
"Baselines:\n",
" Random: Accuracy = 0.100\n",
" Majority: Accuracy = 0.065\n",
"\n",
"BioVERSE (matching paradigm):\n",
" Accuracy: 0.140\n",
" Macro F1: 0.028\n",
"\n",
"Note: Paper reports LangCell (matching) = 0.865 accuracy\n",
" BioVERSE (generative) = 0.614 accuracy (harder task)\n"
]
}
],
"source": [
"def evaluate_cell_annotation(projection, test_data):\n",
" \"\"\"\n",
" Evaluate zero-shot cell type annotation (Table 1 from paper).\n",
" \n",
" We simulate the candidate-matching paradigm:\n",
" 1. Project bio embeddings to LLM space\n",
" 2. Find nearest text embedding (from candidate set)\n",
" 3. Assign corresponding cell type\n",
" \"\"\"\n",
" device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
" projection = projection.to(device)\n",
" projection.eval()\n",
" \n",
" # Get test data\n",
" bio_emb = torch.FloatTensor(test_data['bio_embeddings']).to(device)\n",
" text_emb = torch.FloatTensor(test_data['text_embeddings']).to(device)\n",
" true_labels = test_data['labels']\n",
" \n",
" # Project bio embeddings\n",
" with torch.no_grad():\n",
" bio_proj = projection(bio_emb)\n",
" \n",
" # Normalize for cosine similarity\n",
" bio_proj_norm = F.normalize(bio_proj, dim=-1)\n",
" text_emb_norm = F.normalize(text_emb, dim=-1)\n",
" \n",
" # Compute similarity matrix\n",
" similarity = torch.matmul(bio_proj_norm, text_emb_norm.T)\n",
" \n",
" # Predict: assign label of most similar text embedding\n",
" pred_indices = similarity.argmax(dim=1).cpu().numpy()\n",
" pred_labels = test_data['labels'][pred_indices]\n",
" \n",
" # Compute metrics\n",
" accuracy = accuracy_score(true_labels, pred_labels)\n",
" macro_f1 = f1_score(true_labels, pred_labels, average='macro')\n",
" \n",
" # Random baseline\n",
" random_preds = np.random.randint(0, N_CLASSES, size=len(true_labels))\n",
" random_acc = accuracy_score(true_labels, random_preds)\n",
" \n",
" # Majority baseline\n",
" majority_label = np.bincount(train_data['labels']).argmax()\n",
" majority_preds = np.full(len(true_labels), majority_label)\n",
" majority_acc = accuracy_score(true_labels, majority_preds)\n",
" \n",
" print(\"\\n\" + \"=\"*60)\n",
" print(\"ZERO-SHOT CELL TYPE ANNOTATION RESULTS (Table 1)\")\n",
" print(\"=\"*60)\n",
" print(f\"\\nBaselines:\")\n",
" print(f\" Random: Accuracy = {random_acc:.3f}\")\n",
" print(f\" Majority: Accuracy = {majority_acc:.3f}\")\n",
" print(f\"\\nBioVERSE (matching paradigm):\")\n",
" print(f\" Accuracy: {accuracy:.3f}\")\n",
" print(f\" Macro F1: {macro_f1:.3f}\")\n",
" print(f\"\\nNote: Paper reports LangCell (matching) = 0.865 accuracy\")\n",
" print(f\" BioVERSE (generative) = 0.614 accuracy (harder task)\")\n",
" \n",
" return accuracy, macro_f1\n",
"\n",
"# Evaluate\n",
"acc, f1 = evaluate_cell_annotation(projection, test_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 6. Simulated Generative Output (Figure 3)\n",
"\n",
"Demonstrate how BioVERSE enables generative cell type annotation with reasoning.\n",
"\n",
"In the full system, the LLM would:\n",
"1. Receive projected bio embeddings as soft tokens at [BIO] marker\n",
"2. Generate natural language cell type label\n",
"3. Provide biological reasoning\n",
"\n",
"Here we simulate this output to show the concept."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:08:03.857681Z",
"iopub.status.busy": "2026-01-26T20:08:03.857474Z",
"iopub.status.idle": "2026-01-26T20:08:03.862712Z",
"shell.execute_reply": "2026-01-26T20:08:03.861750Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"============================================================\n",
"SIMULATED GENERATIVE ANNOTATION (Figure 3)\n",
"============================================================\n",
"\n",
"True Label: Dendritic cells\n",
"\n",
"Predicted Label (with reasoning):\n",
"------------------------------------------------------------\n",
"Based on the [BIO] embedding, the most likely cell type\n",
"is Dendritic cells.\n",
"\n",
"The embedding shows characteristic gene expression patterns\n",
"consistent with this cell type, including relevant surface\n",
"markers and functional pathway signatures.\n",
"------------------------------------------------------------\n",
"\n",
"Note: In the full system, this text is generated by the LLM\n",
"conditioned on the projected bio embeddings as soft tokens.\n"
]
}
],
"source": [
"def simulate_generative_annotation(cell_idx=0):\n",
" \"\"\"\n",
" Simulate generative cell type annotation output (Figure 3 from paper).\n",
" \n",
" In the full BioVERSE system, the LLM would generate this text\n",
" conditioned on the aligned bio embeddings.\n",
" \"\"\"\n",
" true_label = CELL_TYPES[test_data['labels'][cell_idx]]\n",
" \n",
" print(\"\\n\" + \"=\"*60)\n",
" print(\"SIMULATED GENERATIVE ANNOTATION (Figure 3)\")\n",
" print(\"=\"*60)\n",
" print(f\"\\nTrue Label: {true_label}\")\n",
" print(f\"\\nPredicted Label (with reasoning):\")\n",
" print(\"-\" * 60)\n",
" \n",
" # Simulate LLM output conditioned on [BIO] token\n",
" if \"Monocytes\" in true_label:\n",
" print(f\"Based on the [BIO] embedding, the most likely immune cell subtype\")\n",
" print(f\"is {true_label}.\")\n",
" print(f\"\")\n",
" print(f\"The bio embedding suggests high expression of monocyte markers\")\n",
" print(f\"such as CD14, FCGR3A, and myeloid differentiation genes. The\")\n",
" print(f\"absence of lymphoid markers (CD3, CD19) and presence of\")\n",
" print(f\"phagocytic pathway genes further supports this classification.\")\n",
" else:\n",
" print(f\"Based on the [BIO] embedding, the most likely cell type\")\n",
" print(f\"is {true_label}.\")\n",
" print(f\"\")\n",
" print(f\"The embedding shows characteristic gene expression patterns\")\n",
" print(f\"consistent with this cell type, including relevant surface\")\n",
" print(f\"markers and functional pathway signatures.\")\n",
" \n",
" print(\"-\" * 60)\n",
" print(\"\\nNote: In the full system, this text is generated by the LLM\")\n",
" print(\"conditioned on the projected bio embeddings as soft tokens.\")\n",
"\n",
"simulate_generative_annotation(cell_idx=0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 7. Autoregressive Alignment (Alternative to Contrastive)\n",
"\n",
"The paper describes two alignment strategies (Section 3.4):\n",
"\n",
"1. **Contrastive (CT)**: What we used above - efficient, bypasses LLM\n",
"2. **Autoregressive (AR)**: Trains through LLM's forward pass\n",
"\n",
"Here we demonstrate the concept of AR alignment:\n",
"\n",
"$$\\mathcal{L}_{AR} = -\\sum_{i=1}^{|t_b|} \\log p_{LLM}(t_i | \\tilde{z}_b, q, t_{<i})$$\n",
"\n",
"**Note**: Full implementation requires an actual LLM, which exceeds our memory constraints. We show the conceptual approach."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:08:03.864610Z",
"iopub.status.busy": "2026-01-26T20:08:03.864422Z",
"iopub.status.idle": "2026-01-26T20:08:03.870380Z",
"shell.execute_reply": "2026-01-26T20:08:03.869495Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"============================================================\n",
"AUTOREGRESSIVE ALIGNMENT (Conceptual Demo)\n",
"============================================================\n",
"\n",
"Autoregressive alignment (AR) trains the projection layer by:\n",
"1. Injecting projected bio embeddings as [BIO] tokens\n",
"2. Running full LLM forward pass\n",
"3. Computing next-token prediction loss\n",
"4. Backpropagating through projection (LLM frozen)\n",
"\n",
"Advantages:\n",
" - Directly optimizes for LLM decodability\n",
" - Naturally handles sequence generation\n",
"\n",
"Disadvantages:\n",
" - Requires LLM forward pass (expensive)\n",
" - Slower than contrastive alignment\n",
"\n",
"Paper results (Table 3):\n",
" - AR 500k iterations: Best performance\n",
" - CT 30k + S2 30k: Comparable, much faster\n",
"\n",
"For this demo, we use CT alignment due to resource constraints.\n"
]
}
],
"source": [
"class SimplifiedLLMDecoder(nn.Module):\n",
" \"\"\"\n",
" Simplified decoder to demonstrate AR alignment concept.\n",
" \n",
" In the full system, this would be a frozen LLM (e.g., Granite-8B)\n",
" that accepts input embeddings via inputs_embeds interface.\n",
" \"\"\"\n",
" def __init__(self, d_text, vocab_size=1000, hidden_dim=512):\n",
" super().__init__()\n",
" self.embedding = nn.Embedding(vocab_size, d_text)\n",
" self.decoder = nn.Sequential(\n",
" nn.Linear(d_text, hidden_dim),\n",
" nn.ReLU(),\n",
" nn.Linear(hidden_dim, vocab_size)\n",
" )\n",
" \n",
" def forward(self, input_embeds):\n",
" \"\"\"\n",
" Args:\n",
" input_embeds: (batch_size, seq_len, d_text)\n",
" Concatenation of [projected_bio_tokens, text_tokens]\n",
" Returns:\n",
" logits: (batch_size, seq_len, vocab_size)\n",
" \"\"\"\n",
" return self.decoder(input_embeds)\n",
"\n",
"def autoregressive_alignment_concept():\n",
" \"\"\"\n",
" Demonstrate the concept of autoregressive alignment.\n",
" \n",
" Full implementation would:\n",
" 1. Inject projected bio embeddings at [BIO] marker positions\n",
" 2. Concatenate with tokenized text\n",
" 3. Run through frozen LLM decoder\n",
" 4. Compute cross-entropy loss on text generation\n",
" 5. Backpropagate only through projection layer\n",
" \"\"\"\n",
" print(\"\\n\" + \"=\"*60)\n",
" print(\"AUTOREGRESSIVE ALIGNMENT (Conceptual Demo)\")\n",
" print(\"=\"*60)\n",
" print(\"\\nAutoregressive alignment (AR) trains the projection layer by:\")\n",
" print(\"1. Injecting projected bio embeddings as [BIO] tokens\")\n",
" print(\"2. Running full LLM forward pass\")\n",
" print(\"3. Computing next-token prediction loss\")\n",
" print(\"4. Backpropagating through projection (LLM frozen)\")\n",
" print(\"\")\n",
" print(\"Advantages:\")\n",
" print(\" - Directly optimizes for LLM decodability\")\n",
" print(\" - Naturally handles sequence generation\")\n",
" print(\"\")\n",
" print(\"Disadvantages:\")\n",
" print(\" - Requires LLM forward pass (expensive)\")\n",
" print(\" - Slower than contrastive alignment\")\n",
" print(\"\")\n",
" print(\"Paper results (Table 3):\")\n",
" print(\" - AR 500k iterations: Best performance\")\n",
" print(\" - CT 30k + S2 30k: Comparable, much faster\")\n",
" print(\"\")\n",
" print(\"For this demo, we use CT alignment due to resource constraints.\")\n",
"\n",
"autoregressive_alignment_concept()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 8. Stage 2: Instruction Tuning (Conceptual)\n",
"\n",
"After Stage 1 alignment, the full BioVERSE system performs Stage 2 instruction tuning (Section 3.2):\n",
"\n",
"**Goal**: Teach the LLM to use aligned bio tokens for generation\n",
"\n",
"**Method**:\n",
"- Fine-tune projection layer + LoRA adapters in LLM\n",
"- Use instruction-formatted prompts with bio tokens\n",
"- Example: \"What cell type matches this [BIO] gene-expression profile?\"\n",
"\n",
"**Note**: Full implementation requires an LLM with LoRA, which exceeds our constraints. We describe the concept."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:08:03.872288Z",
"iopub.status.busy": "2026-01-26T20:08:03.872094Z",
"iopub.status.idle": "2026-01-26T20:08:03.876727Z",
"shell.execute_reply": "2026-01-26T20:08:03.875996Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"============================================================\n",
"STAGE 2: INSTRUCTION TUNING (Conceptual)\n",
"============================================================\n",
"\n",
"After Stage 1 alignment, Stage 2 teaches the LLM to use bio tokens:\n",
"\n",
"Training data format:\n",
"------------------------------------------------------------\n",
"Instruction: What cell type matches this [BIO] profile?\n",
"[BIO] ← projected bio embedding injected here\n",
"Response: CD14+ Monocytes. This cell shows high expression...\n",
"------------------------------------------------------------\n",
"\n",
"Trainable components:\n",
" - Projection layer (P_θ): Continue updating\n",
" - LoRA adapters in LLM: Low-rank updates to attention\n",
" - LLM backbone: FROZEN (efficient parameter updates)\n",
"\n",
"Paper datasets for Stage 2:\n",
" - Templated prompts from alignment data\n",
" - TxGemma instruction sets (proteins/molecules)\n",
" - CellWhisperer prompts (scRNA-seq)\n",
"\n",
"Paper results (Tables 2-3):\n",
" - S1 only: Good alignment, poor generation\n",
" - S1 + S2: Best overall performance\n",
" - Stage 2 enables reasoning and explanation\n"
]
}
],
"source": [
"def instruction_tuning_concept():\n",
" \"\"\"\n",
" Describe Stage 2 instruction tuning concept.\n",
" \"\"\"\n",
" print(\"\\n\" + \"=\"*60)\n",
" print(\"STAGE 2: INSTRUCTION TUNING (Conceptual)\")\n",
" print(\"=\"*60)\n",
" print(\"\\nAfter Stage 1 alignment, Stage 2 teaches the LLM to use bio tokens:\")\n",
" print(\"\")\n",
" print(\"Training data format:\")\n",
" print(\"-\" * 60)\n",
" print(\"Instruction: What cell type matches this [BIO] profile?\")\n",
" print(\"[BIO] ← projected bio embedding injected here\")\n",
" print(\"Response: CD14+ Monocytes. This cell shows high expression...\")\n",
" print(\"-\" * 60)\n",
" print(\"\")\n",
" print(\"Trainable components:\")\n",
" print(\" - Projection layer (P_θ): Continue updating\")\n",
" print(\" - LoRA adapters in LLM: Low-rank updates to attention\")\n",
" print(\" - LLM backbone: FROZEN (efficient parameter updates)\")\n",
" print(\"\")\n",
" print(\"Paper datasets for Stage 2:\")\n",
" print(\" - Templated prompts from alignment data\")\n",
" print(\" - TxGemma instruction sets (proteins/molecules)\")\n",
" print(\" - CellWhisperer prompts (scRNA-seq)\")\n",
" print(\"\")\n",
" print(\"Paper results (Tables 2-3):\")\n",
" print(\" - S1 only: Good alignment, poor generation\")\n",
" print(\" - S1 + S2: Best overall performance\")\n",
" print(\" - Stage 2 enables reasoning and explanation\")\n",
"\n",
"instruction_tuning_concept()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 9. Multi-Modality Support\n",
"\n",
"BioVERSE supports multiple biological modalities through modular encoders (Section 1, Figure 1):\n",
"\n",
"1. **scRNA-seq**: scGPT encoder → Projection → LLM\n",
"2. **Proteins**: ESM-2 encoder → Projection → LLM \n",
"3. **Molecules**: ChemBERTa encoder → Projection → LLM\n",
"\n",
"Each modality has its own projection layer, but they all map to the same LLM space.\n",
"\n",
"This enables cross-modal reasoning: \"Does this molecule bind to this protein?\""
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:08:03.879004Z",
"iopub.status.busy": "2026-01-26T20:08:03.878815Z",
"iopub.status.idle": "2026-01-26T20:08:03.883930Z",
"shell.execute_reply": "2026-01-26T20:08:03.882977Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"============================================================\n",
"MULTI-MODALITY SUPPORT\n",
"============================================================\n",
"\n",
"BioVERSE architecture for each modality:\n",
"\n",
"scRNA-seq modality:\n",
" Gene expression → scGPT encoder → Projection_scRNA → [BIO_CELL] → LLM\n",
"\n",
"Protein modality:\n",
" Amino acids → ESM-2 encoder → Projection_protein → [BIO_PROT] → LLM\n",
"\n",
"Molecule modality:\n",
" SMILES string → ChemBERTa encoder → Projection_mol → [BIO_MOL] → LLM\n",
"\n",
"All projections map to the SAME LLM embedding space (d_text = 768)\n",
"\n",
"This enables cross-modal queries:\n",
" - 'Describe this [BIO_MOL] molecule'\n",
" - 'What is the function of [BIO_PROT] protein?'\n",
" - 'Does [BIO_MOL] bind to [BIO_PROT]?'\n",
" - 'How would [BIO_MOL] affect [BIO_CELL] cells?'\n",
"\n",
"Paper evaluation (Tables 2-3):\n",
" - Molecules: BioVERSE (0.17) >> GPT-OSS-120B (0.02)\n",
" - Proteins: BioVERSE (0.33 avg) >> GPT-OSS-120B (0.07 avg)\n",
" - Cells: BioVERSE (0.614 acc) > Granite-8B (0.369 acc)\n"
]
}
],
"source": [
"def demonstrate_multimodal_concept():\n",
" \"\"\"\n",
" Demonstrate how BioVERSE supports multiple modalities.\n",
" \"\"\"\n",
" print(\"\\n\" + \"=\"*60)\n",
" print(\"MULTI-MODALITY SUPPORT\")\n",
" print(\"=\"*60)\n",
" print(\"\\nBioVERSE architecture for each modality:\")\n",
" print(\"\")\n",
" print(\"scRNA-seq modality:\")\n",
" print(\" Gene expression → scGPT encoder → Projection_scRNA → [BIO_CELL] → LLM\")\n",
" print(\"\")\n",
" print(\"Protein modality:\")\n",
" print(\" Amino acids → ESM-2 encoder → Projection_protein → [BIO_PROT] → LLM\")\n",
" print(\"\")\n",
" print(\"Molecule modality:\")\n",
" print(\" SMILES string → ChemBERTa encoder → Projection_mol → [BIO_MOL] → LLM\")\n",
" print(\"\")\n",
" print(\"All projections map to the SAME LLM embedding space (d_text = 768)\")\n",
" print(\"\")\n",
" print(\"This enables cross-modal queries:\")\n",
" print(\" - 'Describe this [BIO_MOL] molecule'\")\n",
" print(\" - 'What is the function of [BIO_PROT] protein?'\")\n",
" print(\" - 'Does [BIO_MOL] bind to [BIO_PROT]?'\")\n",
" print(\" - 'How would [BIO_MOL] affect [BIO_CELL] cells?'\")\n",
" print(\"\")\n",
" print(\"Paper evaluation (Tables 2-3):\")\n",
" print(\" - Molecules: BioVERSE (0.17) >> GPT-OSS-120B (0.02)\")\n",
" print(\" - Proteins: BioVERSE (0.33 avg) >> GPT-OSS-120B (0.07 avg)\")\n",
" print(\" - Cells: BioVERSE (0.614 acc) > Granite-8B (0.369 acc)\")\n",
"\n",
"demonstrate_multimodal_concept()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 10. Comparison with Baselines\n",
"\n",
"The paper compares BioVERSE against several baselines:\n",
"\n",
"1. **Open-domain LLMs** (Section 5.2): Granite-8B, LLaMA-70B, Mixtral-8x7B, GPT-OSS-120B\n",
" - Use raw tokenized sequences (amino acids, SMILES, gene lists)\n",
" - No BioFM alignment\n",
"\n",
"2. **Candidate-matching models**: LangCell, scMMGPT\n",
" - Project to embedding space and find nearest match\n",
" - Cannot generate free-text explanations\n",
"\n",
"**Key finding**: Compact BioVERSE (8B params) outperforms much larger LLMs (120B params) on bio tasks."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:08:03.885762Z",
"iopub.status.busy": "2026-01-26T20:08:03.885567Z",
"iopub.status.idle": "2026-01-26T20:08:03.890914Z",
"shell.execute_reply": "2026-01-26T20:08:03.890067Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"============================================================\n",
"COMPARISON WITH BASELINES\n",
"============================================================\n",
"\n",
"Cell Type Annotation (Table 1):\n",
"------------------------------------------------------------\n",
"Model Paradigm Accuracy Macro F1\n",
"------------------------------------------------------------\n",
"Random baseline matching 0.111 0.086\n",
"Majority baseline matching 0.417 0.065\n",
"LangCell matching 0.865 0.896\n",
"Granite-8B (no BioFM) generative 0.369 0.262\n",
"GPT-OSS-120B (no BioFM) generative 0.779 0.543\n",
"BioVERSE (8B + scGPT) generative 0.614 0.437\n",
"------------------------------------------------------------\n",
"\n",
"Molecule Description (Table 2):\n",
"------------------------------------------------------------\n",
"Model LLM-Judge BERT-S ROUGE-L\n",
"------------------------------------------------------------\n",
"Granite-8B (no BioFM) 0.04 0.91 0.07\n",
"LLaMA-70B (no BioFM) 0.05 0.90 0.06\n",
"Mixtral-8x7B (no BioFM) 0.05 0.91 0.08\n",
"GPT-OSS-120B (no BioFM) 0.02 0.89 0.06\n",
"BioVERSE (MAMMAL S1+S2) 0.17 0.92 0.20\n",
"------------------------------------------------------------\n",
"\n",
"Key insights:\n",
" 1. BioFM alignment >> raw tokenization (even for 120B models)\n",
" 2. Compact BioVERSE (8B) outperforms large LLMs (70B-120B)\n",
" 3. Generative paradigm enables reasoning (vs. matching)\n",
" 4. Two-stage training (S1+S2) crucial for best results\n"
]
}
],
"source": [
"def compare_with_baselines():\n",
" \"\"\"\n",
" Compare BioVERSE with baseline approaches.\n",
" \"\"\"\n",
" print(\"\\n\" + \"=\"*60)\n",
" print(\"COMPARISON WITH BASELINES\")\n",
" print(\"=\"*60)\n",
" print(\"\\nCell Type Annotation (Table 1):\")\n",
" print(\"-\" * 60)\n",
" print(\"Model Paradigm Accuracy Macro F1\")\n",
" print(\"-\" * 60)\n",
" print(\"Random baseline matching 0.111 0.086\")\n",
" print(\"Majority baseline matching 0.417 0.065\")\n",
" print(\"LangCell matching 0.865 0.896\")\n",
" print(\"Granite-8B (no BioFM) generative 0.369 0.262\")\n",
" print(\"GPT-OSS-120B (no BioFM) generative 0.779 0.543\")\n",
" print(\"BioVERSE (8B + scGPT) generative 0.614 0.437\")\n",
" print(\"-\" * 60)\n",
" print(\"\")\n",
" print(\"Molecule Description (Table 2):\")\n",
" print(\"-\" * 60)\n",
" print(\"Model LLM-Judge BERT-S ROUGE-L\")\n",
" print(\"-\" * 60)\n",
" print(\"Granite-8B (no BioFM) 0.04 0.91 0.07\")\n",
" print(\"LLaMA-70B (no BioFM) 0.05 0.90 0.06\")\n",
" print(\"Mixtral-8x7B (no BioFM) 0.05 0.91 0.08\")\n",
" print(\"GPT-OSS-120B (no BioFM) 0.02 0.89 0.06\")\n",
" print(\"BioVERSE (MAMMAL S1+S2) 0.17 0.92 0.20\")\n",
" print(\"-\" * 60)\n",
" print(\"\")\n",
" print(\"Key insights:\")\n",
" print(\" 1. BioFM alignment >> raw tokenization (even for 120B models)\")\n",
" print(\" 2. Compact BioVERSE (8B) outperforms large LLMs (70B-120B)\")\n",
" print(\" 3. Generative paradigm enables reasoning (vs. matching)\")\n",
" print(\" 4. Two-stage training (S1+S2) crucial for best results\")\n",
"\n",
"compare_with_baselines()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 11. Scaling Guidance for Full Experiments\n",
"\n",
"This notebook demonstrates BioVERSE with small-scale synthetic data. To run full experiments as described in the paper, researchers would need:\n",
"\n",
"### Computational Requirements\n",
"\n",
"**Hardware**:\n",
"- GPU: A100 (40-80GB) or equivalent for LLM inference\n",
"- RAM: 64-128GB for large-scale data processing\n",
"- Storage: 100GB+ for datasets\n",
"\n",
"**Runtime estimates**:\n",
"- Stage 1 alignment (500k iterations): ~8-12 hours on A100\n",
"- Stage 2 instruction tuning (100k iterations): ~4-6 hours\n",
"- Evaluation on full test sets: ~2-4 hours\n",
"\n",
"### Real Datasets\n",
"\n",
"**Alignment data** (Section 4.2.1):\n",
"- **Proteins**: UniProtKB with GO annotations (~500k sequences)\n",
"- **Molecules**: LLASmol dataset (~300k SMILES-text pairs)\n",
"- **scRNA-seq**: CellxGene pseudo-bulk samples (~1M cells aggregated)\n",
"\n",
"**Evaluation datasets**:\n",
"- **PBMC10K**: scEval benchmark (10k cells, 9 cell types)\n",
"- **Mol-Instructions**: 5 tasks with ~10k test examples each\n",
"\n",
"### Model Components\n",
"\n",
"**BioFM encoders** (load from HuggingFace):\n",
"```python\n",
"# scRNA-seq\n",
"from transformers import AutoModel\n",
"scgpt = AutoModel.from_pretrained(\"scGPT/scGPT\")\n",
"\n",
"# Proteins \n",
"esm2 = AutoModel.from_pretrained(\"facebook/esm2_t33_650M_UR50D\")\n",
"\n",
"# Molecules\n",
"chemberta = AutoModel.from_pretrained(\"DeepChem/ChemBERTa-77M-MLM\")\n",
"```\n",
"\n",
"**LLM backbone**:\n",
"```python\n",
"from transformers import AutoModelForCausalLM\n",
"llm = AutoModelForCausalLM.from_pretrained(\"ibm-granite/granite-8b-code-instruct\")\n",
"```\n",
"\n",
"### Training Configuration\n",
"\n",
"From Appendix of paper:\n",
"- Learning rate: 1e-4 (projection), 5e-5 (LoRA)\n",
"- Batch size: 128-256 (depending on GPU memory)\n",
"- Optimizer: AdamW with weight decay 0.01\n",
"- LoRA rank: 16, alpha: 32\n",
"- Gradient accumulation: 4-8 steps\n",
"\n",
"### Key Modifications for Full Scale\n",
"\n",
"1. **Load real pretrained encoders** instead of synthetic embeddings\n",
"2. **Use actual LLM** (Granite-8B) instead of simplified decoder\n",
"3. **Implement LoRA adapters** for Stage 2 instruction tuning\n",
"4. **Load real datasets** from CellxGene, UniProt, LLASmol\n",
"5. **Implement proper evaluation** with LLM-as-judge, BERTScore, ROUGE-L\n",
"6. **Scale training iterations** to 100k-500k (vs. 10 epochs here)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 12. Summary and Key Takeaways\n",
"\n",
"### What We Demonstrated\n",
"\n",
"This notebook provided an educational overview of the BioVERSE framework:\n",
"\n",
"✅ **Two-stage training**: Alignment (Stage 1) + Instruction tuning (Stage 2)\n",
"\n",
"✅ **Contrastive alignment**: Bidirectional InfoNCE loss for efficient alignment\n",
"\n",
"✅ **Projection architecture**: Lightweight MLP mapping bio → LLM space\n",
"\n",
"✅ **Visualization**: UMAP showing embedding alignment (Figure 2)\n",
"\n",
"✅ **Zero-shot evaluation**: Cell type annotation task (Table 1)\n",
"\n",
"✅ **Multi-modality concept**: How different bio modalities integrate\n",
"\n",
"### Key Findings from Paper\n",
"\n",
"1. **BioFM alignment >> raw tokenization**: Even small BioVERSE (8B) beats large LLMs (120B)\n",
"\n",
"2. **Two-stage training essential**: Stage 1 aligns, Stage 2 teaches generation\n",
"\n",
"3. **Contrastive alignment efficient**: CT + S2 matches AR performance with 10x less compute\n",
"\n",
"4. **Generative paradigm enables reasoning**: Can explain predictions, not just classify\n",
"\n",
"5. **Modular design**: Plug-and-play encoders for different bio modalities\n",
"\n",
"### Next Steps for Researchers\n",
"\n",
"To adapt this workflow for production:\n",
"\n",
"1. **Set up GPU infrastructure**: A100 or equivalent for LLM operations\n",
"\n",
"2. **Download real datasets**: CellxGene, UniProtKB, LLASmol, Mol-Instructions\n",
"\n",
"3. **Load pretrained models**: scGPT, ESM-2, ChemBERTa, Granite-8B\n",
"\n",
"4. **Implement LoRA**: For efficient Stage 2 fine-tuning\n",
"\n",
"5. **Scale training**: 100k-500k iterations with proper hyperparameters\n",
"\n",
"6. **Comprehensive evaluation**: LLM-judge, BERTScore, ROUGE-L, domain metrics\n",
"\n",
"### Paper Citation\n",
"\n",
"```\n",
"@article{tsou2025bioverse,\n",
" title={BioVERSE: Representation Alignment of Biomedical Modalities to LLMs for Multi-Modal Reasoning},\n",
" author={Tsou, Ching-Huei and Ozery-Flato, Michal and Barkan, Ella and Mahajan, Diwakar and Shapira, Ben},\n",
" journal={arXiv preprint arXiv:2510.01428},\n",
" year={2025}\n",
"}\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-26T20:08:03.892752Z",
"iopub.status.busy": "2026-01-26T20:08:03.892575Z",
"iopub.status.idle": "2026-01-26T20:08:03.897238Z",
"shell.execute_reply": "2026-01-26T20:08:03.896369Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"============================================================\n",
"NOTEBOOK COMPLETE\n",
"============================================================\n",
"\n",
"This notebook demonstrated the BioVERSE framework for aligning\n",
"biomedical foundation models with large language models.\n",
"\n",
"Key accomplishments:\n",
" ✓ Implemented projection layer architecture\n",
" ✓ Trained contrastive alignment (Stage 1)\n",
" ✓ Visualized embedding alignment (Figure 2)\n",
" ✓ Evaluated zero-shot cell type annotation (Table 1)\n",
" ✓ Demonstrated multi-modality concepts\n",
"\n",
"Runtime: ~5-10 minutes (within resource constraints)\n",
"Memory: <4GB RAM (small-scale synthetic data)\n",
"\n",
"For full-scale experiments, see Section 11 scaling guidance.\n",
"============================================================\n"
]
}
],
"source": [
"print(\"\\n\" + \"=\"*60)\n",
"print(\"NOTEBOOK COMPLETE\")\n",
"print(\"=\"*60)\n",
"print(\"\\nThis notebook demonstrated the BioVERSE framework for aligning\")\n",
"print(\"biomedical foundation models with large language models.\")\n",
"print(\"\")\n",
"print(\"Key accomplishments:\")\n",
"print(\" ✓ Implemented projection layer architecture\")\n",
"print(\" ✓ Trained contrastive alignment (Stage 1)\")\n",
"print(\" ✓ Visualized embedding alignment (Figure 2)\")\n",
"print(\" ✓ Evaluated zero-shot cell type annotation (Table 1)\")\n",
"print(\" ✓ Demonstrated multi-modality concepts\")\n",
"print(\"\")\n",
"print(\"Runtime: ~5-10 minutes (within resource constraints)\")\n",
"print(\"Memory: <4GB RAM (small-scale synthetic data)\")\n",
"print(\"\")\n",
"print(\"For full-scale experiments, see Section 11 scaling guidance.\")\n",
"print(\"=\"*60)"
]
}
],
"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.13.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment