15b84072ef48791ec41cb031ef351997c3dee4d7
angie
  Tue Sep 7 15:15:17 2021 -0700
Added a new branch label option: back-mutations to reference, to highlight problematic parts of the tree.

diff --git src/hg/hgPhyloPlace/treeToAuspiceJson.c src/hg/hgPhyloPlace/treeToAuspiceJson.c
index 774e698..9d09250 100644
--- src/hg/hgPhyloPlace/treeToAuspiceJson.c
+++ src/hg/hgPhyloPlace/treeToAuspiceJson.c
@@ -296,30 +296,42 @@
 if (node->priv != NULL)
     {
     struct singleNucChange *sncList = node->priv;
     struct slPair *geneAaMutations = getAaMutations(sncList, geneInfoList, gSeqWin);
     jsonWriteObjectStart(jw, "branch_attrs");
     if (node->numEdges > 0)
         {
         jsonWriteObjectStart(jw, "labels");
         struct singleNucChange *snc = sncList;
         struct dyString *dy = dyStringCreate("%c%d%c",
                                              snc->parBase, snc->chromStart+1, snc->newBase);
         for (snc = sncList->next;  snc != NULL;  snc = snc->next)
             dyStringPrintf(dy, ",%c%d%c", snc->parBase, snc->chromStart+1, snc->newBase);
         jsonWriteString(jw, "nuc mutations", dy->string);
         dyStringClear(dy);
+        for (snc = sncList;  snc != NULL;  snc = snc->next)
+            {
+            char ref[2];
+            seqWindowCopy(gSeqWin, snc->chromStart, 1, ref, sizeof(ref));
+            if (snc->newBase == ref[0])
+                {
+                dyStringAppendSep(dy, ",");
+                dyStringPrintf(dy, "%c%d%c", snc->parBase, snc->chromStart+1, snc->newBase);
+                }
+            }
+        jsonWriteString(jw, "back-mutations", dy->string);
+        dyStringClear(dy);
         struct dyString *dyS = dyStringNew(0);
         struct slPair *geneAaMut;
         for (geneAaMut = geneAaMutations;  geneAaMut != NULL;  geneAaMut = geneAaMut->next)
             {
             struct slName *aaMut;
             for (aaMut = geneAaMut->val;  aaMut != NULL;  aaMut = aaMut->next)
                 {
                 dyStringAppendSep(dy, ",");
                 dyStringPrintf(dy, "%s:%s", geneAaMut->name, aaMut->name);
                 }
             if (sameString("S", geneAaMut->name))
                 {
                 for (aaMut = geneAaMut->val;  aaMut != NULL;  aaMut = aaMut->next)
                     {
                     dyStringAppendSep(dyS, ",");