8f4ecfd5b70e1e679ad0044e715986489bcf6977
giardine
  Thu Nov 4 10:38:46 2010 -0700
Don't trust freq column to have data or to match the allele count, handle blank, error on mismatch
diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index 958fc1e..fe89836 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -9366,33 +9366,35 @@
 
 /* get allele(s) to display */
 char *allele[8];
 char *freq[8];
 int allTot = 0;
 int x1 = round((double)((int)myItem->chromStart-winStart)*scale) + xOff;
 int x2 = round((double)((int)myItem->chromEnd-winStart)*scale) + xOff;
 int w = x2-x1;
 if (w < 1)
     w = 1;
 char *nameCopy = cloneString(myItem->name);
 char *allFreqCopy = cloneString(myItem->alleleFreq);
 int cnt = chopByChar(nameCopy, '/', allele, myItem->alleleCount);
 if (cnt != myItem->alleleCount)
     errAbort("Bad allele name %s", myItem->name);
-chopByChar(allFreqCopy, ',', freq, myItem->alleleCount);
+int fcnt = chopByChar(allFreqCopy, ',', freq, myItem->alleleCount);
+if (fcnt != myItem->alleleCount && fcnt != 0)
+    errAbort("Bad freq for %s",  myItem->name);
 int i = 0;
-for (i=0;i<myItem->alleleCount;i++)
+for (i=0;i<fcnt;i++)
     allTot += atoi(freq[i]);
 /* draw a tall box */
 if (sameString(display, "freq"))
     {
     if (allTot == 0)
         {
         pgSnpDrawScaledBox(hvg, myItem->chromStart, myItem->chromEnd, scale,
             xOff, y, tg->heightPer, MG_GRAY);
         }
     else
         { /* stack boxes colored to match alleles */
         Color allC = MG_BLACK;
         int yCopy = y;
         for (i=0;i<myItem->alleleCount;i++)
             {