X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mothur.h;h=98b34c31c58c88b614412be4e9ba6874ec1cbe36;hb=70491a12902e89b85cfa6b44a7b7fbe066ee2ac1;hp=190254a96e4c7d7830f8405035933efda4b003ea;hpb=24083a26340293cb3a0e44bcf79edbc9b31f41db;p=mothur.git diff --git a/mothur.h b/mothur.h index 190254a..98b34c3 100644 --- a/mothur.h +++ b/mothur.h @@ -42,6 +42,7 @@ #include #include #include +#include //misc #include @@ -53,7 +54,7 @@ #endif /***********************************************************************/ -#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) +#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix) #include #include #include @@ -72,6 +73,8 @@ #include #include #include + #include + #endif using namespace std; @@ -83,7 +86,9 @@ using namespace std; #define isnan(x) ((x) != (x)) #define isinf(x) (fabs(x) == std::numeric_limits::infinity()) + typedef unsigned long ull; +typedef unsigned short intDist; struct IntNode { int lvalue; @@ -103,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; @@ -114,9 +138,9 @@ 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() {} }; /************************************************************/ @@ -125,6 +149,15 @@ struct distlinePair { 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; @@ -132,16 +165,26 @@ struct spearmanRank { spearmanRank(string n, float s) : name(n), score(s) {} }; +//*********************************************************************** +inline bool compareIndexes(PDistCell left, PDistCell right){ + return (left.index > right.index); +} //******************************************************************************************************************** -//sorts highest to lowest inline bool compareSpearman(spearmanRank left, spearmanRank right){ - return (left.score > right.score); + return (left.score < right.score); } //******************************************************************************************************************** -//sorts lowest to highest -inline bool compareSpearmanReverse(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){ @@ -172,7 +215,8 @@ void convert(const string& s, T& x, bool failIfLeftoverChars = true){ throw BadConversion(s); } - +//********************************************************************************************************************** +template int sgn(T val){ return (val > T(0)) - (val < T(0)); } //********************************************************************************************************************** template