]> git.donarmstrong.com Git - mothur.git/blobdiff - mothur.h
reworked the classifiers summary file added groupfile option to classify.seqs, added...
[mothur.git] / mothur.h
index db11ed17238ac25f9fc2979431afbb0bdcbb8ec3..062c4814dfa4addeeb923f586c601717daca7c66 100644 (file)
--- a/mothur.h
+++ b/mothur.h
@@ -47,6 +47,9 @@
 #include <ctime>
 #include <limits>
 
+#ifdef USE_MPI
+       #include "mpi.h"
+#endif
 /***********************************************************************/
 
 #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
@@ -58,8 +61,6 @@
                #include <readline/history.h>
        #endif
 
-       //#include <readline/readline.h>
-       //#include <readline/history.h>
 #else
        #include <conio.h> //allows unbuffered screen capture from stdin
        #include <direct.h> //get cwd
@@ -193,7 +194,6 @@ string toString(const T&x, int i){
     return output.str();
 }
 /***********************************************************************/
-
 inline int openOutputFileAppend(string fileName, ofstream& fileHandle){
        
        fileHandle.open(fileName.c_str(), ios::app);
@@ -459,15 +459,16 @@ inline string getFullPathName(string fileName){
                        
                
                        int index = dirs.size()-1;
-               
+       
                        while((pos = path.rfind("./")) != -1) { //while you don't have a complete path
-                               if (path[(pos-1)] == '.') { //you want your parent directory ../
+                               if (pos == 0) { break;  //you are at the end
+                               }else if (path[(pos-1)] == '.') { //you want your parent directory ../
                                        path = path.substr(0, pos-1);
                                        index--;
                                        if (index == 0) {  break; }
                                }else if (path[(pos-1)] == '/') { //you want the current working dir ./
                                        path = path.substr(0, pos);
-                               }else if (pos == 1) { break; 
+                               }else if (pos == 1) { break;  //you are at the end
                                }else { cout << "cannot resolve path for " <<  fileName << endl; return fileName; }
                        }
                
@@ -501,14 +502,15 @@ inline string getFullPathName(string fileName){
                        int index = dirs.size()-1;
                                
                        while((pos = path.rfind(".\\")) != -1) { //while you don't have a complete path
-                               if (path[(pos-1)] == '.') { //you want your parent directory ../
+                               if (pos == 0) { break;  //you are at the end
+                               }else if (path[(pos-1)] == '.') { //you want your parent directory ../
                                        path = path.substr(0, pos-1);
                                        index--;
                                        if (index == 0) {  break; }
                                }else if (path[(pos-1)] == '\\') { //you want the current working dir ./
                                        path = path.substr(0, pos);
-                               }else if (pos == 1) { break; 
-                               }else {  cout << "cannot resolve path for " <<  fileName << endl;  return fileName; }
+                               }else if (pos == 1) { break;  //you are at the end
+                               }else { cout << "cannot resolve path for " <<  fileName << endl; return fileName; }
                        }
                
                        for (int i = index; i >= 0; i--) {
@@ -880,9 +882,12 @@ inline void appendFiles(string temp, string filename) {
 }
 
 /**************************************************************************************************/
-inline string sortFile(string distFile){
+inline string sortFile(string distFile, string outputDir){
        try {   
+       
+               //if (outputDir == "") {  outputDir += hasPath(distFile);  }
                string outfile = getRootName(distFile) + "sorted.dist";
+
                
                //if you can, use the unix sort since its been optimized for years
                #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
@@ -941,6 +946,78 @@ inline string sortFile(string distFile){
                exit(1);
        }       
 }
+/**************************************************************************************************/
+inline vector<long> setFilePosFasta(string filename, int& num) {
+
+                       vector<long> positions;
+                       ifstream inFASTA;
+                       openInputFile(filename, inFASTA);
+                               
+                       string input;
+                       while(!inFASTA.eof()){
+                               input = getline(inFASTA); gobble(inFASTA);
+                               if (input.length() != 0) {
+                                       if(input[0] == '>'){    long pos = inFASTA.tellg(); positions.push_back(pos - input.length() - 1);      }
+                               }
+                       }
+                       inFASTA.close();
+               
+                       num = positions.size();
+               
+                       FILE * pFile;
+                       long size;
+               
+                       //get num bytes in file
+                       pFile = fopen (filename.c_str(),"rb");
+                       if (pFile==NULL) perror ("Error opening file");
+                       else{
+                               fseek (pFile, 0, SEEK_END);
+                               size=ftell (pFile);
+                               fclose (pFile);
+                       }
+               
+                       positions.push_back(size);
+               
+                       return positions;
+}
+/**************************************************************************************************/
+inline vector<long> setFilePosEachLine(string filename, int& num) {
+
+                       vector<long> positions;
+                       ifstream in;
+                       openInputFile(filename, in);
+                               
+                       string input;
+                       while(!in.eof()){
+                               long lastpos = in.tellg();
+                               input = getline(in); gobble(in);
+                               if (input.length() != 0) {
+                                       long pos = in.tellg(); 
+                                       if (pos != -1) { positions.push_back(pos - input.length() - 1); }
+                                       else {  positions.push_back(lastpos);  }
+                               }
+                       }
+                       in.close();
+               
+                       num = positions.size();
+               
+                       FILE * pFile;
+                       long size;
+               
+                       //get num bytes in file
+                       pFile = fopen (filename.c_str(),"rb");
+                       if (pFile==NULL) perror ("Error opening file");
+                       else{
+                               fseek (pFile, 0, SEEK_END);
+                               size=ftell (pFile);
+                               fclose (pFile);
+                       }
+               
+                       positions.push_back(size);
+               
+                       return positions;
+}
+
 /**************************************************************************************************/
 #endif