5f9dc35a87a2125dd115389b7d3b7c4d8709f740 chinhli Tue Nov 13 15:45:12 2012 -0800 Pull doNumtS out from hgc.c and put it in numtsClick.c, in preparation for redmine #8533 NumtS tracks for 10 more organism. diff --git src/hg/hgc/numtsClick.c src/hg/hgc/numtsClick.c new file mode 100644 index 0000000..fe84d1f --- /dev/null +++ src/hg/hgc/numtsClick.c @@ -0,0 +1,138 @@ +/* numtsClick - hgc code to display Numts track item detail page */ +#include "common.h" +#include "hgc.h" +#include "numtsClick.h" + +void doNumtS(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; +char itemNameDash[64]; /* itenName appended with a "_" */ +char itemNameTrimmed[64]; /* itemName trimed at last "_" */ +int sDiff = 30; /* acceptable difference of genomics size */ +/* message strings */ +char *clickMsg = NULL; +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); + +safecpy(itemNameDash, sizeof(itemNameDash),itemName); +safecat(itemNameDash,64,"_"); +safecpy(itemNameTrimmed, sizeof(itemNameTrimmed),itemName); +chopSuffixAt(itemNameTrimmed, '_'); + +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
", sSize); */ + } + + +if (sameString("hg18", database)) +{ + if (sameString("numtS", table)) + { + safef(query, sizeof(query), + "select chrom, chromStart, chromEnd, name, score, strand " + "from numtSMitochondrionChrPlacement where ( " + "(name = '%s') OR (((name REGEXP '^%s') OR (name='%s')) AND " + " (ABS((chromEnd - chromStart)-%d) <= %d ))) ", + itemName, itemNameDash, itemNameTrimmed, sSize, sDiff); + clickMsg = openMsgM; + } + else if (sameString("numtSAssembled", table)) + { + safef(query, sizeof(query), + "select chrom, chromStart, chromEnd, name, score, strand " + "from numtSMitochondrionChrPlacement where ( " + "(name = '%s') OR (((name REGEXP '^%s') OR (name='%s')) AND " + " (ABS((chromEnd - chromStart)-%d) <= %d ))) ", + itemName, itemNameDash, itemNameTrimmed, sSize, sDiff); + clickMsg = openMsgM; + } + else if (sameString("numtSMitochondrion", table)) + { + safef(query, sizeof(query), + "select chrom, chromStart, chromEnd, name, score, strand " + "from numtS where ( " + "(name = '%s') OR (((name REGEXP '^%s') OR (name='%s')) AND " + " (ABS((chromEnd - chromStart)-%d) <= %d ))) ", + itemName, itemNameDash, itemNameTrimmed, sSize, sDiff); + clickMsg = openMsg1; + } + else if (sameString("numtSMitochondrionChrPlacement", table)) + { + safef(query, sizeof(query), + "select chrom, chromStart, chromEnd, name, score, strand " + "from numtS where ( " + "(name = '%s') OR (((name REGEXP '^%s') OR (name='%s')) AND " + " (ABS((chromEnd - chromStart)-%d) <= %d ))) ", + itemName, itemNameDash, itemNameTrimmed, sSize, sDiff); + clickMsg = openMsg1; + } +} else { + if (sameString("numtS", table) || sameString("numtSAssembled", table)) + { + safef(query, sizeof(query), + "select chrom, chromStart, chromEnd, name, score, strand " + "from numtSMitochondrion where name = '%s' ", itemName); + clickMsg = openMsgM; + } + else if (sameString("numtSMitochondrion", table)) + { + safef(query, sizeof(query), + "select chrom, chromStart, chromEnd, name, score, strand " + "from numtS where name = '%s'", itemName); + clickMsg = openMsg1; + } +} + + sr = sqlGetResult(conn, query); + firstTime = TRUE; + + while ((row = sqlNextRow(sr)) != NULL) + { + printf("
");
+        if (firstTime)
+            {
+            firstTime = FALSE;
+        printf("

%s item '%s' %s


", clickMsg, itemName, openMsg2); + + printf("BROWSER | NAME CHROMOSOME START END SIZE SCORE STRAND \n"); + printf("--------|--------------------------------------------------------------------------------------------\n"); + + } + bed = bedLoad6(row); + printf("browser | ", + 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("
"); + } + + printf("
"); + printTrackHtml(tdb); + hFreeConn(&conn); +} +