]> git.donarmstrong.com Git - mothur.git/blobdiff - chimeraperseuscommand.cpp
paralellized screen.seqs for windows.
[mothur.git] / chimeraperseuscommand.cpp
index 61970d53ac38a3f9877e5a010e48bc0b336dc669..76f0103c38ec64a5ebc21f3175df441a15ccae0e 100644 (file)
@@ -345,16 +345,16 @@ ChimeraPerseusCommand::ChimeraPerseusCommand(string option)  {
                        
                        string temp = validParameter.validFile(parameters, "processors", false);        if (temp == "not found"){       temp = m->getProcessors();      }
                        m->setProcessors(temp);
-                       convert(temp, processors);
+                       m->mothurConvert(temp, processors);
                        
                        temp = validParameter.validFile(parameters, "cutoff", false);   if (temp == "not found"){       temp = "0.50";  }
-                       convert(temp, cutoff);
+                       m->mothurConvert(temp, cutoff);
                        
                        temp = validParameter.validFile(parameters, "alpha", false);    if (temp == "not found"){       temp = "-5.54"; }
-                       convert(temp, alpha);
+                       m->mothurConvert(temp, alpha);
                        
                        temp = validParameter.validFile(parameters, "cutoff", false);   if (temp == "not found"){       temp = "0.33";  }
-                       convert(temp, beta);
+                       m->mothurConvert(temp, beta);
                }
        }
        catch(exception& e) {
@@ -533,6 +533,7 @@ vector<seqData> ChimeraPerseusCommand::loadSequences(SequenceParser& parser, str
                
                vector<seqData> sequences;
                bool error = false;
+        alignLength = 0;
                
                for (int i = 0; i < thisGroupsSeqs.size(); i++) {
                
@@ -543,6 +544,7 @@ vector<seqData> ChimeraPerseusCommand::loadSequences(SequenceParser& parser, str
                        else {
                                int num = m->getNumNames(it->second);
                                sequences.push_back(seqData(thisGroupsSeqs[i].getName(), thisGroupsSeqs[i].getUnaligned(), num));
+                if (thisGroupsSeqs[i].getUnaligned().length() > alignLength) { alignLength = thisGroupsSeqs[i].getUnaligned().length(); }
                        }
                }
                
@@ -570,7 +572,8 @@ vector<seqData> ChimeraPerseusCommand::readFiles(string inputFile, string name){
                bool error = false;
                ifstream in;
                m->openInputFile(inputFile, in);
-               
+               alignLength = 0;
+        
                while (!in.eof()) {
                        
                        if (m->control_pressed) { in.close(); return sequences; }
@@ -581,6 +584,7 @@ vector<seqData> ChimeraPerseusCommand::readFiles(string inputFile, string name){
                        if (it == nameMap.end()) { error = true; m->mothurOut("[ERROR]: " + temp.getName() + " is in your fasta file and not in your namefile, please correct."); m->mothurOutEndLine(); }
                        else {
                                sequences.push_back(seqData(temp.getName(), temp.getUnaligned(), it->second));
+                if (temp.getUnaligned().length() > alignLength) { alignLength = temp.getUnaligned().length(); }
                        }
                }
                in.close();
@@ -625,7 +629,7 @@ int ChimeraPerseusCommand::driver(string chimeraFileName, vector<seqData>& seque
                }
                
                int numSeqs = sequences.size();
-               int alignLength = sequences[0].sequence.size();
+               //int alignLength = sequences[0].sequence.size();
                
                ofstream chimeraFile;
                ofstream accnosFile;
@@ -641,7 +645,7 @@ int ChimeraPerseusCommand::driver(string chimeraFileName, vector<seqData>& seque
                
                for(int i=0;i<numSeqs;i++){     
                        if (m->control_pressed) { chimeraFile.close(); m->mothurRemove(chimeraFileName); accnosFile.close(); m->mothurRemove(accnosFileName); return 0; }
-                       
+    
                        vector<bool> restricted = chimeras;
                        
                        vector<vector<int> > leftDiffs(numSeqs);
@@ -662,7 +666,9 @@ int ChimeraPerseusCommand::driver(string chimeraFileName, vector<seqData>& seque
                        
                        string dummyA, dummyB;
                        
-                       if(comparisons >= 2){   
+            if (sequences[i].sequence.size() < 3) { 
+                chimeraFile << i << '\t' << sequences[i].seqName << "\t0\t0\tNull\t0\t0\t0\tNull\tNull\t0.0\t0.0\t0.0\t0\t0\t0\t0.0\t0.0\tgood" << endl;
+            }else if(comparisons >= 2){        
                                minMismatchToChimera = myPerseus.getChimera(sequences, leftDiffs, rightDiffs, leftParentBi, rightParentBi, breakPointBi, singleLeft, bestLeft, singleRight, bestRight, restricted);
                                if (m->control_pressed) { chimeraFile.close(); m->mothurRemove(chimeraFileName); accnosFile.close(); m->mothurRemove(accnosFileName); return 0; }