X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=mothur.h;h=32f4778a7c1ee19db25eeb4e1eafaf74fabcd617;hp=3b7c4599329aede91be3f6325d27df1accf77c03;hb=d1c97b8c04bb75faca1e76ffad60b37a4d789d3d;hpb=d0051dc9939d3477bd92b42c86bcd3eda743b955 diff --git a/mothur.h b/mothur.h index 3b7c459..32f4778 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 @@ -87,6 +88,7 @@ using namespace std; typedef unsigned long ull; +typedef unsigned short intDist; struct IntNode { int lvalue; @@ -106,6 +108,40 @@ 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 consTax{ + string name; + string taxonomy; + int abundance; + consTax() : name(""), taxonomy("unknown"), abundance(0) {}; + consTax(string n, string t, int a) : name(n), taxonomy(t), abundance(a) {} +}; +/***********************************************************************/ +struct consTax2{ + string taxonomy; + int abundance; + consTax2() : taxonomy("unknown"), abundance(0) {}; + consTax2(string t, int a) : taxonomy(t), abundance(a) {} +}; /************************************************************/ struct clusterNode { int numSeq; @@ -117,9 +153,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() {} }; /************************************************************/ @@ -137,6 +173,15 @@ struct seqPriorityNode { seqPriorityNode(int n, string s, string nm) : numIdentical(n), seq(s), name(nm) {} ~seqPriorityNode() {} }; +/************************************************************/ +struct compGroup { + string group1; + string group2; + compGroup() {} + compGroup(string s, string nm) : group1(s), group2(nm) {} + string getCombo() { return group1+"-"+group2; } + ~compGroup() {} +}; /***************************************************************/ struct spearmanRank { string name; @@ -144,21 +189,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 highest to lowest inline bool compareSeqPriorityNodes(seqPriorityNode left, seqPriorityNode right){ - return (left.numIdentical > right.numIdentical); -} -//******************************************************************************************************************** -//sorts lowest to highest -inline bool compareSpearmanReverse(spearmanRank left, spearmanRank right){ - return (left.score < right.score); + 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){ @@ -168,7 +218,15 @@ inline bool compareDistLinePairs(distlinePair left, distlinePair right){ //sorts lowest to highest inline bool compareSequenceDistance(seqDist left, seqDist right){ return (left.dist < right.dist); -} +} +//******************************************************************************************************************** +//returns sign of double +inline double sign(double temp){ + //find sign + if (temp > 0) { return 1.0; } + else if (temp < 0) { return -1.0; } + return 0; +} /***********************************************************************/ // snagged from http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.2