From 952088e84d0193712340169b8d5118e0467aa1e1 Mon Sep 17 00:00:00 2001 From: arq5x <arq5x@virginia.edu> Date: Mon, 3 Feb 2014 16:18:14 -0500 Subject: [PATCH] add -valueOnly option to jaccard --- src/jaccard/jaccard.cpp | 35 ++++++++++++++++++++++------------- src/jaccard/jaccard.h | 4 +++- src/jaccard/jaccardMain.cpp | 7 ++++++- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/jaccard/jaccard.cpp b/src/jaccard/jaccard.cpp index 0c22fa8d..147ee4e0 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 efdd8628..2badb00c 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 cc175d17..683306d5 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; } -- GitLab