bdb483fc8dba7e3fb318491cc57258e831904ef3 braney Fri Nov 13 10:30:03 2015 -0800 more work on bigChain diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index 4d76441..c72ff6f 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -3129,31 +3129,41 @@ int chainWinSize; double subSetScore = 0.0; int qs, qe; boolean nullSubset = FALSE; if (! sameWord(otherDb, "seq")) { otherOrg = hOrganism(otherDb); } if (otherOrg == NULL) { /* use first word of chain label (count on org name as first word) */ otherOrg = firstWordInLine(cloneString(tdb->shortLabel)); } +if (isHubTrack(tdb->track)) + { + char *fileName = bbiNameFromSettingOrTable(tdb, conn, tdb->table); + char *linkFileName = trackDbSetting(tdb, "linkDataUrl"); + chain = chainLoadIdRangeHub(fileName, linkFileName, seqName, winStart, winEnd, atoi(item)); + } +else + { chain = chainLoadIdRange(database, tdb->table, seqName, winStart, winEnd, atoi(item)); + } + chainSubsetOnT(chain, winStart, winEnd, &subChain, &toFree); if (subChain == NULL) nullSubset = TRUE; else if (hDbIsActive(otherDb) && subChain != chain) { char *linearGap = trackDbSettingOrDefault(tdb, "chainLinearGap", "loose"); struct gapCalc *gapCalc = gapCalcFromFile(linearGap); struct axtScoreScheme *scoreScheme = axtScoreSchemeDefault(); int qStart = subChain->qStart; int qEnd = subChain->qEnd ; struct dnaSeq *tSeq = hDnaFromSeq(database, subChain->tName, subChain->tStart, subChain->tEnd, dnaLower); struct dnaSeq *qSeq = NULL; char *matrix = trackDbSetting(tdb, "matrix"); if (matrix != NULL) @@ -3940,31 +3950,31 @@ genericBigPslClick(conn, tdb, item, start, end); } else if (sameString(type, "psl")) { char *subType = "."; if (wordCount > 1) subType = words[1]; genericPslClick(conn, tdb, item, start, subType); } else if (sameString(type, "netAlign")) { if (wordCount < 3) errAbort("Missing field in netAlign track type field"); genericNetClick(conn, tdb, item, start, words[1], words[2]); } - else if (sameString(type, "chain")) + else if (sameString(type, "chain") || sameString(type, "bigChain") ) { if (wordCount < 2) errAbort("Missing field in chain track type field"); genericChainClick(conn, tdb, item, start, words[1]); } else if (sameString(type, "maf")) { genericMafClick(conn, tdb, item, start); } else if (sameString(type, "wigMaf") || sameString(type, "bigMaf")) { genericMafClick(conn, tdb, item, start); } else if (startsWith("wigMafProt", type)) {