From b8f3e71c8a0310e25261464d27e6fcfe891483b0 Mon Sep 17 00:00:00 2001 From: pschloss Date: Wed, 26 May 2010 16:04:49 +0000 Subject: [PATCH] fixed bugs with trim.seqs and bdiffs --- Mothur.xcodeproj/project.pbxproj | 16 ++----------- makefile | 4 ++-- trimseqscommand.cpp | 39 +++++++++++++++++--------------- 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/Mothur.xcodeproj/project.pbxproj b/Mothur.xcodeproj/project.pbxproj index d462547..6e97c88 100644 --- a/Mothur.xcodeproj/project.pbxproj +++ b/Mothur.xcodeproj/project.pbxproj @@ -13,14 +13,8 @@ A72B3A63118B37FD004B9F8D /* phylodiversitycommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = phylodiversitycommand.cpp; sourceTree = ""; }; A72B3A7B118B4D1B004B9F8D /* phylodiversity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = phylodiversity.h; sourceTree = ""; }; A72B3A7C118B4D1B004B9F8D /* phylodiversity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = phylodiversity.cpp; sourceTree = ""; }; - A730977D11A417BE00117C95 /* splitmatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = splitmatrix.h; sourceTree = SOURCE_ROOT; }; - A730977E11A417BE00117C95 /* splitmatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = splitmatrix.cpp; sourceTree = SOURCE_ROOT; }; - A73097B911A43E1300117C95 /* clustersplitcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = clustersplitcommand.h; sourceTree = ""; }; - A73097BA11A43E1300117C95 /* clustersplitcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = clustersplitcommand.cpp; sourceTree = ""; }; A73953DA11987ED100B0B160 /* chopseqscommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chopseqscommand.h; sourceTree = ""; }; A73953DB11987ED100B0B160 /* chopseqscommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = chopseqscommand.cpp; sourceTree = ""; }; - A73F163411A1951D0087CA57 /* splitabundcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = splitabundcommand.h; sourceTree = ""; }; - A73F163511A1951D0087CA57 /* splitabundcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = splitabundcommand.cpp; sourceTree = ""; }; A747E79B1163442A00FB9042 /* chimeracheckcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chimeracheckcommand.h; sourceTree = ""; }; A747E79C1163442A00FB9042 /* chimeracheckcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = chimeracheckcommand.cpp; sourceTree = ""; }; A747E81C116365E000FB9042 /* chimeraslayercommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chimeraslayercommand.h; sourceTree = ""; }; @@ -674,10 +668,8 @@ A7DA201D113FECD400BF472F /* classifyseqscommand.cpp */, A7D215C811996C6E00F13F13 /* clearcutcommand.h */, A7D215C911996C6E00F13F13 /* clearcutcommand.cpp */, - A7DA2022113FECD400BF472F /* clustercommand.h */, A7DA2021113FECD400BF472F /* clustercommand.cpp */, - A73097B911A43E1300117C95 /* clustersplitcommand.h */, - A73097BA11A43E1300117C95 /* clustersplitcommand.cpp */, + A7DA2022113FECD400BF472F /* clustercommand.h */, A7DA2025113FECD400BF472F /* collectcommand.cpp */, A7DA2026113FECD400BF472F /* collectcommand.h */, A7DA2029113FECD400BF472F /* collectsharedcommand.cpp */, @@ -772,8 +764,6 @@ A76C4A1111876BAF0009460B /* setlogfilecommand.cpp */, A7DA2110113FECD400BF472F /* sharedcommand.h */, A7DA210F113FECD400BF472F /* sharedcommand.cpp */, - A73F163411A1951D0087CA57 /* splitabundcommand.h */, - A73F163511A1951D0087CA57 /* splitabundcommand.cpp */, A7DA2155113FECD400BF472F /* summarycommand.h */, A7DA2154113FECD400BF472F /* summarycommand.cpp */, A7DA2159113FECD400BF472F /* summarysharedcommand.h */, @@ -925,8 +915,6 @@ A7DA20ED113FECD400BF472F /* readphylip.h */, A7DA20EE113FECD400BF472F /* readtree.cpp */, A7DA20EF113FECD400BF472F /* readtree.h */, - A730977D11A417BE00117C95 /* splitmatrix.h */, - A730977E11A417BE00117C95 /* splitmatrix.cpp */, ); name = read; sourceTree = ""; @@ -991,7 +979,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; LINK_WITH_STANDARD_LIBRARIES = YES; PREBINDING = NO; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk"; }; name = Release; }; diff --git a/makefile b/makefile index f4af8e9..566c6b0 100644 --- a/makefile +++ b/makefile @@ -26,7 +26,7 @@ ifeq ($(strip $(USEREADLINE)),yes) -L../readline-6.0 endif -USEMPI ?= yes +USEMPI ?= no ifeq ($(strip $(USEMPI)),yes) CC = mpic++ @@ -459,7 +459,7 @@ mothur : \ ./logsd.o\ ./geom.o\ ./setlogfilecommand.o\ - -o ../Release/mothur + -o mothur clean : rm \ diff --git a/trimseqscommand.cpp b/trimseqscommand.cpp index ae9c436..5f7c9b2 100644 --- a/trimseqscommand.cpp +++ b/trimseqscommand.cpp @@ -364,7 +364,7 @@ int TrimSeqsCommand::driverCreateTrim(string filename, string qFileName, string return 0; } - bool success = 1; + int success = 1; Sequence currSeq(inFASTA); @@ -385,7 +385,6 @@ int TrimSeqsCommand::driverCreateTrim(string filename, string qFileName, string if(barcodes.size() != 0){ success = stripBarcode(currSeq, group); -// cout << "here: " << success << endl; if(success > bdiffs){ trashCode += 'b'; } else{ currentSeqsDiffs += success; } } @@ -419,7 +418,7 @@ int TrimSeqsCommand::driverCreateTrim(string filename, string qFileName, string if(flip){ currSeq.reverseComplement(); } // should go last if(trashCode.length() == 0){ - currSeq.setAligned(currSeq.getUnaligned()); //this is because of a modification we made to the sequence class to fix a bug. all seqs have an aligned version, which is the version that gets printed. + currSeq.setAligned(currSeq.getUnaligned()); currSeq.printSequence(outFASTA); if(barcodes.size() != 0){ outGroups << currSeq.getName() << '\t' << groupVector[group] << endl; @@ -432,6 +431,7 @@ int TrimSeqsCommand::driverCreateTrim(string filename, string qFileName, string else{ currSeq.setName(currSeq.getName() + '|' + trashCode); currSeq.setUnaligned(origSeq); + currSeq.setAligned(origSeq); currSeq.printSequence(scrapFASTA); } } @@ -610,15 +610,16 @@ void TrimSeqsCommand::getOligos(vector& outFASTAVec){ //vector::iterator it=barcodes.begin();it!=barcodes.end();it++){ string oligo = it->first; if(rawSequence.length() < oligo.length()){ //let's just assume that the barcodes are the same length - success = bdiffs + 1; - break; + success = bdiffs + 10; //if the sequence is shorter than the barcode then bail out + break; } if(compareDNASeq(oligo, rawSequence.substr(0,oligo.length()))){ @@ -662,7 +663,7 @@ int TrimSeqsCommand::stripBarcode(Sequence& seq, int& group){ // int length = oligo.length(); if(rawSequence.length() < maxLength){ //let's just assume that the barcodes are the same length - success = bdiffs + 1; + success = bdiffs + 10; break; } @@ -678,7 +679,6 @@ int TrimSeqsCommand::stripBarcode(Sequence& seq, int& group){ } oligo = oligo.substr(0,alnLength); temp = temp.substr(0,alnLength); -// int newStart=0; int numDiff = countDiffs(oligo, temp); @@ -698,17 +698,20 @@ int TrimSeqsCommand::stripBarcode(Sequence& seq, int& group){ } } - if(minDiff > bdiffs){ success = bdiffs + 1; } - else if(minCount > 1) { success = bdiffs + 1; } - else{ + + if(minDiff > bdiffs) { success = minDiff; } //no good matches + else if(minCount > 1) { success = bdiffs + 100; } //can't tell the difference between multiple barcodes + else{ //use the best match group = minGroup; - seq.setUnaligned("*" + rawSequence.substr(minPos)); + seq.setUnaligned(rawSequence.substr(minPos)); success = minDiff; } if (alignment != NULL) { delete alignment; } } +// cout << success << endl; + return success; } @@ -724,7 +727,7 @@ int TrimSeqsCommand::stripBarcode(Sequence& seq, int& group){ int TrimSeqsCommand::stripForward(Sequence& seq){ try { string rawSequence = seq.getUnaligned(); - bool success = pdiffs + 1; //guilty until proven innocent + int success = pdiffs + 1; //guilty until proven innocent //can you find the primer for(int i=0;i pdiffs){ success = pdiffs + 1; } - else if(minCount > 1) { success = pdiffs + 1; } + if(minDiff > pdiffs) { success = minDiff; } + else if(minCount > 1) { success = pdiffs + 10; } else{ - seq.setUnaligned("*" + rawSequence.substr(minPos)); + seq.setUnaligned(rawSequence.substr(minPos)); success = minDiff; } -- 2.39.2