]> git.donarmstrong.com Git - mothur.git/blobdiff - mothur.h
changes while testing
[mothur.git] / mothur.h
index bfe0692cf035a8c96a933da2ce70ced46ca98429..98b34c31c58c88b614412be4e9ba6874ec1cbe36 100644 (file)
--- a/mothur.h
+++ b/mothur.h
 #include <map>
 #include <string>
 #include <list>
+#include <string.h>
 
 //math
 #include <cmath>
 #include <math.h>
 #include <algorithm>
+#include <numeric>
 
 //misc
 #include <cerrno>
 #endif
 /***********************************************************************/
 
-#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
        #include <sys/wait.h>
        #include <sys/time.h>
        #include <sys/resource.h>
+       #include <sys/types.h>
+       #include <sys/stat.h>
        #include <unistd.h>
        
        #ifdef USE_READLINE
@@ -68,6 +72,8 @@
        #include <direct.h> //get cwd
        #include <windows.h>
        #include <psapi.h>
+       #include <direct.h>
+       #include <tchar.h>
 
 #endif
 
@@ -80,7 +86,9 @@ using namespace std;
 #define isnan(x) ((x) != (x))
 #define isinf(x) (fabs(x) == std::numeric_limits<double>::infinity())
 
+
 typedef unsigned long ull;
+typedef unsigned short intDist;
 
 struct IntNode {
        int lvalue;
@@ -100,6 +108,25 @@ struct ThreadNode {
        IntNode* right;
 };
 
+struct diffPair {
+       float   prob;
+       float   reverseProb;
+       
+       diffPair() {
+               prob = 0; reverseProb = 0;
+       }
+       diffPair(float p, float rp) {
+               prob = p;
+               reverseProb = rp;
+       }
+};
+/***********************************************************************/
+struct PDistCell{
+       ull index;
+       float dist;
+       PDistCell() :  index(0), dist(0) {};
+       PDistCell(ull c, float d) :  index(c), dist(d) {}
+};
 /************************************************************/
 struct clusterNode {
        int numSeq;
@@ -111,11 +138,58 @@ struct clusterNode {
 struct seqDist {
        int seq1;
        int seq2;
-       float dist;
+       double dist;
        seqDist() {}
-       seqDist(int s1, int s2, float d) : seq1(s1), seq2(s2), dist(d) {}
+       seqDist(int s1, int s2, double d) : seq1(s1), seq2(s2), dist(d) {}
        ~seqDist() {}
 };
+/************************************************************/
+struct distlinePair {
+       int start;
+       int end;
+       
+};
+/************************************************************/
+struct seqPriorityNode {
+       int numIdentical;
+       string seq;
+       string name;
+       seqPriorityNode() {}
+       seqPriorityNode(int n, string s, string nm) : numIdentical(n), seq(s), name(nm) {}
+       ~seqPriorityNode() {}
+};
+/***************************************************************/
+struct spearmanRank {
+       string name;
+       float score;
+       
+       spearmanRank(string n, float s) : name(n), score(s) {}
+};
+//***********************************************************************
+inline bool compareIndexes(PDistCell left, PDistCell right){
+       return (left.index > right.index);      
+}
+//********************************************************************************************************************
+inline bool compareSpearman(spearmanRank left, spearmanRank right){
+       return (left.score < right.score);      
+} 
+//********************************************************************************************************************
+//sorts highest to lowest
+inline bool compareSeqPriorityNodes(seqPriorityNode left, seqPriorityNode right){
+       if (left.numIdentical > right.numIdentical) {
+        return true;
+    }else if (left.numIdentical == right.numIdentical) {
+        if (left.seq > right.seq) { return true; }
+        else { return false; }
+    }
+    return false;      
+} 
+/************************************************************/
+//sorts lowest to highest
+inline bool compareDistLinePairs(distlinePair left, distlinePair right){
+       return (left.end < right.end);  
+} 
 //********************************************************************************************************************
 //sorts lowest to highest
 inline bool compareSequenceDistance(seqDist left, seqDist right){
@@ -141,7 +215,8 @@ void convert(const string& s, T& x, bool failIfLeftoverChars = true){
                        throw BadConversion(s);
        
 }
-
+//**********************************************************************************************************************
+template <typename T> int sgn(T val){ return (val > T(0)) - (val < T(0)); }
 //**********************************************************************************************************************
 
 template<typename T>
@@ -208,5 +283,15 @@ string toString(const T&x, int i){
 }
 //**********************************************************************************************************************
 
+template<class T>
+T fromString(const string& s){
+       istringstream stream (s);
+       T t;
+       stream >> t;
+       return t;
+}
+
+//**********************************************************************************************************************
+
 #endif