#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>
#include <direct.h> //get cwd
#include <windows.h>
#include <psapi.h>
+ #include <direct.h>
+ #include <tchar.h>
#endif
#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;
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;
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 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);
+}
+//********************************************************************************************************************
+//sorts highest to lowest
+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 compareSpearmanReverse(spearmanRank left, spearmanRank right){
+ return (left.score < right.score);
+}
+/************************************************************/
//sorts lowest to highest
inline bool compareDistLinePairs(distlinePair left, distlinePair right){
return (left.end < right.end);
throw BadConversion(s);
}
-
+//**********************************************************************************************************************
+template <typename T> int sgn(T val){ return (val > T(0)) - (val < T(0)); }
//**********************************************************************************************************************
template<typename T>
}
//**********************************************************************************************************************
+template<class T>
+T fromString(const string& s){
+ istringstream stream (s);
+ T t;
+ stream >> t;
+ return t;
+}
+
+//**********************************************************************************************************************
+
#endif