63cca7780dae4be00319500641da459109bb84f5
fanhsu
  Thu Feb 10 13:48:58 2011 -0800
Fine tuned omimGeneClass3 methods.
diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index defe097..8a66b15 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -10897,119 +10897,55 @@
 tg->mapItemName = protVarMapName;
 tg->nextItemButtonable = TRUE;
 tg->nextPrevItem = linkedFeaturesLabelNextPrevItem;
 }
 
 void oregannoMethods (struct track *tg)
 /* load so can allow filtering on type */
 {
 tg->loadItems = loadOreganno;
 tg->itemColor = oregannoColor;
 tg->itemNameColor = oregannoColor;
 tg->nextItemButtonable = TRUE;
 tg->nextPrevItem = linkedFeaturesLabelNextPrevItem;
 }
 
-char *omimGeneClass3Name(struct track *tg, void *item)
-/* set name for omimGeneClass3 track */
-{
-struct bed *el = item;
-char query[256];
-struct sqlConnection *conn = hAllocConn(database);
-char *geneLabel = NULL;
-
-char *omimGeneClass3Label = cartUsualString(cart, "omimGeneClass3.label", "OMIM ID");
-
-return("testXXX");
-if (sameWord(omimGeneClass3Label, "OMIM ID"))
-    {
-    geneLabel = el->name;
-    }
-else
-    {
-    if (sameWord(omimGeneClass3Label, "UCSC gene symbol"))
-	{
-	/* get the gene symbol of the exact KG that matches not only ID but also genomic position */
-	safef(query, sizeof(query),
-	"select x.geneSymbol from kgXref x, omimToKnownCanonical c, knownGene k, omimGeneClass3 o where c.omimId='%s' and c.kgId=x.kgId and k.name=x.kgId and o.name=c.omimId and o.chrom=k.chrom and k.txStart=%d and k.txEnd=%d",
-	el->name, el->chromStart, el->chromEnd);
-	geneLabel = sqlQuickString(conn, query);
-	}
-    else
-    	{
-	safef(query, sizeof(query),
-	"select geneSymbol from omimGeneClass3Map where omimId='%s'", el->name);
-	geneLabel = sqlQuickString(conn, query);
-	}
-
-    if (geneLabel == NULL)
-	{
-	geneLabel = el->name;
-	}
-    }
-hFreeConn(&conn);
-return(cloneString(geneLabel));
-}
-
-Color omimGeneClass3Color(struct track *tg, void *item, struct hvGfx *hvg)
-/* set the color for omimGeneClass3 track items */
-{
-struct bed *el = item;
-char *result;
-char query[256];
-struct sqlConnection *conn = hAllocConn(database);
-
-/* set the color to red if the entry is listed in morbidmap */
-safef(query, sizeof(query), "select omimId from omimDisorderMap where omimId=%s", el->name);
-result = sqlQuickString(conn, query);
-hFreeConn(&conn);
-if (result != NULL)
-    {
-    return hvGfxFindColorIx(hvg, 255, 0, 0);
-    }
-else
-    {
-    return hvGfxFindColorIx(hvg, 0, 200, 200);
-    }
-}
-
 /* reserve space no more than 20 unique OMIM entries */
 #define OMIM_MAX_DESC_LEN 256
 char omimGeneClass3Buffer[20 * OMIM_MAX_DESC_LEN];
 
