Nonlinear Gene Programmes
=========================


.. raw:: html

     <p style="margin:0.8em 0 1em; padding: 0.8em 1.2em; background: linear-gradient(135deg, rgba(139, 0, 0, 0.08) 0%, rgba(139, 0, 0, 0.03) 100%); border-left: 4px solid #8B0000; border-radius: 4px;">
       <strong>💡 Tip:</strong> Click the&nbsp;
       <span style="color:#8B0000;font-weight:bold;font-size:1.1em;">+</span>
       in the <em>first column</em> to expand detailed method descriptions.
     </p>

   <style>
   td.details-control { 
     width:20px; 
     text-align:center; 
     cursor:pointer;
     color: #8B0000;
     font-weight: bold;
     font-size: 1.2em;
   }
   td.details-control::before { content:'+'; }
   tr.shown td.details-control::before { content:'-'; }
   td.published { text-align:center; font-weight:bold; }
   .table-container { width:100%; overflow-x:auto; }
   a.github-link {
     display:inline-block; font-size:1.2em; vertical-align:middle; color:inherit;
   }
   a.github-link:hover { color:#8B0000; }
   
   /* Task and Model badges */
   .badge {
     display: inline-block;
     padding: 0.25em 0.6em;
     margin: 0.15em;
     font-size: 0.85em;
     font-weight: 500;
     line-height: 1;
     border-radius: 12px;
     white-space: nowrap;
   }
   
   .task-badge {
     background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
     color: white;
     border: 1px solid rgba(102, 126, 234, 0.3);
   }
   
   .model-badge {
     background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
     color: white;
     border: 1px solid rgba(245, 87, 108, 0.3);
   }
   
   html[data-theme="light"] .task-badge {
     background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
     box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);
   }
   
   html[data-theme="light"] .model-badge {
     background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
     box-shadow: 0 2px 4px rgba(245, 87, 108, 0.2);
   }
   
   /* Method name styling */
   td a[href*="doi.org"],
   td a[href*="nature.com"],
   td a[href*="biorxiv.org"],
   td a[href*="cell.com"] {
     font-weight: 600;
     color: #8B0000;
     text-decoration: none;
     transition: all 0.2s ease;
   }
   
   td a[href*="doi.org"]:hover,
   td a[href*="nature.com"]:hover,
   td a[href*="biorxiv.org"]:hover,
   td a[href*="cell.com"]:hover {
     color: #b30000;
     text-decoration: underline;
   }
   
   /* Published status icons */
   td.published {
     font-size: 1.2em;
   }
   
   /* Expandable description styling */
   .expanded-description {
     padding: 1em;
     background: rgba(139, 0, 0, 0.05);
     border-left: 3px solid #8B0000;
     line-height: 1.6;
     font-size: 0.95em;
   }
   
   html[data-theme="light"] .expanded-description {
     background: rgba(139, 0, 0, 0.03);
   }
   </style>

   <div class="table-container">
     <table id="methods-table" class="display" style="width:100%">
       <thead>
         <tr>
           <th></th><th>Method</th><th>Year</th><th>Task</th>
           <th>Model</th><th>Published</th><th>Code</th>
         </tr>
       </thead>
       <tbody>
         <tr data-description="CellDISECT integrates disentangled representations and causal inference. It uses a mixture of expert variational autoencoders (VAEs), each specializing in learning latent spaces for specific observed covariates (e.g., tissue, donor, protocol), alongside an unsupervised VAE for unobserved factors. During training CellDISECT generates synthetic counterfactual cell profiles and evaluates the quality of these predictions to improve generalization.">
           <td class="details-control"></td>
           <td><a href="https://www.biorxiv.org/content/10.1101/2025.06.03.657578v1.full.pdf">CellDISECT</a></td>
           <td>2025</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Nonlinear Gene Programmes</span><span class="badge task-badge">Contrastive Disentanglement</span><span class="badge task-badge">Context Transfer</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">VAE</span><span class="badge model-badge">Mixture of Experts</span></div></td>


           <td class="published"><span style="color: #DC143C;">✗</span></td>
            <td><a href="https://github.com/Lotfollahi-lab/CellDISECT" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="The successor to mmVAE introducing improvements: counts are modeled using a negative binomial distribution, and the MMD loss is replaced with the Wasserstein distance. More specifically, the Wasserstein distance is essentially calculated as the norm of the mean and variance of the salient latent variables of the control data, promoting that they approaches zero. The Wasserstein penalty is optional and is set to 0 (no penalty) by default">
           <td class="details-control"></td>
           <td><a href="https://www.nature.com/articles/s41592-023-01955-3">ContrastiveVI</a></td>
           <td>2023</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Nonlinear Gene Programmes</span><span class="badge task-badge">Contrastive Disentanglement</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">ZINB Likelihood</span><span class="badge model-badge">Protein-Count (totalVI) Likelihood</span><span class="badge model-badge">Contrastive VAE</span><span class="badge model-badge">Multi-modal</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/scverse/scvi-tools/tree/main/src/scvi/external/contrastivevi" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="An extension of ContrastiveVI that incorporates an auxiliary classifier to estimate the effects of perturbations, where the classifier operates on the salient variables and is sampled from a relaxed straight-through Bernoulli distribution. The output from the classifier also directly informs the salient latent space, indicating whether a cell expressing a gRNA successfully underwent a corresponding genetic perturbation. Additionally, Wasserstein distance is replaced by KL divergence, encouraging non-perturbed cells to map to the null region of the salient space. For datasets with a larger number of perturbations, the method also re-introduces and minimizes the Maximum Mean Discrepancy between the salient and background latent variables. This discourages the leakage of perturbation-induced information into the background latent variables, ensuring a clearer separation of perturbation effects.">
           <td class="details-control"></td>
           <td><a href="https://arxiv.org/abs/2411.08072">ContrastiveVI+</a></td>
           <td>2024</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Perturbation Responsiveness</span><span class="badge task-badge">Contrastive Disentanglement</span><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">ZINB Likelihood</span><span class="badge model-badge">VAE</span><span class="badge model-badge">Contrastive</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/insitro/contrastive_vi_plus" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="A VAE that learns disentangled latent representations in an unsupervised manner by employing additive decoders followed by a nonlinear pooling function (by default, log-sum-exp pooling). The decoder splits the latent vector into K variables, each decoded separately, and then aggregates these outputs. This architecture enforces disentanglement under theoretical assumptions, such as the additivity of independent processes, the existence of process-specific gene markers, and reconstruction quality, ensuring that distinct biological processes map to different latent dimensions. Additionally, DRVI performs batch-correction by optionally incorporating covariate information. Finally, DRVI enables the of ranking latent dimensions based on reconstruction and providing a gene interpretability pipeline via latent variable perturbations.">
           <td class="details-control"></td>
           <td><a href="https://openreview.net/forum?id=8FcsvupyOn">DRVI</a></td>
           <td>2024</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Unsupervised Disentanglement</span><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">VAE</span><span class="badge model-badge">NB likelihood</span><span class="badge model-badge">Addative Decoders</span><span class="badge model-badge">Multi-modal</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="http://github.com/theislab/drvi" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="Expimap uses a nonlinear encoder and a masked linear decoder, where the latent space’s dimensions are set equal to the number of gene programs, and decoder weights are masked according to prior knowledge to ensure that each latent variable reconstructs only genes associated with the geneset (fixed membership), with L1 sparsity regularisation allowing soft membership for additional genes, not included in the prior knowledge. Group lasso is additionally used to &#39;deactivate&#39; uniformative Gene Programmes.">
           <td class="details-control"></td>
           <td><a href="https://www.nature.com/articles/s41556-022-01072-x">Expimap</a></td>
           <td>2023</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">VAE</span><span class="badge model-badge">Linear Decoder</span><span class="badge model-badge">NB likelihood</span><span class="badge model-badge">PK Representations</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/theislab/scarches" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="GEASS is a causal feature selection framework in high-dimensional spatal &amp; temporal omics data that identifies nonlinear Granger causal interactions by maximizing a sparsity-regularised modified transfer entropy. It enforces sparsity using combinatorial stochastic gate layers that allow it to select a minimal subset of features with causal interactions - i.e. two sets of of non-overlapping genes as drivers (source) and receivers (sink). ">
           <td class="details-control"></td>
           <td><a href="https://openreview.net/forum?id=aKcS3xojnwY">GEASS</a></td>
           <td>2023</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">Non-linear Granger Causality</span><span class="badge model-badge">Stochastic Gate Layers (Feature Selectors)</span><span class="badge model-badge">Time-resolved / Spatially-informed</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td>✗</td>
         </tr>
         <tr data-description="GeneCompass is a knowledge-informed, cross-species foundation model. During pre-training it integrates four types of prior biological knowledge - gene regulatory networks (ENCODE PECA2-derived GRNs), promoter sequences (fine-tuned DNABert embeddings), gene family annotations (gene2vec HGNC/esnembl embeddings), and gene co-expression relationships (Pearson Correlations in their dataset) - into a unified embedding space. It employs a masked-language-modeling strategy by randomly masking 15 % of gene inputs and simultaneously reconstructs both gene identities and expression values; this is optimized via a multi-task loss combining mean squared error for expression recovery and cross-entropy for gene ID prediction, balanced by a weighting hyperparameter β. Combined with GEARS for extrapolation tasks.">
           <td class="details-control"></td>
           <td><a href="https://www.nature.com/articles/s41422-024-01034-y">GeneCompass</a></td>
           <td>2024</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Unseen Perturbation Prediction</span><span class="badge task-badge">Combinatorial Effect Prediction</span><span class="badge task-badge">GRN Inference</span><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">Foundational Gene expression embeddings (from >50M human cells)</span><span class="badge model-badge">Self-supervised masked regression with down-sampling</span><span class="badge model-badge">Sparse transformer encoder</span><span class="badge model-badge">Performer-style attention decoder</span><span class="badge model-badge">PK-informed</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/xCompass-AI/GeneCompass" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="Hotspot proposes a modified autocorrelation metrics that detect genes with coherent expression among neighboring cells (K-nearest neighbours graph in a latent space, spatial proximities, or lineage). By comparing these local autocorrelation scores to a permutation-free null model (e.g. using negative binomial or Bernoulli assumptions), it calculates the significance of autocorrelated genes. Additionally, for module detection, Hotspot computes pairwise correlations that capture how similarly two genes are expressed across nearby cells and then applies hierarchical clustering to group genes into biologically coherent modules.">
           <td class="details-control"></td>
           <td><a href="https://www.sciencedirect.com/science/article/pii/S2405471221001149">Hotspot</a></td>
           <td>2021</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Nonlinear Gene Programmes</span><span class="badge task-badge">Feature Relationships</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">Autocorrelation</span><span class="badge model-badge">Pairwise Local Correlations</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/YosefLab/Hotspot/tree/master" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="VAE model, which incorporates technical and biological covariates into two sets of latent variables:  - Z_I embeds biologically-relevant variables - Z_B embeds the unwanted variability in the data (i.e. batch effect labels) These are then fed into a shared encoder, along with the count data. The output of this shared encoder is fed to the decoder. Optionally, further disentanglement of the two latent variable sets is achieved by minimizing their total correlation, which is approximated via a minibatch-weighted estimator that quantifies the difference between the joint posterior and the product of individual marginal distributions.">
           <td class="details-control"></td>
           <td><a href="https://www.biorxiv.org/content/10.1101/2024.12.06.627196v1.full">inVAE</a></td>
           <td>2024</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Multi-component Disentanglement</span><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">VAE</span><span class="badge model-badge">NB Likelihood</span></div></td>


           <td class="published"><span style="color: #DC143C;">✗</span></td>
            <td><a href="https://github.com/theislab/inVAE" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="An extension of ContrastiveVI to multi-case (multi-group) disentaglement via multiple group-specific salient encoders.">
           <td class="details-control"></td>
           <td><a href="https://proceedings.mlr.press/v200/weinberger22a">MultiGroupVI</a></td>
           <td>2022</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Nonlinear Gene Programmes</span><span class="badge task-badge">Contrastive Disentanglement</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">ZINB Likelihood</span><span class="badge model-badge">VAE</span><span class="badge model-badge">Contrastive</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/Genentech/multiGroupVI" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="A VAE that encodes shared-bio latent factors that capture biological variation (e.g. cell-type differences) and unshared-bio factors that capture condition-specific signals via separate encoders. Shared factors follow a standard normal prior, while unshared factors use a condition-specific Gaussian mixture prior. The invariance of the shared latent variables is enforced via an MMD penalty, while conditon-encoding in the unshared latent variables is promoted via a classification penalty. Group lasso is used to regularise condition-specific encoders, and it&#39;s (penalty) weights are used to select key genes per condition. scDisInFac enables perturbation predictions in multi-batch, multi-condition settings using scGEN-style arithmetics on the unshared space.">
           <td class="details-control"></td>
           <td><a href="https://www.nature.com/articles/s41467-024-45227-w">scDisInFact</a></td>
           <td>2024</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Contrastive Disentanglement</span><span class="badge task-badge">Nonlinear Gene Programmes</span><span class="badge task-badge">Seen Perturbation Prediction</span><span class="badge task-badge">Combinatorial Effect Prediction</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">VAE</span><span class="badge model-badge">NB likelihood</span><span class="badge model-badge">Adversarial</span><span class="badge model-badge">Gaussian Mixture Model</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/ZhangLabGT/scDisInFact" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="A VAE that disentangles disease (case) from healthy (control) cells by learning invariant background and salient space representations. The background and salient representations are summed to reconstruct the count data, with an (optional) interaction term capturing the interplay between cell type and disease. As done in contrastive methods, the salient representation for control cells is set to 0 during the generative (data reconstruction) process. The invariance of the background latent variables is enforced through two GAN-style neural networks: one encouraging the prediction of cell types from the background space, while the other penalises the prediction of disease labels, ensuring that disease-specific information is isolated in the salient space.">
           <td class="details-control"></td>
           <td><a href="https://openreview.net/pdf?id=fkoqMdTlEg">scDSA</a></td>
           <td>2023</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Nonlinear Gene Programmes</span><span class="badge task-badge">Contrastive Disentanglement</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">NB likelihood</span><span class="badge model-badge">Domain-Adversarial NNs</span><span class="badge model-badge">VAE</span><span class="badge model-badge">Addative Shift</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td>✗</td>
         </tr>
         <tr data-description="scFoundation uses an asymmetric transformer encoder–decoder: its embedding module converts each continuous gene expression scalar directly into a high-dimensional learnable vector without discretisation; the encoder takes as input only nonzero and unmasked embeddings through vanilla transformer blocks to model gene–gene dependencies efficiently. The zero and masked gene embeddings, along with the encoder embeddings, are passed to the decoder, which uses Performer-style attention to reconstruct transcriptome-wide representations, specifically those of masked genes. Specifically, scFoundation is trained using a masked regression objective on both raw and downsampled count vectors, with two total-count tokens concatenated to inputs to account for sequencing depth variance. The decoder-derived gene context embeddings are then used as node features in GEARS for single-cell perturbation response prediction.">
           <td class="details-control"></td>
           <td><a href="https://www.nature.com/articles/s41592-024-02305-7">scFoundation</a></td>
           <td>2024</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Nonlinear Gene Programmes</span><span class="badge task-badge">Unseen Perturbation Prediction</span><span class="badge task-badge">Combinatorial Effect Prediction</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">Foundational Gene expression embeddings (from >50M human cells)</span><span class="badge model-badge">Self-supervised masked regression with down-sampling</span><span class="badge model-badge">Sparse transformer encoder</span><span class="badge model-badge">Performer-style attention decoder</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/biomap-research/scFoundation" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="scGenePT combines CRISPR single-cell RNA-seq perturbation data with language-based gene embeddings. It builds on a pretrained scGPT by adding gene-level text embeddings from NCBI Gene/UniProt summaries or GO annotations, to the token, count, and perturbation embeddings of the model during fine-tuning on perturbational data.">
           <td class="details-control"></td>
           <td><a href="https://www.biorxiv.org/content/10.1101/2024.10.23.619972v1">scGenePT</a></td>
           <td>2025</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Unseen Perturbation Prediction</span><span class="badge task-badge">Combinatorial Effect Prediction</span><span class="badge task-badge">GRN Inference</span><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">scGPT</span><span class="badge model-badge">ChatGPT prompts</span></div></td>


           <td class="published"><span style="color: #DC143C;">✗</span></td>
            <td>✗</td>
         </tr>
         <tr data-description="scGPT processes each cell as a sequence of gene tokens, expression-value tokens and condition tokens (e.g., batch, perturbation or modality), embedding each and summing before feeding them into stacked transformer blocks whose specialised, masked multi-head attention layers enable autoregressive prediction of masked gene expressions from non-sequential data. scGPT is pretrained using a masked gene expression-prediction objective that jointly optimizes cell and gene embeddings, and can be fine-tuned on smaller datasets with task-specific supervised losses. For gene regulatory network inference, scGPT derives k-nearest neighbor similarity graphs from learned gene embeddings and analyses attention maps to extract context-specific Gene Programmes and gene-gene interactions.">
           <td class="details-control"></td>
           <td><a href="https://www.nature.com/articles/s41592-024-02201-0">scGPT</a></td>
           <td>2024</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Unseen Perturbation Prediction</span><span class="badge task-badge">Combinatorial Effect Prediction</span><span class="badge task-badge">GRN Inference</span><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">Foundational Gene expression embeddings (from >33M human cells)</span><span class="badge model-badge">Self-supervised masked expression prediction</span><span class="badge model-badge">Customised non-sequential (flash) attention</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/bowang-lab/scGPT" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="scPRINT is a bidirectional transformer focused for scalable zero-shot inference on new scRNA-seq datasets. It is pre-trained with a composite loss that combines the denoising of downsampled transcripts via a zero-inflated negative-binomial decoder, reconstruction of full expression profiles from bottleneck embeddings, and hierarchical label prediction that disentangles latent factors such as cell type, disease state and sequencing platform. Gene tokens merge a learned protein embedding for the gene ID, an MLP-encoded log-normalised count and a positional encoding of its genomic locus. Pre-training contexts sample 2,200 randomly selected expressed genes per cell (+ padded with unexpressed genes). At inference, cell-specific gene networks are extracted from multi-head attention maps either by averaging all heads or by selecting subsets post hoc based on their correlation with external priors (e.g., PPI databases, ChIP-seq, perturbation-ground-truth networks).">
           <td class="details-control"></td>
           <td><a href="https://www.nature.com/articles/s41467-025-58699-1">scPrint</a></td>
           <td>2025</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">GRN Inference</span><span class="badge task-badge">Multi-component Disentanglement</span><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">Foundational Gene expression embeddings (from >50M human cells)</span><span class="badge model-badge">BERT-like Bidirectional transformers (with flashattention2)</span><span class="badge model-badge">Self-supervised masked regression</span><span class="badge model-badge">A classifier decoder</span><span class="badge model-badge">ZINB likelihood decoder</span><span class="badge model-badge">PK Representations</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/cantinilab/scPRINT" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="scVI is a scalable deep generative model for single-cell transcriptomics that models gene expression counts using a zero-inflated negative binomial (ZINB) distribution to account for overdispersion and high dropout rates. This generative process is conditioned on a low-dimensional latent vector capturing biological variation, a scaling factor for sequencing depth, and categorical batch annotations. scVI served as the basis for the development of the scvi-tools ecosystem and numerous other modules for single-cell analysis.">
           <td class="details-control"></td>
           <td><a href="https://www.nature.com/articles/s41592-018-0229-2">scVI</a></td>
           <td>2018</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">VAE</span><span class="badge model-badge">ZINB likelihood</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/scverse/scvi-tools" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="SIMVI is a spatially-informed VAE that disentangles gene expression variability into two latent factors: an intrinsic variable z, which captures cell type–specific signals, and a spatial variable s, which quantifies spatial effects. The spatial latent variable s is inferred by aggregating the intrinsic representations of neighboring cells via a Graph Attention Network, thereby incorporating local spatial context. To promote independence between z and s, SIMVI employs an asymmetric regularisation on z using maximum mean discrepancy or, alternatively, a  mutual information estimator, ensuring that z retains minimal non-cell-intrinsic information. Furthermore, leveraging debiased machine learning principles, the model decomposes s using archetypal analysis, and then uses it as the treatment variable and z as confounding covariate, thereby quantifying the specific impact of spatial context on gene expression.">
           <td class="details-control"></td>
           <td><a href="https://www.nature.com/articles/s41467-025-58089-7">SIMVI</a></td>
           <td>2025</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Nonlinear Gene Programmes</span><span class="badge task-badge">Unsupervised Disentanglement</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">ZINB Likelihood</span><span class="badge model-badge">VAE</span><span class="badge model-badge">Spatially-informed</span><span class="badge model-badge">Multi-modal</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/KlugerLab/SIMVI" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="SubCell is a set of self-supervised vision transformer (ViT) models trained on low-plex single-cell immunofluorescence images from the Human Protein Atlas to learn biologically meaningful representations of protein localisation and tissue morphology. The models are optimised using a multi-task objective that combines masked autoencoding for spatial reconstruction, a cell-specific contrastive loss to enforce consistency across augmented views of the same cell, and a protein-specific contrastive loss to align embeddings of cells stained for the same protein across different cell lines and experiments. An attention pooling module is used to priotise informative subcellular regions. The resulting models, particularly ViT-ProtS-Pool and MAE-CellS-ProtS-Pool, are shown to generalise across datasets, imaging modalities, cell types, and perturbations without fine-tuning.">
           <td class="details-control"></td>
           <td><a href="https://www.biorxiv.org/content/10.1101/2024.12.06.627299v1.abstract">SubCell</a></td>
           <td>2024</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Context Transfer</span><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">A collection of Vision Transformer Models</span><span class="badge model-badge">Contrastive loss</span></div></td>


           <td class="published"><span style="color: #DC143C;">✗</span></td>
            <td><a href="https://github.com/czi-ai/sub-cell-embed" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="A VAE that integrates recent advances in sparse mechanism shift modeling for single-cell data, inferring a causal structure where perturbation labels identify the latent variables affected by each perturbation. The method constructs a graph identifying which latent variables are influenced by specific perturbations, promoting disentaglement and enabling biological interpretability, such as uncovering perturbations affecting shared processes. A key modelling contribution is its probabilistic sparsity approach (relaxed straight-through Beta-Bernoulli) on the global sparse embeddings (graph),  improving upon its predecessor, SVAE. As such, the latent space can be seen as being modelled from a Spike-and-Slab prior.">
           <td class="details-control"></td>
           <td><a href="https://proceedings.mlr.press/v213/lopez23a/lopez23a.pdf">sVAE+</a></td>
           <td>2023</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Seen Perturbation Prediction</span><span class="badge task-badge">Multi-component Disentanglement</span><span class="badge task-badge">Causal Structure</span><span class="badge task-badge">Nonlinear Gene Programmes</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">VAE</span><span class="badge model-badge">NB likelihood</span><span class="badge model-badge">Sparse Mechanism Shift</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/Genentech/sVAE" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
       </tbody>
     </table>
   </div>

.. raw:: html

   <script>
   jQuery(function($){
      $('#methods-table').DataTable({
        order:      [[2,'desc']],
        pageLength: 10,
        lengthMenu: [5,10,20,50,200],
        scrollX:    true,
        autoWidth:  false
      });
     $('#methods-table tbody').on('click','td.details-control',function(){
       var tr = $(this).closest('tr'),
           row = $('#methods-table').DataTable().row(tr);
       if(row.child.isShown()){
         row.child.hide(); tr.removeClass('shown');
       } else {
         row.child('<div class="expanded-description">'+tr.data('description')+'</div>').show();
         tr.addClass('shown');
       }
     });
   });
   </script>

