c385c1661b72541e1e8fb28187323f3b31c431e7
angie
  Fri May 29 18:24:49 2026 -0700
If new columns are present in ripples server output then use them to draw RIVET-like recombination diagram in pop-up.

diff --git src/hg/hgPhyloPlace/phyloPlace.h src/hg/hgPhyloPlace/phyloPlace.h
index d620be7a60e..19e3e3286f3 100644
--- src/hg/hgPhyloPlace/phyloPlace.h
+++ src/hg/hgPhyloPlace/phyloPlace.h
@@ -135,30 +135,33 @@
     uint donorNumDesc;                    // Number of descendants of donor node
     uint acceptorNumDesc;                 // Number of descendants of acceptor node
     uint bp1Min;                          // First breakpoint minimum coordinate
     uint bp1Max;                          // First breakpoint maximum coordinate
     uint bp2Min;                          // Second breakpoint minimum coordinate
     uint bp2Max;                          // Second breakpoint maximum coordinate
     char *recombClade;                    // First clade annotation assigned to recombinant node
     char *recombLineage;                  // Second clade annotation assigned to recombinant node
     char *donorClade;                     // First clade annotation assigned to donor node
     char *donorLineage;                   // Second clade annotation assigned to donor node
     char *acceptorClade;                  // First clade annotation assigned to acceptor node
     char *acceptorLineage;                // Second clade annotation assigned to acceptor node
     char *representative;                 // Representative descendant of recombinant node
     uint originalParsimony;               // Parsimony score of recombinant node in tree
     uint parsimonyImprovement;            // Reduction in parsimony score given parents/breakpoints
+    char *recombMutations;                // Comma-separated list of mutations found in recombinant
+    char *donorMutations;                 // Comma-separated list of mutations found in donor
+    char *acceptorMutations;              // Comma-separated list of mutations found in acceptor
 };
 
 struct usherResults
 /* Tree+samples download file, sample placements, and subtrees parsed from usher output. */
     {
     struct tempName *bigTreePlusTn;      // Newick file: original tree plus user's samples
     struct hash *samplePlacements;       // Info about each sample's placement in the tree
     struct subtreeInfo *singleSubtreeInfo;  // Comprehensive subtree with all uploaded samples
     struct subtreeInfo *subtreeInfoList; // For each subtree: tree, file, node info etc.
     struct recombinantInfo *recombinants;// Potential recombinants found by ripples search
     struct hash *recombinantDescendants; // Leaf descendants of each potential recombinant node
     };
 
 struct sampleMetadataStore
 /* Storage for sample metadata: hash of array of strings for named columns. */
@@ -304,16 +307,19 @@
 /* Print out a report to stderr of how much time something took. */
 
 boolean hgPhyloPlaceEnabled();
 /* Return TRUE if hgPhyloPlace is enabled in hg.conf and db wuhCor1 exists. */
 
 boolean phyloPlaceSamples(struct lineFile *lf, char *db, char *refName, char *defaultProtobuf,
                           boolean doMeasureTiming, int subtreeSize, struct trackLayout *tl,
                           struct cart *cart);
 /* Given a lineFile that contains either FASTA, VCF, or a list of sequence names/ids:
  * If FASTA/VCF, then prepare VCF for usher; if that goes well then run usher, report results,
  * make custom track files.
  * If list of seq names/ids, then attempt to find their full names in the protobuf, run matUtils
  * to make subtrees, show subtree results.
  * Return TRUE if we were able to get at least some results for the user's input. */
 
+void debugRecombinantDisplay(struct cart *cart);
+/* Add recombinantData and buttons to page for quick-turnaround debugging of Javascript. */
+
 #endif //_PHYLO_PLACE_H_