ca8d142dc346906220151aca8bfe7ce70201abe5 fanhsu Thu Jul 8 15:00:44 2010 -0700 Built hgIkmc track for hg19 (IKMC track mapped to human genome). diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index b90dcca..c0fde4f 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -21660,6 +21660,93 @@ hFreeConn(&conn); } +void doHgIkmc(struct trackDb *tdb, char *item) +/* Human Genome Map of KnockOut Mouse Project */ +{ +struct sqlConnection *conn = hAllocConn(database); +char query[512]; +struct sqlResult *sr; +char **row; +genericHeader(tdb, item); +char defaultExtra[HDB_MAX_TABLE_STRING]; +safef(defaultExtra, sizeof(defaultExtra), "%sExtra", tdb->table); +char *extraTable = trackDbSettingOrDefault(tdb, "xrefTable", defaultExtra); +boolean gotExtra = sqlTableExists(conn, extraTable); +if (gotExtra) + { + char mgiId[256]; + char *designId; + + safef(query, sizeof(query), "select alias from %s where name = '%s'", + extraTable, item); + sqlQuickQuery(conn, query, mgiId, sizeof(mgiId)); + char *ptr = strchr(mgiId, ','); + if (!startsWith("MGI:", mgiId) || ptr == NULL) + errAbort("Where is the MGI ID?: '%s'", mgiId); + else + *ptr = '\0'; + ptr++; + designId = ptr; + ptr = strchr(ptr, ','); + *ptr = '\0'; + + // Use the MGI ID to show all centers that are working on this gene: + safef(query, sizeof(query), "select name,alias from %s where alias like '%s,%s%%'", + extraTable, mgiId, designId); + sr = sqlGetResult(conn, query); + char lastMgiId[16]; + lastMgiId[0] = '\0'; + puts("
"); + printCustomUrl(tdb, mgiId, FALSE); + printf(" | ||
"); + printOtherCustomUrl(tdb, mgiId, "mgiUrl", FALSE); + printf(" | ||
Center: %s | \n", center); + ptr = strrchr(row[0], '_'); + if (ptr != NULL) + printf("Design ID: %s | \n", ptr+1); + printf("Status: %s |
"); + sqlFreeResult(&sr); + } +safef(query, sizeof(query), "select chrom,chromStart,chromEnd from %s " + "where name = '%s'", tdb->table, item); +sr = sqlGetResult(conn, query); +char lastChr[32]; +int lastStart = -1; +int lastEnd = -1; +lastChr[0] = '\0'; +while ((row = sqlNextRow(sr)) != NULL) + { + char *chr = row[0]; + int start = atoi(row[1]), end = atoi(row[2]); + if (!sameString(chr, lastChr) || start != lastStart || end != lastEnd) + printPos(chr, start, end, NULL, TRUE, item); + safecpy(lastChr, sizeof(lastChr), chr); + lastStart = start; + lastEnd = end; + } +sqlFreeResult(&sr); +if (gotExtra) + puts(" |