-char *omimGeneClass3DiseaseList(struct track *tg, struct bed *item)
-/* Return list of diseases associated with a OMIM entry */
+char *omimGeneClass3DisorderList(struct track *tg, struct bed *item)
+/* Return list of disorders associated with a OMIM entry */
 {
 struct sqlConnection *conn;
 char query[256];
 struct sqlResult *sr;
 char **row;
 char *chp;
 int i=0;
 
 conn = hAllocConn(database);
-
 safef(query,sizeof(query),
         "select distinct disorder from omimDisorderMap, omimGeneClass3 where name='%s' and name=cast(omimId as char) order by disorder", item->name);
 sr = sqlMustGetResult(conn, query);
 row = sqlNextRow(sr);
 
 /* show up to 20 max entries */
 chp = omimGeneClass3Buffer;
 while ((row != NULL) && i<20)
     {
-    /* omimMorbidMap description field some times have trailing blanks. */
+    /* omimDisorderMap disorder field some times have trailing blanks. */
     eraseTrailingSpaces(row[0]);
     if (i != 0)
 	{
 	safef(chp, 3, "; ");
 	chp++;chp++;
 	}
     safecpy(chp, OMIM_MAX_DESC_LEN, row[0]);
     chp = chp+strlen(row[0]);
     row = sqlNextRow(sr);
     i++;
     }
 
 if ((i == 20) && (row != NULL))
     {
     safef(chp, 5, " ...");
@@ -11023,37 +10959,37 @@
 return(omimGeneClass3Buffer);
 }
 
 static void omimGeneClass3DrawAt(struct track *tg, void *item,
 	struct hvGfx *hvg, int xOff, int y,
 	double scale, MgFont *font, Color color, enum trackVisibility vis)
 /* Draw a single superfamily item at position. */
 {
 struct bed *bed = item;
 char *sPhenotypes;
 int heightPer = tg->heightPer;
 int x1 = round((double)((int)bed->chromStart-winStart)*scale) + xOff;
 int x2 = round((double)((int)bed->chromEnd-winStart)*scale) + xOff;
 int w;
 
-sPhenotypes = omimGeneClass3DiseaseList(tg, item);
+sPhenotypes = omimGeneClass3DisorderList(tg, item);
 w = x2-x1;
 if (w < 1)
     w = 1;
 if (color)
     {
-    hvGfxBox(hvg, x1, y, w, heightPer, omimGeneClass3Color(tg, item, hvg));
+    hvGfxBox(hvg, x1, y, w, heightPer, color);
 
     if (vis == tvFull)
         {
         hvGfxTextRight(hvg, x1-mgFontStringWidth(font, sPhenotypes)-2, y,
 		    mgFontStringWidth(font, sPhenotypes),
                     heightPer, MG_BLACK, font, sPhenotypes);
         }
 
     if (vis != tvDense)
    	mapBoxHc(hvg, bed->chromStart, bed->chromEnd, x1, y, x2 - x1, heightPer,
 	         tg->track, tg->mapItemName(tg, bed), sPhenotypes);
     }
 
 if (tg->subType == lfWithBarbs)
     {
@@ -11062,33 +10998,30 @@
 	dir = 1;
     else if(bed->strand[0] == '-')
 	dir = -1;
     if (dir != 0 && w > 2)
 	{
 	int midY = y + (heightPer>>1);
 	Color textColor = hvGfxContrastingColor(hvg, color);
 	clippedBarbs(hvg, x1, midY, w, tl.barbHeight, tl.barbSpacing,
 		dir, textColor, TRUE);
 	}
     }
 }
 
 void omimGeneClass3Methods (struct track *tg)
 {
-//tg->itemColor 	  = omimGeneClass3Color;
-//tg->itemNameColor = omimGeneClass3Color;
-//tg->itemName      = omimGeneClass3Name;
 tg->drawItemAt    = omimGeneClass3DrawAt;
 }
 
 char *omimGeneName(struct track *tg, void *item)
 /* set name for omimGene track */
 {
 struct bed *el = item;
 char query[256];
 struct sqlConnection *conn = hAllocConn(database);
 char *geneLabel = NULL;
 
 char *omimGeneLabel = cartUsualString(cart, "omimGene.label", "OMIM ID");
 
 if (sameWord(omimGeneLabel, "OMIM ID"))
     {
@@ -12484,31 +12417,31 @@
 registerTrackHandler("pgTest", pgSnpMethods);
 registerTrackHandler("protVarPos", protVarMethods);
 registerTrackHandler("oreganno", oregannoMethods);
 registerTrackHandler("encodeDless", dlessMethods);
 transMapRegisterTrackHandlers();
 retroRegisterTrackHandlers();
 registerTrackHandler("retroposons", dbRIPMethods);
 registerTrackHandlerOnFamily("kiddEichlerDisc", kiddEichlerMethods);
 registerTrackHandlerOnFamily("kiddEichlerValid", kiddEichlerMethods);
 registerTrackHandler("dgv", dgvMethods);
 
 registerTrackHandlerOnFamily("hapmapSnps", hapmapMethods);
 registerTrackHandlerOnFamily("hapmapSnpsPhaseII", hapmapMethods);
 registerTrackHandlerOnFamily("omicia", omiciaMethods);
 registerTrackHandler("omimGene", omimGeneMethods);
-//registerTrackHandler("omimGeneClass3", omimGeneClass3Methods);
+registerTrackHandler("omimGeneClass3", omimGeneClass3Methods);
 registerTrackHandler("omimComposite", omimGeneClass3Methods);
 registerTrackHandler("rest", restMethods);
 #endif /* GBROWSE */
 }
 
 void createHgFindMatchHash()
 /* Read from the cart the string assocated with matches and
    put the matching items into a hash for highlighting later. */
 {
 char *matchLine = NULL;
 struct slName *nameList = NULL, *name = NULL;
 matchLine = cartOptionalString(cart, "hgFind.matches");
 if(matchLine == NULL)
     return;
 nameList = slNameListFromString(matchLine,',');