static char *getCcdsRefSeqSummary(struct sqlConnection *conn, struct ccdsInfo *rsCcds) /* get the refseq summary for a CCDS */ { struct ccdsInfo *ci; char accBuf[GENBANK_ACC_BUFSZ]; char *summary = NULL; for (ci = rsCcds; ci != NULL; ci = ci->next) { summary = getRefSeqSummary(conn, genbankDropVer(accBuf, ci->mrnaAcc)); if (summary != NULL) return summary; } return NULL; }
static char *findRefSeqSummary(struct sqlConnection *conn, struct geneSimilarities *refSeqs, char **sumAccv) /* Given similar refseq genes, find the first one with a RefSeq * summary and return that summary, or NULL if not found. Also returns * accv of matched */ { char buf[GENBANK_ACC_BUFSZ]; struct geneSim *rs; for (rs = refSeqs->genes; rs != NULL; rs = rs->next) { char *sum = getRefSeqSummary(conn, genbankDropVer(buf, rs->gene->name)); if (sum != NULL) { *sumAccv = cloneString(rs->gene->name); return sum; } } *sumAccv = NULL; return NULL; }
void hgKgGetText(char *database, char *outFile) /* hgKgGetText - Get text from known genes into a file. */ { FILE *f = mustOpen(outFile, "w"); struct sqlConnection *conn = sqlConnect(database); struct sqlConnection *spConn = sqlConnect("uniProt"); struct sqlConnection *goConn = sqlConnect("go"); struct kgXref *kgList = NULL, *kg; struct hash *refSeqHash = NULL; /* Return hash keyed by refSeq NM_ id, with description values. */ gotRefSeqSummary = sqlTableExists(conn, summaryTable); if (gotRefSeqSummary) refSeqHash = getRefSeqSummary(conn); else warn("No %s table in %s, proceeding without...", summaryTable, database); kgList = getKgList(conn); verbose(1, "Read in %d known genes from %s\n", slCount(kgList), database); for (kg = kgList; kg != NULL; kg = kg->next) getText(kg, refSeqHash, conn, spConn, goConn, f); carefulClose(&f); }