be693595e590bce1d7d9b5e0d34451047c3170f2 chmalee Thu Jul 30 15:52:52 2020 -0700 Add 2 new color options for trios, color by predicted functional affect and de novo child variants, refs #25983 diff --git src/hg/lib/vcfUi.c src/hg/lib/vcfUi.c index 7073178..9d63153 100644 --- src/hg/lib/vcfUi.c +++ src/hg/lib/vcfUi.c @@ -598,35 +598,52 @@ cgiMakeCheckBox(defaultLabel, isDefaultChecked); printf("VCF file sample names "); cgiMakeCheckBox(aliasLabel, isAliasChecked); printf("Family Labels"); printf("<br>"); } if (trackDbSetting(tdb,VCF_PHASED_PARENTS_SAMPLE_SETTING)) { printf("<b>Hide parent sample(s)"); char hideVarName[1024]; safef(hideVarName, sizeof(hideVarName), "%s.%s", name, VCF_PHASED_HIDE_OTHER_VAR); boolean hidingOtherSamples = cartUsualBooleanClosestToHome(cart, tdb, parentLevel, VCF_PHASED_HIDE_OTHER_VAR, FALSE); cgiMakeCheckBox(hideVarName, hidingOtherSamples); } printf("<br>"); -printf("Highlight child variants that are inconsistent with phasing"); -char shadeByDiffs[1024]; -safef(shadeByDiffs, sizeof(shadeByDiffs), "%s.%s", name, VCF_PHASED_HIGHLIGHT_INCONSISTENT); -boolean highlightChildDiffs = cartUsualBooleanClosestToHome(cart, tdb, FALSE, VCF_PHASED_HIGHLIGHT_INCONSISTENT, FALSE); -cgiMakeCheckBox(shadeByDiffs, highlightChildDiffs); +printf("Allele coloring scheme:"); +printf("<br>"); +char *colorBy = cartOrTdbString(cart, tdb, VCF_PHASED_COLORBY_VAR, VCF_PHASED_COLORBY_DEFAULT); +char varName[1024]; +safef(varName, sizeof(varName), "%s.%s", name, VCF_PHASED_COLORBY_VAR); +cgiMakeRadioButton(varName, VCF_PHASED_COLORBY_DEFAULT, sameString(colorBy, VCF_PHASED_COLORBY_DEFAULT)); +printf("No color<br>"); +char *geneTrack = cartOrTdbString(cart, tdb, "geneTrack", NULL); +if (isNotEmpty(geneTrack)) + { + cgiMakeRadioButton(varName, VCF_PHASED_COLORBY_FUNCTION, sameString(colorBy, VCF_PHASED_COLORBY_FUNCTION)); + printf("predicted functional affect: "); + printf("reference alleles invisible, alternate alleles in " + "<span style='color:red'>red</span> for non-synonymous, " + "<span style='color:green'>green</span> for synonymous, " + "<span style='color:blue'>blue</span> for UTR/noncoding, " + "black otherwise<BR>\n"); + } +cgiMakeRadioButton(varName, VCF_PHASED_COLORBY_DE_NOVO, sameString(colorBy, VCF_PHASED_COLORBY_DE_NOVO)); +printf("predicted de novo child mutations <span style='color:red'>red</span><br>"); +cgiMakeRadioButton(varName, VCF_PHASED_COLORBY_MENDEL_DIFF, sameString(colorBy, VCF_PHASED_COLORBY_MENDEL_DIFF)); +printf("child variants that are inconsistent with phasing <span style='color:red'>red</span>"); char *infoText = "Check this box to color child variants red if they do not agree with the implied " "parental transmitted allele at this location. This configuration is only available when parent " "haplotypes are displayed."; printInfoIcon(infoText); } void vcfCfgUi(struct cart *cart, struct trackDb *tdb, char *name, char *title, boolean boxed) /* VCF: Variant Call Format. redmine #3710 */ { boxed = cfgBeginBoxAndTitle(tdb, boxed, title); printf("<TABLE%s><TR><TD>", boxed ? " width='100%'" : ""); struct vcfFile *vcff = vcfHopefullyOpenHeader(cart, tdb); if (vcff != NULL) { boolean parentLevel = isNameAtParentLevel(tdb, name);