acd43c8cb2e79ad5c456c9589b1b5b0b49e4c723
angie
  Tue Dec 13 09:50:04 2011 -0800
MLQ #6291 (pgSNP format): the pgSnp lib function printSeqCodDisplaywas firing off a query to knownGene without first testing whether
knownGene exists, causing error for knownGene-less databases.
Now the lib function takes genePredTable as argument and tests
existence before querying.

diff --git src/hg/lib/pgSnp.c src/hg/lib/pgSnp.c
index 815bdd9..6788be2 100644
--- src/hg/lib/pgSnp.c
+++ src/hg/lib/pgSnp.c
@@ -370,40 +370,47 @@
 int oldLen = to - from;
 result = needMem(strLen);
 resultPtr = result;
 strLen = from; //beg
 strcpy(resultPtr, old);
 old = ptr + oldLen;
 resultPtr += strLen;
 strcpy(resultPtr, rep); //mid
 resultPtr += strlen(rep);
 strcpy(resultPtr, old); //end
 return result;
 }
 
 void aaProperties (char *aa1, char *aa2);
 
-void printSeqCodDisplay(char *db, struct pgSnp *item)
+void printSeqCodDisplay(char *db, struct pgSnp *item, char *genePredTable)
 /* print the display of sequence changes for a coding variant */
 {
 struct bed *list = NULL, *el, *th = NULL;
 struct sqlResult *sr;
 char **row;
 char query[512];
 struct sqlConnection *conn = hAllocConn(db);
-safef(query, sizeof(query), "select chrom, txStart, txEnd, name, 0, strand, cdsStart, cdsEnd, 0, exonCount, exonEnds, exonStarts  from knownGene where chrom = '%s' and cdsStart <= %d and cdsEnd >= %d",
-   item->chrom, item->chromStart, item->chromEnd);
+if (!sqlTableExists(conn, genePredTable))
+    {
+    hFreeConn(&conn);
+    return;
+    }
+safef(query, sizeof(query), "select chrom, txStart, txEnd, name, 0, strand, cdsStart, cdsEnd, "
+      "0, exonCount, exonEnds, exonStarts  from %s "
+      "where chrom = '%s' and cdsStart <= %d and cdsEnd >= %d",
+      genePredTable, item->chrom, item->chromStart, item->chromEnd);
 
 sr = sqlGetResult(conn, query);
 while ((row = sqlNextRow(sr)) != NULL)
     {
     el = bedLoad12(row);
     /* adjust exonStarts and exonEnds to actual bed values */
     int i;
     for (i=0;i<el->blockCount;i++)
         {
         el->blockSizes[i] = el->blockSizes[i] - el->chromStarts[i];
         el->chromStarts[i] = el->chromStarts[i] - el->chromStart;
         }
     slAddHead(&list, el);
     }
 slReverse(&list);