boolean checkGene(char *db, struct genePred *gene) /* validate that a genePred is ok, either exit or return false if it's not */ { struct chromInfo *ci = hGetChromInfo(db, gene->chrom); if (ci == NULL) { fprintf(stderr, "Error: %s has invalid chrom for %s: %s\n", gene->name, db, gene->chrom); gInvalidCnt++; return FALSE; } else if (genePredCheck("invalid genePred", stderr, ci->size, gene) == 0) return TRUE; else { gInvalidCnt++; return FALSE; } }
static void chkGenePred(struct genePred* gene, char *geneName, unsigned iRow, char* database, char* table, struct metaDataTbls* metaDataTbls, unsigned typeFlags) /* Validate a genePred of a refSeq to genome alignment against the metadata. * Also count the number of alignments, and check the geneName, if available */ { char desc[512]; unsigned chromSize = getChromSize(database, gene->chrom); struct metaData* md = metaDataTblsFind(metaDataTbls, gene->name); if (gbVerbose >= 3) gbVerbMsg(3, "chkGenePred %s:%d %s %s", table, iRow, gene->name, gene->chrom); safef(desc, sizeof(desc), "gene %s.%s:%u %s %s", database, table, iRow, gene->name, gene->chrom); /* basic sanity checks */ if (genePredCheck(desc, stderr, chromSize, gene)) errorCnt++; /* check if in mrna table */ if (md == NULL) gbError("%s: %s in not in mrna table", desc, gene->name); else { if (typeFlags != md->typeFlags) gbError("%s: alignment of %s type %s doesn't match expected %s", desc, gene->name, gbFmtSelect(md->typeFlags), gbFmtSelect(typeFlags)); md->numAligns++; } /* check gene name */ if ((md != NULL) && (geneName != NULL)) { char* rlName = (md->rlName == NULL) ? "" : md->rlName; if (!sameString(geneName, rlName)) gbError("%s: %s geneName \"%s\" does not match refLink name \"%s\"", desc, gene->name, geneName, rlName); } }
static void checkAGenePred(char *fileTbl, int iRec, struct genePred *gp) /* check one genePred */ { int chromSize = -1; /* default to not checking */ char desc[512]; safef(desc, sizeof(desc), "%s:%d", fileTbl, iRec); if (gDb != NULL) { struct chromInfo *ci = hGetChromInfo(gDb, gp->chrom); if (ci == NULL) { fprintf(stderr, "Error: %s: %s has invalid chrom for %s: %s\n", desc, gp->name, gDb, gp->chrom); gErrCount++; chromSize = -1; // don't validate } else chromSize = ci->size; } gErrCount += genePredCheck(desc, stderr, chromSize, gp); gChkCount++; }