0c2b4c9307ddc336c33246496e27eaf813348386
braney
  Fri Apr 17 11:18:31 2015 -0700
hgTracks and trackDb changes for NCBI Genes track

diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index eb6b1da..70b062d 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -5823,78 +5823,87 @@
 char *refGeneMapName(struct track *tg, void *item)
 /* Return un-abbreviated gene name. */
 {
 struct linkedFeatures *lf = item;
 char buffer[1024];
 safecpy(buffer, sizeof buffer, lf->name);
 chopSuffix(buffer);
 return cloneString(buffer);
 }
 
 void lookupRefNames(struct track *tg)
 /* This converts the refSeq accession to a gene name where possible. */
 {
 struct linkedFeatures *lf;
 struct sqlConnection *conn = hAllocConn(database);
-boolean isNative = sameString(tg->table, "refGene");
+boolean isNative = !sameString(tg->table, "xenoRefGene");
 boolean labelStarted = FALSE;
 boolean useGeneName = FALSE;
 boolean useAcc =  FALSE;
 boolean useMim =  FALSE;
+char trackLabel[1024];
+char *labelString = tg->table;
+boolean isRefGene = TRUE;
+if (sameString(labelString, "ncbiRefCurated") || sameString(labelString, "ncbiRefPredicted"))
+    {
+    labelString="ncbiGene";
+    isRefGene = FALSE;
+    }
+safef(trackLabel, sizeof trackLabel, "%s.label", labelString);
 
-struct hashEl *refGeneLabels = cartFindPrefix(cart, (isNative ? "refGene.label" : "xenoRefGene.label"));
+struct hashEl *refGeneLabels = cartFindPrefix(cart, trackLabel);
 struct hashEl *label;
 char omimLabel[48];
 safef(omimLabel, sizeof(omimLabel), "omim%s", cartString(cart, "db"));
 
 if (refGeneLabels == NULL)
     {
     useGeneName = TRUE; /* default to gene name */
-    /* set cart to match what doing */
-    if (isNative) cartSetBoolean(cart, "refGene.label.gene", TRUE);
-    else cartSetBoolean(cart, "xenoRefGene.label.gene", TRUE);
     }
 for (label = refGeneLabels; label != NULL; label = label->next)
     {
     if (endsWith(label->name, "gene") && differentString(label->val, "0"))
         useGeneName = TRUE;
     else if (endsWith(label->name, "acc") && differentString(label->val, "0"))
         useAcc = TRUE;
     else if (endsWith(label->name, omimLabel) && differentString(label->val, "0"))
         useMim = TRUE;
     else if (!endsWith(label->name, "gene") &&
              !endsWith(label->name, "acc")  &&
              !endsWith(label->name, omimLabel) )
         {
         useGeneName = TRUE;
-        cartRemove(cart, label->name);
         }
     }
 
 for (lf = tg->items; lf != NULL; lf = lf->next)
     {
     struct dyString *name = dyStringNew(SMALLDYBUF);
     labelStarted = FALSE; /* reset for each item in track */
     if ((useGeneName || useAcc || useMim) && !isNative)
         {
         char *org = getOrganismShort(conn, lf->name);
         if (org != NULL)
             dyStringPrintf(name, "%s ", org);
         }
     if (useGeneName)
         {
-        char *gene = getGeneName(conn, lf->name);
+        char *gene;
+        if  (isRefGene)
+            gene = getGeneName(conn, lf->name);
+        else
+            gene = lf->extra;
         if (gene != NULL)
             {
             dyStringAppend(name, gene);
             }
         labelStarted = TRUE;
         }
     if (useAcc)
         {
         if (labelStarted) dyStringAppendC(name, '/');
         else labelStarted = TRUE;
         dyStringAppend(name, lf->name);
         }
     if (useMim)
         {
         char *mimId;
@@ -6013,30 +6022,32 @@
 		}
 	    hFreeConn(&conn);
 	    }
 	}
     }
 else
     for (lf = tg->items; lf != NULL; lf = lf->next)
 	lf->extra = cloneString(lf->name);
 }
 
 void loadNcbiGene(struct track *tg)
 /* Load up RefSeq known genes. */
 {
 enum trackVisibility vis = tg->visibility;
 loadGenePredWithName2(tg);
+if (vis != tvDense)
+    lookupRefNames(tg);
 vis = limitVisibility(tg);
 }
 
 void loadRefGene(struct track *tg)
 /* Load up RefSeq known genes. */
 {
 enum trackVisibility vis = tg->visibility;
 tg->items = lfFromGenePredInRange(tg, tg->table, chromName, winStart, winEnd);
 if (vis != tvDense)
     {
     lookupRefNames(tg);
     }
 vis = limitVisibility(tg);
 }