30bf4401ae2d6c5a6b2c9df0cb0885460710d4eb markd Mon Jan 23 19:25:03 2017 -0800 fix link to transcript alignment viewer for bigTransMap tracks diff --git src/hg/hgc/transMapClick.c src/hg/hgc/transMapClick.c index 77c4e7f..fdff8a3 100644 --- src/hg/hgc/transMapClick.c +++ src/hg/hgc/transMapClick.c @@ -293,50 +293,62 @@ printf("<TR><TD>\n"); displayMapped(bag); printf("<TD>\n"); displaySource(bag); printf("<TD> \n"); printf("</TR>\n"); printf("<TR><TD COLSPAN=3>\n"); displayAligns(tdb, bag); printf("</TR>\n"); printf("</TABLE>\n"); printTrackHtml(tdb); transMapBagFree(&bag); } -static struct dnaSeq *getCdnaSeq(struct trackDb *tdb, char *name) +static struct dnaSeq *getCdnaSeqDb(struct trackDb *tdb, char *name) /* look up sequence name in seq and extFile tables specified * for base coloring. */ { /* FIXME: this is really a rip off of some of the code in * hgTracks/cds.c; really need to centralize it somewhere */ char *spec = trackDbRequiredSetting(tdb, BASE_COLOR_USE_SEQUENCE); char *specCopy = cloneString(spec); // value is: extFile seqTbl extFileTbl char *words[3]; int nwords = chopByWhite(specCopy, words, ArraySize(words)); if ((nwords != ArraySize(words)) || !sameString(words[0], "extFile")) errAbort("invalid %s track setting: %s", BASE_COLOR_USE_SEQUENCE, spec); struct dnaSeq *seq = hDnaSeqMustGet(NULL, name, words[1], words[2]); freeMem(specCopy); return seq; } void transMapShowCdnaAli(struct trackDb *tdb, char *mappedId) /* Show alignment for mappedId, mostly ripped off from htcCdnaAli */ { -struct transMapBag *bag = transMapBagLoadDb(tdb, mappedId); +struct transMapBag *bag = NULL; +struct dnaSeq *seq = NULL; +if (trackDbSetting(tdb, "bigDataUrl") == NULL) + { + bag = transMapBagLoadDb(tdb, mappedId); + seq = getCdnaSeqDb(tdb, transMapIdToSeqId(mappedId)); + } +else + { + bag = transMapBagLoadBig(tdb, mappedId); + seq = newDnaSeq(cloneString(bag->meta->oSequence), strlen(bag->meta->oSequence), + mappedId); + } + struct genbankCds cds; if (isEmpty(bag->meta->oCDS) || !genbankCdsParse(bag->meta->oCDS, &cds)) ZeroVar(&cds); /* can't get or parse CDS, so zero it */ -struct dnaSeq *seq = getCdnaSeq(tdb, transMapIdToSeqId(mappedId)); writeFramesetType(); puts("<HTML>"); printf("<HEAD>\n<TITLE>%s vs Genomic</TITLE>\n</HEAD>\n\n", mappedId); showSomeAlignment(bag->psl, seq, gftDna, 0, seq->size, NULL, cds.start, cds.end); dnaSeqFree(&seq); transMapBagFree(&bag); }