95efc27edf24bba8d0c7e53d2ef4aead59982826
braney
Mon Jun 15 18:29:39 2020 -0700
Merging in our gencode merge code to master branch
diff --git src/hg/hgGene2/assoc.c src/hg/hgGene2/assoc.c
new file mode 100644
index 0000000..c9ccd47
--- /dev/null
+++ src/hg/hgGene2/assoc.c
@@ -0,0 +1,77 @@
+#include "common.h"
+#include "jksql.h"
+#include "linefile.h"
+#include "ra.h"
+#include "trackDb.h"
+#include "assoc.h"
+
+
+char *getAssoc(struct sqlConnection *conn, char *table, char *field, char *whereField, char *whereValue)
+{
+char query[4096];
+char result[4096];
+
+sqlSafef(query, sizeof query, "select %s from %s where %s = '%s'",
+ field, table, whereField, whereValue);
+
+return cloneString(sqlQuickQuery(conn, query, result, sizeof result));
+}
+
+char *assocGetRefSeq(struct sqlConnection *conn, char *id)
+{
+return getAssoc(conn, "gencodeToRefSeqV32", "rnaAcc", "transcriptId", id);
+}
+
+struct assoc *readAssocFromOpenRa(struct lineFile *lf)
+{
+struct assoc *assocList = NULL, *assoc;
+struct hash *ra;
+while ((ra = raNextRecord(lf)) != NULL)
+ {
+ AllocVar(assoc);
+ slAddHead(&assocList, assoc);
+ assoc->settings = ra;
+ assoc->table = hashFindVal(ra, "table");
+ assoc->idSql = hashFindVal(ra, "idSql");
+ assoc->url = hashFindVal(ra, "url");
+ assoc->shortLabel = hashFindVal(ra, "shortLabel");
+ assoc->longLabel = hashFindVal(ra, "longLabel");
+ }
+
+slReverse(&assocList);
+
+return assocList;
+}
+
+struct assoc *readAssoc(struct trackDb *tdb)
+{
+char *assocFile = trackDbSetting(tdb, "associations");
+
+if (assocFile == NULL)
+ return NULL;
+struct lineFile *lf = udcWrapShortLineFile(assocFile, NULL, 100*1024);
+
+struct assoc *assocs = readAssocFromOpenRa(lf);
+
+return assocs;
+}
+
+void doAssociations(struct sqlConnection *conn, struct trackDb *tdb, char *geneId)
+{
+struct assoc *assocs = readAssoc(tdb);
+
+char query[4096];
+char answer[4096];
+printf("Associations:
");
+for(; assocs; assocs = assocs->next)
+ {
+ sqlSafef(query, sizeof(query), assocs->idSql, geneId);
+ sqlQuickQuery(conn, query, answer, sizeof answer);
+ if (!isEmpty(answer))
+ {
+ char buffer[4096];
+ safef(buffer, sizeof buffer, assocs->url, answer);
+ printf("%s
",buffer,assocs->shortLabel);
+ }
+ }
+}