static void loadGbCdnaInfoData(struct metaDataTbls* metaDataTbls, struct gbSelect* select, struct sqlConnection* conn) /* load the gbCdnaInfo table */ { char accWhere[64]; char query[512]; struct sqlResult* result; char** row; gbVerbMsg(2, "load gbCdnaInfo table data"); accWhere[0] = '\0'; if (select->accPrefix != NULL) safef(accWhere, sizeof(accWhere), " AND (acc LIKE '%s%%')", select->accPrefix); safef(query, sizeof(query), "SELECT acc,id,version,moddate,type,direction," /* 0 1 2 3 4 5 */ "source,organism,library,mrnaClone,sex,tissue,development,cell,cds," /* 6 7 8 9 10 11 12 13 14 */ "keyword,description,geneName,productName,author " /* 15 16 17 18 19 */ "FROM gbCdnaInfo WHERE (type='%s')%s", ((select->type == GB_MRNA) ? "mRNA" : "EST"), accWhere); /* mrna doesn't have a srcDb, so we guess from acc */ result = sqlGetResult(conn, query); while ((row = sqlNextRow(result)) != NULL) { if (gbGuessSrcDb(row[0]) == select->release->srcDb) loadGbCdnaInfoRow(metaDataTbls, conn, row); } sqlFreeResult(&result); }
static boolean keepGbEntry(boolean isEst) /* should the current entry in the kvt be kept? */ { char *acc = gbAccessionField->val->string; char *cat = kvtGet(kvt, "cat")->val; char *org = kvtGet(kvt, "org")->val; if (genbankBlackListFail(acc, blackListRanges)) return FALSE; else if (gbOrg && (differentString(org, gbOrg))) return FALSE; else if (gbGuessSrcDb(acc) == GB_REFSEQ) { return (startsWith("NM_", acc) || startsWith("NR_", acc) || ((startsWith("XM_", acc) && inclXMs))); } else if ((sameString(cat, "GSS") || sameString(cat, "HTG") || sameString(cat, "STS") || sameString(cat, "CON")) && !(gbType & GB_DNA)) return FALSE; // division to ignore else { if (sameString(cat, "EST")) { return (gbType & GB_EST) != 0; } else if (gbType & GB_MRNA) { // not an EST, keep any type of RNA return containsStringNoCase(kvtGet(kvt, "mol")->val, "RNA") != NULL; } else if (gbType & GB_DNA) { // keep any type of DNA if DNA filter set return containsStringNoCase(kvtGet(kvt, "mol")->val, "DNA") != NULL; } else return FALSE; } }
static struct sqlDeleter* buildReloadDeleter(char *reloadList, unsigned srcDb, char *tmpDir) /* read reload list, building a deleter for the specified source DB */ { struct sqlDeleter* deleter = NULL; struct lineFile *lf = gzLineFileOpen(reloadList); int cnt = 0; char *row[1]; while (lineFileChopNext(lf, row, ArraySize(row))) { char *acc = trimSpaces(row[0]); if (gbGuessSrcDb(acc) == srcDb) { if (deleter == NULL) deleter = sqlDeleterNew(tmpDir, (gbVerbose >= 4)); sqlDeleterAddAcc(deleter, acc); cnt++; gbVerbMsg(5, "%s delete for reloading", acc); } } gzLineFileClose(&lf); gbVerbMsg(1, "delete %d entries for reloading", cnt); return deleter; }