static void blackListFilter(struct cDnaQuery *cdna) /* filter for black list */ { struct cDnaAlign *aln; for (aln = cdna->alns; aln != NULL; aln = aln->next) { if (!aln->drop && genbankBlackListFail(aln->psl->qName, gBlackListRanges)) cDnaAlignDrop(aln, FALSE, &cdna->stats->blackListCnts, "black listed"); } }
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; } }