3556696ddf8ee9dadf75805726fb2a4c226c7f92 angie Thu Aug 17 09:39:46 2017 -0700 A little refactoring of logic that allows HGVS output only for RefSeq transcripts. diff --git src/hg/hgVai/hgVai.c src/hg/hgVai/hgVai.c index e720103..04abe87 100644 --- src/hg/hgVai/hgVai.c +++ src/hg/hgVai/hgVai.c @@ -986,59 +986,65 @@ isVisible ? "block" : "none"); cartMakeCheckBox(cart, "hgva_txStatus_refSeqStatus", FALSE); puts("Include the " "RefSeq status of each transcript.
"); puts(""); } printf("
", somethingIsVisible ? "none" : "block"); puts("No transcript status data are available for the selected gene track."); puts("
"); puts("
"); endCollapsibleSection(); } +static boolean canDoHgvsOut(char *geneTrack) +/* Return TRUE if we're able to make HGVS output terms for transcripts in geneTrack. */ +{ +return sameString(geneTrack, "refGene") || startsWith("ncbiRefSeq", geneTrack); +} + static void selectHgvsOut(char *geneTrack) /* Offer HGVS output choices if RefSeq Genes are selected */ { startCollapsibleSection("hgvsOut", "HGVS variant nomenclature", TRUE); printf("The Human Genome Variation Society (HGVS) " "has established a " "sequence variant nomenclature, " "an international standard used to report variation in " "genomic, transcript and protein sequences.
\n"); -boolean refSeqSelected = sameString(geneTrack, "refGene") || startsWith("ncbiRefSeq", geneTrack); -printf("
", refSeqSelected ? "block" : "none"); +boolean hgvsOk = canDoHgvsOut(geneTrack); +printf("
", hgvsOk ? "block" : "none"); cartMakeCheckBox(cart, "hgva_hgvsG", FALSE); printf("Include HGVS genomic (g.) terms in output
\n"); cartMakeCheckBox(cart, "hgva_hgvsCN", FALSE); printf("Include HGVS coding (c.) terms if applicable, otherwise noncoding (n.) terms, in output" "
\n"); cartMakeCheckBox(cart, "hgva_hgvsP", FALSE); printf("Include HGVS protein (p.) terms (if applicable) in output
\n"); cartMakeCheckBox(cart, "hgva_hgvsPAddParens", FALSE); printf("When including HGVS protein (p.) terms, add parentheses around changes to emphasize " "that they are predictions
\n"); cartMakeCheckBox(cart, "hgva_hgvsBreakDelIns", FALSE); printf("For variants that involve both a deletion and insertion, " "including multi-nucleotide variants, " "include the deleted sequence (e.g. show \"delAGinsTT\" instead of only \"delinsTT\")" "
\n"); puts("
"); printf("
", - refSeqSelected ? "none" : "block"); + hgvsOk ? "none" : "block"); printf("Select RefSeq Genes in the \"Select Genes\" section above " "in order to make options appear.\n"); puts("
"); puts("
"); endCollapsibleSection(); } boolean isHg19RegulatoryTrack(struct trackDb *tdb, void *filterData) /* For now, just look for a couple specific tracks by tableName. */ { //#*** NEED METADATA return (sameString("wgEncodeRegDnaseClusteredV3", tdb->table) || sameString("wgEncodeRegTfbsClusteredV3", tdb->table)); } @@ -1457,44 +1463,44 @@ 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, char *geneTrack) /* Use cart variables to configure gpVarGrator's HGVS output. */ { uint hgvsOutOptions = 0; -if (sameString(geneTrack, "refGene") || startsWith("ncbiRefSeq", geneTrack)) +if (canDoHgvsOut(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); } +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: