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)