61a6db3160c99a8fef6004db5c5c6402c07255a5 markd Tue Mar 14 16:31:59 2017 -0700 fixed transmap preserving hgsqi when linking to another genome and fixed getting transmap custom display with V4 track names diff --git src/hg/hgc/transMapClick.c src/hg/hgc/transMapClick.c index e2b4f9c..9ca6166 100644 --- src/hg/hgc/transMapClick.c +++ src/hg/hgc/transMapClick.c @@ -308,33 +308,33 @@ { printf("<TABLE class=\"transMap\">\n"); printf("<CAPTION>Source Alignment</CAPTION>\n"); printf("<TBODY>\n"); // organism/assembly printf("<TR CLASS=\"transMapLeft\"><TD>Organism<TD>%s (%s)</TR>\n", bag->meta->commonName, bag->meta->scientificName); printf("<TR CLASS=\"transMapLeft\"><TD>Genome<TD>%s</TR>\n", bag->meta->srcDb); printf("<TR CLASS=\"transMapLeft\"><TD>Source<TD>%s</TR>\n", formatGeneSrcSet(bag->srcSet)); // position printf("<TR CLASS=\"transMapLeft\"><TD>Position\n"); printf("<TD CLASS=\"transMapNoWrap\">"); if (bag->srcDbIsActive) - printf("<A HREF=\"%s?db=%s&position=%s:%d-%d\" target=_blank>" + printf("<A HREF=\"%s&db=%s&position=%s:%d-%d\" target=_blank>" "%s:%d-%d</A>", - hgTracksName(), bag->meta->srcDb, + hgTracksPathAndSettings(), bag->meta->srcDb, bag->meta->srcChrom, bag->meta->srcChromStart, bag->meta->srcChromEnd, bag->meta->srcChrom, bag->meta->srcChromStart, bag->meta->srcChromEnd); else printf("%s:%d-%d", bag->meta->srcChrom, bag->meta->srcChromStart, bag->meta->srcChromEnd); printf("</TR>\n"); // % identity and % aligned, values stored as 1000*fraction ident printf("<TR CLASS=\"transMapLeft\"><TD>Identity<TD>%0.1f%%</TR>\n", bag->meta->srcScore/10.0); printf("<TR CLASS=\"transMapLeft\"><TD>Aligned<TD>%0.1f%%</TR>\n", bag->meta->srcAligned/10.0); // gene and CDS printf("<TR CLASS=\"transMapLeft\"><TD>Gene<TD>%s</TR>\n", strOrNbsp(bag->meta->geneName)); @@ -350,30 +350,34 @@ strOrNbsp(bag->meta->oCDS)); printf("</TBODY></TABLE>\n"); } static void displayAligns(struct trackDb *tdb, struct transMapBag *bag) /* display cDNA alignments */ { int start = cartInt(cart, "o"); printf("<H3>mRNA/Genomic Alignments</H3>"); printAlignmentsSimple(bag->psl, start, "hgcTransMapCdnaAli", tdb->table, bag->psl->qName); } void transMapClickHandler(struct trackDb *tdb, char *mappedId) /* Handle click on a transMap tracks */ { +if (tdb == NULL) + errAbort("transMapClickHandler called without trackDb"); +if (mappedId == NULL) + errAbort("transMapClickHandler called without mappedId"); struct transMapBag *bag = (trackDbSetting(tdb, "bigDataUrl") == NULL) ? transMapBagLoadDb(tdb, mappedId) : transMapBagLoadBig(tdb, mappedId); genericHeader(tdb, mappedId); printf("<TABLE class=\"transMapLayout\">\n"); 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); @@ -394,30 +398,34 @@ 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 */ { +if (tdb == NULL) + errAbort("transMapShowCdnaAli called without trackDb"); +if (mappedId == NULL) + errAbort("transMapShowCdnaAli called without 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;