X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=pairwiseseqscommand.h;h=90c21b25a7c35c47834ea7311f3e7f969163fc98;hp=0e749d5c7e252ceb7c777de1e8878084f61b0a4d;hb=b206f634aae1b4ce13978d203247fb64757d5482;hpb=49d2b7459c5027557564b21e9487dadafbbbdc96 diff --git a/pairwiseseqscommand.h b/pairwiseseqscommand.h index 0e749d5..90c21b2 100644 --- a/pairwiseseqscommand.h +++ b/pairwiseseqscommand.h @@ -40,8 +40,9 @@ public: vector setParameters(); string getCommandName() { return "pairwise.seqs"; } string getCommandCategory() { return "Sequence Processing"; } - string getOutputFileNameTag(string, string); + string getHelpString(); + string getOutputPattern(string); string getCitation() { return "Needleman SB, Wunsch CD (1970). A general method applicable to the search for similarities in the amino acid sequence of two proteins. J Mol Biol 48: 443-53. [ for needleman ]\nGotoh O (1982). An improved algorithm for matching biological sequences. J Mol Biol 162: 705-8. [ for gotoh ] \nhttp://www.mothur.org/wiki/Pairwise.seqs"; } string getDescription() { return "calculates pairwise distances from an unaligned fasta file"; } @@ -94,7 +95,7 @@ struct pairwiseData { SequenceDB alignDB; pairwiseData(){} - pairwiseData(string ofn, string al, string sq, string di, bool co, string op, SequenceDB DB, MothurOut* mout, unsigned long long st, unsigned long long en, float ma, float misMa, float gapO, float gapE, int thr, int tid) { + pairwiseData(string ofn, string al, string sq, string di, bool co, string op, SequenceDB DB, MothurOut* mout, unsigned long long st, unsigned long long en, float ma, float misMa, float gapO, float gapE, int thr, float cu, int tid) { outputFileName = ofn; m = mout; start = st; @@ -111,6 +112,7 @@ struct pairwiseData { alignDB = DB; count = 0; output = op; + cutoff = cu; threadID = tid; } }; @@ -127,7 +129,7 @@ static DWORD WINAPI MyPairwiseSquareThreadFunction(LPVOID lpParam){ outFile.setf(ios::fixed, ios::showpoint); outFile << setprecision(4); - pDataArray->count = pDataArray->end; + pDataArray->count = 0; int startTime = time(NULL); @@ -161,6 +163,7 @@ static DWORD WINAPI MyPairwiseSquareThreadFunction(LPVOID lpParam){ if(pDataArray->start == 0){ outFile << pDataArray->alignDB.getNumSeqs() << endl; } for(int i=pDataArray->start;iend;i++){ + pDataArray->count++; string name = pDataArray->alignDB.get(i).getName(); //pad with spaces to make compatible @@ -190,17 +193,19 @@ static DWORD WINAPI MyPairwiseSquareThreadFunction(LPVOID lpParam){ distCalculator->calcDist(seqI, seqJ); double dist = distCalculator->getDist(); + if (pDataArray->m->debug) { pDataArray->m->mothurOut("[DEBUG]: " + seqI.getName() + '\t' + alignment->getSeqAAln() + '\n' + seqJ.getName() + alignment->getSeqBAln() + '\n' + "distance = " + toString(dist) + "\n"); } + outFile << dist << '\t'; } outFile << endl; if(i % 100 == 0){ - pDataArray->m->mothurOut(toString(i) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine(); + pDataArray->m->mothurOutJustToScreen(toString(i) + "\t" + toString(time(NULL) - startTime)+"\n"); } } - pDataArray->m->mothurOut(toString(pDataArray->end-1) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine(); + pDataArray->m->mothurOutJustToScreen(toString(pDataArray->count) + "\t" + toString(time(NULL) - startTime)+"\n"); outFile.close(); delete alignment; @@ -223,8 +228,6 @@ static DWORD WINAPI MyPairwiseThreadFunction(LPVOID lpParam){ ofstream outFile((pDataArray->outputFileName).c_str(), ios::trunc); outFile.setf(ios::fixed, ios::showpoint); outFile << setprecision(4); - - pDataArray->count = pDataArray->end; int startTime = time(NULL); @@ -257,7 +260,9 @@ static DWORD WINAPI MyPairwiseThreadFunction(LPVOID lpParam){ if((pDataArray->output == "lt") && pDataArray->start == 0){ outFile << pDataArray->alignDB.getNumSeqs() << endl; } + pDataArray->count = 0; for(int i=pDataArray->start;iend;i++){ + pDataArray->count++; if(pDataArray->output == "lt") { string name = pDataArray->alignDB.get(i).getName(); @@ -290,6 +295,8 @@ static DWORD WINAPI MyPairwiseThreadFunction(LPVOID lpParam){ distCalculator->calcDist(seqI, seqJ); double dist = distCalculator->getDist(); + if (pDataArray->m->debug) { pDataArray->m->mothurOut("[DEBUG]: " + seqI.getName() + '\t' + alignment->getSeqAAln() + '\n' + seqJ.getName() + alignment->getSeqBAln() + '\n' + "distance = " + toString(dist) + "\n"); } + if(dist <= pDataArray->cutoff){ if (pDataArray->output == "column") { outFile << pDataArray->alignDB.get(i).getName() << ' ' << pDataArray->alignDB.get(j).getName() << ' ' << dist << endl; } } @@ -299,11 +306,11 @@ static DWORD WINAPI MyPairwiseThreadFunction(LPVOID lpParam){ if (pDataArray->output == "lt") { outFile << endl; } if(i % 100 == 0){ - pDataArray->m->mothurOut(toString(i) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine(); + pDataArray->m->mothurOutJustToScreen(toString(i) + "\t" + toString(time(NULL) - startTime)+"\n"); } } - pDataArray->m->mothurOut(toString(pDataArray->end-1) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine(); + pDataArray->m->mothurOutJustToScreen(toString(pDataArray->end-1) + "\t" + toString(time(NULL) - startTime)+"\n"); outFile.close(); delete alignment;