Esempio n. 1
0
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;
    }
}
Esempio n. 2
0
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++;
}