25d4c33f3e224c9d571876326ceccb46530005b0 markd Wed Jul 8 23:09:57 2020 -0700 changed variable name to be more accurate diff --git src/gfClient/gfClient.c src/gfClient/gfClient.c index fe2cdef..26f26c4 100644 --- src/gfClient/gfClient.c +++ src/gfClient/gfClient.c @@ -8,42 +8,42 @@ #include "psl.h" #include "options.h" #include "fuzzyFind.h" static struct optionSpec optionSpecs[] = { {"prot", OPTION_BOOLEAN}, {"q", OPTION_STRING}, {"t", OPTION_STRING}, {"minIdentity", OPTION_FLOAT}, {"minScore", OPTION_INT}, {"dots", OPTION_INT}, {"out", OPTION_STRING}, {"maxIntron", OPTION_INT}, {"nohead", OPTION_BOOLEAN}, - {"genome", OPTION_STRING}, + {"genomeDir", OPTION_STRING}, {NULL, 0} }; /* Variables that can be overridden by command line. */ int dots = 0; int minScore = 30; double minIdentity = 90; char *outputFormat = "psl"; char *qType = "dna"; char *tType = "dna"; -char *genome = NULL; +char *genomeDir = NULL; void usage() /* Explain usage and exit. */ { printf( "gfClient v. %s - A client for the genomic finding program that produces a .psl file\n" "usage:\n" " gfClient host port seqDir in.fa out.psl\n" "where\n" " host is the name of the machine running the gfServer\n" " port is the same port that you started the gfServer with\n" " seqDir is the path of the .2bit or .nib files relative to the current dir\n" " (note these are needed by the client as well as the server)\n" " in.fa is a fasta format file. May contain multiple records\n" " out.psl is where to put the output\n" @@ -66,32 +66,33 @@ " mismatches minus some sort of gap penalty. Default is 30.\n" " -minIdentity=N Sets minimum sequence identity (in percent). Default is\n" " 90 for nucleotide searches, 25 for protein or translated\n" " protein searches.\n" " -out=type Controls output file format. Type is one of:\n" " psl - Default. Tab-separated format without actual sequence\n" " pslx - Tab-separated format with sequence\n" " axt - blastz-associated axt format\n" " maf - multiz-associated maf format\n" " sim4 - similar to sim4 format\n" " wublast - similar to wublast format\n" " blast - similar to NCBI blast format\n" " blast8- NCBI blast tabular format\n" " blast9 - NCBI blast tabular format with comments\n" " -maxIntron=N Sets maximum intron size. Default is %d.\n" - " -genome=name When using a dynamic gfServer, this is the name of the genome to query.\n" - " It maybe prefixed by containing directory as needed (see gfServer).\n", + " -genomeDir=name When using a dynamic gfServer, this is the root-relative directory\n" + " of the genome query. It maybe prefixed by containing directory as\n" + " needed (see gfServer).\n", gfVersion, ffIntronMaxDefault); exit(-1); } struct gfOutput *gvo; void gfClient(char *hostName, char *portName, char *tSeqDir, char *inName, char *outName, char *tTypeName, char *qTypeName) /* gfClient - A client for the genomic finding program that produces a .psl file. */ { struct lineFile *lf = lineFileOpen(inName, TRUE); static bioSeq seq; FILE *out = mustOpen(outName, "w"); enum gfType qType = gfTypeFromName(qTypeName); @@ -108,73 +109,73 @@ while (faSomeSpeedReadNext(lf, &seq.dna, &seq.size, &seq.name, qType != gftProt)) { int conn = gfConnect(hostName, portName); if (dots != 0) { if (++dotMod >= dots) { dotMod = 0; fputc('.', stdout); fflush(stdout); } } if (qType == gftProt && (tType == gftDnaX || tType == gftRnaX)) { gvo->reportTargetStrand = TRUE; - gfAlignTrans(&conn, tSeqDir, &seq, minScore, tFileCache, gvo, genome); + gfAlignTrans(&conn, tSeqDir, &seq, minScore, tFileCache, gvo, genomeDir); } else if ((qType == gftRnaX || qType == gftDnaX) && (tType == gftDnaX || tType == gftRnaX)) { gvo->reportTargetStrand = TRUE; gfAlignTransTrans(&conn, tSeqDir, &seq, FALSE, minScore, tFileCache, - gvo, qType == gftRnaX, genome); + gvo, qType == gftRnaX, genomeDir); if (qType == gftDnaX) { reverseComplement(seq.dna, seq.size); close(conn); conn = gfConnect(hostName, portName); gfAlignTransTrans(&conn, tSeqDir, &seq, TRUE, minScore, tFileCache, - gvo, FALSE, genome); + gvo, FALSE, genomeDir); } } else if ((tType == gftDna || tType == gftRna) && (qType == gftDna || qType == gftRna)) { - gfAlignStrand(&conn, tSeqDir, &seq, FALSE, minScore, tFileCache, gvo, genome); + gfAlignStrand(&conn, tSeqDir, &seq, FALSE, minScore, tFileCache, gvo, genomeDir); conn = gfConnect(hostName, portName); reverseComplement(seq.dna, seq.size); - gfAlignStrand(&conn, tSeqDir, &seq, TRUE, minScore, tFileCache, gvo, genome); + gfAlignStrand(&conn, tSeqDir, &seq, TRUE, minScore, tFileCache, gvo, genomeDir); } else { errAbort("Comparisons between %s queries and %s databases not yet supported", qTypeName, tTypeName); } gfOutputQuery(gvo, out); } if (out != stdout) printf("Output is in %s\n", outName); gfFileCacheFree(&tFileCache); } int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, optionSpecs); if (argc != 6) usage(); if (optionExists("prot")) qType = tType = "prot"; qType = optionVal("q", qType); tType = optionVal("t", tType); if (sameWord(tType, "prot") || sameWord(tType, "dnax") || sameWord(tType, "rnax")) minIdentity = 25; minIdentity = optionFloat("minIdentity", minIdentity); minScore = optionInt("minScore", minScore); dots = optionInt("dots", 0); outputFormat = optionVal("out", outputFormat); -genome = optionVal("genome", genome); +genomeDir = optionVal("genomeDir", NULL); /* set global for fuzzy find functions */ setFfIntronMax(optionInt("maxIntron", ffIntronMaxDefault)); gfClient(argv[1], argv[2], argv[3], argv[4], argv[5], tType, qType); return 0; }