1314c3b9f1062886c567a2bb31d7e9ac53019ec9
hiram
  Wed Nov 16 09:52:27 2011 -0800
allow refLink searches to work when accessions have version numbers (ignore the accession version number) RedMine issue 6040
diff --git src/hg/lib/hgFind.c src/hg/lib/hgFind.c
index 778d652..662277a 100644
--- src/hg/lib/hgFind.c
+++ src/hg/lib/hgFind.c
@@ -2027,69 +2027,71 @@
 	slAddHead(pList, rl);
 	}
     sqlFreeResult(&sr);
     }
 }
 
 static boolean findRefGenes(char *db, struct hgFindSpec *hfs, char *spec,
 			    struct hgPositions *hgp)
 /* Look up refSeq genes in table. */
 {
 struct sqlConnection *conn = hAllocConn(db);
 struct dyString *ds = newDyString(256);
 struct refLink *rlList = NULL, *rl;
 boolean gotRefLink = hTableExists(db, "refLink");
 boolean found = FALSE;
+char *specNoVersion = cloneString(spec);
+(void) chopPrefix(specNoVersion);
 
 if (gotRefLink)
     {
-    if (startsWith("NM_", spec) || startsWith("NR_", spec) || startsWith("XM_", spec))
+    if (startsWith("NM_", specNoVersion) || startsWith("NR_", specNoVersion) || startsWith("XM_", specNoVersion))
 	{
-	dyStringPrintf(ds, "select * from refLink where mrnaAcc = '%s'", spec);
+	dyStringPrintf(ds, "select * from refLink where mrnaAcc = '%s'", specNoVersion);
 	addRefLinks(conn, ds, &rlList);
 	}
-    else if (startsWith("NP_", spec) || startsWith("XP_", spec))
+    else if (startsWith("NP_", specNoVersion) || startsWith("XP_", specNoVersion))
         {
-	dyStringPrintf(ds, "select * from refLink where protAcc = '%s'", spec);
+	dyStringPrintf(ds, "select * from refLink where protAcc = '%s'", specNoVersion);
 	addRefLinks(conn, ds, &rlList);
 	}
-    else if (isUnsignedInt(spec))
+    else if (isUnsignedInt(specNoVersion))
         {
 	dyStringPrintf(ds, "select * from refLink where locusLinkId = %s",
-		       spec);
+		       specNoVersion);
 	addRefLinks(conn, ds, &rlList);
 	dyStringClear(ds);
-	dyStringPrintf(ds, "select * from refLink where omimId = %s", spec);
+	dyStringPrintf(ds, "select * from refLink where omimId = %s", specNoVersion);
 	addRefLinks(conn, ds, &rlList);
 	}
     else 
 	{
 	char *indexFile = getGenbankGrepIndex(db, hfs, "refLink", "mrnaAccProduct");
 	dyStringPrintf(ds, "select * from refLink where name like '%s%%'",
-		       spec);
+		       specNoVersion);
 	addRefLinks(conn, ds, &rlList);
 	if (indexFile != NULL)
 	    {
-	    struct slName *accList = doGrepQuery(indexFile, "refLink", spec,
+	    struct slName *accList = doGrepQuery(indexFile, "refLink", specNoVersion,
 						 NULL);
 	    addRefLinkAccs(conn, accList, &rlList);
 	    }
 	else
 	    {
 	    dyStringClear(ds);
 	    dyStringPrintf(ds, "select * from refLink where product like '%%%s%%'",
-			   spec);
+			   specNoVersion);
 	    addRefLinks(conn, ds, &rlList);
 	    }
 	}
     }
 if (rlList != NULL)
     {
     struct hgPosTable *table = NULL;
     struct hash *hash = newHash(8);
     for (rl = rlList; rl != NULL; rl = rl->next)
         {
         char where[64];
         struct genePredReader *gpr;
         struct genePred *gp;
 
         /* Don't return duplicate mrna accessions */