0750648bee41e57d7f1cbc3de8e3d9177bfd4c70
angie
  Fri May 1 10:02:25 2026 -0700
Initial support for ripples seach in usher-sampled-server.
Enabled by config param ripplesEnabled.  If enabled, there is a new checkbox for the user to click if they want the extra search.  Currently hardcoded to max of 10 sequences, otherwise extra search is not done (too slow).  Ripples results, if any, are displayed in a table before the usual summary table.

diff --git src/hg/hgPhyloPlace/hgPhyloPlace.c src/hg/hgPhyloPlace/hgPhyloPlace.c
index d92c273cd02..451030a41eb 100644
--- src/hg/hgPhyloPlace/hgPhyloPlace.c
+++ src/hg/hgPhyloPlace/hgPhyloPlace.c
@@ -275,30 +275,38 @@
                                      "placement (max: %d", MAX_SUBTREE_SIZE);
 if (microbeTraceHost() != NULL)
     dyStringPrintf(dy, "; max for MicrobeTrace: %d)", MAX_MICROBETRACE_SUBTREE_SIZE);
 else
     dyStringAppend(dy, ")");
 cgiMakeIntVarWithLimits("subtreeSize", subtreeSize, dy->string, 5, 10, MAX_SUBTREE_SIZE);
 puts("</p><p>");
 char *sessionDataDir = cfgOption("sessionDataDir");
 if (isNotEmpty(sessionDataDir))
     {
     puts("Prevent subtree Auspice JSON files from expiring after two days: ");
     boolean subtreePersist = cartUsualBoolean(cart, "subtreePersist", FALSE);
     cgiMakeCheckBox("subtreePersist", subtreePersist);
     puts("</p><p>");
     }
+char *ripplesEnabled = phyloPlaceOrgSetting(org, "ripplesEnabled");
+if (isNotEmpty(ripplesEnabled) && SETTING_IS_ON(ripplesEnabled))
+    {
+    printf("Search for potential recombination (limit %d input sequences): ", MAX_RIPPLES_SEARCH);
+    boolean doRipples = cartUsualBoolean(cart, "doRipples", FALSE);
+    cgiMakeCheckBox("doRipples", doRipples);
+    puts("</p><p>");
+    }
 cgiMakeOnClickSubmitButton(CHECK_FILE_OR_PASTE_INPUT_JS(seqFileVar, pastedIdVar),
                            "submit", "Upload");
 char *exampleFile = phyloPlaceOrgSettingPath(org, "exampleFile");
 if (isNotEmpty(exampleFile))
     {
     puts("&nbsp;&nbsp;");
     cgiMakeOnClickSubmitButton("{ loadingImage.run(); return true; }",
                                "exampleButton", "Upload Example File");
     if (sameString(org, "wuhCor1"))
         {
         puts("&nbsp;&nbsp;");
         puts("<a href='https://github.com/russcd/USHER_DEMO/' target=_blank>More example files</a>");
         }
     }
 puts("</p>");