791097ea7589f6fadcf825c5c3a8934054917a28 angie Thu Jul 9 14:38:12 2020 -0700 VCF haplotype display: trackDb setting geneTrack adds option to color by function (red for non-synon, green for synon, blue for UTR/NC). refs #25870 diff --git src/hg/hgTracks/variation.c src/hg/hgTracks/variation.c index e787581..3c2b336 100644 --- src/hg/hgTracks/variation.c +++ src/hg/hgTracks/variation.c @@ -2535,32 +2535,33 @@ tg->itemColor = delMccarrollItemColor; tg->itemNameColor = delMccarrollItemColor; } void delHindsMethods(struct track *tg) { tg->itemColor = delHindsItemColor; tg->itemNameColor = delHindsItemColor; } // Functional impact coloring scheme with lf->filterColor values #define bigDbSnpColorCodingChange MG_RED #define bigDbSnpColorSyn MG_GREEN #define bigDbSnpColorUtrNc MG_BLUE -static Color lfColorFromSoTerm(enum soTerm term) -/* Assign a Color according to soTerm. */ +Color colorFromSoTerm(enum soTerm term) +/* Assign a Color according to soTerm: red for non-synonymous, green for synonymous, blue for + * UTR/noncoding, black otherwise. */ { Color color = MG_BLACK; switch (term) { case frameshift_variant: case frameshift: case initiator_codon_variant: case stop_gained: case stop_lost: case splice_acceptor_variant: case splice_donor_variant: case inframe_indel: case inframe_insertion: case inframe_deletion: case missense_variant: @@ -2804,31 +2805,31 @@ bigBedIntervalToRow(bb, chromName, startBuf, endBuf, bedRow, ArraySize(bedRow)); if (bigBedFilterInterval(bedRow, filters)) { struct bigDbSnp *bds = bigDbSnpLoad(bedRow); double minMaf = cartUsualDoubleClosestToHome(cart, tdb, FALSE, "minMaf", 0.0); if (! filterMaf(bds, freqSourceIx, minMaf)) return NULL; AllocVar(lf); lf->name = cloneString(bds->name); AllocVar(lf->components); lf->start = lf->components->start = bds->chromStart; lf->tallStart = lf->start + bds->shiftBases; lf->tallEnd = lf ->end = lf->components->end = bds->chromEnd; lf->label = bdsLabel(tdb, bds); lf->mouseOver = bdsMouseOver(bds); - lf->filterColor = lfColorFromSoTerm(bds->maxFuncImpact); + lf->filterColor = colorFromSoTerm(bds->maxFuncImpact); lf->original = bds; // MNVs in dbSNP are usually linked SNVs; if so, use one sf component for each SNV. if (bds->class == bigDbSnpMnv && bds->chromEnd - bds->chromStart > 2) { paranoidCheckMnvLengths(bds); int len = bds->chromEnd - bds->chromStart; struct simpleFeature *sf = lf->components, *sfList = NULL; int i; for (i = 0; i < len; i++) { if (alleleBasesMatch(bds, i)) { // If in a block, end the block. if (sf != NULL) {