Feature Relationships
=====================


.. 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="Celcomen disentangles intra- and inter-cellular gene regulation in spatial transcriptomics data by processing gene expression through two parallel interaction functions. One function uses a single graph convolution layer (1-hop GNN) to learn a gene-gene interaction matrix that captures cross-cell signaling, while the other uses a linear layer to model regulation within individual cells. Training maximises an approximate likelihood that aligns the model-predicted weight matrices to the average gene expression across all cells. Simcomen then leverages these fixed, learned matrices to simulate spatial counterfactuals (e.g., gene knockouts) for in-silico experiments.">
           <td class="details-control"></td>
           <td><a href="https://openreview.net/pdf?id=Tqdsruwyac">Celcomen</a></td>
           <td>2025</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">Feature Relationships</span></div></td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge model-badge">K-hop Convolution</span><span class="badge model-badge">Spatially-informed</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/Teichlab/celcomen" 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="Kasumi extends MISTy by focusing on identifying localised relationship patterns that are persistent across tissue samples. Instead of modeling global relationships, it uses a sliding-window approach to learn representations of local tissue patches (neighborhoods), characterized by multivariate, potentially non-linear relationships across views. These window-specific relationship signatures are clustered (using graph-based community detection) into spatial patterns, which are consistently observed across multiple samples. This enables Kasumi to represent each sample as a distribution over interpretable, shared local patterns, facilitating tasks like patient stratification while maintaining model explainability.">
           <td class="details-control"></td>
           <td><a href="https://www.nature.com/articles/s41467-025-59448-0">Kasumi</a></td>
           <td>2025</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><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">Spatially-informed</span><span class="badge model-badge">Random Forrest (or other regression models)</span><span class="badge model-badge">Convolution Operations</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://www.github.com/jtanevski/kasumi" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="Memento is a differential expression framework that uses method-of-moments estimators under a multivariate hypergeometric model, where a gene’s mean is derived from Good-Turing corrected counts scaled by total cell counts. Differential variability is quantified as the variance remaining after accounting for mean-dependent effects (residual variance), while the covariance (pairwise association) between genes is estimated from the off-diagonal elements of the resulting variance-covariance matrix. Efficient permutation is achieved through a bootstrapping strategy that leverages the sparsity of unique transcript counts.">
           <td class="details-control"></td>
           <td><a href="https://www.cell.com/cell/fulltext/S0092-8674(24)01144-9">Memento</a></td>
           <td>2024</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><span class="badge task-badge">Differential Analysis</span><span class="badge task-badge">Linear 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">Hypergeometric test</span><span class="badge model-badge">Probabilistic</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/yelabucsf/scrna-parameter-estimation" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="MISTy extracts intra- and intercellular relationships from spatial omics data by learning multivariate interactions through a multi-view approach, where each view represents a collection of variables (e.g., a modality or an aggragation of a spatial niche). It jointly models spatial and functional aspects of the data, supporting any number of views with arbitrary numbers of variables. Target variables (intrinsic view) are predicted using random forests (by default), either via leave-feature-one-out within the intrinsic view or using the remaining (extrinsic) views.">
           <td class="details-control"></td>
           <td><a href="https://link.springer.com/article/10.1186/s13059-022-02663-5">MISTy</a></td>
           <td>2022</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><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">Spatially-informed</span><span class="badge model-badge">Random Forrest (or other regression models)</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://saezlab.github.io/mistyR/" class="github-link">
                  <i class="fab fa-github" aria-hidden="true"></i>
                  <span class="sr-only">GitHub</span>
                </a></td>
         </tr>
         <tr data-description="SpaCeNet aims to untangle the complex relationships between molecular interactions within and between cells by analyzing spatially resolved single-cell data. To achieve this, SpaCeNet leverages an adaptation of probabilistic graphical models  to enable spatially resolved conditional independence testing. This approach allows for the identification of direct and indirect dependencies, as well as the removal of spurious gene association patterns. Additionally, SpaCeNet incorporates explicit cell-cell distance information to differentiate between short- and long-range interactions, thereby distinguishing between baseline cellular variability and interactions influenced by a cell&#39;s microenvironment.">
           <td class="details-control"></td>
           <td><a href="https://genome.cshlp.org/content/34/9/1371">SpaCeNet</a></td>
           <td>2024</td>

           <td><div style="display: flex; flex-wrap: wrap; gap: 0.3em;"><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">Generalised Gaussian Graphical Model</span><span class="badge model-badge">Spatially-informed</span></div></td>


           <td class="published"><span style="color: #2E8B57;">✓</span></td>
            <td><a href="https://github.com/sschrod/SpaCeNet" 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>

