]> git.donarmstrong.com Git - mothur.git/blobdiff - seqsummarycommand.cpp
some bug fixes
[mothur.git] / seqsummarycommand.cpp
index f225d50a15670d23f4b3d484901cfb7e30cd2c29..5009ff5c2eeb87e1cbe49fdd0f240355bfcaaf74 100644 (file)
@@ -27,7 +27,7 @@ SeqSummaryCommand::SeqSummaryCommand(string option)  {
                        OptionParser parser(option);
                        map<string,string> parameters = parser.getParameters();
                        
-                       ValidParameters validParameter;
+                       ValidParameters validParameter("summary.seqs");
                        map<string,string>::iterator it;
                        
                        //check to make sure all parameters are valid for command
@@ -113,7 +113,7 @@ int SeqSummaryCommand::execute(){
                                int tag = 2001;
                                int startTag = 1; int endTag = 2; int lengthTag = 3; int baseTag = 4; int lhomoTag = 5;
                                int outMode=MPI_MODE_CREATE|MPI_MODE_WRONLY; 
-                               vector<long> MPIPos;
+                               vector<unsigned long int> MPIPos;
                                
                                MPI_Status status; 
                                MPI_Status statusOut;
@@ -228,9 +228,9 @@ int SeqSummaryCommand::execute(){
                                if(processors == 1){
                                        ifstream inFASTA;
                                        openInputFile(fastafile, inFASTA);
-                                       numSeqs=count(istreambuf_iterator<char>(inFASTA),istreambuf_iterator<char>(), '>');
-                                       inFASTA.close();
-                                       
+                                       getNumSeqs(inFASTA, numSeqs);
+                                       inFASTA.close();        
+                                               
                                        lines.push_back(new linePair(0, numSeqs));
                                        
                                        driverCreateSummary(startPosition, endPosition, seqLength, ambigBases, longHomoPolymer, fastafile, summaryFile, lines[0]);
@@ -250,7 +250,7 @@ int SeqSummaryCommand::execute(){
                #else
                                ifstream inFASTA;
                                openInputFile(fastafile, inFASTA);
-                               numSeqs=count(istreambuf_iterator<char>(inFASTA),istreambuf_iterator<char>(), '>');
+                               getNumSeqs(inFASTA, numSeqs);
                                inFASTA.close();
                                
                                lines.push_back(new linePair(0, numSeqs));
@@ -334,6 +334,7 @@ int SeqSummaryCommand::driverCreateSummary(vector<int>& startPosition, vector<in
                        if (m->control_pressed) { in.close(); outSummary.close(); return 1; }
                                        
                        Sequence current(in);
+       
                        if (current.getName() != "") {
                                startPosition.push_back(current.getStartPos());
                                endPosition.push_back(current.getEndPos());
@@ -359,7 +360,7 @@ int SeqSummaryCommand::driverCreateSummary(vector<int>& startPosition, vector<in
 }
 #ifdef USE_MPI
 /**************************************************************************************/
-int SeqSummaryCommand::MPICreateSummary(int start, int num, vector<int>& startPosition, vector<int>& endPosition, vector<int>& seqLength, vector<int>& ambigBases, vector<int>& longHomoPolymer, MPI_File& inMPI, MPI_File& outMPI, vector<long>& MPIPos) {    
+int SeqSummaryCommand::MPICreateSummary(int start, int num, vector<int>& startPosition, vector<int>& endPosition, vector<int>& seqLength, vector<int>& ambigBases, vector<int>& longHomoPolymer, MPI_File& inMPI, MPI_File& outMPI, vector<unsigned long int>& MPIPos) {       
        try {
                
                int pid;
@@ -452,7 +453,7 @@ int SeqSummaryCommand::createProcessesCreateSummary(vector<int>& startPosition,
 int SeqSummaryCommand::setLines(string filename) {
        try {
                
-               vector<long int> positions;
+               vector<unsigned long int> positions;
                
                ifstream inFASTA;
                openInputFile(filename, inFASTA);
@@ -462,7 +463,7 @@ int SeqSummaryCommand::setLines(string filename) {
                        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();
@@ -470,7 +471,7 @@ int SeqSummaryCommand::setLines(string filename) {
                int numFastaSeqs = positions.size();
        
                FILE * pFile;
-               long size;
+               unsigned long int size;
                
                //get num bytes in file
                pFile = fopen (filename.c_str(),"rb");
@@ -485,11 +486,11 @@ int SeqSummaryCommand::setLines(string filename) {
                
                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;
                        }else{  
-                               long int myEnd = positions[ (i+1) * numSeqsPerProcessor ];
+                               unsigned long int myEnd = positions[ (i+1) * numSeqsPerProcessor ];
                        }
                        lines.push_back(new linePair(startPos, numSeqsPerProcessor));
                }