205d43b94283eb56c77a64f5e86e2a77295ab750 angie Mon Mar 12 10:38:40 2018 -0700 hgVai: Add options for HGVS output from Gencode Basic/Comp tracks (not just RefSeq). Use variantProjector instead of gpFx to do predictions for genePreds by converting to PSL+CDS. refs #21142 The use of variantProjector resulted in significant changes to hg/lib/tests results: pgSnpKgDbToGpFx.txt: right-shifting, 'Z' -> '*' vepIndelTrimOut.txt: * right-shifting * per-allele consequences even for variants where allele doesn't affect consequence e.g. intron... this is a drawback, would be good to filter these after the fact to reduce to a single consequence * right-shifting intron -> splice_region for gene LSP1 * right-shifting coding_sequence_variant into just 3_prime_UTR_variant for ORJ81 * recognition of genome missing a base for EI24 (so insC restores frame and restores missing codon from genome-compensating transcripts) * exon numbers changing due to not counting too-short introns diff --git src/hg/hgVai/hgVai.c src/hg/hgVai/hgVai.c index 4d4f90b..77e41c2 100644 --- src/hg/hgVai/hgVai.c +++ src/hg/hgVai/hgVai.c @@ -990,31 +990,33 @@ "<A HREF=" REFSEQ_STATUS_DOC_URL " " "TARGET=_BLANK>RefSeq status</A> of each transcript.<BR>"); puts("</div>"); } printf("<div class=\"noTxStatus\" style=\"display: %s;\">", somethingIsVisible ? "none" : "block"); puts("No transcript status data are available for the selected gene track."); puts("</div>"); puts("<BR>"); 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); +return (sameString(geneTrack, "refGene") || startsWith("ncbiRefSeq", geneTrack) || + startsWith("wgEncodeGencodeBasic", geneTrack) || + startsWith("wgEncodeGencodeComp", geneTrack)); } static void selectHgvsOut(char *geneTrack) /* Offer HGVS output choices if RefSeq Genes are selected */ { startCollapsibleSection("hgvsOut", "HGVS variant nomenclature", TRUE); printf("The <a href='http://www.hgvs.org/' target=_blank>Human Genome Variation Society (HGVS)</a> " "has established a " "<a href='http://varnomen.hgvs.org/' target=_blank>sequence variant nomenclature</a>, " "an international standard used to report variation in " "genomic, transcript and protein sequences.<br>\n"); boolean hgvsOk = canDoHgvsOut(geneTrack); printf("<div id=\"hgvsOptions\" style=\"display: %s;\">", hgvsOk ? "block" : "none"); cartMakeCheckBox(cart, "hgva_hgvsG", FALSE); printf("Include HGVS genomic (g.) terms in output<br>\n"); @@ -1022,32 +1024,32 @@ printf("Include HGVS coding (c.) terms if applicable, otherwise noncoding (n.) terms, in output" "<br>\n"); cartMakeCheckBox(cart, "hgva_hgvsP", FALSE); printf("Include HGVS protein (p.) terms (if applicable) in output<br>\n"); cartMakeCheckBox(cart, "hgva_hgvsPAddParens", FALSE); printf("When including HGVS protein (p.) terms, add parentheses around changes to emphasize " "that they are predictions<br>\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\")" "<br>\n"); puts("</div>"); printf("<div id=\"noHgvs\" style=\"display: %s;\">", hgvsOk ? "none" : "block"); -printf("Select RefSeq Genes in the \"Select Genes\" section above " - "in order to make options appear.\n"); +printf("Select RefSeq Genes or the latest official GENCODE release " + "in the \"Select Genes\" section above in order to make options appear.\n"); puts("</div>"); puts("<br>"); 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)); } boolean isHg38RegulatoryTrack(struct trackDb *tdb, void *filterData) /* For now, just look for a couple specific tracks by tableName. */