7f98bf75bd712a44b8ed9ededdd10e0f387cd35a
angie
  Thu Aug 13 10:31:58 2015 -0700
Moved averaging of wiggle values back from annoFormatTab to annoGrateWig,
so that it can be done properly across multiple regions with data.
A user was trying to get average GC over 1MB regions, but averages of
smaller subregions were returned instead.
refs #15834

diff --git src/hg/lib/annoStreamWig.c src/hg/lib/annoStreamWig.c
index e37bef6..790ea3f 100644
--- src/hg/lib/annoStreamWig.c
+++ src/hg/lib/annoStreamWig.c
@@ -108,49 +108,49 @@
     {
     struct annoRow *wigRow = self->wigStr->nextRow(self->wigStr, minChrom, minEnd, callerLm);
     if (wigRow == NULL)
 	return NULL;
     struct wiggle wiggle;
     wiggleStaticLoad((char **)wigRow->data, &wiggle);
     checkWibFile(self, wiggle.file);
     // translate wigRow + bytes to float vector
     boolean rightFail = FALSE;
     int validCount = 0;
     int bpLen = wiggle.chromEnd - wiggle.chromStart;
     float vector[bpLen];
     getFloatArray(self, &wiggle, &rightFail, &validCount, vector);
     if (rightFail || validCount > 0)
 	{
-	rowOut = annoRowWigNew(wigRow->chrom, wigRow->start, wigRow->end, rightFail, vector,
+	rowOut = annoRowWigVecNew(wigRow->chrom, wigRow->start, wigRow->end, rightFail, vector,
                                   callerLm);
 	done = TRUE;
 	}
     }
 return rowOut;
 }
 
 static void aswClose(struct annoStreamer **pVSelf)
 /* Free wiggleDataStream and self. */
 {
 if (pVSelf == NULL)
     return;
 struct annoStreamWig *self = *(struct annoStreamWig **)pVSelf;
 udcFileClose(&(self->wibFH));
 freeMem(self->wibFile);
 annoStreamerFree(pVSelf);
 }
 
 struct annoStreamer *annoStreamWigDbNew(char *db, char *table, struct annoAssembly *aa,
 					int maxOutput)
 /* Create an annoStreamer (subclass) object from a wiggle database table. */
 {
 struct annoStreamWig *self = NULL;
 AllocVar(self);
 self->wigStr = annoStreamDbNew(db, table, aa, asParseText(wiggleAsText), maxOutput);
 struct annoStreamer *streamer = &(self->streamer);
 annoStreamerInit(streamer, aa, asParseText(annoRowWigAsText), self->wigStr->name);
-streamer->rowType = arWig;
+streamer->rowType = arWigVec;
 streamer->setRegion = aswSetRegion;
 streamer->nextRow = aswNextRow;
 streamer->close = aswClose;
 return (struct annoStreamer *)self;
 }