eccc76b2b149dffe8004d6c2a01e27e474f9f0d7
chinhli
  Mon Jun 6 16:21:21 2011 -0700
Inital NumtS track support for hg19 and mm9
diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index 863947a..07240bc 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -23496,30 +23496,115 @@
                bed->chrom, bed->chromStart+1, bed->chromEnd);
 
         printf("%-20s %-10s %9d  %9d    %5d    %5d    %1s",
             bed->name, bed->chrom, bed->chromStart+1, bed->chromEnd,
             (bed->chromEnd - bed->chromStart),bed->score, bed->strand);
 
         printf("</TT></PRE>");
         }
 
  printf("<BR>");
  printTrackHtml(tdb);
  hFreeConn(&conn);
 }
 
 
+void doNumtSHg19Mm9(struct trackDb *tdb, char *itemName)
+/* Put up page for NumtS. */
+{
+char *table = tdb->table;
+struct sqlConnection *conn = hAllocConn(database);
+struct bed *bed;
+char query[512];
+struct sqlResult *sr;
+char **row;
+boolean firstTime = TRUE;
+int start = cartInt(cart, "o");
+int num = 6;
+/* message strings */
+char clickMsg[128];
+char *openMsg1 = "Click 'browser' link below to open Genome Browser at genomic position where";
+char *openMsg2 = "maps\n";
+char *openMsgM = "Click 'browser' link below to open Genome Browser at mitochondrial position where";
+
+genericHeader(tdb, itemName);
+genericBedClick(conn, tdb, itemName, start, num);
+
+safef(query, sizeof(query), "select chrom, chromStart, chromEnd, name, score, strand from %s where name='%s'",
+      table, itemName);
+sr = sqlGetResult(conn, query);
+int sSize=0;
+while ((row = sqlNextRow(sr)) != NULL)
+    {
+        bed = bedLoad6(row);
+        sSize = bed->chromEnd - bed->chromStart;
+        /* printf("sSize is: %5d <BR>", sSize); */
+    }
+
+if (sameString("numtS", table))
+    {
+    safef(query, sizeof(query),
+        "select  chrom, chromStart, chromEnd, name, score, strand "
+        "from numtSMitochondrion where name = '%s'  ", itemName);
+    strcpy(clickMsg, openMsgM);
+    }
+else if (sameString("numtSAssembled", table))
+    {
+    safef(query, sizeof(query),
+        "select  chrom, chromStart, chromEnd, name, score, strand "
+        "from numtSMitochondrionChrPlacement where name = '%s' ", itemName);
+    strcpy(clickMsg, openMsgM);
+    }
+else if (sameString("numtSMitochondrion", table))
+    {
+    safef(query, sizeof(query),
+        "select  chrom, chromStart, chromEnd, name, score, strand "
+        "from numtS where (name = '%s'", itemName);
+    strcpy(clickMsg, openMsg1);
+    }
+    sr = sqlGetResult(conn, query);
+    firstTime = TRUE;
+
+    while ((row = sqlNextRow(sr)) != NULL)
+        {
+        printf("<PRE><TT>");
+        if (firstTime)
+            {
+            firstTime = FALSE;
+        printf("<BR><H3>%s item '%s' %s</H3><BR>", clickMsg, itemName, openMsg2);
+
+            printf("BROWSER | NAME                CHROMOSOME      START        END     SIZE    SCORE  STRAND \n");
+            printf("--------|--------------------------------------------------------------------------------------------\n");
+
+            }
+        bed = bedLoad6(row);
+        printf("<A HREF=\"%s&db=%s&position=%s%%3A%d-%d\">browser</A> | ",
+               hgTracksPathAndSettings(), database,
+               bed->chrom, bed->chromStart+1, bed->chromEnd);
+
+        printf("%-20s %-10s %9d  %9d    %5d    %5d    %1s",
+            bed->name, bed->chrom, bed->chromStart+1, bed->chromEnd,
+            (bed->chromEnd - bed->chromStart),bed->score, bed->strand);
+
+        printf("</TT></PRE>");
+        }
+
+ printf("<BR>");
+ printTrackHtml(tdb);
+ hFreeConn(&conn);
+}
+
 
 void doMiddle()
 /* Generate body of HTML. */
 {
 char *track = cartString(cart, "g");
 char *item = cartOptionalString(cart, "i");
 char *parentWigMaf = cartOptionalString(cart, "parentWigMaf");
 struct trackDb *tdb = NULL;
 
 
 if (hIsGisaidServer())
     {
     validateGisaidUser(cart);
     }
 
@@ -24696,37 +24781,43 @@
     {
     doGwasCatalog(tdb, item);
     }
 else if (sameString("par", table))
     {
     doParDetails(tdb, item);
     }
 else if (sameString("t2g", table))
     {
     doT2gDetails(tdb, item);
     }
 else if (tdb != NULL && startsWith("bedDetail", tdb->type))
     {
     doBedDetail(tdb, NULL, item);
     }
-else if (startsWith("numtS", table))
+else if (startsWith("numtS", table) && sameString("hg18", database))
        //  && (!sameString("numtSAssembled", table)))
     {
     //genericHeader(tdb, item);
     //genericClickHandler(tdb, item, NULL);
     doNumtS(tdb, item);
     }
+else if (startsWith("numtS", table) && 
+     (sameString("hg19", database) || sameString("mm9", database)))
+    {
+    doNumtSHg19Mm9(tdb, item);
+    }
+
 else if (tdb != NULL)
     {
     genericClickHandler(tdb, item, NULL);
     }
 else
     {
     cartWebStart(cart, database, "%s", track);
     printf("Sorry, clicking there doesn't do anything yet (%s).", track);
     }
 /* End of 1000+ line dispatch on table involving 100+ if/elses. */
 
 if (didCartHtmlStart)
     cartHtmlEnd();
 }