diff --git a/src/jaccard/jaccard.cpp b/src/jaccard/jaccard.cpp index 0c22fa8d767d77d5032973b24e7eadb4da461531..147ee4e0792cd96ffb60eabf7fd189b25acd62ad 100644 --- a/src/jaccard/jaccard.cpp +++ b/src/jaccard/jaccard.cpp @@ -34,12 +34,14 @@ size_t Jaccard::GetTotalIntersection(const BED &a, const vector<BED> &hits) Constructor */ Jaccard::Jaccard(string bedAFile, string bedBFile, - float overlapFraction, bool reciprocal) + float overlapFraction, bool reciprocal, + bool valueOnly) { _bedAFile = bedAFile; _bedBFile = bedBFile; _overlapFraction = overlapFraction; _reciprocal = reciprocal; + _valueOnly = valueOnly; CalculateJaccard(); @@ -83,19 +85,26 @@ void Jaccard::CalculateJaccard() { unsigned long U = _bedA->getTotalFlattenedLength() + \ _bedB->getTotalFlattenedLength(); - // header - cout << "intersection\t" - << "union-intersection\t" - << "jaccard\t" - << "n_intersections" - << endl; + float jaccard_stat = (float) I / ((float) U - (float) I); - // result - cout << I << "\t" - << U - I << "\t" - << (float) I / ((float) U - (float) I) << "\t" - << n_intersections - << endl; + if (!_valueOnly) { + // header + cout << "intersection\t" + << "union-intersection\t" + << "jaccard\t" + << "n_intersections" + << endl; + + // result + cout << I << "\t" + << U - I << "\t" + << jaccard_stat << "\t" + << n_intersections + << endl; + } + else { + cout << jaccard_stat << endl; + } } diff --git a/src/jaccard/jaccard.h b/src/jaccard/jaccard.h index efdd86282dff0e5759676bd11be872c607401d71..2badb00c7dd1109fc9d1148559d167eb506cd8a5 100644 --- a/src/jaccard/jaccard.h +++ b/src/jaccard/jaccard.h @@ -35,7 +35,8 @@ public: // constructor Jaccard(string bedAFile, string bedBFile, - float overlapFraction, bool reciprocal); + float overlapFraction, bool reciprocal, + bool valueOnly); // destructor ~Jaccard(void); @@ -49,6 +50,7 @@ private: string _bedBFile; bool _reciprocal; + bool _valueOnly; float _overlapFraction; // instance of a bed file class. diff --git a/src/jaccard/jaccardMain.cpp b/src/jaccard/jaccardMain.cpp index cc175d1740a2fa7c0cf399898a9e9ee017a66fb1..683306d5d01ba5afe172b6be5826790ec8376a7f 100644 --- a/src/jaccard/jaccardMain.cpp +++ b/src/jaccard/jaccardMain.cpp @@ -40,6 +40,7 @@ int jaccard_main(int argc, char* argv[]) { bool haveBedB = false; bool haveFraction = false; bool reciprocalFraction = false; + bool valueOnly = false; // check to see if we should print out some help if(argc <= 1) showHelp = true; @@ -84,6 +85,9 @@ int jaccard_main(int argc, char* argv[]) { else if(PARAMETER_CHECK("-r", 2, parameterLength)) { reciprocalFraction = true; } + else if(PARAMETER_CHECK("-valueOnly", 10, parameterLength)) { + valueOnly = true; + } else { cerr << endl << "*****ERROR: Unrecognized parameter: " @@ -108,7 +112,8 @@ int jaccard_main(int argc, char* argv[]) { if (!showHelp) { Jaccard *j = new Jaccard(bedAFile, bedBFile, - overlapFraction, reciprocalFraction); + overlapFraction, reciprocalFraction, + valueOnly); delete j; return 0; }