Skip to content

Integrate difFUBAR visualizations into hyphy-eye #801

@stevenweaver

Description

@stevenweaver

Overview

Extend hyphy-vision library to support difFUBAR-specific visualizations. difFUBAR generates unique differential selection results that require specialized visualization components not currently available in the standard hyphy-vision toolkit.

Background

difFUBAR produces differential selection results comparing two foreground groups (ω1 vs ω2) with posterior probabilities for various evolutionary scenarios. The current hyphy-vision library is designed for single-group analyses and needs extension for comparative differential selection results.

Required Visualizations

1. Site-Level Differential Selection Plot

Interactive scatter plot showing:

  • X-axis: Site position (1 to sequence length)
  • Y-axis: Maximum posterior probability across all categories
  • Points colored by strongest signal:
    • Red: P(ω1 > ω2) > threshold
    • Blue: P(ω2 > ω1) > threshold
    • Green: P(ω1 > 1) > threshold (positive selection in group 1)
    • Orange: P(ω2 > 1) > threshold (positive selection in group 2)
  • Hover tooltips with detailed posterior probabilities

2. Posterior Probability Heatmap

Heatmap visualization:

  • Rows: Sites with detected differential selection
  • Columns: Four posterior categories [P(ω1>ω2), P(ω2>ω1), P(ω1>1), P(ω2>1)]
  • Color intensity: Posterior probability strength
  • Interactive site selection and filtering

3. Branch Group Comparison Charts

Comparative visualizations:

  • ω Distribution Plot: Side-by-side histograms of mean(ω1) vs mean(ω2) across sites
  • Alpha Parameter Plot: Distribution of synonymous rate variation
  • Detection Summary: Bar chart of sites by detection category

4. Evidence Summary Table

Interactive table with:

  • Site number and codon position
  • All four posterior probabilities
  • Mean parameter estimates [α, ω1, ω2]
  • Sortable and filterable columns
  • Export functionality (CSV, JSON)

5. Interactive Site Explorer

Detailed per-site analysis:

  • Click site in plot → show detailed breakdown
  • Parameter distributions for selected site
  • Sequence context and codon information
  • Branch-specific rate estimates

Implementation Requirements

Add difFUBAR Function to hyphy-vision

// In hyphy-vision library
hyphyVision.difFubar = function(url, element, fasta, settings) {
  d3.json(url, function(error, results) {
    if (error) {
      // Error handling
      return;
    }
    
    // Parse difFUBAR results format
    const sites = results.data.sites;
    const detected = sites.filter(s => 
      Math.max(s["P(ω1 > ω2)"], s["P(ω2 > ω1)"], 
               s["P(ω1 > 1)"], s["P(ω2 > 1)"]) > settings.threshold
    );
    
    // Create visualization container
    const container = d3.select(element);
    
    // Render main differential selection plot
    renderDifferentialPlot(container, sites, settings);
    
    // Render summary statistics
    renderSummaryStats(container, detected, settings);
    
    // Render evidence table
    renderEvidenceTable(container, detected, settings);
  });
};

Integration with Results Template

Update app/templates/difFubar/results.ejs:

<\!-- difFUBAR Results Visualization -->
<div id="difFubar-results" class="hyphy-analysis"></div>

<script>
  hyphyVision.difFubar(
    "/difFubar/<%= job._id %>/results.json",
    "#difFubar-results",
    null,
    {
      threshold: <%= job.pos_threshold %>,
      showTable: true,
      showHeatmap: true,
      showComparison: true
    }
  );
</script>

Data Format Support

Support difFUBAR JSON output format:

{
  "data": {
    "sites": [
      {
        "Codon Sites": 1,
        "P(ω1 > ω2)": 0.95,
        "P(ω2 > ω1)": 0.03,
        "P(ω1 > 1)": 0.12,
        "P(ω2 > 1)": 0.08,
        "mean(α)": 1.2,
        "mean(ω1)": 2.1,
        "mean(ω2)": 0.8
      }
    ]
  },
  "summary": {
    "detected_sites": 24,
    "total_sites": 808
  }
}

User Interface Features

  • Responsive Design: Works on desktop, tablet, mobile
  • Export Options: PNG, SVG, PDF for plots; CSV for tables
  • Parameter Filtering: Adjust threshold and re-render
  • Color Customization: User-configurable color schemes
  • Accessibility: Screen reader support, keyboard navigation

Performance Considerations

  • Efficient rendering for large datasets (>5000 sites)
  • Virtual scrolling for evidence tables
  • WebGL acceleration for scatter plots
  • Progressive loading for large visualizations

Acceptance Criteria

  • difFUBAR results display comprehensive visualizations
  • All four posterior probability categories are clearly represented
  • Interactive site exploration works smoothly
  • Visualizations are publication-ready (high DPI, clean styling)
  • Export functionality works for all visualization types
  • Performance remains good with datasets up to 5000+ sites
  • Integration works with existing results template system

Dependencies

  • d3.js visualization library
  • Existing hyphy-vision infrastructure
  • difFUBAR JSON output format standardization
  • Server-side result processing (Issue Api #331)

Priority

MEDIUM - Essential for user interpretation of difFUBAR results

Related Issues

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions