19da7bcf56ec86a80554a364d191d31b00d95f3e
angie
  Fri Nov 1 13:51:49 2019 -0700
dbSnpJsonToTab was including refIsMinor multiple times for same variant - fixed.  refs #23283

diff --git src/hg/snp/dbSnpJsonToTab/dbSnpJsonToTab.c src/hg/snp/dbSnpJsonToTab/dbSnpJsonToTab.c
index de03bd2..c10f156 100644
--- src/hg/snp/dbSnpJsonToTab/dbSnpJsonToTab.c
+++ src/hg/snp/dbSnpJsonToTab/dbSnpJsonToTab.c
@@ -792,54 +792,60 @@
 return props;
 }
 
 static void setBdsFreqData(struct sharedProps *props, boolean isRc, struct bigDbSnp *bds,
                            struct dyString *dyUcscNotes, struct lm *lm)
 /* Use isRc, props to fill in bds->majorAllele, ->minorAllele, determine whether ref is maj/min.
  * Add notes to dyUcscNotes if applicable. */
 {
 if (props->freqSourceCount > 0)
     {
     bds->freqSourceCount = props->freqSourceCount;
     lmAllocArray(lm, bds->majorAllele, props->freqSourceCount);
     lmAllocArray(lm, bds->minorAllele, props->freqSourceCount);
     lmAllocArray(lm, bds->minorAlleleFreq, props->freqSourceCount);
     char *firstMajorAllele = NULL;
+    boolean refIsMinor = FALSE;
+    boolean diffMajor = FALSE;
     int sIx;
     for (sIx = 0;  sIx < props->freqSourceCount;  sIx++)
         {
         boolean freqIsRc = props->freqIsRc[sIx];
         bds->minorAlleleFreq[sIx] = props->freqSourceMaf[sIx];
         bds->majorAllele[sIx] = lmCloneString(lm, emptyForNull(props->freqSourceMajorAl[sIx]));
         bds->minorAllele[sIx] = lmCloneString(lm, emptyForNull(props->freqSourceMinorAl[sIx]));
         if (isfinite(bds->minorAlleleFreq[sIx]))
             {
             if (isRc != freqIsRc)
                 {
                 reverseComplement(bds->majorAllele[sIx], strlen(bds->majorAllele[sIx]));
                 reverseComplement(bds->minorAllele[sIx], strlen(bds->minorAllele[sIx]));
                 }
             char *majorAllele = bds->majorAllele[sIx];
             if (differentString(bds->ref, majorAllele))
-                dyStringAppend(dyUcscNotes, bdsRefIsMinor ",");
+                refIsMinor = TRUE;
             if (firstMajorAllele == NULL)
                 firstMajorAllele = majorAllele;
             else if (majorAllele != NULL &&
                      differentString(firstMajorAllele, majorAllele))
-                dyStringAppend(dyUcscNotes, bdsDiffMajor ",");
+                diffMajor = TRUE;
             }
         }
+    if (refIsMinor)
+        dyStringAppend(dyUcscNotes, bdsRefIsMinor ",");
+    if (diffMajor)
+        dyStringAppend(dyUcscNotes, bdsDiffMajor ",");
     }
 }
 
 static void checkRareRef(struct sharedProps *props, char *ref, boolean isRc,
                          struct dyString *dyUcscNotes)
 /* If frequency counts are reported, test whether the reference has ever been observed,
  * and if so whether it is rare, i.e. < 1%.  If so, add to dyUcscNotes. */
 {
 double rareThreshold = 0.01;
 boolean haveFrequencies = FALSE, refWasObserved = FALSE;
 double maxRefAF = 0.0;
 int ix;
 for (ix = 0;  ix < props->freqSourceCount;  ix++)
     {
     if (props->freqSourceObs[ix] != NULL)