6172ee24c819e779de63549b5a0db2f0742465f5
chinhli
Tue Jan 29 16:12:24 2013 -0800
Track #8533 NumtS tracks: Add logic to numtsClick.c to handle the shortened name in 'numtSMitochondrion' table. For example, old NumtS data for or hg18, hg19 and mm9 have name like Mms_NumtS_096_b1, and all new species like dog and cow now have a shorten name like 'SS_NumtS_246')
diff --git src/hg/hgc/numtsClick.c src/hg/hgc/numtsClick.c
index 24a12c4..b4fa72a 100644
--- src/hg/hgc/numtsClick.c
+++ src/hg/hgc/numtsClick.c
@@ -1,128 +1,135 @@
/* 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) || 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))
{
+ if (sameString("hg19", database) || sameString("mm9", database))
+ {
safef(query, sizeof(query),
"select chrom, chromStart, chromEnd, name, score, strand "
"from numtSMitochondrion where name = '%s' ", itemName);
+ } else {
+ safef(query, sizeof(query),
+ "select chrom, chromStart, chromEnd, name, score, strand "
+ "from numtSMitochondrion where name = '%s' ", itemNameTrimmed);
+ }
clickMsg = openMsgM;
}
else if (sameString("numtSMitochondrion", table))
{
safef(query, sizeof(query),
"select chrom, chromStart, chromEnd, name, score, strand "
- "from numtS where name = '%s'", itemName);
+ "from numtS where name like '%s%%'", itemName);
clickMsg = openMsg1;
}
}
sr = sqlGetResult(conn, query);
firstTime = TRUE;
while ((row = sqlNextRow(sr)) != NULL)
{
printf("
"); if (firstTime) { firstTime = FALSE; printf(""); } 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("