7f35730e888eb158e0208a49edd6c1fc24fc380f
hiram
  Thu Sep 2 11:13:49 2010 -0700
first pass at a handler for the altSequence hg19Patch2 PSL track
diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index 9ccfaa6..2cd29cb 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -6689,7 +6689,7 @@
     wholePsl = pslLoad(row+hasBin);
     sqlFreeResult(&sr);
 
-    if (startsWith("ucscRetroAli", aliTable) || startsWith("retroMrnaAli", aliTable) || sameString("pseudoMrna", aliTable))
+    if (startsWith("ucscRetroAli", aliTable) || startsWith("retroMrnaAli", aliTable) || sameString("pseudoMrna", aliTable) || sameString("altSeqLiftOverPsl", aliTable))
 	{
         rnaSeq = NULL;
 	char *trackName = hGetTrackForTable(database, aliTable);
@@ -7856,6 +7856,53 @@
 printTrackHtml(tdb);
 }
 
+void doPslAltSeq(struct trackDb *tdb, char *item)
+/* Fairly generic PSL handler -- print out some more details about the
+ * alignment. */
+{
+int start = cartInt(cart, "o");
+int total = 0, i = 0;
+struct psl *pslList = NULL;
+struct sqlConnection *conn = hAllocConn(database);
+char *otherDb = trackDbSetting(tdb, "otherDb");
+int altSize = hChromSize(otherDb, item);
+
+genericHeader(tdb, item);
+printCustomUrl(tdb, item, TRUE);
+
+puts("<P>");
+//puts("<B>Alignment Summary:</B><BR>\n");
+char strBuf[64];
+sprintLongWithCommas(strBuf, altSize);
+printf("<B>Alignment Summary: '%s' %s</B><BR>\n", item, strBuf);
+pslList = getAlignments(conn, tdb->table, item);
+printAlignments(pslList, start, "htcCdnaAliInWindow", tdb->table, item);
+
+puts("<P>");
+total = 0;
+for (i=0;  i < pslList -> blockCount;  i++)
+    {
+    total += pslList->blockSizes[i];
+    }
+printf("%d block(s) covering %d bases<BR>\n"
+       "%d matching bases<BR>\n"
+       "%d mismatching bases<BR>\n"
+       "%d N bases<BR>\n"
+       "%d bases inserted in %s<BR>\n"
+       "%d bases inserted in %s<BR>\n"
+       "score: %d<BR>\n",
+       pslList->blockCount, total,
+       pslList->match,
+       pslList->misMatch,
+       pslList->nCount,
+       pslList->tBaseInsert, hOrganism(database),
+       pslList->qBaseInsert, item,
+       pslScore(pslList));
+
+printTrackHtml(tdb);
+hFreeConn(&conn);
+}
+
 void doPslDetailed(struct trackDb *tdb, char *item)
 /* Fairly generic PSL handler -- print out some more details about the
  * alignment. */
@@ -22720,6 +22767,10 @@
     {
     blastProtein(tdb, item);
     }
+else if (startsWith("altSeqLiftOverPsl", table))
+    {
+    doPslAltSeq(tdb, item);
+    }
 else if (sameWord(table, "chimpSimpleDiff"))
     {
     doSimpleDiff(tdb, "Chimp");