]> git.donarmstrong.com Git - mothur.git/blobdiff - screenseqscommand.cpp
another attempt to fix sffinfo
[mothur.git] / screenseqscommand.cpp
index 878a06bfb3dd91262eccce5197c54e5324e46452..b2fdaff640557e7f9b840748db2afbde438bf5e5 100644 (file)
@@ -28,7 +28,7 @@ ScreenSeqsCommand::ScreenSeqsCommand(string option)  {
                        OptionParser parser(option);
                        map<string,string> parameters = parser.getParameters();
                        
-                       ValidParameters validParameter;
+                       ValidParameters validParameter("screen.seqs");
                        map<string,string>::iterator it;
                        
                        //check to make sure all parameters are valid for command
@@ -179,7 +179,7 @@ int ScreenSeqsCommand::execute(){
 #ifdef USE_MPI 
                        int pid, end, numSeqsPerProcessor; 
                        int tag = 2001;
-                       vector<long> MPIPos;
+                       vector<unsigned long int> MPIPos;
                        
                        MPI_Status status; 
                        MPI_Comm_rank(MPI_COMM_WORLD, &pid); //find out who we are
@@ -295,7 +295,7 @@ int ScreenSeqsCommand::execute(){
                        if(processors == 1){
                                ifstream inFASTA;
                                openInputFile(fastafile, inFASTA);
-                               numFastaSeqs=count(istreambuf_iterator<char>(inFASTA),istreambuf_iterator<char>(), '>');
+                               getNumSeqs(inFASTA, numFastaSeqs);
                                inFASTA.close();
                                
                                lines.push_back(new linePair(0, numFastaSeqs));
@@ -305,7 +305,7 @@ int ScreenSeqsCommand::execute(){
                                if (m->control_pressed) { remove(goodSeqFile.c_str()); remove(badSeqFile.c_str()); return 0; }
                                
                        }else{
-                               vector<int> positions;
+                               vector<unsigned long int> positions;
                                processIDS.resize(0);
                                
                                ifstream inFASTA;
@@ -315,21 +315,22 @@ int ScreenSeqsCommand::execute(){
                                while(!inFASTA.eof()){
                                        input = getline(inFASTA);
                                        if (input.length() != 0) {
-                                               if(input[0] == '>'){    long int pos = inFASTA.tellg(); positions.push_back(pos - input.length() - 1);  }
+                                               if(input[0] == '>'){    unsigned long int pos = inFASTA.tellg(); positions.push_back(pos - input.length() - 1); }
                                        }
                                }
                                inFASTA.close();
                                
                                numFastaSeqs = positions.size();
-                               
+                       
                                int numSeqsPerProcessor = numFastaSeqs / processors;
-                               
+                                       
                                for (int i = 0; i < processors; i++) {
-                                       long int startPos = positions[ i * numSeqsPerProcessor ];
+                                       unsigned long int startPos = positions[ i * numSeqsPerProcessor ];
                                        if(i == processors - 1){
                                                numSeqsPerProcessor = numFastaSeqs - i * numSeqsPerProcessor;
                                        }
                                        lines.push_back(new linePair(startPos, numSeqsPerProcessor));
+               
                                }
                                
                                createProcesses(goodSeqFile, badSeqFile, badAccnosFile, fastafile, badSeqNames); 
@@ -369,7 +370,7 @@ int ScreenSeqsCommand::execute(){
        #else
                        ifstream inFASTA;
                        openInputFile(fastafile, inFASTA);
-                       numFastaSeqs=count(istreambuf_iterator<char>(inFASTA),istreambuf_iterator<char>(), '>');
+                       getNumSeqs(inFASTA, numFastaSeqs);
                        inFASTA.close();
                        
                        lines.push_back(new linePair(0, numFastaSeqs));
@@ -708,7 +709,7 @@ int ScreenSeqsCommand::driver(linePair* line, string goodFName, string badFName,
                inFASTA.seekg(line->start);
        
                for(int i=0;i<line->numSeqs;i++){
-                       
+               
                        if (m->control_pressed) {  return 0; }
                        
                        Sequence currSeq(inFASTA);
@@ -748,7 +749,7 @@ int ScreenSeqsCommand::driver(linePair* line, string goodFName, string badFName,
 }
 //**********************************************************************************************************************
 #ifdef USE_MPI
-int ScreenSeqsCommand::driverMPI(int start, int num, MPI_File& inMPI, MPI_File& goodFile, MPI_File& badFile, MPI_File& badAccnosFile, vector<long>& MPIPos, set<string>& badSeqNames){
+int ScreenSeqsCommand::driverMPI(int start, int num, MPI_File& inMPI, MPI_File& goodFile, MPI_File& badFile, MPI_File& badAccnosFile, vector<unsigned long int>& MPIPos, set<string>& badSeqNames){
        try {
                string outputString = "";
                MPI_Status statusGood;