{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "GdaFPpZ-ylNM"
   },
   "source": [
    "# **b5 autoencoders, variational autoencoders / gene expression**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### In this homework we are going to do single-cell RNA seq analysis using both an autoencoder (AE) and a variational autoencoder (VAE).\n",
    "\n",
    "#### The data includes cells from several different brain cells, and our goal is to investigate:\n",
    "\n",
    "  *  Do the different brain regions express different cell types?\n",
    "  \n",
    "  * For any two regions for which the previous answer is yes, which genes are resposible for the different cell types?\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# of cells 400\n",
      "# genes per cell 150\n",
      "n_regions 4\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "# Here we download the data\n",
    "# \n",
    "#scRNAseq = np.loadtxt(\"http://rivaslab.org/teaching/MCB128_AIMB/downloads/b5_homework_data_scRNAseq.csv\", delimiter=\",\")\n",
    "scRNAseq = np.loadtxt(\"../web/_site/downloads/b5_homework_data_scRNAseq.csv\", delimiter=\",\")\n",
    "#scRNAseq = np.loadtxt(\"../web/downloads/b5_homework_data_scRNAseq.csv\", delimiter=\",\")\n",
    "\n",
    "# the structure of the data is:\n",
    "#   scRNAseq[N,G+1] # N = number of cells\n",
    "#                   # G = number of genes\n",
    "# \n",
    "# such that \n",
    "#   expression counts for each gene in each cell: scRNAseq(N, G) # all columns except last → shape (N, G)\n",
    "#   cell label as to the region it belongs to:    scRNAseq(N,-1) # last column  shape (N,)\n",
    "#\n",
    "#  \n",
    "#\n",
    "# (1) Inspect the data\n",
    "#\n",
    "#   (1.a) extract counts and labels\n",
    "#   (1.b) calculate N and G\n",
    "#   (1.c) The labels determines the brain region from which the cell comes from. \n",
    "#         Determine n_regions, that is, the number of labels/brain regions for which we got data.\n",
    "#\n",
    "# (1.a)\n",
    "counts = scRNAseq[:, :-1]   # all columns except last → shape (N, G)\n",
    "labels = scRNAseq[:, -1]    # last column             → shape (N,)\n",
    "\n",
    "counts = torch.from_numpy(counts).float() # add this so that the DataLoader works \n",
    "labels = torch.from_numpy(labels).long()  # add this to the DataLoader works \n",
    "\n",
    "# (1.b)\n",
    "N = counts.shape[0]\n",
    "G = counts.shape[1]\n",
    "print(\"# of cells\", N)\n",
    "print(\"# genes per cell\", G)\n",
    "\n",
    "# (1.c)\n",
    "n_regions = (labels.max() + 1).item()\n",
    "print('n_regions', n_regions)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([1, 0, 0, 0, 3, 3, 2, 2, 0, 1, 2, 0, 2, 3, 1, 2, 2, 1, 1, 2, 0, 0, 2, 0,\n",
      "        2, 0, 3, 0, 3, 2, 3, 0, 3, 3, 1, 2, 0, 2, 2, 1, 3, 1, 1, 1, 2, 0, 3, 1,\n",
      "        2, 2, 3, 0, 1, 0, 3, 0, 3, 0, 3, 1, 3, 1, 0, 0, 1, 0, 0, 2, 1, 2, 2, 3,\n",
      "        1, 0, 0, 0, 0, 2, 1, 1, 3, 0, 0, 0, 2, 3, 2, 0, 0, 0, 3, 3, 2, 0, 1, 2,\n",
      "        0, 0, 0, 0, 3, 0, 1, 3, 1, 0, 2, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 2, 1, 1,\n",
      "        3, 3, 0, 1, 0, 2, 2, 1, 2, 3, 1, 3, 2, 3, 1, 1, 0, 3, 3, 3, 3, 1, 1, 3,\n",
      "        1, 0, 2, 3, 1, 3, 1, 3, 3, 0, 0, 1, 0, 2, 1, 0, 1, 1, 0, 3, 2, 2, 2, 3,\n",
      "        2, 0, 1, 1, 3, 3, 0, 1, 3, 0, 1, 0, 0, 2, 2, 3, 3, 2, 3, 1, 2, 1, 3, 2,\n",
      "        3, 0, 1, 1, 3, 3, 1, 1, 1, 1, 3, 1, 2, 1, 3, 3, 0, 2, 0, 2, 0, 3, 1, 3,\n",
      "        3, 1, 3, 2, 1, 0, 0, 0, 0, 2, 1, 2, 0, 0, 2, 1, 0, 0, 1, 1, 0, 2, 2, 0,\n",
      "        2, 3, 3, 1, 1, 1, 0, 2, 2, 0, 3, 3, 3, 0, 1, 2, 2, 1, 2, 2, 1, 2, 0, 2,\n",
      "        2, 3, 1, 0, 2, 3, 1, 3, 0, 2, 1, 0, 1, 2, 1, 2, 3, 3, 2, 0, 2, 1, 2, 3,\n",
      "        3, 3, 0, 1, 2, 1, 3, 2, 1, 2, 3, 2, 3, 1, 0, 2, 0, 0, 0, 2, 0, 3, 2, 1,\n",
      "        3, 3, 2, 1, 3, 3, 0, 0, 3, 3, 3, 1, 3, 3, 0, 1, 0, 2, 0, 0, 0, 1, 3, 3,\n",
      "        1, 1, 0, 3, 3, 1, 2, 0, 2, 2, 3, 2, 2, 2, 2, 1, 0, 2, 2, 0, 3, 1, 1, 0,\n",
      "        3, 0, 1, 2, 0, 3, 3, 3, 1, 2, 1, 0, 2, 2, 2, 3, 2, 1, 3, 2, 0, 1, 0, 2,\n",
      "        1, 3, 3, 2, 3, 1, 3, 1, 0, 1, 3, 3, 1, 3, 1, 2])\n",
      "class 0 tensor(100)\n",
      "class 1 tensor(100)\n",
      "class 2 tensor(100)\n",
      "class 3 tensor(100)\n",
      "class 0 tensor(100) tensor(620.)\n",
      "min max avg tensor(0.) tensor(620.) tensor(55.6617)\n",
      "class 1 tensor(100) tensor(615.)\n",
      "min max avg tensor(0.) tensor(615.) tensor(56.7917)\n",
      "class 2 tensor(100) tensor(1036.)\n",
      "min max avg tensor(0.) tensor(1036.) tensor(264.6494)\n",
      "class 3 tensor(100) tensor(1054.)\n",
      "min max avg tensor(0.) tensor(1054.) tensor(268.5064)\n"
     ]
    }
   ],
   "source": [
    "# (1) Inspect the data further\n",
    "#\n",
    "#   (1.d) How many cells per region?\n",
    "#   (1.e) What is the range of expression values?\n",
    "#         Calculate the min, max, and avg number of counts per region\n",
    "#\n",
    "\n",
    "# (1.d) how many cells per region?\n",
    "\n",
    "# inspect the labels\n",
    "print(labels)\n",
    "\n",
    "for r in range(n_regions):\n",
    "    print(\"class\", r, (labels == r).sum())\n",
    "    \n",
    "# (1.e)\n",
    "for r in range(n_regions):\n",
    "    print(\"class\", r, (labels == r).sum(), counts[(labels==r)].max())\n",
    "    print(\"min max avg\", counts[(labels==r)].min(), counts[(labels==r)].max(), counts[(labels==r)].mean())\n",
    "    \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "id": "Vhuw8TMNzLaF"
   },
   "outputs": [],
   "source": [
    "# (2) Train an AE to explore the information learned by a latent variable z of dimention 2.\n",
    "#\n",
    "# (2.a) Build the AE (you can use the code from the class lecture)\n",
    "#       Hidden dimension can be h1=512, h2=256, latent_dim = 2\n",
    "#\n",
    "# (2.b) Load the data into the DataLoader\n",
    "#\n",
    "# (2.c) Write the training loop, using a MSE loss and Adam optimization. \n",
    "#       Justify metaparameters selection: learing rate, number of epochs, batch_size\n",
    "#\n",
    "# (2.d) plot the latent variable Z[2] and draw conclusions. \n",
    "#       What can you say about the cells in the different brain reagions?\n",
    "#\n",
    "# (2.e) Compare your results for the latent variable z to those obtained by PCA\n",
    "\n",
    "\n",
    "\n",
    "# (2.a) The autoencoder\n",
    "#\n",
    "class GeneExprAE(nn.Module):\n",
    "    def __init__(self, input_dim, h1=512, h2=256, latent_dim=32):\n",
    "        super().__init__()\n",
    "        # ----- Encoder: input -> h1 -> h2 -> latent(z) -----\n",
    "        self.enc_fc1 = nn.Linear(input_dim, h1)\n",
    "        self.enc_fc2 = nn.Linear(h1, h2)\n",
    "        self.enc_latent = nn.Linear(h2, latent_dim) \n",
    "\n",
    "        # ----- Decoder: latent -> h2 -> h1 -> input -----\n",
    "        self.dec_fc1 = nn.Linear(latent_dim, h2)\n",
    "        self.dec_fc2 = nn.Linear(h2, h1)\n",
    "        self.dec_out = nn.Linear(h1, input_dim)\n",
    "\n",
    "    def encode(self, x):\n",
    "        h = F.relu(self.enc_fc1(x))   # 1st hidden\n",
    "        h = F.relu(self.enc_fc2(h))   # 2nd hidden\n",
    "        z = self.enc_latent(h)        # bottleneck\n",
    "        return z\n",
    "\n",
    "    def decode(self, z):\n",
    "        h = F.relu(self.dec_fc1(z))   # 1st decoder hidden\n",
    "        h = F.relu(self.dec_fc2(h))   # 2nd decoder hidden\n",
    "        x_ae = self.dec_out(h)        # linear output for real-valued expression\n",
    "        return x_ae\n",
    "\n",
    "    def forward(self, x):\n",
    "        z = self.encode(x)\n",
    "        x_ae = self.decode(z)\n",
    "        return x_ae, z"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "6I3a3vhehyW_",
    "outputId": "797a726a-a3c1-4dea-a9b9-d59cb04185d8"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 099 | Loss: 24762.123203\n",
      "Epoch 199 | Loss: 23895.655312\n",
      "Epoch 299 | Loss: 23451.857578\n",
      "Epoch 399 | Loss: 22886.897500\n",
      "Epoch 499 | Loss: 22634.848203\n",
      "Epoch 599 | Loss: 22220.868438\n",
      "Epoch 699 | Loss: 21908.590938\n",
      "Epoch 799 | Loss: 21784.314297\n",
      "Epoch 899 | Loss: 21530.921875\n",
      "Epoch 999 | Loss: 21184.456641\n"
     ]
    }
   ],
   "source": [
    "from torch.utils.data import DataLoader, TensorDataset\n",
    "\n",
    "# (2.b) Loading of the data into a DatLoader\n",
    "dataset = TensorDataset(counts)\n",
    "loader = DataLoader(dataset, batch_size=128, shuffle=True)\n",
    "\n",
    "input_dim = counts.shape[1]\n",
    "model_ae = GeneExprAE(input_dim=input_dim, h1=512, h2=256, latent_dim=2)\n",
    "\n",
    "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "model_ae.to(device)\n",
    "\n",
    "# (2.c) The training loop\n",
    "# MSELoss = Mean square error = squared L2 norm\n",
    "#\n",
    "#  loss(n) = 1/G \\sum_g ( x[n,g] - x_out[n,g] )^2\n",
    "#\n",
    "#  default: reduction = mean -> Loss = 1/N \\sum_n loss(n)\n",
    "#           reduction = sum  -> Loss =      \\sum_n loss(n)\n",
    "#\n",
    "optimizer = torch.optim.Adam(model_ae.parameters(), lr=1e-3)\n",
    "criterion = nn.MSELoss()\n",
    "\n",
    "n_epochs = 1000\n",
    "for epoch in range(1, n_epochs + 1):\n",
    "    model_ae.train()\n",
    "    total_loss = 0.0\n",
    "\n",
    "    for (batch,) in loader:\n",
    "        x_in = batch.to(device)\n",
    "\n",
    "        optimizer.zero_grad()\n",
    "        x_ae, z = model_ae(x_in)\n",
    "        loss = criterion(x_ae, x_in)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "\n",
    "        total_loss += loss.item() * batch.size(0)\n",
    "\n",
    "    if (epoch + 1) % 100 == 0:\n",
    "      print(f\"Epoch {epoch:03d} | Loss: {total_loss / len(dataset):.6f}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "R2WHmrhDi1sC",
    "outputId": "c679cfe6-58e1-435e-8eba-5e4ae15c27c2",
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Latent representation shape: torch.Size([400, 2])\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# (2.c) Get the latent variable for all samples\n",
    "model_ae.eval()\n",
    "with torch.inference_mode():\n",
    "    counts_dev = counts.to(device)\n",
    "    _, z = model_ae(counts_dev)   # z shape: [N, latent_dim]\n",
    "    z = z.cpu()\n",
    "    print(\"Latent representation shape:\", z.shape)\n",
    "    \n",
    "# You can use this ploting function (or a different of your liking)\n",
    "def plot_z(z, labels):\n",
    "    plt.figure(figsize=(6, 5))\n",
    "    \n",
    "    n_regions = labels.max() + 1\n",
    "    for k in range(n_regions):\n",
    "        mask = (labels.detach().cpu().numpy() == k)\n",
    "        plt.scatter(z[mask, 0], z[mask, 1], label=f\"class {k}\", alpha=0.7, s=20)\n",
    "\n",
    "        \n",
    "# Plot the latent variable z[N,2]\n",
    "plot_z(z, labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 525
    },
    "id": "iF-CQC1ulN87",
    "outputId": "f30692b1-d3b6-475f-f319-afe954ad234f",
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "N D classes 400 150 4\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# (2.d)\n",
    "def PCA(X,y):\n",
    "    torch.manual_seed(0)\n",
    "\n",
    "    N, D = X.shape\n",
    "    num_classes = int(y.max().item()) + 1\n",
    "    print(\"N D classes\", N, G, num_classes)\n",
    "\n",
    "    # 1. Center the data\n",
    "    X_mean = X.mean(dim=0, keepdim=True)\n",
    "    X_centered = X - X_mean\n",
    "\n",
    "    # 2. Compute covariance matrix (D x D)\n",
    "    cov = X_centered.t().mm(X_centered) / (N - 1)\n",
    "\n",
    "    # 3. Eigen-decomposition\n",
    "    eigenvalues, eigenvectors = torch.linalg.eigh(cov)   # eigh since cov is symmetric\n",
    "\n",
    "    # 4. Take top 2 principal components (largest eigenvalues)\n",
    "    # eigenvalues are in ascending order -> take last 2 columns\n",
    "    pc_vectors = eigenvectors[:, -2:]    # shape [D, 2]\n",
    "\n",
    "    # 5. Project data onto PCs -> X_pca [N, 2]\n",
    "    X_pca = X_centered.mm(pc_vectors)\n",
    "\n",
    "    # 6. Plot with colors for classes\n",
    "    X_pca = X_pca.detach().cpu().numpy()\n",
    "    y_np = y.detach().cpu().numpy()\n",
    "\n",
    "    plt.figure(figsize=(6, 5))\n",
    "    for k in range(num_classes):\n",
    "        mask = (y_np == k)\n",
    "        plt.scatter(X_pca[mask, 0], X_pca[mask, 1], label=f\"class {k}\", alpha=0.7, s=20)\n",
    "\n",
    "    plt.xlabel(\"PC1\")\n",
    "    plt.ylabel(\"PC2\")\n",
    "    plt.legend()\n",
    "    plt.title(\"PCA (2D) of X, colored by class\")\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "# (2.d) Compare the results of your AE to PCA. Discuss\n",
    "PCA(counts,labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "id": "Y2h2wzVn2dqO"
   },
   "outputs": [],
   "source": [
    "# (3) Analysis of the same expression data using a VAE.\n",
    "#     While both AE and VAE can do classification by analyzing the latent variable, \n",
    "#     one thing that the VAE allows us to do is to test differential gene expression.\n",
    "#\n",
    "#     If we find, two types of cells that appear to be differentially expressed, \n",
    "#     which actual genes are resposible ofr that difference? \n",
    "#     We are exploring that aspect in this section\n",
    "# \n",
    "#      (3.a) Build the forward loop.\n",
    "#            you can use the code from b5_lecture_code_scVI.ipynb, \n",
    "#            but to make it similar to the AE above, please add one more layer to the decoder, \n",
    "#            and set the encoder/decoder parameters similar to those of the AE. \n",
    "#            In particular, the latent variable z with dimension 2.\n",
    "#\n",
    "#       (3.b) Build the training loop and train.\n",
    "#             Caution: you may need to add a BachNorm layer  to the encoder, as\n",
    "#                    nn.BatchNorm1d(n_hidden1),\n",
    "#             Justify if you do.\n",
    "#\n",
    "#       (3.c) Inspect the result for the latent variable and compare to those of the AE.\n",
    "#\n",
    "#       (3.d) Use the PCA code to compare the output of the decoder to the inputs.\n",
    "#\n",
    "#       (3.e) Differential gene expression. Select two of the region that are classified as differnt,\n",
    "#             and estimate the genes responsible for that overall cell type difference.\n",
    "#    \n",
    "    \n",
    "# (3.a) The VAE model\n",
    "#\n",
    "def log_nb_positive(x, mu, theta, eps=1e-8):\n",
    "    \"\"\"\n",
    "    Negative binomial log‑likelihood (per entry).\n",
    "\n",
    "    x    : observed counts\n",
    "    mu   : mean\n",
    "    theta: inverse dispersion (>0), broadcastable to x\n",
    "    \"\"\"\n",
    "    if torch.any(theta <= 0):\n",
    "        raise ValueError(\"theta must be > 0\")\n",
    "\n",
    "    log_theta_mu = torch.log(theta + mu + eps)\n",
    "    res = (\n",
    "        theta * (torch.log(theta + eps) - log_theta_mu)\n",
    "        + x * (torch.log(mu + eps) - log_theta_mu)\n",
    "        + torch.lgamma(x + theta)\n",
    "        - torch.lgamma(theta)\n",
    "        - torch.lgamma(x + 1)\n",
    "    )\n",
    "    return res\n",
    "\n",
    "\n",
    "class SimpleScVIVAE(nn.Module):\n",
    "    def __init__(\n",
    "        self,\n",
    "        n_genes,\n",
    "        n_hidden1=512,\n",
    "        n_hidden2=128,\n",
    "        n_latent=32,\n",
    "    ):\n",
    "        super().__init__()\n",
    "        self.n_genes  = n_genes\n",
    "        self.n_latent = n_latent\n",
    "\n",
    "        # ----- Encoder q(z | x) -----\n",
    "        self.encoder = nn.Sequential(\n",
    "            nn.Linear(n_genes, n_hidden1),\n",
    "            nn.BatchNorm1d(n_hidden1),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(n_hidden1, n_hidden2),\n",
    "            nn.ReLU(),\n",
    "        )\n",
    "        self.z_mu     = nn.Linear(n_hidden2, n_latent)\n",
    "        self.z_logvar = nn.Linear(n_hidden2, n_latent)\n",
    "\n",
    "        # ----- Decoder p(x | z, l) -----\n",
    "        # First map z to hidden\n",
    "        self.decoder = nn.Sequential(\n",
    "            nn.Linear(n_latent, n_hidden2),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(n_hidden2, n_hidden1),\n",
    "            nn.ReLU(),\n",
    "        )\n",
    "        # Gene‑specific mean (log scale) before adding library size\n",
    "        self.px_scale = nn.Linear(n_hidden1, n_genes)\n",
    "        # Gene‑specific dispersion (log‑theta, one per gene, not a function of z)\n",
    "        self.px_r = nn.Parameter(torch.randn(n_genes))\n",
    "\n",
    "    def encode(self, x):\n",
    "        h = self.encoder(x)\n",
    "        mu = self.z_mu(h)\n",
    "        logvar = self.z_logvar(h)\n",
    "        return mu, logvar\n",
    "\n",
    "    def reparameterize(self, mu, logvar):\n",
    "        std = torch.exp(0.5 * logvar)\n",
    "        eps = torch.randn_like(std)\n",
    "        return mu + eps * std\n",
    "\n",
    "    def decode(self, z, library):\n",
    "        \"\"\"\n",
    "        z       : [batch, n_latent]\n",
    "        library : [batch, 1] log‑library size (log total counts)\n",
    "        \"\"\"\n",
    "        h = self.decoder(z)\n",
    "        # log mean proportion per gene\n",
    "        px_scale_logit = self.px_scale(h)  # [batch, n_genes]\n",
    "        # softmax to get proportions that sum to 1\n",
    "        px_scale = F.softmax(px_scale_logit, dim=-1)\n",
    "\n",
    "        # mean = library_size * proportion\n",
    "        # library is log(total counts), so use exp\n",
    "        library_exp = torch.exp(library)  # [batch, 1]\n",
    "        mu = library_exp * px_scale  # [batch, n_genes]\n",
    " \n",
    "        # inverse dispersion (theta) per gene\n",
    "        theta = torch.exp(self.px_r)  # [n_genes]\n",
    "        return mu, theta\n",
    "\n",
    "    def forward(self, x, library):\n",
    "        \"\"\"\n",
    "        x       : counts           [batch, n_genes]\n",
    "        library : log library size [batch, 1]\n",
    "        \"\"\"\n",
    "        # Encoder\n",
    "        mu_z, logvar_z = self.encode(x)\n",
    "        z = self.reparameterize(mu_z, logvar_z)\n",
    "\n",
    "        # Decoder\n",
    "        mu_x, theta = self.decode(z, library)\n",
    "\n",
    "        return mu_x, theta, mu_z, logvar_z, z"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "## LOSS = ELBO = reconstruction + KL)\n",
    "#\n",
    "def scvi_loss(x, mu_x, theta, mu_z, logvar_z):\n",
    " \n",
    "    # Reconstruction term (sum over genes, then mean over cells)\n",
    "    recon = log_nb_positive(x, mu_x, theta).sum(dim=1)  # [batch]\n",
    "    recon_loss = -recon.mean()\n",
    "\n",
    "    # KL(q(z|x) || N(0, I)) per cell\n",
    "    kl_div = -0.5 * torch.sum(1 + logvar_z - mu_z.pow(2) - logvar_z.exp(), dim=1)\n",
    "    kl_loss = kl_div.mean()\n",
    "    \n",
    "    loss = recon_loss + kl_loss\n",
    "    return loss, recon_loss, kl_loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "n_genes 150\n",
      "Epoch 299 | Loss: 6.269\n",
      "Epoch 599 | Loss: 5.891\n",
      "Epoch 899 | Loss: 5.582\n"
     ]
    }
   ],
   "source": [
    "# (3.b) Training loop\n",
    "from torch.utils.data import DataLoader, TensorDataset\n",
    "\n",
    "# X: counts [N, G], torch.float32 (or float32‑cast of ints)\n",
    "# libsize: log library size [N, 1]\n",
    "X = counts\n",
    "libsize = torch.log(X.sum(dim=1, keepdim=True) + 1e-8)\n",
    "\n",
    "dataset = TensorDataset(X, libsize)\n",
    "loader = DataLoader(dataset, batch_size=128, shuffle=True)\n",
    "\n",
    "n_genes = X.shape[1]\n",
    "print(\"n_genes\", n_genes)\n",
    "model = SimpleScVIVAE(n_genes=n_genes, n_hidden1=512, n_hidden2=256, n_latent=2)\n",
    "\n",
    "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "model.to(device)\n",
    "\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)\n",
    "\n",
    "n_epochs = 1000\n",
    "for epoch in range(n_epochs):\n",
    "    model.train()\n",
    "    total_loss = 0.0\n",
    "    for batch_x, batch_lib in loader:\n",
    "        batch_x = batch_x.to(device)\n",
    "        batch_lib = batch_lib.to(device)\n",
    "        \n",
    "        optimizer.zero_grad()\n",
    "        mu_x, theta, mu_z, logvar_z, z = model(batch_x, batch_lib)\n",
    "        loss, recon_loss, kl_loss = scvi_loss(batch_x, mu_x, theta, mu_z, logvar_z)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "\n",
    "        total_loss += loss.item()\n",
    "        \n",
    "    if (epoch + 1) % 300 == 0:\n",
    "        print(f\"Epoch {epoch:03d} | Loss: {total_loss / len(dataset):.3f}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "z torch.Size([400, 2])\n",
      "mu_z torch.Size([400, 2])\n",
      "mu_x torch.Size([400, 150])\n",
      "counts torch.Size([400, 150])\n",
      "labels torch.Size([400])\n",
      "N D classes 400 150 4\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "N D classes 400 150 4\n"
     ]
    },
    {
     "data": {
      "image/png": "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lixZwuGHH87s2bM5+OCDWbZs2Tb72rBhA42NjRx11FGICGeffTa//e1vd/ocbJi5MSNUtqmJmjtuR6Ix/LIigrY2am6/ncQPfoBfWjrc4Zk8z62o5bZnlhIEiucJV83flyP2qNzh/S1ZsoSbbrqJf/zjH4wfP566urou65x++umce+65AHzta1/jvvvu46KLLuKGG25gwYIFTJkyhfr6egC+//3vc8kll3DWWWeRSqXIZrPb7GvdunVUVVVt/VxVVcW6det2OP4cq0EZMwJlm5poe+UVNJXGKyoCwCsqQrNZsrW1wxydydeYTHPbM0uJ+x4VxTHivsetC5buVE1q4cKFnHHGGYwfPx6AioqKLuu89tprHHPMMRx00EE89NBDLFmyBICjjz6az372s/zwhz/cmoiOOuoo/vu//5tbbrmFNWvWUBT+TuV01980EKMYLUEZM8LkmvXeuf0O2letIrVpEwBBWxvi+/iVO/6XuRl4tc0pgkApivkAFMV8soFS25za4X2qap8J4rOf/Sx33XUXr776Ktddd93W+5O+//3v81//9V+sXbuW2bNnU1tby6c+9Skef/xxioqKmD9/PgsXLtxmX1VVVVRXV2/9XF1dzeTJk3c4/hxLUMaMIPnNetHx44lOm0b67bfJbN6MplNMuOwyWuOwpnENTSkbNFEIKktieJ7QlnK1lbZUFt8TKktiO7zPefPm8fDDD1Mb1pa7a+Jrampi0qRJpNNpHnrooa3lK1as4IgjjuCGG25g/PjxrF27lpUrV7LHHntw8cUXc8opp/DKK69ss69JkyZRWlrKc889h6ry4IMPcuqpp+5w/DnWB2XMCJKtrUWzAX6Za4KJ7bYboIz91CcpPuoonsss464Fn8cTj6gf5ZJDL2HO7nOGN+hRriwR5ar5+3LrgqW0trjkdNX8fSlL9G++uu4ceOCBXHvttRx33HH4vs+hhx7KAw88sM06N954I0cccQTTp0/noIMOoikc5XnllVeybNkyVJV58+ZxyCGHcPPNN/PTn/6UaDTK7rvvzte//vUux/ze977HZz/7Wdra2jjppJM46aSTdjj+HBmIseq7ojlz5qg9sNCMNNmmJtZ+4QtINIZXVERq0ybSb79NfOZMmrSN2w5bz7LpMXzPZ0rJFOKROHfPu5vSWClNqSbqknVUJCoojdkgip3xxhtvsP/+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\n",
      "text/plain": [
       "<Figure size 432x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# (3.c) Latent variables\n",
    "model.eval()\n",
    "with torch.inference_mode():\n",
    "    X_dev = counts.to(device)\n",
    "    lib_dev = libsize.to(device)\n",
    "    mu_x, theta, mu_z, logvar_z, z = model(X_dev, lib_dev)\n",
    "    \n",
    "# Ploting both z and mu_z\n",
    "# We don't observe much difference between the two\n",
    "#\n",
    "print(\"z\", z.shape)\n",
    "print(\"mu_z\", mu_z.shape)\n",
    "print(\"mu_x\", mu_x.shape)\n",
    "print(\"counts\", counts.shape)\n",
    "print(\"labels\", labels.shape)\n",
    "plot_z(mu_z, labels)\n",
    "plot_z(z,    labels)\n",
    "\n",
    "# (3.d) Use PCA to compare the actual counts to the mu_x values. Plot the results, and discuss\n",
    "\n",
    "# This comparison shows that the means mu_x closely reproduce the input data, \n",
    "# as was the training directive.\n",
    "PCA(counts, labels)\n",
    "PCA(mu_x, labels)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mu_x_0 torch.Size([100, 150])\n",
      "mu_x_1 torch.Size([100, 150])\n",
      "mu_x_2 torch.Size([100, 150])\n",
      "mu_x_3 torch.Size([100, 150])\n",
      "87 genes different expression for 0-1\n",
      "tensor([  1,   4,   5,   7,   8,   9,  10,  13,  14,  16,  17,  19,  21,  22,\n",
      "         25,  26,  27,  30,  31,  32,  36,  37,  39,  40,  42,  43,  45,  46,\n",
      "         47,  50,  51,  52,  53,  57,  58,  59,  65,  66,  69,  70,  71,  73,\n",
      "         75,  77,  78,  79,  80,  82,  83,  84,  86,  88,  91,  93,  96,  98,\n",
      "         99, 101, 103, 108, 109, 110, 111, 112, 114, 115, 116, 120, 121, 122,\n",
      "        124, 125, 126, 127, 128, 131, 132, 135, 136, 137, 138, 139, 141, 142,\n",
      "        143, 146, 148])\n",
      "98 genes different expression for 0-2\n",
      "tensor([  0,   1,   3,   6,   7,   8,   9,  11,  12,  15,  16,  17,  19,  20,\n",
      "         23,  24,  25,  27,  28,  29,  30,  33,  34,  36,  37,  38,  39,  40,\n",
      "         41,  43,  47,  49,  53,  54,  55,  56,  58,  60,  61,  62,  63,  64,\n",
      "         65,  66,  67,  68,  70,  72,  73,  74,  76,  77,  78,  82,  83,  84,\n",
      "         87,  88,  90,  92,  93,  94,  95,  97, 100, 101, 102, 104, 105, 106,\n",
      "        107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 119, 123, 124, 127,\n",
      "        128, 129, 130, 131, 132, 133, 135, 136, 140, 142, 143, 144, 147, 149])\n",
      "98 genes different expression for 0-3\n",
      "tensor([  0,   1,   3,   6,   7,   8,   9,  11,  12,  15,  16,  17,  19,  20,\n",
      "         23,  24,  25,  27,  28,  29,  30,  33,  34,  36,  37,  38,  39,  40,\n",
      "         41,  43,  47,  49,  53,  54,  55,  56,  58,  60,  61,  62,  63,  64,\n",
      "         65,  66,  67,  68,  70,  72,  73,  74,  76,  77,  78,  82,  83,  84,\n",
      "         87,  88,  90,  92,  93,  94,  95,  97, 100, 101, 102, 104, 105, 106,\n",
      "        107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 119, 123, 124, 127,\n",
      "        128, 129, 130, 131, 132, 133, 135, 136, 140, 142, 143, 144, 147, 149])\n",
      "125 genes different expression for 1-2\n",
      "tensor([  0,   1,   3,   4,   6,   7,   8,   9,  10,  11,  12,  14,  15,  16,\n",
      "         17,  19,  20,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  33,\n",
      "         34,  36,  37,  38,  39,  40,  41,  42,  43,  45,  46,  47,  49,  50,\n",
      "         51,  52,  53,  54,  55,  56,  58,  59,  60,  61,  62,  63,  64,  65,\n",
      "         66,  67,  68,  70,  72,  73,  74,  75,  76,  77,  78,  80,  82,  83,\n",
      "         84,  86,  87,  88,  90,  91,  92,  93,  94,  95,  96,  97,  98, 100,\n",
      "        101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115,\n",
      "        116, 117, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131,\n",
      "        132, 133, 135, 136, 137, 140, 141, 142, 143, 144, 147, 148, 149])\n",
      "125 genes different expression for 1-3\n",
      "tensor([  0,   1,   3,   4,   6,   7,   8,   9,  10,  11,  12,  14,  15,  16,\n",
      "         17,  19,  20,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  33,\n",
      "         34,  36,  37,  38,  39,  40,  41,  42,  43,  45,  46,  47,  49,  50,\n",
      "         51,  52,  53,  54,  55,  56,  58,  59,  60,  61,  62,  63,  64,  65,\n",
      "         66,  67,  68,  70,  72,  73,  74,  75,  76,  77,  78,  80,  82,  83,\n",
      "         84,  86,  87,  88,  90,  91,  92,  93,  94,  95,  96,  97,  98, 100,\n",
      "        101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115,\n",
      "        116, 117, 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131,\n",
      "        132, 133, 135, 136, 137, 140, 141, 142, 143, 144, 147, 148, 149])\n",
      "0 genes different expression for 2-3\n",
      "tensor([], dtype=torch.int64)\n"
     ]
    }
   ],
   "source": [
    "# (3,d) In this section you could follow the paper and assess differential gene expression by \n",
    "# using the zinb with parameters mu_x and theta to generate a lot samples for a given gene in both cell types.\n",
    "#\n",
    "# More simply, you can use the mu_x[n,g] which are the expression mean values.\n",
    "#\n",
    "# Let's assume you select cell_type a and cell type b\n",
    "#\n",
    "# For each gene, we are going to consider two different hypotheses:\n",
    "# \n",
    "#  H1: g is differentially expressed in type_a and type_b\n",
    "#  H0: there in no different in the expression of g between type_a and type_b\n",
    "#\n",
    "#\n",
    "#  We quantify H1 such that for any two cells of type_a and type_b, \n",
    "#\n",
    "#        h1 = # of cases such that |mu_x(a) - mu_x(b)| > score_thresh\n",
    "#\n",
    "#  We quantify H0 such that for any two cells of type_a and type_b, \n",
    "#\n",
    "#        h2 = # of cases such that |mu_x(a) - mu_x(b)| <= score_thresh\n",
    "#        \n",
    "#\n",
    "# then we select as differentially expressed genes such that h1/h0 > alpha\n",
    "#\n",
    "# (3.e) How would you select reasonable values of score_thresh and alpha?\n",
    "#\n",
    "#\n",
    "mask0 = (labels == 0)\n",
    "mask1 = (labels == 1)\n",
    "mask2 = (labels == 2)\n",
    "mask3 = (labels == 3)\n",
    "\n",
    "mu_x_0 = mu_x[mask0]  # cells with label 0, shape: (N1, 150)\n",
    "mu_x_1 = mu_x[mask1]  # cells with label 1, shape: (N2, 150)\n",
    "mu_x_2 = mu_x[mask2]  # cells with label 2, shape: (N3, 150)\n",
    "mu_x_3 = mu_x[mask3]  # cells with label 3, shape: (N4, 150)\n",
    "print(\"mu_x_0\", mu_x_0.shape)\n",
    "print(\"mu_x_1\", mu_x_1.shape)\n",
    "print(\"mu_x_2\", mu_x_2.shape)\n",
    "print(\"mu_x_3\", mu_x_3.shape)\n",
    "\n",
    "# this function determines the genes between cells of type_a and cells of type_b\n",
    "# for a given score threshold to assess \"differentially expressed\"\n",
    "# and report genes for wich H1 is alpha times more likely than H0\n",
    "#\n",
    "def differential(mu_x_a, mu_x_b, alpha, score_thresh, label):\n",
    "    Na = mu_x_a.shape[0]\n",
    "    Nb = mu_x_b.shape[0]\n",
    "    G = mu_x_a.shape[1]\n",
    "    if (mu_x_b.shape[1] != G):\n",
    "        raise ValueError(\"G must be\", G, \"but I found\", mu_x_b.shape[1])\n",
    "\n",
    "    pH1 = torch.full((G,), 0.0)\n",
    "    \n",
    "    for g in range(G):\n",
    "        mu_x_a_g = mu_x_a[:,g] #[N1]\n",
    "        mu_x_b_g = mu_x_b[:,g] #[N2]\n",
    "        \n",
    "        h1 = 0\n",
    "        h0 = 0\n",
    "        for na in range(Na):\n",
    "            for nb in range(Nb):\n",
    "                h0 += abs(mu_x_a_g[na] - mu_x_b_g[nb]) <= score_thresh\n",
    "                h1 += abs(mu_x_a_g[na] - mu_x_b_g[nb]) >  score_thresh\n",
    "            \n",
    "        pH1[g] = h1/h0\n",
    "    \n",
    "    mask_diff  = pH1 > alpha\n",
    "  \n",
    "    \n",
    "    count_diff = mask_diff.sum().item()     # number of genes where H1 > H0\n",
    "    idx_diff   = torch.nonzero(mask_diff, as_tuple=True)[0]  # tensor of indices\n",
    "    print(count_diff, \"genes different expression for\", label)\n",
    "    print(idx_diff)\n",
    "\n",
    "    \n",
    "# Use the function differential() for different values of the two variables:\n",
    "# \"diff_thresh\" and\n",
    "# \"alpha\"\n",
    "# and describe which genes are differentially expressed in some meaningful comparisons of cell types\n",
    "\n",
    "\n",
    "alpha = 30\n",
    "diff_threshold = 5\n",
    "differential(mu_x_0, mu_x_1, alpha, diff_threshold, \"0-1\")\n",
    "differential(mu_x_0, mu_x_2, alpha, diff_threshold, \"0-2\")\n",
    "differential(mu_x_0, mu_x_3, alpha, diff_threshold, \"0-3\")\n",
    "differential(mu_x_1, mu_x_2, alpha, diff_threshold, \"1-2\")\n",
    "differential(mu_x_1, mu_x_3, alpha, diff_threshold, \"1-3\")\n",
    "differential(mu_x_2, mu_x_3, alpha, diff_threshold, \"2-3\")\n",
    "\n",
    "# extra credit, how would you select meaningfull values for those two parameters?\n",
    "#\n",
    "# because two types of cells seem to be identical, I will use those two as my null model.\n",
    "# I will select diff_threshold and alpha such that there are not significanlty expressed genes\n",
    "# when I compare the expression of all genes between those to types.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "provenance": []
  },
  "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.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
