struct sqlConnection *sqlWarnConnect(char *db)
/* Connect to database, or warn and return NULL. */
{
    struct sqlConnection *conn = sqlMayConnect(db);
    if (conn == NULL)
        warn("Error: Couldn't connect to database %s", db);
    return conn;
}
Exemplo n.º 2
0
static boolean isInMBLabValidDb(char *acc)
/* check if an accession is in the Brent lab validation database */
{
boolean inMBLabValidDb = FALSE;
struct sqlConnection *fconn = sqlMayConnect("hgFixed");
if ((fconn != NULL) && sqlTableExists(fconn, "mgcMBLabValid"))
    {
    char query[64], buf[32];
    sqlSafef(query, sizeof(query), "select acc from mgcMBLabValid where acc=\"%s\"",
          acc);
    if (sqlQuickQuery(fconn, query, buf, sizeof(buf)) != NULL)
        inMBLabValidDb = TRUE;
    sqlDisconnect(&fconn);
    }
return inMBLabValidDb;
}
void joinerCheckTableCoverage(struct joiner *joiner, char *specificDb)
/* Check that all tables either are part of an identifier or
 * are in the tablesIgnored statements. */
{
    struct slName *miss, *missList = NULL;
    struct hashEl *dbList, *db;

    dbList = hashElListHash(joiner->databasesChecked);
    for (db = dbList; db != NULL; db = db->next)
    {
        if (specificDb == NULL || sameString(db->name, specificDb))
        {
            struct sqlConnection *conn = sqlMayConnect(db->name);
            if (conn == NULL)
                warn("Error: database %s doesn't exist", db->name);
            else
            {
                struct slName *table;
                struct slName *tableList = sqlListTables(conn);
                struct hash *hash = getCoveredTables(joiner, db->name, conn);
                for (table = tableList; table != NULL; table = table->next)
                {
                    if (!hashLookup(hash, table->name))
                    {
                        char fullName[256];
                        safef(fullName, sizeof(fullName), "%s.%s",
                              db->name, table->name);
                        miss = slNameNew(fullName);
                        slAddHead(&missList, miss);
                    }
                    else
                        verbose(2,"tableCovered: '%s'\n", table->name);
                }
                slFreeList(&tableList);
                freeHash(&hash);
                reportErrorList(&missList, "tables not in .joiner file");
            }
            sqlDisconnect(&conn);
        }
    }
    slFreeList(&dbList);
}
char *uniProtFindPrimAcc(char *id)
/* Return primary accession given an alias. */
/* The alias could be an accession number, display ID, old display ID, etc. 
 * NULL if not found. */
{
static struct sqlConnection *conn=NULL;
char *acc;
char query[256];

if (conn==NULL)
    {
    conn = sqlMayConnect(PROTEOME_DB_NAME);
    if (conn == NULL) return NULL;
    }

safef(query, sizeof(query), "select acc from uniProtAlias where alias = '%s'", id);
    	
acc = sqlQuickString(conn, query);
return(acc);
}
void joinerCheckDependencies(struct joiner *joiner, char *specificDb)
/* Check time stamps on dependent tables. */
{
    struct hashEl *db, *dbList = hashElListHash(joiner->databasesChecked);
    for (db = dbList; db != NULL; db = db->next)
    {
        if (specificDb == NULL || sameString(specificDb, db->name))
        {
            struct sqlConnection *conn = sqlMayConnect(db->name);
            if (conn != NULL)	/* We've already warned on this NULL */
            {
                struct joinerDependency *dep;
                for (dep = joiner->dependencyList; dep != NULL; dep = dep->next)
                {
                    checkOneDependency(joiner, dep, conn, db->name);
                }
                sqlDisconnect(&conn);
            }
        }
    }
    slFreeList(&dbList);
}
Exemplo n.º 6
0
char *uniProtFindPrimAccFromGene(char *gene, char *db)
/* Return primary accession given gene name.
 * NULL if not found. */
{
static struct sqlConnection *conn=NULL;
char *acc = NULL;
char query[256];
char *pdb = cloneString(UNIPROT_DB_NAME);
char *geneTable = "gene";

if (conn==NULL)
    {
    conn = sqlMayConnect(pdb);
    if (conn == NULL) return NULL;
    }
if (geneTable != NULL && sqlTableExists(conn,geneTable)) 
    {
    sqlSafef(query, sizeof(query), "select g.acc from %s g , accToTaxon a, taxon t where val = '%s' and g.acc = a.acc and id = a.taxon and binomial = '%s' ",geneTable, gene, hGenome(db));
    acc = sqlQuickString(conn, query);
    }
return(acc);
}
void doKeyChecks(char *db, struct joiner *joiner, struct joinerSet *js,
                 struct hash *keyHash, struct keyHitInfo *khiList,
                 struct joinerField *keyField, struct joinerField *jf)
/* Check that at least minimum is covered, and that full and
 * unique tags are respected. */
{
    struct sqlConnection *conn = sqlMayConnect(db);
    if (conn != NULL)
    {
        boolean okFlag = FALSE;
        int total = 0, hits = 0, hitsNeeded;
        char *miss = NULL;
        struct slName *table;
        struct slName *tableList = getTablesForField(conn,jf->splitPrefix,
                                   jf->table, jf->splitSuffix);
        keyHitInfoClear(khiList);
        for (table = tableList; table != NULL; table = table->next)
        {
            char query[256], **row;
            struct sqlResult *sr;
            safef(query, sizeof(query), "select %s from %s",
                  jf->field, table->name);
            sr = sqlGetResult(conn, query);
            while ((row = sqlNextRow(sr)) != NULL)
            {
                if (jf->separator == NULL)
                {
                    addHitMiss(keyHash, row[0], jf, &hits, &miss, &total);
                }
                else
                {
                    /* Do list. */
                    struct slName *el, *list;
                    int ix;
                    list = slNameListFromString(row[0], jf->separator[0]);
                    for (el = list, ix=0; el != NULL; el = el->next, ++ix)
                    {
                        char *id = el->name;
                        char buf[16];
                        if (jf->indexOf)
                        {
                            safef(buf, sizeof(buf), "%d", ix);
                            id = buf;
                        }
                        addHitMiss(keyHash, id, jf, &hits, &miss, &total);
                    }
                    slFreeList(&list);
                }
            }
            sqlFreeResult(&sr);
        }
        if (tableList != NULL)
        {
            okFlag = FALSE;
            if (hits==total) okFlag = TRUE;
            if (jf->minCheck < 0.999999)	/* Control for rounding error */
                hitsNeeded = round(total * jf->minCheck);
            else
                hitsNeeded = total;
            if (jf->minCheck < 1.0 && hits >= hitsNeeded) okFlag = TRUE;
            verbose(1, " %s.%s.%s - hits %d of %d%s\n", db, jf->table, jf->field, hits, total,
                    okFlag ? " ok" : js->isFuzzy ? " fuzzy" : "");
            if (hits < hitsNeeded && !js->isFuzzy)
            {
                warn("Error: %d of %d elements of %s.%s.%s are not in key %s.%s line %d of %s\n"
                     "Example miss: %s"
                     , total - hits, total, db, jf->table, jf->field
                     , keyField->table, keyField->field
                     , jf->lineIx, joiner->fileName, miss);
            }

            if (jf->unique || jf->full)
                checkUniqueAndFull(joiner, js, db, jf, keyField, khiList);
        }
        freez(&miss);
        slFreeList(&tableList);
        sqlDisconnect(&conn);
    }
}