45eded6990186ff6cb0c8674c9265bfd6fc90390 braney Mon Nov 15 15:17:29 2021 -0800 some tweaks to allow bigMaf's that are children to be output as MAF in table browser diff --git src/hg/hgTables/maf.c src/hg/hgTables/maf.c index 42162d1..9fd8181 100644 --- src/hg/hgTables/maf.c +++ src/hg/hgTables/maf.c @@ -30,31 +30,31 @@ if (sameString(track->table, table)) { if (startsWithWord("maf",track->type) || startsWithWord("wigMaf",track->type) || startsWithWord("bigMaf",track->type)) return TRUE; } else { struct slRef *tdbRefList = trackDbListGetRefsToDescendantLeaves(track->subtracks); struct slRef *tdbRef; for (tdbRef = tdbRefList; tdbRef != NULL; tdbRef = tdbRef->next) { struct trackDb *childTdb = tdbRef->val; if(sameString(childTdb->table, table)) { - if (startsWithWord("maf",childTdb->type) || startsWithWord("wigMaf",childTdb->type)) + if (startsWithWord("maf",childTdb->type) || startsWithWord("wigMaf",childTdb->type) || startsWithWord("bigMaf",childTdb->type)) return TRUE; break; } } slFreeList(&tdbRefList); } return FALSE; } void doOutMaf(struct trackDb *track, char *table, struct sqlConnection *conn) /* Output regions as MAF. maf tables look bed-like enough for * cookedBedsOnRegions to handle intersections. */ { struct region *region = NULL, *regionList = getRegions(); struct lm *lm = lmInit(64*1024); @@ -90,31 +90,32 @@ char dbChrom[64]; safef(dbChrom, sizeof(dbChrom), "%s.%s", hubConnectSkipHubPrefix(database), bed->chrom); /* For MAF, we clip to viewing window (region) instead of showing * entire items that happen to overlap the window/region, which is * what we get from cookedBedList. */ if (bed->chromStart < region->start) bed->chromStart = region->start; if (bed->chromEnd > region->end) bed->chromEnd = region->end; if (bed->chromStart >= bed->chromEnd) continue; if (ct == NULL) { if (isBigBed(database, table, curTrack, ctLookupName)) { - char *fileName = trackDbSetting(track, "bigDataUrl"); + struct trackDb *subTdb = hashFindVal(fullTableToTdbHash, table); + char *fileName = trackDbSetting(subTdb, "bigDataUrl"); struct bbiFile *bbi = bigBedFileOpen(fileName); mafList = bigMafLoadInRegion(bbi, bed->chrom, bed->chromStart, bed->chromEnd); } else if (mafFile != NULL) mafList = mafLoadInRegion2(conn, conn, table, bed->chrom, bed->chromStart, bed->chromEnd, mafFile); else mafList = mafLoadInRegion(conn, table, bed->chrom, bed->chromStart, bed->chromEnd); } else mafList = mafLoadInRegion2(ctConn, ctConn2, ct->dbTableName, bed->chrom, bed->chromStart, bed->chromEnd, mafFile); for (maf = mafList; maf != NULL; maf = maf->next) {