1cd0b7c223ef9944459fbbdac10e3c21ab8a6edd angie Mon Aug 14 15:41:40 2017 -0700 Oops, suppress HGVS output (not just options) when using non-RefSeq transcripts. refs #19968 diff --git src/hg/hgVai/hgVai.c src/hg/hgVai/hgVai.c index 41a6b31..e720103 100644 --- src/hg/hgVai/hgVai.c +++ src/hg/hgVai/hgVai.c @@ -1453,46 +1453,49 @@ ZeroVar(&aggvFuncFilter); aggvFuncFilter.intergenic = cartUsualBoolean(cart, "hgva_include_intergenic", TRUE); aggvFuncFilter.upDownstream = cartUsualBoolean(cart, "hgva_include_upDownstream", TRUE); aggvFuncFilter.nmdTranscript = cartUsualBoolean(cart, "hgva_include_nmdTranscript", TRUE); aggvFuncFilter.exonLoss = cartUsualBoolean(cart, "hgva_include_exonLoss", TRUE); aggvFuncFilter.utr = cartUsualBoolean(cart, "hgva_include_utr", TRUE); aggvFuncFilter.cdsSyn = cartUsualBoolean(cart, "hgva_include_cdsSyn", TRUE); aggvFuncFilter.cdsNonSyn = cartUsualBoolean(cart, "hgva_include_cdsNonSyn", TRUE); aggvFuncFilter.intron = cartUsualBoolean(cart, "hgva_include_intron", TRUE); aggvFuncFilter.splice = cartUsualBoolean(cart, "hgva_include_splice", TRUE); aggvFuncFilter.nonCodingExon = cartUsualBoolean(cart, "hgva_include_nonCodingExon", TRUE); aggvFuncFilter.noVariation = cartUsualBoolean(cart, "hgva_include_noVariation", TRUE); annoGratorGpVarSetFuncFilter(gpVarGrator, &aggvFuncFilter); } -static void setHgvsOutOptions(struct annoGrator *gpVarGrator) +static void setHgvsOutOptions(struct annoGrator *gpVarGrator, char *geneTrack) /* Use cart variables to configure gpVarGrator's HGVS output. */ { uint hgvsOutOptions = 0; +if (sameString(geneTrack, "refGene") || startsWith("ncbiRefSeq", geneTrack)) + { if (cartUsualBoolean(cart, "hgva_hgvsG", FALSE)) hgvsOutOptions |= HGVS_OUT_G; if (cartUsualBoolean(cart, "hgva_hgvsCN", FALSE)) hgvsOutOptions |= HGVS_OUT_CN; if (cartUsualBoolean(cart, "hgva_hgvsP", FALSE)) hgvsOutOptions |= HGVS_OUT_P; if (cartUsualBoolean(cart, "hgva_hgvsPAddParens", FALSE)) hgvsOutOptions |= HGVS_OUT_P_ADD_PARENS; if (cartUsualBoolean(cart, "hgva_hgvsBreakDelIns", FALSE)) hgvsOutOptions |= HGVS_OUT_BREAK_DELINS; annoGratorGpVarSetHgvsOutOptions(gpVarGrator, hgvsOutOptions); } +} struct annoGrator *gratorForSnpBed4(struct hash *gratorsByName, char *suffix, struct annoAssembly *assembly, char *chrom, enum annoGratorOverlap overlapRule, char **retDescription) /* Look up snpNNNsuffix; if we find it, return a grator (possibly for a bigBed 4 file), * otherwise return NULL. */ { char *fileName = NULL; struct trackDb *tdb = NULL; if (! findSnpBed4(suffix, &fileName, &tdb)) return NULL; struct annoGrator *grator = NULL; // First look in gratorsByName to see if this grator has already been constructed: if (tdb != NULL) @@ -2810,31 +2813,31 @@ if (! isCommandLine) doUi(); return; } primary = hAnnoStreamerFromTrackDb(assembly, varTdb->table, varTdb, chrom, maxVarRows, NULL); primaryLongLabel = varTdb->longLabel; } enum annoGratorOverlap geneOverlapRule = agoMustOverlap; struct joinerDtf *txStatusExtras = getTxStatusExtras(database, geneTrack); struct jsonElement *gpConfig = configForStreamer(database, geneTdb, txStatusExtras); struct annoGrator *gpVarGrator = hAnnoGratorFromTrackDb(assembly, geneTdb->table, geneTdb, chrom, ANNO_NO_LIMIT, primary->asObj, geneOverlapRule, gpConfig); setGpVarFuncFilter(gpVarGrator); -setHgvsOutOptions(gpVarGrator); +setHgvsOutOptions(gpVarGrator, geneTdb->track); // Some grators may be used as both filters and output values. To avoid making // multiple grators for the same source, hash them by trackName: struct hash *gratorsByName = hashNew(8); struct annoGrator *snpGrator = NULL; char *snpDesc = NULL; if (cartUsualBoolean(cart, "hgva_rsId", TRUE)) snpGrator = gratorForSnpBed4(gratorsByName, "", assembly, chrom, agoNoConstraint, &snpDesc); // Now construct gratorList in the order in which annoFormatVep wants to see them, // i.e. first the gpVar, then the snpNNN, then whatever else: struct annoGrator *gratorList = NULL; slAddHead(&gratorList, gpVarGrator); if (snpGrator != NULL)