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/hAnno.c src/hg/lib/hAnno.c index 89eef13..0f56718 100644 --- src/hg/lib/hAnno.c +++ src/hg/lib/hAnno.c @@ -227,31 +227,31 @@ return streamer; } struct annoGrator *hAnnoGratorFromBigFileUrl(char *fileOrUrl, struct annoAssembly *assembly, int maxOutRows, enum annoGratorOverlap overlapRule) /* Determine what kind of big data file/url we have and make streamer & grator for it. */ { struct annoStreamer *streamer = NULL; struct annoGrator *grator = NULL; char *type = customTrackTypeFromBigFile(fileOrUrl); if (sameString(type, "bigBed") || sameString("bigGenePred", type)) streamer = annoStreamBigBedNew(fileOrUrl, assembly, maxOutRows); else if (sameString(type, "vcfTabix")) streamer = annoStreamVcfNew(fileOrUrl, TRUE, assembly, maxOutRows); else if (sameString(type, "bigWig")) - grator = annoGrateBigWigNew(fileOrUrl, assembly); + grator = annoGrateBigWigNew(fileOrUrl, assembly, agwmAverage); else if (sameString(type, "bam")) errAbort("Sorry, BAM is not yet supported"); else errAbort("Unrecognized bigData type %s of file or url '%s'", type, fileOrUrl); if (grator == NULL) grator = annoGratorNew(streamer); grator->setOverlapRule(grator, overlapRule); return grator; } struct annoGrator *hAnnoGratorFromTrackDb(struct annoAssembly *assembly, char *selTable, struct trackDb *tdb, char *chrom, int maxOutRows, struct asObject *primaryAsObj, enum annoGratorOverlap overlapRule) /* Figure out the source and type of data, make an annoStreamer & wrap in annoGrator. @@ -261,35 +261,35 @@ boolean primaryIsVariants = (primaryAsObj != NULL && (asObjectsMatch(primaryAsObj, pgSnpAsObj()) || asObjectsMatch(primaryAsObj, vcfAsObj()))); char *bigDataUrl = trackDbSetting(tdb, "bigDataUrl"); if (bigDataUrl != NULL) { if (primaryIsVariants && sameString("bigGenePred", tdb->type)) { struct annoStreamer *streamer = annoStreamBigBedNew(bigDataUrl, assembly, maxOutRows); grator = annoGratorGpVarNew(streamer); } else grator = hAnnoGratorFromBigFileUrl(bigDataUrl, assembly, maxOutRows, overlapRule); } else if (startsWithWord("wig", tdb->type)) - grator = annoGrateWigDbNew(assembly->name, selTable, assembly, maxOutRows); + grator = annoGrateWigDbNew(assembly->name, selTable, assembly, agwmAverage, maxOutRows); else if (startsWithWord("bigWig", tdb->type)) { char *fileOrUrl = getBigDataFileName(assembly->name, tdb, tdb->table, chrom); - grator = annoGrateBigWigNew(fileOrUrl, assembly); + grator = annoGrateBigWigNew(fileOrUrl, assembly, agwmAverage); } else { struct annoStreamer *streamer = hAnnoStreamerFromTrackDb(assembly, selTable, tdb, chrom, maxOutRows); if (primaryIsVariants && (asColumnNamesMatchFirstN(streamer->asObj, genePredAsObj(), 10) || asObjectsMatch(streamer->asObj, bigGenePredAsObj()))) grator = annoGratorGpVarNew(streamer); else grator = annoGratorNew(streamer); } grator->setOverlapRule(grator, overlapRule); return grator; }