84052670e60a22211510df04f8ac91045e2f9a00
fanhsu
  Mon May 23 09:30:35 2011 -0700
Revamped omimGene2 processing logic and minor edits of links to OMIM page at omim.org.
diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index 6b1b65c..5bec707 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -9361,53 +9361,49 @@
     	    	printf("<A HREF=\"%s%s&hgg_chrom=none\" target=_blank>", "../cgi-bin/hgGene?hgg_gene=", row[0]);
     	    	printf("%s</A></B>", row[0]);
 	    	printedCnt++;
 		}
             if (printedCnt >= 1) printf("<BR>\n");
 	    }
 	sqlFreeResult(&sr);
 	}
     }
 
 printf("<HR>");
 printPosOnChrom(chrom, atoi(chromStart), atoi(chromEnd), NULL, FALSE, itemName);
 }
 
 void printOmimGene2Details(struct trackDb *tdb, char *itemName, boolean encode)
-/* Print details of an OMIM Class 3 Gene entry. */
+/* Print details of an omimGene2 entry. */
 {
 struct sqlConnection *conn  = hAllocConn(database);
-struct sqlConnection *conn2 = hAllocConn(database);
 char query[256];
 struct sqlResult *sr;
 char **row;
 char *url = tdb->url;
-char *kgId= NULL;
 char *title1 = NULL;
 char *title2 = NULL;
 char *geneSymbol = NULL;
 char *chrom, *chromStart, *chromEnd;
-char *kgDescription = NULL;
-char *refSeq;
 
 chrom      = cartOptionalString(cart, "c");
 chromStart = cartOptionalString(cart, "o");
 chromEnd   = cartOptionalString(cart, "t");
 
 if (url != NULL && url[0] != 0)
     {
-    printf("<B>OMIM Gene: ");fflush(stdout);
+    printf("<B>OMIM page at omim.org: ");fflush(stdout);
     printf("<A HREF=\"%s%s\" target=_blank>", url, itemName);
     printf("%s</A></B>", itemName);
     safef(query, sizeof(query),
     	  "select title1, title2 from omimGeneMap where omimId=%s;", itemName);
     sr = sqlMustGetResult(conn, query);
     row = sqlNextRow(sr);
     if (row != NULL)
     	{
 	if (row[0] != NULL)
 	    {
 	    title1 = cloneString(row[0]);
     	    printf(" %s", title1);
 	    }
 	if (row[1] != NULL)
 	    {
@@ -9420,168 +9416,115 @@
     printf("<BR>\n");
     printf("<B>OMIM page at NCBI: ");
     printf("<A HREF=\"%s%s\" target=_blank>", ncbiOmimUrl, itemName);
     printf("%s</A></B><BR>", itemName);
 
     safef(query, sizeof(query),
     	  "select geneSymbol from omimGeneMap where omimId=%s;", itemName);
     sr = sqlMustGetResult(conn, query);
     row = sqlNextRow(sr);
     if (row != NULL)
     	{
 	geneSymbol = cloneString(row[0]);
 	}
     sqlFreeResult(&sr);
 
-    /* get corresponding KG ID */
-    safef(query, sizeof(query),
-	  "select k.transcript from knownCanonical k where k.chrom='%s' and k.chromStart=%s and k.chromEnd=%s",
-	  chrom, chromStart, chromEnd);
-    sr = sqlMustGetResult(conn, query);
-    row = sqlNextRow(sr);
-    if (row != NULL)
-    	{
-	kgId = cloneString(row[0]);
-	}
-    sqlFreeResult(&sr);
-
-    /* use geneSymbol from omimMorbidMap if available */
     if (geneSymbol!= NULL)
     	{
 	boolean disorderShown;
 	char *phenotypeClass, *phenotypeId, *disorder;
 
 	printf("<B>Gene symbol(s):</B> %s", geneSymbol);
 	printf("<BR>\n");
 
-	/* display disorder for genes in morbidmap */
+	/* display disorder(s) */
     	safef(query, sizeof(query),
 	      "select description, phenotypeClass, phenotypeId from omimPhenotype where omimId=%s order by description",
 	      itemName);
     	sr = sqlMustGetResult(conn, query);
 	disorderShown = FALSE;
         while ((row = sqlNextRow(sr)) != NULL)
     	    {
 	    if (!disorderShown)
 	    	{
  		printf("<B>Disorder(s):</B><UL>\n");
 		disorderShown = TRUE;
 		}
 	    disorder       = row[0];
 	    phenotypeClass = row[1];
 	    phenotypeId    = row[2];
 	    printf("<LI>%s", disorder);
  	    if (phenotypeId != NULL)
 	    	{
 		if (!sameWord(phenotypeId, "-1"))
 		    {
                     printf(" (phenotype <A HREF=\"%s%s\" target=_blank>", url, phenotypeId);
                     printf("%s</A></B>)", phenotypeId);
 		    }
 		}
 	    printf("<BR>\n");
 	    }
 	if (disorderShown) printf("</UL>\n");
     	sqlFreeResult(&sr);
 	}
-    else
-	{
-	/* display gene symbol(s) from omimGenemap  */
-    	safef(query, sizeof(query), "select geneSymbol from omimGeneMap where omimId=%s;", itemName);
-    	sr = sqlMustGetResult(conn, query);
-    	row = sqlNextRow(sr);
-        if (row != NULL)
-    	    {
- 	    printf("<B>OMIM Gene Symbol:</B> %s", row[0]);
-	    printf("<BR>\n");
-    	    sqlFreeResult(&sr);
-	    }
-	else
-    	    {
-	    /* get gene symbol from kgXref if the entry is not in morbidmap and omim genemap */
-    	    safef(query, sizeof(query), "select geneSymbol from kgXref where kgId='%s';", kgId);
 
+    // show RefSeq Gene link(s)
+    safef(query, sizeof(query),
+          "select distinct r.name from refLink l, mim2gene g, refGene r where l.omimId=%s and g.geneId=l.locusLinkId and g.entryType='gene' and chrom='%s' and txStart = %s and txEnd= %s",
+	  itemName, chrom, chromStart, chromEnd);
             sr = sqlMustGetResult(conn, query);
-    	    row = sqlNextRow(sr);
-    	    if (row != NULL)
-    	    	{
- 	    	printf("<B>UCSC Gene Symbol:</B> %s", row[0]);
-	    	printf("<BR>\n");
-	    	}
-    	    sqlFreeResult(&sr);
-    	    }
-	}
-
-    if (kgId != NULL)
+    if (sr != NULL)
     	{
-    	printf("<B>UCSC Canonical Gene: ");
-    	printf("<A HREF=\"%s%s&hgg_chrom=none\" target=_blank>",
-	       "../cgi-bin/hgGene?hgg_gene=", kgId);
-    	printf("%s</A></B> ", kgId);
-
-	safef(query, sizeof(query), "select refseq from kgXref where kgId='%s';", kgId);
-    	sr = sqlMustGetResult(conn, query);
-    	row = sqlNextRow(sr);
-    	if (row != NULL)
+	int printedCnt;
+	printedCnt = 0;
+	while ((row = sqlNextRow(sr)) != NULL)
 	    {
-	    refSeq = strdup(row[0]);
-	    kgDescription = gbCdnaGetDescription(conn2, refSeq);
+	    if (printedCnt < 1)
+		printf("<B>RefSeq Gene(s): </B>");
+	    else
+		printf(", ");
+    	    printf("<A HREF=\"%s%s&o=%s&t=%s\" target=_blank>", "../cgi-bin/hgc?g=refGene&i=", row[0], chromStart, chromEnd);
+    	    printf("%s</A></B>", row[0]);
+	    printedCnt++;
 	    }
-	sqlFreeResult(&sr);
-        hFreeConn(&conn2);
-
-	if (kgDescription == NULL)
-	    {
-    	    safef(query, sizeof(query), "select description from kgXref where kgId='%s';", kgId);
-    	    sr = sqlMustGetResult(conn, query);
-    	    row = sqlNextRow(sr);
-    	    if (row != NULL)
-    	    	{
-	    	printf("%s", row[0]);
+        if (printedCnt >= 1) printf("<BR>\n");
 	    	}
-
 	    sqlFreeResult(&sr);
-	    }
-	else
-    	    {
-	    printf("%s", kgDescription);
-	    }
-        printf("<BR>\n");
 
+    // show Related UCSC Gene links
 	safef(query, sizeof(query),
-	      "select i.transcript from knownIsoforms i, knownCanonical c where c.transcript='%s' and i.clusterId=c.clusterId and i.transcript <>'%s'",
-	      kgId, kgId);
+          "select distinct kgId from kgXref x, refLink l, mim2gene g where x.refseq = mrnaAcc and l.omimId=%s and g.omimId=l.omimId and g.entryType='gene'",
+	  itemName);
     	sr = sqlMustGetResult(conn, query);
 	if (sr != NULL)
 	    {
 	    int printedCnt;
 	    printedCnt = 0;
 	    while ((row = sqlNextRow(sr)) != NULL)
 	    	{
 	        if (printedCnt < 1)
-		    printf("<B>Other UCSC Gene(s) in the same cluster: </B>");
+		printf("<B>Related UCSC Gene(s): </B>");
 		else
 		    printf(", ");
     	    	printf("<A HREF=\"%s%s&hgg_chrom=none\" target=_blank>", "../cgi-bin/hgGene?hgg_gene=", row[0]);
     	    	printf("%s</A></B>", row[0]);
 	    	printedCnt++;
 		}
             if (printedCnt >= 1) printf("<BR>\n");
 	    }
 	sqlFreeResult(&sr);
 	}
-    }
 
 printf("<HR>");
 printPosOnChrom(chrom, atoi(chromStart), atoi(chromEnd), NULL, FALSE, itemName);
 }
 
 void printOmimLocationDetails(struct trackDb *tdb, char *itemName, boolean encode)
 /* Print details of an OMIM Class 3 Gene entry. */
 {
 struct sqlConnection *conn  = hAllocConn(database);
 struct sqlConnection *conn2 = hAllocConn(database);
 char query[256];
 struct sqlResult *sr;
 char **row;
 char *url = tdb->url;
 char *kgId= NULL;
@@ -9589,31 +9532,31 @@
 char *title2 = NULL;
 char *geneSymbol = NULL;
 char *chrom, *chromStart, *chromEnd;
 char *kgDescription = NULL;
 char *refSeq;
 char *omimId;
 
 chrom      = cartOptionalString(cart, "c");
 chromStart = cartOptionalString(cart, "o");
 chromEnd   = cartOptionalString(cart, "t");
 
 omimId = itemName;
 
 if (url != NULL && url[0] != 0)
     {
-    printf("<B>OMIM Entry ");fflush(stdout);
+    printf("<B>OMIM page at omim.org: ");fflush(stdout);
     printf("<A HREF=\"%s%s\" target=_blank>", url, itemName);
     printf("%s</A></B>", itemName);
     safef(query, sizeof(query),
     	  "select title1, title2 from omimGeneMap where omimId=%s;", itemName);
     sr = sqlMustGetResult(conn, query);
     row = sqlNextRow(sr);
     if (row != NULL)
     	{
 	if (row[0] != NULL)
 	    {
 	    title1 = cloneString(row[0]);
     	    printf(": %s", title1);
 	    }
 	if (row[1] != NULL)
 	    {
@@ -9837,31 +9780,31 @@
 	    title1 = cloneString(row[0]);
 	    }
 	if (row[1] != NULL)
 	    {
 	    title2 = cloneString(row[1]);
 	    }
 	avDesc = cloneString(row[3]);
 	}
     sqlFreeResult(&sr);
 
     printf("<B>OMIM Allelic Variant: ");
     printf("<A HREF=\"%s%s\" target=_blank>", url, avString);
     printf("%s</A></B>", avId);
     printf(" %s", avDesc);
 
-    printf("<BR><B>OMIM Entry ");
+    printf("<BR><B>OMIM page at omim.org: ");
     printf("<A HREF=\"%s%s\" target=_blank>", url, itemName);
     printf("%s</A></B>", itemName);
     if (title1 != NULL) printf(": %s", title1);
     if (title2 != NULL) printf(" %s ", title2);
 
     printf("<BR>\n");
     printf("<B>OMIM page at NCBI: ");
     printf("<A HREF=\"%s%s\" target=_blank>", ncbiOmimUrl, itemName);
     printf("%s</A></B><BR>", itemName);
 
     safef(query, sizeof(query),
     	  "select replStr from omimAvRepl where avId=%s;", avId);
     sr = sqlMustGetResult(conn, query);
     row = sqlNextRow(sr);
     if (row != NULL)