6da76acba7f617920cc7eaa161b7d987362be78f markd Wed Feb 14 11:29:46 2018 -0800 hide patent GenBank mRNA sequences by default based on accession prefix diff --git src/hg/hgTracks/pslTrack.c src/hg/hgTracks/pslTrack.c index 91c11c6..43892cf 100644 --- src/hg/hgTracks/pslTrack.c +++ src/hg/hgTracks/pslTrack.c @@ -221,31 +221,51 @@ { newList = slCat(newList, oldList); } } *pLfList = newList; tg->limitedVisSet = FALSE; /* Need to recalculate this after filtering. */ /* Free up hashes, etc. */ for (fil = mud->filterList; fil != NULL; fil = fil->next) { hashFree(&fil->hash); } hFreeConn(&conn); } +static boolean shouldFilterGenbankPatentSequences(struct track *tg) +/* is this a genbank track with patent sequence filtering enabled */ +{ +char name[256]; +safef(name, sizeof(name), "%s.%s", tg->tdb->track, SHOW_PATENT_SEQUENCES_SUFFIX); +return (sameString(tg->tdb->track, "mrna")|| sameString(tg->tdb->track, "intronEst")) + && !cartUsualBoolean(cart, name, FALSE); +} +static void filterGenbankPatentSequences(struct track *tg, struct linkedFeatures **pLfList) +/* remove genbank patent sequences */ +{ +struct linkedFeatures *lf, *newLf = NULL; +while ((lf = slPopHead(pLfList)) != NULL) + { + if (!isGenbenkPatentAccession(lf->name)) + slAddHead(&newLf, lf); + } +slReverse(&newLf); +*pLfList = newLf; +} struct simpleFeature *sfFromPslX(struct psl *psl,int grayIx, int sizeMul) { struct simpleFeature *sf = NULL, *sfList = NULL; unsigned *starts = psl->tStarts; unsigned *qStarts = psl->qStarts; unsigned *sizes = psl->blockSizes; int i, blockCount = psl->blockCount; boolean rcTarget = (psl->strand[1] == '-'); for (i=0; istart = sf->end = starts[i]; sf->end += sizes[i]*sizeMul; @@ -466,30 +486,32 @@ { if (isSelected(lf->name)) slAddHead(&lfList, lf); } else #endif /* GBROWSE */ slAddHead(&lfList, lf); // Don't free psl - may be used by baseColor code (and freeing is slow) } slReverse(&lfList); if (tg->visibility != tvDense) slSort(&lfList, linkedFeaturesCmpStart); if (tg->extraUiData) filterMrna(tg, &lfList); +if (shouldFilterGenbankPatentSequences(tg)) + filterGenbankPatentSequences(tg, &lfList); tg->items = lfList; sqlFreeResult(&sr); } static void lfFromPslsInRange(struct track *tg, int start, int end, char *chromName, boolean isXeno, boolean nameGetsPos, int sizeMul) /* Return linked features from range of table. */ { struct sqlConnection *conn = hAllocConn(database); connectedLfFromPslsInRange(conn, tg, start, end, chromName, isXeno, nameGetsPos, sizeMul); hFreeConn(&conn); } static void loadXenoPslWithPos(struct track *tg)