3514789be36e7dc886cd044528a54e3c72dc3648 angie Wed Aug 5 16:26:26 2015 -0700 Account for different regulatory track table names in hg19 vs hg38. Really we need .ra's for this. diff --git src/hg/hgVai/hgVai.c src/hg/hgVai/hgVai.c index e0c731e..3378f46 100644 --- src/hg/hgVai/hgVai.c +++ src/hg/hgVai/hgVai.c @@ -722,43 +722,55 @@ } void selectDbSnp(boolean gotSnp) /* Offer to include rsID (and other fields, or leave that for advanced output??) if available */ { if (!gotSnp) return; startCollapsibleSection("dbSnp", "Known variation", TRUE); cartMakeCheckBox(cart, "hgva_rsId", TRUE); printf("Include <A HREF='http://www.ncbi.nlm.nih.gov/projects/SNP/' TARGET=_BLANK>dbSNP</A> " "rs# ID if one exists<BR>\n"); puts("<BR>"); endCollapsibleSection(); } -boolean isRegulatoryTrack(struct trackDb *tdb, void *filterData) +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. */ +{ +//#*** NEED METADATA +return (sameString("wgEncodeRegDnaseClustered", tdb->table) || + sameString("wgEncodeRegTfbsClusteredV3", tdb->table)); +} + struct slRef *findRegulatoryTracks() /* Look for the very limited set of Regulation tracks that hgVai offers. */ { struct slRef *regTrackRefList = NULL; -tdbFilterGroupTrack(fullTrackList, fullGroupList, isRegulatoryTrack, +if (sameString(database, "hg19")) + tdbFilterGroupTrack(fullTrackList, fullGroupList, isHg19RegulatoryTrack, + NULL, NULL, ®TrackRefList); +else if (sameString(database, "hg38")) + tdbFilterGroupTrack(fullTrackList, fullGroupList, isHg38RegulatoryTrack, NULL, NULL, ®TrackRefList); return regTrackRefList; } void selectRegulatory() /* If trackRefList is non-NULL, make a section with a checkbox for each track, * labelled with longLabel, and optionally some filtering options. */ { struct slRef *trackRefList = findRegulatoryTracks(); if (trackRefList != NULL) { puts("<BR>"); printf("<div class='sectionLiteHeader'>Select Regulatory Annotations</div>\n"); printf("The annotations in this section provide predicted regulatory regions " "based on various experimental data. " @@ -1440,31 +1452,33 @@ { struct trackDb *tdb = tdbForTrack(database, trackName, &fullTrackList); if (tdb != NULL) { grator = hAnnoGratorFromTrackDb(assembly, tdb->table, tdb, chrom, ANNO_NO_LIMIT, NULL, agoNoConstraint); if (grator != NULL) { //#*** Need something more sophisticated but this works for our //#*** limited selection of extra tracks: if (asColumnFind(grator->streamer.asObj, "name") != NULL) column = "name"; addFiltersToGrator(grator, tdb); } description = tdb->longLabel; - isReg = includeReg && isRegulatoryTrack(tdb, NULL); + isReg = (includeReg && + ((sameString(database, "hg19") && isHg19RegulatoryTrack(tdb, NULL)) || + (sameString(database, "hg38") && isHg38RegulatoryTrack(tdb, NULL)))); } } haveReg |= isReg; updateGratorListAndVepExtra(grator, pGratorList, vepOut, subset, column, description, isReg); if (grator != NULL) hashAdd(gratorsByName, trackName, grator); } if (retHasRegulatory) *retHasRegulatory = haveReg; } void addFilterTracks(struct annoGrator **pGratorList, struct hash *gratorsByName, struct annoAssembly *assembly, char *chrom) // Add grators for filters (not added to vepOut): {