aba8125cb532df17beb7c7c9bc8467a43d09e3d6 braney Wed Feb 10 13:39:27 2016 -0800 changes to allow for GenBank metadata to be held in a common table. #16809 diff --git src/hg/hgc/retroClick.c src/hg/hgc/retroClick.c index 2f83a78..1b94ffa 100644 --- src/hg/hgc/retroClick.c +++ src/hg/hgc/retroClick.c @@ -85,47 +85,45 @@ *dot = '\0'; safef(mi->seqId, sizeof(mi->seqId), "%s", id); /* now pull out genbank accession for obtaining description */ id = (colon != NULL) ? colon+1 : id; if (dot != NULL) *dot = '\0'; safef(mi->gbAcc, sizeof(mi->gbAcc), "%s", id); if (under != NULL) *under = '\0'; //mi->gbVer = sqlSigned(dot+1); } static void getGenbankInfo(struct sqlConnection *conn, struct mappingInfo *mi) -/* get source gene info and version from gbCdnaInfo and save in mi */ +/* get source gene info and version from gbCdnaInfoTable and save in mi */ { char query[512], **row; struct sqlResult *sr; -char *defDb = database; /* if id has been modified for multi-level ancestor mappings: * NM_012345.1-1.1 -> db:NM_012345a.1.1 * then hack it back to the original accession. However, don't get version, * since the sequence is different. */ sqlSafef(query, sizeof(query), - "select gbCdnaInfo.version, geneName.name, description.name " - "from %s.gbCdnaInfo, %s.geneName, %s.description " - "where gbCdnaInfo.acc=\"%s\" and gbCdnaInfo.geneName=geneName.id and gbCdnaInfo.description = description.id", - defDb, defDb, defDb, mi->gbAcc); + "select g.version, gene.name, d.name " + "from %s g, %s gene, %s d " + "where g.acc=\"%s\" and g.geneName=gene.id and g.description = d.id", gbCdnaInfoTable, geneNameTable, descriptionTable, mi->gbAcc); sr = sqlGetResult(conn, query); row = sqlNextRow(sr); if (row != NULL) { mi->gbCurVer = sqlSigned(row[0]); mi->sym = cloneString(row[1]); mi->desc = cloneString(row[2]); } sqlFreeResult(&sr); } static struct mappingInfo *mappingInfoNew(struct sqlConnection *conn, char *tbl, char *mappedId) /* load mapping info for a mapped gene */ { @@ -741,34 +739,34 @@ geneCheckFree(&gc); #endif mappingInfoFree(&mi); hFreeConn(&conn); } static struct genbankCds getCds(struct sqlConnection *conn, struct mappingInfo *mi) /* Get CDS, return empty genebankCds if not found or can't parse */ { char query[256]; struct sqlResult *sr; struct genbankCds cds; char **row; sqlSafef(query, sizeof(query), - "select cds.name " - "from %s.gbCdnaInfo, %s.cds " - "where gbCdnaInfo.acc=\"%s\" and gbCdnaInfo.cds=cds.id", - database, database, mi->gbAcc); + "select c.name " + "from %s g, %s c " + "where g.acc=\"%s\" and g.cds=c.id", + gbCdnaInfoTable, cdsTable, mi->gbAcc); sr = sqlMustGetResult(conn, query); row = sqlNextRow(sr); if ((row == NULL) || !genbankCdsParse(row[0], &cds)) ZeroVar(&cds); /* can't get or parse cds */ sqlFreeResult(&sr); return cds; } static struct psl *loadAlign(struct sqlConnection *conn, struct mappingInfo *mi, int start) /* load a psl that must exist */ { char rootTable[256], table[256], query[256]; boolean hasBin; struct sqlResult *sr;