4898794edd81be5285ea6e544acbedeaeb31bf78 max Tue Nov 23 08:10:57 2021 -0800 Fixing pointers to README file for license in all source code files. refs #27614 diff --git src/hg/makeDb/hgLoadBlastTab/hgLoadBlastTab.c src/hg/makeDb/hgLoadBlastTab/hgLoadBlastTab.c index 8e8cc95..4cfcb2c 100644 --- src/hg/makeDb/hgLoadBlastTab/hgLoadBlastTab.c +++ src/hg/makeDb/hgLoadBlastTab/hgLoadBlastTab.c @@ -1,147 +1,147 @@ /* hgLoadBlastTab - Load blast table into database. */ /* Copyright (C) 2013 The Regents of the University of California - * See README in this or parent directory for licensing information. */ + * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */ #include "common.h" #include "linefile.h" #include "hash.h" #include "dystring.h" #include "jksql.h" #include "options.h" #include "hgRelate.h" #include "blastTab.h" void usage() /* Explain usage and exit. */ { errAbort( "hgLoadBlastTab - Load blast table into database\n" "usage:\n" " hgLoadBlastTab database table file(s).tab\n" "File.tab is something generated via ncbi blast\n" "using the -m 8 flag\n" "options:\n" " -createOnly - just create the table, don't load it\n" " -maxPer=N - maximum to load for any query sequence\n" " -bestOnly - keep only the first hit for {query,target} (blast output\n" " is sorted by score so first hit is best-scoring hit)\n" ); } int maxPer = BIGNUM; static struct optionSpec options[] = { {"createOnly", OPTION_BOOLEAN}, {"maxPer", OPTION_INT}, {"bestOnly", OPTION_BOOLEAN}, {NULL, 0}, }; void blastTabTableCreate(struct sqlConnection *conn, char *tableName) /* Create a scored-ref table with the given name. */ { static char *createString = "CREATE TABLE %s (\n" " query varchar(255) not null, # Name of query sequence\n" " target varchar(255) not null, # Name of target sequence\n" " identity float not null, # Percent identity\n" " aliLength int unsigned not null, # Length of alignment\n" " mismatch int unsigned not null, # Number of mismatches\n" " gapOpen int unsigned not null, # Number of gap openings\n" " qStart int unsigned not null, # Start in query (0 based)\n" " qEnd int unsigned not null, # End in query (non-inclusive)\n" " tStart int unsigned not null, # Start in target (0 based)\n" " tEnd int unsigned not null, # Start in query (non-inclusive)\n" " eValue double not null, # Expectation value\n" " bitScore double not null, # Bit score\n" " #Indices\n" " INDEX(query)\n" ")\n"; struct dyString *dy = newDyString(1024); sqlDyStringPrintf(dy, createString, tableName); sqlRemakeTable(conn, tableName, dy->string); dyStringFree(&dy); } #define THASH_BITS 12 void hgLoadBlastTab(char *database, char *table, int inCount, char *inNames[]) /* hgLoadBlastTab - Load blast table into database. */ { struct sqlConnection *conn = sqlConnect(database); blastTabTableCreate(conn, table); sqlDisconnect(&conn); if (!optionExists("createOnly")) { FILE *f = hgCreateTabFile(".", table); struct hash *tHash; boolean bestOnly = optionExists("bestOnly"); int i; int count = 0; int qHitCount = 0; char lastQ[512]; lastQ[0] = 0; verbose(1, "Scanning through %d files\n", inCount); if (bestOnly) tHash = hashNew(THASH_BITS); for (i=0; i<inCount; ++i) { struct lineFile *lf = lineFileOpen(inNames[i], TRUE); struct blastTab bt; char *row[BLASTTAB_NUM_COLS]; while (lineFileRow(lf, row)) { blastTabStaticLoad(row, &bt); bt.qStart -= 1; bt.tStart -= 1; if (!sameString(lastQ, bt.query)) { safef(lastQ, sizeof(lastQ), "%s", bt.query); qHitCount = 0; if (bestOnly) { hashFree(&tHash); tHash = hashNew(THASH_BITS); } } /* Keep only the best alignment of query and target: */ if (bestOnly) { if (hashLookup(tHash, bt.target) != NULL) continue; hashAddInt(tHash, bt.target, 1); } ++qHitCount; if (qHitCount <= maxPer) { blastTabTabOut(&bt, f); ++count; } } lineFileClose(&lf); } if (bestOnly) hashFree(&tHash); verbose(1, "Loading database with %d rows\n", count); conn = sqlConnect(database); hgLoadTabFile(conn, ".", table, &f); hgRemoveTabFile(".", table); /* add a comment to the history table and finish up connection */ hgHistoryComment(conn, "Add %d blast alignments to %s table", count, table); sqlDisconnect(&conn); } } int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); if (argc < 4) usage(); maxPer = optionInt("maxPer", maxPer); hgLoadBlastTab(argv[1], argv[2], argc-3, argv+3); return 0; }