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);